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

; 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 [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@c_b10 = external hidden global double, align 8
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@c_b14 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b19 = external hidden global double, align 8
@c__2 = external hidden global i32, align 4

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

129:                                              ; preds = %17
  %130 = load i32, ptr %71, align 4, !tbaa !9
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %134, label %132

132:                                              ; preds = %129
  %133 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -1, ptr %133, align 4, !tbaa !9
  br label %238

134:                                              ; preds = %129, %17
  %135 = load i32, ptr %78, align 4, !tbaa !9
  %136 = icmp ne i32 %135, 0
  br i1 %136, label %143, label %137

137:                                              ; preds = %134
  %138 = load ptr, ptr %19, align 8, !tbaa !5
  %139 = call i32 @lsame_(ptr noundef %138, ptr noundef @.str.5)
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %143, label %141

141:                                              ; preds = %137
  %142 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %142, align 4, !tbaa !9
  br label %237

143:                                              ; preds = %137, %134
  %144 = load i32, ptr %65, align 4, !tbaa !9
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %154, label %146

146:                                              ; preds = %143
  %147 = load i32, ptr %74, align 4, !tbaa !9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %154, label %149

149:                                              ; preds = %146
  %150 = load i32, ptr %67, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %154, label %152

152:                                              ; preds = %149
  %153 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %153, align 4, !tbaa !9
  br label %236

154:                                              ; preds = %149, %146, %143
  %155 = load ptr, ptr %21, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = icmp slt i32 %156, 0
  br i1 %157, label %158, label %160

158:                                              ; preds = %154
  %159 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -4, ptr %159, align 4, !tbaa !9
  br label %235

160:                                              ; preds = %154
  %161 = load ptr, ptr %21, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = icmp sgt i32 %162, 0
  br i1 %163, label %164, label %234

164:                                              ; preds = %160
  %165 = load i32, ptr %74, align 4, !tbaa !9
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %167, label %183

167:                                              ; preds = %164
  %168 = load ptr, ptr %24, align 8, !tbaa !5
  %169 = load double, ptr %168, align 8, !tbaa !11
  %170 = fcmp olt double %169, 0.000000e+00
  br i1 %170, label %171, label %173

171:                                              ; preds = %167
  %172 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -7, ptr %172, align 4, !tbaa !9
  br label %182

173:                                              ; preds = %167
  %174 = load ptr, ptr %25, align 8, !tbaa !5
  %175 = load double, ptr %174, align 8, !tbaa !11
  %176 = load ptr, ptr %24, align 8, !tbaa !5
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = fcmp ole double %175, %177
  br i1 %178, label %179, label %181

179:                                              ; preds = %173
  %180 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -8, ptr %180, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %179, %173
  br label %182

182:                                              ; preds = %181, %171
  br label %233

183:                                              ; preds = %164
  %184 = load i32, ptr %67, align 4, !tbaa !9
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %232

186:                                              ; preds = %183
  %187 = load ptr, ptr %26, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = icmp slt i32 %188, 1
  br i1 %189, label %203, label %190

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

196:                                              ; preds = %190
  br label %200

197:                                              ; preds = %190
  %198 = load ptr, ptr %21, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  br label %200

200:                                              ; preds = %197, %196
  %201 = phi i32 [ 1, %196 ], [ %199, %197 ]
  %202 = icmp sgt i32 %192, %201
  br i1 %202, label %203, label %205

203:                                              ; preds = %200, %186
  %204 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -9, ptr %204, align 4, !tbaa !9
  br label %231

205:                                              ; preds = %200
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = load ptr, ptr %21, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = load ptr, ptr %26, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp sle i32 %209, %211
  br i1 %212, label %213, label %216

213:                                              ; preds = %205
  %214 = load ptr, ptr %21, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  br label %219

216:                                              ; preds = %205
  %217 = load ptr, ptr %26, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %216, %213
  %220 = phi i32 [ %215, %213 ], [ %218, %216 ]
  %221 = icmp slt i32 %207, %220
  br i1 %221, label %228, label %222

222:                                              ; preds = %219
  %223 = load ptr, ptr %27, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = load ptr, ptr %21, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = icmp sgt i32 %224, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %222, %219
  %229 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -10, ptr %229, align 4, !tbaa !9
  br label %230

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

231:                                              ; preds = %230, %203
  br label %232

232:                                              ; preds = %231, %183
  br label %233

233:                                              ; preds = %232, %182
  br label %234

234:                                              ; preds = %233, %160
  br label %235

235:                                              ; preds = %234, %158
  br label %236

236:                                              ; preds = %235, %152
  br label %237

237:                                              ; preds = %236, %141
  br label %238

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

242:                                              ; preds = %238
  %243 = load ptr, ptr %31, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = icmp slt i32 %244, 1
  br i1 %245, label %256, label %246

246:                                              ; preds = %242
  %247 = load i32, ptr %78, align 4, !tbaa !9
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %249, label %258

249:                                              ; preds = %246
  %250 = load ptr, ptr %31, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = load ptr, ptr %21, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = shl i32 %253, 1
  %255 = icmp slt i32 %251, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %249, %242
  %257 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -14, ptr %257, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %256, %249, %246
  br label %259

259:                                              ; preds = %258, %238
  %260 = load ptr, ptr %34, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %263, label %268

263:                                              ; preds = %259
  %264 = load ptr, ptr %34, align 8, !tbaa !5
  %265 = load i32, ptr %264, align 4, !tbaa !9
  %266 = sub nsw i32 0, %265
  store i32 %266, ptr %37, align 4, !tbaa !9
  %267 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %37, i32 noundef 7)
  store i32 1, ptr %94, align 4
  br label %2130

268:                                              ; preds = %259
  %269 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %269, align 4, !tbaa !9
  %270 = load ptr, ptr %21, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = icmp eq i32 %271, 0
  br i1 %272, label %273, label %274

273:                                              ; preds = %268
  store i32 1, ptr %94, align 4
  br label %2130

274:                                              ; preds = %268
  %275 = load ptr, ptr %21, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  %277 = icmp eq i32 %276, 1
  br i1 %277, label %278, label %403

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

281:                                              ; preds = %278
  %282 = load i32, ptr %67, align 4, !tbaa !9
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %303

284:                                              ; preds = %281, %278
  %285 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 1, ptr %285, align 4, !tbaa !9
  %286 = load ptr, ptr %22, align 8, !tbaa !5
  %287 = getelementptr inbounds double, ptr %286, i64 1
  %288 = load double, ptr %287, align 8, !tbaa !11
  %289 = fcmp oge double %288, 0.000000e+00
  br i1 %289, label %290, label %294

290:                                              ; preds = %284
  %291 = load ptr, ptr %22, align 8, !tbaa !5
  %292 = getelementptr inbounds double, ptr %291, i64 1
  %293 = load double, ptr %292, align 8, !tbaa !11
  br label %299

294:                                              ; preds = %284
  %295 = load ptr, ptr %22, align 8, !tbaa !5
  %296 = getelementptr inbounds double, ptr %295, i64 1
  %297 = load double, ptr %296, align 8, !tbaa !11
  %298 = fneg double %297
  br label %299

299:                                              ; preds = %294, %290
  %300 = phi double [ %293, %290 ], [ %298, %294 ]
  %301 = load ptr, ptr %29, align 8, !tbaa !5
  %302 = getelementptr inbounds double, ptr %301, i64 1
  store double %300, ptr %302, align 8, !tbaa !11
  br label %361

303:                                              ; preds = %281
  %304 = load ptr, ptr %24, align 8, !tbaa !5
  %305 = load double, ptr %304, align 8, !tbaa !11
  %306 = load ptr, ptr %22, align 8, !tbaa !5
  %307 = getelementptr inbounds double, ptr %306, i64 1
  %308 = load double, ptr %307, align 8, !tbaa !11
  %309 = fcmp oge double %308, 0.000000e+00
  br i1 %309, label %310, label %314

310:                                              ; preds = %303
  %311 = load ptr, ptr %22, align 8, !tbaa !5
  %312 = getelementptr inbounds double, ptr %311, i64 1
  %313 = load double, ptr %312, align 8, !tbaa !11
  br label %319

314:                                              ; preds = %303
  %315 = load ptr, ptr %22, align 8, !tbaa !5
  %316 = getelementptr inbounds double, ptr %315, i64 1
  %317 = load double, ptr %316, align 8, !tbaa !11
  %318 = fneg double %317
  br label %319

319:                                              ; preds = %314, %310
  %320 = phi double [ %313, %310 ], [ %318, %314 ]
  %321 = fcmp olt double %305, %320
  br i1 %321, label %322, label %360

322:                                              ; preds = %319
  %323 = load ptr, ptr %25, align 8, !tbaa !5
  %324 = load double, ptr %323, align 8, !tbaa !11
  %325 = load ptr, ptr %22, align 8, !tbaa !5
  %326 = getelementptr inbounds double, ptr %325, i64 1
  %327 = load double, ptr %326, align 8, !tbaa !11
  %328 = fcmp oge double %327, 0.000000e+00
  br i1 %328, label %329, label %333

329:                                              ; preds = %322
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = getelementptr inbounds double, ptr %330, i64 1
  %332 = load double, ptr %331, align 8, !tbaa !11
  br label %338

333:                                              ; preds = %322
  %334 = load ptr, ptr %22, align 8, !tbaa !5
  %335 = getelementptr inbounds double, ptr %334, i64 1
  %336 = load double, ptr %335, align 8, !tbaa !11
  %337 = fneg double %336
  br label %338

338:                                              ; preds = %333, %329
  %339 = phi double [ %332, %329 ], [ %337, %333 ]
  %340 = fcmp oge double %324, %339
  br i1 %340, label %341, label %360

341:                                              ; preds = %338
  %342 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 1, ptr %342, align 4, !tbaa !9
  %343 = load ptr, ptr %22, align 8, !tbaa !5
  %344 = getelementptr inbounds double, ptr %343, i64 1
  %345 = load double, ptr %344, align 8, !tbaa !11
  %346 = fcmp oge double %345, 0.000000e+00
  br i1 %346, label %347, label %351

347:                                              ; preds = %341
  %348 = load ptr, ptr %22, align 8, !tbaa !5
  %349 = getelementptr inbounds double, ptr %348, i64 1
  %350 = load double, ptr %349, align 8, !tbaa !11
  br label %356

351:                                              ; preds = %341
  %352 = load ptr, ptr %22, align 8, !tbaa !5
  %353 = getelementptr inbounds double, ptr %352, i64 1
  %354 = load double, ptr %353, align 8, !tbaa !11
  %355 = fneg double %354
  br label %356

356:                                              ; preds = %351, %347
  %357 = phi double [ %350, %347 ], [ %355, %351 ]
  %358 = load ptr, ptr %29, align 8, !tbaa !5
  %359 = getelementptr inbounds double, ptr %358, i64 1
  store double %357, ptr %359, align 8, !tbaa !11
  br label %360

360:                                              ; preds = %356, %338, %319
  br label %361

361:                                              ; preds = %360, %299
  %362 = load i32, ptr %78, align 4, !tbaa !9
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %364, label %402

364:                                              ; preds = %361
  %365 = load ptr, ptr %22, align 8, !tbaa !5
  %366 = getelementptr inbounds double, ptr %365, i64 1
  %367 = load double, ptr %366, align 8, !tbaa !11
  %368 = fcmp oge double %367, 0.000000e+00
  br i1 %368, label %369, label %379

369:                                              ; preds = %364
  %370 = load double, ptr @c_b10, align 8, !tbaa !11
  %371 = fcmp oge double %370, 0.000000e+00
  br i1 %371, label %372, label %374

372:                                              ; preds = %369
  %373 = load double, ptr @c_b10, align 8, !tbaa !11
  br label %377

374:                                              ; preds = %369
  %375 = load double, ptr @c_b10, align 8, !tbaa !11
  %376 = fneg double %375
  br label %377

377:                                              ; preds = %374, %372
  %378 = phi double [ %373, %372 ], [ %376, %374 ]
  br label %390

379:                                              ; preds = %364
  %380 = load double, ptr @c_b10, align 8, !tbaa !11
  %381 = fcmp oge double %380, 0.000000e+00
  br i1 %381, label %382, label %384

382:                                              ; preds = %379
  %383 = load double, ptr @c_b10, align 8, !tbaa !11
  br label %387

384:                                              ; preds = %379
  %385 = load double, ptr @c_b10, align 8, !tbaa !11
  %386 = fneg double %385
  br label %387

387:                                              ; preds = %384, %382
  %388 = phi double [ %383, %382 ], [ %386, %384 ]
  %389 = fneg double %388
  br label %390

390:                                              ; preds = %387, %377
  %391 = phi double [ %378, %377 ], [ %389, %387 ]
  %392 = load ptr, ptr %30, align 8, !tbaa !5
  %393 = load i32, ptr %35, align 4, !tbaa !9
  %394 = add nsw i32 %393, 1
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds double, ptr %392, i64 %395
  store double %391, ptr %396, align 8, !tbaa !11
  %397 = load ptr, ptr %30, align 8, !tbaa !5
  %398 = load i32, ptr %35, align 4, !tbaa !9
  %399 = add nsw i32 %398, 2
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds double, ptr %397, i64 %400
  store double 1.000000e+00, ptr %401, align 8, !tbaa !11
  br label %402

402:                                              ; preds = %390, %361
  store i32 1, ptr %94, align 4
  br label %2130

403:                                              ; preds = %274
  %404 = call double @dlamch_(ptr noundef @.str.7)
  %405 = fmul double %404, 2.000000e+00
  store double %405, ptr %85, align 8, !tbaa !11
  %406 = call double @dlamch_(ptr noundef @.str.8)
  store double %406, ptr %91, align 8, !tbaa !11
  %407 = call double @dlamch_(ptr noundef @.str.9)
  store double %407, ptr %88, align 8, !tbaa !11
  %408 = call double @sqrt(double noundef 2.000000e+00) #5
  store double %408, ptr %57, align 8, !tbaa !11
  %409 = load double, ptr %91, align 8, !tbaa !11
  %410 = call double @sqrt(double noundef %409) #5
  store double %410, ptr %76, align 8, !tbaa !11
  store double 1.000000e+02, ptr %44, align 8, !tbaa !11
  %411 = load double, ptr %88, align 8, !tbaa !11
  %412 = load double, ptr @c_b14, align 8, !tbaa !11
  %413 = call double @pow(double noundef %411, double noundef %412) #5
  store double %413, ptr %45, align 8, !tbaa !11
  store double 1.000000e+01, ptr %42, align 8, !tbaa !11
  %414 = load double, ptr %44, align 8, !tbaa !11
  %415 = load double, ptr %45, align 8, !tbaa !11
  %416 = fcmp ole double %414, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %403
  %418 = load double, ptr %44, align 8, !tbaa !11
  br label %421

419:                                              ; preds = %403
  %420 = load double, ptr %45, align 8, !tbaa !11
  br label %421

421:                                              ; preds = %419, %417
  %422 = phi double [ %418, %417 ], [ %420, %419 ]
  store double %422, ptr %43, align 8, !tbaa !11
  %423 = load double, ptr %42, align 8, !tbaa !11
  %424 = load double, ptr %43, align 8, !tbaa !11
  %425 = fcmp oge double %423, %424
  br i1 %425, label %426, label %428

426:                                              ; preds = %421
  %427 = load double, ptr %42, align 8, !tbaa !11
  br label %430

428:                                              ; preds = %421
  %429 = load double, ptr %43, align 8, !tbaa !11
  br label %430

430:                                              ; preds = %428, %426
  %431 = phi double [ %427, %426 ], [ %429, %428 ]
  %432 = load double, ptr %88, align 8, !tbaa !11
  %433 = fmul double %431, %432
  store double %433, ptr %90, align 8, !tbaa !11
  %434 = load ptr, ptr %21, align 8, !tbaa !5
  %435 = load ptr, ptr %22, align 8, !tbaa !5
  %436 = getelementptr inbounds double, ptr %435, i64 1
  %437 = call i32 @idamax_(ptr noundef %434, ptr noundef %436, ptr noundef @c__1)
  store i32 %437, ptr %53, align 4, !tbaa !9
  %438 = load ptr, ptr %22, align 8, !tbaa !5
  %439 = load i32, ptr %53, align 4, !tbaa !9
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds double, ptr %438, i64 %440
  %442 = load double, ptr %441, align 8, !tbaa !11
  store double %442, ptr %42, align 8, !tbaa !11
  %443 = load double, ptr %42, align 8, !tbaa !11
  %444 = fcmp oge double %443, 0.000000e+00
  br i1 %444, label %445, label %447

445:                                              ; preds = %430
  %446 = load double, ptr %42, align 8, !tbaa !11
  br label %450

447:                                              ; preds = %430
  %448 = load double, ptr %42, align 8, !tbaa !11
  %449 = fneg double %448
  br label %450

450:                                              ; preds = %447, %445
  %451 = phi double [ %446, %445 ], [ %449, %447 ]
  store double %451, ptr %49, align 8, !tbaa !11
  %452 = load ptr, ptr %21, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = sub nsw i32 %453, 1
  store i32 %454, ptr %37, align 4, !tbaa !9
  %455 = load ptr, ptr %23, align 8, !tbaa !5
  %456 = getelementptr inbounds double, ptr %455, i64 1
  %457 = call i32 @idamax_(ptr noundef %37, ptr noundef %456, ptr noundef @c__1)
  store i32 %457, ptr %53, align 4, !tbaa !9
  %458 = load double, ptr %49, align 8, !tbaa !11
  store double %458, ptr %43, align 8, !tbaa !11
  %459 = load ptr, ptr %23, align 8, !tbaa !5
  %460 = load i32, ptr %53, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds double, ptr %459, i64 %461
  %463 = load double, ptr %462, align 8, !tbaa !11
  store double %463, ptr %42, align 8, !tbaa !11
  %464 = load double, ptr %42, align 8, !tbaa !11
  %465 = fcmp oge double %464, 0.000000e+00
  br i1 %465, label %466, label %468

466:                                              ; preds = %450
  %467 = load double, ptr %42, align 8, !tbaa !11
  br label %471

468:                                              ; preds = %450
  %469 = load double, ptr %42, align 8, !tbaa !11
  %470 = fneg double %469
  br label %471

471:                                              ; preds = %468, %466
  %472 = phi double [ %467, %466 ], [ %470, %468 ]
  store double %472, ptr %44, align 8, !tbaa !11
  %473 = load double, ptr %43, align 8, !tbaa !11
  %474 = load double, ptr %44, align 8, !tbaa !11
  %475 = fcmp oge double %473, %474
  br i1 %475, label %476, label %478

476:                                              ; preds = %471
  %477 = load double, ptr %43, align 8, !tbaa !11
  br label %480

478:                                              ; preds = %471
  %479 = load double, ptr %44, align 8, !tbaa !11
  br label %480

480:                                              ; preds = %478, %476
  %481 = phi double [ %477, %476 ], [ %479, %478 ]
  store double %481, ptr %49, align 8, !tbaa !11
  %482 = load ptr, ptr %22, align 8, !tbaa !5
  %483 = getelementptr inbounds double, ptr %482, i64 1
  %484 = load double, ptr %483, align 8, !tbaa !11
  %485 = fcmp oge double %484, 0.000000e+00
  br i1 %485, label %486, label %490

486:                                              ; preds = %480
  %487 = load ptr, ptr %22, align 8, !tbaa !5
  %488 = getelementptr inbounds double, ptr %487, i64 1
  %489 = load double, ptr %488, align 8, !tbaa !11
  br label %495

490:                                              ; preds = %480
  %491 = load ptr, ptr %22, align 8, !tbaa !5
  %492 = getelementptr inbounds double, ptr %491, i64 1
  %493 = load double, ptr %492, align 8, !tbaa !11
  %494 = fneg double %493
  br label %495

495:                                              ; preds = %490, %486
  %496 = phi double [ %489, %486 ], [ %494, %490 ]
  store double %496, ptr %48, align 8, !tbaa !11
  %497 = load double, ptr %48, align 8, !tbaa !11
  %498 = fcmp une double %497, 0.000000e+00
  br i1 %498, label %499, label %559

499:                                              ; preds = %495
  %500 = load double, ptr %48, align 8, !tbaa !11
  store double %500, ptr %84, align 8, !tbaa !11
  %501 = load ptr, ptr %21, align 8, !tbaa !5
  %502 = load i32, ptr %501, align 4, !tbaa !9
  store i32 %502, ptr %37, align 4, !tbaa !9
  store i32 2, ptr %53, align 4, !tbaa !9
  br label %503

503:                                              ; preds = %555, %499
  %504 = load i32, ptr %53, align 4, !tbaa !9
  %505 = load i32, ptr %37, align 4, !tbaa !9
  %506 = icmp sle i32 %504, %505
  br i1 %506, label %507, label %558

507:                                              ; preds = %503
  %508 = load ptr, ptr %22, align 8, !tbaa !5
  %509 = load i32, ptr %53, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %508, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  store double %512, ptr %43, align 8, !tbaa !11
  %513 = load double, ptr %43, align 8, !tbaa !11
  %514 = fcmp oge double %513, 0.000000e+00
  br i1 %514, label %515, label %517

515:                                              ; preds = %507
  %516 = load double, ptr %43, align 8, !tbaa !11
  br label %520

517:                                              ; preds = %507
  %518 = load double, ptr %43, align 8, !tbaa !11
  %519 = fneg double %518
  br label %520

520:                                              ; preds = %517, %515
  %521 = phi double [ %516, %515 ], [ %519, %517 ]
  %522 = load double, ptr %84, align 8, !tbaa !11
  %523 = load double, ptr %84, align 8, !tbaa !11
  %524 = load ptr, ptr %23, align 8, !tbaa !5
  %525 = load i32, ptr %53, align 4, !tbaa !9
  %526 = sub nsw i32 %525, 1
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %524, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !11
  store double %529, ptr %42, align 8, !tbaa !11
  %530 = load double, ptr %42, align 8, !tbaa !11
  %531 = fcmp oge double %530, 0.000000e+00
  br i1 %531, label %532, label %534

532:                                              ; preds = %520
  %533 = load double, ptr %42, align 8, !tbaa !11
  br label %537

534:                                              ; preds = %520
  %535 = load double, ptr %42, align 8, !tbaa !11
  %536 = fneg double %535
  br label %537

537:                                              ; preds = %534, %532
  %538 = phi double [ %533, %532 ], [ %536, %534 ]
  %539 = fadd double %523, %538
  %540 = fdiv double %522, %539
  %541 = fmul double %521, %540
  store double %541, ptr %84, align 8, !tbaa !11
  %542 = load double, ptr %48, align 8, !tbaa !11
  %543 = load double, ptr %84, align 8, !tbaa !11
  %544 = fcmp ole double %542, %543
  br i1 %544, label %545, label %547

545:                                              ; preds = %537
  %546 = load double, ptr %48, align 8, !tbaa !11
  br label %549

547:                                              ; preds = %537
  %548 = load double, ptr %84, align 8, !tbaa !11
  br label %549

549:                                              ; preds = %547, %545
  %550 = phi double [ %546, %545 ], [ %548, %547 ]
  store double %550, ptr %48, align 8, !tbaa !11
  %551 = load double, ptr %48, align 8, !tbaa !11
  %552 = fcmp oeq double %551, 0.000000e+00
  br i1 %552, label %553, label %554

553:                                              ; preds = %549
  br label %558

554:                                              ; preds = %549
  br label %555

555:                                              ; preds = %554
  %556 = load i32, ptr %53, align 4, !tbaa !9
  %557 = add nsw i32 %556, 1
  store i32 %557, ptr %53, align 4, !tbaa !9
  br label %503, !llvm.loop !13

558:                                              ; preds = %553, %503
  br label %559

559:                                              ; preds = %558, %495
  %560 = load ptr, ptr %21, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  %562 = sitofp i32 %561 to double
  %563 = call double @sqrt(double noundef %562) #5
  %564 = load double, ptr %48, align 8, !tbaa !11
  %565 = fdiv double %564, %563
  store double %565, ptr %48, align 8, !tbaa !11
  %566 = load double, ptr %90, align 8, !tbaa !11
  %567 = load double, ptr %48, align 8, !tbaa !11
  %568 = fmul double %566, %567
  store double %568, ptr %86, align 8, !tbaa !11
  %569 = load ptr, ptr %21, align 8, !tbaa !5
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = sub nsw i32 %570, 1
  store i32 %571, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %572

572:                                              ; preds = %621, %559
  %573 = load i32, ptr %53, align 4, !tbaa !9
  %574 = load i32, ptr %37, align 4, !tbaa !9
  %575 = icmp sle i32 %573, %574
  br i1 %575, label %576, label %624

576:                                              ; preds = %572
  %577 = load ptr, ptr %22, align 8, !tbaa !5
  %578 = load i32, ptr %53, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds double, ptr %577, i64 %579
  %581 = load double, ptr %580, align 8, !tbaa !11
  store double %581, ptr %42, align 8, !tbaa !11
  %582 = load double, ptr %42, align 8, !tbaa !11
  %583 = fcmp oge double %582, 0.000000e+00
  br i1 %583, label %584, label %586

584:                                              ; preds = %576
  %585 = load double, ptr %42, align 8, !tbaa !11
  br label %589

586:                                              ; preds = %576
  %587 = load double, ptr %42, align 8, !tbaa !11
  %588 = fneg double %587
  br label %589

589:                                              ; preds = %586, %584
  %590 = phi double [ %585, %584 ], [ %588, %586 ]
  %591 = load double, ptr %86, align 8, !tbaa !11
  %592 = fcmp ole double %590, %591
  br i1 %592, label %593, label %598

593:                                              ; preds = %589
  %594 = load ptr, ptr %22, align 8, !tbaa !5
  %595 = load i32, ptr %53, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %594, i64 %596
  store double 0.000000e+00, ptr %597, align 8, !tbaa !11
  br label %598

598:                                              ; preds = %593, %589
  %599 = load ptr, ptr %23, align 8, !tbaa !5
  %600 = load i32, ptr %53, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds double, ptr %599, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !11
  store double %603, ptr %42, align 8, !tbaa !11
  %604 = load double, ptr %42, align 8, !tbaa !11
  %605 = fcmp oge double %604, 0.000000e+00
  br i1 %605, label %606, label %608

606:                                              ; preds = %598
  %607 = load double, ptr %42, align 8, !tbaa !11
  br label %611

608:                                              ; preds = %598
  %609 = load double, ptr %42, align 8, !tbaa !11
  %610 = fneg double %609
  br label %611

611:                                              ; preds = %608, %606
  %612 = phi double [ %607, %606 ], [ %610, %608 ]
  %613 = load double, ptr %86, align 8, !tbaa !11
  %614 = fcmp ole double %612, %613
  br i1 %614, label %615, label %620

615:                                              ; preds = %611
  %616 = load ptr, ptr %23, align 8, !tbaa !5
  %617 = load i32, ptr %53, align 4, !tbaa !9
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %616, i64 %618
  store double 0.000000e+00, ptr %619, align 8, !tbaa !11
  br label %620

620:                                              ; preds = %615, %611
  br label %621

621:                                              ; preds = %620
  %622 = load i32, ptr %53, align 4, !tbaa !9
  %623 = add nsw i32 %622, 1
  store i32 %623, ptr %53, align 4, !tbaa !9
  br label %572, !llvm.loop !15

624:                                              ; preds = %572
  %625 = load ptr, ptr %22, align 8, !tbaa !5
  %626 = load ptr, ptr %21, align 8, !tbaa !5
  %627 = load i32, ptr %626, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds double, ptr %625, i64 %628
  %630 = load double, ptr %629, align 8, !tbaa !11
  store double %630, ptr %42, align 8, !tbaa !11
  %631 = load double, ptr %42, align 8, !tbaa !11
  %632 = fcmp oge double %631, 0.000000e+00
  br i1 %632, label %633, label %635

633:                                              ; preds = %624
  %634 = load double, ptr %42, align 8, !tbaa !11
  br label %638

635:                                              ; preds = %624
  %636 = load double, ptr %42, align 8, !tbaa !11
  %637 = fneg double %636
  br label %638

638:                                              ; preds = %635, %633
  %639 = phi double [ %634, %633 ], [ %637, %635 ]
  %640 = load double, ptr %86, align 8, !tbaa !11
  %641 = fcmp ole double %639, %640
  br i1 %641, label %642, label %648

642:                                              ; preds = %638
  %643 = load ptr, ptr %22, align 8, !tbaa !5
  %644 = load ptr, ptr %21, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %643, i64 %646
  store double 0.000000e+00, ptr %647, align 8, !tbaa !11
  br label %648

