; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dstemr)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b18 = external hidden global double, align 8

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

138:                                              ; preds = %21
  %139 = load ptr, ptr %42, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp eq i64 %140, -1
  br label %142

142:                                              ; preds = %138, %21
  %143 = phi i1 [ true, %21 ], [ %141, %138 ]
  %144 = zext i1 %143 to i32
  %145 = sext i32 %144 to i64
  store i64 %145, ptr %104, align 8, !tbaa !9
  %146 = load ptr, ptr %36, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = icmp eq i64 %147, -1
  %149 = zext i1 %148 to i32
  %150 = sext i32 %149 to i64
  store i64 %150, ptr %105, align 8, !tbaa !9
  %151 = load i64, ptr %82, align 8, !tbaa !9
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %153, label %160

153:                                              ; preds = %142
  %154 = load ptr, ptr %25, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = mul nsw i64 %155, 18
  store i64 %156, ptr %81, align 8, !tbaa !9
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = mul nsw i64 %158, 10
  store i64 %159, ptr %99, align 8, !tbaa !9
  br label %167

160:                                              ; preds = %142
  %161 = load ptr, ptr %25, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = mul nsw i64 %162, 12
  store i64 %163, ptr %81, align 8, !tbaa !9
  %164 = load ptr, ptr %25, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = shl i64 %165, 3
  store i64 %166, ptr %99, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %160, %153
  store double 0.000000e+00, ptr %58, align 8, !tbaa !11
  store double 0.000000e+00, ptr %59, align 8, !tbaa !11
  store i64 0, ptr %60, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  %168 = load i64, ptr %87, align 8, !tbaa !9
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %170, label %175

170:                                              ; preds = %167
  %171 = load ptr, ptr %28, align 8, !tbaa !5
  %172 = load double, ptr %171, align 8, !tbaa !11
  store double %172, ptr %58, align 8, !tbaa !11
  %173 = load ptr, ptr %29, align 8, !tbaa !5
  %174 = load double, ptr %173, align 8, !tbaa !11
  store double %174, ptr %59, align 8, !tbaa !11
  br label %184

175:                                              ; preds = %167
  %176 = load i64, ptr %85, align 8, !tbaa !9
  %177 = icmp ne i64 %176, 0
  br i1 %177, label %178, label %183

178:                                              ; preds = %175
  %179 = load ptr, ptr %30, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  store i64 %180, ptr %60, align 8, !tbaa !9
  %181 = load ptr, ptr %31, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  store i64 %182, ptr %61, align 8, !tbaa !9
  br label %183

183:                                              ; preds = %178, %175
  br label %184

184:                                              ; preds = %183, %170
  %185 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %185, align 8, !tbaa !9
  %186 = load i64, ptr %82, align 8, !tbaa !9
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %194, label %188

188:                                              ; preds = %184
  %189 = load ptr, ptr %23, align 8, !tbaa !5
  %190 = call i64 @lsame_(ptr noundef %189, ptr noundef @.str.3)
  %191 = icmp ne i64 %190, 0
  br i1 %191, label %194, label %192

192:                                              ; preds = %188
  %193 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -1, ptr %193, align 8, !tbaa !9
  br label %294

194:                                              ; preds = %188, %184
  %195 = load i64, ptr %83, align 8, !tbaa !9
  %196 = icmp ne i64 %195, 0
  br i1 %196, label %205, label %197

197:                                              ; preds = %194
  %198 = load i64, ptr %87, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %205, label %200

200:                                              ; preds = %197
  %201 = load i64, ptr %85, align 8, !tbaa !9
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %205, label %203

203:                                              ; preds = %200
  %204 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -2, ptr %204, align 8, !tbaa !9
  br label %293

205:                                              ; preds = %200, %197, %194
  %206 = load ptr, ptr %25, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp slt i64 %207, 0
  br i1 %208, label %209, label %211

209:                                              ; preds = %205
  %210 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -3, ptr %210, align 8, !tbaa !9
  br label %292

211:                                              ; preds = %205
  %212 = load i64, ptr %87, align 8, !tbaa !9
  %213 = icmp ne i64 %212, 0
  br i1 %213, label %214, label %224

214:                                              ; preds = %211
  %215 = load ptr, ptr %25, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = icmp sgt i64 %216, 0
  br i1 %217, label %218, label %224

218:                                              ; preds = %214
  %219 = load double, ptr %59, align 8, !tbaa !11
  %220 = load double, ptr %58, align 8, !tbaa !11
  %221 = fcmp ole double %219, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %218
  %223 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -7, ptr %223, align 8, !tbaa !9
  br label %291

224:                                              ; preds = %218, %214, %211
  %225 = load i64, ptr %85, align 8, !tbaa !9
  %226 = icmp ne i64 %225, 0
  br i1 %226, label %227, label %237

227:                                              ; preds = %224
  %228 = load i64, ptr %60, align 8, !tbaa !9
  %229 = icmp slt i64 %228, 1
  br i1 %229, label %235, label %230

230:                                              ; preds = %227
  %231 = load i64, ptr %60, align 8, !tbaa !9
  %232 = load ptr, ptr %25, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = icmp sgt i64 %231, %233
  br i1 %234, label %235, label %237

235:                                              ; preds = %230, %227
  %236 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -8, ptr %236, align 8, !tbaa !9
  br label %290

237:                                              ; preds = %230, %224
  %238 = load i64, ptr %85, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %240, label %251

240:                                              ; preds = %237
  %241 = load i64, ptr %61, align 8, !tbaa !9
  %242 = load i64, ptr %60, align 8, !tbaa !9
  %243 = icmp slt i64 %241, %242
  br i1 %243, label %249, label %244

244:                                              ; preds = %240
  %245 = load i64, ptr %61, align 8, !tbaa !9
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = icmp sgt i64 %245, %247
  br i1 %248, label %249, label %251

249:                                              ; preds = %244, %240
  %250 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -9, ptr %250, align 8, !tbaa !9
  br label %289

251:                                              ; preds = %244, %237
  %252 = load ptr, ptr %35, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = icmp slt i64 %253, 1
  br i1 %254, label %264, label %255

255:                                              ; preds = %251
  %256 = load i64, ptr %82, align 8, !tbaa !9
  %257 = icmp ne i64 %256, 0
  br i1 %257, label %258, label %266

258:                                              ; preds = %255
  %259 = load ptr, ptr %35, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = load ptr, ptr %25, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = icmp slt i64 %260, %262
  br i1 %263, label %264, label %266

264:                                              ; preds = %258, %251
  %265 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -13, ptr %265, align 8, !tbaa !9
  br label %288

266:                                              ; preds = %258, %255
  %267 = load ptr, ptr %40, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = load i64, ptr %81, align 8, !tbaa !9
  %270 = icmp slt i64 %268, %269
  br i1 %270, label %271, label %276

271:                                              ; preds = %266
  %272 = load i64, ptr %104, align 8, !tbaa !9
  %273 = icmp ne i64 %272, 0
  br i1 %273, label %276, label %274

274:                                              ; preds = %271
  %275 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -17, ptr %275, align 8, !tbaa !9
  br label %287

276:                                              ; preds = %271, %266
  %277 = load ptr, ptr %42, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = load i64, ptr %99, align 8, !tbaa !9
  %280 = icmp slt i64 %278, %279
  br i1 %280, label %281, label %286

281:                                              ; preds = %276
  %282 = load i64, ptr %104, align 8, !tbaa !9
  %283 = icmp ne i64 %282, 0
  br i1 %283, label %286, label %284

284:                                              ; preds = %281
  %285 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -19, ptr %285, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %284, %281, %276
  br label %287

287:                                              ; preds = %286, %274
  br label %288

288:                                              ; preds = %287, %264
  br label %289

289:                                              ; preds = %288, %249
  br label %290

290:                                              ; preds = %289, %235
  br label %291

291:                                              ; preds = %290, %222
  br label %292

292:                                              ; preds = %291, %209
  br label %293

293:                                              ; preds = %292, %203
  br label %294

294:                                              ; preds = %293, %192
  %295 = call double @dlamch_(ptr noundef @.str.4)
  store double %295, ptr %89, align 8, !tbaa !11
  %296 = call double @dlamch_(ptr noundef @.str.5)
  store double %296, ptr %62, align 8, !tbaa !11
  %297 = load double, ptr %89, align 8, !tbaa !11
  %298 = load double, ptr %62, align 8, !tbaa !11
  %299 = fdiv double %297, %298
  store double %299, ptr %103, align 8, !tbaa !11
  %300 = load double, ptr %103, align 8, !tbaa !11
  %301 = fdiv double 1.000000e+00, %300
  store double %301, ptr %90, align 8, !tbaa !11
  %302 = load double, ptr %103, align 8, !tbaa !11
  %303 = call double @sqrt(double noundef %302) #4
  store double %303, ptr %68, align 8, !tbaa !11
  %304 = load double, ptr %90, align 8, !tbaa !11
  %305 = call double @sqrt(double noundef %304) #4
  store double %305, ptr %48, align 8, !tbaa !11
  %306 = load double, ptr %89, align 8, !tbaa !11
  %307 = call double @sqrt(double noundef %306) #4
  %308 = call double @sqrt(double noundef %307) #4
  %309 = fdiv double 1.000000e+00, %308
  store double %309, ptr %49, align 8, !tbaa !11
  %310 = load double, ptr %48, align 8, !tbaa !11
  %311 = load double, ptr %49, align 8, !tbaa !11
  %312 = fcmp ole double %310, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %294
  %314 = load double, ptr %48, align 8, !tbaa !11
  br label %317

315:                                              ; preds = %294
  %316 = load double, ptr %49, align 8, !tbaa !11
  br label %317

317:                                              ; preds = %315, %313
  %318 = phi double [ %314, %313 ], [ %316, %315 ]
  store double %318, ptr %69, align 8, !tbaa !11
  %319 = load ptr, ptr %43, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = icmp eq i64 %320, 0
  br i1 %321, label %322, label %394

322:                                              ; preds = %317
  %323 = load i64, ptr %81, align 8, !tbaa !9
  %324 = sitofp i64 %323 to double
  %325 = load ptr, ptr %39, align 8, !tbaa !5
  %326 = getelementptr inbounds double, ptr %325, i64 1
  store double %324, ptr %326, align 8, !tbaa !11
  %327 = load i64, ptr %99, align 8, !tbaa !9
  %328 = load ptr, ptr %41, align 8, !tbaa !5
  %329 = getelementptr inbounds i64, ptr %328, i64 1
  store i64 %327, ptr %329, align 8, !tbaa !9
  %330 = load i64, ptr %82, align 8, !tbaa !9
  %331 = icmp ne i64 %330, 0
  br i1 %331, label %332, label %338

332:                                              ; preds = %322
  %333 = load i64, ptr %83, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %338

335:                                              ; preds = %332
  %336 = load ptr, ptr %25, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  store i64 %337, ptr %100, align 8, !tbaa !9
  br label %368

338:                                              ; preds = %332, %322
  %339 = load i64, ptr %82, align 8, !tbaa !9
  %340 = icmp ne i64 %339, 0
  br i1 %340, label %341, label %354

341:                                              ; preds = %338
  %342 = load i64, ptr %87, align 8, !tbaa !9
  %343 = icmp ne i64 %342, 0
  br i1 %343, label %344, label %354

344:                                              ; preds = %341
  %345 = load ptr, ptr %25, align 8, !tbaa !5
  %346 = load ptr, ptr %28, align 8, !tbaa !5
  %347 = load ptr, ptr %29, align 8, !tbaa !5
  %348 = load ptr, ptr %26, align 8, !tbaa !5
  %349 = getelementptr inbounds double, ptr %348, i64 1
  %350 = load ptr, ptr %27, align 8, !tbaa !5
  %351 = getelementptr inbounds double, ptr %350, i64 1
  %352 = load ptr, ptr %43, align 8, !tbaa !5
  %353 = call i32 @dlarrc_(ptr noundef @.str.6, ptr noundef %345, ptr noundef %346, ptr noundef %347, ptr noundef %349, ptr noundef %351, ptr noundef %89, ptr noundef %100, ptr noundef %70, ptr noundef %73, ptr noundef %352)
  br label %367

354:                                              ; preds = %341, %338
  %355 = load i64, ptr %82, align 8, !tbaa !9
  %356 = icmp ne i64 %355, 0
  br i1 %356, label %357, label %365

357:                                              ; preds = %354
  %358 = load i64, ptr %85, align 8, !tbaa !9
  %359 = icmp ne i64 %358, 0
  br i1 %359, label %360, label %365

360:                                              ; preds = %357
  %361 = load i64, ptr %61, align 8, !tbaa !9
  %362 = load i64, ptr %60, align 8, !tbaa !9
  %363 = sub nsw i64 %361, %362
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %100, align 8, !tbaa !9
  br label %366

365:                                              ; preds = %357, %354
  store i64 0, ptr %100, align 8, !tbaa !9
  br label %366

366:                                              ; preds = %365, %360
  br label %367

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

368:                                              ; preds = %367, %335
  %369 = load i64, ptr %105, align 8, !tbaa !9
  %370 = icmp ne i64 %369, 0
  br i1 %370, label %371, label %382

371:                                              ; preds = %368
  %372 = load ptr, ptr %43, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = icmp eq i64 %373, 0
  br i1 %374, label %375, label %382

375:                                              ; preds = %371
  %376 = load i64, ptr %100, align 8, !tbaa !9
  %377 = sitofp i64 %376 to double
  %378 = load ptr, ptr %34, align 8, !tbaa !5
  %379 = load i64, ptr %44, align 8, !tbaa !9
  %380 = add nsw i64 %379, 1
  %381 = getelementptr inbounds double, ptr %378, i64 %380
  store double %377, ptr %381, align 8, !tbaa !11
  br label %393

382:                                              ; preds = %371, %368
  %383 = load ptr, ptr %36, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = load i64, ptr %100, align 8, !tbaa !9
  %386 = icmp slt i64 %384, %385
  br i1 %386, label %387, label %392

387:                                              ; preds = %382
  %388 = load i64, ptr %105, align 8, !tbaa !9
  %389 = icmp ne i64 %388, 0
  br i1 %389, label %392, label %390

390:                                              ; preds = %387
  %391 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -14, ptr %391, align 8, !tbaa !9
  br label %392

392:                                              ; preds = %390, %387, %382
  br label %393

393:                                              ; preds = %392, %375
  br label %394

394:                                              ; preds = %393, %317
  %395 = load ptr, ptr %43, align 8, !tbaa !5
  %396 = load i64, ptr %395, align 8, !tbaa !9
  %397 = icmp ne i64 %396, 0
  br i1 %397, label %398, label %403

398:                                              ; preds = %394
  %399 = load ptr, ptr %43, align 8, !tbaa !5
  %400 = load i64, ptr %399, align 8, !tbaa !9
  %401 = sub nsw i64 0, %400
  store i64 %401, ptr %46, align 8, !tbaa !9
  %402 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %46)
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

403:                                              ; preds = %394
  %404 = load i64, ptr %104, align 8, !tbaa !9
  %405 = icmp ne i64 %404, 0
  br i1 %405, label %409, label %406

406:                                              ; preds = %403
  %407 = load i64, ptr %105, align 8, !tbaa !9
  %408 = icmp ne i64 %407, 0
  br i1 %408, label %409, label %410

409:                                              ; preds = %406, %403
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

410:                                              ; preds = %406
  br label %411

411:                                              ; preds = %410
  %412 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %412, align 8, !tbaa !9
  %413 = load ptr, ptr %25, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = icmp eq i64 %414, 0
  br i1 %415, label %416, label %417

