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

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

169:                                              ; preds = %27
  %170 = load ptr, ptr %51, align 8, !tbaa !5
  %171 = getelementptr inbounds double, ptr %170, i64 1
  %172 = load double, ptr %171, align 8, !tbaa !11
  %173 = fcmp olt double %172, 0.000000e+00
  br i1 %173, label %174, label %177

174:                                              ; preds = %169
  %175 = load ptr, ptr %51, align 8, !tbaa !5
  %176 = getelementptr inbounds double, ptr %175, i64 1
  store double 1.000000e+00, ptr %176, align 8, !tbaa !11
  br label %182

177:                                              ; preds = %169
  %178 = load ptr, ptr %51, align 8, !tbaa !5
  %179 = getelementptr inbounds double, ptr %178, i64 1
  %180 = load double, ptr %179, align 8, !tbaa !11
  %181 = fptosi double %180 to i32
  store i32 %181, ptr %74, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %177, %174
  br label %183

183:                                              ; preds = %182, %27
  %184 = load ptr, ptr %30, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = sitofp i32 %185 to double
  %187 = call double @dlamch_(ptr noundef @.str)
  %188 = fmul double %186, %187
  store double %188, ptr %70, align 8, !tbaa !11
  store i32 10, ptr %84, align 4, !tbaa !9
  store double 5.000000e-01, ptr %86, align 8, !tbaa !11
  store double 2.500000e-01, ptr %71, align 8, !tbaa !11
  store i32 0, ptr %75, align 4, !tbaa !9
  %189 = load ptr, ptr %50, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = icmp sge i32 %190, 2
  br i1 %191, label %192, label %208

192:                                              ; preds = %183
  %193 = load ptr, ptr %51, align 8, !tbaa !5
  %194 = getelementptr inbounds double, ptr %193, i64 2
  %195 = load double, ptr %194, align 8, !tbaa !11
  %196 = fcmp olt double %195, 0.000000e+00
  br i1 %196, label %197, label %202

197:                                              ; preds = %192
  %198 = load i32, ptr %84, align 4, !tbaa !9
  %199 = sitofp i32 %198 to double
  %200 = load ptr, ptr %51, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %200, i64 2
  store double %199, ptr %201, align 8, !tbaa !11
  br label %207

202:                                              ; preds = %192
  %203 = load ptr, ptr %51, align 8, !tbaa !5
  %204 = getelementptr inbounds double, ptr %203, i64 2
  %205 = load double, ptr %204, align 8, !tbaa !11
  %206 = fptosi double %205 to i32
  store i32 %206, ptr %84, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %202, %197
  br label %208

208:                                              ; preds = %207, %183
  %209 = load ptr, ptr %50, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = icmp sge i32 %210, 3
  br i1 %211, label %212, label %234

212:                                              ; preds = %208
  %213 = load ptr, ptr %51, align 8, !tbaa !5
  %214 = getelementptr inbounds double, ptr %213, i64 3
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = fcmp olt double %215, 0.000000e+00
  br i1 %216, label %217, label %227

217:                                              ; preds = %212
  %218 = load i32, ptr %75, align 4, !tbaa !9
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %223

220:                                              ; preds = %217
  %221 = load ptr, ptr %51, align 8, !tbaa !5
  %222 = getelementptr inbounds double, ptr %221, i64 3
  store double 0.000000e+00, ptr %222, align 8, !tbaa !11
  br label %226

223:                                              ; preds = %217
  %224 = load ptr, ptr %51, align 8, !tbaa !5
  %225 = getelementptr inbounds double, ptr %224, i64 3
  store double 1.000000e+00, ptr %225, align 8, !tbaa !11
  br label %226

226:                                              ; preds = %223, %220
  br label %233

227:                                              ; preds = %212
  %228 = load ptr, ptr %51, align 8, !tbaa !5
  %229 = getelementptr inbounds double, ptr %228, i64 3
  %230 = load double, ptr %229, align 8, !tbaa !11
  %231 = fcmp oeq double %230, 0.000000e+00
  %232 = zext i1 %231 to i32
  store i32 %232, ptr %75, align 4, !tbaa !9
  br label %233

233:                                              ; preds = %227, %226
  br label %234

234:                                              ; preds = %233, %208
  %235 = load i32, ptr %74, align 4, !tbaa !9
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %241, label %237

237:                                              ; preds = %234
  %238 = load ptr, ptr %47, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = icmp eq i32 %239, 0
  br i1 %240, label %241, label %242

241:                                              ; preds = %237, %234
  store i32 0, ptr %85, align 4, !tbaa !9
  br label %248

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

245:                                              ; preds = %242
  store i32 1, ptr %85, align 4, !tbaa !9
  br label %247

246:                                              ; preds = %242
  store i32 2, ptr %85, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %246, %245
  br label %248

248:                                              ; preds = %247, %241
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  %250 = call i32 @lsame_(ptr noundef %249, ptr noundef @.str.1)
  store i32 %250, ptr %81, align 4, !tbaa !9
  %251 = load ptr, ptr %29, align 8, !tbaa !5
  %252 = call i32 @lsame_(ptr noundef %251, ptr noundef @.str.2)
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %258, label %254

254:                                              ; preds = %248
  %255 = load ptr, ptr %29, align 8, !tbaa !5
  %256 = call i32 @lsame_(ptr noundef %255, ptr noundef @.str.3)
  %257 = icmp ne i32 %256, 0
  br label %258

258:                                              ; preds = %254, %248
  %259 = phi i1 [ true, %248 ], [ %257, %254 ]
  %260 = zext i1 %259 to i32
  store i32 %260, ptr %82, align 4, !tbaa !9
  %261 = load ptr, ptr %29, align 8, !tbaa !5
  %262 = call i32 @lsame_(ptr noundef %261, ptr noundef @.str.4)
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %268, label %264

264:                                              ; preds = %258
  %265 = load ptr, ptr %29, align 8, !tbaa !5
  %266 = call i32 @lsame_(ptr noundef %265, ptr noundef @.str.3)
  %267 = icmp ne i32 %266, 0
  br label %268

268:                                              ; preds = %264, %258
  %269 = phi i1 [ true, %258 ], [ %267, %264 ]
  %270 = zext i1 %269 to i32
  store i32 %270, ptr %80, align 4, !tbaa !9
  %271 = load i32, ptr %83, align 4, !tbaa !9
  %272 = icmp eq i32 %271, -1
  br i1 %272, label %273, label %275

273:                                              ; preds = %268
  %274 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -1, ptr %274, align 4, !tbaa !9
  br label %375

275:                                              ; preds = %268
  %276 = load i32, ptr %82, align 4, !tbaa !9
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %287, label %278

278:                                              ; preds = %275
  %279 = load i32, ptr %80, align 4, !tbaa !9
  %280 = icmp ne i32 %279, 0
  br i1 %280, label %287, label %281

281:                                              ; preds = %278
  %282 = load ptr, ptr %29, align 8, !tbaa !5
  %283 = call i32 @lsame_(ptr noundef %282, ptr noundef @.str.1)
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %287, label %285

285:                                              ; preds = %281
  %286 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -2, ptr %286, align 4, !tbaa !9
  br label %374

287:                                              ; preds = %281, %278, %275
  %288 = load ptr, ptr %30, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = icmp slt i32 %289, 0
  br i1 %290, label %291, label %293

291:                                              ; preds = %287
  %292 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -3, ptr %292, align 4, !tbaa !9
  br label %373

293:                                              ; preds = %287
  %294 = load ptr, ptr %31, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = icmp slt i32 %295, 0
  br i1 %296, label %297, label %299

297:                                              ; preds = %293
  %298 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -4, ptr %298, align 4, !tbaa !9
  br label %372

299:                                              ; preds = %293
  %300 = load ptr, ptr %32, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = icmp slt i32 %301, 0
  br i1 %302, label %303, label %305

303:                                              ; preds = %299
  %304 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -5, ptr %304, align 4, !tbaa !9
  br label %371

305:                                              ; preds = %299
  %306 = load ptr, ptr %33, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = icmp slt i32 %307, 0
  br i1 %308, label %309, label %311

309:                                              ; preds = %305
  %310 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -6, ptr %310, align 4, !tbaa !9
  br label %370

311:                                              ; preds = %305
  %312 = load ptr, ptr %35, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = load ptr, ptr %31, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = load ptr, ptr %32, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = add nsw i32 %315, %317
  %319 = add nsw i32 %318, 1
  %320 = icmp slt i32 %313, %319
  br i1 %320, label %321, label %323

321:                                              ; preds = %311
  %322 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -8, ptr %322, align 4, !tbaa !9
  br label %369

323:                                              ; preds = %311
  %324 = load ptr, ptr %37, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = load ptr, ptr %31, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = shl i32 %327, 1
  %329 = load ptr, ptr %32, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = add nsw i32 %328, %330
  %332 = add nsw i32 %331, 1
  %333 = icmp slt i32 %325, %332
  br i1 %333, label %334, label %336

334:                                              ; preds = %323
  %335 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -10, ptr %335, align 4, !tbaa !9
  br label %368

336:                                              ; preds = %323
  %337 = load ptr, ptr %42, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = load ptr, ptr %30, align 8, !tbaa !5
  %340 = load i32, ptr %339, align 4, !tbaa !9
  %341 = icmp sge i32 1, %340
  br i1 %341, label %342, label %343

342:                                              ; preds = %336
  br label %346

343:                                              ; preds = %336
  %344 = load ptr, ptr %30, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  br label %346

346:                                              ; preds = %343, %342
  %347 = phi i32 [ 1, %342 ], [ %345, %343 ]
  %348 = icmp slt i32 %338, %347
  br i1 %348, label %349, label %351

349:                                              ; preds = %346
  %350 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -13, ptr %350, align 4, !tbaa !9
  br label %367

351:                                              ; preds = %346
  %352 = load ptr, ptr %44, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = load ptr, ptr %30, align 8, !tbaa !5
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = icmp sge i32 1, %355
  br i1 %356, label %357, label %358

357:                                              ; preds = %351
  br label %361

358:                                              ; preds = %351
  %359 = load ptr, ptr %30, align 8, !tbaa !5
  %360 = load i32, ptr %359, align 4, !tbaa !9
  br label %361

361:                                              ; preds = %358, %357
  %362 = phi i32 [ 1, %357 ], [ %360, %358 ]
  %363 = icmp slt i32 %353, %362
  br i1 %363, label %364, label %366

364:                                              ; preds = %361
  %365 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 -15, ptr %365, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %364, %361
  br label %367

367:                                              ; preds = %366, %349
  br label %368

368:                                              ; preds = %367, %334
  br label %369

369:                                              ; preds = %368, %321
  br label %370

370:                                              ; preds = %369, %309
  br label %371

371:                                              ; preds = %370, %303
  br label %372

372:                                              ; preds = %371, %297
  br label %373

373:                                              ; preds = %372, %291
  br label %374

374:                                              ; preds = %373, %285
  br label %375

375:                                              ; preds = %374, %273
  %376 = load ptr, ptr %54, align 8, !tbaa !5
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %379, label %384

379:                                              ; preds = %375
  %380 = load ptr, ptr %54, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  %382 = sub nsw i32 0, %381
  store i32 %382, ptr %67, align 4, !tbaa !9
  %383 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %67, i32 noundef 7)
  store i32 1, ptr %88, align 4
  br label %1076

384:                                              ; preds = %375
  %385 = load ptr, ptr %30, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = icmp eq i32 %386, 0
  br i1 %387, label %392, label %388

388:                                              ; preds = %384
  %389 = load ptr, ptr %33, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = icmp eq i32 %390, 0
  br i1 %391, label %392, label %464

392:                                              ; preds = %388, %384
  %393 = load ptr, ptr %45, align 8, !tbaa !5
  store double 1.000000e+00, ptr %393, align 8, !tbaa !11
  %394 = load ptr, ptr %33, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  store i32 %395, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %460, %392
  %397 = load i32, ptr %76, align 4, !tbaa !9
  %398 = load i32, ptr %67, align 4, !tbaa !9
  %399 = icmp sle i32 %397, %398
  br i1 %399, label %400, label %463