648:                                              ; preds = %642, %638
  store i32 1, ptr %60, align 4, !tbaa !9
  %649 = load i32, ptr %60, align 4, !tbaa !9
  %650 = load ptr, ptr %21, align 8, !tbaa !5
  %651 = load i32, ptr %650, align 4, !tbaa !9
  %652 = shl i32 %651, 1
  %653 = add nsw i32 %649, %652
  store i32 %653, ptr %61, align 4, !tbaa !9
  %654 = load i32, ptr %61, align 4, !tbaa !9
  %655 = load ptr, ptr %21, align 8, !tbaa !5
  %656 = load i32, ptr %655, align 4, !tbaa !9
  %657 = shl i32 %656, 1
  %658 = add nsw i32 %654, %657
  store i32 %658, ptr %63, align 4, !tbaa !9
  store i32 1, ptr %83, align 4, !tbaa !9
  %659 = load i32, ptr %83, align 4, !tbaa !9
  %660 = load ptr, ptr %21, align 8, !tbaa !5
  %661 = load i32, ptr %660, align 4, !tbaa !9
  %662 = shl i32 %661, 1
  %663 = add nsw i32 %659, %662
  store i32 %663, ptr %87, align 4, !tbaa !9
  store i32 0, ptr %62, align 4, !tbaa !9
  store i32 0, ptr %69, align 4, !tbaa !9
  store double 0.000000e+00, ptr %70, align 8, !tbaa !11
  store double 0.000000e+00, ptr %77, align 8, !tbaa !11
  %664 = load i32, ptr %65, align 4, !tbaa !9
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %666, label %683

666:                                              ; preds = %648
  %667 = getelementptr inbounds [1 x i8], ptr %79, i64 0, i64 0
  store i8 73, ptr %667, align 1, !tbaa !16
  %668 = load i32, ptr %78, align 4, !tbaa !9
  %669 = icmp ne i32 %668, 0
  br i1 %669, label %670, label %682

670:                                              ; preds = %666
  %671 = load ptr, ptr %21, align 8, !tbaa !5
  %672 = load i32, ptr %671, align 4, !tbaa !9
  %673 = shl i32 %672, 1
  store i32 %673, ptr %37, align 4, !tbaa !9
  %674 = load ptr, ptr %21, align 8, !tbaa !5
  %675 = load i32, ptr %674, align 4, !tbaa !9
  %676 = add nsw i32 %675, 1
  store i32 %676, ptr %38, align 4, !tbaa !9
  %677 = load ptr, ptr %30, align 8, !tbaa !5
  %678 = load i32, ptr %36, align 4, !tbaa !9
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds double, ptr %677, i64 %679
  %681 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.10, ptr noundef %37, ptr noundef %38, ptr noundef @c_b19, ptr noundef @c_b19, ptr noundef %680, ptr noundef %681)
  br label %682

682:                                              ; preds = %670, %666
  br label %987

683:                                              ; preds = %648
  %684 = load i32, ptr %74, align 4, !tbaa !9
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %686, label %782

686:                                              ; preds = %683
  %687 = getelementptr inbounds [1 x i8], ptr %79, i64 0, i64 0
  store i8 86, ptr %687, align 1, !tbaa !16
  %688 = load ptr, ptr %25, align 8, !tbaa !5
  %689 = load double, ptr %688, align 8, !tbaa !11
  %690 = fneg double %689
  store double %690, ptr %70, align 8, !tbaa !11
  %691 = load ptr, ptr %24, align 8, !tbaa !5
  %692 = load double, ptr %691, align 8, !tbaa !11
  %693 = fneg double %692
  store double %693, ptr %77, align 8, !tbaa !11
  %694 = load i32, ptr %60, align 4, !tbaa !9
  %695 = load ptr, ptr %21, align 8, !tbaa !5
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = shl i32 %696, 1
  %698 = add nsw i32 %694, %697
  %699 = sub nsw i32 %698, 1
  store i32 %699, ptr %37, align 4, !tbaa !9
  %700 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %700, ptr %53, align 4, !tbaa !9
  br label %701

701:                                              ; preds = %710, %686
  %702 = load i32, ptr %53, align 4, !tbaa !9
  %703 = load i32, ptr %37, align 4, !tbaa !9
  %704 = icmp sle i32 %702, %703
  br i1 %704, label %705, label %713

705:                                              ; preds = %701
  %706 = load ptr, ptr %32, align 8, !tbaa !5
  %707 = load i32, ptr %53, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %706, i64 %708
  store double 0.000000e+00, ptr %709, align 8, !tbaa !11
  br label %710

710:                                              ; preds = %705
  %711 = load i32, ptr %53, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  store i32 %712, ptr %53, align 4, !tbaa !9
  br label %701, !llvm.loop !17

713:                                              ; preds = %701
  %714 = load ptr, ptr %21, align 8, !tbaa !5
  %715 = load ptr, ptr %22, align 8, !tbaa !5
  %716 = getelementptr inbounds double, ptr %715, i64 1
  %717 = load ptr, ptr %32, align 8, !tbaa !5
  %718 = load i32, ptr %61, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds double, ptr %717, i64 %719
  call void @dcopy_(ptr noundef %714, ptr noundef %716, ptr noundef @c__1, ptr noundef %720, ptr noundef @c__2)
  %721 = load ptr, ptr %21, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = sub nsw i32 %722, 1
  store i32 %723, ptr %37, align 4, !tbaa !9
  %724 = load ptr, ptr %23, align 8, !tbaa !5
  %725 = getelementptr inbounds double, ptr %724, i64 1
  %726 = load ptr, ptr %32, align 8, !tbaa !5
  %727 = load i32, ptr %61, align 4, !tbaa !9
  %728 = add nsw i32 %727, 1
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds double, ptr %726, i64 %729
  call void @dcopy_(ptr noundef %37, ptr noundef %725, ptr noundef @c__1, ptr noundef %730, ptr noundef @c__2)
  %731 = load ptr, ptr %21, align 8, !tbaa !5
  %732 = load i32, ptr %731, align 4, !tbaa !9
  %733 = shl i32 %732, 1
  store i32 %733, ptr %37, align 4, !tbaa !9
  %734 = load ptr, ptr %32, align 8, !tbaa !5
  %735 = load i32, ptr %60, align 4, !tbaa !9
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds double, ptr %734, i64 %736
  %738 = load ptr, ptr %32, align 8, !tbaa !5
  %739 = load i32, ptr %61, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds double, ptr %738, i64 %740
  %742 = load ptr, ptr %28, align 8, !tbaa !5
  %743 = load ptr, ptr %29, align 8, !tbaa !5
  %744 = getelementptr inbounds double, ptr %743, i64 1
  %745 = load ptr, ptr %30, align 8, !tbaa !5
  %746 = load i32, ptr %36, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds double, ptr %745, i64 %747
  %749 = load ptr, ptr %31, align 8, !tbaa !5
  %750 = load ptr, ptr %32, align 8, !tbaa !5
  %751 = load i32, ptr %63, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %750, i64 %752
  %754 = load ptr, ptr %33, align 8, !tbaa !5
  %755 = load i32, ptr %87, align 4, !tbaa !9
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds i32, ptr %754, i64 %756
  %758 = load ptr, ptr %33, align 8, !tbaa !5
  %759 = load i32, ptr %83, align 4, !tbaa !9
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds i32, ptr %758, i64 %760
  %762 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dstevx_(ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef %37, ptr noundef %737, ptr noundef %741, ptr noundef %70, ptr noundef %77, ptr noundef %62, ptr noundef %62, ptr noundef %85, ptr noundef %742, ptr noundef %744, ptr noundef %748, ptr noundef %749, ptr noundef %753, ptr noundef %757, ptr noundef %761, ptr noundef %762)
  %763 = load ptr, ptr %28, align 8, !tbaa !5
  %764 = load i32, ptr %763, align 4, !tbaa !9
  %765 = icmp eq i32 %764, 0
  br i1 %765, label %766, label %767

766:                                              ; preds = %713
  store i32 1, ptr %94, align 4
  br label %2130

767:                                              ; preds = %713
  %768 = load i32, ptr %78, align 4, !tbaa !9
  %769 = icmp ne i32 %768, 0
  br i1 %769, label %770, label %780

770:                                              ; preds = %767
  %771 = load ptr, ptr %21, align 8, !tbaa !5
  %772 = load i32, ptr %771, align 4, !tbaa !9
  %773 = shl i32 %772, 1
  store i32 %773, ptr %37, align 4, !tbaa !9
  %774 = load ptr, ptr %28, align 8, !tbaa !5
  %775 = load ptr, ptr %30, align 8, !tbaa !5
  %776 = load i32, ptr %36, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %775, i64 %777
  %779 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.10, ptr noundef %37, ptr noundef %774, ptr noundef @c_b19, ptr noundef @c_b19, ptr noundef %778, ptr noundef %779)
  br label %780

780:                                              ; preds = %770, %767
  br label %781

781:                                              ; preds = %780
  br label %986

782:                                              ; preds = %683
  %783 = load i32, ptr %67, align 4, !tbaa !9
  %784 = icmp ne i32 %783, 0
  br i1 %784, label %785, label %985

785:                                              ; preds = %782
  %786 = load ptr, ptr %26, align 8, !tbaa !5
  %787 = load i32, ptr %786, align 4, !tbaa !9
  store i32 %787, ptr %62, align 4, !tbaa !9
  %788 = load ptr, ptr %27, align 8, !tbaa !5
  %789 = load i32, ptr %788, align 4, !tbaa !9
  store i32 %789, ptr %69, align 4, !tbaa !9
  %790 = getelementptr inbounds [1 x i8], ptr %79, i64 0, i64 0
  store i8 86, ptr %790, align 1, !tbaa !16
  %791 = load i32, ptr %60, align 4, !tbaa !9
  %792 = load ptr, ptr %21, align 8, !tbaa !5
  %793 = load i32, ptr %792, align 4, !tbaa !9
  %794 = shl i32 %793, 1
  %795 = add nsw i32 %791, %794
  %796 = sub nsw i32 %795, 1
  store i32 %796, ptr %37, align 4, !tbaa !9
  %797 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %797, ptr %53, align 4, !tbaa !9
  br label %798

798:                                              ; preds = %807, %785
  %799 = load i32, ptr %53, align 4, !tbaa !9
  %800 = load i32, ptr %37, align 4, !tbaa !9
  %801 = icmp sle i32 %799, %800
  br i1 %801, label %802, label %810

802:                                              ; preds = %798
  %803 = load ptr, ptr %32, align 8, !tbaa !5
  %804 = load i32, ptr %53, align 4, !tbaa !9
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds double, ptr %803, i64 %805
  store double 0.000000e+00, ptr %806, align 8, !tbaa !11
  br label %807

807:                                              ; preds = %802
  %808 = load i32, ptr %53, align 4, !tbaa !9
  %809 = add nsw i32 %808, 1
  store i32 %809, ptr %53, align 4, !tbaa !9
  br label %798, !llvm.loop !18

810:                                              ; preds = %798
  %811 = load ptr, ptr %21, align 8, !tbaa !5
  %812 = load ptr, ptr %22, align 8, !tbaa !5
  %813 = getelementptr inbounds double, ptr %812, i64 1
  %814 = load ptr, ptr %32, align 8, !tbaa !5
  %815 = load i32, ptr %61, align 4, !tbaa !9
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds double, ptr %814, i64 %816
  call void @dcopy_(ptr noundef %811, ptr noundef %813, ptr noundef @c__1, ptr noundef %817, ptr noundef @c__2)
  %818 = load ptr, ptr %21, align 8, !tbaa !5
  %819 = load i32, ptr %818, align 4, !tbaa !9
  %820 = sub nsw i32 %819, 1
  store i32 %820, ptr %37, align 4, !tbaa !9
  %821 = load ptr, ptr %23, align 8, !tbaa !5
  %822 = getelementptr inbounds double, ptr %821, i64 1
  %823 = load ptr, ptr %32, align 8, !tbaa !5
  %824 = load i32, ptr %61, align 4, !tbaa !9
  %825 = add nsw i32 %824, 1
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds double, ptr %823, i64 %826
  call void @dcopy_(ptr noundef %37, ptr noundef %822, ptr noundef @c__1, ptr noundef %827, ptr noundef @c__2)
  %828 = load ptr, ptr %21, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = shl i32 %829, 1
  store i32 %830, ptr %37, align 4, !tbaa !9
  %831 = load ptr, ptr %32, align 8, !tbaa !5
  %832 = load i32, ptr %60, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds double, ptr %831, i64 %833
  %835 = load ptr, ptr %32, align 8, !tbaa !5
  %836 = load i32, ptr %61, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %835, i64 %837
  %839 = load ptr, ptr %28, align 8, !tbaa !5
  %840 = load ptr, ptr %29, align 8, !tbaa !5
  %841 = getelementptr inbounds double, ptr %840, i64 1
  %842 = load ptr, ptr %30, align 8, !tbaa !5
  %843 = load i32, ptr %36, align 4, !tbaa !9
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %842, i64 %844
  %846 = load ptr, ptr %31, align 8, !tbaa !5
  %847 = load ptr, ptr %32, align 8, !tbaa !5
  %848 = load i32, ptr %63, align 4, !tbaa !9
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds double, ptr %847, i64 %849
  %851 = load ptr, ptr %33, align 8, !tbaa !5
  %852 = load i32, ptr %87, align 4, !tbaa !9
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds i32, ptr %851, i64 %853
  %855 = load ptr, ptr %33, align 8, !tbaa !5
  %856 = load i32, ptr %83, align 4, !tbaa !9
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds i32, ptr %855, i64 %857
  %859 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dstevx_(ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %37, ptr noundef %834, ptr noundef %838, ptr noundef %70, ptr noundef %70, ptr noundef %62, ptr noundef %62, ptr noundef %85, ptr noundef %839, ptr noundef %841, ptr noundef %845, ptr noundef %846, ptr noundef %850, ptr noundef %854, ptr noundef %858, ptr noundef %859)
  %860 = load ptr, ptr %29, align 8, !tbaa !5
  %861 = getelementptr inbounds double, ptr %860, i64 1
  %862 = load double, ptr %861, align 8, !tbaa !11
  %863 = load double, ptr %49, align 8, !tbaa !11
  %864 = fmul double %863, 2.000000e+00
  %865 = load double, ptr %91, align 8, !tbaa !11
  %866 = fmul double %864, %865
  %867 = load ptr, ptr %21, align 8, !tbaa !5
  %868 = load i32, ptr %867, align 4, !tbaa !9
  %869 = sitofp i32 %868 to double
  %870 = fneg double %866
  %871 = call double @llvm.fmuladd.f64(double %870, double %869, double %862)
  store double %871, ptr %70, align 8, !tbaa !11
  %872 = load i32, ptr %60, align 4, !tbaa !9
  %873 = load ptr, ptr %21, align 8, !tbaa !5
  %874 = load i32, ptr %873, align 4, !tbaa !9
  %875 = shl i32 %874, 1
  %876 = add nsw i32 %872, %875
  %877 = sub nsw i32 %876, 1
  store i32 %877, ptr %37, align 4, !tbaa !9
  %878 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %878, ptr %53, align 4, !tbaa !9
  br label %879

879:                                              ; preds = %888, %810
  %880 = load i32, ptr %53, align 4, !tbaa !9
  %881 = load i32, ptr %37, align 4, !tbaa !9
  %882 = icmp sle i32 %880, %881
  br i1 %882, label %883, label %891

883:                                              ; preds = %879
  %884 = load ptr, ptr %32, align 8, !tbaa !5
  %885 = load i32, ptr %53, align 4, !tbaa !9
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds double, ptr %884, i64 %886
  store double 0.000000e+00, ptr %887, align 8, !tbaa !11
  br label %888

888:                                              ; preds = %883
  %889 = load i32, ptr %53, align 4, !tbaa !9
  %890 = add nsw i32 %889, 1
  store i32 %890, ptr %53, align 4, !tbaa !9
  br label %879, !llvm.loop !19

891:                                              ; preds = %879
  %892 = load ptr, ptr %21, align 8, !tbaa !5
  %893 = load ptr, ptr %22, align 8, !tbaa !5
  %894 = getelementptr inbounds double, ptr %893, i64 1
  %895 = load ptr, ptr %32, align 8, !tbaa !5
  %896 = load i32, ptr %61, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %895, i64 %897
  call void @dcopy_(ptr noundef %892, ptr noundef %894, ptr noundef @c__1, ptr noundef %898, ptr noundef @c__2)
  %899 = load ptr, ptr %21, align 8, !tbaa !5
  %900 = load i32, ptr %899, align 4, !tbaa !9
  %901 = sub nsw i32 %900, 1
  store i32 %901, ptr %37, align 4, !tbaa !9
  %902 = load ptr, ptr %23, align 8, !tbaa !5
  %903 = getelementptr inbounds double, ptr %902, i64 1
  %904 = load ptr, ptr %32, align 8, !tbaa !5
  %905 = load i32, ptr %61, align 4, !tbaa !9
  %906 = add nsw i32 %905, 1
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %904, i64 %907
  call void @dcopy_(ptr noundef %37, ptr noundef %903, ptr noundef @c__1, ptr noundef %908, ptr noundef @c__2)
  %909 = load ptr, ptr %21, align 8, !tbaa !5
  %910 = load i32, ptr %909, align 4, !tbaa !9
  %911 = shl i32 %910, 1
  store i32 %911, ptr %37, align 4, !tbaa !9
  %912 = load ptr, ptr %32, align 8, !tbaa !5
  %913 = load i32, ptr %60, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %912, i64 %914
  %916 = load ptr, ptr %32, align 8, !tbaa !5
  %917 = load i32, ptr %61, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds double, ptr %916, i64 %918
  %920 = load ptr, ptr %28, align 8, !tbaa !5
  %921 = load ptr, ptr %29, align 8, !tbaa !5
  %922 = getelementptr inbounds double, ptr %921, i64 1
  %923 = load ptr, ptr %30, align 8, !tbaa !5
  %924 = load i32, ptr %36, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds double, ptr %923, i64 %925
  %927 = load ptr, ptr %31, align 8, !tbaa !5
  %928 = load ptr, ptr %32, align 8, !tbaa !5
  %929 = load i32, ptr %63, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds double, ptr %928, i64 %930
  %932 = load ptr, ptr %33, align 8, !tbaa !5
  %933 = load i32, ptr %87, align 4, !tbaa !9
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds i32, ptr %932, i64 %934
  %936 = load ptr, ptr %33, align 8, !tbaa !5
  %937 = load i32, ptr %83, align 4, !tbaa !9
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds i32, ptr %936, i64 %938
  %940 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dstevx_(ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef %37, ptr noundef %915, ptr noundef %919, ptr noundef %77, ptr noundef %77, ptr noundef %69, ptr noundef %69, ptr noundef %85, ptr noundef %920, ptr noundef %922, ptr noundef %926, ptr noundef %927, ptr noundef %931, ptr noundef %935, ptr noundef %939, ptr noundef %940)
  %941 = load ptr, ptr %29, align 8, !tbaa !5
  %942 = getelementptr inbounds double, ptr %941, i64 1
  %943 = load double, ptr %942, align 8, !tbaa !11
  %944 = load double, ptr %49, align 8, !tbaa !11
  %945 = fmul double %944, 2.000000e+00
  %946 = load double, ptr %91, align 8, !tbaa !11
  %947 = fmul double %945, %946
  %948 = load ptr, ptr %21, align 8, !tbaa !5
  %949 = load i32, ptr %948, align 4, !tbaa !9
  %950 = sitofp i32 %949 to double
  %951 = call double @llvm.fmuladd.f64(double %947, double %950, double %943)
  store double %951, ptr %77, align 8, !tbaa !11
  %952 = load double, ptr %77, align 8, !tbaa !11
  %953 = fcmp ole double %952, 0.000000e+00
  br i1 %953, label %954, label %956

954:                                              ; preds = %891
  %955 = load double, ptr %77, align 8, !tbaa !11
  br label %957

956:                                              ; preds = %891
  br label %957

957:                                              ; preds = %956, %954
  %958 = phi double [ %955, %954 ], [ 0.000000e+00, %956 ]
  store double %958, ptr %77, align 8, !tbaa !11
  %959 = load double, ptr %70, align 8, !tbaa !11
  %960 = load double, ptr %77, align 8, !tbaa !11
  %961 = fcmp oeq double %959, %960
  br i1 %961, label %962, label %966

962:                                              ; preds = %957
  %963 = load double, ptr %90, align 8, !tbaa !11
  %964 = load double, ptr %70, align 8, !tbaa !11
  %965 = fsub double %964, %963
  store double %965, ptr %70, align 8, !tbaa !11
  br label %966

966:                                              ; preds = %962, %957
  %967 = load i32, ptr %78, align 4, !tbaa !9
  %968 = icmp ne i32 %967, 0
  br i1 %968, label %969, label %984

969:                                              ; preds = %966
  %970 = load ptr, ptr %21, align 8, !tbaa !5
  %971 = load i32, ptr %970, align 4, !tbaa !9
  %972 = shl i32 %971, 1
  store i32 %972, ptr %37, align 4, !tbaa !9
  %973 = load ptr, ptr %27, align 8, !tbaa !5
  %974 = load i32, ptr %973, align 4, !tbaa !9
  %975 = load ptr, ptr %26, align 8, !tbaa !5
  %976 = load i32, ptr %975, align 4, !tbaa !9
  %977 = sub nsw i32 %974, %976
  %978 = add nsw i32 %977, 1
  store i32 %978, ptr %38, align 4, !tbaa !9
  %979 = load ptr, ptr %30, align 8, !tbaa !5
  %980 = load i32, ptr %36, align 4, !tbaa !9
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds double, ptr %979, i64 %981
  %983 = load ptr, ptr %31, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.10, ptr noundef %37, ptr noundef %38, ptr noundef @c_b19, ptr noundef @c_b19, ptr noundef %982, ptr noundef %983)
  br label %984

984:                                              ; preds = %969, %966
  br label %985

985:                                              ; preds = %984, %782
  br label %986

986:                                              ; preds = %985, %781
  br label %987

987:                                              ; preds = %986, %682
  %988 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %988, align 4, !tbaa !9
  store i32 0, ptr %92, align 4, !tbaa !9
  store i32 0, ptr %93, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  store i32 2, ptr %80, align 4, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !9
  store i32 0, ptr %73, align 4, !tbaa !9
  store i32 0, ptr %52, align 4, !tbaa !9
  %989 = load ptr, ptr %21, align 8, !tbaa !5
  %990 = load i32, ptr %989, align 4, !tbaa !9
  store i32 %990, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %991

991:                                              ; preds = %1000, %987
  %992 = load i32, ptr %53, align 4, !tbaa !9
  %993 = load i32, ptr %37, align 4, !tbaa !9
  %994 = icmp sle i32 %992, %993
  br i1 %994, label %995, label %1003

995:                                              ; preds = %991
  %996 = load ptr, ptr %29, align 8, !tbaa !5
  %997 = load i32, ptr %53, align 4, !tbaa !9
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds double, ptr %996, i64 %998
  store double 0.000000e+00, ptr %999, align 8, !tbaa !11
  br label %1000

1000:                                             ; preds = %995
  %1001 = load i32, ptr %53, align 4, !tbaa !9
  %1002 = add nsw i32 %1001, 1
  store i32 %1002, ptr %53, align 4, !tbaa !9
  br label %991, !llvm.loop !20

1003:                                             ; preds = %991
  %1004 = load ptr, ptr %32, align 8, !tbaa !5
  %1005 = load i32, ptr %61, align 4, !tbaa !9
  %1006 = load ptr, ptr %21, align 8, !tbaa !5
  %1007 = load i32, ptr %1006, align 4, !tbaa !9
  %1008 = shl i32 %1007, 1
  %1009 = add nsw i32 %1005, %1008
  %1010 = sub nsw i32 %1009, 1
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds double, ptr %1004, i64 %1011
  store double 0.000000e+00, ptr %1012, align 8, !tbaa !11
  %1013 = load i32, ptr %60, align 4, !tbaa !9
  %1014 = load ptr, ptr %21, align 8, !tbaa !5
  %1015 = load i32, ptr %1014, align 4, !tbaa !9
  %1016 = shl i32 %1015, 1
  %1017 = add nsw i32 %1013, %1016
  %1018 = sub nsw i32 %1017, 1
  store i32 %1018, ptr %37, align 4, !tbaa !9
  %1019 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %1019, ptr %53, align 4, !tbaa !9
  br label %1020

1020:                                             ; preds = %1029, %1003
  %1021 = load i32, ptr %53, align 4, !tbaa !9
  %1022 = load i32, ptr %37, align 4, !tbaa !9
  %1023 = icmp sle i32 %1021, %1022
  br i1 %1023, label %1024, label %1032

1024:                                             ; preds = %1020
  %1025 = load ptr, ptr %32, align 8, !tbaa !5
  %1026 = load i32, ptr %53, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds double, ptr %1025, i64 %1027
  store double 0.000000e+00, ptr %1028, align 8, !tbaa !11
  br label %1029

1029:                                             ; preds = %1024
  %1030 = load i32, ptr %53, align 4, !tbaa !9
  %1031 = add nsw i32 %1030, 1
  store i32 %1031, ptr %53, align 4, !tbaa !9
  br label %1020, !llvm.loop !21

1032:                                             ; preds = %1020
  %1033 = load ptr, ptr %21, align 8, !tbaa !5
  %1034 = load ptr, ptr %22, align 8, !tbaa !5
  %1035 = getelementptr inbounds double, ptr %1034, i64 1
  %1036 = load ptr, ptr %32, align 8, !tbaa !5
  %1037 = load i32, ptr %61, align 4, !tbaa !9
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds double, ptr %1036, i64 %1038
  call void @dcopy_(ptr noundef %1033, ptr noundef %1035, ptr noundef @c__1, ptr noundef %1039, ptr noundef @c__2)
  %1040 = load ptr, ptr %21, align 8, !tbaa !5
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = sub nsw i32 %1041, 1
  store i32 %1042, ptr %37, align 4, !tbaa !9
  %1043 = load ptr, ptr %23, align 8, !tbaa !5
  %1044 = getelementptr inbounds double, ptr %1043, i64 1
  %1045 = load ptr, ptr %32, align 8, !tbaa !5
  %1046 = load i32, ptr %61, align 4, !tbaa !9
  %1047 = add nsw i32 %1046, 1
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds double, ptr %1045, i64 %1048
  call void @dcopy_(ptr noundef %37, ptr noundef %1044, ptr noundef @c__1, ptr noundef %1049, ptr noundef @c__2)
  %1050 = load ptr, ptr %21, align 8, !tbaa !5
  %1051 = load i32, ptr %1050, align 4, !tbaa !9
  %1052 = shl i32 %1051, 1
  store i32 %1052, ptr %37, align 4, !tbaa !9
  store i32 2, ptr %68, align 4, !tbaa !9
  br label %1053

1053:                                             ; preds = %1876, %1032
  %1054 = load i32, ptr %68, align 4, !tbaa !9
  %1055 = load i32, ptr %37, align 4, !tbaa !9
  %1056 = icmp sle i32 %1054, %1055
  br i1 %1056, label %1057, label %1879

1057:                                             ; preds = %1053
  %1058 = load ptr, ptr %32, align 8, !tbaa !5
  %1059 = load i32, ptr %61, align 4, !tbaa !9
  %1060 = load i32, ptr %68, align 4, !tbaa !9
  %1061 = add nsw i32 %1059, %1060
  %1062 = sub nsw i32 %1061, 1
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds double, ptr %1058, i64 %1063
  %1065 = load double, ptr %1064, align 8, !tbaa !11
  %1066 = fcmp oeq double %1065, 0.000000e+00
  br i1 %1066, label %1067, label %1875

1067:                                             ; preds = %1057
  %1068 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %1068, ptr %75, align 4, !tbaa !9
  %1069 = load i32, ptr %68, align 4, !tbaa !9
  %1070 = sub nsw i32 %1069, 1
  store i32 %1070, ptr %58, align 4, !tbaa !9
  %1071 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1071, ptr %38, align 4, !tbaa !9
  %1072 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %1072, ptr %66, align 4, !tbaa !9
  br label %1073

1073:                                             ; preds = %1812, %1067
  %1074 = load i32, ptr %66, align 4, !tbaa !9
  %1075 = load i32, ptr %38, align 4, !tbaa !9
  %1076 = icmp sle i32 %1074, %1075
  br i1 %1076, label %1077, label %1815