416:                                              ; preds = %411
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

417:                                              ; preds = %411
  %418 = load ptr, ptr %25, align 8, !tbaa !5
  %419 = load i64, ptr %418, align 8, !tbaa !9
  %420 = icmp eq i64 %419, 1
  br i1 %420, label %421, label %470

421:                                              ; preds = %417
  %422 = load i64, ptr %83, align 8, !tbaa !9
  %423 = icmp ne i64 %422, 0
  br i1 %423, label %427, label %424

424:                                              ; preds = %421
  %425 = load i64, ptr %85, align 8, !tbaa !9
  %426 = icmp ne i64 %425, 0
  br i1 %426, label %427, label %434

427:                                              ; preds = %424, %421
  %428 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 1, ptr %428, align 8, !tbaa !9
  %429 = load ptr, ptr %26, align 8, !tbaa !5
  %430 = getelementptr inbounds double, ptr %429, i64 1
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = load ptr, ptr %33, align 8, !tbaa !5
  %433 = getelementptr inbounds double, ptr %432, i64 1
  store double %431, ptr %433, align 8, !tbaa !11
  br label %454

434:                                              ; preds = %424
  %435 = load double, ptr %58, align 8, !tbaa !11
  %436 = load ptr, ptr %26, align 8, !tbaa !5
  %437 = getelementptr inbounds double, ptr %436, i64 1
  %438 = load double, ptr %437, align 8, !tbaa !11
  %439 = fcmp olt double %435, %438
  br i1 %439, label %440, label %453

440:                                              ; preds = %434
  %441 = load double, ptr %59, align 8, !tbaa !11
  %442 = load ptr, ptr %26, align 8, !tbaa !5
  %443 = getelementptr inbounds double, ptr %442, i64 1
  %444 = load double, ptr %443, align 8, !tbaa !11
  %445 = fcmp oge double %441, %444
  br i1 %445, label %446, label %453

446:                                              ; preds = %440
  %447 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 1, ptr %447, align 8, !tbaa !9
  %448 = load ptr, ptr %26, align 8, !tbaa !5
  %449 = getelementptr inbounds double, ptr %448, i64 1
  %450 = load double, ptr %449, align 8, !tbaa !11
  %451 = load ptr, ptr %33, align 8, !tbaa !5
  %452 = getelementptr inbounds double, ptr %451, i64 1
  store double %450, ptr %452, align 8, !tbaa !11
  br label %453

453:                                              ; preds = %446, %440, %434
  br label %454

454:                                              ; preds = %453, %427
  %455 = load i64, ptr %82, align 8, !tbaa !9
  %456 = icmp ne i64 %455, 0
  br i1 %456, label %457, label %469

457:                                              ; preds = %454
  %458 = load i64, ptr %105, align 8, !tbaa !9
  %459 = icmp ne i64 %458, 0
  br i1 %459, label %469, label %460

460:                                              ; preds = %457
  %461 = load ptr, ptr %34, align 8, !tbaa !5
  %462 = load i64, ptr %44, align 8, !tbaa !9
  %463 = add nsw i64 %462, 1
  %464 = getelementptr inbounds double, ptr %461, i64 %463
  store double 1.000000e+00, ptr %464, align 8, !tbaa !11
  %465 = load ptr, ptr %37, align 8, !tbaa !5
  %466 = getelementptr inbounds i64, ptr %465, i64 1
  store i64 1, ptr %466, align 8, !tbaa !9
  %467 = load ptr, ptr %37, align 8, !tbaa !5
  %468 = getelementptr inbounds i64, ptr %467, i64 2
  store i64 1, ptr %468, align 8, !tbaa !9
  br label %469

469:                                              ; preds = %460, %457, %454
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

470:                                              ; preds = %417
  %471 = load ptr, ptr %25, align 8, !tbaa !5
  %472 = load i64, ptr %471, align 8, !tbaa !9
  %473 = icmp eq i64 %472, 2
  br i1 %473, label %474, label %696

474:                                              ; preds = %470
  %475 = load i64, ptr %82, align 8, !tbaa !9
  %476 = icmp ne i64 %475, 0
  br i1 %476, label %485, label %477

477:                                              ; preds = %474
  %478 = load ptr, ptr %26, align 8, !tbaa !5
  %479 = getelementptr inbounds double, ptr %478, i64 1
  %480 = load ptr, ptr %27, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = load ptr, ptr %26, align 8, !tbaa !5
  %483 = getelementptr inbounds double, ptr %482, i64 2
  %484 = call i32 @dlae2_(ptr noundef %479, ptr noundef %481, ptr noundef %483, ptr noundef %52, ptr noundef %53)
  br label %500

485:                                              ; preds = %474
  %486 = load i64, ptr %82, align 8, !tbaa !9
  %487 = icmp ne i64 %486, 0
  br i1 %487, label %488, label %499

488:                                              ; preds = %485
  %489 = load i64, ptr %105, align 8, !tbaa !9
  %490 = icmp ne i64 %489, 0
  br i1 %490, label %499, label %491

491:                                              ; preds = %488
  %492 = load ptr, ptr %26, align 8, !tbaa !5
  %493 = getelementptr inbounds double, ptr %492, i64 1
  %494 = load ptr, ptr %27, align 8, !tbaa !5
  %495 = getelementptr inbounds double, ptr %494, i64 1
  %496 = load ptr, ptr %26, align 8, !tbaa !5
  %497 = getelementptr inbounds double, ptr %496, i64 2
  %498 = call i32 @dlaev2_(ptr noundef %493, ptr noundef %495, ptr noundef %497, ptr noundef %52, ptr noundef %53, ptr noundef %55, ptr noundef %57)
  br label %499

499:                                              ; preds = %491, %488, %485
  br label %500

500:                                              ; preds = %499, %477
  %501 = load i64, ptr %83, align 8, !tbaa !9
  %502 = icmp ne i64 %501, 0
  br i1 %502, label %520, label %503

503:                                              ; preds = %500
  %504 = load i64, ptr %87, align 8, !tbaa !9
  %505 = icmp ne i64 %504, 0
  br i1 %505, label %506, label %514

506:                                              ; preds = %503
  %507 = load double, ptr %53, align 8, !tbaa !11
  %508 = load double, ptr %58, align 8, !tbaa !11
  %509 = fcmp ogt double %507, %508
  br i1 %509, label %510, label %514

510:                                              ; preds = %506
  %511 = load double, ptr %53, align 8, !tbaa !11
  %512 = load double, ptr %59, align 8, !tbaa !11
  %513 = fcmp ole double %511, %512
  br i1 %513, label %520, label %514

514:                                              ; preds = %510, %506, %503
  %515 = load i64, ptr %85, align 8, !tbaa !9
  %516 = icmp ne i64 %515, 0
  br i1 %516, label %517, label %598

517:                                              ; preds = %514
  %518 = load i64, ptr %60, align 8, !tbaa !9
  %519 = icmp eq i64 %518, 1
  br i1 %519, label %520, label %598

520:                                              ; preds = %517, %510, %500
  %521 = load ptr, ptr %32, align 8, !tbaa !5
  %522 = load i64, ptr %521, align 8, !tbaa !9
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %521, align 8, !tbaa !9
  %524 = load double, ptr %53, align 8, !tbaa !11
  %525 = load ptr, ptr %33, align 8, !tbaa !5
  %526 = load ptr, ptr %32, align 8, !tbaa !5
  %527 = load i64, ptr %526, align 8, !tbaa !9
  %528 = getelementptr inbounds double, ptr %525, i64 %527
  store double %524, ptr %528, align 8, !tbaa !11
  %529 = load i64, ptr %82, align 8, !tbaa !9
  %530 = icmp ne i64 %529, 0
  br i1 %530, label %531, label %597

531:                                              ; preds = %520
  %532 = load i64, ptr %105, align 8, !tbaa !9
  %533 = icmp ne i64 %532, 0
  br i1 %533, label %597, label %534

534:                                              ; preds = %531
  %535 = load double, ptr %57, align 8, !tbaa !11
  %536 = fneg double %535
  %537 = load ptr, ptr %34, align 8, !tbaa !5
  %538 = load ptr, ptr %32, align 8, !tbaa !5
  %539 = load i64, ptr %538, align 8, !tbaa !9
  %540 = load i64, ptr %44, align 8, !tbaa !9
  %541 = mul nsw i64 %539, %540
  %542 = add nsw i64 %541, 1
  %543 = getelementptr inbounds double, ptr %537, i64 %542
  store double %536, ptr %543, align 8, !tbaa !11
  %544 = load double, ptr %55, align 8, !tbaa !11
  %545 = load ptr, ptr %34, align 8, !tbaa !5
  %546 = load ptr, ptr %32, align 8, !tbaa !5
  %547 = load i64, ptr %546, align 8, !tbaa !9
  %548 = load i64, ptr %44, align 8, !tbaa !9
  %549 = mul nsw i64 %547, %548
  %550 = add nsw i64 %549, 2
  %551 = getelementptr inbounds double, ptr %545, i64 %550
  store double %544, ptr %551, align 8, !tbaa !11
  %552 = load double, ptr %57, align 8, !tbaa !11
  %553 = fcmp une double %552, 0.000000e+00
  br i1 %553, label %554, label %584

554:                                              ; preds = %534
  %555 = load double, ptr %55, align 8, !tbaa !11
  %556 = fcmp une double %555, 0.000000e+00
  br i1 %556, label %557, label %570

557:                                              ; preds = %554
  %558 = load ptr, ptr %37, align 8, !tbaa !5
  %559 = load ptr, ptr %32, align 8, !tbaa !5
  %560 = load i64, ptr %559, align 8, !tbaa !9
  %561 = shl i64 %560, 1
  %562 = sub nsw i64 %561, 1
  %563 = getelementptr inbounds i64, ptr %558, i64 %562
  store i64 1, ptr %563, align 8, !tbaa !9
  %564 = load ptr, ptr %37, align 8, !tbaa !5
  %565 = load ptr, ptr %32, align 8, !tbaa !5
  %566 = load i64, ptr %565, align 8, !tbaa !9
  %567 = shl i64 %566, 1
  %568 = sub nsw i64 %567, 1
  %569 = getelementptr inbounds i64, ptr %564, i64 %568
  store i64 2, ptr %569, align 8, !tbaa !9
  br label %583

570:                                              ; preds = %554
  %571 = load ptr, ptr %37, align 8, !tbaa !5
  %572 = load ptr, ptr %32, align 8, !tbaa !5
  %573 = load i64, ptr %572, align 8, !tbaa !9
  %574 = shl i64 %573, 1
  %575 = sub nsw i64 %574, 1
  %576 = getelementptr inbounds i64, ptr %571, i64 %575
  store i64 1, ptr %576, align 8, !tbaa !9
  %577 = load ptr, ptr %37, align 8, !tbaa !5
  %578 = load ptr, ptr %32, align 8, !tbaa !5
  %579 = load i64, ptr %578, align 8, !tbaa !9
  %580 = shl i64 %579, 1
  %581 = sub nsw i64 %580, 1
  %582 = getelementptr inbounds i64, ptr %577, i64 %581
  store i64 1, ptr %582, align 8, !tbaa !9
  br label %583

583:                                              ; preds = %570, %557
  br label %596

584:                                              ; preds = %534
  %585 = load ptr, ptr %37, align 8, !tbaa !5
  %586 = load ptr, ptr %32, align 8, !tbaa !5
  %587 = load i64, ptr %586, align 8, !tbaa !9
  %588 = shl i64 %587, 1
  %589 = sub nsw i64 %588, 1
  %590 = getelementptr inbounds i64, ptr %585, i64 %589
  store i64 2, ptr %590, align 8, !tbaa !9
  %591 = load ptr, ptr %37, align 8, !tbaa !5
  %592 = load ptr, ptr %32, align 8, !tbaa !5
  %593 = load i64, ptr %592, align 8, !tbaa !9
  %594 = mul nsw i64 %593, 2
  %595 = getelementptr inbounds i64, ptr %591, i64 %594
  store i64 2, ptr %595, align 8, !tbaa !9
  br label %596

596:                                              ; preds = %584, %583
  br label %597

597:                                              ; preds = %596, %531, %520
  br label %598

598:                                              ; preds = %597, %517, %514
  %599 = load i64, ptr %83, align 8, !tbaa !9
  %600 = icmp ne i64 %599, 0
  br i1 %600, label %618, label %601

601:                                              ; preds = %598
  %602 = load i64, ptr %87, align 8, !tbaa !9
  %603 = icmp ne i64 %602, 0
  br i1 %603, label %604, label %612

604:                                              ; preds = %601
  %605 = load double, ptr %52, align 8, !tbaa !11
  %606 = load double, ptr %58, align 8, !tbaa !11
  %607 = fcmp ogt double %605, %606
  br i1 %607, label %608, label %612

608:                                              ; preds = %604
  %609 = load double, ptr %52, align 8, !tbaa !11
  %610 = load double, ptr %59, align 8, !tbaa !11
  %611 = fcmp ole double %609, %610
  br i1 %611, label %618, label %612

612:                                              ; preds = %608, %604, %601
  %613 = load i64, ptr %85, align 8, !tbaa !9
  %614 = icmp ne i64 %613, 0
  br i1 %614, label %615, label %695

615:                                              ; preds = %612
  %616 = load i64, ptr %61, align 8, !tbaa !9
  %617 = icmp eq i64 %616, 2
  br i1 %617, label %618, label %695

618:                                              ; preds = %615, %608, %598
  %619 = load ptr, ptr %32, align 8, !tbaa !5
  %620 = load i64, ptr %619, align 8, !tbaa !9
  %621 = add nsw i64 %620, 1
  store i64 %621, ptr %619, align 8, !tbaa !9
  %622 = load double, ptr %52, align 8, !tbaa !11
  %623 = load ptr, ptr %33, align 8, !tbaa !5
  %624 = load ptr, ptr %32, align 8, !tbaa !5
  %625 = load i64, ptr %624, align 8, !tbaa !9
  %626 = getelementptr inbounds double, ptr %623, i64 %625
  store double %622, ptr %626, align 8, !tbaa !11
  %627 = load i64, ptr %82, align 8, !tbaa !9
  %628 = icmp ne i64 %627, 0
  br i1 %628, label %629, label %694

629:                                              ; preds = %618
  %630 = load i64, ptr %105, align 8, !tbaa !9
  %631 = icmp ne i64 %630, 0
  br i1 %631, label %694, label %632

632:                                              ; preds = %629
  %633 = load double, ptr %55, align 8, !tbaa !11
  %634 = load ptr, ptr %34, align 8, !tbaa !5
  %635 = load ptr, ptr %32, align 8, !tbaa !5
  %636 = load i64, ptr %635, align 8, !tbaa !9
  %637 = load i64, ptr %44, align 8, !tbaa !9
  %638 = mul nsw i64 %636, %637
  %639 = add nsw i64 %638, 1
  %640 = getelementptr inbounds double, ptr %634, i64 %639
  store double %633, ptr %640, align 8, !tbaa !11
  %641 = load double, ptr %57, align 8, !tbaa !11
  %642 = load ptr, ptr %34, align 8, !tbaa !5
  %643 = load ptr, ptr %32, align 8, !tbaa !5
  %644 = load i64, ptr %643, align 8, !tbaa !9
  %645 = load i64, ptr %44, align 8, !tbaa !9
  %646 = mul nsw i64 %644, %645
  %647 = add nsw i64 %646, 2
  %648 = getelementptr inbounds double, ptr %642, i64 %647
  store double %641, ptr %648, align 8, !tbaa !11
  %649 = load double, ptr %57, align 8, !tbaa !11
  %650 = fcmp une double %649, 0.000000e+00
  br i1 %650, label %651, label %681