400:                                              ; preds = %396
  %401 = load ptr, ptr %46, align 8, !tbaa !5
  %402 = load i32, ptr %76, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %401, i64 %403
  store double 0.000000e+00, ptr %404, align 8, !tbaa !11
  %405 = load ptr, ptr %47, align 8, !tbaa !5
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = icmp sge i32 %406, 1
  br i1 %407, label %408, label %421

408:                                              ; preds = %400
  %409 = load ptr, ptr %48, align 8, !tbaa !5
  %410 = load i32, ptr %76, align 4, !tbaa !9
  %411 = load i32, ptr %63, align 4, !tbaa !9
  %412 = add nsw i32 %410, %411
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %409, i64 %413
  store double 1.000000e+00, ptr %414, align 8, !tbaa !11
  %415 = load ptr, ptr %49, align 8, !tbaa !5
  %416 = load i32, ptr %76, align 4, !tbaa !9
  %417 = load i32, ptr %65, align 4, !tbaa !9
  %418 = add nsw i32 %416, %417
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %415, i64 %419
  store double 1.000000e+00, ptr %420, align 8, !tbaa !11
  br label %421

421:                                              ; preds = %408, %400
  %422 = load ptr, ptr %47, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = icmp sge i32 %423, 2
  br i1 %424, label %425, label %440

425:                                              ; preds = %421
  %426 = load ptr, ptr %48, align 8, !tbaa !5
  %427 = load i32, ptr %76, align 4, !tbaa !9
  %428 = load i32, ptr %63, align 4, !tbaa !9
  %429 = shl i32 %428, 1
  %430 = add nsw i32 %427, %429
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %426, i64 %431
  store double 0.000000e+00, ptr %432, align 8, !tbaa !11
  %433 = load ptr, ptr %49, align 8, !tbaa !5
  %434 = load i32, ptr %76, align 4, !tbaa !9
  %435 = load i32, ptr %65, align 4, !tbaa !9
  %436 = shl i32 %435, 1
  %437 = add nsw i32 %434, %436
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %433, i64 %438
  store double 0.000000e+00, ptr %439, align 8, !tbaa !11
  br label %440

440:                                              ; preds = %425, %421
  %441 = load ptr, ptr %47, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = icmp sge i32 %442, 3
  br i1 %443, label %444, label %459

444:                                              ; preds = %440
  %445 = load ptr, ptr %48, align 8, !tbaa !5
  %446 = load i32, ptr %76, align 4, !tbaa !9
  %447 = load i32, ptr %63, align 4, !tbaa !9
  %448 = mul nsw i32 %447, 3
  %449 = add nsw i32 %446, %448
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %445, i64 %450
  store double 1.000000e+00, ptr %451, align 8, !tbaa !11
  %452 = load ptr, ptr %49, align 8, !tbaa !5
  %453 = load i32, ptr %76, align 4, !tbaa !9
  %454 = load i32, ptr %65, align 4, !tbaa !9
  %455 = mul nsw i32 %454, 3
  %456 = add nsw i32 %453, %455
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds double, ptr %452, i64 %457
  store double 1.000000e+00, ptr %458, align 8, !tbaa !11
  br label %459

459:                                              ; preds = %444, %440
  br label %460

460:                                              ; preds = %459
  %461 = load i32, ptr %76, align 4, !tbaa !9
  %462 = add nsw i32 %461, 1
  store i32 %462, ptr %76, align 4, !tbaa !9
  br label %396, !llvm.loop !13

463:                                              ; preds = %396
  store i32 1, ptr %88, align 4
  br label %1076

464:                                              ; preds = %388
  %465 = load ptr, ptr %45, align 8, !tbaa !5
  store double 0.000000e+00, ptr %465, align 8, !tbaa !11
  %466 = load ptr, ptr %33, align 8, !tbaa !5
  %467 = load i32, ptr %466, align 4, !tbaa !9
  store i32 %467, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  br label %468

468:                                              ; preds = %532, %464
  %469 = load i32, ptr %76, align 4, !tbaa !9
  %470 = load i32, ptr %67, align 4, !tbaa !9
  %471 = icmp sle i32 %469, %470
  br i1 %471, label %472, label %535

472:                                              ; preds = %468
  %473 = load ptr, ptr %46, align 8, !tbaa !5
  %474 = load i32, ptr %76, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %473, i64 %475
  store double 1.000000e+00, ptr %476, align 8, !tbaa !11
  %477 = load ptr, ptr %47, align 8, !tbaa !5
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = icmp sge i32 %478, 1
  br i1 %479, label %480, label %493

480:                                              ; preds = %472
  %481 = load ptr, ptr %48, align 8, !tbaa !5
  %482 = load i32, ptr %76, align 4, !tbaa !9
  %483 = load i32, ptr %63, align 4, !tbaa !9
  %484 = add nsw i32 %482, %483
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %481, i64 %485
  store double 1.000000e+00, ptr %486, align 8, !tbaa !11
  %487 = load ptr, ptr %49, align 8, !tbaa !5
  %488 = load i32, ptr %76, align 4, !tbaa !9
  %489 = load i32, ptr %65, align 4, !tbaa !9
  %490 = add nsw i32 %488, %489
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %487, i64 %491
  store double 1.000000e+00, ptr %492, align 8, !tbaa !11
  br label %493

493:                                              ; preds = %480, %472
  %494 = load ptr, ptr %47, align 8, !tbaa !5
  %495 = load i32, ptr %494, align 4, !tbaa !9
  %496 = icmp sge i32 %495, 2
  br i1 %496, label %497, label %512

497:                                              ; preds = %493
  %498 = load ptr, ptr %48, align 8, !tbaa !5
  %499 = load i32, ptr %76, align 4, !tbaa !9
  %500 = load i32, ptr %63, align 4, !tbaa !9
  %501 = shl i32 %500, 1
  %502 = add nsw i32 %499, %501
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %498, i64 %503
  store double 1.000000e+00, ptr %504, align 8, !tbaa !11
  %505 = load ptr, ptr %49, align 8, !tbaa !5
  %506 = load i32, ptr %76, align 4, !tbaa !9
  %507 = load i32, ptr %65, align 4, !tbaa !9
  %508 = shl i32 %507, 1
  %509 = add nsw i32 %506, %508
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %505, i64 %510
  store double 1.000000e+00, ptr %511, align 8, !tbaa !11
  br label %512

512:                                              ; preds = %497, %493
  %513 = load ptr, ptr %47, align 8, !tbaa !5
  %514 = load i32, ptr %513, align 4, !tbaa !9
  %515 = icmp sge i32 %514, 3
  br i1 %515, label %516, label %531

516:                                              ; preds = %512
  %517 = load ptr, ptr %48, align 8, !tbaa !5
  %518 = load i32, ptr %76, align 4, !tbaa !9
  %519 = load i32, ptr %63, align 4, !tbaa !9
  %520 = mul nsw i32 %519, 3
  %521 = add nsw i32 %518, %520
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds double, ptr %517, i64 %522
  store double 0.000000e+00, ptr %523, align 8, !tbaa !11
  %524 = load ptr, ptr %49, align 8, !tbaa !5
  %525 = load i32, ptr %76, align 4, !tbaa !9
  %526 = load i32, ptr %65, align 4, !tbaa !9
  %527 = mul nsw i32 %526, 3
  %528 = add nsw i32 %525, %527
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %524, i64 %529
  store double 0.000000e+00, ptr %530, align 8, !tbaa !11
  br label %531

531:                                              ; preds = %516, %512
  br label %532

532:                                              ; preds = %531
  %533 = load i32, ptr %76, align 4, !tbaa !9
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr %76, align 4, !tbaa !9
  br label %468, !llvm.loop !15

535:                                              ; preds = %468
  %536 = load i32, ptr %81, align 4, !tbaa !9
  %537 = icmp ne i32 %536, 0
  br i1 %537, label %538, label %540

538:                                              ; preds = %535
  %539 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  store i8 73, ptr %539, align 1, !tbaa !16
  br label %542

540:                                              ; preds = %535
  %541 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  store i8 49, ptr %541, align 1, !tbaa !16
  br label %542

542:                                              ; preds = %540, %538
  %543 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  %544 = load ptr, ptr %30, align 8, !tbaa !5
  %545 = load ptr, ptr %31, align 8, !tbaa !5
  %546 = load ptr, ptr %32, align 8, !tbaa !5
  %547 = load ptr, ptr %34, align 8, !tbaa !5
  %548 = load i32, ptr %56, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds double, ptr %547, i64 %549
  %551 = load ptr, ptr %35, align 8, !tbaa !5
  %552 = load ptr, ptr %52, align 8, !tbaa !5
  %553 = getelementptr inbounds double, ptr %552, i64 1
  %554 = call double @dlangb_(ptr noundef %543, ptr noundef %544, ptr noundef %545, ptr noundef %546, ptr noundef %550, ptr noundef %551, ptr noundef %553)
  store double %554, ptr %77, align 8, !tbaa !11
  %555 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  %556 = load ptr, ptr %30, align 8, !tbaa !5
  %557 = load ptr, ptr %31, align 8, !tbaa !5
  %558 = load ptr, ptr %32, align 8, !tbaa !5
  %559 = load ptr, ptr %36, align 8, !tbaa !5
  %560 = load i32, ptr %58, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds double, ptr %559, i64 %561
  %563 = load ptr, ptr %37, align 8, !tbaa !5
  %564 = load ptr, ptr %38, align 8, !tbaa !5
  %565 = getelementptr inbounds i32, ptr %564, i64 1
  %566 = load ptr, ptr %45, align 8, !tbaa !5
  %567 = load ptr, ptr %52, align 8, !tbaa !5
  %568 = getelementptr inbounds double, ptr %567, i64 1
  %569 = load ptr, ptr %53, align 8, !tbaa !5
  %570 = getelementptr inbounds i32, ptr %569, i64 1
  %571 = load ptr, ptr %54, align 8, !tbaa !5
  call void @dgbcon_(ptr noundef %555, ptr noundef %556, ptr noundef %557, ptr noundef %558, ptr noundef %562, ptr noundef %563, ptr noundef %565, ptr noundef %77, ptr noundef %566, ptr noundef %568, ptr noundef %570, ptr noundef %571)
  %572 = load i32, ptr %74, align 4, !tbaa !9
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %699

574:                                              ; preds = %542
  %575 = load ptr, ptr %54, align 8, !tbaa !5
  %576 = load i32, ptr %575, align 4, !tbaa !9
  %577 = icmp eq i32 %576, 0
  br i1 %577, label %578, label %699

578:                                              ; preds = %574
  %579 = call i32 @ilaprec_(ptr noundef @.str.6)
  store i32 %579, ptr %79, align 4, !tbaa !9
  %580 = load i32, ptr %81, align 4, !tbaa !9
  %581 = icmp ne i32 %580, 0
  br i1 %581, label %582, label %640