1077:                                             ; preds = %1073
  %1078 = load ptr, ptr %32, align 8, !tbaa !5
  %1079 = load i32, ptr %61, align 4, !tbaa !9
  %1080 = load i32, ptr %66, align 4, !tbaa !9
  %1081 = add nsw i32 %1079, %1080
  %1082 = sub nsw i32 %1081, 1
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds double, ptr %1078, i64 %1083
  %1085 = load double, ptr %1084, align 8, !tbaa !11
  %1086 = fcmp oeq double %1085, 0.000000e+00
  br i1 %1086, label %1087, label %1136

1087:                                             ; preds = %1077
  %1088 = load i32, ptr %66, align 4, !tbaa !9
  %1089 = load i32, ptr %54, align 4, !tbaa !9
  %1090 = icmp eq i32 %1088, %1089
  br i1 %1090, label %1091, label %1097

1091:                                             ; preds = %1087
  store i32 1, ptr %52, align 4, !tbaa !9
  %1092 = load i32, ptr %54, align 4, !tbaa !9
  %1093 = load i32, ptr %58, align 4, !tbaa !9
  %1094 = icmp eq i32 %1092, %1093
  br i1 %1094, label %1095, label %1096

1095:                                             ; preds = %1091
  store i32 1, ptr %92, align 4, !tbaa !9
  store i32 1, ptr %93, align 4, !tbaa !9
  br label %1096

1096:                                             ; preds = %1095, %1091
  br label %1135

1097:                                             ; preds = %1087
  %1098 = load i32, ptr %66, align 4, !tbaa !9
  %1099 = load i32, ptr %58, align 4, !tbaa !9
  %1100 = icmp eq i32 %1098, %1099
  br i1 %1100, label %1101, label %1115

1101:                                             ; preds = %1097
  store i32 1, ptr %52, align 4, !tbaa !9
  %1102 = load i32, ptr %58, align 4, !tbaa !9
  %1103 = load i32, ptr %75, align 4, !tbaa !9
  %1104 = sub nsw i32 %1102, %1103
  %1105 = sdiv i32 %1104, 2
  %1106 = add nsw i32 %1105, 1
  store i32 %1106, ptr %92, align 4, !tbaa !9
  %1107 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %1107, ptr %93, align 4, !tbaa !9
  %1108 = load i32, ptr %75, align 4, !tbaa !9
  %1109 = load i32, ptr %54, align 4, !tbaa !9
  %1110 = icmp ne i32 %1108, %1109
  br i1 %1110, label %1111, label %1114

1111:                                             ; preds = %1101
  %1112 = load i32, ptr %92, align 4, !tbaa !9
  %1113 = add nsw i32 %1112, 1
  store i32 %1113, ptr %92, align 4, !tbaa !9
  br label %1114

1114:                                             ; preds = %1111, %1101
  br label %1134

1115:                                             ; preds = %1097
  %1116 = load i32, ptr %75, align 4, !tbaa !9
  %1117 = load i32, ptr %54, align 4, !tbaa !9
  %1118 = icmp eq i32 %1116, %1117
  br i1 %1118, label %1119, label %1126

1119:                                             ; preds = %1115
  %1120 = load i32, ptr %66, align 4, !tbaa !9
  %1121 = load i32, ptr %54, align 4, !tbaa !9
  %1122 = sub nsw i32 %1120, %1121
  %1123 = sdiv i32 %1122, 2
  store i32 %1123, ptr %92, align 4, !tbaa !9
  %1124 = load i32, ptr %92, align 4, !tbaa !9
  %1125 = add nsw i32 %1124, 1
  store i32 %1125, ptr %93, align 4, !tbaa !9
  br label %1133

1126:                                             ; preds = %1115
  %1127 = load i32, ptr %66, align 4, !tbaa !9
  %1128 = load i32, ptr %75, align 4, !tbaa !9
  %1129 = sub nsw i32 %1127, %1128
  %1130 = sdiv i32 %1129, 2
  %1131 = add nsw i32 %1130, 1
  store i32 %1131, ptr %92, align 4, !tbaa !9
  %1132 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %1132, ptr %93, align 4, !tbaa !9
  br label %1133

1133:                                             ; preds = %1126, %1119
  br label %1134

1134:                                             ; preds = %1133, %1114
  br label %1135

1135:                                             ; preds = %1134, %1096
  br label %1161

1136:                                             ; preds = %1077
  %1137 = load i32, ptr %66, align 4, !tbaa !9
  %1138 = load i32, ptr %58, align 4, !tbaa !9
  %1139 = icmp eq i32 %1137, %1138
  br i1 %1139, label %1140, label %1160

1140:                                             ; preds = %1136
  %1141 = load i32, ptr %75, align 4, !tbaa !9
  %1142 = load i32, ptr %54, align 4, !tbaa !9
  %1143 = icmp eq i32 %1141, %1142
  br i1 %1143, label %1144, label %1151

1144:                                             ; preds = %1140
  %1145 = load i32, ptr %58, align 4, !tbaa !9
  %1146 = load i32, ptr %54, align 4, !tbaa !9
  %1147 = sub nsw i32 %1145, %1146
  %1148 = sdiv i32 %1147, 2
  %1149 = add nsw i32 %1148, 1
  store i32 %1149, ptr %92, align 4, !tbaa !9
  %1150 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %1150, ptr %93, align 4, !tbaa !9
  br label %1159

1151:                                             ; preds = %1140
  %1152 = load i32, ptr %58, align 4, !tbaa !9
  %1153 = load i32, ptr %75, align 4, !tbaa !9
  %1154 = sub nsw i32 %1152, %1153
  %1155 = sdiv i32 %1154, 2
  %1156 = add nsw i32 %1155, 1
  store i32 %1156, ptr %93, align 4, !tbaa !9
  %1157 = load i32, ptr %93, align 4, !tbaa !9
  %1158 = add nsw i32 %1157, 1
  store i32 %1158, ptr %92, align 4, !tbaa !9
  br label %1159

1159:                                             ; preds = %1151, %1144
  br label %1160

1160:                                             ; preds = %1159, %1136
  br label %1161

1161:                                             ; preds = %1160, %1135
  %1162 = load i32, ptr %92, align 4, !tbaa !9
  %1163 = load i32, ptr %93, align 4, !tbaa !9
  %1164 = add nsw i32 %1162, %1163
  store i32 %1164, ptr %47, align 4, !tbaa !9
  %1165 = load i32, ptr %47, align 4, !tbaa !9
  %1166 = icmp sgt i32 %1165, 0
  br i1 %1166, label %1167, label %1782

1167:                                             ; preds = %1161
  store i32 1, ptr %62, align 4, !tbaa !9
  %1168 = load i32, ptr %47, align 4, !tbaa !9
  %1169 = sdiv i32 %1168, 2
  store i32 %1169, ptr %69, align 4, !tbaa !9
  %1170 = load i32, ptr %65, align 4, !tbaa !9
  %1171 = icmp ne i32 %1170, 0
  br i1 %1171, label %1175, label %1172

1172:                                             ; preds = %1167
  %1173 = load double, ptr %77, align 8, !tbaa !11
  %1174 = fcmp oeq double %1173, 0.000000e+00
  br i1 %1174, label %1175, label %1190

1175:                                             ; preds = %1172, %1167
  %1176 = load i32, ptr %52, align 4, !tbaa !9
  %1177 = icmp ne i32 %1176, 0
  br i1 %1177, label %1186, label %1178

1178:                                             ; preds = %1175
  %1179 = load double, ptr %48, align 8, !tbaa !11
  %1180 = load double, ptr %88, align 8, !tbaa !11
  %1181 = fcmp olt double %1179, %1180
  br i1 %1181, label %1186, label %1182

1182:                                             ; preds = %1178
  %1183 = load i32, ptr %47, align 4, !tbaa !9
  %1184 = srem i32 %1183, 2
  %1185 = icmp sgt i32 %1184, 0
  br i1 %1185, label %1186, label %1189

1186:                                             ; preds = %1182, %1178, %1175
  %1187 = load i32, ptr %69, align 4, !tbaa !9
  %1188 = add nsw i32 %1187, 1
  store i32 %1188, ptr %69, align 4, !tbaa !9
  br label %1189

1189:                                             ; preds = %1186, %1182
  br label %1190

1190:                                             ; preds = %1189, %1172
  %1191 = load ptr, ptr %19, align 8, !tbaa !5
  %1192 = getelementptr inbounds [1 x i8], ptr %79, i64 0, i64 0
  %1193 = load ptr, ptr %32, align 8, !tbaa !5
  %1194 = load i32, ptr %60, align 4, !tbaa !9
  %1195 = load i32, ptr %75, align 4, !tbaa !9
  %1196 = add nsw i32 %1194, %1195
  %1197 = sub nsw i32 %1196, 1
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds double, ptr %1193, i64 %1198
  %1200 = load ptr, ptr %32, align 8, !tbaa !5
  %1201 = load i32, ptr %61, align 4, !tbaa !9
  %1202 = load i32, ptr %75, align 4, !tbaa !9
  %1203 = add nsw i32 %1201, %1202
  %1204 = sub nsw i32 %1203, 1
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds double, ptr %1200, i64 %1205
  %1207 = load ptr, ptr %29, align 8, !tbaa !5
  %1208 = load i32, ptr %59, align 4, !tbaa !9
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1207, i64 %1209
  %1211 = load ptr, ptr %30, align 8, !tbaa !5
  %1212 = load i32, ptr %82, align 4, !tbaa !9
  %1213 = load i32, ptr %64, align 4, !tbaa !9
  %1214 = load i32, ptr %35, align 4, !tbaa !9
  %1215 = mul nsw i32 %1213, %1214
  %1216 = add nsw i32 %1212, %1215
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds double, ptr %1211, i64 %1217
  %1219 = load ptr, ptr %31, align 8, !tbaa !5
  %1220 = load ptr, ptr %32, align 8, !tbaa !5
  %1221 = load i32, ptr %63, align 4, !tbaa !9
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %1220, i64 %1222
  %1224 = load ptr, ptr %33, align 8, !tbaa !5
  %1225 = load i32, ptr %87, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds i32, ptr %1224, i64 %1226
  %1228 = load ptr, ptr %33, align 8, !tbaa !5
  %1229 = load i32, ptr %83, align 4, !tbaa !9
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds i32, ptr %1228, i64 %1230
  %1232 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dstevx_(ptr noundef %1191, ptr noundef %1192, ptr noundef %47, ptr noundef %1199, ptr noundef %1206, ptr noundef %70, ptr noundef %77, ptr noundef %62, ptr noundef %69, ptr noundef %85, ptr noundef %89, ptr noundef %1210, ptr noundef %1218, ptr noundef %1219, ptr noundef %1223, ptr noundef %1227, ptr noundef %1231, ptr noundef %1232)
  %1233 = load ptr, ptr %34, align 8, !tbaa !5
  %1234 = load i32, ptr %1233, align 4, !tbaa !9
  %1235 = icmp ne i32 %1234, 0
  br i1 %1235, label %1236, label %1237

1236:                                             ; preds = %1190
  store i32 1, ptr %94, align 4
  br label %2130

1237:                                             ; preds = %1190
  %1238 = load ptr, ptr %29, align 8, !tbaa !5
  %1239 = load i32, ptr %59, align 4, !tbaa !9
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds double, ptr %1238, i64 %1240
  %1242 = load double, ptr %1241, align 8, !tbaa !11
  store double %1242, ptr %42, align 8, !tbaa !11
  %1243 = load double, ptr %42, align 8, !tbaa !11
  %1244 = fcmp oge double %1243, 0.000000e+00
  br i1 %1244, label %1245, label %1247

1245:                                             ; preds = %1237
  %1246 = load double, ptr %42, align 8, !tbaa !11
  br label %1250

1247:                                             ; preds = %1237
  %1248 = load double, ptr %42, align 8, !tbaa !11
  %1249 = fneg double %1248
  br label %1250

1250:                                             ; preds = %1247, %1245
  %1251 = phi double [ %1246, %1245 ], [ %1249, %1247 ]
  store double %1251, ptr %46, align 8, !tbaa !11
  %1252 = load i32, ptr %59, align 4, !tbaa !9
  %1253 = load i32, ptr %89, align 4, !tbaa !9
  %1254 = add nsw i32 %1252, %1253
  %1255 = sub nsw i32 %1254, 1
  store i32 %1255, ptr %39, align 4, !tbaa !9
  %1256 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %1256, ptr %53, align 4, !tbaa !9
  br label %1257

1257:                                             ; preds = %1285, %1250
  %1258 = load i32, ptr %53, align 4, !tbaa !9
  %1259 = load i32, ptr %39, align 4, !tbaa !9
  %1260 = icmp sle i32 %1258, %1259
  br i1 %1260, label %1261, label %1288

1261:                                             ; preds = %1257
  %1262 = load ptr, ptr %29, align 8, !tbaa !5
  %1263 = load i32, ptr %53, align 4, !tbaa !9
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds double, ptr %1262, i64 %1264
  %1266 = load double, ptr %1265, align 8, !tbaa !11
  store double %1266, ptr %42, align 8, !tbaa !11
  %1267 = load double, ptr %42, align 8, !tbaa !11
  %1268 = fcmp oge double %1267, 0.000000e+00
  br i1 %1268, label %1269, label %1271

1269:                                             ; preds = %1261
  %1270 = load double, ptr %42, align 8, !tbaa !11
  br label %1274

1271:                                             ; preds = %1261
  %1272 = load double, ptr %42, align 8, !tbaa !11
  %1273 = fneg double %1272
  br label %1274

1274:                                             ; preds = %1271, %1269
  %1275 = phi double [ %1270, %1269 ], [ %1273, %1271 ]
  %1276 = load double, ptr %46, align 8, !tbaa !11
  %1277 = fcmp ogt double %1275, %1276
  br i1 %1277, label %1278, label %1284

1278:                                             ; preds = %1274
  %1279 = load ptr, ptr %29, align 8, !tbaa !5
  %1280 = load i32, ptr %53, align 4, !tbaa !9
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds double, ptr %1279, i64 %1281
  %1283 = load double, ptr %1282, align 8, !tbaa !11
  store double %1283, ptr %46, align 8, !tbaa !11
  br label %1284

1284:                                             ; preds = %1278, %1274
  br label %1285

1285:                                             ; preds = %1284
  %1286 = load i32, ptr %53, align 4, !tbaa !9
  %1287 = add nsw i32 %1286, 1
  store i32 %1287, ptr %53, align 4, !tbaa !9
  br label %1257, !llvm.loop !22

1288:                                             ; preds = %1257
  %1289 = load i32, ptr %89, align 4, !tbaa !9
  %1290 = icmp sgt i32 %1289, 0
  br i1 %1290, label %1291, label %1721

1291:                                             ; preds = %1288
  %1292 = load i32, ptr %78, align 4, !tbaa !9
  %1293 = icmp ne i32 %1292, 0
  br i1 %1293, label %1294, label %1721

1294:                                             ; preds = %1291
  %1295 = load i32, ptr %89, align 4, !tbaa !9
  %1296 = icmp sgt i32 %1295, 1
  br i1 %1296, label %1297, label %1361

1297:                                             ; preds = %1294
  %1298 = load double, ptr %77, align 8, !tbaa !11
  %1299 = fcmp oeq double %1298, 0.000000e+00
  br i1 %1299, label %1300, label %1361

1300:                                             ; preds = %1297
  %1301 = load i32, ptr %47, align 4, !tbaa !9
  %1302 = srem i32 %1301, 2
  %1303 = icmp eq i32 %1302, 0
  br i1 %1303, label %1304, label %1361

1304:                                             ; preds = %1300
  %1305 = load double, ptr %46, align 8, !tbaa !11
  %1306 = fcmp oeq double %1305, 0.000000e+00
  br i1 %1306, label %1307, label %1361

1307:                                             ; preds = %1304
  %1308 = load i32, ptr %73, align 4, !tbaa !9
  %1309 = icmp ne i32 %1308, 0
  br i1 %1309, label %1361, label %1310

1310:                                             ; preds = %1307
  %1311 = load i32, ptr %82, align 4, !tbaa !9
  %1312 = load i32, ptr %47, align 4, !tbaa !9
  %1313 = add nsw i32 %1311, %1312
  %1314 = sub nsw i32 %1313, 1
  store i32 %1314, ptr %39, align 4, !tbaa !9
  %1315 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %1315, ptr %53, align 4, !tbaa !9
  br label %1316

1316:                                             ; preds = %1357, %1310
  %1317 = load i32, ptr %53, align 4, !tbaa !9
  %1318 = load i32, ptr %39, align 4, !tbaa !9
  %1319 = icmp sle i32 %1317, %1318
  br i1 %1319, label %1320, label %1360

1320:                                             ; preds = %1316
  %1321 = load ptr, ptr %30, align 8, !tbaa !5
  %1322 = load i32, ptr %53, align 4, !tbaa !9
  %1323 = load i32, ptr %64, align 4, !tbaa !9
  %1324 = load i32, ptr %89, align 4, !tbaa !9
  %1325 = add nsw i32 %1323, %1324
  %1326 = sub nsw i32 %1325, 1
  %1327 = load i32, ptr %35, align 4, !tbaa !9
  %1328 = mul nsw i32 %1326, %1327
  %1329 = add nsw i32 %1322, %1328
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr inbounds double, ptr %1321, i64 %1330
  %1332 = load double, ptr %1331, align 8, !tbaa !11
  %1333 = load ptr, ptr %30, align 8, !tbaa !5
  %1334 = load i32, ptr %53, align 4, !tbaa !9
  %1335 = load i32, ptr %64, align 4, !tbaa !9
  %1336 = load i32, ptr %89, align 4, !tbaa !9
  %1337 = add nsw i32 %1335, %1336
  %1338 = sub nsw i32 %1337, 2
  %1339 = load i32, ptr %35, align 4, !tbaa !9
  %1340 = mul nsw i32 %1338, %1339
  %1341 = add nsw i32 %1334, %1340
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds double, ptr %1333, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = fadd double %1344, %1332
  store double %1345, ptr %1343, align 8, !tbaa !11
  %1346 = load ptr, ptr %30, align 8, !tbaa !5
  %1347 = load i32, ptr %53, align 4, !tbaa !9
  %1348 = load i32, ptr %64, align 4, !tbaa !9
  %1349 = load i32, ptr %89, align 4, !tbaa !9
  %1350 = add nsw i32 %1348, %1349
  %1351 = sub nsw i32 %1350, 1
  %1352 = load i32, ptr %35, align 4, !tbaa !9
  %1353 = mul nsw i32 %1351, %1352
  %1354 = add nsw i32 %1347, %1353
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds double, ptr %1346, i64 %1355
  store double 0.000000e+00, ptr %1356, align 8, !tbaa !11
  br label %1357

1357:                                             ; preds = %1320
  %1358 = load i32, ptr %53, align 4, !tbaa !9
  %1359 = add nsw i32 %1358, 1
  store i32 %1359, ptr %53, align 4, !tbaa !9
  br label %1316, !llvm.loop !23

1360:                                             ; preds = %1316
  br label %1361

1361:                                             ; preds = %1360, %1307, %1304, %1300, %1297, %1294
  %1362 = load i32, ptr %89, align 4, !tbaa !9
  %1363 = sub nsw i32 %1362, 1
  store i32 %1363, ptr %40, align 4, !tbaa !9
  %1364 = load i32, ptr %92, align 4, !tbaa !9
  %1365 = sub nsw i32 %1364, 1
  store i32 %1365, ptr %41, align 4, !tbaa !9
  %1366 = load i32, ptr %40, align 4, !tbaa !9
  %1367 = load i32, ptr %41, align 4, !tbaa !9
  %1368 = icmp sle i32 %1366, %1367
  br i1 %1368, label %1369, label %1371

1369:                                             ; preds = %1361
  %1370 = load i32, ptr %40, align 4, !tbaa !9
  br label %1373

1371:                                             ; preds = %1361
  %1372 = load i32, ptr %41, align 4, !tbaa !9
  br label %1373

1373:                                             ; preds = %1371, %1369
  %1374 = phi i32 [ %1370, %1369 ], [ %1372, %1371 ]
  store i32 %1374, ptr %39, align 4, !tbaa !9
  store i32 0, ptr %53, align 4, !tbaa !9
  br label %1375

1375:                                             ; preds = %1508, %1373
  %1376 = load i32, ptr %53, align 4, !tbaa !9
  %1377 = load i32, ptr %39, align 4, !tbaa !9
  %1378 = icmp sle i32 %1376, %1377
  br i1 %1378, label %1379, label %1511

1379:                                             ; preds = %1375
  %1380 = load ptr, ptr %30, align 8, !tbaa !5
  %1381 = load i32, ptr %80, align 4, !tbaa !9
  %1382 = load i32, ptr %64, align 4, !tbaa !9
  %1383 = load i32, ptr %53, align 4, !tbaa !9
  %1384 = add nsw i32 %1382, %1383
  %1385 = load i32, ptr %35, align 4, !tbaa !9
  %1386 = mul nsw i32 %1384, %1385
  %1387 = add nsw i32 %1381, %1386
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds double, ptr %1380, i64 %1388
  %1390 = call double @dnrm2_(ptr noundef %92, ptr noundef %1389, ptr noundef @c__2)
  store double %1390, ptr %50, align 8, !tbaa !11
  %1391 = load double, ptr %50, align 8, !tbaa !11
  %1392 = fcmp oeq double %1391, 0.000000e+00
  br i1 %1392, label %1393, label %1399

1393:                                             ; preds = %1379
  %1394 = load ptr, ptr %21, align 8, !tbaa !5
  %1395 = load i32, ptr %1394, align 4, !tbaa !9
  %1396 = shl i32 %1395, 1
  %1397 = add nsw i32 %1396, 1
  %1398 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1397, ptr %1398, align 4, !tbaa !9
  store i32 1, ptr %94, align 4
  br label %2130

1399:                                             ; preds = %1379
  %1400 = load double, ptr %50, align 8, !tbaa !11
  %1401 = fdiv double 1.000000e+00, %1400
  store double %1401, ptr %42, align 8, !tbaa !11
  %1402 = load ptr, ptr %30, align 8, !tbaa !5
  %1403 = load i32, ptr %80, align 4, !tbaa !9
  %1404 = load i32, ptr %64, align 4, !tbaa !9
  %1405 = load i32, ptr %53, align 4, !tbaa !9
  %1406 = add nsw i32 %1404, %1405
  %1407 = load i32, ptr %35, align 4, !tbaa !9
  %1408 = mul nsw i32 %1406, %1407
  %1409 = add nsw i32 %1403, %1408
  %1410 = sext i32 %1409 to i64
  %1411 = getelementptr inbounds double, ptr %1402, i64 %1410
  call void @dscal_(ptr noundef %92, ptr noundef %42, ptr noundef %1411, ptr noundef @c__2)
  %1412 = load double, ptr %50, align 8, !tbaa !11
  %1413 = fcmp une double %1412, 1.000000e+00
  br i1 %1413, label %1414, label %1507

1414:                                             ; preds = %1399
  %1415 = load double, ptr %50, align 8, !tbaa !11
  %1416 = load double, ptr %76, align 8, !tbaa !11
  %1417 = fsub double %1415, %1416
  store double %1417, ptr %42, align 8, !tbaa !11
  %1418 = load double, ptr %42, align 8, !tbaa !11
  %1419 = fcmp oge double %1418, 0.000000e+00
  br i1 %1419, label %1420, label %1422

1420:                                             ; preds = %1414
  %1421 = load double, ptr %42, align 8, !tbaa !11
  br label %1425

1422:                                             ; preds = %1414
  %1423 = load double, ptr %42, align 8, !tbaa !11
  %1424 = fneg double %1423
  br label %1425

1425:                                             ; preds = %1422, %1420
  %1426 = phi double [ %1421, %1420 ], [ %1424, %1422 ]
  %1427 = load double, ptr %57, align 8, !tbaa !11
  %1428 = fmul double %1426, %1427
  %1429 = fcmp ogt double %1428, 1.000000e+00
  br i1 %1429, label %1430, label %1507

1430:                                             ; preds = %1425
  %1431 = load i32, ptr %53, align 4, !tbaa !9
  %1432 = sub nsw i32 %1431, 1
  store i32 %1432, ptr %40, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %1433

1433:                                             ; preds = %1480, %1430
  %1434 = load i32, ptr %55, align 4, !tbaa !9
  %1435 = load i32, ptr %40, align 4, !tbaa !9
  %1436 = icmp sle i32 %1434, %1435
  br i1 %1436, label %1437, label %1483

1437:                                             ; preds = %1433
  %1438 = load ptr, ptr %30, align 8, !tbaa !5
  %1439 = load i32, ptr %80, align 4, !tbaa !9
  %1440 = load i32, ptr %64, align 4, !tbaa !9
  %1441 = load i32, ptr %55, align 4, !tbaa !9
  %1442 = add nsw i32 %1440, %1441
  %1443 = load i32, ptr %35, align 4, !tbaa !9
  %1444 = mul nsw i32 %1442, %1443
  %1445 = add nsw i32 %1439, %1444
  %1446 = sext i32 %1445 to i64
  %1447 = getelementptr inbounds double, ptr %1438, i64 %1446
  %1448 = load ptr, ptr %30, align 8, !tbaa !5
  %1449 = load i32, ptr %80, align 4, !tbaa !9
  %1450 = load i32, ptr %64, align 4, !tbaa !9
  %1451 = load i32, ptr %53, align 4, !tbaa !9
  %1452 = add nsw i32 %1450, %1451
  %1453 = load i32, ptr %35, align 4, !tbaa !9
  %1454 = mul nsw i32 %1452, %1453
  %1455 = add nsw i32 %1449, %1454
  %1456 = sext i32 %1455 to i64
  %1457 = getelementptr inbounds double, ptr %1448, i64 %1456
  %1458 = call double @ddot_(ptr noundef %92, ptr noundef %1447, ptr noundef @c__2, ptr noundef %1457, ptr noundef @c__2)
  %1459 = fneg double %1458
  store double %1459, ptr %72, align 8, !tbaa !11
  %1460 = load ptr, ptr %30, align 8, !tbaa !5
  %1461 = load i32, ptr %80, align 4, !tbaa !9
  %1462 = load i32, ptr %64, align 4, !tbaa !9
  %1463 = load i32, ptr %55, align 4, !tbaa !9
  %1464 = add nsw i32 %1462, %1463
  %1465 = load i32, ptr %35, align 4, !tbaa !9
  %1466 = mul nsw i32 %1464, %1465
  %1467 = add nsw i32 %1461, %1466
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr inbounds double, ptr %1460, i64 %1468
  %1470 = load ptr, ptr %30, align 8, !tbaa !5
  %1471 = load i32, ptr %80, align 4, !tbaa !9
  %1472 = load i32, ptr %64, align 4, !tbaa !9
  %1473 = load i32, ptr %53, align 4, !tbaa !9
  %1474 = add nsw i32 %1472, %1473
  %1475 = load i32, ptr %35, align 4, !tbaa !9
  %1476 = mul nsw i32 %1474, %1475
  %1477 = add nsw i32 %1471, %1476
  %1478 = sext i32 %1477 to i64
  %1479 = getelementptr inbounds double, ptr %1470, i64 %1478
  call void @daxpy_(ptr noundef %92, ptr noundef %72, ptr noundef %1469, ptr noundef @c__2, ptr noundef %1479, ptr noundef @c__2)
  br label %1480

1480:                                             ; preds = %1437
  %1481 = load i32, ptr %55, align 4, !tbaa !9
  %1482 = add nsw i32 %1481, 1
  store i32 %1482, ptr %55, align 4, !tbaa !9
  br label %1433, !llvm.loop !24

1483:                                             ; preds = %1433
  %1484 = load ptr, ptr %30, align 8, !tbaa !5
  %1485 = load i32, ptr %80, align 4, !tbaa !9
  %1486 = load i32, ptr %64, align 4, !tbaa !9
  %1487 = load i32, ptr %53, align 4, !tbaa !9
  %1488 = add nsw i32 %1486, %1487
  %1489 = load i32, ptr %35, align 4, !tbaa !9
  %1490 = mul nsw i32 %1488, %1489
  %1491 = add nsw i32 %1485, %1490
  %1492 = sext i32 %1491 to i64
  %1493 = getelementptr inbounds double, ptr %1484, i64 %1492
  %1494 = call double @dnrm2_(ptr noundef %92, ptr noundef %1493, ptr noundef @c__2)
  store double %1494, ptr %50, align 8, !tbaa !11
  %1495 = load double, ptr %50, align 8, !tbaa !11
  %1496 = fdiv double 1.000000e+00, %1495
  store double %1496, ptr %42, align 8, !tbaa !11
  %1497 = load ptr, ptr %30, align 8, !tbaa !5
  %1498 = load i32, ptr %80, align 4, !tbaa !9
  %1499 = load i32, ptr %64, align 4, !tbaa !9
  %1500 = load i32, ptr %53, align 4, !tbaa !9
  %1501 = add nsw i32 %1499, %1500
  %1502 = load i32, ptr %35, align 4, !tbaa !9
  %1503 = mul nsw i32 %1501, %1502
  %1504 = add nsw i32 %1498, %1503
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds double, ptr %1497, i64 %1505
  call void @dscal_(ptr noundef %92, ptr noundef %42, ptr noundef %1506, ptr noundef @c__2)
  br label %1507