651:                                              ; preds = %632
  %652 = load double, ptr %55, align 8, !tbaa !11
  %653 = fcmp une double %652, 0.000000e+00
  br i1 %653, label %654, label %667

654:                                              ; preds = %651
  %655 = load ptr, ptr %37, align 8, !tbaa !5
  %656 = load ptr, ptr %32, align 8, !tbaa !5
  %657 = load i64, ptr %656, align 8, !tbaa !9
  %658 = shl i64 %657, 1
  %659 = sub nsw i64 %658, 1
  %660 = getelementptr inbounds i64, ptr %655, i64 %659
  store i64 1, ptr %660, align 8, !tbaa !9
  %661 = load ptr, ptr %37, align 8, !tbaa !5
  %662 = load ptr, ptr %32, align 8, !tbaa !5
  %663 = load i64, ptr %662, align 8, !tbaa !9
  %664 = shl i64 %663, 1
  %665 = sub nsw i64 %664, 1
  %666 = getelementptr inbounds i64, ptr %661, i64 %665
  store i64 2, ptr %666, align 8, !tbaa !9
  br label %680

667:                                              ; preds = %651
  %668 = load ptr, ptr %37, align 8, !tbaa !5
  %669 = load ptr, ptr %32, align 8, !tbaa !5
  %670 = load i64, ptr %669, align 8, !tbaa !9
  %671 = shl i64 %670, 1
  %672 = sub nsw i64 %671, 1
  %673 = getelementptr inbounds i64, ptr %668, i64 %672
  store i64 1, ptr %673, align 8, !tbaa !9
  %674 = load ptr, ptr %37, align 8, !tbaa !5
  %675 = load ptr, ptr %32, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  %677 = shl i64 %676, 1
  %678 = sub nsw i64 %677, 1
  %679 = getelementptr inbounds i64, ptr %674, i64 %678
  store i64 1, ptr %679, align 8, !tbaa !9
  br label %680

680:                                              ; preds = %667, %654
  br label %693

681:                                              ; preds = %632
  %682 = load ptr, ptr %37, align 8, !tbaa !5
  %683 = load ptr, ptr %32, align 8, !tbaa !5
  %684 = load i64, ptr %683, align 8, !tbaa !9
  %685 = shl i64 %684, 1
  %686 = sub nsw i64 %685, 1
  %687 = getelementptr inbounds i64, ptr %682, i64 %686
  store i64 2, ptr %687, align 8, !tbaa !9
  %688 = load ptr, ptr %37, align 8, !tbaa !5
  %689 = load ptr, ptr %32, align 8, !tbaa !5
  %690 = load i64, ptr %689, align 8, !tbaa !9
  %691 = mul nsw i64 %690, 2
  %692 = getelementptr inbounds i64, ptr %688, i64 %691
  store i64 2, ptr %692, align 8, !tbaa !9
  br label %693

693:                                              ; preds = %681, %680
  br label %694

694:                                              ; preds = %693, %629, %618
  br label %695

695:                                              ; preds = %694, %615, %612
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

696:                                              ; preds = %470
  store i64 1, ptr %93, align 8, !tbaa !9
  %697 = load ptr, ptr %25, align 8, !tbaa !5
  %698 = load i64, ptr %697, align 8, !tbaa !9
  %699 = shl i64 %698, 1
  %700 = add nsw i64 %699, 1
  store i64 %700, ptr %91, align 8, !tbaa !9
  %701 = load ptr, ptr %25, align 8, !tbaa !5
  %702 = load i64, ptr %701, align 8, !tbaa !9
  %703 = mul nsw i64 %702, 3
  %704 = add nsw i64 %703, 1
  store i64 %704, ptr %77, align 8, !tbaa !9
  %705 = load ptr, ptr %25, align 8, !tbaa !5
  %706 = load i64, ptr %705, align 8, !tbaa !9
  %707 = shl i64 %706, 2
  %708 = add nsw i64 %707, 1
  store i64 %708, ptr %64, align 8, !tbaa !9
  %709 = load ptr, ptr %25, align 8, !tbaa !5
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = mul nsw i64 %710, 5
  %712 = add nsw i64 %711, 1
  store i64 %712, ptr %72, align 8, !tbaa !9
  %713 = load ptr, ptr %25, align 8, !tbaa !5
  %714 = load i64, ptr %713, align 8, !tbaa !9
  %715 = mul nsw i64 %714, 6
  %716 = add nsw i64 %715, 1
  store i64 %716, ptr %98, align 8, !tbaa !9
  store i64 1, ptr %96, align 8, !tbaa !9
  %717 = load ptr, ptr %25, align 8, !tbaa !5
  %718 = load i64, ptr %717, align 8, !tbaa !9
  %719 = add nsw i64 %718, 1
  store i64 %719, ptr %86, align 8, !tbaa !9
  %720 = load ptr, ptr %25, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = shl i64 %721, 1
  %723 = add nsw i64 %722, 1
  store i64 %723, ptr %79, align 8, !tbaa !9
  %724 = load ptr, ptr %25, align 8, !tbaa !5
  %725 = load i64, ptr %724, align 8, !tbaa !9
  %726 = mul nsw i64 %725, 3
  %727 = add nsw i64 %726, 1
  store i64 %727, ptr %92, align 8, !tbaa !9
  store double 1.000000e+00, ptr %76, align 8, !tbaa !11
  %728 = load ptr, ptr %25, align 8, !tbaa !5
  %729 = load ptr, ptr %26, align 8, !tbaa !5
  %730 = getelementptr inbounds double, ptr %729, i64 1
  %731 = load ptr, ptr %27, align 8, !tbaa !5
  %732 = getelementptr inbounds double, ptr %731, i64 1
  %733 = call double @dlanst_(ptr noundef @.str.8, ptr noundef %728, ptr noundef %730, ptr noundef %732)
  store double %733, ptr %71, align 8, !tbaa !11
  %734 = load double, ptr %71, align 8, !tbaa !11
  %735 = fcmp ogt double %734, 0.000000e+00
  br i1 %735, label %736, label %744

736:                                              ; preds = %696
  %737 = load double, ptr %71, align 8, !tbaa !11
  %738 = load double, ptr %68, align 8, !tbaa !11
  %739 = fcmp olt double %737, %738
  br i1 %739, label %740, label %744

740:                                              ; preds = %736
  %741 = load double, ptr %68, align 8, !tbaa !11
  %742 = load double, ptr %71, align 8, !tbaa !11
  %743 = fdiv double %741, %742
  store double %743, ptr %76, align 8, !tbaa !11
  br label %753

744:                                              ; preds = %736, %696
  %745 = load double, ptr %71, align 8, !tbaa !11
  %746 = load double, ptr %69, align 8, !tbaa !11
  %747 = fcmp ogt double %745, %746
  br i1 %747, label %748, label %752

748:                                              ; preds = %744
  %749 = load double, ptr %69, align 8, !tbaa !11
  %750 = load double, ptr %71, align 8, !tbaa !11
  %751 = fdiv double %749, %750
  store double %751, ptr %76, align 8, !tbaa !11
  br label %752

752:                                              ; preds = %748, %744
  br label %753

753:                                              ; preds = %752, %740
  %754 = load double, ptr %76, align 8, !tbaa !11
  %755 = fcmp une double %754, 1.000000e+00
  br i1 %755, label %756, label %780

756:                                              ; preds = %753
  %757 = load ptr, ptr %25, align 8, !tbaa !5
  %758 = load ptr, ptr %26, align 8, !tbaa !5
  %759 = getelementptr inbounds double, ptr %758, i64 1
  %760 = call i32 @f2c_dscal(ptr noundef %757, ptr noundef %76, ptr noundef %759, ptr noundef @c__1)
  %761 = load ptr, ptr %25, align 8, !tbaa !5
  %762 = load i64, ptr %761, align 8, !tbaa !9
  %763 = sub nsw i64 %762, 1
  store i64 %763, ptr %46, align 8, !tbaa !9
  %764 = load ptr, ptr %27, align 8, !tbaa !5
  %765 = getelementptr inbounds double, ptr %764, i64 1
  %766 = call i32 @f2c_dscal(ptr noundef %46, ptr noundef %76, ptr noundef %765, ptr noundef @c__1)
  %767 = load double, ptr %76, align 8, !tbaa !11
  %768 = load double, ptr %71, align 8, !tbaa !11
  %769 = fmul double %768, %767
  store double %769, ptr %71, align 8, !tbaa !11
  %770 = load i64, ptr %87, align 8, !tbaa !9
  %771 = icmp ne i64 %770, 0
  br i1 %771, label %772, label %779

772:                                              ; preds = %756
  %773 = load double, ptr %76, align 8, !tbaa !11
  %774 = load double, ptr %58, align 8, !tbaa !11
  %775 = fmul double %774, %773
  store double %775, ptr %58, align 8, !tbaa !11
  %776 = load double, ptr %76, align 8, !tbaa !11
  %777 = load double, ptr %59, align 8, !tbaa !11
  %778 = fmul double %777, %776
  store double %778, ptr %59, align 8, !tbaa !11
  br label %779

779:                                              ; preds = %772, %756
  br label %780

780:                                              ; preds = %779, %753
  %781 = load ptr, ptr %38, align 8, !tbaa !5
  %782 = load i64, ptr %781, align 8, !tbaa !9
  %783 = icmp ne i64 %782, 0
  br i1 %783, label %784, label %791

784:                                              ; preds = %780
  %785 = load ptr, ptr %25, align 8, !tbaa !5
  %786 = load ptr, ptr %26, align 8, !tbaa !5
  %787 = getelementptr inbounds double, ptr %786, i64 1
  %788 = load ptr, ptr %27, align 8, !tbaa !5
  %789 = getelementptr inbounds double, ptr %788, i64 1
  %790 = call i32 @dlarrr_(ptr noundef %785, ptr noundef %787, ptr noundef %789, ptr noundef %78)
  br label %792

791:                                              ; preds = %780
  store i64 -1, ptr %78, align 8, !tbaa !9
  br label %792

792:                                              ; preds = %791, %784
  %793 = load i64, ptr %78, align 8, !tbaa !9
  %794 = icmp eq i64 %793, 0
  br i1 %794, label %795, label %797

795:                                              ; preds = %792
  %796 = load double, ptr %62, align 8, !tbaa !11
  store double %796, ptr %95, align 8, !tbaa !11
  br label %801

797:                                              ; preds = %792
  %798 = load double, ptr %62, align 8, !tbaa !11
  %799 = fneg double %798
  store double %799, ptr %95, align 8, !tbaa !11
  %800 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %800, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %797, %795
  %802 = load ptr, ptr %38, align 8, !tbaa !5
  %803 = load i64, ptr %802, align 8, !tbaa !9
  %804 = icmp ne i64 %803, 0
  br i1 %804, label %805, label %813

805:                                              ; preds = %801
  %806 = load ptr, ptr %25, align 8, !tbaa !5
  %807 = load ptr, ptr %26, align 8, !tbaa !5
  %808 = getelementptr inbounds double, ptr %807, i64 1
  %809 = load ptr, ptr %39, align 8, !tbaa !5
  %810 = load i64, ptr %64, align 8, !tbaa !9
  %811 = getelementptr inbounds double, ptr %809, i64 %810
  %812 = call i32 @f2c_dcopy(ptr noundef %806, ptr noundef %808, ptr noundef @c__1, ptr noundef %811, ptr noundef @c__1)
  br label %813

813:                                              ; preds = %805, %801
  %814 = load ptr, ptr %25, align 8, !tbaa !5
  %815 = load i64, ptr %814, align 8, !tbaa !9
  %816 = sub nsw i64 %815, 1
  store i64 %816, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %817

817:                                              ; preds = %835, %813
  %818 = load i64, ptr %51, align 8, !tbaa !9
  %819 = load i64, ptr %46, align 8, !tbaa !9
  %820 = icmp sle i64 %818, %819
  br i1 %820, label %821, label %838

821:                                              ; preds = %817
  %822 = load ptr, ptr %27, align 8, !tbaa !5
  %823 = load i64, ptr %51, align 8, !tbaa !9
  %824 = getelementptr inbounds double, ptr %822, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !11
  store double %825, ptr %48, align 8, !tbaa !11
  %826 = load double, ptr %48, align 8, !tbaa !11
  %827 = load double, ptr %48, align 8, !tbaa !11
  %828 = fmul double %826, %827
  %829 = load ptr, ptr %39, align 8, !tbaa !5
  %830 = load i64, ptr %72, align 8, !tbaa !9
  %831 = load i64, ptr %51, align 8, !tbaa !9
  %832 = add nsw i64 %830, %831
  %833 = sub nsw i64 %832, 1
  %834 = getelementptr inbounds double, ptr %829, i64 %833
  store double %828, ptr %834, align 8, !tbaa !11
  br label %835

835:                                              ; preds = %821
  %836 = load i64, ptr %51, align 8, !tbaa !9
  %837 = add nsw i64 %836, 1
  store i64 %837, ptr %51, align 8, !tbaa !9
  br label %817, !llvm.loop !13

838:                                              ; preds = %817
  %839 = load i64, ptr %82, align 8, !tbaa !9
  %840 = icmp ne i64 %839, 0
  br i1 %840, label %846, label %841

841:                                              ; preds = %838
  %842 = load double, ptr %62, align 8, !tbaa !11
  %843 = fmul double %842, 4.000000e+00
  store double %843, ptr %74, align 8, !tbaa !11
  %844 = load double, ptr %62, align 8, !tbaa !11
  %845 = fmul double %844, 4.000000e+00
  store double %845, ptr %75, align 8, !tbaa !11
  br label %863

846:                                              ; preds = %838
  %847 = load double, ptr %62, align 8, !tbaa !11
  %848 = call double @sqrt(double noundef %847) #4
  store double %848, ptr %74, align 8, !tbaa !11
  %849 = load double, ptr %62, align 8, !tbaa !11
  %850 = call double @sqrt(double noundef %849) #4
  %851 = fmul double %850, 5.000000e-03
  store double %851, ptr %48, align 8, !tbaa !11
  %852 = load double, ptr %62, align 8, !tbaa !11
  %853 = fmul double %852, 4.000000e+00
  store double %853, ptr %49, align 8, !tbaa !11
  %854 = load double, ptr %48, align 8, !tbaa !11
  %855 = load double, ptr %49, align 8, !tbaa !11
  %856 = fcmp oge double %854, %855
  br i1 %856, label %857, label %859

857:                                              ; preds = %846
  %858 = load double, ptr %48, align 8, !tbaa !11
  br label %861

859:                                              ; preds = %846
  %860 = load double, ptr %49, align 8, !tbaa !11
  br label %861

861:                                              ; preds = %859, %857
  %862 = phi double [ %858, %857 ], [ %860, %859 ]
  store double %862, ptr %75, align 8, !tbaa !11
  br label %863