582:                                              ; preds = %578
  %583 = load ptr, ptr %30, align 8, !tbaa !5
  %584 = load ptr, ptr %31, align 8, !tbaa !5
  %585 = load ptr, ptr %32, align 8, !tbaa !5
  %586 = load ptr, ptr %33, align 8, !tbaa !5
  %587 = load ptr, ptr %34, align 8, !tbaa !5
  %588 = load i32, ptr %56, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %587, i64 %589
  %591 = load ptr, ptr %35, align 8, !tbaa !5
  %592 = load ptr, ptr %36, align 8, !tbaa !5
  %593 = load i32, ptr %58, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds double, ptr %592, i64 %594
  %596 = load ptr, ptr %37, align 8, !tbaa !5
  %597 = load ptr, ptr %38, align 8, !tbaa !5
  %598 = getelementptr inbounds i32, ptr %597, i64 1
  %599 = load ptr, ptr %40, align 8, !tbaa !5
  %600 = getelementptr inbounds double, ptr %599, i64 1
  %601 = load ptr, ptr %41, align 8, !tbaa !5
  %602 = load i32, ptr %60, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds double, ptr %601, i64 %603
  %605 = load ptr, ptr %42, align 8, !tbaa !5
  %606 = load ptr, ptr %43, align 8, !tbaa !5
  %607 = load i32, ptr %62, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %606, i64 %608
  %610 = load ptr, ptr %44, align 8, !tbaa !5
  %611 = load ptr, ptr %46, align 8, !tbaa !5
  %612 = getelementptr inbounds double, ptr %611, i64 1
  %613 = load ptr, ptr %48, align 8, !tbaa !5
  %614 = load i32, ptr %64, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds double, ptr %613, i64 %615
  %617 = load ptr, ptr %49, align 8, !tbaa !5
  %618 = load i32, ptr %66, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %617, i64 %619
  %621 = load ptr, ptr %52, align 8, !tbaa !5
  %622 = load ptr, ptr %30, align 8, !tbaa !5
  %623 = load i32, ptr %622, align 4, !tbaa !9
  %624 = add nsw i32 %623, 1
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %621, i64 %625
  %627 = load ptr, ptr %52, align 8, !tbaa !5
  %628 = getelementptr inbounds double, ptr %627, i64 1
  %629 = load ptr, ptr %52, align 8, !tbaa !5
  %630 = load ptr, ptr %30, align 8, !tbaa !5
  %631 = load i32, ptr %630, align 4, !tbaa !9
  %632 = shl i32 %631, 1
  %633 = add nsw i32 %632, 1
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %629, i64 %634
  %636 = load ptr, ptr %52, align 8, !tbaa !5
  %637 = getelementptr inbounds double, ptr %636, i64 1
  %638 = load ptr, ptr %45, align 8, !tbaa !5
  %639 = load ptr, ptr %54, align 8, !tbaa !5
  call void @dla_gbrfsx_extended_(ptr noundef %79, ptr noundef %83, ptr noundef %583, ptr noundef %584, ptr noundef %585, ptr noundef %586, ptr noundef %590, ptr noundef %591, ptr noundef %595, ptr noundef %596, ptr noundef %598, ptr noundef %80, ptr noundef %600, ptr noundef %604, ptr noundef %605, ptr noundef %609, ptr noundef %610, ptr noundef %612, ptr noundef %85, ptr noundef %616, ptr noundef %620, ptr noundef %626, ptr noundef %628, ptr noundef %635, ptr noundef %637, ptr noundef %638, ptr noundef %84, ptr noundef %86, ptr noundef %71, ptr noundef %75, ptr noundef %639)
  br label %698

640:                                              ; preds = %578
  %641 = load ptr, ptr %30, align 8, !tbaa !5
  %642 = load ptr, ptr %31, align 8, !tbaa !5
  %643 = load ptr, ptr %32, align 8, !tbaa !5
  %644 = load ptr, ptr %33, align 8, !tbaa !5
  %645 = load ptr, ptr %34, align 8, !tbaa !5
  %646 = load i32, ptr %56, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %645, i64 %647
  %649 = load ptr, ptr %35, align 8, !tbaa !5
  %650 = load ptr, ptr %36, align 8, !tbaa !5
  %651 = load i32, ptr %58, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %650, i64 %652
  %654 = load ptr, ptr %37, align 8, !tbaa !5
  %655 = load ptr, ptr %38, align 8, !tbaa !5
  %656 = getelementptr inbounds i32, ptr %655, i64 1
  %657 = load ptr, ptr %39, align 8, !tbaa !5
  %658 = getelementptr inbounds double, ptr %657, i64 1
  %659 = load ptr, ptr %41, align 8, !tbaa !5
  %660 = load i32, ptr %60, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds double, ptr %659, i64 %661
  %663 = load ptr, ptr %42, align 8, !tbaa !5
  %664 = load ptr, ptr %43, align 8, !tbaa !5
  %665 = load i32, ptr %62, align 4, !tbaa !9
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds double, ptr %664, i64 %666
  %668 = load ptr, ptr %44, align 8, !tbaa !5
  %669 = load ptr, ptr %46, align 8, !tbaa !5
  %670 = getelementptr inbounds double, ptr %669, i64 1
  %671 = load ptr, ptr %48, align 8, !tbaa !5
  %672 = load i32, ptr %64, align 4, !tbaa !9
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds double, ptr %671, i64 %673
  %675 = load ptr, ptr %49, align 8, !tbaa !5
  %676 = load i32, ptr %66, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %675, i64 %677
  %679 = load ptr, ptr %52, align 8, !tbaa !5
  %680 = load ptr, ptr %30, align 8, !tbaa !5
  %681 = load i32, ptr %680, align 4, !tbaa !9
  %682 = add nsw i32 %681, 1
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds double, ptr %679, i64 %683
  %685 = load ptr, ptr %52, align 8, !tbaa !5
  %686 = getelementptr inbounds double, ptr %685, i64 1
  %687 = load ptr, ptr %52, align 8, !tbaa !5
  %688 = load ptr, ptr %30, align 8, !tbaa !5
  %689 = load i32, ptr %688, align 4, !tbaa !9
  %690 = shl i32 %689, 1
  %691 = add nsw i32 %690, 1
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %687, i64 %692
  %694 = load ptr, ptr %52, align 8, !tbaa !5
  %695 = getelementptr inbounds double, ptr %694, i64 1
  %696 = load ptr, ptr %45, align 8, !tbaa !5
  %697 = load ptr, ptr %54, align 8, !tbaa !5
  call void @dla_gbrfsx_extended_(ptr noundef %79, ptr noundef %83, ptr noundef %641, ptr noundef %642, ptr noundef %643, ptr noundef %644, ptr noundef %648, ptr noundef %649, ptr noundef %653, ptr noundef %654, ptr noundef %656, ptr noundef %82, ptr noundef %658, ptr noundef %662, ptr noundef %663, ptr noundef %667, ptr noundef %668, ptr noundef %670, ptr noundef %85, ptr noundef %674, ptr noundef %678, ptr noundef %684, ptr noundef %686, ptr noundef %693, ptr noundef %695, ptr noundef %696, ptr noundef %84, ptr noundef %86, ptr noundef %71, ptr noundef %75, ptr noundef %697)
  br label %698

698:                                              ; preds = %640, %582
  br label %699

699:                                              ; preds = %698, %574, %542
  store double 1.000000e+01, ptr %68, align 8, !tbaa !11
  %700 = load ptr, ptr %30, align 8, !tbaa !5
  %701 = load i32, ptr %700, align 4, !tbaa !9
  %702 = sitofp i32 %701 to double
  %703 = call double @sqrt(double noundef %702) #4
  store double %703, ptr %69, align 8, !tbaa !11
  %704 = load double, ptr %68, align 8, !tbaa !11
  %705 = load double, ptr %69, align 8, !tbaa !11
  %706 = fcmp oge double %704, %705
  br i1 %706, label %707, label %709

707:                                              ; preds = %699
  %708 = load double, ptr %68, align 8, !tbaa !11
  br label %711

709:                                              ; preds = %699
  %710 = load double, ptr %69, align 8, !tbaa !11
  br label %711

711:                                              ; preds = %709, %707
  %712 = phi double [ %708, %707 ], [ %710, %709 ]
  %713 = call double @dlamch_(ptr noundef @.str)
  %714 = fmul double %712, %713
  store double %714, ptr %72, align 8, !tbaa !11
  %715 = load ptr, ptr %47, align 8, !tbaa !5
  %716 = load i32, ptr %715, align 4, !tbaa !9
  %717 = icmp sge i32 %716, 1
  br i1 %717, label %718, label %913

718:                                              ; preds = %711
  %719 = load i32, ptr %85, align 4, !tbaa !9
  %720 = icmp sge i32 %719, 1
  br i1 %720, label %721, label %913

721:                                              ; preds = %718
  %722 = load i32, ptr %80, align 4, !tbaa !9
  %723 = icmp ne i32 %722, 0
  br i1 %723, label %724, label %752

724:                                              ; preds = %721
  %725 = load i32, ptr %81, align 4, !tbaa !9
  %726 = icmp ne i32 %725, 0
  br i1 %726, label %727, label %752

727:                                              ; preds = %724
  %728 = load ptr, ptr %28, align 8, !tbaa !5
  %729 = load ptr, ptr %30, align 8, !tbaa !5
  %730 = load ptr, ptr %31, align 8, !tbaa !5
  %731 = load ptr, ptr %32, align 8, !tbaa !5
  %732 = load ptr, ptr %34, align 8, !tbaa !5
  %733 = load i32, ptr %56, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds double, ptr %732, i64 %734
  %736 = load ptr, ptr %35, align 8, !tbaa !5
  %737 = load ptr, ptr %36, align 8, !tbaa !5
  %738 = load i32, ptr %58, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %737, i64 %739
  %741 = load ptr, ptr %37, align 8, !tbaa !5
  %742 = load ptr, ptr %38, align 8, !tbaa !5
  %743 = getelementptr inbounds i32, ptr %742, i64 1
  %744 = load ptr, ptr %40, align 8, !tbaa !5
  %745 = getelementptr inbounds double, ptr %744, i64 1
  %746 = load ptr, ptr %54, align 8, !tbaa !5
  %747 = load ptr, ptr %52, align 8, !tbaa !5
  %748 = getelementptr inbounds double, ptr %747, i64 1
  %749 = load ptr, ptr %53, align 8, !tbaa !5
  %750 = getelementptr inbounds i32, ptr %749, i64 1
  %751 = call double @dla_gbrcond_(ptr noundef %728, ptr noundef %729, ptr noundef %730, ptr noundef %731, ptr noundef %735, ptr noundef %736, ptr noundef %740, ptr noundef %741, ptr noundef %743, ptr noundef @c_n1, ptr noundef %745, ptr noundef %746, ptr noundef %748, ptr noundef %750)
  store double %751, ptr %78, align 8, !tbaa !11
  br label %809

752:                                              ; preds = %724, %721
  %753 = load i32, ptr %82, align 4, !tbaa !9
  %754 = icmp ne i32 %753, 0
  br i1 %754, label %755, label %783

755:                                              ; preds = %752
  %756 = load i32, ptr %81, align 4, !tbaa !9
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %783, label %758

758:                                              ; preds = %755
  %759 = load ptr, ptr %28, align 8, !tbaa !5
  %760 = load ptr, ptr %30, align 8, !tbaa !5
  %761 = load ptr, ptr %31, align 8, !tbaa !5
  %762 = load ptr, ptr %32, align 8, !tbaa !5
  %763 = load ptr, ptr %34, align 8, !tbaa !5
  %764 = load i32, ptr %56, align 4, !tbaa !9
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds double, ptr %763, i64 %765
  %767 = load ptr, ptr %35, align 8, !tbaa !5
  %768 = load ptr, ptr %36, align 8, !tbaa !5
  %769 = load i32, ptr %58, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds double, ptr %768, i64 %770
  %772 = load ptr, ptr %37, align 8, !tbaa !5
  %773 = load ptr, ptr %38, align 8, !tbaa !5
  %774 = getelementptr inbounds i32, ptr %773, i64 1
  %775 = load ptr, ptr %39, align 8, !tbaa !5
  %776 = getelementptr inbounds double, ptr %775, i64 1
  %777 = load ptr, ptr %54, align 8, !tbaa !5
  %778 = load ptr, ptr %52, align 8, !tbaa !5
  %779 = getelementptr inbounds double, ptr %778, i64 1
  %780 = load ptr, ptr %53, align 8, !tbaa !5
  %781 = getelementptr inbounds i32, ptr %780, i64 1
  %782 = call double @dla_gbrcond_(ptr noundef %759, ptr noundef %760, ptr noundef %761, ptr noundef %762, ptr noundef %766, ptr noundef %767, ptr noundef %771, ptr noundef %772, ptr noundef %774, ptr noundef @c_n1, ptr noundef %776, ptr noundef %777, ptr noundef %779, ptr noundef %781)
  store double %782, ptr %78, align 8, !tbaa !11
  br label %808