1507:                                             ; preds = %1483, %1425, %1399
  br label %1508

1508:                                             ; preds = %1507
  %1509 = load i32, ptr %53, align 4, !tbaa !9
  %1510 = add nsw i32 %1509, 1
  store i32 %1510, ptr %53, align 4, !tbaa !9
  br label %1375, !llvm.loop !25

1511:                                             ; preds = %1375
  %1512 = load i32, ptr %89, align 4, !tbaa !9
  %1513 = sub nsw i32 %1512, 1
  store i32 %1513, ptr %40, align 4, !tbaa !9
  %1514 = load i32, ptr %93, align 4, !tbaa !9
  %1515 = sub nsw i32 %1514, 1
  store i32 %1515, ptr %41, align 4, !tbaa !9
  %1516 = load i32, ptr %40, align 4, !tbaa !9
  %1517 = load i32, ptr %41, align 4, !tbaa !9
  %1518 = icmp sle i32 %1516, %1517
  br i1 %1518, label %1519, label %1521

1519:                                             ; preds = %1511
  %1520 = load i32, ptr %40, align 4, !tbaa !9
  br label %1523

1521:                                             ; preds = %1511
  %1522 = load i32, ptr %41, align 4, !tbaa !9
  br label %1523

1523:                                             ; preds = %1521, %1519
  %1524 = phi i32 [ %1520, %1519 ], [ %1522, %1521 ]
  store i32 %1524, ptr %39, align 4, !tbaa !9
  store i32 0, ptr %53, align 4, !tbaa !9
  br label %1525

1525:                                             ; preds = %1658, %1523
  %1526 = load i32, ptr %53, align 4, !tbaa !9
  %1527 = load i32, ptr %39, align 4, !tbaa !9
  %1528 = icmp sle i32 %1526, %1527
  br i1 %1528, label %1529, label %1661

1529:                                             ; preds = %1525
  %1530 = load ptr, ptr %30, align 8, !tbaa !5
  %1531 = load i32, ptr %81, align 4, !tbaa !9
  %1532 = load i32, ptr %64, align 4, !tbaa !9
  %1533 = load i32, ptr %53, align 4, !tbaa !9
  %1534 = add nsw i32 %1532, %1533
  %1535 = load i32, ptr %35, align 4, !tbaa !9
  %1536 = mul nsw i32 %1534, %1535
  %1537 = add nsw i32 %1531, %1536
  %1538 = sext i32 %1537 to i64
  %1539 = getelementptr inbounds double, ptr %1530, i64 %1538
  %1540 = call double @dnrm2_(ptr noundef %93, ptr noundef %1539, ptr noundef @c__2)
  store double %1540, ptr %51, align 8, !tbaa !11
  %1541 = load double, ptr %51, align 8, !tbaa !11
  %1542 = fcmp oeq double %1541, 0.000000e+00
  br i1 %1542, label %1543, label %1549

1543:                                             ; preds = %1529
  %1544 = load ptr, ptr %21, align 8, !tbaa !5
  %1545 = load i32, ptr %1544, align 4, !tbaa !9
  %1546 = shl i32 %1545, 1
  %1547 = add nsw i32 %1546, 1
  %1548 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1547, ptr %1548, align 4, !tbaa !9
  store i32 1, ptr %94, align 4
  br label %2130

1549:                                             ; preds = %1529
  %1550 = load double, ptr %51, align 8, !tbaa !11
  %1551 = fdiv double -1.000000e+00, %1550
  store double %1551, ptr %42, align 8, !tbaa !11
  %1552 = load ptr, ptr %30, align 8, !tbaa !5
  %1553 = load i32, ptr %81, align 4, !tbaa !9
  %1554 = load i32, ptr %64, align 4, !tbaa !9
  %1555 = load i32, ptr %53, align 4, !tbaa !9
  %1556 = add nsw i32 %1554, %1555
  %1557 = load i32, ptr %35, align 4, !tbaa !9
  %1558 = mul nsw i32 %1556, %1557
  %1559 = add nsw i32 %1553, %1558
  %1560 = sext i32 %1559 to i64
  %1561 = getelementptr inbounds double, ptr %1552, i64 %1560
  call void @dscal_(ptr noundef %93, ptr noundef %42, ptr noundef %1561, ptr noundef @c__2)
  %1562 = load double, ptr %51, align 8, !tbaa !11
  %1563 = fcmp une double %1562, 1.000000e+00
  br i1 %1563, label %1564, label %1657

1564:                                             ; preds = %1549
  %1565 = load double, ptr %51, align 8, !tbaa !11
  %1566 = load double, ptr %76, align 8, !tbaa !11
  %1567 = fsub double %1565, %1566
  store double %1567, ptr %42, align 8, !tbaa !11
  %1568 = load double, ptr %42, align 8, !tbaa !11
  %1569 = fcmp oge double %1568, 0.000000e+00
  br i1 %1569, label %1570, label %1572

1570:                                             ; preds = %1564
  %1571 = load double, ptr %42, align 8, !tbaa !11
  br label %1575

1572:                                             ; preds = %1564
  %1573 = load double, ptr %42, align 8, !tbaa !11
  %1574 = fneg double %1573
  br label %1575

1575:                                             ; preds = %1572, %1570
  %1576 = phi double [ %1571, %1570 ], [ %1574, %1572 ]
  %1577 = load double, ptr %57, align 8, !tbaa !11
  %1578 = fmul double %1576, %1577
  %1579 = fcmp ogt double %1578, 1.000000e+00
  br i1 %1579, label %1580, label %1657

1580:                                             ; preds = %1575
  %1581 = load i32, ptr %53, align 4, !tbaa !9
  %1582 = sub nsw i32 %1581, 1
  store i32 %1582, ptr %40, align 4, !tbaa !9
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %1583

1583:                                             ; preds = %1630, %1580
  %1584 = load i32, ptr %55, align 4, !tbaa !9
  %1585 = load i32, ptr %40, align 4, !tbaa !9
  %1586 = icmp sle i32 %1584, %1585
  br i1 %1586, label %1587, label %1633

1587:                                             ; preds = %1583
  %1588 = load ptr, ptr %30, align 8, !tbaa !5
  %1589 = load i32, ptr %81, align 4, !tbaa !9
  %1590 = load i32, ptr %64, align 4, !tbaa !9
  %1591 = load i32, ptr %55, align 4, !tbaa !9
  %1592 = add nsw i32 %1590, %1591
  %1593 = load i32, ptr %35, align 4, !tbaa !9
  %1594 = mul nsw i32 %1592, %1593
  %1595 = add nsw i32 %1589, %1594
  %1596 = sext i32 %1595 to i64
  %1597 = getelementptr inbounds double, ptr %1588, i64 %1596
  %1598 = load ptr, ptr %30, align 8, !tbaa !5
  %1599 = load i32, ptr %81, align 4, !tbaa !9
  %1600 = load i32, ptr %64, align 4, !tbaa !9
  %1601 = load i32, ptr %53, align 4, !tbaa !9
  %1602 = add nsw i32 %1600, %1601
  %1603 = load i32, ptr %35, align 4, !tbaa !9
  %1604 = mul nsw i32 %1602, %1603
  %1605 = add nsw i32 %1599, %1604
  %1606 = sext i32 %1605 to i64
  %1607 = getelementptr inbounds double, ptr %1598, i64 %1606
  %1608 = call double @ddot_(ptr noundef %93, ptr noundef %1597, ptr noundef @c__2, ptr noundef %1607, ptr noundef @c__2)
  %1609 = fneg double %1608
  store double %1609, ptr %72, align 8, !tbaa !11
  %1610 = load ptr, ptr %30, align 8, !tbaa !5
  %1611 = load i32, ptr %81, align 4, !tbaa !9
  %1612 = load i32, ptr %64, align 4, !tbaa !9
  %1613 = load i32, ptr %55, align 4, !tbaa !9
  %1614 = add nsw i32 %1612, %1613
  %1615 = load i32, ptr %35, align 4, !tbaa !9
  %1616 = mul nsw i32 %1614, %1615
  %1617 = add nsw i32 %1611, %1616
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr inbounds double, ptr %1610, i64 %1618
  %1620 = load ptr, ptr %30, align 8, !tbaa !5
  %1621 = load i32, ptr %81, align 4, !tbaa !9
  %1622 = load i32, ptr %64, align 4, !tbaa !9
  %1623 = load i32, ptr %53, align 4, !tbaa !9
  %1624 = add nsw i32 %1622, %1623
  %1625 = load i32, ptr %35, align 4, !tbaa !9
  %1626 = mul nsw i32 %1624, %1625
  %1627 = add nsw i32 %1621, %1626
  %1628 = sext i32 %1627 to i64
  %1629 = getelementptr inbounds double, ptr %1620, i64 %1628
  call void @daxpy_(ptr noundef %92, ptr noundef %72, ptr noundef %1619, ptr noundef @c__2, ptr noundef %1629, ptr noundef @c__2)
  br label %1630

1630:                                             ; preds = %1587
  %1631 = load i32, ptr %55, align 4, !tbaa !9
  %1632 = add nsw i32 %1631, 1
  store i32 %1632, ptr %55, align 4, !tbaa !9
  br label %1583, !llvm.loop !26

1633:                                             ; preds = %1583
  %1634 = load ptr, ptr %30, align 8, !tbaa !5
  %1635 = load i32, ptr %81, align 4, !tbaa !9
  %1636 = load i32, ptr %64, align 4, !tbaa !9
  %1637 = load i32, ptr %53, align 4, !tbaa !9
  %1638 = add nsw i32 %1636, %1637
  %1639 = load i32, ptr %35, align 4, !tbaa !9
  %1640 = mul nsw i32 %1638, %1639
  %1641 = add nsw i32 %1635, %1640
  %1642 = sext i32 %1641 to i64
  %1643 = getelementptr inbounds double, ptr %1634, i64 %1642
  %1644 = call double @dnrm2_(ptr noundef %93, ptr noundef %1643, ptr noundef @c__2)
  store double %1644, ptr %51, align 8, !tbaa !11
  %1645 = load double, ptr %51, align 8, !tbaa !11
  %1646 = fdiv double 1.000000e+00, %1645
  store double %1646, ptr %42, align 8, !tbaa !11
  %1647 = load ptr, ptr %30, align 8, !tbaa !5
  %1648 = load i32, ptr %81, align 4, !tbaa !9
  %1649 = load i32, ptr %64, align 4, !tbaa !9
  %1650 = load i32, ptr %53, align 4, !tbaa !9
  %1651 = add nsw i32 %1649, %1650
  %1652 = load i32, ptr %35, align 4, !tbaa !9
  %1653 = mul nsw i32 %1651, %1652
  %1654 = add nsw i32 %1648, %1653
  %1655 = sext i32 %1654 to i64
  %1656 = getelementptr inbounds double, ptr %1647, i64 %1655
  call void @dscal_(ptr noundef %93, ptr noundef %42, ptr noundef %1656, ptr noundef @c__2)
  br label %1657

1657:                                             ; preds = %1633, %1575, %1549
  br label %1658

1658:                                             ; preds = %1657
  %1659 = load i32, ptr %53, align 4, !tbaa !9
  %1660 = add nsw i32 %1659, 1
  store i32 %1660, ptr %53, align 4, !tbaa !9
  br label %1525, !llvm.loop !27

1661:                                             ; preds = %1525
  %1662 = load double, ptr %77, align 8, !tbaa !11
  %1663 = fcmp oeq double %1662, 0.000000e+00
  br i1 %1663, label %1664, label %1720

1664:                                             ; preds = %1661
  %1665 = load i32, ptr %66, align 4, !tbaa !9
  %1666 = load i32, ptr %58, align 4, !tbaa !9
  %1667 = icmp slt i32 %1665, %1666
  br i1 %1667, label %1668, label %1720

1668:                                             ; preds = %1664
  %1669 = load i32, ptr %47, align 4, !tbaa !9
  %1670 = srem i32 %1669, 2
  %1671 = icmp sgt i32 %1670, 0
  br i1 %1671, label %1672, label %1720

1672:                                             ; preds = %1668
  store i32 1, ptr %73, align 4, !tbaa !9
  %1673 = load i32, ptr %82, align 4, !tbaa !9
  %1674 = load i32, ptr %47, align 4, !tbaa !9
  %1675 = add nsw i32 %1673, %1674
  %1676 = sub nsw i32 %1675, 1
  store i32 %1676, ptr %39, align 4, !tbaa !9
  %1677 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %1677, ptr %53, align 4, !tbaa !9
  br label %1678

1678:                                             ; preds = %1716, %1672
  %1679 = load i32, ptr %53, align 4, !tbaa !9
  %1680 = load i32, ptr %39, align 4, !tbaa !9
  %1681 = icmp sle i32 %1679, %1680
  br i1 %1681, label %1682, label %1719

1682:                                             ; preds = %1678
  %1683 = load ptr, ptr %30, align 8, !tbaa !5
  %1684 = load i32, ptr %53, align 4, !tbaa !9
  %1685 = load ptr, ptr %28, align 8, !tbaa !5
  %1686 = load i32, ptr %1685, align 4, !tbaa !9
  %1687 = load i32, ptr %89, align 4, !tbaa !9
  %1688 = add nsw i32 %1686, %1687
  %1689 = load i32, ptr %35, align 4, !tbaa !9
  %1690 = mul nsw i32 %1688, %1689
  %1691 = add nsw i32 %1684, %1690
  %1692 = sext i32 %1691 to i64
  %1693 = getelementptr inbounds double, ptr %1683, i64 %1692
  %1694 = load double, ptr %1693, align 8, !tbaa !11
  %1695 = load ptr, ptr %30, align 8, !tbaa !5
  %1696 = load i32, ptr %53, align 4, !tbaa !9
  %1697 = load ptr, ptr %21, align 8, !tbaa !5
  %1698 = load i32, ptr %1697, align 4, !tbaa !9
  %1699 = add nsw i32 %1698, 1
  %1700 = load i32, ptr %35, align 4, !tbaa !9
  %1701 = mul nsw i32 %1699, %1700
  %1702 = add nsw i32 %1696, %1701
  %1703 = sext i32 %1702 to i64
  %1704 = getelementptr inbounds double, ptr %1695, i64 %1703
  store double %1694, ptr %1704, align 8, !tbaa !11
  %1705 = load ptr, ptr %30, align 8, !tbaa !5
  %1706 = load i32, ptr %53, align 4, !tbaa !9
  %1707 = load ptr, ptr %28, align 8, !tbaa !5
  %1708 = load i32, ptr %1707, align 4, !tbaa !9
  %1709 = load i32, ptr %89, align 4, !tbaa !9
  %1710 = add nsw i32 %1708, %1709
  %1711 = load i32, ptr %35, align 4, !tbaa !9
  %1712 = mul nsw i32 %1710, %1711
  %1713 = add nsw i32 %1706, %1712
  %1714 = sext i32 %1713 to i64
  %1715 = getelementptr inbounds double, ptr %1705, i64 %1714
  store double 0.000000e+00, ptr %1715, align 8, !tbaa !11
  br label %1716

1716:                                             ; preds = %1682
  %1717 = load i32, ptr %53, align 4, !tbaa !9
  %1718 = add nsw i32 %1717, 1
  store i32 %1718, ptr %53, align 4, !tbaa !9
  br label %1678, !llvm.loop !28

1719:                                             ; preds = %1678
  br label %1720

1720:                                             ; preds = %1719, %1668, %1664, %1661
  br label %1721

1721:                                             ; preds = %1720, %1291, %1288
  %1722 = load i32, ptr %89, align 4, !tbaa !9
  %1723 = load i32, ptr %92, align 4, !tbaa !9
  %1724 = icmp sle i32 %1722, %1723
  br i1 %1724, label %1725, label %1727

1725:                                             ; preds = %1721
  %1726 = load i32, ptr %89, align 4, !tbaa !9
  br label %1729

1727:                                             ; preds = %1721
  %1728 = load i32, ptr %92, align 4, !tbaa !9
  br label %1729

1729:                                             ; preds = %1727, %1725
  %1730 = phi i32 [ %1726, %1725 ], [ %1728, %1727 ]
  store i32 %1730, ptr %89, align 4, !tbaa !9
  store i32 0, ptr %52, align 4, !tbaa !9
  %1731 = load i32, ptr %89, align 4, !tbaa !9
  %1732 = sub nsw i32 %1731, 1
  store i32 %1732, ptr %39, align 4, !tbaa !9
  store i32 0, ptr %53, align 4, !tbaa !9
  br label %1733

1733:                                             ; preds = %1760, %1729
  %1734 = load i32, ptr %53, align 4, !tbaa !9
  %1735 = load i32, ptr %39, align 4, !tbaa !9
  %1736 = icmp sle i32 %1734, %1735
  br i1 %1736, label %1737, label %1763

1737:                                             ; preds = %1733
  %1738 = load ptr, ptr %29, align 8, !tbaa !5
  %1739 = load i32, ptr %59, align 4, !tbaa !9
  %1740 = load i32, ptr %53, align 4, !tbaa !9
  %1741 = add nsw i32 %1739, %1740
  %1742 = sext i32 %1741 to i64
  %1743 = getelementptr inbounds double, ptr %1738, i64 %1742
  %1744 = load double, ptr %1743, align 8, !tbaa !11
  store double %1744, ptr %42, align 8, !tbaa !11
  %1745 = load double, ptr %42, align 8, !tbaa !11
  %1746 = fcmp oge double %1745, 0.000000e+00
  br i1 %1746, label %1747, label %1749

1747:                                             ; preds = %1737
  %1748 = load double, ptr %42, align 8, !tbaa !11
  br label %1752

1749:                                             ; preds = %1737
  %1750 = load double, ptr %42, align 8, !tbaa !11
  %1751 = fneg double %1750
  br label %1752

1752:                                             ; preds = %1749, %1747
  %1753 = phi double [ %1748, %1747 ], [ %1751, %1749 ]
  %1754 = load ptr, ptr %29, align 8, !tbaa !5
  %1755 = load i32, ptr %59, align 4, !tbaa !9
  %1756 = load i32, ptr %53, align 4, !tbaa !9
  %1757 = add nsw i32 %1755, %1756
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds double, ptr %1754, i64 %1758
  store double %1753, ptr %1759, align 8, !tbaa !11
  br label %1760

1760:                                             ; preds = %1752
  %1761 = load i32, ptr %53, align 4, !tbaa !9
  %1762 = add nsw i32 %1761, 1
  store i32 %1762, ptr %53, align 4, !tbaa !9
  br label %1733, !llvm.loop !29

1763:                                             ; preds = %1733
  %1764 = load i32, ptr %89, align 4, !tbaa !9
  %1765 = load i32, ptr %59, align 4, !tbaa !9
  %1766 = add nsw i32 %1765, %1764
  store i32 %1766, ptr %59, align 4, !tbaa !9
  %1767 = load i32, ptr %47, align 4, !tbaa !9
  %1768 = load i32, ptr %82, align 4, !tbaa !9
  %1769 = add nsw i32 %1768, %1767
  store i32 %1769, ptr %82, align 4, !tbaa !9
  %1770 = load i32, ptr %89, align 4, !tbaa !9
  %1771 = load i32, ptr %64, align 4, !tbaa !9
  %1772 = add nsw i32 %1771, %1770
  store i32 %1772, ptr %64, align 4, !tbaa !9
  %1773 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %1773, ptr %80, align 4, !tbaa !9
  %1774 = load i32, ptr %82, align 4, !tbaa !9
  %1775 = add nsw i32 %1774, 1
  store i32 %1775, ptr %81, align 4, !tbaa !9
  %1776 = load i32, ptr %66, align 4, !tbaa !9
  %1777 = add nsw i32 %1776, 1
  store i32 %1777, ptr %75, align 4, !tbaa !9
  %1778 = load i32, ptr %89, align 4, !tbaa !9
  %1779 = load ptr, ptr %28, align 8, !tbaa !5
  %1780 = load i32, ptr %1779, align 4, !tbaa !9
  %1781 = add nsw i32 %1780, %1778
  store i32 %1781, ptr %1779, align 4, !tbaa !9
  store i32 0, ptr %92, align 4, !tbaa !9
  store i32 0, ptr %93, align 4, !tbaa !9
  br label %1782

1782:                                             ; preds = %1763, %1161
  %1783 = load i32, ptr %82, align 4, !tbaa !9
  %1784 = load ptr, ptr %21, align 8, !tbaa !5
  %1785 = load i32, ptr %1784, align 4, !tbaa !9
  %1786 = shl i32 %1785, 1
  %1787 = icmp slt i32 %1783, %1786
  br i1 %1787, label %1788, label %1811

1788:                                             ; preds = %1782
  %1789 = load i32, ptr %78, align 4, !tbaa !9
  %1790 = icmp ne i32 %1789, 0
  br i1 %1790, label %1791, label %1811

1791:                                             ; preds = %1788
  %1792 = load i32, ptr %82, align 4, !tbaa !9
  %1793 = sub nsw i32 %1792, 1
  store i32 %1793, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %1794

1794:                                             ; preds = %1807, %1791
  %1795 = load i32, ptr %53, align 4, !tbaa !9
  %1796 = load i32, ptr %39, align 4, !tbaa !9
  %1797 = icmp sle i32 %1795, %1796
  br i1 %1797, label %1798, label %1810

1798:                                             ; preds = %1794
  %1799 = load ptr, ptr %30, align 8, !tbaa !5
  %1800 = load i32, ptr %53, align 4, !tbaa !9
  %1801 = load i32, ptr %64, align 4, !tbaa !9
  %1802 = load i32, ptr %35, align 4, !tbaa !9
  %1803 = mul nsw i32 %1801, %1802
  %1804 = add nsw i32 %1800, %1803
  %1805 = sext i32 %1804 to i64
  %1806 = getelementptr inbounds double, ptr %1799, i64 %1805
  store double 0.000000e+00, ptr %1806, align 8, !tbaa !11
  br label %1807

1807:                                             ; preds = %1798
  %1808 = load i32, ptr %53, align 4, !tbaa !9
  %1809 = add nsw i32 %1808, 1
  store i32 %1809, ptr %53, align 4, !tbaa !9
  br label %1794, !llvm.loop !30

1810:                                             ; preds = %1794
  br label %1811

1811:                                             ; preds = %1810, %1788, %1782
  br label %1812

1812:                                             ; preds = %1811
  %1813 = load i32, ptr %66, align 4, !tbaa !9
  %1814 = add nsw i32 %1813, 2
  store i32 %1814, ptr %66, align 4, !tbaa !9
  br label %1073, !llvm.loop !31

1815:                                             ; preds = %1073
  %1816 = load i32, ptr %73, align 4, !tbaa !9
  %1817 = icmp ne i32 %1816, 0
  br i1 %1817, label %1818, label %1868

1818:                                             ; preds = %1815
  %1819 = load i32, ptr %78, align 4, !tbaa !9
  %1820 = icmp ne i32 %1819, 0
  br i1 %1820, label %1821, label %1868

1821:                                             ; preds = %1818
  %1822 = load i32, ptr %58, align 4, !tbaa !9
  %1823 = load i32, ptr %47, align 4, !tbaa !9
  %1824 = sub nsw i32 %1822, %1823
  %1825 = add nsw i32 %1824, 1
  store i32 %1825, ptr %38, align 4, !tbaa !9
  %1826 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %1826, ptr %53, align 4, !tbaa !9
  br label %1827

1827:                                             ; preds = %1864, %1821
  %1828 = load i32, ptr %53, align 4, !tbaa !9
  %1829 = load i32, ptr %38, align 4, !tbaa !9
  %1830 = icmp sle i32 %1828, %1829
  br i1 %1830, label %1831, label %1867

1831:                                             ; preds = %1827
  %1832 = load ptr, ptr %30, align 8, !tbaa !5
  %1833 = load i32, ptr %53, align 4, !tbaa !9
  %1834 = load ptr, ptr %21, align 8, !tbaa !5
  %1835 = load i32, ptr %1834, align 4, !tbaa !9
  %1836 = add nsw i32 %1835, 1
  %1837 = load i32, ptr %35, align 4, !tbaa !9
  %1838 = mul nsw i32 %1836, %1837
  %1839 = add nsw i32 %1833, %1838
  %1840 = sext i32 %1839 to i64
  %1841 = getelementptr inbounds double, ptr %1832, i64 %1840
  %1842 = load double, ptr %1841, align 8, !tbaa !11
  %1843 = load ptr, ptr %30, align 8, !tbaa !5
  %1844 = load i32, ptr %53, align 4, !tbaa !9
  %1845 = load i32, ptr %59, align 4, !tbaa !9
  %1846 = sub nsw i32 %1845, 1
  %1847 = load i32, ptr %35, align 4, !tbaa !9
  %1848 = mul nsw i32 %1846, %1847
  %1849 = add nsw i32 %1844, %1848
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds double, ptr %1843, i64 %1850
  %1852 = load double, ptr %1851, align 8, !tbaa !11
  %1853 = fadd double %1852, %1842
  store double %1853, ptr %1851, align 8, !tbaa !11
  %1854 = load ptr, ptr %30, align 8, !tbaa !5
  %1855 = load i32, ptr %53, align 4, !tbaa !9
  %1856 = load ptr, ptr %21, align 8, !tbaa !5
  %1857 = load i32, ptr %1856, align 4, !tbaa !9
  %1858 = add nsw i32 %1857, 1
  %1859 = load i32, ptr %35, align 4, !tbaa !9
  %1860 = mul nsw i32 %1858, %1859
  %1861 = add nsw i32 %1855, %1860
  %1862 = sext i32 %1861 to i64
  %1863 = getelementptr inbounds double, ptr %1854, i64 %1862
  store double 0.000000e+00, ptr %1863, align 8, !tbaa !11
  br label %1864

1864:                                             ; preds = %1831
  %1865 = load i32, ptr %53, align 4, !tbaa !9
  %1866 = add nsw i32 %1865, 1
  store i32 %1866, ptr %53, align 4, !tbaa !9
  br label %1827, !llvm.loop !32

1867:                                             ; preds = %1827
  br label %1868

1868:                                             ; preds = %1867, %1818, %1815
  %1869 = load i32, ptr %81, align 4, !tbaa !9
  %1870 = add nsw i32 %1869, -1
  store i32 %1870, ptr %81, align 4, !tbaa !9
  %1871 = load i32, ptr %80, align 4, !tbaa !9
  %1872 = add nsw i32 %1871, 1
  store i32 %1872, ptr %80, align 4, !tbaa !9
  %1873 = load i32, ptr %68, align 4, !tbaa !9
  %1874 = add nsw i32 %1873, 1
  store i32 %1874, ptr %54, align 4, !tbaa !9
  store i32 0, ptr %52, align 4, !tbaa !9
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %1875

1875:                                             ; preds = %1868, %1057
  br label %1876

1876:                                             ; preds = %1875
  %1877 = load i32, ptr %68, align 4, !tbaa !9
  %1878 = add nsw i32 %1877, 2
  store i32 %1878, ptr %68, align 4, !tbaa !9
  br label %1053, !llvm.loop !33

1879:                                             ; preds = %1053
  %1880 = load ptr, ptr %28, align 8, !tbaa !5
  %1881 = load i32, ptr %1880, align 4, !tbaa !9
  %1882 = sub nsw i32 %1881, 1
  store i32 %1882, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %1883

1883:                                             ; preds = %1976, %1879
  %1884 = load i32, ptr %53, align 4, !tbaa !9
  %1885 = load i32, ptr %37, align 4, !tbaa !9
  %1886 = icmp sle i32 %1884, %1885
  br i1 %1886, label %1887, label %1979

1887:                                             ; preds = %1883
  store i32 1, ptr %56, align 4, !tbaa !9
  %1888 = load ptr, ptr %29, align 8, !tbaa !5
  %1889 = getelementptr inbounds double, ptr %1888, i64 1
  %1890 = load double, ptr %1889, align 8, !tbaa !11
  store double %1890, ptr %48, align 8, !tbaa !11
  %1891 = load ptr, ptr %28, align 8, !tbaa !5
  %1892 = load i32, ptr %1891, align 4, !tbaa !9
  %1893 = add nsw i32 %1892, 1
  %1894 = load i32, ptr %53, align 4, !tbaa !9
  %1895 = sub nsw i32 %1893, %1894
  store i32 %1895, ptr %38, align 4, !tbaa !9
  store i32 2, ptr %55, align 4, !tbaa !9
  br label %1896