863:                                              ; preds = %861, %841
  %864 = load ptr, ptr %24, align 8, !tbaa !5
  %865 = load ptr, ptr %25, align 8, !tbaa !5
  %866 = load ptr, ptr %26, align 8, !tbaa !5
  %867 = getelementptr inbounds double, ptr %866, i64 1
  %868 = load ptr, ptr %27, align 8, !tbaa !5
  %869 = getelementptr inbounds double, ptr %868, i64 1
  %870 = load ptr, ptr %39, align 8, !tbaa !5
  %871 = load i64, ptr %72, align 8, !tbaa !9
  %872 = getelementptr inbounds double, ptr %870, i64 %871
  %873 = load ptr, ptr %41, align 8, !tbaa !5
  %874 = load i64, ptr %96, align 8, !tbaa !9
  %875 = getelementptr inbounds i64, ptr %873, i64 %874
  %876 = load ptr, ptr %32, align 8, !tbaa !5
  %877 = load ptr, ptr %33, align 8, !tbaa !5
  %878 = getelementptr inbounds double, ptr %877, i64 1
  %879 = load ptr, ptr %39, align 8, !tbaa !5
  %880 = load i64, ptr %91, align 8, !tbaa !9
  %881 = getelementptr inbounds double, ptr %879, i64 %880
  %882 = load ptr, ptr %39, align 8, !tbaa !5
  %883 = load i64, ptr %77, align 8, !tbaa !9
  %884 = getelementptr inbounds double, ptr %882, i64 %883
  %885 = load ptr, ptr %41, align 8, !tbaa !5
  %886 = load i64, ptr %86, align 8, !tbaa !9
  %887 = getelementptr inbounds i64, ptr %885, i64 %886
  %888 = load ptr, ptr %41, align 8, !tbaa !5
  %889 = load i64, ptr %79, align 8, !tbaa !9
  %890 = getelementptr inbounds i64, ptr %888, i64 %889
  %891 = load ptr, ptr %39, align 8, !tbaa !5
  %892 = load i64, ptr %93, align 8, !tbaa !9
  %893 = getelementptr inbounds double, ptr %891, i64 %892
  %894 = load ptr, ptr %39, align 8, !tbaa !5
  %895 = load i64, ptr %98, align 8, !tbaa !9
  %896 = getelementptr inbounds double, ptr %894, i64 %895
  %897 = load ptr, ptr %41, align 8, !tbaa !5
  %898 = load i64, ptr %92, align 8, !tbaa !9
  %899 = getelementptr inbounds i64, ptr %897, i64 %898
  %900 = call i32 @dlarre_(ptr noundef %864, ptr noundef %865, ptr noundef %58, ptr noundef %59, ptr noundef %60, ptr noundef %61, ptr noundef %867, ptr noundef %869, ptr noundef %872, ptr noundef %74, ptr noundef %75, ptr noundef %95, ptr noundef %102, ptr noundef %875, ptr noundef %876, ptr noundef %878, ptr noundef %881, ptr noundef %884, ptr noundef %887, ptr noundef %890, ptr noundef %893, ptr noundef %101, ptr noundef %896, ptr noundef %899, ptr noundef %78)
  %901 = load i64, ptr %78, align 8, !tbaa !9
  %902 = icmp ne i64 %901, 0
  br i1 %902, label %903, label %915

903:                                              ; preds = %863
  %904 = load i64, ptr %78, align 8, !tbaa !9
  %905 = icmp sge i64 %904, 0
  br i1 %905, label %906, label %908

906:                                              ; preds = %903
  %907 = load i64, ptr %78, align 8, !tbaa !9
  br label %911

908:                                              ; preds = %903
  %909 = load i64, ptr %78, align 8, !tbaa !9
  %910 = sub nsw i64 0, %909
  br label %911

911:                                              ; preds = %908, %906
  %912 = phi i64 [ %907, %906 ], [ %910, %908 ]
  %913 = add nsw i64 %912, 10
  %914 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %913, ptr %914, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

915:                                              ; preds = %863
  %916 = load i64, ptr %82, align 8, !tbaa !9
  %917 = icmp ne i64 %916, 0
  br i1 %917, label %918, label %974

918:                                              ; preds = %915
  %919 = load ptr, ptr %25, align 8, !tbaa !5
  %920 = load ptr, ptr %26, align 8, !tbaa !5
  %921 = getelementptr inbounds double, ptr %920, i64 1
  %922 = load ptr, ptr %27, align 8, !tbaa !5
  %923 = getelementptr inbounds double, ptr %922, i64 1
  %924 = load ptr, ptr %41, align 8, !tbaa !5
  %925 = load i64, ptr %96, align 8, !tbaa !9
  %926 = getelementptr inbounds i64, ptr %924, i64 %925
  %927 = load ptr, ptr %32, align 8, !tbaa !5
  %928 = load ptr, ptr %32, align 8, !tbaa !5
  %929 = load ptr, ptr %33, align 8, !tbaa !5
  %930 = getelementptr inbounds double, ptr %929, i64 1
  %931 = load ptr, ptr %39, align 8, !tbaa !5
  %932 = load i64, ptr %91, align 8, !tbaa !9
  %933 = getelementptr inbounds double, ptr %931, i64 %932
  %934 = load ptr, ptr %39, align 8, !tbaa !5
  %935 = load i64, ptr %77, align 8, !tbaa !9
  %936 = getelementptr inbounds double, ptr %934, i64 %935
  %937 = load ptr, ptr %41, align 8, !tbaa !5
  %938 = load i64, ptr %86, align 8, !tbaa !9
  %939 = getelementptr inbounds i64, ptr %937, i64 %938
  %940 = load ptr, ptr %41, align 8, !tbaa !5
  %941 = load i64, ptr %79, align 8, !tbaa !9
  %942 = getelementptr inbounds i64, ptr %940, i64 %941
  %943 = load ptr, ptr %39, align 8, !tbaa !5
  %944 = load i64, ptr %93, align 8, !tbaa !9
  %945 = getelementptr inbounds double, ptr %943, i64 %944
  %946 = load ptr, ptr %34, align 8, !tbaa !5
  %947 = load i64, ptr %45, align 8, !tbaa !9
  %948 = getelementptr inbounds double, ptr %946, i64 %947
  %949 = load ptr, ptr %35, align 8, !tbaa !5
  %950 = load ptr, ptr %37, align 8, !tbaa !5
  %951 = getelementptr inbounds i64, ptr %950, i64 1
  %952 = load ptr, ptr %39, align 8, !tbaa !5
  %953 = load i64, ptr %98, align 8, !tbaa !9
  %954 = getelementptr inbounds double, ptr %952, i64 %953
  %955 = load ptr, ptr %41, align 8, !tbaa !5
  %956 = load i64, ptr %92, align 8, !tbaa !9
  %957 = getelementptr inbounds i64, ptr %955, i64 %956
  %958 = call i32 @dlarrv_(ptr noundef %919, ptr noundef %58, ptr noundef %59, ptr noundef %921, ptr noundef %923, ptr noundef %101, ptr noundef %926, ptr noundef %927, ptr noundef @c__1, ptr noundef %928, ptr noundef @c_b18, ptr noundef %74, ptr noundef %75, ptr noundef %930, ptr noundef %933, ptr noundef %936, ptr noundef %939, ptr noundef %942, ptr noundef %945, ptr noundef %948, ptr noundef %949, ptr noundef %951, ptr noundef %954, ptr noundef %957, ptr noundef %78)
  %959 = load i64, ptr %78, align 8, !tbaa !9
  %960 = icmp ne i64 %959, 0
  br i1 %960, label %961, label %973

961:                                              ; preds = %918
  %962 = load i64, ptr %78, align 8, !tbaa !9
  %963 = icmp sge i64 %962, 0
  br i1 %963, label %964, label %966

964:                                              ; preds = %961
  %965 = load i64, ptr %78, align 8, !tbaa !9
  br label %969

966:                                              ; preds = %961
  %967 = load i64, ptr %78, align 8, !tbaa !9
  %968 = sub nsw i64 0, %967
  br label %969

969:                                              ; preds = %966, %964
  %970 = phi i64 [ %965, %964 ], [ %968, %966 ]
  %971 = add nsw i64 %970, 20
  %972 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %971, ptr %972, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

973:                                              ; preds = %918
  br label %1008

974:                                              ; preds = %915
  %975 = load ptr, ptr %32, align 8, !tbaa !5
  %976 = load i64, ptr %975, align 8, !tbaa !9
  store i64 %976, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %977

977:                                              ; preds = %1004, %974
  %978 = load i64, ptr %51, align 8, !tbaa !9
  %979 = load i64, ptr %46, align 8, !tbaa !9
  %980 = icmp sle i64 %978, %979
  br i1 %980, label %981, label %1007

981:                                              ; preds = %977
  %982 = load ptr, ptr %41, align 8, !tbaa !5
  %983 = load i64, ptr %86, align 8, !tbaa !9
  %984 = load i64, ptr %51, align 8, !tbaa !9
  %985 = add nsw i64 %983, %984
  %986 = sub nsw i64 %985, 1
  %987 = getelementptr inbounds i64, ptr %982, i64 %986
  %988 = load i64, ptr %987, align 8, !tbaa !9
  store i64 %988, ptr %70, align 8, !tbaa !9
  %989 = load ptr, ptr %27, align 8, !tbaa !5
  %990 = load ptr, ptr %41, align 8, !tbaa !5
  %991 = load i64, ptr %96, align 8, !tbaa !9
  %992 = load i64, ptr %70, align 8, !tbaa !9
  %993 = add nsw i64 %991, %992
  %994 = sub nsw i64 %993, 1
  %995 = getelementptr inbounds i64, ptr %990, i64 %994
  %996 = load i64, ptr %995, align 8, !tbaa !9
  %997 = getelementptr inbounds double, ptr %989, i64 %996
  %998 = load double, ptr %997, align 8, !tbaa !11
  %999 = load ptr, ptr %33, align 8, !tbaa !5
  %1000 = load i64, ptr %51, align 8, !tbaa !9
  %1001 = getelementptr inbounds double, ptr %999, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = fadd double %1002, %998
  store double %1003, ptr %1001, align 8, !tbaa !11
  br label %1004

1004:                                             ; preds = %981
  %1005 = load i64, ptr %51, align 8, !tbaa !9
  %1006 = add nsw i64 %1005, 1
  store i64 %1006, ptr %51, align 8, !tbaa !9
  br label %977, !llvm.loop !15

1007:                                             ; preds = %977
  br label %1008

1008:                                             ; preds = %1007, %973
  %1009 = load ptr, ptr %38, align 8, !tbaa !5
  %1010 = load i64, ptr %1009, align 8, !tbaa !9
  %1011 = icmp ne i64 %1010, 0
  br i1 %1011, label %1012, label %1126

1012:                                             ; preds = %1008
  store i64 1, ptr %84, align 8, !tbaa !9
  store i64 1, ptr %88, align 8, !tbaa !9
  %1013 = load ptr, ptr %41, align 8, !tbaa !5
  %1014 = load i64, ptr %86, align 8, !tbaa !9
  %1015 = load ptr, ptr %32, align 8, !tbaa !5
  %1016 = load i64, ptr %1015, align 8, !tbaa !9
  %1017 = add nsw i64 %1014, %1016
  %1018 = sub nsw i64 %1017, 1
  %1019 = getelementptr inbounds i64, ptr %1013, i64 %1018
  %1020 = load i64, ptr %1019, align 8, !tbaa !9
  store i64 %1020, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %1021

1021:                                             ; preds = %1122, %1012
  %1022 = load i64, ptr %66, align 8, !tbaa !9
  %1023 = load i64, ptr %46, align 8, !tbaa !9
  %1024 = icmp sle i64 %1022, %1023
  br i1 %1024, label %1025, label %1125

1025:                                             ; preds = %1021
  %1026 = load ptr, ptr %41, align 8, !tbaa !5
  %1027 = load i64, ptr %96, align 8, !tbaa !9
  %1028 = load i64, ptr %66, align 8, !tbaa !9
  %1029 = add nsw i64 %1027, %1028
  %1030 = sub nsw i64 %1029, 1
  %1031 = getelementptr inbounds i64, ptr %1026, i64 %1030
  %1032 = load i64, ptr %1031, align 8, !tbaa !9
  store i64 %1032, ptr %65, align 8, !tbaa !9
  %1033 = load i64, ptr %65, align 8, !tbaa !9
  %1034 = load i64, ptr %84, align 8, !tbaa !9
  %1035 = sub nsw i64 %1033, %1034
  %1036 = add nsw i64 %1035, 1
  store i64 %1036, ptr %56, align 8, !tbaa !9
  %1037 = load i64, ptr %88, align 8, !tbaa !9
  %1038 = sub nsw i64 %1037, 1
  store i64 %1038, ptr %67, align 8, !tbaa !9
  br label %1039

1039:                                             ; preds = %1053, %1025
  %1040 = load i64, ptr %67, align 8, !tbaa !9
  %1041 = load ptr, ptr %32, align 8, !tbaa !5
  %1042 = load i64, ptr %1041, align 8, !tbaa !9
  %1043 = icmp slt i64 %1040, %1042
  br i1 %1043, label %1044, label %1057

1044:                                             ; preds = %1039
  %1045 = load ptr, ptr %41, align 8, !tbaa !5
  %1046 = load i64, ptr %86, align 8, !tbaa !9
  %1047 = load i64, ptr %67, align 8, !tbaa !9
  %1048 = add nsw i64 %1046, %1047
  %1049 = getelementptr inbounds i64, ptr %1045, i64 %1048
  %1050 = load i64, ptr %1049, align 8, !tbaa !9
  %1051 = load i64, ptr %66, align 8, !tbaa !9
  %1052 = icmp eq i64 %1050, %1051
  br i1 %1052, label %1053, label %1056

1053:                                             ; preds = %1044
  %1054 = load i64, ptr %67, align 8, !tbaa !9
  %1055 = add nsw i64 %1054, 1
  store i64 %1055, ptr %67, align 8, !tbaa !9
  br label %1039

1056:                                             ; preds = %1044
  br label %1057

1057:                                             ; preds = %1056, %1039
  %1058 = load i64, ptr %67, align 8, !tbaa !9
  %1059 = load i64, ptr %88, align 8, !tbaa !9
  %1060 = icmp slt i64 %1058, %1059
  br i1 %1060, label %1061, label %1064

1061:                                             ; preds = %1057
  %1062 = load i64, ptr %65, align 8, !tbaa !9
  %1063 = add nsw i64 %1062, 1
  store i64 %1063, ptr %84, align 8, !tbaa !9
  br label %1121