783:                                              ; preds = %755, %752
  %784 = load ptr, ptr %28, align 8, !tbaa !5
  %785 = load ptr, ptr %30, align 8, !tbaa !5
  %786 = load ptr, ptr %31, align 8, !tbaa !5
  %787 = load ptr, ptr %32, align 8, !tbaa !5
  %788 = load ptr, ptr %34, align 8, !tbaa !5
  %789 = load i32, ptr %56, align 4, !tbaa !9
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds double, ptr %788, i64 %790
  %792 = load ptr, ptr %35, align 8, !tbaa !5
  %793 = load ptr, ptr %36, align 8, !tbaa !5
  %794 = load i32, ptr %58, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %793, i64 %795
  %797 = load ptr, ptr %37, align 8, !tbaa !5
  %798 = load ptr, ptr %38, align 8, !tbaa !5
  %799 = getelementptr inbounds i32, ptr %798, i64 1
  %800 = load ptr, ptr %39, align 8, !tbaa !5
  %801 = getelementptr inbounds double, ptr %800, i64 1
  %802 = load ptr, ptr %54, align 8, !tbaa !5
  %803 = load ptr, ptr %52, align 8, !tbaa !5
  %804 = getelementptr inbounds double, ptr %803, i64 1
  %805 = load ptr, ptr %53, align 8, !tbaa !5
  %806 = getelementptr inbounds i32, ptr %805, i64 1
  %807 = call double @dla_gbrcond_(ptr noundef %784, ptr noundef %785, ptr noundef %786, ptr noundef %787, ptr noundef %791, ptr noundef %792, ptr noundef %796, ptr noundef %797, ptr noundef %799, ptr noundef @c__0, ptr noundef %801, ptr noundef %802, ptr noundef %804, ptr noundef %806)
  store double %807, ptr %78, align 8, !tbaa !11
  br label %808

808:                                              ; preds = %783, %758
  br label %809

809:                                              ; preds = %808, %727
  %810 = load ptr, ptr %33, align 8, !tbaa !5
  %811 = load i32, ptr %810, align 4, !tbaa !9
  store i32 %811, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  br label %812

812:                                              ; preds = %909, %809
  %813 = load i32, ptr %76, align 4, !tbaa !9
  %814 = load i32, ptr %67, align 4, !tbaa !9
  %815 = icmp sle i32 %813, %814
  br i1 %815, label %816, label %912

816:                                              ; preds = %812
  %817 = load ptr, ptr %47, align 8, !tbaa !5
  %818 = load i32, ptr %817, align 4, !tbaa !9
  %819 = icmp sge i32 %818, 2
  br i1 %819, label %820, label %838

820:                                              ; preds = %816
  %821 = load ptr, ptr %48, align 8, !tbaa !5
  %822 = load i32, ptr %76, align 4, !tbaa !9
  %823 = load i32, ptr %63, align 4, !tbaa !9
  %824 = shl i32 %823, 1
  %825 = add nsw i32 %822, %824
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds double, ptr %821, i64 %826
  %828 = load double, ptr %827, align 8, !tbaa !11
  %829 = fcmp ogt double %828, 1.000000e+00
  br i1 %829, label %830, label %838

830:                                              ; preds = %820
  %831 = load ptr, ptr %48, align 8, !tbaa !5
  %832 = load i32, ptr %76, align 4, !tbaa !9
  %833 = load i32, ptr %63, align 4, !tbaa !9
  %834 = shl i32 %833, 1
  %835 = add nsw i32 %832, %834
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds double, ptr %831, i64 %836
  store double 1.000000e+00, ptr %837, align 8, !tbaa !11
  br label %838

838:                                              ; preds = %830, %820, %816
  %839 = load double, ptr %78, align 8, !tbaa !11
  %840 = load double, ptr %70, align 8, !tbaa !11
  %841 = fcmp olt double %839, %840
  br i1 %841, label %842, label %868

842:                                              ; preds = %838
  %843 = load ptr, ptr %48, align 8, !tbaa !5
  %844 = load i32, ptr %76, align 4, !tbaa !9
  %845 = load i32, ptr %63, align 4, !tbaa !9
  %846 = shl i32 %845, 1
  %847 = add nsw i32 %844, %846
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds double, ptr %843, i64 %848
  store double 1.000000e+00, ptr %849, align 8, !tbaa !11
  %850 = load ptr, ptr %48, align 8, !tbaa !5
  %851 = load i32, ptr %76, align 4, !tbaa !9
  %852 = load i32, ptr %63, align 4, !tbaa !9
  %853 = add nsw i32 %851, %852
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds double, ptr %850, i64 %854
  store double 0.000000e+00, ptr %855, align 8, !tbaa !11
  %856 = load ptr, ptr %54, align 8, !tbaa !5
  %857 = load i32, ptr %856, align 4, !tbaa !9
  %858 = load ptr, ptr %30, align 8, !tbaa !5
  %859 = load i32, ptr %858, align 4, !tbaa !9
  %860 = icmp sle i32 %857, %859
  br i1 %860, label %861, label %867

861:                                              ; preds = %842
  %862 = load ptr, ptr %30, align 8, !tbaa !5
  %863 = load i32, ptr %862, align 4, !tbaa !9
  %864 = load i32, ptr %76, align 4, !tbaa !9
  %865 = add nsw i32 %863, %864
  %866 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 %865, ptr %866, align 4, !tbaa !9
  br label %867

867:                                              ; preds = %861, %842
  br label %895

868:                                              ; preds = %838
  %869 = load ptr, ptr %48, align 8, !tbaa !5
  %870 = load i32, ptr %76, align 4, !tbaa !9
  %871 = load i32, ptr %63, align 4, !tbaa !9
  %872 = shl i32 %871, 1
  %873 = add nsw i32 %870, %872
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds double, ptr %869, i64 %874
  %876 = load double, ptr %875, align 8, !tbaa !11
  %877 = load double, ptr %72, align 8, !tbaa !11
  %878 = fcmp olt double %876, %877
  br i1 %878, label %879, label %894

879:                                              ; preds = %868
  %880 = load double, ptr %72, align 8, !tbaa !11
  %881 = load ptr, ptr %48, align 8, !tbaa !5
  %882 = load i32, ptr %76, align 4, !tbaa !9
  %883 = load i32, ptr %63, align 4, !tbaa !9
  %884 = shl i32 %883, 1
  %885 = add nsw i32 %882, %884
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds double, ptr %881, i64 %886
  store double %880, ptr %887, align 8, !tbaa !11
  %888 = load ptr, ptr %48, align 8, !tbaa !5
  %889 = load i32, ptr %76, align 4, !tbaa !9
  %890 = load i32, ptr %63, align 4, !tbaa !9
  %891 = add nsw i32 %889, %890
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds double, ptr %888, i64 %892
  store double 1.000000e+00, ptr %893, align 8, !tbaa !11
  br label %894

894:                                              ; preds = %879, %868
  br label %895

895:                                              ; preds = %894, %867
  %896 = load ptr, ptr %47, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = icmp sge i32 %897, 3
  br i1 %898, label %899, label %908

899:                                              ; preds = %895
  %900 = load double, ptr %78, align 8, !tbaa !11
  %901 = load ptr, ptr %48, align 8, !tbaa !5
  %902 = load i32, ptr %76, align 4, !tbaa !9
  %903 = load i32, ptr %63, align 4, !tbaa !9
  %904 = mul nsw i32 %903, 3
  %905 = add nsw i32 %902, %904
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds double, ptr %901, i64 %906
  store double %900, ptr %907, align 8, !tbaa !11
  br label %908

908:                                              ; preds = %899, %895
  br label %909

909:                                              ; preds = %908
  %910 = load i32, ptr %76, align 4, !tbaa !9
  %911 = add nsw i32 %910, 1
  store i32 %911, ptr %76, align 4, !tbaa !9
  br label %812, !llvm.loop !17

912:                                              ; preds = %812
  br label %913

913:                                              ; preds = %912, %718, %711
  %914 = load ptr, ptr %47, align 8, !tbaa !5
  %915 = load i32, ptr %914, align 4, !tbaa !9
  %916 = icmp sge i32 %915, 1
  br i1 %916, label %917, label %1075

917:                                              ; preds = %913
  %918 = load i32, ptr %85, align 4, !tbaa !9
  %919 = icmp sge i32 %918, 2
  br i1 %919, label %920, label %1075

920:                                              ; preds = %917
  %921 = call double @dlamch_(ptr noundef @.str)
  %922 = call double @sqrt(double noundef %921) #4
  store double %922, ptr %87, align 8, !tbaa !11
  %923 = load ptr, ptr %33, align 8, !tbaa !5
  %924 = load i32, ptr %923, align 4, !tbaa !9
  store i32 %924, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  br label %925

925:                                              ; preds = %1071, %920
  %926 = load i32, ptr %76, align 4, !tbaa !9
  %927 = load i32, ptr %67, align 4, !tbaa !9
  %928 = icmp sle i32 %926, %927
  br i1 %928, label %929, label %1074

929:                                              ; preds = %925
  %930 = load ptr, ptr %49, align 8, !tbaa !5
  %931 = load i32, ptr %76, align 4, !tbaa !9
  %932 = load i32, ptr %65, align 4, !tbaa !9
  %933 = shl i32 %932, 1
  %934 = add nsw i32 %931, %933
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %930, i64 %935
  %937 = load double, ptr %936, align 8, !tbaa !11
  %938 = load double, ptr %87, align 8, !tbaa !11
  %939 = fcmp olt double %937, %938
  br i1 %939, label %940, label %970

940:                                              ; preds = %929
  %941 = load ptr, ptr %28, align 8, !tbaa !5
  %942 = load ptr, ptr %30, align 8, !tbaa !5
  %943 = load ptr, ptr %31, align 8, !tbaa !5
  %944 = load ptr, ptr %32, align 8, !tbaa !5
  %945 = load ptr, ptr %34, align 8, !tbaa !5
  %946 = load i32, ptr %56, align 4, !tbaa !9
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds double, ptr %945, i64 %947
  %949 = load ptr, ptr %35, align 8, !tbaa !5
  %950 = load ptr, ptr %36, align 8, !tbaa !5
  %951 = load i32, ptr %58, align 4, !tbaa !9
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds double, ptr %950, i64 %952
  %954 = load ptr, ptr %37, align 8, !tbaa !5
  %955 = load ptr, ptr %38, align 8, !tbaa !5
  %956 = getelementptr inbounds i32, ptr %955, i64 1
  %957 = load ptr, ptr %43, align 8, !tbaa !5
  %958 = load i32, ptr %76, align 4, !tbaa !9
  %959 = load i32, ptr %61, align 4, !tbaa !9
  %960 = mul nsw i32 %958, %959
  %961 = add nsw i32 %960, 1
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %957, i64 %962
  %964 = load ptr, ptr %54, align 8, !tbaa !5
  %965 = load ptr, ptr %52, align 8, !tbaa !5
  %966 = getelementptr inbounds double, ptr %965, i64 1
  %967 = load ptr, ptr %53, align 8, !tbaa !5
  %968 = getelementptr inbounds i32, ptr %967, i64 1
  %969 = call double @dla_gbrcond_(ptr noundef %941, ptr noundef %942, ptr noundef %943, ptr noundef %944, ptr noundef %948, ptr noundef %949, ptr noundef %953, ptr noundef %954, ptr noundef %956, ptr noundef @c__1, ptr noundef %963, ptr noundef %964, ptr noundef %966, ptr noundef %968)
  store double %969, ptr %78, align 8, !tbaa !11
  br label %971

970:                                              ; preds = %929
  store double 0.000000e+00, ptr %78, align 8, !tbaa !11
  br label %971

971:                                              ; preds = %970, %940
  %972 = load ptr, ptr %47, align 8, !tbaa !5
  %973 = load i32, ptr %972, align 4, !tbaa !9
  %974 = icmp sge i32 %973, 2
  br i1 %974, label %975, label %993

975:                                              ; preds = %971
  %976 = load ptr, ptr %49, align 8, !tbaa !5
  %977 = load i32, ptr %76, align 4, !tbaa !9
  %978 = load i32, ptr %65, align 4, !tbaa !9
  %979 = shl i32 %978, 1
  %980 = add nsw i32 %977, %979
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds double, ptr %976, i64 %981
  %983 = load double, ptr %982, align 8, !tbaa !11
  %984 = fcmp ogt double %983, 1.000000e+00
  br i1 %984, label %985, label %993