1896:                                             ; preds = %1916, %1887
  %1897 = load i32, ptr %55, align 4, !tbaa !9
  %1898 = load i32, ptr %38, align 4, !tbaa !9
  %1899 = icmp sle i32 %1897, %1898
  br i1 %1899, label %1900, label %1919

1900:                                             ; preds = %1896
  %1901 = load ptr, ptr %29, align 8, !tbaa !5
  %1902 = load i32, ptr %55, align 4, !tbaa !9
  %1903 = sext i32 %1902 to i64
  %1904 = getelementptr inbounds double, ptr %1901, i64 %1903
  %1905 = load double, ptr %1904, align 8, !tbaa !11
  %1906 = load double, ptr %48, align 8, !tbaa !11
  %1907 = fcmp ole double %1905, %1906
  br i1 %1907, label %1908, label %1915

1908:                                             ; preds = %1900
  %1909 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %1909, ptr %56, align 4, !tbaa !9
  %1910 = load ptr, ptr %29, align 8, !tbaa !5
  %1911 = load i32, ptr %55, align 4, !tbaa !9
  %1912 = sext i32 %1911 to i64
  %1913 = getelementptr inbounds double, ptr %1910, i64 %1912
  %1914 = load double, ptr %1913, align 8, !tbaa !11
  store double %1914, ptr %48, align 8, !tbaa !11
  br label %1915

1915:                                             ; preds = %1908, %1900
  br label %1916

1916:                                             ; preds = %1915
  %1917 = load i32, ptr %55, align 4, !tbaa !9
  %1918 = add nsw i32 %1917, 1
  store i32 %1918, ptr %55, align 4, !tbaa !9
  br label %1896, !llvm.loop !34

1919:                                             ; preds = %1896
  %1920 = load i32, ptr %56, align 4, !tbaa !9
  %1921 = load ptr, ptr %28, align 8, !tbaa !5
  %1922 = load i32, ptr %1921, align 4, !tbaa !9
  %1923 = add nsw i32 %1922, 1
  %1924 = load i32, ptr %53, align 4, !tbaa !9
  %1925 = sub nsw i32 %1923, %1924
  %1926 = icmp ne i32 %1920, %1925
  br i1 %1926, label %1927, label %1975

1927:                                             ; preds = %1919
  %1928 = load ptr, ptr %29, align 8, !tbaa !5
  %1929 = load ptr, ptr %28, align 8, !tbaa !5
  %1930 = load i32, ptr %1929, align 4, !tbaa !9
  %1931 = add nsw i32 %1930, 1
  %1932 = load i32, ptr %53, align 4, !tbaa !9
  %1933 = sub nsw i32 %1931, %1932
  %1934 = sext i32 %1933 to i64
  %1935 = getelementptr inbounds double, ptr %1928, i64 %1934
  %1936 = load double, ptr %1935, align 8, !tbaa !11
  %1937 = load ptr, ptr %29, align 8, !tbaa !5
  %1938 = load i32, ptr %56, align 4, !tbaa !9
  %1939 = sext i32 %1938 to i64
  %1940 = getelementptr inbounds double, ptr %1937, i64 %1939
  store double %1936, ptr %1940, align 8, !tbaa !11
  %1941 = load double, ptr %48, align 8, !tbaa !11
  %1942 = load ptr, ptr %29, align 8, !tbaa !5
  %1943 = load ptr, ptr %28, align 8, !tbaa !5
  %1944 = load i32, ptr %1943, align 4, !tbaa !9
  %1945 = add nsw i32 %1944, 1
  %1946 = load i32, ptr %53, align 4, !tbaa !9
  %1947 = sub nsw i32 %1945, %1946
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds double, ptr %1942, i64 %1948
  store double %1941, ptr %1949, align 8, !tbaa !11
  %1950 = load i32, ptr %78, align 4, !tbaa !9
  %1951 = icmp ne i32 %1950, 0
  br i1 %1951, label %1952, label %1974

1952:                                             ; preds = %1927
  %1953 = load ptr, ptr %21, align 8, !tbaa !5
  %1954 = load i32, ptr %1953, align 4, !tbaa !9
  %1955 = shl i32 %1954, 1
  store i32 %1955, ptr %38, align 4, !tbaa !9
  %1956 = load ptr, ptr %30, align 8, !tbaa !5
  %1957 = load i32, ptr %56, align 4, !tbaa !9
  %1958 = load i32, ptr %35, align 4, !tbaa !9
  %1959 = mul nsw i32 %1957, %1958
  %1960 = add nsw i32 %1959, 1
  %1961 = sext i32 %1960 to i64
  %1962 = getelementptr inbounds double, ptr %1956, i64 %1961
  %1963 = load ptr, ptr %30, align 8, !tbaa !5
  %1964 = load ptr, ptr %28, align 8, !tbaa !5
  %1965 = load i32, ptr %1964, align 4, !tbaa !9
  %1966 = add nsw i32 %1965, 1
  %1967 = load i32, ptr %53, align 4, !tbaa !9
  %1968 = sub nsw i32 %1966, %1967
  %1969 = load i32, ptr %35, align 4, !tbaa !9
  %1970 = mul nsw i32 %1968, %1969
  %1971 = add nsw i32 %1970, 1
  %1972 = sext i32 %1971 to i64
  %1973 = getelementptr inbounds double, ptr %1963, i64 %1972
  call void @dswap_(ptr noundef %38, ptr noundef %1962, ptr noundef @c__1, ptr noundef %1973, ptr noundef @c__1)
  br label %1974

1974:                                             ; preds = %1952, %1927
  br label %1975

1975:                                             ; preds = %1974, %1919
  br label %1976

1976:                                             ; preds = %1975
  %1977 = load i32, ptr %53, align 4, !tbaa !9
  %1978 = add nsw i32 %1977, 1
  store i32 %1978, ptr %53, align 4, !tbaa !9
  br label %1883, !llvm.loop !35

1979:                                             ; preds = %1883
  %1980 = load i32, ptr %67, align 4, !tbaa !9
  %1981 = icmp ne i32 %1980, 0
  br i1 %1981, label %1982, label %2051

1982:                                             ; preds = %1979
  %1983 = load ptr, ptr %27, align 8, !tbaa !5
  %1984 = load i32, ptr %1983, align 4, !tbaa !9
  %1985 = load ptr, ptr %26, align 8, !tbaa !5
  %1986 = load i32, ptr %1985, align 4, !tbaa !9
  %1987 = sub nsw i32 %1984, %1986
  %1988 = add nsw i32 %1987, 1
  store i32 %1988, ptr %56, align 4, !tbaa !9
  %1989 = load i32, ptr %56, align 4, !tbaa !9
  %1990 = load ptr, ptr %28, align 8, !tbaa !5
  %1991 = load i32, ptr %1990, align 4, !tbaa !9
  %1992 = icmp slt i32 %1989, %1991
  br i1 %1992, label %1993, label %2050

1993:                                             ; preds = %1982
  %1994 = load ptr, ptr %28, align 8, !tbaa !5
  %1995 = load i32, ptr %1994, align 4, !tbaa !9
  store i32 %1995, ptr %37, align 4, !tbaa !9
  %1996 = load i32, ptr %56, align 4, !tbaa !9
  %1997 = add nsw i32 %1996, 1
  store i32 %1997, ptr %53, align 4, !tbaa !9
  br label %1998

1998:                                             ; preds = %2007, %1993
  %1999 = load i32, ptr %53, align 4, !tbaa !9
  %2000 = load i32, ptr %37, align 4, !tbaa !9
  %2001 = icmp sle i32 %1999, %2000
  br i1 %2001, label %2002, label %2010

2002:                                             ; preds = %1998
  %2003 = load ptr, ptr %29, align 8, !tbaa !5
  %2004 = load i32, ptr %53, align 4, !tbaa !9
  %2005 = sext i32 %2004 to i64
  %2006 = getelementptr inbounds double, ptr %2003, i64 %2005
  store double 0.000000e+00, ptr %2006, align 8, !tbaa !11
  br label %2007

2007:                                             ; preds = %2002
  %2008 = load i32, ptr %53, align 4, !tbaa !9
  %2009 = add nsw i32 %2008, 1
  store i32 %2009, ptr %53, align 4, !tbaa !9
  br label %1998, !llvm.loop !36

2010:                                             ; preds = %1998
  %2011 = load i32, ptr %78, align 4, !tbaa !9
  %2012 = icmp ne i32 %2011, 0
  br i1 %2012, label %2013, label %2047

2013:                                             ; preds = %2010
  %2014 = load ptr, ptr %21, align 8, !tbaa !5
  %2015 = load i32, ptr %2014, align 4, !tbaa !9
  %2016 = shl i32 %2015, 1
  store i32 %2016, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %2017

2017:                                             ; preds = %2043, %2013
  %2018 = load i32, ptr %53, align 4, !tbaa !9
  %2019 = load i32, ptr %37, align 4, !tbaa !9
  %2020 = icmp sle i32 %2018, %2019
  br i1 %2020, label %2021, label %2046

2021:                                             ; preds = %2017
  %2022 = load ptr, ptr %28, align 8, !tbaa !5
  %2023 = load i32, ptr %2022, align 4, !tbaa !9
  store i32 %2023, ptr %38, align 4, !tbaa !9
  %2024 = load i32, ptr %56, align 4, !tbaa !9
  %2025 = add nsw i32 %2024, 1
  store i32 %2025, ptr %55, align 4, !tbaa !9
  br label %2026

2026:                                             ; preds = %2039, %2021
  %2027 = load i32, ptr %55, align 4, !tbaa !9
  %2028 = load i32, ptr %38, align 4, !tbaa !9
  %2029 = icmp sle i32 %2027, %2028
  br i1 %2029, label %2030, label %2042

2030:                                             ; preds = %2026
  %2031 = load ptr, ptr %30, align 8, !tbaa !5
  %2032 = load i32, ptr %53, align 4, !tbaa !9
  %2033 = load i32, ptr %55, align 4, !tbaa !9
  %2034 = load i32, ptr %35, align 4, !tbaa !9
  %2035 = mul nsw i32 %2033, %2034
  %2036 = add nsw i32 %2032, %2035
  %2037 = sext i32 %2036 to i64
  %2038 = getelementptr inbounds double, ptr %2031, i64 %2037
  store double 0.000000e+00, ptr %2038, align 8, !tbaa !11
  br label %2039

2039:                                             ; preds = %2030
  %2040 = load i32, ptr %55, align 4, !tbaa !9
  %2041 = add nsw i32 %2040, 1
  store i32 %2041, ptr %55, align 4, !tbaa !9
  br label %2026, !llvm.loop !37

2042:                                             ; preds = %2026
  br label %2043

2043:                                             ; preds = %2042
  %2044 = load i32, ptr %53, align 4, !tbaa !9
  %2045 = add nsw i32 %2044, 1
  store i32 %2045, ptr %53, align 4, !tbaa !9
  br label %2017, !llvm.loop !38

2046:                                             ; preds = %2017
  br label %2047

2047:                                             ; preds = %2046, %2010
  %2048 = load i32, ptr %56, align 4, !tbaa !9
  %2049 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 %2048, ptr %2049, align 4, !tbaa !9
  br label %2050

2050:                                             ; preds = %2047, %1982
  br label %2051

2051:                                             ; preds = %2050, %1979
  %2052 = load i32, ptr %78, align 4, !tbaa !9
  %2053 = icmp ne i32 %2052, 0
  br i1 %2053, label %2054, label %2129

2054:                                             ; preds = %2051
  %2055 = load ptr, ptr %28, align 8, !tbaa !5
  %2056 = load i32, ptr %2055, align 4, !tbaa !9
  store i32 %2056, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %2057

2057:                                             ; preds = %2125, %2054
  %2058 = load i32, ptr %53, align 4, !tbaa !9
  %2059 = load i32, ptr %37, align 4, !tbaa !9
  %2060 = icmp sle i32 %2058, %2059
  br i1 %2060, label %2061, label %2128

2061:                                             ; preds = %2057
  %2062 = load ptr, ptr %21, align 8, !tbaa !5
  %2063 = load i32, ptr %2062, align 4, !tbaa !9
  %2064 = shl i32 %2063, 1
  store i32 %2064, ptr %38, align 4, !tbaa !9
  %2065 = load ptr, ptr %30, align 8, !tbaa !5
  %2066 = load i32, ptr %53, align 4, !tbaa !9
  %2067 = load i32, ptr %35, align 4, !tbaa !9
  %2068 = mul nsw i32 %2066, %2067
  %2069 = add nsw i32 %2068, 1
  %2070 = sext i32 %2069 to i64
  %2071 = getelementptr inbounds double, ptr %2065, i64 %2070
  %2072 = load ptr, ptr %32, align 8, !tbaa !5
  %2073 = getelementptr inbounds double, ptr %2072, i64 1
  call void @dcopy_(ptr noundef %38, ptr noundef %2071, ptr noundef @c__1, ptr noundef %2073, ptr noundef @c__1)
  %2074 = load i32, ptr %71, align 4, !tbaa !9
  %2075 = icmp ne i32 %2074, 0
  br i1 %2075, label %2076, label %2100

2076:                                             ; preds = %2061
  %2077 = load ptr, ptr %21, align 8, !tbaa !5
  %2078 = load ptr, ptr %32, align 8, !tbaa !5
  %2079 = getelementptr inbounds double, ptr %2078, i64 2
  %2080 = load ptr, ptr %30, align 8, !tbaa !5
  %2081 = load ptr, ptr %21, align 8, !tbaa !5
  %2082 = load i32, ptr %2081, align 4, !tbaa !9
  %2083 = add nsw i32 %2082, 1
  %2084 = load i32, ptr %53, align 4, !tbaa !9
  %2085 = load i32, ptr %35, align 4, !tbaa !9
  %2086 = mul nsw i32 %2084, %2085
  %2087 = add nsw i32 %2083, %2086
  %2088 = sext i32 %2087 to i64
  %2089 = getelementptr inbounds double, ptr %2080, i64 %2088
  call void @dcopy_(ptr noundef %2077, ptr noundef %2079, ptr noundef @c__2, ptr noundef %2089, ptr noundef @c__1)
  %2090 = load ptr, ptr %21, align 8, !tbaa !5
  %2091 = load ptr, ptr %32, align 8, !tbaa !5
  %2092 = getelementptr inbounds double, ptr %2091, i64 1
  %2093 = load ptr, ptr %30, align 8, !tbaa !5
  %2094 = load i32, ptr %53, align 4, !tbaa !9
  %2095 = load i32, ptr %35, align 4, !tbaa !9
  %2096 = mul nsw i32 %2094, %2095
  %2097 = add nsw i32 %2096, 1
  %2098 = sext i32 %2097 to i64
  %2099 = getelementptr inbounds double, ptr %2093, i64 %2098
  call void @dcopy_(ptr noundef %2090, ptr noundef %2092, ptr noundef @c__2, ptr noundef %2099, ptr noundef @c__1)
  br label %2124

2100:                                             ; preds = %2061
  %2101 = load ptr, ptr %21, align 8, !tbaa !5
  %2102 = load ptr, ptr %32, align 8, !tbaa !5
  %2103 = getelementptr inbounds double, ptr %2102, i64 2
  %2104 = load ptr, ptr %30, align 8, !tbaa !5
  %2105 = load i32, ptr %53, align 4, !tbaa !9
  %2106 = load i32, ptr %35, align 4, !tbaa !9
  %2107 = mul nsw i32 %2105, %2106
  %2108 = add nsw i32 %2107, 1
  %2109 = sext i32 %2108 to i64
  %2110 = getelementptr inbounds double, ptr %2104, i64 %2109
  call void @dcopy_(ptr noundef %2101, ptr noundef %2103, ptr noundef @c__2, ptr noundef %2110, ptr noundef @c__1)
  %2111 = load ptr, ptr %21, align 8, !tbaa !5
  %2112 = load ptr, ptr %32, align 8, !tbaa !5
  %2113 = getelementptr inbounds double, ptr %2112, i64 1
  %2114 = load ptr, ptr %30, align 8, !tbaa !5
  %2115 = load ptr, ptr %21, align 8, !tbaa !5
  %2116 = load i32, ptr %2115, align 4, !tbaa !9
  %2117 = add nsw i32 %2116, 1
  %2118 = load i32, ptr %53, align 4, !tbaa !9
  %2119 = load i32, ptr %35, align 4, !tbaa !9
  %2120 = mul nsw i32 %2118, %2119
  %2121 = add nsw i32 %2117, %2120
  %2122 = sext i32 %2121 to i64
  %2123 = getelementptr inbounds double, ptr %2114, i64 %2122
  call void @dcopy_(ptr noundef %2111, ptr noundef %2113, ptr noundef @c__2, ptr noundef %2123, ptr noundef @c__1)
  br label %2124

2124:                                             ; preds = %2100, %2076
  br label %2125

2125:                                             ; preds = %2124
  %2126 = load i32, ptr %53, align 4, !tbaa !9
  %2127 = add nsw i32 %2126, 1
  store i32 %2127, ptr %53, align 4, !tbaa !9
  br label %2057, !llvm.loop !39

2128:                                             ; preds = %2057
  br label %2129

2129:                                             ; preds = %2128, %2051
  store i32 1, ptr %94, align 4
  br label %2130

2130:                                             ; preds = %2129, %1543, %1393, %1236, %766, %402, %273, %263
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

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

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

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

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

declare void @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 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !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 [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@c_b10 = external hidden local_unnamed_addr global double, align 8
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@c_b14 = external hidden local_unnamed_addr global double, align 8
@c__1 = external hidden global i32, align 4
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b19 = external hidden global double, align 8
@c__2 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dbdsvdx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) local_unnamed_addr #0 {
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca [1 x i8], align 1
  %28 = alloca double, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #7
  %32 = getelementptr inbounds i8, ptr %4, i64 -8
  %33 = getelementptr inbounds i8, ptr %5, i64 -8
  %34 = getelementptr inbounds i8, ptr %11, i64 -8
  %35 = load i32, ptr %13, align 4, !tbaa !5
  %narrow = xor i32 %35, -1
  %36 = sext i32 %narrow to i64
  %37 = getelementptr inbounds double, ptr %12, i64 %36
  %38 = getelementptr inbounds i8, ptr %14, i64 -8
  %39 = getelementptr inbounds i8, ptr %15, i64 -4
  %40 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #7
  %41 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #7
  %42 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #7
  %43 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #7
  %44 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #7
  store i32 0, ptr %16, align 4, !tbaa !5
  %45 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #7
  %46 = icmp ne i32 %45, 0
  %47 = icmp ne i32 %44, 0
  %or.cond = select i1 %46, i1 true, i1 %47
  br i1 %or.cond, label %48, label %.thread845.sink.split

48:                                               ; preds = %17
  %.not = icmp ne i32 %43, 0
  br i1 %.not, label %51, label %49

49:                                               ; preds = %48
  %50 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #7
  %.not790 = icmp eq i32 %50, 0
  br i1 %.not790, label %.thread845.sink.split, label %51

51:                                               ; preds = %49, %48
  %52 = icmp ne i32 %40, 0
  %53 = icmp ne i32 %41, 0
  %or.cond3 = select i1 %52, i1 true, i1 %53
  %54 = icmp ne i32 %42, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %54
  br i1 %or.cond5, label %55, label %.thread845.sink.split

55:                                               ; preds = %51
  %56 = load i32, ptr %3, align 4, !tbaa !5
  %57 = icmp slt i32 %56, 0
  br i1 %57, label %.thread845.sink.split, label %58

58:                                               ; preds = %55
  %.not791 = icmp eq i32 %56, 0
  br i1 %.not791, label %75, label %59

59:                                               ; preds = %58
  br i1 %53, label %60, label %66

60:                                               ; preds = %59
  %61 = load double, ptr %6, align 8, !tbaa !9
  %62 = fcmp olt double %61, 0.000000e+00
  br i1 %62, label %.thread845.sink.split, label %63

63:                                               ; preds = %60
  %64 = load double, ptr %7, align 8, !tbaa !9
  %65 = fcmp ugt double %64, %61
  br i1 %65, label %75, label %.thread845.sink.split

66:                                               ; preds = %59
  br i1 %54, label %67, label %75

67:                                               ; preds = %66
  %68 = load i32, ptr %8, align 4, !tbaa !5
  %69 = icmp slt i32 %68, 1
  %70 = icmp ugt i32 %68, %56
  %or.cond852 = or i1 %69, %70
  br i1 %or.cond852, label %.thread845.sink.split, label %71

71:                                               ; preds = %67
  %72 = load i32, ptr %9, align 4, !tbaa !5
  %73 = icmp slt i32 %72, %68
  %74 = icmp ugt i32 %72, %56
  %or.cond849 = or i1 %73, %74
  br i1 %or.cond849, label %.thread845.sink.split, label %75

75:                                               ; preds = %71, %63, %66, %58
  %.pr = load i32, ptr %16, align 4, !tbaa !5
  %76 = icmp eq i32 %.pr, 0
  br i1 %76, label %77, label %.thread845

77:                                               ; preds = %75
  %78 = load i32, ptr %13, align 4, !tbaa !5
  %79 = icmp slt i32 %78, 1
  br i1 %79, label %.thread845.sink.split, label %80

80:                                               ; preds = %77
  %81 = shl nuw i32 %56, 1
  %82 = icmp slt i32 %78, %81
  %or.cond1205 = select i1 %.not, i1 %82, i1 false
  br i1 %or.cond1205, label %.thread845.sink.split, label %.thread

.thread845.sink.split:                            ; preds = %77, %80, %71, %67, %63, %60, %55, %51, %49, %17
  %.sink = phi i32 [ -1, %17 ], [ -2, %49 ], [ -3, %51 ], [ -4, %55 ], [ -7, %60 ], [ -8, %63 ], [ -9, %67 ], [ -10, %71 ], [ -14, %80 ], [ -14, %77 ]
  store i32 %.sink, ptr %16, align 4, !tbaa !5
  br label %.thread845

.thread845:                                       ; preds = %.thread845.sink.split, %75
  %83 = phi i32 [ %.pr, %75 ], [ %.sink, %.thread845.sink.split ]
  %84 = sub nsw i32 0, %83
  store i32 %84, ptr %18, align 4, !tbaa !5
  %85 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18, i32 noundef 7) #7
  br label %.loopexit

.thread:                                          ; preds = %80
  store i32 0, ptr %10, align 4, !tbaa !5
  %86 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %86, label %119 [
    i32 0, label %.loopexit
    i32 1, label %87
  ]

87:                                               ; preds = %.thread
  %or.cond7 = select i1 %52, i1 true, i1 %54
  br i1 %or.cond7, label %88, label %93

88:                                               ; preds = %87
  store i32 1, ptr %10, align 4, !tbaa !5
  %89 = load double, ptr %4, align 8, !tbaa !9
  %90 = fcmp ult double %89, 0.000000e+00
  %91 = fneg double %89
  %92 = select i1 %90, double %91, double %89
  br label %.sink.split

93:                                               ; preds = %87
  %94 = load double, ptr %6, align 8, !tbaa !9
  %95 = load double, ptr %4, align 8, !tbaa !9
  %96 = fcmp ult double %95, 0.000000e+00
  %97 = fneg double %95
  %98 = select i1 %96, double %97, double %95
  %99 = fcmp olt double %94, %98
  br i1 %99, label %100, label %104

100:                                              ; preds = %93
  %101 = load double, ptr %7, align 8, !tbaa !9
  %102 = fcmp ult double %101, %98
  br i1 %102, label %104, label %103

103:                                              ; preds = %100
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %88, %103
  %.sink1206 = phi double [ %98, %103 ], [ %92, %88 ]
  store double %.sink1206, ptr %11, align 8, !tbaa !9
  br label %104

104:                                              ; preds = %.sink.split, %93, %100
  br i1 %.not, label %105, label %.loopexit

105:                                              ; preds = %104
  %106 = load double, ptr %4, align 8, !tbaa !9
  %107 = fcmp ult double %106, 0.000000e+00
  %108 = load double, ptr @c_b10, align 8
  %109 = fcmp oge double %108, 0.000000e+00
  %.neg = fneg double %108
  br i1 %107, label %112, label %110

110:                                              ; preds = %105
  %111 = select i1 %109, double %108, double %.neg
  br label %114

112:                                              ; preds = %105
  %113 = select i1 %109, double %.neg, double %108
  br label %114

114:                                              ; preds = %112, %110
  %115 = phi double [ %111, %110 ], [ %113, %112 ]
  store double %115, ptr %12, align 8, !tbaa !9
  %116 = sext i32 %35 to i64
  %117 = getelementptr double, ptr %37, i64 %116
  %118 = getelementptr i8, ptr %117, i64 16
  store double 1.000000e+00, ptr %118, align 8, !tbaa !9
  br label %.loopexit

119:                                              ; preds = %.thread
  %120 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #7
  %121 = fmul double %120, 2.000000e+00
  store double %121, ptr %28, align 8, !tbaa !9
  %122 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #7
  %123 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #7
  %124 = tail call double @sqrt(double noundef %122) #7
  %125 = load double, ptr @c_b14, align 8, !tbaa !9
  %126 = tail call double @pow(double noundef %123, double noundef %125) #7
  %127 = fcmp oge double %126, 1.000000e+02
  %128 = select i1 %127, double 1.000000e+02, double %126
  %129 = fcmp ole double %128, 1.000000e+01
  %130 = select i1 %129, double 1.000000e+01, double %128
  %131 = fmul double %123, %130
  %132 = tail call i32 @idamax_(ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull @c__1) #7
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %32, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !9
  %136 = fcmp oge double %135, 0.000000e+00
  %137 = fneg double %135
  %138 = select i1 %136, double %135, double %137
  %139 = load i32, ptr %3, align 4, !tbaa !5
  %140 = add nsw i32 %139, -1
  store i32 %140, ptr %18, align 4, !tbaa !5
  %141 = call i32 @idamax_(ptr noundef nonnull %18, ptr noundef %5, ptr noundef nonnull @c__1) #7
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds double, ptr %33, i64 %142
  %144 = load double, ptr %143, align 8, !tbaa !9
  %145 = fcmp oge double %144, 0.000000e+00
  %146 = fneg double %144
  %147 = select i1 %145, double %144, double %146
  %148 = fcmp oge double %138, %147
  %149 = select i1 %148, double %138, double %147
  %150 = load double, ptr %4, align 8, !tbaa !9
  %151 = fcmp ult double %150, 0.000000e+00
  %152 = fneg double %150
  %153 = select i1 %151, double %152, double %150
  %154 = fcmp une double %150, 0.000000e+00
  %.pre = load i32, ptr %3, align 4, !tbaa !5
  br i1 %154, label %155, label %.loopexit862