1064:                                             ; preds = %1057
  %1065 = load ptr, ptr %41, align 8, !tbaa !5
  %1066 = load i64, ptr %79, align 8, !tbaa !9
  %1067 = load i64, ptr %88, align 8, !tbaa !9
  %1068 = add nsw i64 %1066, %1067
  %1069 = sub nsw i64 %1068, 1
  %1070 = getelementptr inbounds i64, ptr %1065, i64 %1069
  %1071 = load i64, ptr %1070, align 8, !tbaa !9
  %1072 = sub nsw i64 %1071, 1
  store i64 %1072, ptr %94, align 8, !tbaa !9
  %1073 = load ptr, ptr %41, align 8, !tbaa !5
  %1074 = load i64, ptr %79, align 8, !tbaa !9
  %1075 = load i64, ptr %88, align 8, !tbaa !9
  %1076 = add nsw i64 %1074, %1075
  %1077 = sub nsw i64 %1076, 1
  %1078 = getelementptr inbounds i64, ptr %1073, i64 %1077
  %1079 = load i64, ptr %1078, align 8, !tbaa !9
  store i64 %1079, ptr %97, align 8, !tbaa !9
  %1080 = load ptr, ptr %41, align 8, !tbaa !5
  %1081 = load i64, ptr %79, align 8, !tbaa !9
  %1082 = load i64, ptr %67, align 8, !tbaa !9
  %1083 = add nsw i64 %1081, %1082
  %1084 = sub nsw i64 %1083, 1
  %1085 = getelementptr inbounds i64, ptr %1080, i64 %1084
  %1086 = load i64, ptr %1085, align 8, !tbaa !9
  store i64 %1086, ptr %80, align 8, !tbaa !9
  %1087 = load double, ptr %62, align 8, !tbaa !11
  %1088 = fmul double %1087, 4.000000e+00
  store double %1088, ptr %75, align 8, !tbaa !11
  %1089 = load ptr, ptr %39, align 8, !tbaa !5
  %1090 = load i64, ptr %64, align 8, !tbaa !9
  %1091 = load i64, ptr %84, align 8, !tbaa !9
  %1092 = add nsw i64 %1090, %1091
  %1093 = sub nsw i64 %1092, 1
  %1094 = getelementptr inbounds double, ptr %1089, i64 %1093
  %1095 = load ptr, ptr %39, align 8, !tbaa !5
  %1096 = load i64, ptr %72, align 8, !tbaa !9
  %1097 = load i64, ptr %84, align 8, !tbaa !9
  %1098 = add nsw i64 %1096, %1097
  %1099 = sub nsw i64 %1098, 1
  %1100 = getelementptr inbounds double, ptr %1095, i64 %1099
  %1101 = load ptr, ptr %33, align 8, !tbaa !5
  %1102 = load i64, ptr %88, align 8, !tbaa !9
  %1103 = getelementptr inbounds double, ptr %1101, i64 %1102
  %1104 = load ptr, ptr %39, align 8, !tbaa !5
  %1105 = load i64, ptr %91, align 8, !tbaa !9
  %1106 = load i64, ptr %88, align 8, !tbaa !9
  %1107 = add nsw i64 %1105, %1106
  %1108 = sub nsw i64 %1107, 1
  %1109 = getelementptr inbounds double, ptr %1104, i64 %1108
  %1110 = load ptr, ptr %39, align 8, !tbaa !5
  %1111 = load i64, ptr %98, align 8, !tbaa !9
  %1112 = getelementptr inbounds double, ptr %1110, i64 %1111
  %1113 = load ptr, ptr %41, align 8, !tbaa !5
  %1114 = load i64, ptr %92, align 8, !tbaa !9
  %1115 = getelementptr inbounds i64, ptr %1113, i64 %1114
  %1116 = call i32 @dlarrj_(ptr noundef %56, ptr noundef %1094, ptr noundef %1100, ptr noundef %97, ptr noundef %80, ptr noundef %75, ptr noundef %94, ptr noundef %1103, ptr noundef %1109, ptr noundef %1112, ptr noundef %1115, ptr noundef %101, ptr noundef %71, ptr noundef %78)
  %1117 = load i64, ptr %65, align 8, !tbaa !9
  %1118 = add nsw i64 %1117, 1
  store i64 %1118, ptr %84, align 8, !tbaa !9
  %1119 = load i64, ptr %67, align 8, !tbaa !9
  %1120 = add nsw i64 %1119, 1
  store i64 %1120, ptr %88, align 8, !tbaa !9
  br label %1121

1121:                                             ; preds = %1064, %1061
  br label %1122

1122:                                             ; preds = %1121
  %1123 = load i64, ptr %66, align 8, !tbaa !9
  %1124 = add nsw i64 %1123, 1
  store i64 %1124, ptr %66, align 8, !tbaa !9
  br label %1021, !llvm.loop !16

1125:                                             ; preds = %1021
  br label %1126

1126:                                             ; preds = %1125, %1008
  %1127 = load double, ptr %76, align 8, !tbaa !11
  %1128 = fcmp une double %1127, 1.000000e+00
  br i1 %1128, label %1129, label %1136

1129:                                             ; preds = %1126
  %1130 = load double, ptr %76, align 8, !tbaa !11
  %1131 = fdiv double 1.000000e+00, %1130
  store double %1131, ptr %48, align 8, !tbaa !11
  %1132 = load ptr, ptr %32, align 8, !tbaa !5
  %1133 = load ptr, ptr %33, align 8, !tbaa !5
  %1134 = getelementptr inbounds double, ptr %1133, i64 1
  %1135 = call i32 @f2c_dscal(ptr noundef %1132, ptr noundef %48, ptr noundef %1134, ptr noundef @c__1)
  br label %1136

1136:                                             ; preds = %1129, %1126
  %1137 = load i64, ptr %102, align 8, !tbaa !9
  %1138 = icmp sgt i64 %1137, 1
  br i1 %1138, label %1139, label %1271

1139:                                             ; preds = %1136
  %1140 = load i64, ptr %82, align 8, !tbaa !9
  %1141 = icmp ne i64 %1140, 0
  br i1 %1141, label %1152, label %1142

1142:                                             ; preds = %1139
  %1143 = load ptr, ptr %32, align 8, !tbaa !5
  %1144 = load ptr, ptr %33, align 8, !tbaa !5
  %1145 = getelementptr inbounds double, ptr %1144, i64 1
  %1146 = call i32 @dlasrt_(ptr noundef @.str.2, ptr noundef %1143, ptr noundef %1145, ptr noundef %78)
  %1147 = load i64, ptr %78, align 8, !tbaa !9
  %1148 = icmp ne i64 %1147, 0
  br i1 %1148, label %1149, label %1151

1149:                                             ; preds = %1142
  %1150 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 3, ptr %1150, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

1151:                                             ; preds = %1142
  br label %1270

1152:                                             ; preds = %1139
  %1153 = load ptr, ptr %32, align 8, !tbaa !5
  %1154 = load i64, ptr %1153, align 8, !tbaa !9
  %1155 = sub nsw i64 %1154, 1
  store i64 %1155, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %1156

1156:                                             ; preds = %1266, %1152
  %1157 = load i64, ptr %51, align 8, !tbaa !9
  %1158 = load i64, ptr %46, align 8, !tbaa !9
  %1159 = icmp sle i64 %1157, %1158
  br i1 %1159, label %1160, label %1269

1160:                                             ; preds = %1156
  store i64 0, ptr %50, align 8, !tbaa !9
  %1161 = load ptr, ptr %33, align 8, !tbaa !5
  %1162 = load i64, ptr %51, align 8, !tbaa !9
  %1163 = getelementptr inbounds double, ptr %1161, i64 %1162
  %1164 = load double, ptr %1163, align 8, !tbaa !11
  store double %1164, ptr %63, align 8, !tbaa !11
  %1165 = load ptr, ptr %32, align 8, !tbaa !5
  %1166 = load i64, ptr %1165, align 8, !tbaa !9
  store i64 %1166, ptr %47, align 8, !tbaa !9
  %1167 = load i64, ptr %51, align 8, !tbaa !9
  %1168 = add nsw i64 %1167, 1
  store i64 %1168, ptr %54, align 8, !tbaa !9
  br label %1169

1169:                                             ; preds = %1187, %1160
  %1170 = load i64, ptr %54, align 8, !tbaa !9
  %1171 = load i64, ptr %47, align 8, !tbaa !9
  %1172 = icmp sle i64 %1170, %1171
  br i1 %1172, label %1173, label %1190

1173:                                             ; preds = %1169
  %1174 = load ptr, ptr %33, align 8, !tbaa !5
  %1175 = load i64, ptr %54, align 8, !tbaa !9
  %1176 = getelementptr inbounds double, ptr %1174, i64 %1175
  %1177 = load double, ptr %1176, align 8, !tbaa !11
  %1178 = load double, ptr %63, align 8, !tbaa !11
  %1179 = fcmp olt double %1177, %1178
  br i1 %1179, label %1180, label %1186

1180:                                             ; preds = %1173
  %1181 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %1181, ptr %50, align 8, !tbaa !9
  %1182 = load ptr, ptr %33, align 8, !tbaa !5
  %1183 = load i64, ptr %54, align 8, !tbaa !9
  %1184 = getelementptr inbounds double, ptr %1182, i64 %1183
  %1185 = load double, ptr %1184, align 8, !tbaa !11
  store double %1185, ptr %63, align 8, !tbaa !11
  br label %1186

1186:                                             ; preds = %1180, %1173
  br label %1187

1187:                                             ; preds = %1186
  %1188 = load i64, ptr %54, align 8, !tbaa !9
  %1189 = add nsw i64 %1188, 1
  store i64 %1189, ptr %54, align 8, !tbaa !9
  br label %1169, !llvm.loop !17

1190:                                             ; preds = %1169
  %1191 = load i64, ptr %50, align 8, !tbaa !9
  %1192 = icmp ne i64 %1191, 0
  br i1 %1192, label %1193, label %1265

1193:                                             ; preds = %1190
  %1194 = load ptr, ptr %33, align 8, !tbaa !5
  %1195 = load i64, ptr %51, align 8, !tbaa !9
  %1196 = getelementptr inbounds double, ptr %1194, i64 %1195
  %1197 = load double, ptr %1196, align 8, !tbaa !11
  %1198 = load ptr, ptr %33, align 8, !tbaa !5
  %1199 = load i64, ptr %50, align 8, !tbaa !9
  %1200 = getelementptr inbounds double, ptr %1198, i64 %1199
  store double %1197, ptr %1200, align 8, !tbaa !11
  %1201 = load double, ptr %63, align 8, !tbaa !11
  %1202 = load ptr, ptr %33, align 8, !tbaa !5
  %1203 = load i64, ptr %51, align 8, !tbaa !9
  %1204 = getelementptr inbounds double, ptr %1202, i64 %1203
  store double %1201, ptr %1204, align 8, !tbaa !11
  %1205 = load i64, ptr %82, align 8, !tbaa !9
  %1206 = icmp ne i64 %1205, 0
  br i1 %1206, label %1207, label %1264

1207:                                             ; preds = %1193
  %1208 = load ptr, ptr %25, align 8, !tbaa !5
  %1209 = load ptr, ptr %34, align 8, !tbaa !5
  %1210 = load i64, ptr %50, align 8, !tbaa !9
  %1211 = load i64, ptr %44, align 8, !tbaa !9
  %1212 = mul nsw i64 %1210, %1211
  %1213 = add nsw i64 %1212, 1
  %1214 = getelementptr inbounds double, ptr %1209, i64 %1213
  %1215 = load ptr, ptr %34, align 8, !tbaa !5
  %1216 = load i64, ptr %51, align 8, !tbaa !9
  %1217 = load i64, ptr %44, align 8, !tbaa !9
  %1218 = mul nsw i64 %1216, %1217
  %1219 = add nsw i64 %1218, 1
  %1220 = getelementptr inbounds double, ptr %1215, i64 %1219
  %1221 = call i32 @f2c_dswap(ptr noundef %1208, ptr noundef %1214, ptr noundef @c__1, ptr noundef %1220, ptr noundef @c__1)
  %1222 = load ptr, ptr %37, align 8, !tbaa !5
  %1223 = load i64, ptr %50, align 8, !tbaa !9
  %1224 = shl i64 %1223, 1
  %1225 = sub nsw i64 %1224, 1
  %1226 = getelementptr inbounds i64, ptr %1222, i64 %1225
  %1227 = load i64, ptr %1226, align 8, !tbaa !9
  store i64 %1227, ptr %70, align 8, !tbaa !9
  %1228 = load ptr, ptr %37, align 8, !tbaa !5
  %1229 = load i64, ptr %51, align 8, !tbaa !9
  %1230 = shl i64 %1229, 1
  %1231 = sub nsw i64 %1230, 1
  %1232 = getelementptr inbounds i64, ptr %1228, i64 %1231
  %1233 = load i64, ptr %1232, align 8, !tbaa !9
  %1234 = load ptr, ptr %37, align 8, !tbaa !5
  %1235 = load i64, ptr %50, align 8, !tbaa !9
  %1236 = shl i64 %1235, 1
  %1237 = sub nsw i64 %1236, 1
  %1238 = getelementptr inbounds i64, ptr %1234, i64 %1237
  store i64 %1233, ptr %1238, align 8, !tbaa !9
  %1239 = load i64, ptr %70, align 8, !tbaa !9
  %1240 = load ptr, ptr %37, align 8, !tbaa !5
  %1241 = load i64, ptr %51, align 8, !tbaa !9
  %1242 = shl i64 %1241, 1
  %1243 = sub nsw i64 %1242, 1
  %1244 = getelementptr inbounds i64, ptr %1240, i64 %1243
  store i64 %1239, ptr %1244, align 8, !tbaa !9
  %1245 = load ptr, ptr %37, align 8, !tbaa !5
  %1246 = load i64, ptr %50, align 8, !tbaa !9
  %1247 = mul nsw i64 %1246, 2
  %1248 = getelementptr inbounds i64, ptr %1245, i64 %1247
  %1249 = load i64, ptr %1248, align 8, !tbaa !9
  store i64 %1249, ptr %70, align 8, !tbaa !9
  %1250 = load ptr, ptr %37, align 8, !tbaa !5
  %1251 = load i64, ptr %51, align 8, !tbaa !9
  %1252 = mul nsw i64 %1251, 2
  %1253 = getelementptr inbounds i64, ptr %1250, i64 %1252
  %1254 = load i64, ptr %1253, align 8, !tbaa !9
  %1255 = load ptr, ptr %37, align 8, !tbaa !5
  %1256 = load i64, ptr %50, align 8, !tbaa !9
  %1257 = mul nsw i64 %1256, 2
  %1258 = getelementptr inbounds i64, ptr %1255, i64 %1257
  store i64 %1254, ptr %1258, align 8, !tbaa !9
  %1259 = load i64, ptr %70, align 8, !tbaa !9
  %1260 = load ptr, ptr %37, align 8, !tbaa !5
  %1261 = load i64, ptr %51, align 8, !tbaa !9
  %1262 = mul nsw i64 %1261, 2
  %1263 = getelementptr inbounds i64, ptr %1260, i64 %1262
  store i64 %1259, ptr %1263, align 8, !tbaa !9
  br label %1264

1264:                                             ; preds = %1207, %1193
  br label %1265

1265:                                             ; preds = %1264, %1190
  br label %1266

1266:                                             ; preds = %1265
  %1267 = load i64, ptr %51, align 8, !tbaa !9
  %1268 = add nsw i64 %1267, 1
  store i64 %1268, ptr %51, align 8, !tbaa !9
  br label %1156, !llvm.loop !18

1269:                                             ; preds = %1156
  br label %1270

1270:                                             ; preds = %1269, %1151
  br label %1271

1271:                                             ; preds = %1270, %1136
  %1272 = load i64, ptr %81, align 8, !tbaa !9
  %1273 = sitofp i64 %1272 to double
  %1274 = load ptr, ptr %39, align 8, !tbaa !5
  %1275 = getelementptr inbounds double, ptr %1274, i64 1
  store double %1273, ptr %1275, align 8, !tbaa !11
  %1276 = load i64, ptr %99, align 8, !tbaa !9
  %1277 = load ptr, ptr %41, align 8, !tbaa !5
  %1278 = getelementptr inbounds i64, ptr %1277, i64 1
  store i64 %1276, ptr %1278, align 8, !tbaa !9
  store i32 0, ptr %22, align 4
  store i32 1, ptr %106, align 4
  br label %1279

1279:                                             ; preds = %1271, %1149, %969, %911, %695, %469, %416, %409, %398
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  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 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  %1280 = load i32, ptr %22, align 4
  ret i32 %1280
}

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

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

declare double @dlamch_(ptr noundef) #2

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