985:                                              ; preds = %975
  %986 = load ptr, ptr %49, align 8, !tbaa !5
  %987 = load i32, ptr %76, align 4, !tbaa !9
  %988 = load i32, ptr %65, align 4, !tbaa !9
  %989 = shl i32 %988, 1
  %990 = add nsw i32 %987, %989
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %986, i64 %991
  store double 1.000000e+00, ptr %992, align 8, !tbaa !11
  br label %993

993:                                              ; preds = %985, %975, %971
  %994 = load double, ptr %78, align 8, !tbaa !11
  %995 = load double, ptr %70, align 8, !tbaa !11
  %996 = fcmp olt double %994, %995
  br i1 %996, label %997, label %1030

997:                                              ; preds = %993
  %998 = load ptr, ptr %49, align 8, !tbaa !5
  %999 = load i32, ptr %76, align 4, !tbaa !9
  %1000 = load i32, ptr %65, align 4, !tbaa !9
  %1001 = shl i32 %1000, 1
  %1002 = add nsw i32 %999, %1001
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds double, ptr %998, i64 %1003
  store double 1.000000e+00, ptr %1004, align 8, !tbaa !11
  %1005 = load ptr, ptr %49, align 8, !tbaa !5
  %1006 = load i32, ptr %76, align 4, !tbaa !9
  %1007 = load i32, ptr %65, align 4, !tbaa !9
  %1008 = add nsw i32 %1006, %1007
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds double, ptr %1005, i64 %1009
  store double 0.000000e+00, ptr %1010, align 8, !tbaa !11
  %1011 = load ptr, ptr %51, align 8, !tbaa !5
  %1012 = getelementptr inbounds double, ptr %1011, i64 3
  %1013 = load double, ptr %1012, align 8, !tbaa !11
  %1014 = fcmp oeq double %1013, 1.000000e+00
  br i1 %1014, label %1015, label %1029

1015:                                             ; preds = %997
  %1016 = load ptr, ptr %54, align 8, !tbaa !5
  %1017 = load i32, ptr %1016, align 4, !tbaa !9
  %1018 = load ptr, ptr %30, align 8, !tbaa !5
  %1019 = load i32, ptr %1018, align 4, !tbaa !9
  %1020 = load i32, ptr %76, align 4, !tbaa !9
  %1021 = add nsw i32 %1019, %1020
  %1022 = icmp slt i32 %1017, %1021
  br i1 %1022, label %1023, label %1029

1023:                                             ; preds = %1015
  %1024 = load ptr, ptr %30, align 8, !tbaa !5
  %1025 = load i32, ptr %1024, align 4, !tbaa !9
  %1026 = load i32, ptr %76, align 4, !tbaa !9
  %1027 = add nsw i32 %1025, %1026
  %1028 = load ptr, ptr %54, align 8, !tbaa !5
  store i32 %1027, ptr %1028, align 4, !tbaa !9
  br label %1029

1029:                                             ; preds = %1023, %1015, %997
  br label %1057

1030:                                             ; preds = %993
  %1031 = load ptr, ptr %49, align 8, !tbaa !5
  %1032 = load i32, ptr %76, align 4, !tbaa !9
  %1033 = load i32, ptr %65, align 4, !tbaa !9
  %1034 = shl i32 %1033, 1
  %1035 = add nsw i32 %1032, %1034
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1031, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = load double, ptr %72, align 8, !tbaa !11
  %1040 = fcmp olt double %1038, %1039
  br i1 %1040, label %1041, label %1056

1041:                                             ; preds = %1030
  %1042 = load double, ptr %72, align 8, !tbaa !11
  %1043 = load ptr, ptr %49, align 8, !tbaa !5
  %1044 = load i32, ptr %76, align 4, !tbaa !9
  %1045 = load i32, ptr %65, align 4, !tbaa !9
  %1046 = shl i32 %1045, 1
  %1047 = add nsw i32 %1044, %1046
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds double, ptr %1043, i64 %1048
  store double %1042, ptr %1049, align 8, !tbaa !11
  %1050 = load ptr, ptr %49, align 8, !tbaa !5
  %1051 = load i32, ptr %76, align 4, !tbaa !9
  %1052 = load i32, ptr %65, align 4, !tbaa !9
  %1053 = add nsw i32 %1051, %1052
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds double, ptr %1050, i64 %1054
  store double 1.000000e+00, ptr %1055, align 8, !tbaa !11
  br label %1056

1056:                                             ; preds = %1041, %1030
  br label %1057

1057:                                             ; preds = %1056, %1029
  %1058 = load ptr, ptr %47, align 8, !tbaa !5
  %1059 = load i32, ptr %1058, align 4, !tbaa !9
  %1060 = icmp sge i32 %1059, 3
  br i1 %1060, label %1061, label %1070

1061:                                             ; preds = %1057
  %1062 = load double, ptr %78, align 8, !tbaa !11
  %1063 = load ptr, ptr %49, align 8, !tbaa !5
  %1064 = load i32, ptr %76, align 4, !tbaa !9
  %1065 = load i32, ptr %65, align 4, !tbaa !9
  %1066 = mul nsw i32 %1065, 3
  %1067 = add nsw i32 %1064, %1066
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds double, ptr %1063, i64 %1068
  store double %1062, ptr %1069, align 8, !tbaa !11
  br label %1070

1070:                                             ; preds = %1061, %1057
  br label %1071

1071:                                             ; preds = %1070
  %1072 = load i32, ptr %76, align 4, !tbaa !9
  %1073 = add nsw i32 %1072, 1
  store i32 %1073, ptr %76, align 4, !tbaa !9
  br label %925, !llvm.loop !18

1074:                                             ; preds = %925
  br label %1075

1075:                                             ; preds = %1074, %917, %913
  store i32 1, ptr %88, align 4
  br label %1076

1076:                                             ; preds = %1075, %463, %379
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  ret void
}

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

declare i32 @ilatrans_(ptr noundef) #2

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

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

declare i32 @ilaprec_(ptr noundef) #2

declare void @dla_gbrfsx_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, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "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 @dgbrfsx_(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 nocapture noundef readonly %19, ptr noundef %20, ptr noundef %21, ptr nocapture noundef readonly %22, ptr nocapture noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26) local_unnamed_addr #0 {
  %28 = ptrtoint ptr %21 to i64
  %29 = ptrtoint ptr %18 to i64
  %30 = ptrtoint ptr %20 to i64
  %31 = ptrtoint ptr %21 to i64
  %32 = ptrtoint ptr %18 to i64
  %33 = ptrtoint ptr %20 to i64
  %34 = alloca i32, align 4
  %35 = alloca double, align 8
  %36 = alloca [1 x i8], align 1
  %37 = alloca i32, align 4
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #6
  %46 = load i32, ptr %5, align 4, !tbaa !5
  %narrow410 = xor i32 %46, -1
  %47 = sext i32 %narrow410 to i64
  %48 = getelementptr inbounds double, ptr %21, i64 %47
  %49 = getelementptr inbounds double, ptr %20, i64 %47
  %50 = load i32, ptr %16, align 4, !tbaa !5
  %narrow = xor i32 %50, -1
  %51 = sext i32 %narrow to i64
  %52 = getelementptr inbounds double, ptr %15, i64 %51
  %53 = getelementptr inbounds i8, ptr %18, i64 -8
  %54 = getelementptr inbounds i8, ptr %24, i64 -8
  store i32 0, ptr %26, align 4, !tbaa !5
  %55 = tail call i32 @ilatrans_(ptr noundef %0) #6
  store i32 %55, ptr %42, align 4, !tbaa !5
  %56 = load i32, ptr %22, align 4, !tbaa !5
  %57 = icmp sgt i32 %56, 0
  br i1 %57, label %58, label %64

58:                                               ; preds = %27
  %59 = load double, ptr %23, align 8, !tbaa !9
  %60 = fcmp olt double %59, 0.000000e+00
  br i1 %60, label %61, label %62

61:                                               ; preds = %58
  store double 1.000000e+00, ptr %23, align 8, !tbaa !9
  br label %64

62:                                               ; preds = %58
  %63 = fptosi double %59 to i32
  br label %64

64:                                               ; preds = %61, %62, %27
  %.0388 = phi i32 [ 1, %61 ], [ %63, %62 ], [ 1, %27 ]
  %65 = load i32, ptr %2, align 4, !tbaa !5
  %66 = sitofp i32 %65 to double
  %67 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %68 = fmul double %67, %66
  store i32 10, ptr %43, align 4, !tbaa !5
  store double 5.000000e-01, ptr %45, align 8, !tbaa !9
  store double 2.500000e-01, ptr %35, align 8, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !5
  %69 = load i32, ptr %22, align 4, !tbaa !5
  %70 = icmp sgt i32 %69, 1
  br i1 %70, label %71, label %.thread

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

75:                                               ; preds = %71
  store double 1.000000e+01, ptr %72, align 8, !tbaa !9
  br label %78

76:                                               ; preds = %71
  %77 = fptosi double %73 to i32
  store i32 %77, ptr %43, align 4, !tbaa !5
  br label %78

78:                                               ; preds = %75, %76
  %.not = icmp eq i32 %69, 2
  br i1 %.not, label %.thread, label %79

79:                                               ; preds = %78
  %80 = getelementptr inbounds i8, ptr %23, i64 16
  %81 = load double, ptr %80, align 8, !tbaa !9
  %82 = fcmp olt double %81, 0.000000e+00
  br i1 %82, label %83, label %84

83:                                               ; preds = %79
  store double 1.000000e+00, ptr %80, align 8, !tbaa !9
  br label %.thread

84:                                               ; preds = %79
  %85 = fcmp oeq double %81, 0.000000e+00
  %86 = zext i1 %85 to i32
  store i32 %86, ptr %37, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %64, %84, %83, %78
  %87 = phi i32 [ 0, %64 ], [ %86, %84 ], [ 0, %83 ], [ 0, %78 ]
  %88 = icmp eq i32 %.0388, 0
  br i1 %88, label %92, label %89

89:                                               ; preds = %.thread
  %90 = load i32, ptr %19, align 4, !tbaa !5
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %92, label %93

92:                                               ; preds = %89, %.thread
  store i32 0, ptr %44, align 4, !tbaa !5
  br label %96

93:                                               ; preds = %89
  %.not401 = icmp eq i32 %87, 0
  br i1 %.not401, label %95, label %94

94:                                               ; preds = %93
  store i32 1, ptr %44, align 4, !tbaa !5
  br label %96

95:                                               ; preds = %93
  store i32 2, ptr %44, align 4, !tbaa !5
  br label %96

96:                                               ; preds = %94, %95, %92
  %97 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %98 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not402 = icmp eq i32 %98, 0
  br i1 %.not402, label %99, label %102

99:                                               ; preds = %96
  %100 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %101 = icmp ne i32 %100, 0
  br label %102

102:                                              ; preds = %99, %96
  %103 = phi i1 [ true, %96 ], [ %101, %99 ]
  %104 = zext i1 %103 to i32
  store i32 %104, ptr %41, align 4, !tbaa !5
  %105 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not403 = icmp eq i32 %105, 0
  br i1 %.not403, label %106, label %109

106:                                              ; preds = %102
  %107 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %108 = icmp ne i32 %107, 0
  br label %109

109:                                              ; preds = %106, %102
  %110 = phi i1 [ true, %102 ], [ %108, %106 ]
  %111 = zext i1 %110 to i32
  store i32 %111, ptr %40, align 4, !tbaa !5
  %112 = icmp eq i32 %55, -1
  br i1 %112, label %.thread416.sink.split, label %113

113:                                              ; preds = %109
  %or.cond = select i1 %103, i1 true, i1 %110
  br i1 %or.cond, label %116, label %114

114:                                              ; preds = %113
  %115 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not404 = icmp eq i32 %115, 0
  br i1 %.not404, label %.thread416.sink.split, label %116

116:                                              ; preds = %114, %113
  %117 = load i32, ptr %2, align 4, !tbaa !5
  %118 = icmp slt i32 %117, 0
  br i1 %118, label %.thread416.sink.split, label %119

119:                                              ; preds = %116
  %120 = load i32, ptr %3, align 4, !tbaa !5
  %121 = icmp slt i32 %120, 0
  br i1 %121, label %.thread416.sink.split, label %122

122:                                              ; preds = %119
  %123 = load i32, ptr %4, align 4, !tbaa !5
  %124 = icmp slt i32 %123, 0
  br i1 %124, label %.thread416.sink.split, label %125