155:                                              ; preds = %119
  %invariant.gep = getelementptr i8, ptr %5, i64 -16
  %.not795881 = icmp slt i32 %.pre, 2
  br i1 %.not795881, label %.loopexit862, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %155
  %156 = add nuw i32 %.pre, 1
  %wide.trip.count = zext i32 %156 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader
  %indvars.iv = phi i64 [ 2, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %.0884 = phi double [ %153, %.lr.ph.preheader ], [ %168, %.lr.ph ]
  %.0728883 = phi double [ %153, %.lr.ph.preheader ], [ %170, %.lr.ph ]
  %157 = getelementptr inbounds double, ptr %32, i64 %indvars.iv
  %158 = load double, ptr %157, align 8, !tbaa !9
  %159 = fcmp oge double %158, 0.000000e+00
  %160 = fneg double %158
  %161 = select i1 %159, double %158, double %160
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %162 = load double, ptr %gep, align 8, !tbaa !9
  %163 = fcmp oge double %162, 0.000000e+00
  %164 = fneg double %162
  %165 = select i1 %163, double %162, double %164
  %166 = fadd double %.0884, %165
  %167 = fdiv double %.0884, %166
  %168 = fmul double %161, %167
  %169 = fcmp ole double %.0728883, %168
  %170 = select i1 %169, double %.0728883, double %168
  %171 = fcmp oeq double %170, 0.000000e+00
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  %or.cond1210 = select i1 %171, i1 true, i1 %exitcond.not
  br i1 %or.cond1210, label %.loopexit862, label %.lr.ph, !llvm.loop !11

.loopexit862:                                     ; preds = %.lr.ph, %155, %119
  %.1729 = phi double [ %153, %119 ], [ %153, %155 ], [ %170, %.lr.ph ]
  %172 = sitofp i32 %.pre to double
  %173 = call double @sqrt(double noundef %172) #7
  %174 = fdiv double %.1729, %173
  %175 = fmul double %131, %174
  %176 = load i32, ptr %3, align 4, !tbaa !5
  %.not796.not888 = icmp sgt i32 %176, 1
  br i1 %.not796.not888, label %.lr.ph890.preheader, label %._crit_edge

.lr.ph890.preheader:                              ; preds = %.loopexit862
  %wide.trip.count1056 = zext nneg i32 %176 to i64
  br label %.lr.ph890

.lr.ph890:                                        ; preds = %.lr.ph890.preheader, %192
  %indvars.iv1053 = phi i64 [ 1, %.lr.ph890.preheader ], [ %indvars.iv.next1054, %192 ]
  %177 = getelementptr inbounds double, ptr %32, i64 %indvars.iv1053
  %178 = load double, ptr %177, align 8, !tbaa !9
  %179 = fcmp oge double %178, 0.000000e+00
  %180 = fneg double %178
  %181 = select i1 %179, double %178, double %180
  %182 = fcmp ugt double %181, %175
  br i1 %182, label %184, label %183

183:                                              ; preds = %.lr.ph890
  store double 0.000000e+00, ptr %177, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %183, %.lr.ph890
  %185 = getelementptr inbounds double, ptr %33, i64 %indvars.iv1053
  %186 = load double, ptr %185, align 8, !tbaa !9
  %187 = fcmp oge double %186, 0.000000e+00
  %188 = fneg double %186
  %189 = select i1 %187, double %186, double %188
  %190 = fcmp ugt double %189, %175
  br i1 %190, label %192, label %191

191:                                              ; preds = %184
  store double 0.000000e+00, ptr %185, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %184, %191
  %indvars.iv.next1054 = add nuw nsw i64 %indvars.iv1053, 1
  %exitcond1057.not = icmp eq i64 %indvars.iv.next1054, %wide.trip.count1056
  br i1 %exitcond1057.not, label %._crit_edge, label %.lr.ph890, !llvm.loop !13

._crit_edge:                                      ; preds = %192, %.loopexit862
  %193 = sext i32 %176 to i64
  %194 = getelementptr inbounds double, ptr %32, i64 %193
  %195 = load double, ptr %194, align 8, !tbaa !9
  store double %195, ptr %20, align 8, !tbaa !9
  %196 = fcmp oge double %195, 0.000000e+00
  %197 = fneg double %195
  %198 = select i1 %196, double %195, double %197
  %199 = fcmp ugt double %198, %175
  br i1 %199, label %201, label %200

200:                                              ; preds = %._crit_edge
  store double 0.000000e+00, ptr %194, align 8, !tbaa !9
  br label %201

201:                                              ; preds = %200, %._crit_edge
  %202 = shl i32 %176, 1
  %203 = or disjoint i32 %202, 1
  %204 = add nsw i32 %203, %202
  store i32 0, ptr %22, align 4, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !5
  store double 0.000000e+00, ptr %24, align 8, !tbaa !9
  store double 0.000000e+00, ptr %26, align 8, !tbaa !9
  br i1 %52, label %205, label %208

205:                                              ; preds = %201
  store i8 73, ptr %27, align 1, !tbaa !14
  br i1 %.not, label %206, label %283

206:                                              ; preds = %205
  store i32 %202, ptr %18, align 4, !tbaa !5
  %207 = add nsw i32 %176, 1
  store i32 %207, ptr %19, align 4, !tbaa !5
  br label %.sink.split1207

208:                                              ; preds = %201
  %.not797 = icmp eq i32 %41, 0
  br i1 %.not797, label %234, label %209

209:                                              ; preds = %208
  store i8 86, ptr %27, align 1, !tbaa !14
  %210 = load double, ptr %7, align 8, !tbaa !9
  %211 = fneg double %210
  store double %211, ptr %24, align 8, !tbaa !9
  %212 = load double, ptr %6, align 8, !tbaa !9
  %213 = fneg double %212
  store double %213, ptr %26, align 8, !tbaa !9
  store i32 %202, ptr %18, align 4, !tbaa !5
  %.not802892 = icmp slt i32 %202, 1
  br i1 %.not802892, label %._crit_edge896, label %.lr.ph895.preheader

.lr.ph895.preheader:                              ; preds = %209
  %214 = zext nneg i32 %202 to i64
  %215 = shl nuw nsw i64 %214, 3
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %215, i1 false), !tbaa !9
  br label %._crit_edge896

._crit_edge896:                                   ; preds = %.lr.ph895.preheader, %209
  %216 = sext i32 %203 to i64
  %217 = getelementptr inbounds double, ptr %38, i64 %216
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %217, ptr noundef nonnull @c__2) #7
  %218 = load i32, ptr %3, align 4, !tbaa !5
  %219 = add nsw i32 %218, -1
  store i32 %219, ptr %18, align 4, !tbaa !5
  %220 = sext i32 %202 to i64
  %221 = getelementptr double, ptr %38, i64 %220
  %222 = getelementptr i8, ptr %221, i64 16
  call void @dcopy_(ptr noundef nonnull %18, ptr noundef %5, ptr noundef nonnull @c__1, ptr noundef %222, ptr noundef nonnull @c__2) #7
  %223 = load i32, ptr %3, align 4, !tbaa !5
  %224 = shl i32 %223, 1
  store i32 %224, ptr %18, align 4, !tbaa !5
  %225 = sext i32 %204 to i64
  %226 = getelementptr inbounds double, ptr %38, i64 %225
  %227 = getelementptr inbounds i32, ptr %39, i64 %216
  call void @dstevx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, ptr noundef nonnull %18, ptr noundef %14, ptr noundef nonnull %217, ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull %28, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %226, ptr noundef nonnull %227, ptr noundef %15, ptr noundef nonnull %16) #7
  %228 = load i32, ptr %10, align 4, !tbaa !5
  %229 = icmp eq i32 %228, 0
  br i1 %229, label %.loopexit, label %230

230:                                              ; preds = %._crit_edge896
  br i1 %.not, label %231, label %283

231:                                              ; preds = %230
  %232 = load i32, ptr %3, align 4, !tbaa !5
  %233 = shl i32 %232, 1
  store i32 %233, ptr %18, align 4, !tbaa !5
  br label %.sink.split1207

234:                                              ; preds = %208
  %.not798 = icmp eq i32 %42, 0
  br i1 %.not798, label %283, label %235

235:                                              ; preds = %234
  %236 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %236, ptr %22, align 4, !tbaa !5
  %237 = load i32, ptr %9, align 4, !tbaa !5
  store i32 %237, ptr %23, align 4, !tbaa !5
  store i8 86, ptr %27, align 1, !tbaa !14
  store i32 %202, ptr %18, align 4, !tbaa !5
  %.not799897 = icmp slt i32 %202, 1
  br i1 %.not799897, label %._crit_edge901, label %.lr.ph900.preheader

.lr.ph900.preheader:                              ; preds = %235
  %238 = zext nneg i32 %202 to i64
  %239 = shl nuw nsw i64 %238, 3
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %239, i1 false), !tbaa !9
  br label %._crit_edge901

._crit_edge901:                                   ; preds = %.lr.ph900.preheader, %235
  %240 = sext i32 %203 to i64
  %241 = getelementptr inbounds double, ptr %38, i64 %240
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %241, ptr noundef nonnull @c__2) #7
  %242 = load i32, ptr %3, align 4, !tbaa !5
  %243 = add nsw i32 %242, -1
  store i32 %243, ptr %18, align 4, !tbaa !5
  %244 = sext i32 %202 to i64
  %245 = getelementptr double, ptr %38, i64 %244
  %246 = getelementptr i8, ptr %245, i64 16
  call void @dcopy_(ptr noundef nonnull %18, ptr noundef %5, ptr noundef nonnull @c__1, ptr noundef %246, ptr noundef nonnull @c__2) #7
  %247 = load i32, ptr %3, align 4, !tbaa !5
  %248 = shl i32 %247, 1
  store i32 %248, ptr %18, align 4, !tbaa !5
  %249 = sext i32 %204 to i64
  %250 = getelementptr inbounds double, ptr %38, i64 %249
  %251 = getelementptr inbounds i32, ptr %39, i64 %240
  call void @dstevx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef %14, ptr noundef nonnull %241, ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull %28, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %250, ptr noundef nonnull %251, ptr noundef %15, ptr noundef nonnull %16) #7
  %252 = load double, ptr %11, align 8, !tbaa !9
  %253 = fmul double %149, 2.000000e+00
  %254 = fmul double %122, %253
  %255 = load i32, ptr %3, align 4, !tbaa !5
  %256 = sitofp i32 %255 to double
  %257 = fneg double %254
  %258 = call double @llvm.fmuladd.f64(double %257, double %256, double %252)
  store double %258, ptr %24, align 8, !tbaa !9
  %259 = shl i32 %255, 1
  store i32 %259, ptr %18, align 4, !tbaa !5
  %.not800902 = icmp slt i32 %259, 1
  br i1 %.not800902, label %._crit_edge906, label %.lr.ph905.preheader

.lr.ph905.preheader:                              ; preds = %._crit_edge901
  %260 = zext nneg i32 %259 to i64
  %261 = shl nuw nsw i64 %260, 3
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %261, i1 false), !tbaa !9
  br label %._crit_edge906

._crit_edge906:                                   ; preds = %.lr.ph905.preheader, %._crit_edge901
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %241, ptr noundef nonnull @c__2) #7
  %262 = load i32, ptr %3, align 4, !tbaa !5
  %263 = add nsw i32 %262, -1
  store i32 %263, ptr %18, align 4, !tbaa !5
  call void @dcopy_(ptr noundef nonnull %18, ptr noundef %5, ptr noundef nonnull @c__1, ptr noundef %246, ptr noundef nonnull @c__2) #7
  %264 = load i32, ptr %3, align 4, !tbaa !5
  %265 = shl i32 %264, 1
  store i32 %265, ptr %18, align 4, !tbaa !5
  call void @dstevx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef %14, ptr noundef nonnull %241, ptr noundef nonnull %26, ptr noundef nonnull %26, ptr noundef nonnull %23, ptr noundef nonnull %23, ptr noundef nonnull %28, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %250, ptr noundef nonnull %251, ptr noundef %15, ptr noundef nonnull %16) #7
  %266 = load double, ptr %11, align 8, !tbaa !9
  %267 = load i32, ptr %3, align 4, !tbaa !5
  %268 = sitofp i32 %267 to double
  %269 = call double @llvm.fmuladd.f64(double %254, double %268, double %266)
  %270 = fcmp ole double %269, 0.000000e+00
  %271 = select i1 %270, double %269, double 0.000000e+00
  store double %271, ptr %26, align 8, !tbaa !9
  %272 = load double, ptr %24, align 8, !tbaa !9
  %273 = fcmp oeq double %272, %271
  br i1 %273, label %274, label %276

274:                                              ; preds = %._crit_edge906
  %275 = fsub double %272, %131
  store double %275, ptr %24, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %274, %._crit_edge906
  br i1 %.not, label %277, label %283

277:                                              ; preds = %276
  %278 = shl i32 %267, 1
  store i32 %278, ptr %18, align 4, !tbaa !5
  %279 = load i32, ptr %9, align 4, !tbaa !5
  %280 = load i32, ptr %8, align 4, !tbaa !5
  %281 = add i32 %279, 1
  %282 = sub i32 %281, %280
  store i32 %282, ptr %19, align 4, !tbaa !5
  br label %.sink.split1207

.sink.split1207:                                  ; preds = %206, %277, %231
  %.sink1208 = phi ptr [ %10, %231 ], [ %19, %277 ], [ %19, %206 ]
  call void @dlaset_(ptr noundef nonnull @.str.10, ptr noundef nonnull %18, ptr noundef nonnull %.sink1208, ptr noundef nonnull @c_b19, ptr noundef nonnull @c_b19, ptr noundef %12, ptr noundef nonnull %13) #7
  br label %283

283:                                              ; preds = %.sink.split1207, %230, %276, %234, %205
  store i32 0, ptr %10, align 4, !tbaa !5
  store i32 0, ptr %30, align 4, !tbaa !5
  store i32 0, ptr %31, align 4, !tbaa !5
  %284 = load i32, ptr %3, align 4, !tbaa !5
  %.not805907 = icmp slt i32 %284, 1
  br i1 %.not805907, label %._crit_edge911, label %.lr.ph910.preheader

.lr.ph910.preheader:                              ; preds = %283
  %285 = zext nneg i32 %284 to i64
  %286 = shl nuw nsw i64 %285, 3
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 %286, i1 false), !tbaa !9
  br label %._crit_edge911

._crit_edge911:                                   ; preds = %.lr.ph910.preheader, %283
  %287 = shl i32 %284, 1
  %288 = add nsw i32 %287, %203
  %289 = sext i32 %288 to i64
  %290 = getelementptr double, ptr %38, i64 %289
  %291 = getelementptr i8, ptr %290, i64 -8
  store double 0.000000e+00, ptr %291, align 8, !tbaa !9
  store i32 %287, ptr %18, align 4, !tbaa !5
  %.not806912 = icmp slt i32 %287, 1
  br i1 %.not806912, label %._crit_edge916, label %.lr.ph915.preheader

.lr.ph915.preheader:                              ; preds = %._crit_edge911
  %292 = zext nneg i32 %287 to i64
  %293 = shl nuw nsw i64 %292, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %14, i8 0, i64 %293, i1 false), !tbaa !9
  br label %._crit_edge916

._crit_edge916:                                   ; preds = %.lr.ph915.preheader, %._crit_edge911
  %294 = sext i32 %203 to i64
  %295 = getelementptr inbounds double, ptr %38, i64 %294
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %295, ptr noundef nonnull @c__2) #7
  %296 = load i32, ptr %3, align 4, !tbaa !5
  %297 = add nsw i32 %296, -1
  store i32 %297, ptr %18, align 4, !tbaa !5
  %298 = sext i32 %202 to i64
  %299 = getelementptr double, ptr %38, i64 %298
  %300 = getelementptr i8, ptr %299, i64 16
  call void @dcopy_(ptr noundef nonnull %18, ptr noundef %5, ptr noundef nonnull @c__1, ptr noundef %300, ptr noundef nonnull @c__2) #7
  %301 = load i32, ptr %3, align 4, !tbaa !5
  %302 = shl i32 %301, 1
  store i32 %302, ptr %18, align 4, !tbaa !5
  %invariant.gep992 = getelementptr i8, ptr %14, i64 -16
  %.not807994 = icmp slt i32 %302, 2
  br i1 %.not807994, label %._crit_edge1004, label %.lr.ph1003

.lr.ph1003:                                       ; preds = %._crit_edge916
  %303 = fcmp olt double %174, %123
  %304 = sext i32 %204 to i64
  %305 = getelementptr inbounds double, ptr %38, i64 %304
  %306 = getelementptr inbounds i32, ptr %39, i64 %294
  %307 = icmp ne i32 %43, 0
  %308 = sext i32 %35 to i64
  %309 = shl nsw i64 %36, 3
  %scevgep = getelementptr i8, ptr %12, i64 %309
  %invariant.gep1200 = getelementptr double, ptr %invariant.gep992, i64 %294
  %invariant.gep1194 = getelementptr double, ptr %invariant.gep992, i64 %294
  %310 = shl nsw i64 %36, 3
  %scevgep1221 = getelementptr i8, ptr %12, i64 %310
  %scevgep1224 = getelementptr i8, ptr %12, i64 8
  %scevgep1226 = getelementptr i8, ptr %12, i64 %310
  %scevgep1229 = getelementptr i8, ptr %12, i64 8
  %311 = shl nsw i64 %36, 3
  %scevgep1249 = getelementptr i8, ptr %12, i64 %311
  %scevgep1253 = getelementptr i8, ptr %12, i64 %311
  %312 = shl nsw i64 %36, 3
  %scevgep1276 = getelementptr i8, ptr %12, i64 %312
  %scevgep1280 = getelementptr i8, ptr %12, i64 %312
  br label %313

313:                                              ; preds = %.lr.ph1003, %635
  %314 = phi i32 [ %302, %.lr.ph1003 ], [ %636, %635 ]
  %315 = phi i32 [ %301, %.lr.ph1003 ], [ %637, %635 ]
  %316 = phi i32 [ %301, %.lr.ph1003 ], [ %638, %635 ]
  %indvars.iv1124 = phi i64 [ 2, %.lr.ph1003 ], [ %indvars.iv.next1125, %635 ]
  %.07091001 = phi i32 [ 1, %.lr.ph1003 ], [ %.3, %635 ]
  %.07101000 = phi i32 [ 1, %.lr.ph1003 ], [ %.3713, %635 ]
  %.0714999 = phi i32 [ 2, %.lr.ph1003 ], [ %.3717, %635 ]
  %.0732997 = phi i32 [ 1, %.lr.ph1003 ], [ %.3735, %635 ]
  %.0736996 = phi i32 [ 1, %.lr.ph1003 ], [ %.3739, %635 ]
  %.0756995 = phi i32 [ 1, %.lr.ph1003 ], [ %.1757, %635 ]
  %gep1201 = getelementptr double, ptr %invariant.gep1200, i64 %indvars.iv1124
  %317 = load double, ptr %gep1201, align 8, !tbaa !9
  %318 = fcmp oeq double %317, 0.000000e+00
  br i1 %318, label %319, label %635

319:                                              ; preds = %313
  %320 = add nsw i64 %indvars.iv1124, -1
  %321 = trunc nuw nsw i64 %320 to i32
  store i32 %321, ptr %19, align 4, !tbaa !5
  %322 = sext i32 %.0756995 to i64
  %.not819966.not = icmp sgt i64 %indvars.iv1124, %322
  br i1 %.not819966.not, label %.lr.ph980, label %.loopexit860

.lr.ph980:                                        ; preds = %319
  %323 = sub nsw i32 %321, %.0756995
  %324 = sdiv i32 %323, 2
  %325 = add nsw i32 %324, 1
  %326 = zext i32 %.0756995 to i64
  %327 = icmp eq i64 %320, %326
  br label %328

328:                                              ; preds = %.lr.ph980, %.loopexit857
  %329 = phi i32 [ %315, %.lr.ph980 ], [ %579, %.loopexit857 ]
  %330 = phi i32 [ %316, %.lr.ph980 ], [ %580, %.loopexit857 ]
  %indvars.iv1114 = phi i64 [ %322, %.lr.ph980 ], [ %indvars.iv.next1115, %.loopexit857 ]
  %.1977 = phi i32 [ %.07091001, %.lr.ph980 ], [ %.2, %.loopexit857 ]
  %.1711976 = phi i32 [ %.07101000, %.lr.ph980 ], [ %.2712, %.loopexit857 ]
  %.1715975 = phi i32 [ %.0714999, %.lr.ph980 ], [ %.2716, %.loopexit857 ]
  %.0718974 = phi i32 [ %.0756995, %.lr.ph980 ], [ %.1719, %.loopexit857 ]
  %.1721973 = phi i32 [ 0, %.lr.ph980 ], [ %.3723, %.loopexit857 ]
  %.1733969 = phi i32 [ %.0732997, %.lr.ph980 ], [ %.2734, %.loopexit857 ]
  %.1737968 = phi i32 [ %.0736996, %.lr.ph980 ], [ %.2738, %.loopexit857 ]
  %.1741967 = phi i32 [ 0, %.lr.ph980 ], [ %.3743, %.loopexit857 ]
  %gep1195 = getelementptr double, ptr %invariant.gep1194, i64 %indvars.iv1114
  %331 = load double, ptr %gep1195, align 8, !tbaa !9
  %332 = fcmp oeq double %331, 0.000000e+00
  br i1 %332, label %333, label %356

333:                                              ; preds = %328
  %334 = icmp eq i64 %indvars.iv1114, %322
  br i1 %334, label %335, label %337

335:                                              ; preds = %333
  br i1 %327, label %336, label %366

336:                                              ; preds = %335
  store i32 1, ptr %30, align 4, !tbaa !5
  store i32 1, ptr %31, align 4, !tbaa !5
  br label %366

337:                                              ; preds = %333
  %338 = icmp eq i64 %indvars.iv1114, %320
  br i1 %338, label %339, label %345

339:                                              ; preds = %337
  %340 = sub nsw i32 %321, %.0718974
  %341 = sdiv i32 %340, 2
  %342 = add nsw i32 %341, 1
  store i32 %342, ptr %30, align 4, !tbaa !5
  store i32 %342, ptr %31, align 4, !tbaa !5
  %.not821 = icmp eq i32 %.0718974, %.0756995
  br i1 %.not821, label %366, label %343

343:                                              ; preds = %339
  %344 = add nsw i32 %341, 2
  store i32 %344, ptr %30, align 4, !tbaa !5
  br label %366

345:                                              ; preds = %337
  %346 = icmp eq i32 %.0718974, %.0756995
  %347 = trunc i64 %indvars.iv1114 to i32
  br i1 %346, label %348, label %352

348:                                              ; preds = %345
  %349 = sub i32 %347, %.0756995
  %350 = sdiv i32 %349, 2
  store i32 %350, ptr %30, align 4, !tbaa !5
  %351 = add nsw i32 %350, 1
  store i32 %351, ptr %31, align 4, !tbaa !5
  br label %366

352:                                              ; preds = %345
  %353 = sub nsw i32 %347, %.0718974
  %354 = sdiv i32 %353, 2
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr %30, align 4, !tbaa !5
  store i32 %355, ptr %31, align 4, !tbaa !5
  br label %366

356:                                              ; preds = %328
  %357 = icmp eq i64 %indvars.iv1114, %320
  br i1 %357, label %358, label %366

358:                                              ; preds = %356
  %359 = icmp eq i32 %.0718974, %.0756995
  br i1 %359, label %360, label %361

360:                                              ; preds = %358
  store i32 %325, ptr %30, align 4, !tbaa !5
  store i32 %325, ptr %31, align 4, !tbaa !5
  br label %366

361:                                              ; preds = %358
  %362 = sub nsw i32 %321, %.0718974
  %363 = sdiv i32 %362, 2
  %364 = add nsw i32 %363, 1
  store i32 %364, ptr %31, align 4, !tbaa !5
  %365 = add nsw i32 %363, 2
  store i32 %365, ptr %30, align 4, !tbaa !5
  br label %366

366:                                              ; preds = %356, %361, %360, %336, %335, %348, %352, %339, %343
  %.2742 = phi i32 [ 1, %336 ], [ 1, %335 ], [ 1, %343 ], [ 1, %339 ], [ %.1741967, %348 ], [ %.1741967, %352 ], [ %.1741967, %360 ], [ %.1741967, %361 ], [ %.1741967, %356 ]
  %367 = load i32, ptr %30, align 4, !tbaa !5
  %368 = load i32, ptr %31, align 4, !tbaa !5
  %369 = add nsw i32 %368, %367
  store i32 %369, ptr %21, align 4, !tbaa !5
  %370 = icmp sgt i32 %369, 0
  br i1 %370, label %371, label %578

371:                                              ; preds = %366
  store i32 1, ptr %22, align 4, !tbaa !5
  %372 = lshr i32 %369, 1
  store i32 %372, ptr %23, align 4, !tbaa !5
  %373 = load double, ptr %26, align 8
  %374 = fcmp oeq double %373, 0.000000e+00
  %or.cond9 = select i1 %52, i1 true, i1 %374
  br i1 %or.cond9, label %375, label %380

375:                                              ; preds = %371
  %.not822 = icmp ne i32 %.2742, 0
  %or.cond840 = select i1 %.not822, i1 true, i1 %303
  %376 = and i32 %369, 1
  %377 = icmp ne i32 %376, 0
  %or.cond851 = or i1 %or.cond840, %377
  br i1 %or.cond851, label %378, label %380

378:                                              ; preds = %375
  %379 = add nuw nsw i32 %372, 1
  store i32 %379, ptr %23, align 4, !tbaa !5
  br label %380

380:                                              ; preds = %375, %378, %371
  %381 = sext i32 %.0718974 to i64
  %382 = getelementptr inbounds double, ptr %38, i64 %381
  %383 = add nsw i32 %.0718974, %203
  %384 = sext i32 %383 to i64
  %gep965 = getelementptr double, ptr %invariant.gep992, i64 %384
  %385 = sext i32 %.1737968 to i64
  %386 = getelementptr inbounds double, ptr %34, i64 %385
  %387 = mul nsw i32 %.1733969, %35
  %388 = add nsw i32 %.1977, %387
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %37, i64 %389
  call void @dstevx_(ptr noundef %1, ptr noundef nonnull %27, ptr noundef nonnull %21, ptr noundef nonnull %382, ptr noundef %gep965, ptr noundef nonnull %24, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %386, ptr noundef %390, ptr noundef nonnull %13, ptr noundef nonnull %305, ptr noundef nonnull %306, ptr noundef %15, ptr noundef nonnull %16) #7
  %391 = load i32, ptr %16, align 4, !tbaa !5
  %.not823 = icmp eq i32 %391, 0
  br i1 %.not823, label %392, label %.loopexit

392:                                              ; preds = %380
  %393 = load double, ptr %386, align 8, !tbaa !9
  store double %393, ptr %20, align 8, !tbaa !9
  %394 = load i32, ptr %29, align 4, !tbaa !5
  %.not824.not917 = icmp sgt i32 %394, 0
  br i1 %.not824.not917, label %.lr.ph921.preheader, label %.loopexit858

.lr.ph921.preheader:                              ; preds = %392
  %395 = fcmp oge double %393, 0.000000e+00
  %396 = fneg double %393
  %397 = select i1 %395, double %393, double %396
  %398 = add nsw i32 %394, %.1737968
  %399 = sext i32 %398 to i64
  br label %.lr.ph921

.lr.ph921:                                        ; preds = %.lr.ph921.preheader, %.lr.ph921
  %indvars.iv1073 = phi i64 [ %385, %.lr.ph921.preheader ], [ %indvars.iv.next1074, %.lr.ph921 ]
  %.0725919 = phi double [ %397, %.lr.ph921.preheader ], [ %.1726, %.lr.ph921 ]
  %400 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1073
  %401 = load double, ptr %400, align 8, !tbaa !9
  %402 = fcmp oge double %401, 0.000000e+00
  %403 = fneg double %401
  %404 = select i1 %402, double %401, double %403
  %405 = fcmp ogt double %404, %.0725919
  %.1726 = select i1 %405, double %401, double %.0725919
  %indvars.iv.next1074 = add nsw i64 %indvars.iv1073, 1
  %.not824.not = icmp slt i64 %indvars.iv.next1074, %399
  br i1 %.not824.not, label %.lr.ph921, label %406, !llvm.loop !15

406:                                              ; preds = %.lr.ph921
  store double %401, ptr %20, align 8, !tbaa !9
  br i1 %307, label %407, label %.loopexit858

407:                                              ; preds = %406
  %408 = icmp ne i32 %394, 1
  %409 = load double, ptr %26, align 8
  %410 = fcmp oeq double %409, 0.000000e+00
  %or.cond13 = select i1 %408, i1 %410, i1 false
  br i1 %or.cond13, label %411, label %.loopexit859

411:                                              ; preds = %407
  %412 = load i32, ptr %21, align 4, !tbaa !5
  %413 = and i32 %412, 1
  %414 = icmp eq i32 %413, 0
  %415 = fcmp oeq double %.1726, 0.000000e+00
  %or.cond15.not827.not1215 = select i1 %414, i1 %415, i1 false
  %416 = icmp eq i32 %.1721973, 0
  %or.cond17.not1212 = select i1 %or.cond15.not827.not1215, i1 %416, i1 false
  %.not828.not925 = icmp sgt i32 %412, 0
  %or.cond1209 = and i1 %or.cond17.not1212, %.not828.not925
  br i1 %or.cond1209, label %.lr.ph928, label %.loopexit859

.lr.ph928:                                        ; preds = %411
  %417 = add nsw i32 %412, %.1977
  %418 = add nsw i32 %394, %.1733969
  %419 = add nsw i32 %418, -1
  %420 = mul nsw i32 %419, %35
  %421 = add nsw i32 %418, -2
  %422 = mul nsw i32 %421, %35
  %423 = sext i32 %.1977 to i64
  %424 = sext i32 %420 to i64
  %425 = sext i32 %422 to i64
  %426 = sext i32 %417 to i64
  %invariant.gep1176 = getelementptr double, ptr %37, i64 %424
  %invariant.gep1178 = getelementptr double, ptr %37, i64 %425
  %427 = add nsw i64 %423, 1
  %smax1286 = call i64 @llvm.smax.i64(i64 %427, i64 %426)
  %428 = sub i64 %smax1286, %423
  %min.iters.check1289 = icmp ult i64 %428, 10
  br i1 %min.iters.check1289, label %scalar.ph1288.preheader, label %vector.memcheck1275