declare i32 @dlarrc_(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 @xerbla_(ptr noundef, ptr noundef) #2

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

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

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

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

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

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

declare i32 @dlarre_(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

declare i32 @dlarrv_(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

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

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

declare i32 @f2c_dswap(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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b18 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dstemr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr nocapture noundef readonly %13, ptr noundef %14, ptr nocapture noundef %15, ptr noundef %16, ptr nocapture noundef readonly %17, ptr noundef %18, ptr nocapture noundef readonly %19, ptr noundef %20) local_unnamed_addr #0 {
  %22 = ptrtoint ptr %4 to i64
  %23 = ptrtoint ptr %16 to i64
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca i64, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca i64, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca double, align 8
  %44 = alloca i64, align 8
  %45 = alloca double, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca double, align 8
  %49 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #5
  %50 = getelementptr inbounds i8, ptr %4, i64 -8
  %51 = getelementptr inbounds i8, ptr %10, i64 -8
  %52 = load i64, ptr %12, align 8, !tbaa !5
  %53 = xor i64 %52, -1
  %54 = getelementptr inbounds double, ptr %11, i64 %53
  %55 = getelementptr inbounds i8, ptr %14, i64 -8
  %56 = getelementptr inbounds i8, ptr %16, i64 -8
  %57 = getelementptr inbounds i8, ptr %18, i64 -8
  %58 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %59 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %60 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %61 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %62 = load i64, ptr %17, align 8, !tbaa !5
  %63 = icmp eq i64 %62, -1
  br i1 %63, label %67, label %64

64:                                               ; preds = %21
  %65 = load i64, ptr %19, align 8, !tbaa !5
  %66 = icmp eq i64 %65, -1
  br label %67

67:                                               ; preds = %64, %21
  %68 = phi i1 [ true, %21 ], [ %66, %64 ]
  %69 = load i64, ptr %13, align 8, !tbaa !5
  %70 = icmp eq i64 %69, -1
  %71 = icmp ne i64 %58, 0
  %72 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %71, label %73, label %76

73:                                               ; preds = %67
  %74 = mul nsw i64 %72, 18
  %75 = mul nsw i64 %72, 10
  br label %79

76:                                               ; preds = %67
  %77 = mul nsw i64 %72, 12
  %78 = shl i64 %72, 3
  br label %79

79:                                               ; preds = %76, %73
  %.0438 = phi i64 [ %74, %73 ], [ %77, %76 ]
  %.0426 = phi i64 [ %75, %73 ], [ %78, %76 ]
  store double 0.000000e+00, ptr %31, align 8, !tbaa !9
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  store i64 0, ptr %33, align 8, !tbaa !5
  store i64 0, ptr %34, align 8, !tbaa !5
  %80 = icmp ne i64 %60, 0
  br i1 %80, label %81, label %84

81:                                               ; preds = %79
  %82 = load double, ptr %5, align 8, !tbaa !9
  store double %82, ptr %31, align 8, !tbaa !9
  %83 = load double, ptr %6, align 8, !tbaa !9
  store double %83, ptr %32, align 8, !tbaa !9
  br label %88

84:                                               ; preds = %79
  %.not = icmp eq i64 %61, 0
  br i1 %.not, label %88, label %85

85:                                               ; preds = %84
  %86 = load i64, ptr %7, align 8, !tbaa !5
  store i64 %86, ptr %33, align 8, !tbaa !5
  %87 = load i64, ptr %8, align 8, !tbaa !5
  store i64 %87, ptr %34, align 8, !tbaa !5
  br label %88

88:                                               ; preds = %84, %85, %81
  %89 = phi i64 [ 0, %84 ], [ %87, %85 ], [ 0, %81 ]
  %90 = phi i64 [ 0, %84 ], [ %86, %85 ], [ 0, %81 ]
  %91 = phi double [ 0.000000e+00, %84 ], [ 0.000000e+00, %85 ], [ %82, %81 ]
  %92 = phi double [ 0.000000e+00, %84 ], [ 0.000000e+00, %85 ], [ %83, %81 ]
  store i64 0, ptr %20, align 8, !tbaa !5
  br i1 %71, label %95, label %93

93:                                               ; preds = %88
  %94 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %.not457 = icmp eq i64 %94, 0
  br i1 %.not457, label %.sink.split, label %95

95:                                               ; preds = %93, %88
  %96 = or i64 %60, %59
  %or.cond = icmp ne i64 %96, 0
  %97 = icmp ne i64 %61, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %97
  br i1 %or.cond3, label %98, label %.sink.split

98:                                               ; preds = %95
  %99 = load i64, ptr %2, align 8, !tbaa !5
  %100 = icmp slt i64 %99, 0
  br i1 %100, label %.sink.split, label %101

101:                                              ; preds = %98
  %.not458 = icmp ne i64 %99, 0
  %or.cond490.not = and i1 %80, %.not458
  %102 = fcmp ole double %92, %91
  %or.cond573.not = select i1 %or.cond490.not, i1 %102, i1 false
  br i1 %or.cond573.not, label %.sink.split, label %103

103:                                              ; preds = %101
  br i1 %97, label %104, label %.critedge

104:                                              ; preds = %103
  %105 = icmp slt i64 %90, 1
  %106 = icmp ugt i64 %90, %99
  %or.cond509 = or i1 %105, %106
  br i1 %or.cond509, label %.sink.split, label %107

107:                                              ; preds = %104
  %108 = icmp slt i64 %89, %90
  %109 = icmp ugt i64 %89, %99
  %or.cond510 = or i1 %108, %109
  br i1 %or.cond510, label %.sink.split, label %.critedge

.critedge:                                        ; preds = %107, %103
  %110 = load i64, ptr %12, align 8, !tbaa !5
  %111 = icmp slt i64 %110, 1
  %112 = icmp ult i64 %110, %99
  %or.cond511 = and i1 %71, %112
  %or.cond512 = or i1 %111, %or.cond511
  br i1 %or.cond512, label %.sink.split, label %113

113:                                              ; preds = %.critedge
  %114 = load i64, ptr %17, align 8, !tbaa !5
  %115 = icmp sge i64 %114, %.0438
  %or.cond5 = select i1 %115, i1 true, i1 %68
  br i1 %or.cond5, label %116, label %.sink.split

116:                                              ; preds = %113
  %117 = load i64, ptr %19, align 8, !tbaa !5
  %118 = icmp sge i64 %117, %.0426
  %or.cond7 = select i1 %118, i1 true, i1 %68
  br i1 %or.cond7, label %119, label %.sink.split

.sink.split:                                      ; preds = %116, %113, %.critedge, %107, %104, %101, %98, %95, %93
  %.sink = phi i64 [ -1, %93 ], [ -2, %95 ], [ -3, %98 ], [ -7, %101 ], [ -8, %104 ], [ -9, %107 ], [ -13, %.critedge ], [ -17, %113 ], [ -19, %116 ]
  store i64 %.sink, ptr %20, align 8, !tbaa !5
  br label %119

119:                                              ; preds = %.sink.split, %116
  %120 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  store double %120, ptr %43, align 8, !tbaa !9
  %121 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %122 = fdiv double %120, %121
  %123 = fdiv double 1.000000e+00, %122
  %124 = tail call double @sqrt(double noundef %122) #5
  %125 = tail call double @sqrt(double noundef %123) #5
  store double %125, ptr %25, align 8, !tbaa !9
  %126 = tail call double @sqrt(double noundef %120) #5
  %127 = tail call double @sqrt(double noundef %126) #5
  %128 = fdiv double 1.000000e+00, %127
  %129 = fcmp ole double %125, %128
  %130 = select i1 %129, double %125, double %128
  %131 = load i64, ptr %20, align 8, !tbaa !5
  %132 = icmp eq i64 %131, 0
  br i1 %132, label %133, label %.thread499

133:                                              ; preds = %119
  %134 = sitofp i64 %.0438 to double
  store double %134, ptr %16, align 8, !tbaa !9
  store i64 %.0426, ptr %18, align 8, !tbaa !5
  %135 = icmp ne i64 %59, 0
  %or.cond9 = select i1 %71, i1 %135, i1 false
  br i1 %or.cond9, label %136, label %138

136:                                              ; preds = %133
  %137 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %137, ptr %47, align 8, !tbaa !5
  br label %147

138:                                              ; preds = %133
  %or.cond11 = and i1 %71, %80
  br i1 %or.cond11, label %139, label %141

139:                                              ; preds = %138
  %140 = call i32 @dlarrc_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef %5, ptr noundef %6, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %43, ptr noundef nonnull %47, ptr noundef nonnull %35, ptr noundef nonnull %37, ptr noundef nonnull %20) #5
  br label %147

141:                                              ; preds = %138
  %142 = icmp ne i64 %61, 0
  %or.cond13 = select i1 %71, i1 %142, i1 false
  br i1 %or.cond13, label %143, label %146

143:                                              ; preds = %141
  %144 = add i64 %89, 1
  %145 = sub i64 %144, %90
  store i64 %145, ptr %47, align 8, !tbaa !5
  br label %147

146:                                              ; preds = %141
  store i64 0, ptr %47, align 8, !tbaa !5
  br label %147

147:                                              ; preds = %139, %146, %143, %136
  br i1 %70, label %148, label %153

148:                                              ; preds = %147
  %149 = load i64, ptr %20, align 8, !tbaa !5
  %150 = icmp eq i64 %149, 0
  br i1 %150, label %.thread565, label %.thread499

.thread565:                                       ; preds = %148
  %151 = load i64, ptr %47, align 8, !tbaa !5
  %152 = sitofp i64 %151 to double
  store double %152, ptr %11, align 8, !tbaa !9
  br label %480

153:                                              ; preds = %147
  %154 = load i64, ptr %13, align 8, !tbaa !5
  %155 = load i64, ptr %47, align 8, !tbaa !5
  %.not562 = icmp slt i64 %154, %155
  br i1 %.not562, label %156, label %157

156:                                              ; preds = %153
  store i64 -14, ptr %20, align 8, !tbaa !5
  br label %.thread499

157:                                              ; preds = %153
  %.pr.pre = load i64, ptr %20, align 8, !tbaa !5
  %.not459 = icmp eq i64 %.pr.pre, 0
  br i1 %.not459, label %161, label %.thread499

.thread499:                                       ; preds = %148, %119, %156, %157
  %158 = phi i64 [ %.pr.pre, %157 ], [ %131, %119 ], [ -14, %156 ], [ %149, %148 ]
  %159 = sub nsw i64 0, %158
  store i64 %159, ptr %24, align 8, !tbaa !5
  %160 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %24) #5
  br label %480

161:                                              ; preds = %157
  %or.cond17 = select i1 %68, i1 true, i1 %70
  br i1 %or.cond17, label %480, label %162

162:                                              ; preds = %161
  store i64 0, ptr %9, align 8, !tbaa !5
  %163 = load i64, ptr %2, align 8, !tbaa !5
  switch i64 %163, label %265 [
    i64 0, label %480
    i64 1, label %164
    i64 2, label %179
  ]

164:                                              ; preds = %162
  %165 = icmp ne i64 %61, 0
  %or.cond19 = select i1 %135, i1 true, i1 %165
  br i1 %or.cond19, label %166, label %168

166:                                              ; preds = %164
  store i64 1, ptr %9, align 8, !tbaa !5
  %167 = load double, ptr %3, align 8, !tbaa !9
  br label %.sink.split574

168:                                              ; preds = %164
  %169 = load double, ptr %31, align 8, !tbaa !9
  %170 = load double, ptr %3, align 8, !tbaa !9
  %171 = fcmp uge double %169, %170
  %172 = load double, ptr %32, align 8
  %173 = fcmp ult double %172, %170
  %or.cond492 = select i1 %171, i1 true, i1 %173
  br i1 %or.cond492, label %175, label %174

174:                                              ; preds = %168
  store i64 1, ptr %9, align 8, !tbaa !5
  br label %.sink.split574

.sink.split574:                                   ; preds = %166, %174
  %.sink575 = phi double [ %170, %174 ], [ %167, %166 ]
  store double %.sink575, ptr %10, align 8, !tbaa !9
  br label %175

175:                                              ; preds = %.sink.split574, %168
  %176 = icmp eq i64 %58, 0
  br i1 %176, label %480, label %177

177:                                              ; preds = %175
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  store i64 1, ptr %14, align 8, !tbaa !5
  %178 = getelementptr inbounds i8, ptr %14, i64 8
  store i64 1, ptr %178, align 8, !tbaa !5
  br label %480

179:                                              ; preds = %162
  %180 = getelementptr inbounds i8, ptr %3, i64 8
  br i1 %71, label %183, label %181

181:                                              ; preds = %179
  %182 = call i32 @dlae2_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull %180, ptr noundef nonnull %26, ptr noundef nonnull %27) #5
  br label %185

183:                                              ; preds = %179
  %184 = call i32 @dlaev2_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull %180, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %30) #5
  br label %185

185:                                              ; preds = %183, %181
  %.not476 = icmp eq i64 %59, 0
  br i1 %.not476, label %186, label %197

186:                                              ; preds = %185
  br i1 %80, label %187, label %193

187:                                              ; preds = %186
  %188 = load double, ptr %27, align 8, !tbaa !9
  %189 = load double, ptr %31, align 8, !tbaa !9
  %190 = fcmp ule double %188, %189
  %191 = load double, ptr %32, align 8
  %192 = fcmp ugt double %188, %191
  %or.cond494 = select i1 %190, i1 true, i1 %192
  br i1 %or.cond494, label %193, label %197

193:                                              ; preds = %187, %186
  %194 = icmp ne i64 %61, 0
  %195 = load i64, ptr %33, align 8
  %196 = icmp eq i64 %195, 1
  %or.cond25 = select i1 %194, i1 %196, i1 false
  br i1 %or.cond25, label %197, label %.thread501

197:                                              ; preds = %187, %193, %185
  %198 = load i64, ptr %9, align 8, !tbaa !5
  %199 = add nsw i64 %198, 1
  store i64 %199, ptr %9, align 8, !tbaa !5
  %200 = load double, ptr %27, align 8, !tbaa !9
  %201 = getelementptr double, ptr %10, i64 %198
  store double %200, ptr %201, align 8, !tbaa !9
  %202 = icmp eq i64 %58, 0
  br i1 %202, label %226, label %203

203:                                              ; preds = %197
  %204 = load double, ptr %30, align 8, !tbaa !9
  %205 = fneg double %204
  %206 = mul nsw i64 %199, %52
  %207 = getelementptr double, ptr %54, i64 %206
  %208 = getelementptr i8, ptr %207, i64 8
  store double %205, ptr %208, align 8, !tbaa !9
  %209 = load double, ptr %28, align 8, !tbaa !9
  %210 = getelementptr i8, ptr %207, i64 16
  store double %209, ptr %210, align 8, !tbaa !9
  %211 = fcmp une double %204, 0.000000e+00
  br i1 %211, label %212, label %221

212:                                              ; preds = %203
  %213 = fcmp une double %209, 0.000000e+00
  %.idx481 = shl i64 %199, 4
  %214 = getelementptr i8, ptr %55, i64 %.idx481
  %215 = getelementptr i8, ptr %214, i64 -8
  store i64 1, ptr %215, align 8, !tbaa !5
  %216 = load i64, ptr %9, align 8, !tbaa !5
  %.idx482 = shl i64 %216, 4
  %217 = getelementptr i8, ptr %55, i64 %.idx482
  %218 = getelementptr i8, ptr %217, i64 -8
  br i1 %213, label %219, label %220

219:                                              ; preds = %212
  store i64 2, ptr %218, align 8, !tbaa !5
  br label %226