125:                                              ; preds = %122
  %126 = load i32, ptr %5, align 4, !tbaa !5
  %127 = icmp slt i32 %126, 0
  br i1 %127, label %.thread416.sink.split, label %128

128:                                              ; preds = %125
  %129 = load i32, ptr %7, align 4, !tbaa !5
  %130 = add nuw nsw i32 %123, %120
  %.not405 = icmp sgt i32 %129, %130
  br i1 %.not405, label %131, label %.thread416.sink.split

131:                                              ; preds = %128
  %132 = load i32, ptr %9, align 4, !tbaa !5
  %133 = shl nuw i32 %120, 1
  %134 = add nsw i32 %123, %133
  %.not406 = icmp sgt i32 %132, %134
  br i1 %.not406, label %135, label %.thread416.sink.split

135:                                              ; preds = %131
  %136 = load i32, ptr %14, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %117, i32 1)
  %137 = icmp slt i32 %136, %spec.select
  br i1 %137, label %.thread416.sink.split, label %138

138:                                              ; preds = %135
  %139 = load i32, ptr %16, align 4, !tbaa !5
  %140 = icmp slt i32 %139, %spec.select
  br i1 %140, label %.thread416.sink.split, label %141

141:                                              ; preds = %138
  %.pr = load i32, ptr %26, align 4, !tbaa !5
  %.not407 = icmp eq i32 %.pr, 0
  br i1 %.not407, label %145, label %.thread416

.thread416.sink.split:                            ; preds = %138, %135, %131, %128, %125, %122, %119, %116, %114, %109
  %.sink = phi i32 [ -1, %109 ], [ -2, %114 ], [ -3, %116 ], [ -4, %119 ], [ -5, %122 ], [ -6, %125 ], [ -8, %128 ], [ -10, %131 ], [ -13, %135 ], [ -15, %138 ]
  store i32 %.sink, ptr %26, align 4, !tbaa !5
  br label %.thread416

.thread416:                                       ; preds = %.thread416.sink.split, %141
  %142 = phi i32 [ %.pr, %141 ], [ %.sink, %.thread416.sink.split ]
  %143 = sub nsw i32 0, %142
  store i32 %143, ptr %34, align 4, !tbaa !5
  %144 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %34, i32 noundef 7) #6
  br label %.loopexit

145:                                              ; preds = %141
  %146 = icmp eq i32 %117, 0
  br i1 %146, label %149, label %147

147:                                              ; preds = %145
  %148 = icmp eq i32 %126, 0
  br i1 %148, label %.thread481, label %.lr.ph

.thread481:                                       ; preds = %147
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  br label %.loopexit

149:                                              ; preds = %145
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  %.not414438 = icmp eq i32 %126, 0
  br i1 %.not414438, label %.loopexit, label %.lr.ph441

.lr.ph441:                                        ; preds = %149
  %150 = load i32, ptr %19, align 4, !tbaa !5
  %151 = icmp sgt i32 %150, 0
  %152 = shl i32 %46, 1
  %153 = icmp ugt i32 %150, 2
  %154 = mul nsw i32 %46, 3
  br i1 %151, label %.lr.ph441.split.us, label %.thread420.preheader

.thread420.preheader:                             ; preds = %.lr.ph441
  %155 = zext nneg i32 %126 to i64
  %156 = shl nuw nsw i64 %155, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 %156, i1 false), !tbaa !9
  br label %.loopexit

.lr.ph441.split.us:                               ; preds = %.lr.ph441
  %.not425 = icmp eq i32 %150, 1
  %157 = sext i32 %46 to i64
  br i1 %.not425, label %.thread420.us.us.preheader, label %.lr.ph441.split.us.split.preheader

.lr.ph441.split.us.split.preheader:               ; preds = %.lr.ph441.split.us
  %158 = sext i32 %152 to i64
  %159 = sext i32 %154 to i64
  %160 = add nuw i32 %126, 1
  %wide.trip.count472 = zext i32 %160 to i64
  br label %.lr.ph441.split.us.split

.thread420.us.us.preheader:                       ; preds = %.lr.ph441.split.us
  %161 = add nuw i32 %126, 1
  %wide.trip.count477 = zext i32 %161 to i64
  %162 = zext nneg i32 %126 to i64
  %min.iters.check535 = icmp ult i32 %126, 18
  br i1 %min.iters.check535, label %.thread420.us.us.preheader546, label %vector.memcheck527

vector.memcheck527:                               ; preds = %.thread420.us.us.preheader
  %163 = shl nsw i64 %157, 3
  %164 = add i64 %163, %30
  %165 = shl nsw i64 %47, 3
  %166 = add i64 %164, %165
  %167 = add i64 %166, 8
  %168 = sub i64 %167, %29
  %diff.check528 = icmp ult i64 %168, 32
  %169 = add i64 %163, %28
  %170 = add i64 %169, %165
  %171 = add i64 %170, 8
  %172 = sub i64 %171, %29
  %diff.check529 = icmp ult i64 %172, 32
  %conflict.rdx530 = or i1 %diff.check528, %diff.check529
  %173 = sub i64 %28, %30
  %diff.check531 = icmp ult i64 %173, 32
  %conflict.rdx532 = or i1 %conflict.rdx530, %diff.check531
  br i1 %conflict.rdx532, label %.thread420.us.us.preheader546, label %vector.ph536

vector.ph536:                                     ; preds = %vector.memcheck527
  %n.vec538 = and i64 %162, 2147483644
  %ind.end539 = or disjoint i64 %n.vec538, 1
  br label %vector.body541

vector.body541:                                   ; preds = %vector.body541, %vector.ph536
  %index542 = phi i64 [ 0, %vector.ph536 ], [ %index.next544, %vector.body541 ]
  %offset.idx543 = or disjoint i64 %index542, 1
  %174 = getelementptr double, ptr %18, i64 %index542
  %175 = getelementptr inbounds i8, ptr %174, i64 16
  store <2 x double> zeroinitializer, ptr %174, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %175, align 8, !tbaa !9
  %176 = add nsw i64 %offset.idx543, %157
  %177 = getelementptr inbounds double, ptr %49, i64 %176
  %178 = getelementptr inbounds i8, ptr %177, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %177, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %178, align 8, !tbaa !9
  %179 = getelementptr inbounds double, ptr %48, i64 %176
  %180 = getelementptr inbounds i8, ptr %179, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %179, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %180, align 8, !tbaa !9
  %index.next544 = add nuw i64 %index542, 4
  %181 = icmp eq i64 %index.next544, %n.vec538
  br i1 %181, label %middle.block533, label %vector.body541, !llvm.loop !11

middle.block533:                                  ; preds = %vector.body541
  %cmp.n545 = icmp eq i64 %n.vec538, %162
  br i1 %cmp.n545, label %.loopexit, label %.thread420.us.us.preheader546

.thread420.us.us.preheader546:                    ; preds = %middle.block533, %vector.memcheck527, %.thread420.us.us.preheader
  %indvars.iv474.ph = phi i64 [ 1, %vector.memcheck527 ], [ 1, %.thread420.us.us.preheader ], [ %ind.end539, %middle.block533 ]
  %182 = zext nneg i32 %126 to i64
  %183 = and i32 %126, 1
  %lcmp.mod554.not = icmp eq i32 %183, 0
  br i1 %lcmp.mod554.not, label %.thread420.us.us.prol.loopexit, label %.thread420.us.us.prol

.thread420.us.us.prol:                            ; preds = %.thread420.us.us.preheader546
  %184 = getelementptr inbounds double, ptr %53, i64 %indvars.iv474.ph
  store double 0.000000e+00, ptr %184, align 8, !tbaa !9
  %185 = add nsw i64 %indvars.iv474.ph, %157
  %186 = getelementptr inbounds double, ptr %49, i64 %185
  store double 1.000000e+00, ptr %186, align 8, !tbaa !9
  %187 = getelementptr inbounds double, ptr %48, i64 %185
  store double 1.000000e+00, ptr %187, align 8, !tbaa !9
  %indvars.iv.next475.prol = add nuw nsw i64 %indvars.iv474.ph, 1
  br label %.thread420.us.us.prol.loopexit

.thread420.us.us.prol.loopexit:                   ; preds = %.thread420.us.us.prol, %.thread420.us.us.preheader546
  %indvars.iv474.unr = phi i64 [ %indvars.iv474.ph, %.thread420.us.us.preheader546 ], [ %indvars.iv.next475.prol, %.thread420.us.us.prol ]
  %188 = icmp eq i64 %indvars.iv474.ph, %182
  br i1 %188, label %.loopexit, label %.thread420.us.us

.thread420.us.us:                                 ; preds = %.thread420.us.us.prol.loopexit, %.thread420.us.us
  %indvars.iv474 = phi i64 [ %indvars.iv.next475.1, %.thread420.us.us ], [ %indvars.iv474.unr, %.thread420.us.us.prol.loopexit ]
  %189 = getelementptr inbounds double, ptr %53, i64 %indvars.iv474
  store double 0.000000e+00, ptr %189, align 8, !tbaa !9
  %190 = add nsw i64 %indvars.iv474, %157
  %191 = getelementptr inbounds double, ptr %49, i64 %190
  store double 1.000000e+00, ptr %191, align 8, !tbaa !9
  %192 = getelementptr inbounds double, ptr %48, i64 %190
  store double 1.000000e+00, ptr %192, align 8, !tbaa !9
  %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 1
  %193 = getelementptr double, ptr %18, i64 %indvars.iv474
  store double 0.000000e+00, ptr %193, align 8, !tbaa !9
  %194 = add nsw i64 %indvars.iv.next475, %157
  %195 = getelementptr inbounds double, ptr %49, i64 %194
  store double 1.000000e+00, ptr %195, align 8, !tbaa !9
  %196 = getelementptr inbounds double, ptr %48, i64 %194
  store double 1.000000e+00, ptr %196, align 8, !tbaa !9
  %indvars.iv.next475.1 = add nuw nsw i64 %indvars.iv474, 2
  %exitcond478.not.1 = icmp eq i64 %indvars.iv.next475.1, %wide.trip.count477
  br i1 %exitcond478.not.1, label %.loopexit, label %.thread420.us.us, !llvm.loop !15

.lr.ph441.split.us.split:                         ; preds = %.lr.ph441.split.us.split.preheader, %.thread420.us
  %indvars.iv469 = phi i64 [ 1, %.lr.ph441.split.us.split.preheader ], [ %indvars.iv.next470, %.thread420.us ]
  %197 = getelementptr inbounds double, ptr %53, i64 %indvars.iv469
  store double 0.000000e+00, ptr %197, align 8, !tbaa !9
  %198 = add nsw i64 %indvars.iv469, %157
  %199 = getelementptr inbounds double, ptr %49, i64 %198
  store double 1.000000e+00, ptr %199, align 8, !tbaa !9
  %200 = getelementptr inbounds double, ptr %48, i64 %198
  store double 1.000000e+00, ptr %200, align 8, !tbaa !9
  %201 = add nsw i64 %indvars.iv469, %158
  %202 = getelementptr inbounds double, ptr %49, i64 %201
  store double 0.000000e+00, ptr %202, align 8, !tbaa !9
  %203 = getelementptr inbounds double, ptr %48, i64 %201
  store double 0.000000e+00, ptr %203, align 8, !tbaa !9
  br i1 %153, label %204, label %.thread420.us

204:                                              ; preds = %.lr.ph441.split.us.split
  %205 = add nsw i64 %indvars.iv469, %159
  %206 = getelementptr inbounds double, ptr %49, i64 %205
  store double 1.000000e+00, ptr %206, align 8, !tbaa !9
  %207 = getelementptr inbounds double, ptr %48, i64 %205
  store double 1.000000e+00, ptr %207, align 8, !tbaa !9
  br label %.thread420.us

.thread420.us:                                    ; preds = %204, %.lr.ph441.split.us.split
  %indvars.iv.next470 = add nuw nsw i64 %indvars.iv469, 1
  %exitcond473.not = icmp eq i64 %indvars.iv.next470, %wide.trip.count472
  br i1 %exitcond473.not, label %.loopexit, label %.lr.ph441.split.us.split, !llvm.loop !16