vector.memcheck1275:                              ; preds = %.lr.ph928
  %429 = add nsw i64 %423, %425
  %430 = shl nsw i64 %429, 3
  %scevgep1277 = getelementptr i8, ptr %scevgep1276, i64 %430
  %431 = add nsw i64 %423, 1
  %smax1278 = call i64 @llvm.smax.i64(i64 %431, i64 %426)
  %432 = add i64 %smax1278, %36
  %433 = add i64 %432, %425
  %434 = shl nsw i64 %433, 3
  %scevgep1279 = getelementptr i8, ptr %12, i64 %434
  %435 = add nsw i64 %423, %424
  %436 = shl nsw i64 %435, 3
  %scevgep1281 = getelementptr i8, ptr %scevgep1280, i64 %436
  %437 = add i64 %smax1278, %36
  %438 = add i64 %437, %424
  %439 = shl nsw i64 %438, 3
  %scevgep1282 = getelementptr i8, ptr %12, i64 %439
  %bound01283 = icmp ult ptr %scevgep1277, %scevgep1282
  %bound11284 = icmp ult ptr %scevgep1281, %scevgep1279
  %found.conflict1285 = and i1 %bound01283, %bound11284
  br i1 %found.conflict1285, label %scalar.ph1288.preheader, label %vector.ph1290

vector.ph1290:                                    ; preds = %vector.memcheck1275
  %n.vec1292 = and i64 %428, -4
  %ind.end1293 = add i64 %n.vec1292, %423
  br label %vector.body1295

vector.body1295:                                  ; preds = %vector.body1295, %vector.ph1290
  %index1296 = phi i64 [ 0, %vector.ph1290 ], [ %index.next1302, %vector.body1295 ]
  %offset.idx1297 = add i64 %index1296, %423
  %440 = getelementptr double, ptr %invariant.gep1176, i64 %offset.idx1297
  %441 = getelementptr i8, ptr %440, i64 16
  %wide.load1298 = load <2 x double>, ptr %440, align 8, !tbaa !9, !alias.scope !16
  %wide.load1299 = load <2 x double>, ptr %441, align 8, !tbaa !9, !alias.scope !16
  %442 = getelementptr double, ptr %invariant.gep1178, i64 %offset.idx1297
  %443 = getelementptr i8, ptr %442, i64 16
  %wide.load1300 = load <2 x double>, ptr %442, align 8, !tbaa !9, !alias.scope !19, !noalias !16
  %wide.load1301 = load <2 x double>, ptr %443, align 8, !tbaa !9, !alias.scope !19, !noalias !16
  %444 = fadd <2 x double> %wide.load1298, %wide.load1300
  %445 = fadd <2 x double> %wide.load1299, %wide.load1301
  store <2 x double> %444, ptr %442, align 8, !tbaa !9, !alias.scope !19, !noalias !16
  store <2 x double> %445, ptr %443, align 8, !tbaa !9, !alias.scope !19, !noalias !16
  store <2 x double> zeroinitializer, ptr %440, align 8, !tbaa !9, !alias.scope !16
  store <2 x double> zeroinitializer, ptr %441, align 8, !tbaa !9, !alias.scope !16
  %index.next1302 = add nuw i64 %index1296, 4
  %446 = icmp eq i64 %index.next1302, %n.vec1292
  br i1 %446, label %middle.block1287, label %vector.body1295, !llvm.loop !21

middle.block1287:                                 ; preds = %vector.body1295
  %cmp.n1303 = icmp eq i64 %428, %n.vec1292
  br i1 %cmp.n1303, label %.loopexit859, label %scalar.ph1288.preheader

scalar.ph1288.preheader:                          ; preds = %middle.block1287, %vector.memcheck1275, %.lr.ph928
  %indvars.iv1077.ph = phi i64 [ %423, %vector.memcheck1275 ], [ %423, %.lr.ph928 ], [ %ind.end1293, %middle.block1287 ]
  br label %scalar.ph1288

scalar.ph1288:                                    ; preds = %scalar.ph1288.preheader, %scalar.ph1288
  %indvars.iv1077 = phi i64 [ %indvars.iv.next1078, %scalar.ph1288 ], [ %indvars.iv1077.ph, %scalar.ph1288.preheader ]
  %gep1177 = getelementptr double, ptr %invariant.gep1176, i64 %indvars.iv1077
  %447 = load double, ptr %gep1177, align 8, !tbaa !9
  %gep1179 = getelementptr double, ptr %invariant.gep1178, i64 %indvars.iv1077
  %448 = load double, ptr %gep1179, align 8, !tbaa !9
  %449 = fadd double %447, %448
  store double %449, ptr %gep1179, align 8, !tbaa !9
  store double 0.000000e+00, ptr %gep1177, align 8, !tbaa !9
  %indvars.iv.next1078 = add nsw i64 %indvars.iv1077, 1
  %.not828.not = icmp slt i64 %indvars.iv.next1078, %426
  br i1 %.not828.not, label %scalar.ph1288, label %.loopexit859, !llvm.loop !24

.loopexit859:                                     ; preds = %scalar.ph1288, %middle.block1287, %411, %407
  %450 = add nsw i32 %394, -1
  %451 = load i32, ptr %30, align 4, !tbaa !5
  %452 = add nsw i32 %451, -1
  %453 = call i32 @llvm.smin.i32(i32 %450, i32 %452)
  %.not830933 = icmp slt i32 %453, 0
  br i1 %.not830933, label %._crit_edge938, label %.lr.ph937.preheader

.lr.ph937.preheader:                              ; preds = %.loopexit859
  %454 = sext i32 %.1733969 to i64
  %455 = sext i32 %.1715975 to i64
  %456 = add nuw nsw i32 %453, 1
  %wide.trip.count1088 = zext nneg i32 %456 to i64
  %invariant.gep1182 = getelementptr double, ptr %37, i64 %455
  %invariant.gep1180 = getelementptr double, ptr %37, i64 %455
  br label %.lr.ph937

.lr.ph937:                                        ; preds = %.lr.ph937.preheader, %481
  %indvars.iv1085 = phi i64 [ 0, %.lr.ph937.preheader ], [ %indvars.iv.next1086, %481 ]
  %457 = add nsw i64 %indvars.iv1085, %454
  %458 = mul nsw i64 %457, %308
  %gep1183 = getelementptr double, ptr %invariant.gep1182, i64 %458
  %459 = call double @dnrm2_(ptr noundef nonnull %30, ptr noundef %gep1183, ptr noundef nonnull @c__2) #7
  %460 = fcmp oeq double %459, 0.000000e+00
  br i1 %460, label %461, label %465

461:                                              ; preds = %.lr.ph937
  %462 = load i32, ptr %3, align 4, !tbaa !5
  %463 = shl i32 %462, 1
  %464 = or disjoint i32 %463, 1
  store i32 %464, ptr %16, align 4, !tbaa !5
  br label %.loopexit

465:                                              ; preds = %.lr.ph937
  %466 = fdiv double 1.000000e+00, %459
  store double %466, ptr %20, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %30, ptr noundef nonnull %20, ptr noundef %gep1183, ptr noundef nonnull @c__2) #7
  %467 = fcmp une double %459, 1.000000e+00
  br i1 %467, label %468, label %481

468:                                              ; preds = %465
  %469 = fsub double %459, %124
  store double %469, ptr %20, align 8, !tbaa !9
  %470 = fcmp oge double %469, 0.000000e+00
  %471 = fneg double %469
  %472 = select i1 %470, double %469, double %471
  %473 = fmul double %472, 0x3FF6A09E667F3BCD
  %474 = fcmp ogt double %473, 1.000000e+00
  br i1 %474, label %.preheader855, label %481

.preheader855:                                    ; preds = %468
  %.not838.not929.not = icmp eq i64 %indvars.iv1085, 0
  br i1 %.not838.not929.not, label %._crit_edge932, label %.lr.ph931

.lr.ph931:                                        ; preds = %.preheader855, %.lr.ph931
  %indvars.iv1080 = phi i64 [ %indvars.iv.next1081, %.lr.ph931 ], [ 0, %.preheader855 ]
  %475 = add nsw i64 %indvars.iv1080, %454
  %476 = mul nsw i64 %475, %308
  %gep1181 = getelementptr double, ptr %invariant.gep1180, i64 %476
  %477 = call double @ddot_(ptr noundef nonnull %30, ptr noundef %gep1181, ptr noundef nonnull @c__2, ptr noundef %gep1183, ptr noundef nonnull @c__2) #7
  %478 = fneg double %477
  store double %478, ptr %25, align 8, !tbaa !9
  call void @daxpy_(ptr noundef nonnull %30, ptr noundef nonnull %25, ptr noundef %gep1181, ptr noundef nonnull @c__2, ptr noundef %gep1183, ptr noundef nonnull @c__2) #7
  %indvars.iv.next1081 = add nuw nsw i64 %indvars.iv1080, 1
  %exitcond1084.not = icmp eq i64 %indvars.iv.next1081, %indvars.iv1085
  br i1 %exitcond1084.not, label %._crit_edge932, label %.lr.ph931, !llvm.loop !25

._crit_edge932:                                   ; preds = %.lr.ph931, %.preheader855
  %479 = call double @dnrm2_(ptr noundef nonnull %30, ptr noundef %gep1183, ptr noundef nonnull @c__2) #7
  %480 = fdiv double 1.000000e+00, %479
  store double %480, ptr %20, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %30, ptr noundef nonnull %20, ptr noundef %gep1183, ptr noundef nonnull @c__2) #7
  br label %481

481:                                              ; preds = %465, %468, %._crit_edge932
  %indvars.iv.next1086 = add nuw nsw i64 %indvars.iv1085, 1
  %exitcond1089.not = icmp eq i64 %indvars.iv.next1086, %wide.trip.count1088
  br i1 %exitcond1089.not, label %._crit_edge938.loopexit, label %.lr.ph937, !llvm.loop !26

._crit_edge938.loopexit:                          ; preds = %481
  %.pre1150 = load i32, ptr %29, align 4, !tbaa !5
  %.pre1154 = add nsw i32 %.pre1150, -1
  br label %._crit_edge938

._crit_edge938:                                   ; preds = %._crit_edge938.loopexit, %.loopexit859
  %.pre-phi = phi i32 [ %.pre1154, %._crit_edge938.loopexit ], [ %450, %.loopexit859 ]
  %482 = load i32, ptr %31, align 4, !tbaa !5
  %483 = add nsw i32 %482, -1
  %484 = call i32 @llvm.smin.i32(i32 %.pre-phi, i32 %483)
  %.not832943 = icmp slt i32 %484, 0
  br i1 %.not832943, label %._crit_edge948, label %.lr.ph947.preheader

.lr.ph947.preheader:                              ; preds = %._crit_edge938
  %485 = sext i32 %.1733969 to i64
  %486 = sext i32 %.1711976 to i64
  %487 = add nuw nsw i32 %484, 1
  %wide.trip.count1098 = zext nneg i32 %487 to i64
  %invariant.gep1186 = getelementptr double, ptr %37, i64 %486
  %invariant.gep1184 = getelementptr double, ptr %37, i64 %486
  br label %.lr.ph947

.lr.ph947:                                        ; preds = %.lr.ph947.preheader, %512
  %indvars.iv1095 = phi i64 [ 0, %.lr.ph947.preheader ], [ %indvars.iv.next1096, %512 ]
  %488 = add nsw i64 %indvars.iv1095, %485
  %489 = mul nsw i64 %488, %308
  %gep1187 = getelementptr double, ptr %invariant.gep1186, i64 %489
  %490 = call double @dnrm2_(ptr noundef nonnull %31, ptr noundef %gep1187, ptr noundef nonnull @c__2) #7
  %491 = fcmp oeq double %490, 0.000000e+00
  br i1 %491, label %492, label %496

492:                                              ; preds = %.lr.ph947
  %493 = load i32, ptr %3, align 4, !tbaa !5
  %494 = shl i32 %493, 1
  %495 = or disjoint i32 %494, 1
  store i32 %495, ptr %16, align 4, !tbaa !5
  br label %.loopexit

496:                                              ; preds = %.lr.ph947
  %497 = fdiv double -1.000000e+00, %490
  store double %497, ptr %20, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %20, ptr noundef %gep1187, ptr noundef nonnull @c__2) #7
  %498 = fcmp une double %490, 1.000000e+00
  br i1 %498, label %499, label %512

499:                                              ; preds = %496
  %500 = fsub double %490, %124
  store double %500, ptr %20, align 8, !tbaa !9
  %501 = fcmp oge double %500, 0.000000e+00
  %502 = fneg double %500
  %503 = select i1 %501, double %500, double %502
  %504 = fmul double %503, 0x3FF6A09E667F3BCD
  %505 = fcmp ogt double %504, 1.000000e+00
  br i1 %505, label %.preheader, label %512

.preheader:                                       ; preds = %499
  %.not837.not939.not = icmp eq i64 %indvars.iv1095, 0
  br i1 %.not837.not939.not, label %._crit_edge942, label %.lr.ph941

.lr.ph941:                                        ; preds = %.preheader, %.lr.ph941
  %indvars.iv1090 = phi i64 [ %indvars.iv.next1091, %.lr.ph941 ], [ 0, %.preheader ]
  %506 = add nsw i64 %indvars.iv1090, %485
  %507 = mul nsw i64 %506, %308
  %gep1185 = getelementptr double, ptr %invariant.gep1184, i64 %507
  %508 = call double @ddot_(ptr noundef nonnull %31, ptr noundef %gep1185, ptr noundef nonnull @c__2, ptr noundef %gep1187, ptr noundef nonnull @c__2) #7
  %509 = fneg double %508
  store double %509, ptr %25, align 8, !tbaa !9
  call void @daxpy_(ptr noundef nonnull %30, ptr noundef nonnull %25, ptr noundef %gep1185, ptr noundef nonnull @c__2, ptr noundef %gep1187, ptr noundef nonnull @c__2) #7
  %indvars.iv.next1091 = add nuw nsw i64 %indvars.iv1090, 1
  %exitcond1094.not = icmp eq i64 %indvars.iv.next1091, %indvars.iv1095
  br i1 %exitcond1094.not, label %._crit_edge942, label %.lr.ph941, !llvm.loop !27

._crit_edge942:                                   ; preds = %.lr.ph941, %.preheader
  %510 = call double @dnrm2_(ptr noundef nonnull %31, ptr noundef %gep1187, ptr noundef nonnull @c__2) #7
  %511 = fdiv double 1.000000e+00, %510
  store double %511, ptr %20, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %20, ptr noundef %gep1187, ptr noundef nonnull @c__2) #7
  br label %512

512:                                              ; preds = %496, %499, %._crit_edge942
  %indvars.iv.next1096 = add nuw nsw i64 %indvars.iv1095, 1
  %exitcond1099.not = icmp eq i64 %indvars.iv.next1096, %wide.trip.count1098
  br i1 %exitcond1099.not, label %._crit_edge948, label %.lr.ph947, !llvm.loop !28

._crit_edge948:                                   ; preds = %512, %._crit_edge938
  %513 = load double, ptr %26, align 8, !tbaa !9
  %514 = fcmp oeq double %513, 0.000000e+00
  %515 = icmp slt i64 %indvars.iv1114, %320
  %or.cond841 = select i1 %514, i1 %515, i1 false
  br i1 %or.cond841, label %516, label %.loopexit858

516:                                              ; preds = %._crit_edge948
  %517 = load i32, ptr %21, align 4, !tbaa !5
  %518 = and i32 %517, -2147483647
  %519 = icmp eq i32 %518, 1
  br i1 %519, label %.lr.ph952, label %.loopexit858

.lr.ph952:                                        ; preds = %516
  %520 = add nsw i32 %517, %.1977
  %521 = load i32, ptr %10, align 4, !tbaa !5
  %522 = load i32, ptr %29, align 4, !tbaa !5
  %523 = add nsw i32 %522, %521
  %524 = mul nsw i32 %523, %35
  %525 = load i32, ptr %3, align 4, !tbaa !5
  %526 = add nsw i32 %525, 1
  %527 = mul nsw i32 %526, %35
  %528 = sext i32 %.1977 to i64
  %529 = sext i32 %524 to i64
  %530 = sext i32 %527 to i64
  %531 = sext i32 %520 to i64
  %invariant.gep1188 = getelementptr double, ptr %37, i64 %529
  %invariant.gep1190 = getelementptr double, ptr %37, i64 %530
  %532 = add nsw i64 %528, 1
  %smax1259 = call i64 @llvm.smax.i64(i64 %532, i64 %531)
  %533 = sub i64 %smax1259, %528
  %min.iters.check1262 = icmp ult i64 %533, 14
  br i1 %min.iters.check1262, label %scalar.ph1261.preheader, label %vector.memcheck1248

vector.memcheck1248:                              ; preds = %.lr.ph952
  %534 = add nsw i64 %528, %530
  %535 = shl nsw i64 %534, 3
  %scevgep1250 = getelementptr i8, ptr %scevgep1249, i64 %535
  %536 = add nsw i64 %528, 1
  %smax1251 = call i64 @llvm.smax.i64(i64 %536, i64 %531)
  %537 = add i64 %smax1251, %36
  %538 = add i64 %537, %530
  %539 = shl nsw i64 %538, 3
  %scevgep1252 = getelementptr i8, ptr %12, i64 %539
  %540 = add nsw i64 %528, %529
  %541 = shl nsw i64 %540, 3
  %scevgep1254 = getelementptr i8, ptr %scevgep1253, i64 %541
  %542 = add i64 %smax1251, %36
  %543 = add i64 %542, %529
  %544 = shl nsw i64 %543, 3
  %scevgep1255 = getelementptr i8, ptr %12, i64 %544
  %bound01256 = icmp ult ptr %scevgep1250, %scevgep1255
  %bound11257 = icmp ult ptr %scevgep1254, %scevgep1252
  %found.conflict1258 = and i1 %bound01256, %bound11257
  br i1 %found.conflict1258, label %scalar.ph1261.preheader, label %vector.ph1263

vector.ph1263:                                    ; preds = %vector.memcheck1248
  %n.vec1265 = and i64 %533, -4
  %ind.end1266 = add i64 %n.vec1265, %528
  br label %vector.body1268

vector.body1268:                                  ; preds = %vector.body1268, %vector.ph1263
  %index1269 = phi i64 [ 0, %vector.ph1263 ], [ %index.next1273, %vector.body1268 ]
  %offset.idx1270 = add i64 %index1269, %528
  %545 = getelementptr double, ptr %invariant.gep1188, i64 %offset.idx1270
  %546 = getelementptr i8, ptr %545, i64 16
  %wide.load1271 = load <2 x double>, ptr %545, align 8, !tbaa !9, !alias.scope !29
  %wide.load1272 = load <2 x double>, ptr %546, align 8, !tbaa !9, !alias.scope !29
  %547 = getelementptr double, ptr %invariant.gep1190, i64 %offset.idx1270
  %548 = getelementptr i8, ptr %547, i64 16
  store <2 x double> %wide.load1271, ptr %547, align 8, !tbaa !9, !alias.scope !32, !noalias !29
  store <2 x double> %wide.load1272, ptr %548, align 8, !tbaa !9, !alias.scope !32, !noalias !29
  store <2 x double> zeroinitializer, ptr %545, align 8, !tbaa !9, !alias.scope !29
  store <2 x double> zeroinitializer, ptr %546, align 8, !tbaa !9, !alias.scope !29
  %index.next1273 = add nuw i64 %index1269, 4
  %549 = icmp eq i64 %index.next1273, %n.vec1265
  br i1 %549, label %middle.block1260, label %vector.body1268, !llvm.loop !34

middle.block1260:                                 ; preds = %vector.body1268
  %cmp.n1274 = icmp eq i64 %533, %n.vec1265
  br i1 %cmp.n1274, label %.loopexit858, label %scalar.ph1261.preheader

scalar.ph1261.preheader:                          ; preds = %middle.block1260, %vector.memcheck1248, %.lr.ph952
  %indvars.iv1102.ph = phi i64 [ %528, %vector.memcheck1248 ], [ %528, %.lr.ph952 ], [ %ind.end1266, %middle.block1260 ]
  br label %scalar.ph1261

scalar.ph1261:                                    ; preds = %scalar.ph1261.preheader, %scalar.ph1261
  %indvars.iv1102 = phi i64 [ %indvars.iv.next1103, %scalar.ph1261 ], [ %indvars.iv1102.ph, %scalar.ph1261.preheader ]
  %gep1189 = getelementptr double, ptr %invariant.gep1188, i64 %indvars.iv1102
  %550 = load double, ptr %gep1189, align 8, !tbaa !9
  %gep1191 = getelementptr double, ptr %invariant.gep1190, i64 %indvars.iv1102
  store double %550, ptr %gep1191, align 8, !tbaa !9
  store double 0.000000e+00, ptr %gep1189, align 8, !tbaa !9
  %indvars.iv.next1103 = add nsw i64 %indvars.iv1102, 1
  %.not833.not = icmp slt i64 %indvars.iv.next1103, %531
  br i1 %.not833.not, label %scalar.ph1261, label %.loopexit858, !llvm.loop !35

.loopexit858:                                     ; preds = %scalar.ph1261, %middle.block1260, %392, %._crit_edge948, %516, %406
  %.2722 = phi i32 [ %.1721973, %516 ], [ %.1721973, %._crit_edge948 ], [ %.1721973, %406 ], [ %.1721973, %392 ], [ 1, %middle.block1260 ], [ 1, %scalar.ph1261 ]
  %551 = load i32, ptr %29, align 4
  %552 = load i32, ptr %30, align 4
  %553 = call i32 @llvm.smin.i32(i32 %551, i32 %552)
  store i32 %553, ptr %29, align 4, !tbaa !5
  %.not835.not953 = icmp sgt i32 %553, 0
  br i1 %.not835.not953, label %.lr.ph956.preheader, label %568

.lr.ph956.preheader:                              ; preds = %.loopexit858
  %wide.trip.count1108 = zext nneg i32 %553 to i64
  %invariant.gep1192 = getelementptr double, ptr %34, i64 %385
  %min.iters.check1237 = icmp ult i32 %553, 4
  br i1 %min.iters.check1237, label %.lr.ph956.preheader1318, label %vector.ph1238

vector.ph1238:                                    ; preds = %.lr.ph956.preheader
  %n.vec1240 = and i64 %wide.trip.count1108, 2147483644
  br label %vector.body1242

vector.body1242:                                  ; preds = %vector.body1242, %vector.ph1238
  %index1243 = phi i64 [ 0, %vector.ph1238 ], [ %index.next1246, %vector.body1242 ]
  %554 = getelementptr double, ptr %invariant.gep1192, i64 %index1243
  %555 = getelementptr i8, ptr %554, i64 16
  %wide.load1244 = load <2 x double>, ptr %554, align 8, !tbaa !9
  %wide.load1245 = load <2 x double>, ptr %555, align 8, !tbaa !9
  %556 = fcmp oge <2 x double> %wide.load1244, zeroinitializer
  %557 = fcmp oge <2 x double> %wide.load1245, zeroinitializer
  %558 = fneg <2 x double> %wide.load1244
  %559 = fneg <2 x double> %wide.load1245
  %560 = select <2 x i1> %556, <2 x double> %wide.load1244, <2 x double> %558
  %561 = select <2 x i1> %557, <2 x double> %wide.load1245, <2 x double> %559
  store <2 x double> %560, ptr %554, align 8, !tbaa !9
  store <2 x double> %561, ptr %555, align 8, !tbaa !9
  %index.next1246 = add nuw i64 %index1243, 4
  %562 = icmp eq i64 %index.next1246, %n.vec1240
  br i1 %562, label %middle.block1235, label %vector.body1242, !llvm.loop !36

middle.block1235:                                 ; preds = %vector.body1242
  %563 = extractelement <2 x double> %wide.load1245, i64 1
  %cmp.n1247 = icmp eq i64 %n.vec1240, %wide.trip.count1108
  br i1 %cmp.n1247, label %._crit_edge957, label %.lr.ph956.preheader1318

.lr.ph956.preheader1318:                          ; preds = %middle.block1235, %.lr.ph956.preheader
  %indvars.iv1105.ph = phi i64 [ 0, %.lr.ph956.preheader ], [ %n.vec1240, %middle.block1235 ]
  br label %.lr.ph956

.lr.ph956:                                        ; preds = %.lr.ph956.preheader1318, %.lr.ph956
  %indvars.iv1105 = phi i64 [ %indvars.iv.next1106, %.lr.ph956 ], [ %indvars.iv1105.ph, %.lr.ph956.preheader1318 ]
  %gep1193 = getelementptr double, ptr %invariant.gep1192, i64 %indvars.iv1105
  %564 = load double, ptr %gep1193, align 8, !tbaa !9
  %565 = fcmp oge double %564, 0.000000e+00
  %566 = fneg double %564
  %567 = select i1 %565, double %564, double %566
  store double %567, ptr %gep1193, align 8, !tbaa !9
  %indvars.iv.next1106 = add nuw nsw i64 %indvars.iv1105, 1
  %exitcond1109.not = icmp eq i64 %indvars.iv.next1106, %wide.trip.count1108
  br i1 %exitcond1109.not, label %._crit_edge957, label %.lr.ph956, !llvm.loop !37

._crit_edge957:                                   ; preds = %.lr.ph956, %middle.block1235
  %.lcssa1217 = phi double [ %563, %middle.block1235 ], [ %564, %.lr.ph956 ]
  store double %.lcssa1217, ptr %20, align 8, !tbaa !9
  br label %568

568:                                              ; preds = %._crit_edge957, %.loopexit858
  %569 = add nsw i32 %553, %.1737968
  %570 = load i32, ptr %21, align 4, !tbaa !5
  %571 = add nsw i32 %570, %.1977
  %572 = add nsw i32 %553, %.1733969
  %573 = add nsw i32 %571, 1
  %574 = load i32, ptr %10, align 4, !tbaa !5
  %575 = add nsw i32 %574, %553
  store i32 %575, ptr %10, align 4, !tbaa !5
  store i32 0, ptr %30, align 4, !tbaa !5
  store i32 0, ptr %31, align 4, !tbaa !5
  %576 = trunc i64 %indvars.iv1114 to i32
  %577 = add i32 %576, 1
  %.pre1151 = load i32, ptr %3, align 4, !tbaa !5
  br label %578

578:                                              ; preds = %568, %366
  %579 = phi i32 [ %.pre1151, %568 ], [ %329, %366 ]
  %580 = phi i32 [ %.pre1151, %568 ], [ %330, %366 ]
  %.3743 = phi i32 [ 0, %568 ], [ %.2742, %366 ]
  %.2738 = phi i32 [ %569, %568 ], [ %.1737968, %366 ]
  %.2734 = phi i32 [ %572, %568 ], [ %.1733969, %366 ]
  %.3723 = phi i32 [ %.2722, %568 ], [ %.1721973, %366 ]
  %.1719 = phi i32 [ %577, %568 ], [ %.0718974, %366 ]
  %.2716 = phi i32 [ %571, %568 ], [ %.1715975, %366 ]
  %.2712 = phi i32 [ %573, %568 ], [ %.1711976, %366 ]
  %.2 = phi i32 [ %571, %568 ], [ %.1977, %366 ]
  %581 = shl i32 %580, 1
  %582 = icmp slt i32 %.2, %581
  %or.cond19 = select i1 %582, i1 %307, i1 false
  %.not836.not959 = icmp sgt i32 %.2, 1
  %or.cond1043 = and i1 %or.cond19, %.not836.not959
  br i1 %or.cond1043, label %.lr.ph961, label %.loopexit857

.lr.ph961:                                        ; preds = %578
  %583 = mul nsw i32 %.2734, %35
  %584 = add i32 %583, 1
  %585 = sext i32 %584 to i64
  %586 = shl nsw i64 %585, 3
  %scevgep1110 = getelementptr i8, ptr %scevgep, i64 %586
  %587 = add nsw i32 %.2, -1
  %588 = zext nneg i32 %587 to i64
  %589 = shl nuw nsw i64 %588, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1110, i8 0, i64 %589, i1 false), !tbaa !9
  br label %.loopexit857

.loopexit857:                                     ; preds = %.lr.ph961, %578
  %indvars.iv.next1115 = add nsw i64 %indvars.iv1114, 2
  %590 = load i32, ptr %19, align 4, !tbaa !5
  %591 = sext i32 %590 to i64
  %.not819 = icmp sgt i64 %indvars.iv.next1115, %591
  br i1 %.not819, label %._crit_edge981, label %328, !llvm.loop !38

._crit_edge981:                                   ; preds = %.loopexit857
  %592 = icmp ne i32 %.3723, 0
  %or.cond21 = select i1 %592, i1 %307, i1 false
  br i1 %or.cond21, label %593, label %.loopexit860