220:                                              ; preds = %212
  store i64 1, ptr %218, align 8, !tbaa !5
  br label %226

221:                                              ; preds = %203
  %.idx477 = shl i64 %199, 4
  %222 = getelementptr i8, ptr %55, i64 %.idx477
  %223 = getelementptr i8, ptr %222, i64 -8
  store i64 2, ptr %223, align 8, !tbaa !5
  %224 = load i64, ptr %9, align 8, !tbaa !5
  %.idx478 = shl nsw i64 %224, 4
  %225 = getelementptr inbounds i8, ptr %55, i64 %.idx478
  store i64 2, ptr %225, align 8, !tbaa !5
  br label %226

226:                                              ; preds = %197, %219, %220, %221
  br i1 %.not476, label %.thread501, label %237

.thread501:                                       ; preds = %193, %226
  br i1 %80, label %227, label %233

227:                                              ; preds = %.thread501
  %228 = load double, ptr %26, align 8, !tbaa !9
  %229 = load double, ptr %31, align 8, !tbaa !9
  %230 = fcmp ule double %228, %229
  %231 = load double, ptr %32, align 8
  %232 = fcmp ugt double %228, %231
  %or.cond496 = select i1 %230, i1 true, i1 %232
  br i1 %or.cond496, label %233, label %237

233:                                              ; preds = %227, %.thread501
  %234 = icmp ne i64 %61, 0
  %235 = load i64, ptr %34, align 8
  %236 = icmp eq i64 %235, 2
  %or.cond29 = select i1 %234, i1 %236, i1 false
  br i1 %or.cond29, label %237, label %480

237:                                              ; preds = %227, %233, %226
  %238 = load i64, ptr %9, align 8, !tbaa !5
  %239 = add nsw i64 %238, 1
  store i64 %239, ptr %9, align 8, !tbaa !5
  %240 = load double, ptr %26, align 8, !tbaa !9
  %241 = getelementptr double, ptr %10, i64 %238
  store double %240, ptr %241, align 8, !tbaa !9
  %242 = icmp eq i64 %58, 0
  br i1 %242, label %480, label %243

243:                                              ; preds = %237
  %244 = load double, ptr %28, align 8, !tbaa !9
  %245 = mul nsw i64 %239, %52
  %246 = getelementptr double, ptr %54, i64 %245
  %247 = getelementptr i8, ptr %246, i64 8
  store double %244, ptr %247, align 8, !tbaa !9
  %248 = load double, ptr %30, align 8, !tbaa !9
  %249 = getelementptr i8, ptr %246, i64 16
  store double %248, ptr %249, align 8, !tbaa !9
  %250 = fcmp une double %248, 0.000000e+00
  br i1 %250, label %251, label %260

251:                                              ; preds = %243
  %252 = fcmp une double %244, 0.000000e+00
  %.idx487 = shl i64 %239, 4
  %253 = getelementptr i8, ptr %55, i64 %.idx487
  %254 = getelementptr i8, ptr %253, i64 -8
  store i64 1, ptr %254, align 8, !tbaa !5
  %255 = load i64, ptr %9, align 8, !tbaa !5
  %.idx488 = shl i64 %255, 4
  %256 = getelementptr i8, ptr %55, i64 %.idx488
  %257 = getelementptr i8, ptr %256, i64 -8
  br i1 %252, label %258, label %259

258:                                              ; preds = %251
  store i64 2, ptr %257, align 8, !tbaa !5
  br label %480

259:                                              ; preds = %251
  store i64 1, ptr %257, align 8, !tbaa !5
  br label %480

260:                                              ; preds = %243
  %.idx483 = shl i64 %239, 4
  %261 = getelementptr i8, ptr %55, i64 %.idx483
  %262 = getelementptr i8, ptr %261, i64 -8
  store i64 2, ptr %262, align 8, !tbaa !5
  %263 = load i64, ptr %9, align 8, !tbaa !5
  %.idx484 = shl nsw i64 %263, 4
  %264 = getelementptr inbounds i8, ptr %55, i64 %.idx484
  store i64 2, ptr %264, align 8, !tbaa !5
  br label %480

265:                                              ; preds = %162
  %266 = shl i64 %163, 1
  %267 = mul nsw i64 %163, 3
  %268 = shl i64 %163, 2
  %269 = mul nsw i64 %163, 5
  store double 1.000000e+00, ptr %40, align 8, !tbaa !9
  %270 = call double @dlanst_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4) #5
  store double %270, ptr %36, align 8, !tbaa !9
  %271 = fcmp ogt double %270, 0.000000e+00
  %272 = fcmp olt double %270, %124
  %or.cond497 = select i1 %271, i1 %272, i1 false
  br i1 %or.cond497, label %273, label %275

273:                                              ; preds = %265
  %274 = fdiv double %124, %270
  store double %274, ptr %40, align 8, !tbaa !9
  br label %279

275:                                              ; preds = %265
  %276 = fcmp ogt double %270, %130
  br i1 %276, label %277, label %thread-pre-split502

277:                                              ; preds = %275
  %278 = fdiv double %130, %270
  store double %278, ptr %40, align 8, !tbaa !9
  br label %279

thread-pre-split502:                              ; preds = %275
  %.pr503 = load double, ptr %40, align 8, !tbaa !9
  br label %279

279:                                              ; preds = %thread-pre-split502, %277, %273
  %280 = phi double [ %.pr503, %thread-pre-split502 ], [ %278, %277 ], [ %274, %273 ]
  %281 = fcmp une double %280, 1.000000e+00
  br i1 %281, label %282, label %294

282:                                              ; preds = %279
  %283 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %40, ptr noundef %3, ptr noundef nonnull @c__1) #5
  %284 = load i64, ptr %2, align 8, !tbaa !5
  %285 = add nsw i64 %284, -1
  store i64 %285, ptr %24, align 8, !tbaa !5
  %286 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %40, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %287 = load double, ptr %40, align 8, !tbaa !9
  %288 = fmul double %287, %270
  store double %288, ptr %36, align 8, !tbaa !9
  br i1 %80, label %289, label %294

289:                                              ; preds = %282
  %290 = load double, ptr %31, align 8, !tbaa !9
  %291 = fmul double %287, %290
  store double %291, ptr %31, align 8, !tbaa !9
  %292 = load double, ptr %32, align 8, !tbaa !9
  %293 = fmul double %287, %292
  store double %293, ptr %32, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %282, %289, %279
  %295 = load i64, ptr %15, align 8, !tbaa !5
  %.not460 = icmp eq i64 %295, 0
  br i1 %.not460, label %.thread505, label %296

.thread505:                                       ; preds = %294
  store i64 -1, ptr %41, align 8, !tbaa !5
  br label %.thread507

296:                                              ; preds = %294
  %297 = call i32 @dlarrr_(ptr noundef nonnull %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %41) #5
  %.pr504 = load i64, ptr %41, align 8, !tbaa !5
  %298 = icmp eq i64 %.pr504, 0
  br i1 %298, label %300, label %.thread507

.thread507:                                       ; preds = %296, %.thread505
  %299 = fneg double %121
  store double %299, ptr %45, align 8, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %304

300:                                              ; preds = %296
  store double %121, ptr %45, align 8, !tbaa !9
  %.pr506 = load i64, ptr %15, align 8, !tbaa !5
  %.not461 = icmp eq i64 %.pr506, 0
  br i1 %.not461, label %304, label %301

301:                                              ; preds = %300
  %302 = getelementptr double, ptr %16, i64 %268
  %303 = call i32 @f2c_dcopy(ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull @c__1, ptr noundef %302, ptr noundef nonnull @c__1) #5
  br label %304

304:                                              ; preds = %.thread507, %301, %300
  %305 = load i64, ptr %2, align 8, !tbaa !5
  %306 = add nsw i64 %305, -1
  store i64 %306, ptr %24, align 8, !tbaa !5
  %.not462.not515 = icmp sgt i64 %305, 1
  br i1 %.not462.not515, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %304
  %307 = getelementptr double, ptr %56, i64 %269
  %308 = add nsw i64 %305, -1
  %min.iters.check = icmp ult i64 %305, 11
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %309 = mul i64 %163, 40
  %310 = add i64 %309, %23
  %311 = sub i64 %310, %22
  %diff.check = icmp ult i64 %311, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %308, -4
  %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 ]
  %offset.idx = or disjoint i64 %index, 1
  %312 = getelementptr double, ptr %4, i64 %index
  %313 = getelementptr inbounds i8, ptr %312, i64 16
  %wide.load = load <2 x double>, ptr %312, align 8, !tbaa !9
  %wide.load579 = load <2 x double>, ptr %313, align 8, !tbaa !9
  %314 = fmul <2 x double> %wide.load, %wide.load
  %315 = fmul <2 x double> %wide.load579, %wide.load579
  %316 = getelementptr double, ptr %307, i64 %offset.idx
  %317 = getelementptr i8, ptr %316, i64 16
  store <2 x double> %314, ptr %316, align 8, !tbaa !9
  store <2 x double> %315, ptr %317, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %318 = icmp eq i64 %index.next, %n.vec
  br i1 %318, label %middle.block, label %vector.body, !llvm.loop !11

middle.block:                                     ; preds = %vector.body
  %319 = extractelement <2 x double> %wide.load579, i64 1
  %cmp.n = icmp eq i64 %308, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %.0430516.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  %320 = sub i64 %305, %.0430516.ph
  %xtraiter = and i64 %320, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0430516.prol = phi i64 [ %325, %scalar.ph.prol ], [ %.0430516.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %321 = getelementptr inbounds double, ptr %50, i64 %.0430516.prol
  %322 = load double, ptr %321, align 8, !tbaa !9
  %323 = fmul double %322, %322
  %324 = getelementptr double, ptr %307, i64 %.0430516.prol
  store double %323, ptr %324, align 8, !tbaa !9
  %325 = add nuw nsw i64 %.0430516.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !15

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa581.unr = phi double [ poison, %scalar.ph.preheader ], [ %322, %scalar.ph.prol ]
  %.0430516.unr = phi i64 [ %.0430516.ph, %scalar.ph.preheader ], [ %325, %scalar.ph.prol ]
  %326 = sub i64 %.0430516.ph, %305
  %327 = icmp ugt i64 %326, -4
  br i1 %327, label %._crit_edge, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep590 = getelementptr i8, ptr %307, i64 8
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0430516 = phi i64 [ %.0430516.unr, %scalar.ph.preheader.new ], [ %345, %scalar.ph ]
  %328 = getelementptr inbounds double, ptr %50, i64 %.0430516
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = fmul double %329, %329
  %331 = getelementptr double, ptr %307, i64 %.0430516
  store double %330, ptr %331, align 8, !tbaa !9
  %332 = getelementptr double, ptr %4, i64 %.0430516
  %333 = load double, ptr %332, align 8, !tbaa !9
  %334 = fmul double %333, %333
  %gep591 = getelementptr double, ptr %invariant.gep590, i64 %.0430516
  store double %334, ptr %gep591, align 8, !tbaa !9
  %335 = add nuw nsw i64 %.0430516, 2
  %336 = getelementptr inbounds double, ptr %50, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !9
  %338 = fmul double %337, %337
  %339 = getelementptr double, ptr %307, i64 %335
  store double %338, ptr %339, align 8, !tbaa !9
  %340 = add nuw nsw i64 %.0430516, 3
  %341 = getelementptr inbounds double, ptr %50, i64 %340
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = fmul double %342, %342
  %344 = getelementptr double, ptr %307, i64 %340
  store double %343, ptr %344, align 8, !tbaa !9
  %345 = add nuw nsw i64 %.0430516, 4
  %exitcond.not.3 = icmp eq i64 %345, %305
  br i1 %exitcond.not.3, label %._crit_edge, label %scalar.ph, !llvm.loop !17

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %304
  %.lcssa = phi double [ %125, %304 ], [ %319, %middle.block ], [ %.lcssa581.unr, %scalar.ph.prol.loopexit ], [ %342, %scalar.ph ]
  store double %.lcssa, ptr %25, align 8, !tbaa !9
  br i1 %71, label %348, label %346

346:                                              ; preds = %._crit_edge
  %347 = fmul double %121, 4.000000e+00
  store double %347, ptr %38, align 8, !tbaa !9
  br label %355

348:                                              ; preds = %._crit_edge
  %349 = call double @sqrt(double noundef %121) #5
  store double %349, ptr %38, align 8, !tbaa !9
  %350 = call double @sqrt(double noundef %121) #5
  %351 = fmul double %350, 5.000000e-03
  store double %351, ptr %25, align 8, !tbaa !9
  %352 = fmul double %121, 4.000000e+00
  %353 = fcmp oge double %351, %352
  %354 = select i1 %353, double %351, double %352
  br label %355

355:                                              ; preds = %348, %346
  %storemerge = phi double [ %347, %346 ], [ %354, %348 ]
  store double %storemerge, ptr %39, align 8, !tbaa !9
  %356 = getelementptr double, ptr %16, i64 %269
  %357 = getelementptr double, ptr %16, i64 %266
  %358 = getelementptr double, ptr %16, i64 %267
  %359 = getelementptr i64, ptr %18, i64 %163
  %360 = getelementptr i64, ptr %18, i64 %266
  %.idx = mul i64 %163, 48
  %361 = getelementptr i8, ptr %16, i64 %.idx
  %362 = getelementptr i64, ptr %18, i64 %267
  %363 = call i32 @dlarre_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef %3, ptr noundef %4, ptr noundef %356, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %45, ptr noundef nonnull %49, ptr noundef nonnull %18, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %357, ptr noundef %358, ptr noundef %359, ptr noundef %360, ptr noundef nonnull %16, ptr noundef nonnull %48, ptr noundef %361, ptr noundef %362, ptr noundef nonnull %41) #5
  %364 = load i64, ptr %41, align 8
  %.not463 = icmp eq i64 %364, 0
  br i1 %.not463, label %368, label %365

365:                                              ; preds = %355
  %366 = call i64 @llvm.abs.i64(i64 %364, i1 true)
  %367 = add nuw nsw i64 %366, 10
  store i64 %367, ptr %20, align 8, !tbaa !5
  br label %480

368:                                              ; preds = %355
  br i1 %71, label %369, label %375

369:                                              ; preds = %368
  %370 = call i32 @dlarrv_(ptr noundef nonnull %2, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %3, ptr noundef %4, ptr noundef nonnull %48, ptr noundef nonnull %18, ptr noundef nonnull %9, ptr noundef nonnull @c__1, ptr noundef nonnull %9, ptr noundef nonnull @c_b18, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef %10, ptr noundef %357, ptr noundef %358, ptr noundef %359, ptr noundef %360, ptr noundef nonnull %16, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %14, ptr noundef %361, ptr noundef %362, ptr noundef nonnull %41) #5
  %371 = load i64, ptr %41, align 8
  %.not465 = icmp eq i64 %371, 0
  br i1 %.not465, label %.loopexit514, label %372

372:                                              ; preds = %369
  %373 = call i64 @llvm.abs.i64(i64 %371, i1 true)
  %374 = add nuw nsw i64 %373, 20
  store i64 %374, ptr %20, align 8, !tbaa !5
  br label %480

375:                                              ; preds = %368
  %376 = load i64, ptr %9, align 8, !tbaa !5
  store i64 %376, ptr %24, align 8, !tbaa !5
  %.not464517 = icmp slt i64 %376, 1
  br i1 %.not464517, label %.loopexit514, label %.lr.ph520