.lr.ph:                                           ; preds = %147
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  %208 = load i32, ptr %19, align 4, !tbaa !5
  %209 = icmp sgt i32 %208, 0
  %210 = shl i32 %46, 1
  %211 = icmp ugt i32 %208, 2
  %212 = mul nsw i32 %46, 3
  br i1 %209, label %.lr.ph.split.us, label %.thread423.preheader

.thread423.preheader:                             ; preds = %.lr.ph
  %213 = add nuw i32 %126, 1
  %wide.trip.count = zext i32 %213 to i64
  %214 = zext nneg i32 %126 to i64
  %min.iters.check = icmp ult i32 %126, 4
  br i1 %min.iters.check, label %.thread423.preheader551, label %vector.ph

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

vector.ph:                                        ; preds = %.thread423.preheader
  %n.vec = and i64 %214, 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 ]
  %215 = getelementptr double, ptr %18, i64 %index
  %216 = getelementptr inbounds i8, ptr %215, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %215, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %216, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %217 = icmp eq i64 %index.next, %n.vec
  br i1 %217, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %214
  br i1 %cmp.n, label %._crit_edge, label %.thread423.preheader551

.lr.ph.split.us:                                  ; preds = %.lr.ph
  %.not424 = icmp eq i32 %208, 1
  %218 = sext i32 %46 to i64
  br i1 %.not424, label %.thread423.us.us.preheader, label %.lr.ph.split.us.split.preheader

.lr.ph.split.us.split.preheader:                  ; preds = %.lr.ph.split.us
  %219 = sext i32 %210 to i64
  %220 = sext i32 %212 to i64
  %221 = add nuw i32 %126, 1
  %wide.trip.count451 = zext i32 %221 to i64
  br label %.lr.ph.split.us.split

.thread423.us.us.preheader:                       ; preds = %.lr.ph.split.us
  %222 = add nuw i32 %126, 1
  %wide.trip.count456 = zext i32 %222 to i64
  %223 = zext nneg i32 %126 to i64
  %min.iters.check516 = icmp ult i32 %126, 18
  br i1 %min.iters.check516, label %.thread423.us.us.preheader549, label %vector.memcheck

vector.memcheck:                                  ; preds = %.thread423.us.us.preheader
  %224 = shl nsw i64 %218, 3
  %225 = add i64 %224, %33
  %226 = shl nsw i64 %47, 3
  %227 = add i64 %225, %226
  %228 = add i64 %227, 8
  %229 = sub i64 %228, %32
  %diff.check = icmp ult i64 %229, 32
  %230 = add i64 %224, %31
  %231 = add i64 %230, %226
  %232 = add i64 %231, 8
  %233 = sub i64 %232, %32
  %diff.check511 = icmp ult i64 %233, 32
  %conflict.rdx = or i1 %diff.check, %diff.check511
  %234 = sub i64 %31, %33
  %diff.check512 = icmp ult i64 %234, 32
  %conflict.rdx513 = or i1 %conflict.rdx, %diff.check512
  br i1 %conflict.rdx513, label %.thread423.us.us.preheader549, label %vector.ph517

vector.ph517:                                     ; preds = %vector.memcheck
  %n.vec519 = and i64 %223, 2147483644
  %ind.end520 = or disjoint i64 %n.vec519, 1
  br label %vector.body522

vector.body522:                                   ; preds = %vector.body522, %vector.ph517
  %index523 = phi i64 [ 0, %vector.ph517 ], [ %index.next525, %vector.body522 ]
  %offset.idx524 = or disjoint i64 %index523, 1
  %235 = getelementptr double, ptr %18, i64 %index523
  %236 = getelementptr inbounds i8, ptr %235, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %235, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %236, align 8, !tbaa !9
  %237 = add nsw i64 %offset.idx524, %218
  %238 = getelementptr inbounds double, ptr %49, i64 %237
  %239 = getelementptr inbounds i8, ptr %238, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %238, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %239, align 8, !tbaa !9
  %240 = getelementptr inbounds double, ptr %48, i64 %237
  %241 = getelementptr inbounds i8, ptr %240, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %240, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %241, align 8, !tbaa !9
  %index.next525 = add nuw i64 %index523, 4
  %242 = icmp eq i64 %index.next525, %n.vec519
  br i1 %242, label %middle.block514, label %vector.body522, !llvm.loop !18

middle.block514:                                  ; preds = %vector.body522
  %cmp.n526 = icmp eq i64 %n.vec519, %223
  br i1 %cmp.n526, label %._crit_edge, label %.thread423.us.us.preheader549

.thread423.us.us.preheader549:                    ; preds = %middle.block514, %vector.memcheck, %.thread423.us.us.preheader
  %indvars.iv453.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.thread423.us.us.preheader ], [ %ind.end520, %middle.block514 ]
  %243 = zext nneg i32 %126 to i64
  %244 = and i32 %126, 1
  %lcmp.mod.not = icmp eq i32 %244, 0
  br i1 %lcmp.mod.not, label %.thread423.us.us.prol.loopexit, label %.thread423.us.us.prol

.thread423.us.us.prol:                            ; preds = %.thread423.us.us.preheader549
  %245 = getelementptr inbounds double, ptr %53, i64 %indvars.iv453.ph
  store double 1.000000e+00, ptr %245, align 8, !tbaa !9
  %246 = add nsw i64 %indvars.iv453.ph, %218
  %247 = getelementptr inbounds double, ptr %49, i64 %246
  store double 1.000000e+00, ptr %247, align 8, !tbaa !9
  %248 = getelementptr inbounds double, ptr %48, i64 %246
  store double 1.000000e+00, ptr %248, align 8, !tbaa !9
  %indvars.iv.next454.prol = add nuw nsw i64 %indvars.iv453.ph, 1
  br label %.thread423.us.us.prol.loopexit

.thread423.us.us.prol.loopexit:                   ; preds = %.thread423.us.us.prol, %.thread423.us.us.preheader549
  %indvars.iv453.unr = phi i64 [ %indvars.iv453.ph, %.thread423.us.us.preheader549 ], [ %indvars.iv.next454.prol, %.thread423.us.us.prol ]
  %249 = icmp eq i64 %indvars.iv453.ph, %243
  br i1 %249, label %._crit_edge, label %.thread423.us.us

.thread423.us.us:                                 ; preds = %.thread423.us.us.prol.loopexit, %.thread423.us.us
  %indvars.iv453 = phi i64 [ %indvars.iv.next454.1, %.thread423.us.us ], [ %indvars.iv453.unr, %.thread423.us.us.prol.loopexit ]
  %250 = getelementptr inbounds double, ptr %53, i64 %indvars.iv453
  store double 1.000000e+00, ptr %250, align 8, !tbaa !9
  %251 = add nsw i64 %indvars.iv453, %218
  %252 = getelementptr inbounds double, ptr %49, i64 %251
  store double 1.000000e+00, ptr %252, align 8, !tbaa !9
  %253 = getelementptr inbounds double, ptr %48, i64 %251
  store double 1.000000e+00, ptr %253, align 8, !tbaa !9
  %indvars.iv.next454 = add nuw nsw i64 %indvars.iv453, 1
  %254 = getelementptr double, ptr %18, i64 %indvars.iv453
  store double 1.000000e+00, ptr %254, align 8, !tbaa !9
  %255 = add nsw i64 %indvars.iv.next454, %218
  %256 = getelementptr inbounds double, ptr %49, i64 %255
  store double 1.000000e+00, ptr %256, align 8, !tbaa !9
  %257 = getelementptr inbounds double, ptr %48, i64 %255
  store double 1.000000e+00, ptr %257, align 8, !tbaa !9
  %indvars.iv.next454.1 = add nuw nsw i64 %indvars.iv453, 2
  %exitcond457.not.1 = icmp eq i64 %indvars.iv.next454.1, %wide.trip.count456
  br i1 %exitcond457.not.1, label %._crit_edge, label %.thread423.us.us, !llvm.loop !19

.lr.ph.split.us.split:                            ; preds = %.lr.ph.split.us.split.preheader, %.thread423.us
  %indvars.iv448 = phi i64 [ 1, %.lr.ph.split.us.split.preheader ], [ %indvars.iv.next449, %.thread423.us ]
  %258 = getelementptr inbounds double, ptr %53, i64 %indvars.iv448
  store double 1.000000e+00, ptr %258, align 8, !tbaa !9
  %259 = add nsw i64 %indvars.iv448, %218
  %260 = getelementptr inbounds double, ptr %49, i64 %259
  store double 1.000000e+00, ptr %260, align 8, !tbaa !9
  %261 = getelementptr inbounds double, ptr %48, i64 %259
  store double 1.000000e+00, ptr %261, align 8, !tbaa !9
  %262 = add nsw i64 %indvars.iv448, %219
  %263 = getelementptr inbounds double, ptr %49, i64 %262
  store double 1.000000e+00, ptr %263, align 8, !tbaa !9
  %264 = getelementptr inbounds double, ptr %48, i64 %262
  store double 1.000000e+00, ptr %264, align 8, !tbaa !9
  br i1 %211, label %265, label %.thread423.us

265:                                              ; preds = %.lr.ph.split.us.split
  %266 = add nsw i64 %indvars.iv448, %220
  %267 = getelementptr inbounds double, ptr %49, i64 %266
  store double 0.000000e+00, ptr %267, align 8, !tbaa !9
  %268 = getelementptr inbounds double, ptr %48, i64 %266
  store double 0.000000e+00, ptr %268, align 8, !tbaa !9
  br label %.thread423.us

.thread423.us:                                    ; preds = %265, %.lr.ph.split.us.split
  %indvars.iv.next449 = add nuw nsw i64 %indvars.iv448, 1
  %exitcond452.not = icmp eq i64 %indvars.iv.next449, %wide.trip.count451
  br i1 %exitcond452.not, label %._crit_edge, label %.lr.ph.split.us.split, !llvm.loop !20

.thread423:                                       ; preds = %.thread423.preheader551, %.thread423
  %indvars.iv = phi i64 [ %indvars.iv.next, %.thread423 ], [ %indvars.iv.ph, %.thread423.preheader551 ]
  %269 = getelementptr inbounds double, ptr %53, i64 %indvars.iv
  store double 1.000000e+00, ptr %269, 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 %.thread423, !llvm.loop !21

._crit_edge:                                      ; preds = %.thread423, %.thread423.us, %.thread423.us.us.prol.loopexit, %.thread423.us.us, %middle.block, %middle.block514
  %270 = icmp ne i32 %97, 0
  %. = select i1 %270, i8 73, i8 49
  store i8 %., ptr %36, align 1, !tbaa !22
  %271 = call double @dlangb_(ptr noundef nonnull %36, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %24) #6
  store double %271, ptr %38, align 8, !tbaa !9
  call void @dgbcon_(ptr noundef nonnull %36, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %38, ptr noundef nonnull %17, ptr noundef %24, ptr noundef %25, ptr noundef nonnull %26) #6
  br i1 %88, label %287, label %272

272:                                              ; preds = %._crit_edge
  %273 = load i32, ptr %26, align 4, !tbaa !5
  %274 = icmp eq i32 %273, 0
  br i1 %274, label %275, label %287

275:                                              ; preds = %272
  %276 = call i32 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i32 %276, ptr %39, align 4, !tbaa !5
  %277 = load i32, ptr %2, align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %279 = getelementptr double, ptr %54, i64 %278
  %280 = getelementptr i8, ptr %279, i64 8
  %281 = shl i32 %277, 1
  %282 = or disjoint i32 %281, 1
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %54, i64 %283
  br i1 %270, label %285, label %286

285:                                              ; preds = %275
  call void @dla_gbrfsx_extended_(ptr noundef nonnull %39, ptr noundef nonnull %42, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %40, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %44, ptr noundef %20, ptr noundef %21, ptr noundef %280, ptr noundef %24, ptr noundef nonnull %284, ptr noundef %24, ptr noundef nonnull %17, ptr noundef nonnull %43, ptr noundef nonnull %45, ptr noundef nonnull %35, ptr noundef nonnull %37, ptr noundef nonnull %26) #6
  br label %287