593:                                              ; preds = %._crit_edge981
  %594 = load i32, ptr %21, align 4, !tbaa !5
  %595 = sub nsw i32 %321, %594
  %596 = add nsw i32 %595, 1
  store i32 %596, ptr %19, align 4, !tbaa !5
  %.not820988 = icmp sgt i32 %.0756995, %596
  br i1 %.not820988, label %.loopexit860, label %.lr.ph991

.lr.ph991:                                        ; preds = %593
  %597 = add nsw i32 %579, 1
  %598 = mul nsw i32 %597, %35
  %599 = add nsw i32 %.2738, -1
  %600 = mul nsw i32 %599, %35
  %601 = sext i32 %598 to i64
  %602 = sext i32 %600 to i64
  %603 = sext i32 %595 to i64
  %invariant.gep1196 = getelementptr double, ptr %37, i64 %601
  %invariant.gep1198 = getelementptr double, ptr %37, i64 %602
  %604 = sext i32 %594 to i64
  %605 = sub i64 %indvars.iv1124, %604
  %smax1231 = call i64 @llvm.smax.i64(i64 %605, i64 %322)
  %606 = add i64 %smax1231, 1
  %607 = sub i64 %606, %322
  %min.iters.check = icmp ult i64 %607, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph991
  %608 = shl nsw i64 %322, 3
  %scevgep1222 = getelementptr i8, ptr %scevgep1221, i64 %608
  %609 = shl nsw i64 %602, 3
  %scevgep1223 = getelementptr i8, ptr %scevgep1222, i64 %609
  %610 = sext i32 %594 to i64
  %611 = sub i64 %indvars.iv1124, %610
  %smax = call i64 @llvm.smax.i64(i64 %611, i64 %322)
  %612 = add i64 %smax, %36
  %613 = add i64 %612, %602
  %614 = shl nsw i64 %613, 3
  %scevgep1225 = getelementptr i8, ptr %scevgep1224, i64 %614
  %scevgep1227 = getelementptr i8, ptr %scevgep1226, i64 %608
  %615 = shl nsw i64 %601, 3
  %scevgep1228 = getelementptr i8, ptr %scevgep1227, i64 %615
  %616 = add i64 %smax, %36
  %617 = add i64 %616, %601
  %618 = shl nsw i64 %617, 3
  %scevgep1230 = getelementptr i8, ptr %scevgep1229, i64 %618
  %bound0 = icmp ult ptr %scevgep1223, %scevgep1230
  %bound1 = icmp ult ptr %scevgep1228, %scevgep1225
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %607, -4
  %ind.end = add i64 %n.vec, %322
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %index, %322
  %619 = getelementptr double, ptr %invariant.gep1196, i64 %offset.idx
  %620 = getelementptr i8, ptr %619, i64 16
  %wide.load = load <2 x double>, ptr %619, align 8, !tbaa !9, !alias.scope !39
  %wide.load1232 = load <2 x double>, ptr %620, align 8, !tbaa !9, !alias.scope !39
  %621 = getelementptr double, ptr %invariant.gep1198, i64 %offset.idx
  %622 = getelementptr i8, ptr %621, i64 16
  %wide.load1233 = load <2 x double>, ptr %621, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %wide.load1234 = load <2 x double>, ptr %622, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  %623 = fadd <2 x double> %wide.load, %wide.load1233
  %624 = fadd <2 x double> %wide.load1232, %wide.load1234
  store <2 x double> %623, ptr %621, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  store <2 x double> %624, ptr %622, align 8, !tbaa !9, !alias.scope !42, !noalias !39
  store <2 x double> zeroinitializer, ptr %619, align 8, !tbaa !9, !alias.scope !39
  store <2 x double> zeroinitializer, ptr %620, align 8, !tbaa !9, !alias.scope !39
  %index.next = add nuw i64 %index, 4
  %625 = icmp eq i64 %index.next, %n.vec
  br i1 %625, label %middle.block, label %vector.body, !llvm.loop !44

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %607, %n.vec
  br i1 %cmp.n, label %.loopexit860, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph991
  %indvars.iv1121.ph = phi i64 [ %322, %vector.memcheck ], [ %322, %.lr.ph991 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv1121 = phi i64 [ %indvars.iv.next1122, %scalar.ph ], [ %indvars.iv1121.ph, %scalar.ph.preheader ]
  %gep1197 = getelementptr double, ptr %invariant.gep1196, i64 %indvars.iv1121
  %626 = load double, ptr %gep1197, align 8, !tbaa !9
  %gep1199 = getelementptr double, ptr %invariant.gep1198, i64 %indvars.iv1121
  %627 = load double, ptr %gep1199, align 8, !tbaa !9
  %628 = fadd double %626, %627
  store double %628, ptr %gep1199, align 8, !tbaa !9
  store double 0.000000e+00, ptr %gep1197, align 8, !tbaa !9
  %indvars.iv.next1122 = add nsw i64 %indvars.iv1121, 1
  %.not820 = icmp sgt i64 %indvars.iv1121, %603
  br i1 %.not820, label %.loopexit860, label %scalar.ph, !llvm.loop !45

.loopexit860:                                     ; preds = %scalar.ph, %middle.block, %319, %593, %._crit_edge981
  %.1.lcssa1169 = phi i32 [ %.2, %593 ], [ %.2, %._crit_edge981 ], [ %.07091001, %319 ], [ %.2, %middle.block ], [ %.2, %scalar.ph ]
  %.1711.lcssa1168 = phi i32 [ %.2712, %593 ], [ %.2712, %._crit_edge981 ], [ %.07101000, %319 ], [ %.2712, %middle.block ], [ %.2712, %scalar.ph ]
  %.1715.lcssa1167 = phi i32 [ %.2716, %593 ], [ %.2716, %._crit_edge981 ], [ %.0714999, %319 ], [ %.2716, %middle.block ], [ %.2716, %scalar.ph ]
  %.1733.lcssa1166 = phi i32 [ %.2734, %593 ], [ %.2734, %._crit_edge981 ], [ %.0732997, %319 ], [ %.2734, %middle.block ], [ %.2734, %scalar.ph ]
  %.1737.lcssa1165 = phi i32 [ %.2738, %593 ], [ %.2738, %._crit_edge981 ], [ %.0736996, %319 ], [ %.2738, %middle.block ], [ %.2738, %scalar.ph ]
  %629 = phi i32 [ %579, %593 ], [ %579, %._crit_edge981 ], [ %315, %319 ], [ %579, %middle.block ], [ %579, %scalar.ph ]
  %630 = phi i32 [ %580, %593 ], [ %580, %._crit_edge981 ], [ %316, %319 ], [ %579, %middle.block ], [ %579, %scalar.ph ]
  %631 = add nsw i32 %.1711.lcssa1168, -1
  %632 = add nsw i32 %.1715.lcssa1167, 1
  %633 = trunc i64 %indvars.iv1124 to i32
  %634 = or disjoint i32 %633, 1
  %.pre1152 = load i32, ptr %18, align 4, !tbaa !5
  br label %635

635:                                              ; preds = %313, %.loopexit860
  %636 = phi i32 [ %.pre1152, %.loopexit860 ], [ %314, %313 ]
  %637 = phi i32 [ %629, %.loopexit860 ], [ %315, %313 ]
  %638 = phi i32 [ %630, %.loopexit860 ], [ %316, %313 ]
  %.1757 = phi i32 [ %634, %.loopexit860 ], [ %.0756995, %313 ]
  %.3739 = phi i32 [ %.1737.lcssa1165, %.loopexit860 ], [ %.0736996, %313 ]
  %.3735 = phi i32 [ %.1733.lcssa1166, %.loopexit860 ], [ %.0732997, %313 ]
  %.3717 = phi i32 [ %632, %.loopexit860 ], [ %.0714999, %313 ]
  %.3713 = phi i32 [ %631, %.loopexit860 ], [ %.07101000, %313 ]
  %.3 = phi i32 [ %.1.lcssa1169, %.loopexit860 ], [ %.07091001, %313 ]
  %indvars.iv.next1125 = add nuw nsw i64 %indvars.iv1124, 2
  %639 = sext i32 %636 to i64
  %.not807 = icmp sgt i64 %indvars.iv.next1125, %639
  br i1 %.not807, label %._crit_edge1004, label %313, !llvm.loop !46

._crit_edge1004:                                  ; preds = %635, %._crit_edge916
  %640 = load i32, ptr %10, align 4, !tbaa !5
  %641 = add nsw i32 %640, -1
  store i32 %641, ptr %18, align 4, !tbaa !5
  %invariant.gep1014 = getelementptr i8, ptr %37, i64 8
  %.not8081018 = icmp slt i32 %640, 2
  br i1 %.not8081018, label %._crit_edge1022, label %.lr.ph1021

.lr.ph1021:                                       ; preds = %._crit_edge1004, %676
  %642 = phi i32 [ %677, %676 ], [ %641, %._crit_edge1004 ]
  %indvars.iv1130 = phi i32 [ %indvars.iv.next1131, %676 ], [ 1, %._crit_edge1004 ]
  %.151019 = phi i32 [ %678, %676 ], [ 1, %._crit_edge1004 ]
  %643 = load double, ptr %11, align 8, !tbaa !9
  %644 = load i32, ptr %10, align 4, !tbaa !5
  %reass.sub = sub i32 %644, %.151019
  %645 = add i32 %reass.sub, 1
  %.not8161005 = icmp slt i32 %645, 2
  br i1 %.not8161005, label %._crit_edge1011, label %.lr.ph1010.preheader

.lr.ph1010.preheader:                             ; preds = %.lr.ph1021
  %646 = add i32 %644, %indvars.iv1130
  %wide.trip.count1132 = zext i32 %646 to i64
  %xtraiter = and i64 %wide.trip.count1132, 1
  %647 = icmp eq i32 %646, 3
  br i1 %647, label %._crit_edge1011.loopexit.unr-lcssa, label %.lr.ph1010.preheader.new

.lr.ph1010.preheader.new:                         ; preds = %.lr.ph1010.preheader
  %648 = and i64 %wide.trip.count1132, 4294967294
  %649 = add nsw i64 %648, -4
  br label %.lr.ph1010

.lr.ph1010:                                       ; preds = %.lr.ph1010, %.lr.ph1010.preheader.new
  %indvars.iv1127 = phi i64 [ 2, %.lr.ph1010.preheader.new ], [ %indvars.iv.next1128.1, %.lr.ph1010 ]
  %.27301008 = phi double [ %643, %.lr.ph1010.preheader.new ], [ %.3731.1, %.lr.ph1010 ]
  %.07501007 = phi i32 [ 1, %.lr.ph1010.preheader.new ], [ %.1751.1, %.lr.ph1010 ]
  %niter = phi i64 [ 0, %.lr.ph1010.preheader.new ], [ %niter.next.1, %.lr.ph1010 ]
  %650 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1127
  %651 = load double, ptr %650, align 8, !tbaa !9
  %652 = fcmp ugt double %651, %.27301008
  %653 = trunc nuw nsw i64 %indvars.iv1127 to i32
  %.1751 = select i1 %652, i32 %.07501007, i32 %653
  %.3731 = select i1 %652, double %.27301008, double %651
  %654 = getelementptr double, ptr %11, i64 %indvars.iv1127
  %655 = load double, ptr %654, align 8, !tbaa !9
  %656 = fcmp ugt double %655, %.3731
  %657 = trunc i64 %indvars.iv1127 to i32
  %658 = or disjoint i32 %657, 1
  %.1751.1 = select i1 %656, i32 %.1751, i32 %658
  %.3731.1 = select i1 %656, double %.3731, double %655
  %indvars.iv.next1128.1 = add nuw nsw i64 %indvars.iv1127, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter, %649
  br i1 %niter.ncmp.1, label %._crit_edge1011.loopexit.unr-lcssa, label %.lr.ph1010, !llvm.loop !47

._crit_edge1011.loopexit.unr-lcssa:               ; preds = %.lr.ph1010, %.lr.ph1010.preheader
  %.1751.lcssa.ph = phi i32 [ poison, %.lr.ph1010.preheader ], [ %.1751.1, %.lr.ph1010 ]
  %.3731.lcssa.ph = phi double [ poison, %.lr.ph1010.preheader ], [ %.3731.1, %.lr.ph1010 ]
  %indvars.iv1127.unr = phi i64 [ 2, %.lr.ph1010.preheader ], [ %indvars.iv.next1128.1, %.lr.ph1010 ]
  %.27301008.unr = phi double [ %643, %.lr.ph1010.preheader ], [ %.3731.1, %.lr.ph1010 ]
  %.07501007.unr = phi i32 [ 1, %.lr.ph1010.preheader ], [ %.1751.1, %.lr.ph1010 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge1011, label %.lr.ph1010.epil

.lr.ph1010.epil:                                  ; preds = %._crit_edge1011.loopexit.unr-lcssa
  %659 = getelementptr inbounds double, ptr %34, i64 %indvars.iv1127.unr
  %660 = load double, ptr %659, align 8, !tbaa !9
  %661 = fcmp ugt double %660, %.27301008.unr
  %662 = trunc nuw nsw i64 %indvars.iv1127.unr to i32
  %.1751.epil = select i1 %661, i32 %.07501007.unr, i32 %662
  %.3731.epil = select i1 %661, double %.27301008.unr, double %660
  br label %._crit_edge1011

._crit_edge1011:                                  ; preds = %.lr.ph1010.epil, %._crit_edge1011.loopexit.unr-lcssa, %.lr.ph1021
  %.0750.lcssa = phi i32 [ 1, %.lr.ph1021 ], [ %.1751.lcssa.ph, %._crit_edge1011.loopexit.unr-lcssa ], [ %.1751.epil, %.lr.ph1010.epil ]
  %.2730.lcssa = phi double [ %643, %.lr.ph1021 ], [ %.3731.lcssa.ph, %._crit_edge1011.loopexit.unr-lcssa ], [ %.3731.epil, %.lr.ph1010.epil ]
  %.not817 = icmp eq i32 %.0750.lcssa, %645
  br i1 %.not817, label %676, label %663

663:                                              ; preds = %._crit_edge1011
  %664 = sext i32 %645 to i64
  %665 = getelementptr inbounds double, ptr %34, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = sext i32 %.0750.lcssa to i64
  %668 = getelementptr inbounds double, ptr %34, i64 %667
  store double %666, ptr %668, align 8, !tbaa !9
  store double %.2730.lcssa, ptr %665, align 8, !tbaa !9
  br i1 %.not, label %669, label %676

669:                                              ; preds = %663
  %670 = load i32, ptr %3, align 4, !tbaa !5
  %671 = shl i32 %670, 1
  store i32 %671, ptr %19, align 4, !tbaa !5
  %672 = mul nsw i32 %.0750.lcssa, %35
  %673 = sext i32 %672 to i64
  %gep1015 = getelementptr double, ptr %invariant.gep1014, i64 %673
  %674 = mul nsw i32 %645, %35
  %675 = sext i32 %674 to i64
  %gep1017 = getelementptr double, ptr %invariant.gep1014, i64 %675
  call void @dswap_(ptr noundef nonnull %19, ptr noundef %gep1015, ptr noundef nonnull @c__1, ptr noundef %gep1017, ptr noundef nonnull @c__1) #7
  %.pre1153 = load i32, ptr %18, align 4, !tbaa !5
  br label %676

676:                                              ; preds = %._crit_edge1011, %669, %663
  %677 = phi i32 [ %642, %._crit_edge1011 ], [ %.pre1153, %669 ], [ %642, %663 ]
  %678 = add nuw nsw i32 %.151019, 1
  %.not808.not = icmp slt i32 %.151019, %677
  %indvars.iv.next1131 = add nsw i32 %indvars.iv1130, -1
  br i1 %.not808.not, label %.lr.ph1021, label %._crit_edge1022, !llvm.loop !48

._crit_edge1022:                                  ; preds = %676, %._crit_edge1004
  %.not809 = icmp eq i32 %42, 0
  br i1 %.not809, label %721, label %679

679:                                              ; preds = %._crit_edge1022
  %680 = load i32, ptr %9, align 4, !tbaa !5
  %681 = load i32, ptr %8, align 4, !tbaa !5
  %682 = sub nsw i32 %680, %681
  %683 = add nsw i32 %682, 1
  %684 = load i32, ptr %10, align 4, !tbaa !5
  %685 = icmp slt i32 %683, %684
  br i1 %685, label %686, label %721

686:                                              ; preds = %679
  store i32 %684, ptr %18, align 4, !tbaa !5
  %687 = add nsw i32 %682, 2
  %.not8101023 = icmp sgt i32 %687, %684
  br i1 %.not8101023, label %._crit_edge1027, label %.lr.ph1026.preheader

.lr.ph1026.preheader:                             ; preds = %686
  %688 = sext i32 %687 to i64
  %689 = shl nsw i64 %688, 3
  %690 = getelementptr i8, ptr %11, i64 %689
  %scevgep1134 = getelementptr i8, ptr %690, i64 -8
  %691 = add i32 %684, %681
  %692 = add i32 %691, -2
  %693 = sub i32 %692, %680
  %694 = zext i32 %693 to i64
  %695 = shl nuw nsw i64 %694, 3
  %696 = add nuw nsw i64 %695, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep1134, i8 0, i64 %696, i1 false), !tbaa !9
  br label %._crit_edge1027

._crit_edge1027:                                  ; preds = %.lr.ph1026.preheader, %686
  br i1 %.not, label %697, label %.loopexit854

697:                                              ; preds = %._crit_edge1027
  %698 = load i32, ptr %3, align 4, !tbaa !5
  %699 = shl i32 %698, 1
  %.not8121033 = icmp slt i32 %699, 1
  %brmerge = or i1 %.not8121033, %.not8101023
  br i1 %brmerge, label %.loopexit854, label %.lr.ph1031.preheader

.lr.ph1031.preheader:                             ; preds = %697
  %700 = sext i32 %687 to i64
  %701 = sext i32 %35 to i64
  %702 = add i32 %684, 1
  %703 = or disjoint i32 %699, 1
  %wide.trip.count1145 = zext nneg i32 %703 to i64
  %704 = add i32 %684, %681
  %705 = add i32 %704, -2
  %706 = sub i32 %705, %680
  %707 = zext i32 %706 to i64
  %708 = add nuw nsw i64 %707, 1
  %709 = add i32 %684, 1
  %min.iters.check1306 = icmp ugt i32 %706, 2
  %ident.check.not = icmp eq i32 %35, 1
  %or.cond1317 = select i1 %min.iters.check1306, i1 %ident.check.not, i1 false
  %n.vec1309 = and i64 %708, 8589934588
  %ind.end1310 = add nsw i64 %n.vec1309, %700
  %cmp.n1316 = icmp eq i64 %708, %n.vec1309
  br label %.lr.ph1031

.lr.ph1031:                                       ; preds = %.lr.ph1031.preheader, %._crit_edge1032
  %indvars.iv1142 = phi i64 [ 1, %.lr.ph1031.preheader ], [ %indvars.iv.next1143, %._crit_edge1032 ]
  %invariant.gep1202 = getelementptr double, ptr %37, i64 %indvars.iv1142
  br i1 %or.cond1317, label %vector.ph1307, label %scalar.ph1305.preheader

vector.ph1307:                                    ; preds = %.lr.ph1031
  %invariant.gep1332 = getelementptr double, ptr %invariant.gep1202, i64 %700
  br label %vector.body1312

vector.body1312:                                  ; preds = %vector.body1312, %vector.ph1307
  %index1313 = phi i64 [ 0, %vector.ph1307 ], [ %index.next1315, %vector.body1312 ]
  %gep1333 = getelementptr double, ptr %invariant.gep1332, i64 %index1313
  %710 = getelementptr i8, ptr %gep1333, i64 16
  store <2 x double> zeroinitializer, ptr %gep1333, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %710, align 8, !tbaa !9
  %index.next1315 = add nuw i64 %index1313, 4
  %711 = icmp eq i64 %index.next1315, %n.vec1309
  br i1 %711, label %middle.block1304, label %vector.body1312, !llvm.loop !49

middle.block1304:                                 ; preds = %vector.body1312
  br i1 %cmp.n1316, label %._crit_edge1032, label %scalar.ph1305.preheader

scalar.ph1305.preheader:                          ; preds = %middle.block1304, %.lr.ph1031
  %indvars.iv1138.ph = phi i64 [ %700, %.lr.ph1031 ], [ %ind.end1310, %middle.block1304 ]
  %712 = trunc i64 %indvars.iv1138.ph to i32
  %713 = sub i32 %709, %712
  %714 = sub i32 %684, %712
  %xtraiter1326 = and i32 %713, 3
  %lcmp.mod1327.not = icmp eq i32 %xtraiter1326, 0
  br i1 %lcmp.mod1327.not, label %scalar.ph1305.prol.loopexit, label %scalar.ph1305.prol

scalar.ph1305.prol:                               ; preds = %scalar.ph1305.preheader, %scalar.ph1305.prol
  %indvars.iv1138.prol = phi i64 [ %indvars.iv.next1139.prol, %scalar.ph1305.prol ], [ %indvars.iv1138.ph, %scalar.ph1305.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %scalar.ph1305.prol ], [ 0, %scalar.ph1305.preheader ]
  %715 = mul nsw i64 %indvars.iv1138.prol, %701
  %gep1203.prol = getelementptr double, ptr %invariant.gep1202, i64 %715
  store double 0.000000e+00, ptr %gep1203.prol, align 8, !tbaa !9
  %indvars.iv.next1139.prol = add nsw i64 %indvars.iv1138.prol, 1
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter1326
  br i1 %prol.iter.cmp.not, label %scalar.ph1305.prol.loopexit, label %scalar.ph1305.prol, !llvm.loop !50

scalar.ph1305.prol.loopexit:                      ; preds = %scalar.ph1305.prol, %scalar.ph1305.preheader
  %indvars.iv1138.unr = phi i64 [ %indvars.iv1138.ph, %scalar.ph1305.preheader ], [ %indvars.iv.next1139.prol, %scalar.ph1305.prol ]
  %716 = icmp ult i32 %714, 3
  br i1 %716, label %._crit_edge1032, label %scalar.ph1305

scalar.ph1305:                                    ; preds = %scalar.ph1305.prol.loopexit, %scalar.ph1305
  %indvars.iv1138 = phi i64 [ %indvars.iv.next1139.3, %scalar.ph1305 ], [ %indvars.iv1138.unr, %scalar.ph1305.prol.loopexit ]
  %717 = mul nsw i64 %indvars.iv1138, %701
  %gep1203 = getelementptr double, ptr %invariant.gep1202, i64 %717
  store double 0.000000e+00, ptr %gep1203, align 8, !tbaa !9
  %indvars.iv.next1139 = add nsw i64 %indvars.iv1138, 1
  %718 = mul nsw i64 %indvars.iv.next1139, %701
  %gep1203.1 = getelementptr double, ptr %invariant.gep1202, i64 %718
  store double 0.000000e+00, ptr %gep1203.1, align 8, !tbaa !9
  %indvars.iv.next1139.1 = add nsw i64 %indvars.iv1138, 2
  %719 = mul nsw i64 %indvars.iv.next1139.1, %701
  %gep1203.2 = getelementptr double, ptr %invariant.gep1202, i64 %719
  store double 0.000000e+00, ptr %gep1203.2, align 8, !tbaa !9
  %indvars.iv.next1139.2 = add nsw i64 %indvars.iv1138, 3
  %720 = mul nsw i64 %indvars.iv.next1139.2, %701
  %gep1203.3 = getelementptr double, ptr %invariant.gep1202, i64 %720
  store double 0.000000e+00, ptr %gep1203.3, align 8, !tbaa !9
  %indvars.iv.next1139.3 = add nsw i64 %indvars.iv1138, 4
  %lftr.wideiv.3 = trunc i64 %indvars.iv.next1139.3 to i32
  %exitcond1141.not.3 = icmp eq i32 %702, %lftr.wideiv.3
  br i1 %exitcond1141.not.3, label %._crit_edge1032, label %scalar.ph1305, !llvm.loop !52

._crit_edge1032:                                  ; preds = %scalar.ph1305.prol.loopexit, %scalar.ph1305, %middle.block1304
  %indvars.iv.next1143 = add nuw nsw i64 %indvars.iv1142, 1
  %exitcond1146.not = icmp eq i64 %indvars.iv.next1143, %wide.trip.count1145
  br i1 %exitcond1146.not, label %.loopexit854, label %.lr.ph1031, !llvm.loop !53

.loopexit854:                                     ; preds = %._crit_edge1032, %697, %._crit_edge1027
  store i32 %683, ptr %10, align 4, !tbaa !5
  br label %721

721:                                              ; preds = %679, %.loopexit854, %._crit_edge1022
  br i1 %.not, label %722, label %.loopexit

722:                                              ; preds = %721
  %723 = load i32, ptr %10, align 4, !tbaa !5
  store i32 %723, ptr %18, align 4, !tbaa !5
  %.not8141039 = icmp slt i32 %723, 1
  br i1 %.not8141039, label %.loopexit, label %.lr.ph1042

.lr.ph1042:                                       ; preds = %722
  %724 = getelementptr inbounds i8, ptr %14, i64 8
  %725 = sext i32 %35 to i64
  br label %726

726:                                              ; preds = %.lr.ph1042, %744
  %indvars.iv1147 = phi i64 [ 1, %.lr.ph1042 ], [ %indvars.iv.next1148, %744 ]
  %727 = load i32, ptr %3, align 4, !tbaa !5
  %728 = shl i32 %727, 1
  store i32 %728, ptr %19, align 4, !tbaa !5
  %729 = mul nsw i64 %indvars.iv1147, %725
  %gep1038 = getelementptr double, ptr %invariant.gep1014, i64 %729
  call void @dcopy_(ptr noundef nonnull %19, ptr noundef %gep1038, ptr noundef nonnull @c__1, ptr noundef %14, ptr noundef nonnull @c__1) #7
  br i1 %47, label %730, label %737

730:                                              ; preds = %726
  %731 = load i32, ptr %3, align 4, !tbaa !5
  %732 = trunc nsw i64 %729 to i32
  %733 = add i32 %732, 1
  %734 = add i32 %733, %731
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds double, ptr %37, i64 %735
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %724, ptr noundef nonnull @c__2, ptr noundef %736, ptr noundef nonnull @c__1) #7
  br label %744

737:                                              ; preds = %726
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %724, ptr noundef nonnull @c__2, ptr noundef %gep1038, ptr noundef nonnull @c__1) #7
  %738 = load i32, ptr %3, align 4, !tbaa !5
  %739 = trunc nsw i64 %729 to i32
  %740 = add i32 %739, 1
  %741 = add i32 %740, %738
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds double, ptr %37, i64 %742
  br label %744

744:                                              ; preds = %730, %737
  %gep1038.sink = phi ptr [ %gep1038, %730 ], [ %743, %737 ]
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull @c__2, ptr noundef %gep1038.sink, ptr noundef nonnull @c__1) #7
  %indvars.iv.next1148 = add nuw nsw i64 %indvars.iv1147, 1
  %745 = load i32, ptr %18, align 4, !tbaa !5
  %746 = sext i32 %745 to i64
  %.not814.not = icmp slt i64 %indvars.iv1147, %746
  br i1 %.not814.not, label %726, label %.loopexit, !llvm.loop !54

.loopexit:                                        ; preds = %380, %744, %722, %721, %._crit_edge896, %104, %114, %.thread, %492, %461, %.thread845
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  ret void
}

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

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

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

declare 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

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

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

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

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

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

declare void @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 i32 @llvm.smin.i32(i32, i32) #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #5

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !12}
!16 = !{!17}
!17 = distinct !{!17, !18}
!18 = distinct !{!18, !"LVerDomain"}
!19 = !{!20}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !12, !22, !23}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !12, !22}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = !{!30}
!30 = distinct !{!30, !31}
!31 = distinct !{!31, !"LVerDomain"}
!32 = !{!33}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !12, !22, !23}
!35 = distinct !{!35, !12, !22}
!36 = distinct !{!36, !12, !22, !23}
!37 = distinct !{!37, !12, !23, !22}
!38 = distinct !{!38, !12}
!39 = !{!40}
!40 = distinct !{!40, !41}
!41 = distinct !{!41, !"LVerDomain"}
!42 = !{!43}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !12, !22, !23}
!45 = distinct !{!45, !12, !22}
!46 = distinct !{!46, !12}
!47 = distinct !{!47, !12}
!48 = distinct !{!48, !12}
!49 = distinct !{!49, !12, !22, !23}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.unroll.disable"}
!52 = distinct !{!52, !12, !22}
!53 = distinct !{!53, !12}
!54 = distinct !{!54, !12}


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