.lr.ph520:                                        ; preds = %375
  %377 = getelementptr i64, ptr %57, i64 %163
  %xtraiter582 = and i64 %376, 1
  %378 = icmp eq i64 %376, 1
  br i1 %378, label %..loopexit514_crit_edge.unr-lcssa, label %.lr.ph520.new

.lr.ph520.new:                                    ; preds = %.lr.ph520
  %unroll_iter = and i64 %376, 9223372036854775806
  %invariant.gep592 = getelementptr i8, ptr %377, i64 8
  br label %379

379:                                              ; preds = %379, %.lr.ph520.new
  %.1431518 = phi i64 [ 1, %.lr.ph520.new ], [ %397, %379 ]
  %niter = phi i64 [ 0, %.lr.ph520.new ], [ %niter.next.1, %379 ]
  %380 = getelementptr i64, ptr %377, i64 %.1431518
  %381 = load i64, ptr %380, align 8, !tbaa !5
  %382 = getelementptr inbounds i64, ptr %57, i64 %381
  %383 = load i64, ptr %382, align 8, !tbaa !5
  %384 = getelementptr inbounds double, ptr %50, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !9
  %386 = getelementptr inbounds double, ptr %51, i64 %.1431518
  %387 = load double, ptr %386, align 8, !tbaa !9
  %388 = fadd double %385, %387
  store double %388, ptr %386, align 8, !tbaa !9
  %gep593 = getelementptr i64, ptr %invariant.gep592, i64 %.1431518
  %389 = load i64, ptr %gep593, align 8, !tbaa !5
  %390 = getelementptr inbounds i64, ptr %57, i64 %389
  %391 = load i64, ptr %390, align 8, !tbaa !5
  %392 = getelementptr inbounds double, ptr %50, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = getelementptr double, ptr %10, i64 %.1431518
  %395 = load double, ptr %394, align 8, !tbaa !9
  %396 = fadd double %393, %395
  store double %396, ptr %394, align 8, !tbaa !9
  %397 = add nuw i64 %.1431518, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %..loopexit514_crit_edge.unr-lcssa, label %379, !llvm.loop !18

..loopexit514_crit_edge.unr-lcssa:                ; preds = %379, %.lr.ph520
  %.lcssa580.ph = phi i64 [ poison, %.lr.ph520 ], [ %389, %379 ]
  %.1431518.unr = phi i64 [ 1, %.lr.ph520 ], [ %397, %379 ]
  %lcmp.mod583.not = icmp eq i64 %xtraiter582, 0
  br i1 %lcmp.mod583.not, label %..loopexit514_crit_edge, label %..loopexit514_crit_edge.epilog-lcssa

..loopexit514_crit_edge.epilog-lcssa:             ; preds = %..loopexit514_crit_edge.unr-lcssa
  %398 = getelementptr i64, ptr %377, i64 %.1431518.unr
  %399 = load i64, ptr %398, align 8, !tbaa !5
  %400 = getelementptr inbounds i64, ptr %57, i64 %399
  %401 = load i64, ptr %400, align 8, !tbaa !5
  %402 = getelementptr inbounds double, ptr %50, i64 %401
  %403 = load double, ptr %402, align 8, !tbaa !9
  %404 = getelementptr inbounds double, ptr %51, i64 %.1431518.unr
  %405 = load double, ptr %404, align 8, !tbaa !9
  %406 = fadd double %403, %405
  store double %406, ptr %404, align 8, !tbaa !9
  br label %..loopexit514_crit_edge

..loopexit514_crit_edge:                          ; preds = %..loopexit514_crit_edge.unr-lcssa, %..loopexit514_crit_edge.epilog-lcssa
  %.lcssa580 = phi i64 [ %.lcssa580.ph, %..loopexit514_crit_edge.unr-lcssa ], [ %399, %..loopexit514_crit_edge.epilog-lcssa ]
  store i64 %.lcssa580, ptr %35, align 8, !tbaa !5
  br label %.loopexit514

.loopexit514:                                     ; preds = %375, %..loopexit514_crit_edge, %369
  %407 = load i64, ptr %15, align 8, !tbaa !5
  %.not466 = icmp eq i64 %407, 0
  br i1 %.not466, label %.loopexit513, label %408

408:                                              ; preds = %.loopexit514
  %409 = load i64, ptr %9, align 8, !tbaa !5
  %410 = getelementptr i64, ptr %57, i64 %163
  %411 = getelementptr i64, ptr %410, i64 %409
  %412 = load i64, ptr %411, align 8, !tbaa !5
  store i64 %412, ptr %24, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %360, i64 -8
  %.not467529 = icmp slt i64 %412, 1
  br i1 %.not467529, label %.loopexit513, label %.lr.ph534

.lr.ph534:                                        ; preds = %408
  %413 = fmul double %121, 4.000000e+00
  %414 = getelementptr double, ptr %16, i64 %268
  %invariant.gep535 = getelementptr i8, ptr %414, i64 -8
  %415 = getelementptr double, ptr %56, i64 %269
  br label %416

416:                                              ; preds = %.lr.ph534, %._crit_edge525.thread
  %417 = phi i64 [ %412, %.lr.ph534 ], [ %441, %._crit_edge525.thread ]
  %.0427532 = phi i64 [ 1, %.lr.ph534 ], [ %.1, %._crit_edge525.thread ]
  %.0433531 = phi i64 [ 1, %.lr.ph534 ], [ %.1434, %._crit_edge525.thread ]
  %.0437530 = phi i64 [ 1, %.lr.ph534 ], [ %418, %._crit_edge525.thread ]
  %418 = add nuw nsw i64 %.0437530, 1
  %419 = getelementptr inbounds i64, ptr %57, i64 %.0437530
  %420 = load i64, ptr %419, align 8, !tbaa !5
  %reass.sub = sub i64 %420, %.0433531
  %421 = add i64 %reass.sub, 1
  store i64 %421, ptr %29, align 8, !tbaa !5
  %422 = load i64, ptr %9, align 8, !tbaa !5
  %.not554 = icmp sgt i64 %.0427532, %422
  br i1 %.not554, label %._crit_edge525.thread, label %.lr.ph524.preheader

.lr.ph524.preheader:                              ; preds = %416
  %423 = add nsw i64 %.0427532, -1
  br label %.lr.ph524

.lr.ph524:                                        ; preds = %.lr.ph524.preheader, %427
  %.0439522 = phi i64 [ %428, %427 ], [ %423, %.lr.ph524.preheader ]
  %424 = getelementptr i64, ptr %359, i64 %.0439522
  %425 = load i64, ptr %424, align 8, !tbaa !5
  %426 = icmp eq i64 %425, %.0437530
  br i1 %426, label %427, label %._crit_edge525

427:                                              ; preds = %.lr.ph524
  %428 = add i64 %.0439522, 1
  %exitcond558.not = icmp eq i64 %428, %422
  br i1 %exitcond558.not, label %._crit_edge525, label %.lr.ph524

._crit_edge525:                                   ; preds = %427, %.lr.ph524
  %.0439.lcssa = phi i64 [ %422, %427 ], [ %.0439522, %.lr.ph524 ]
  %429 = icmp slt i64 %.0439.lcssa, %.0427532
  br i1 %429, label %._crit_edge525.thread, label %430

430:                                              ; preds = %._crit_edge525
  %431 = add i64 %.0427532, %266
  %432 = getelementptr inbounds i64, ptr %57, i64 %431
  %433 = load i64, ptr %432, align 8, !tbaa !5
  %434 = add nsw i64 %433, -1
  store i64 %434, ptr %44, align 8, !tbaa !5
  store i64 %433, ptr %46, align 8, !tbaa !5
  %gep = getelementptr i64, ptr %invariant.gep, i64 %.0439.lcssa
  %435 = load i64, ptr %gep, align 8, !tbaa !5
  store i64 %435, ptr %42, align 8, !tbaa !5
  store double %413, ptr %39, align 8, !tbaa !9
  %gep536 = getelementptr double, ptr %invariant.gep535, i64 %.0433531
  %436 = getelementptr double, ptr %415, i64 %.0433531
  %437 = getelementptr inbounds double, ptr %51, i64 %.0427532
  %438 = getelementptr inbounds double, ptr %56, i64 %431
  %439 = call i32 @dlarrj_(ptr noundef nonnull %29, ptr noundef %gep536, ptr noundef %436, ptr noundef nonnull %46, ptr noundef nonnull %42, ptr noundef nonnull %39, ptr noundef nonnull %44, ptr noundef nonnull %437, ptr noundef nonnull %438, ptr noundef %361, ptr noundef %362, ptr noundef nonnull %48, ptr noundef nonnull %36, ptr noundef nonnull %41) #5
  %440 = add nuw nsw i64 %.0439.lcssa, 1
  %.pre = load i64, ptr %24, align 8, !tbaa !5
  br label %._crit_edge525.thread

._crit_edge525.thread:                            ; preds = %416, %._crit_edge525, %430
  %441 = phi i64 [ %.pre, %430 ], [ %417, %._crit_edge525 ], [ %417, %416 ]
  %.1 = phi i64 [ %440, %430 ], [ %.0427532, %._crit_edge525 ], [ %.0427532, %416 ]
  %.1434 = add nsw i64 %420, 1
  %.not467.not = icmp slt i64 %.0437530, %441
  br i1 %.not467.not, label %416, label %.loopexit513, !llvm.loop !19

.loopexit513:                                     ; preds = %._crit_edge525.thread, %408, %.loopexit514
  %442 = load double, ptr %40, align 8, !tbaa !9
  %443 = fcmp une double %442, 1.000000e+00
  br i1 %443, label %444, label %447

444:                                              ; preds = %.loopexit513
  %445 = fdiv double 1.000000e+00, %442
  store double %445, ptr %25, align 8, !tbaa !9
  %446 = call i32 @f2c_dscal(ptr noundef nonnull %9, ptr noundef nonnull %25, ptr noundef %10, ptr noundef nonnull @c__1) #5
  br label %447

447:                                              ; preds = %444, %.loopexit513
  %448 = load i64, ptr %49, align 8, !tbaa !5
  %449 = icmp sgt i64 %448, 1
  br i1 %449, label %450, label %.loopexit

450:                                              ; preds = %447
  br i1 %71, label %455, label %451

451:                                              ; preds = %450
  %452 = call i32 @dlasrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %41) #5
  %453 = load i64, ptr %41, align 8, !tbaa !5
  %.not468 = icmp eq i64 %453, 0
  br i1 %.not468, label %.loopexit, label %454

454:                                              ; preds = %451
  store i64 3, ptr %20, align 8, !tbaa !5
  br label %480

455:                                              ; preds = %450
  %456 = load i64, ptr %9, align 8, !tbaa !5
  %457 = add nsw i64 %456, -1
  store i64 %457, ptr %24, align 8, !tbaa !5
  %invariant.gep546 = getelementptr i8, ptr %54, i64 8
  %.not469550 = icmp slt i64 %456, 2
  br i1 %.not469550, label %.loopexit, label %.lr.ph553

.lr.ph553:                                        ; preds = %455, %._crit_edge543.thread
  %458 = phi i64 [ %479, %._crit_edge543.thread ], [ %457, %455 ]
  %.2551 = phi i64 [ %462, %._crit_edge543.thread ], [ 1, %455 ]
  %459 = getelementptr inbounds double, ptr %51, i64 %.2551
  %460 = load double, ptr %459, align 8, !tbaa !9
  %461 = load i64, ptr %9, align 8, !tbaa !5
  %462 = add nuw nsw i64 %.2551, 1
  %.not470537.not = icmp slt i64 %.2551, %461
  br i1 %.not470537.not, label %.lr.ph542, label %._crit_edge543.thread

.lr.ph542:                                        ; preds = %.lr.ph553, %.lr.ph542
  %.0428540 = phi i64 [ %.1429, %.lr.ph542 ], [ 0, %.lr.ph553 ]
  %.0432539 = phi i64 [ %466, %.lr.ph542 ], [ %462, %.lr.ph553 ]
  %.0435538 = phi double [ %.1436, %.lr.ph542 ], [ %460, %.lr.ph553 ]
  %463 = getelementptr inbounds double, ptr %51, i64 %.0432539
  %464 = load double, ptr %463, align 8, !tbaa !9
  %465 = fcmp olt double %464, %.0435538
  %.1436 = select i1 %465, double %464, double %.0435538
  %.1429 = select i1 %465, i64 %.0432539, i64 %.0428540
  %466 = add nuw nsw i64 %.0432539, 1
  %.not470.not = icmp slt i64 %.0432539, %461
  br i1 %.not470.not, label %.lr.ph542, label %._crit_edge543, !llvm.loop !20

._crit_edge543:                                   ; preds = %.lr.ph542
  %.not471 = icmp eq i64 %.1429, 0
  br i1 %.not471, label %._crit_edge543.thread, label %467

467:                                              ; preds = %._crit_edge543
  %468 = getelementptr inbounds double, ptr %51, i64 %.1429
  store double %460, ptr %468, align 8, !tbaa !9
  store double %.1436, ptr %459, align 8, !tbaa !9
  %469 = mul nsw i64 %.1429, %52
  %gep547 = getelementptr double, ptr %invariant.gep546, i64 %469
  %470 = mul nsw i64 %.2551, %52
  %gep549 = getelementptr double, ptr %invariant.gep546, i64 %470
  %471 = call i32 @f2c_dswap(ptr noundef nonnull %2, ptr noundef %gep547, ptr noundef nonnull @c__1, ptr noundef %gep549, ptr noundef nonnull @c__1) #5
  %.idx472 = shl i64 %.1429, 4
  %472 = getelementptr i8, ptr %55, i64 %.idx472
  %473 = getelementptr i8, ptr %472, i64 -8
  %474 = load i64, ptr %473, align 8, !tbaa !5
  %.idx473 = shl i64 %.2551, 4
  %475 = getelementptr i8, ptr %55, i64 %.idx473
  %476 = getelementptr i8, ptr %475, i64 -8
  %477 = load i64, ptr %472, align 8, !tbaa !5
  store i64 %477, ptr %35, align 8, !tbaa !5
  %478 = load <2 x i64>, ptr %476, align 8, !tbaa !5
  store <2 x i64> %478, ptr %473, align 8, !tbaa !5
  store i64 %474, ptr %476, align 8, !tbaa !5
  store i64 %477, ptr %475, align 8, !tbaa !5
  %.pre561 = load i64, ptr %24, align 8, !tbaa !5
  br label %._crit_edge543.thread

._crit_edge543.thread:                            ; preds = %.lr.ph553, %._crit_edge543, %467
  %479 = phi i64 [ %458, %._crit_edge543 ], [ %.pre561, %467 ], [ %458, %.lr.ph553 ]
  %.not469.not = icmp slt i64 %.2551, %479
  br i1 %.not469.not, label %.lr.ph553, label %.loopexit, !llvm.loop !21

.loopexit:                                        ; preds = %._crit_edge543.thread, %455, %451, %447
  store double %134, ptr %16, align 8, !tbaa !9
  store i64 %.0426, ptr %18, align 8, !tbaa !5
  br label %480

480:                                              ; preds = %.thread565, %233, %260, %259, %258, %237, %162, %175, %177, %161, %.loopexit, %454, %372, %365, %.thread499
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  ret i32 0
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

declare i32 @dlarrc_(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 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare double @dlanst_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @dlarre_(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

declare i32 @dlarrv_(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

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

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

declare i32 @f2c_dswap(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 i64 @llvm.abs.i64(i64, i1 immarg) #4

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 = { 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 = !{!"long", !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, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}


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