286:                                              ; preds = %275
  call void @dla_gbrfsx_extended_(ptr noundef nonnull %39, ptr noundef nonnull %42, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %41, ptr noundef %11, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %44, ptr noundef %20, ptr noundef %21, ptr noundef %280, ptr noundef %24, ptr noundef nonnull %284, ptr noundef %24, ptr noundef nonnull %17, ptr noundef nonnull %43, ptr noundef nonnull %45, ptr noundef nonnull %35, ptr noundef nonnull %37, ptr noundef nonnull %26) #6
  br label %287

287:                                              ; preds = %285, %286, %272, %._crit_edge
  %288 = load i32, ptr %2, align 4, !tbaa !5
  %289 = sitofp i32 %288 to double
  %290 = call double @sqrt(double noundef %289) #6
  %291 = fcmp ole double %290, 1.000000e+01
  %292 = select i1 %291, double 1.000000e+01, double %290
  %293 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %294 = fmul double %293, %292
  %295 = load i32, ptr %19, align 4, !tbaa !5
  %296 = icmp sgt i32 %295, 0
  %297 = load i32, ptr %44, align 4
  %298 = icmp sgt i32 %297, 0
  %or.cond3 = select i1 %296, i1 %298, i1 false
  br i1 %or.cond3, label %299, label %.loopexit427

299:                                              ; preds = %287
  %300 = load i32, ptr %40, align 4, !tbaa !5
  %301 = icmp ne i32 %300, 0
  %or.cond5 = and i1 %270, %301
  br i1 %or.cond5, label %302, label %304

302:                                              ; preds = %299
  %303 = call double @dla_gbrcond_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull @c_n1, ptr noundef %12, ptr noundef nonnull %26, ptr noundef %24, ptr noundef %25) #6
  br label %311

304:                                              ; preds = %299
  %305 = load i32, ptr %41, align 4, !tbaa !5
  %306 = icmp eq i32 %305, 0
  %or.cond7 = or i1 %270, %306
  br i1 %or.cond7, label %309, label %307

307:                                              ; preds = %304
  %308 = call double @dla_gbrcond_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull @c_n1, ptr noundef %11, ptr noundef nonnull %26, ptr noundef %24, ptr noundef %25) #6
  br label %311

309:                                              ; preds = %304
  %310 = call double @dla_gbrcond_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull @c__0, ptr noundef %11, ptr noundef nonnull %26, ptr noundef %24, ptr noundef %25) #6
  br label %311

311:                                              ; preds = %307, %309, %302
  %.0 = phi double [ %303, %302 ], [ %310, %309 ], [ %308, %307 ]
  %312 = load i32, ptr %5, align 4, !tbaa !5
  %.not411430 = icmp slt i32 %312, 1
  %.pre480 = load i32, ptr %19, align 4, !tbaa !5
  br i1 %.not411430, label %.loopexit427, label %.lr.ph433

.lr.ph433:                                        ; preds = %311
  %313 = shl i32 %46, 1
  %314 = fcmp olt double %.0, %68
  %315 = mul nsw i32 %46, 3
  %316 = sext i32 %313 to i64
  %317 = sext i32 %46 to i64
  %318 = sext i32 %315 to i64
  %319 = add nuw i32 %312, 1
  %wide.trip.count461 = zext i32 %319 to i64
  %invariant.gep487 = getelementptr double, ptr %49, i64 %316
  %invariant.gep489 = getelementptr double, ptr %49, i64 %316
  %invariant.gep491 = getelementptr double, ptr %49, i64 %317
  %invariant.gep493 = getelementptr double, ptr %49, i64 %316
  %invariant.gep495 = getelementptr double, ptr %49, i64 %317
  %invariant.gep497 = getelementptr double, ptr %49, i64 %318
  br label %320

320:                                              ; preds = %.lr.ph433, %342
  %321 = phi i32 [ %.pre480, %.lr.ph433 ], [ %339, %342 ]
  %indvars.iv458 = phi i64 [ 1, %.lr.ph433 ], [ %indvars.iv.next459, %342 ]
  %322 = icmp sgt i32 %321, 1
  br i1 %322, label %323, label %327

323:                                              ; preds = %320
  %gep488 = getelementptr double, ptr %invariant.gep487, i64 %indvars.iv458
  %324 = load double, ptr %gep488, align 8, !tbaa !9
  %325 = fcmp ogt double %324, 1.000000e+00
  br i1 %325, label %326, label %327

326:                                              ; preds = %323
  store double 1.000000e+00, ptr %gep488, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %326, %323, %320
  br i1 %314, label %328, label %334

328:                                              ; preds = %327
  %gep494 = getelementptr double, ptr %invariant.gep493, i64 %indvars.iv458
  store double 1.000000e+00, ptr %gep494, align 8, !tbaa !9
  %gep496 = getelementptr double, ptr %invariant.gep495, i64 %indvars.iv458
  store double 0.000000e+00, ptr %gep496, align 8, !tbaa !9
  %329 = load i32, ptr %26, align 4, !tbaa !5
  %330 = load i32, ptr %2, align 4, !tbaa !5
  %.not413 = icmp sgt i32 %329, %330
  br i1 %.not413, label %338, label %331

331:                                              ; preds = %328
  %332 = trunc nuw nsw i64 %indvars.iv458 to i32
  %333 = add nsw i32 %330, %332
  store i32 %333, ptr %26, align 4, !tbaa !5
  %.pre479 = load i32, ptr %19, align 4, !tbaa !5
  br label %338

334:                                              ; preds = %327
  %gep490 = getelementptr double, ptr %invariant.gep489, i64 %indvars.iv458
  %335 = load double, ptr %gep490, align 8, !tbaa !9
  %336 = fcmp olt double %335, %294
  br i1 %336, label %337, label %338

337:                                              ; preds = %334
  store double %294, ptr %gep490, align 8, !tbaa !9
  %gep492 = getelementptr double, ptr %invariant.gep491, i64 %indvars.iv458
  store double 1.000000e+00, ptr %gep492, align 8, !tbaa !9
  br label %338

338:                                              ; preds = %334, %337, %328, %331
  %339 = phi i32 [ %321, %334 ], [ %321, %337 ], [ %321, %328 ], [ %.pre479, %331 ]
  %340 = icmp sgt i32 %339, 2
  br i1 %340, label %341, label %342

341:                                              ; preds = %338
  %gep498 = getelementptr double, ptr %invariant.gep497, i64 %indvars.iv458
  store double %.0, ptr %gep498, align 8, !tbaa !9
  br label %342

342:                                              ; preds = %338, %341
  %indvars.iv.next459 = add nuw nsw i64 %indvars.iv458, 1
  %exitcond462.not = icmp eq i64 %indvars.iv.next459, %wide.trip.count461
  br i1 %exitcond462.not, label %.loopexit427, label %320, !llvm.loop !23

.loopexit427:                                     ; preds = %342, %311, %287
  %343 = phi i32 [ %.pre480, %311 ], [ %295, %287 ], [ %339, %342 ]
  %344 = icmp sgt i32 %343, 0
  %345 = load i32, ptr %44, align 4
  %346 = icmp sgt i32 %345, 1
  %or.cond9 = select i1 %344, i1 %346, i1 false
  br i1 %or.cond9, label %347, label %.loopexit

347:                                              ; preds = %.loopexit427
  %348 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %349 = call double @sqrt(double noundef %348) #6
  %350 = load i32, ptr %5, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %52, i64 8
  %.not412434 = icmp slt i32 %350, 1
  br i1 %.not412434, label %.loopexit, label %.lr.ph437

.lr.ph437:                                        ; preds = %347
  %351 = shl i32 %46, 1
  %352 = getelementptr inbounds i8, ptr %23, i64 16
  %353 = mul nsw i32 %46, 3
  %354 = sext i32 %351 to i64
  %355 = sext i32 %50 to i64
  %356 = sext i32 %46 to i64
  %357 = sext i32 %353 to i64
  %invariant.gep499 = getelementptr double, ptr %48, i64 %354
  %invariant.gep501 = getelementptr double, ptr %48, i64 %356
  %invariant.gep503 = getelementptr double, ptr %48, i64 %356
  %invariant.gep505 = getelementptr double, ptr %48, i64 %357
  %358 = zext nneg i32 %350 to i64
  br label %359

359:                                              ; preds = %.lr.ph437, %392
  %indvars.iv463 = phi i64 [ 1, %.lr.ph437 ], [ %indvars.iv.next464, %392 ]
  %gep500 = getelementptr double, ptr %invariant.gep499, i64 %indvars.iv463
  %360 = load double, ptr %gep500, align 8, !tbaa !9
  %361 = fcmp olt double %360, %349
  br i1 %361, label %362, label %365

362:                                              ; preds = %359
  %363 = mul nsw i64 %indvars.iv463, %355
  %gep = getelementptr double, ptr %invariant.gep, i64 %363
  %364 = call double @dla_gbrcond_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull %26, ptr noundef %24, ptr noundef %25) #6
  br label %365

365:                                              ; preds = %359, %362
  %.1 = phi double [ %364, %362 ], [ 0.000000e+00, %359 ]
  %366 = load i32, ptr %19, align 4, !tbaa !5
  %367 = icmp sgt i32 %366, 1
  br i1 %367, label %368, label %372

368:                                              ; preds = %365
  %369 = load double, ptr %gep500, align 8, !tbaa !9
  %370 = fcmp ogt double %369, 1.000000e+00
  br i1 %370, label %371, label %372

371:                                              ; preds = %368
  store double 1.000000e+00, ptr %gep500, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %371, %368, %365
  %373 = fcmp olt double %.1, %68
  br i1 %373, label %374, label %384

374:                                              ; preds = %372
  store double 1.000000e+00, ptr %gep500, align 8, !tbaa !9
  %gep504 = getelementptr double, ptr %invariant.gep503, i64 %indvars.iv463
  store double 0.000000e+00, ptr %gep504, align 8, !tbaa !9
  %375 = load double, ptr %352, align 8, !tbaa !9
  %376 = fcmp oeq double %375, 1.000000e+00
  br i1 %376, label %377, label %388

377:                                              ; preds = %374
  %378 = load i32, ptr %26, align 4, !tbaa !5
  %379 = load i32, ptr %2, align 4, !tbaa !5
  %380 = trunc nuw nsw i64 %indvars.iv463 to i32
  %381 = add nsw i32 %379, %380
  %382 = icmp slt i32 %378, %381
  br i1 %382, label %383, label %388

383:                                              ; preds = %377
  store i32 %381, ptr %26, align 4, !tbaa !5
  %.pre = load i32, ptr %19, align 4, !tbaa !5
  br label %388

384:                                              ; preds = %372
  %385 = load double, ptr %gep500, align 8, !tbaa !9
  %386 = fcmp olt double %385, %294
  br i1 %386, label %387, label %388

387:                                              ; preds = %384
  store double %294, ptr %gep500, align 8, !tbaa !9
  %gep502 = getelementptr double, ptr %invariant.gep501, i64 %indvars.iv463
  store double 1.000000e+00, ptr %gep502, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %384, %387, %374, %377, %383
  %389 = phi i32 [ %366, %384 ], [ %366, %387 ], [ %366, %374 ], [ %366, %377 ], [ %.pre, %383 ]
  %390 = icmp sgt i32 %389, 2
  br i1 %390, label %391, label %392

391:                                              ; preds = %388
  %gep506 = getelementptr double, ptr %invariant.gep505, i64 %indvars.iv463
  store double %.1, ptr %gep506, align 8, !tbaa !9
  br label %392

392:                                              ; preds = %388, %391
  %indvars.iv.next464 = add nuw nsw i64 %indvars.iv463, 1
  %.not412.not = icmp ult i64 %indvars.iv463, %358
  br i1 %.not412.not, label %359, label %.loopexit, !llvm.loop !24

.loopexit:                                        ; preds = %392, %.thread420.us, %.thread420.us.us.prol.loopexit, %.thread420.us.us, %middle.block533, %.thread481, %.thread420.preheader, %347, %149, %.loopexit427, %.thread416
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #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 i32 @ilatrans_(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @ilaprec_(ptr noundef) local_unnamed_addr #2

declare void @dla_gbrfsx_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, 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_gbrcond_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.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