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

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

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

116:                                              ; preds = %20
  %117 = load ptr, ptr %21, align 8, !tbaa !5
  %118 = call i32 @lsame_(ptr noundef %117, ptr noundef @.str.1)
  %119 = icmp ne i32 %118, 0
  br i1 %119, label %126, label %120

120:                                              ; preds = %116
  %121 = load ptr, ptr %21, align 8, !tbaa !5
  %122 = call i32 @lsame_(ptr noundef %121, ptr noundef @.str.2)
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %126, label %124

124:                                              ; preds = %120
  %125 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %125, align 4, !tbaa !9
  br label %172

126:                                              ; preds = %120, %116, %20
  %127 = load ptr, ptr %22, align 8, !tbaa !5
  %128 = load i32, ptr %127, align 4, !tbaa !9
  %129 = icmp slt i32 %128, 0
  br i1 %129, label %130, label %132

130:                                              ; preds = %126
  %131 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -2, ptr %131, align 4, !tbaa !9
  br label %171

132:                                              ; preds = %126
  %133 = load ptr, ptr %23, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = icmp slt i32 %134, 0
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -3, ptr %137, align 4, !tbaa !9
  br label %170

138:                                              ; preds = %132
  %139 = load ptr, ptr %33, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = load ptr, ptr %22, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp sge i32 1, %142
  br i1 %143, label %144, label %145

144:                                              ; preds = %138
  br label %148

145:                                              ; preds = %138
  %146 = load ptr, ptr %22, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %145, %144
  %149 = phi i32 [ 1, %144 ], [ %147, %145 ]
  %150 = icmp slt i32 %140, %149
  br i1 %150, label %151, label %153

151:                                              ; preds = %148
  %152 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -13, ptr %152, align 4, !tbaa !9
  br label %169

153:                                              ; preds = %148
  %154 = load ptr, ptr %35, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = load ptr, ptr %22, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = icmp sge i32 1, %157
  br i1 %158, label %159, label %160

159:                                              ; preds = %153
  br label %163

160:                                              ; preds = %153
  %161 = load ptr, ptr %22, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  br label %163

163:                                              ; preds = %160, %159
  %164 = phi i32 [ 1, %159 ], [ %162, %160 ]
  %165 = icmp slt i32 %155, %164
  br i1 %165, label %166, label %168

166:                                              ; preds = %163
  %167 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -15, ptr %167, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %166, %163
  br label %169

169:                                              ; preds = %168, %151
  br label %170

170:                                              ; preds = %169, %136
  br label %171

171:                                              ; preds = %170, %130
  br label %172

172:                                              ; preds = %171, %124
  %173 = load ptr, ptr %40, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %181

176:                                              ; preds = %172
  %177 = load ptr, ptr %40, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = sub nsw i32 0, %178
  store i32 %179, ptr %45, align 4, !tbaa !9
  %180 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %45, i32 noundef 6)
  store i32 1, ptr %66, align 4
  br label %1314

181:                                              ; preds = %172
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %189, label %185

185:                                              ; preds = %181
  %186 = load ptr, ptr %23, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = icmp eq i32 %187, 0
  br i1 %188, label %189, label %209

189:                                              ; preds = %185, %181
  %190 = load ptr, ptr %23, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  store i32 %191, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %192

192:                                              ; preds = %205, %189
  %193 = load i32, ptr %55, align 4, !tbaa !9
  %194 = load i32, ptr %45, align 4, !tbaa !9
  %195 = icmp sle i32 %193, %194
  br i1 %195, label %196, label %208

196:                                              ; preds = %192
  %197 = load ptr, ptr %36, align 8, !tbaa !5
  %198 = load i32, ptr %55, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds double, ptr %197, i64 %199
  store double 0.000000e+00, ptr %200, align 8, !tbaa !11
  %201 = load ptr, ptr %37, align 8, !tbaa !5
  %202 = load i32, ptr %55, align 4, !tbaa !9
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds double, ptr %201, i64 %203
  store double 0.000000e+00, ptr %204, align 8, !tbaa !11
  br label %205

205:                                              ; preds = %196
  %206 = load i32, ptr %55, align 4, !tbaa !9
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr %55, align 4, !tbaa !9
  br label %192, !llvm.loop !13

208:                                              ; preds = %192
  store i32 1, ptr %66, align 4
  br label %1314

209:                                              ; preds = %185
  %210 = load i32, ptr %61, align 4, !tbaa !9
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %215

212:                                              ; preds = %209
  %213 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 78, ptr %213, align 1, !tbaa !15
  %214 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  store i8 84, ptr %214, align 1, !tbaa !15
  br label %218

215:                                              ; preds = %209
  %216 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 84, ptr %216, align 1, !tbaa !15
  %217 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  store i8 78, ptr %217, align 1, !tbaa !15
  br label %218

218:                                              ; preds = %215, %212
  store i32 4, ptr %59, align 4, !tbaa !9
  %219 = call double @dlamch_(ptr noundef @.str.4)
  store double %219, ptr %65, align 8, !tbaa !11
  %220 = call double @dlamch_(ptr noundef @.str.5)
  store double %220, ptr %60, align 8, !tbaa !11
  %221 = load i32, ptr %59, align 4, !tbaa !9
  %222 = sitofp i32 %221 to double
  %223 = load double, ptr %60, align 8, !tbaa !11
  %224 = fmul double %222, %223
  store double %224, ptr %52, align 8, !tbaa !11
  %225 = load double, ptr %52, align 8, !tbaa !11
  %226 = load double, ptr %65, align 8, !tbaa !11
  %227 = fdiv double %225, %226
  store double %227, ptr %53, align 8, !tbaa !11
  %228 = load ptr, ptr %23, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  store i32 %229, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %1310, %218
  %231 = load i32, ptr %55, align 4, !tbaa !9
  %232 = load i32, ptr %45, align 4, !tbaa !9
  %233 = icmp sle i32 %231, %232
  br i1 %233, label %234, label %1313

234:                                              ; preds = %230
  store i32 1, ptr %58, align 4, !tbaa !9
  store double 3.000000e+00, ptr %64, align 8, !tbaa !11
  br label %235

235:                                              ; preds = %997, %234
  %236 = load ptr, ptr %22, align 8, !tbaa !5
  %237 = load ptr, ptr %32, align 8, !tbaa !5
  %238 = load i32, ptr %55, align 4, !tbaa !9
  %239 = load i32, ptr %41, align 4, !tbaa !9
  %240 = mul nsw i32 %238, %239
  %241 = add nsw i32 %240, 1
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %237, i64 %242
  %244 = load ptr, ptr %38, align 8, !tbaa !5
  %245 = load ptr, ptr %22, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = add nsw i32 %246, 1
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds double, ptr %244, i64 %248
  call void @dcopy_(ptr noundef %236, ptr noundef %243, ptr noundef @c__1, ptr noundef %249, ptr noundef @c__1)
  %250 = load ptr, ptr %21, align 8, !tbaa !5
  %251 = load ptr, ptr %22, align 8, !tbaa !5
  %252 = load ptr, ptr %24, align 8, !tbaa !5
  %253 = getelementptr inbounds double, ptr %252, i64 1
  %254 = load ptr, ptr %25, align 8, !tbaa !5
  %255 = getelementptr inbounds double, ptr %254, i64 1
  %256 = load ptr, ptr %26, align 8, !tbaa !5
  %257 = getelementptr inbounds double, ptr %256, i64 1
  %258 = load ptr, ptr %34, align 8, !tbaa !5
  %259 = load i32, ptr %55, align 4, !tbaa !9
  %260 = load i32, ptr %43, align 4, !tbaa !9
  %261 = mul nsw i32 %259, %260
  %262 = add nsw i32 %261, 1
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds double, ptr %258, i64 %263
  %265 = load ptr, ptr %35, align 8, !tbaa !5
  %266 = load ptr, ptr %38, align 8, !tbaa !5
  %267 = load ptr, ptr %22, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = add nsw i32 %268, 1
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds double, ptr %266, i64 %270
  %272 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dlagtm_(ptr noundef %250, ptr noundef %251, ptr noundef @c__1, ptr noundef @c_b18, ptr noundef %253, ptr noundef %255, ptr noundef %257, ptr noundef %264, ptr noundef %265, ptr noundef @c_b19, ptr noundef %271, ptr noundef %272)
  %273 = load i32, ptr %61, align 4, !tbaa !9
  %274 = icmp ne i32 %273, 0
  br i1 %274, label %275, label %578

275:                                              ; preds = %235
  %276 = load ptr, ptr %22, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = icmp eq i32 %277, 1
  br i1 %278, label %279, label %321

279:                                              ; preds = %275
  %280 = load ptr, ptr %32, align 8, !tbaa !5
  %281 = load i32, ptr %55, align 4, !tbaa !9
  %282 = load i32, ptr %41, align 4, !tbaa !9
  %283 = mul nsw i32 %281, %282
  %284 = add nsw i32 %283, 1
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds double, ptr %280, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !11
  store double %287, ptr %47, align 8, !tbaa !11
  %288 = load double, ptr %47, align 8, !tbaa !11
  %289 = fcmp oge double %288, 0.000000e+00
  br i1 %289, label %290, label %292

290:                                              ; preds = %279
  %291 = load double, ptr %47, align 8, !tbaa !11
  br label %295

292:                                              ; preds = %279
  %293 = load double, ptr %47, align 8, !tbaa !11
  %294 = fneg double %293
  br label %295

295:                                              ; preds = %292, %290
  %296 = phi double [ %291, %290 ], [ %294, %292 ]
  %297 = load ptr, ptr %25, align 8, !tbaa !5
  %298 = getelementptr inbounds double, ptr %297, i64 1
  %299 = load double, ptr %298, align 8, !tbaa !11
  %300 = load ptr, ptr %34, align 8, !tbaa !5
  %301 = load i32, ptr %55, align 4, !tbaa !9
  %302 = load i32, ptr %43, align 4, !tbaa !9
  %303 = mul nsw i32 %301, %302
  %304 = add nsw i32 %303, 1
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %300, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !11
  %308 = fmul double %299, %307
  store double %308, ptr %48, align 8, !tbaa !11
  %309 = load double, ptr %48, align 8, !tbaa !11
  %310 = fcmp oge double %309, 0.000000e+00
  br i1 %310, label %311, label %313

311:                                              ; preds = %295
  %312 = load double, ptr %48, align 8, !tbaa !11
  br label %316

313:                                              ; preds = %295
  %314 = load double, ptr %48, align 8, !tbaa !11
  %315 = fneg double %314
  br label %316

316:                                              ; preds = %313, %311
  %317 = phi double [ %312, %311 ], [ %315, %313 ]
  %318 = fadd double %296, %317
  %319 = load ptr, ptr %38, align 8, !tbaa !5
  %320 = getelementptr inbounds double, ptr %319, i64 1
  store double %318, ptr %320, align 8, !tbaa !11
  br label %577

321:                                              ; preds = %275
  %322 = load ptr, ptr %32, align 8, !tbaa !5
  %323 = load i32, ptr %55, align 4, !tbaa !9
  %324 = load i32, ptr %41, align 4, !tbaa !9
  %325 = mul nsw i32 %323, %324
  %326 = add nsw i32 %325, 1
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %322, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !11
  store double %329, ptr %47, align 8, !tbaa !11
  %330 = load double, ptr %47, align 8, !tbaa !11
  %331 = fcmp oge double %330, 0.000000e+00
  br i1 %331, label %332, label %334

332:                                              ; preds = %321
  %333 = load double, ptr %47, align 8, !tbaa !11
  br label %337

334:                                              ; preds = %321
  %335 = load double, ptr %47, align 8, !tbaa !11
  %336 = fneg double %335
  br label %337

337:                                              ; preds = %334, %332
  %338 = phi double [ %333, %332 ], [ %336, %334 ]
  %339 = load ptr, ptr %25, align 8, !tbaa !5
  %340 = getelementptr inbounds double, ptr %339, i64 1
  %341 = load double, ptr %340, align 8, !tbaa !11
  %342 = load ptr, ptr %34, align 8, !tbaa !5
  %343 = load i32, ptr %55, align 4, !tbaa !9
  %344 = load i32, ptr %43, align 4, !tbaa !9
  %345 = mul nsw i32 %343, %344
  %346 = add nsw i32 %345, 1
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %342, i64 %347
  %349 = load double, ptr %348, align 8, !tbaa !11
  %350 = fmul double %341, %349
  store double %350, ptr %48, align 8, !tbaa !11
  %351 = load double, ptr %48, align 8, !tbaa !11
  %352 = fcmp oge double %351, 0.000000e+00
  br i1 %352, label %353, label %355

353:                                              ; preds = %337
  %354 = load double, ptr %48, align 8, !tbaa !11
  br label %358

355:                                              ; preds = %337
  %356 = load double, ptr %48, align 8, !tbaa !11
  %357 = fneg double %356
  br label %358

358:                                              ; preds = %355, %353
  %359 = phi double [ %354, %353 ], [ %357, %355 ]
  %360 = fadd double %338, %359
  %361 = load ptr, ptr %26, align 8, !tbaa !5
  %362 = getelementptr inbounds double, ptr %361, i64 1
  %363 = load double, ptr %362, align 8, !tbaa !11
  %364 = load ptr, ptr %34, align 8, !tbaa !5
  %365 = load i32, ptr %55, align 4, !tbaa !9
  %366 = load i32, ptr %43, align 4, !tbaa !9
  %367 = mul nsw i32 %365, %366
  %368 = add nsw i32 %367, 2
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %364, i64 %369
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = fmul double %363, %371
  store double %372, ptr %49, align 8, !tbaa !11
  %373 = load double, ptr %49, align 8, !tbaa !11
  %374 = fcmp oge double %373, 0.000000e+00
  br i1 %374, label %375, label %377

375:                                              ; preds = %358
  %376 = load double, ptr %49, align 8, !tbaa !11
  br label %380

377:                                              ; preds = %358
  %378 = load double, ptr %49, align 8, !tbaa !11
  %379 = fneg double %378
  br label %380

380:                                              ; preds = %377, %375
  %381 = phi double [ %376, %375 ], [ %379, %377 ]
  %382 = fadd double %360, %381
  %383 = load ptr, ptr %38, align 8, !tbaa !5
  %384 = getelementptr inbounds double, ptr %383, i64 1
  store double %382, ptr %384, align 8, !tbaa !11
  %385 = load ptr, ptr %22, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = sub nsw i32 %386, 1
  store i32 %387, ptr %46, align 4, !tbaa !9
  store i32 2, ptr %54, align 4, !tbaa !9
  br label %388

388:                                              ; preds = %493, %380
  %389 = load i32, ptr %54, align 4, !tbaa !9
  %390 = load i32, ptr %46, align 4, !tbaa !9
  %391 = icmp sle i32 %389, %390
  br i1 %391, label %392, label %496

392:                                              ; preds = %388
  %393 = load ptr, ptr %32, align 8, !tbaa !5
  %394 = load i32, ptr %54, align 4, !tbaa !9
  %395 = load i32, ptr %55, align 4, !tbaa !9
  %396 = load i32, ptr %41, align 4, !tbaa !9
  %397 = mul nsw i32 %395, %396
  %398 = add nsw i32 %394, %397
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds double, ptr %393, i64 %399
  %401 = load double, ptr %400, align 8, !tbaa !11
  store double %401, ptr %47, align 8, !tbaa !11
  %402 = load double, ptr %47, align 8, !tbaa !11
  %403 = fcmp oge double %402, 0.000000e+00
  br i1 %403, label %404, label %406

404:                                              ; preds = %392
  %405 = load double, ptr %47, align 8, !tbaa !11
  br label %409

406:                                              ; preds = %392
  %407 = load double, ptr %47, align 8, !tbaa !11
  %408 = fneg double %407
  br label %409

409:                                              ; preds = %406, %404
  %410 = phi double [ %405, %404 ], [ %408, %406 ]
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = load i32, ptr %54, align 4, !tbaa !9
  %413 = sub nsw i32 %412, 1
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %411, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = load ptr, ptr %34, align 8, !tbaa !5
  %418 = load i32, ptr %54, align 4, !tbaa !9
  %419 = sub nsw i32 %418, 1
  %420 = load i32, ptr %55, align 4, !tbaa !9
  %421 = load i32, ptr %43, align 4, !tbaa !9
  %422 = mul nsw i32 %420, %421
  %423 = add nsw i32 %419, %422
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds double, ptr %417, i64 %424
  %426 = load double, ptr %425, align 8, !tbaa !11
  %427 = fmul double %416, %426
  store double %427, ptr %48, align 8, !tbaa !11
  %428 = load double, ptr %48, align 8, !tbaa !11
  %429 = fcmp oge double %428, 0.000000e+00
  br i1 %429, label %430, label %432

430:                                              ; preds = %409
  %431 = load double, ptr %48, align 8, !tbaa !11
  br label %435

432:                                              ; preds = %409
  %433 = load double, ptr %48, align 8, !tbaa !11
  %434 = fneg double %433
  br label %435

435:                                              ; preds = %432, %430
  %436 = phi double [ %431, %430 ], [ %434, %432 ]
  %437 = fadd double %410, %436
  %438 = load ptr, ptr %25, align 8, !tbaa !5
  %439 = load i32, ptr %54, 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
  %443 = load ptr, ptr %34, align 8, !tbaa !5
  %444 = load i32, ptr %54, align 4, !tbaa !9
  %445 = load i32, ptr %55, align 4, !tbaa !9
  %446 = load i32, ptr %43, align 4, !tbaa !9
  %447 = mul nsw i32 %445, %446
  %448 = add nsw i32 %444, %447
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds double, ptr %443, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !11
  %452 = fmul double %442, %451
  store double %452, ptr %49, align 8, !tbaa !11
  %453 = load double, ptr %49, align 8, !tbaa !11
  %454 = fcmp oge double %453, 0.000000e+00
  br i1 %454, label %455, label %457

455:                                              ; preds = %435
  %456 = load double, ptr %49, align 8, !tbaa !11
  br label %460

457:                                              ; preds = %435
  %458 = load double, ptr %49, align 8, !tbaa !11
  %459 = fneg double %458
  br label %460

460:                                              ; preds = %457, %455
  %461 = phi double [ %456, %455 ], [ %459, %457 ]
  %462 = fadd double %437, %461
  %463 = load ptr, ptr %26, align 8, !tbaa !5
  %464 = load i32, ptr %54, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !11
  %468 = load ptr, ptr %34, align 8, !tbaa !5
  %469 = load i32, ptr %54, align 4, !tbaa !9
  %470 = add nsw i32 %469, 1
  %471 = load i32, ptr %55, align 4, !tbaa !9
  %472 = load i32, ptr %43, align 4, !tbaa !9
  %473 = mul nsw i32 %471, %472
  %474 = add nsw i32 %470, %473
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds double, ptr %468, i64 %475
  %477 = load double, ptr %476, align 8, !tbaa !11
  %478 = fmul double %467, %477
  store double %478, ptr %50, align 8, !tbaa !11
  %479 = load double, ptr %50, align 8, !tbaa !11
  %480 = fcmp oge double %479, 0.000000e+00
  br i1 %480, label %481, label %483

481:                                              ; preds = %460
  %482 = load double, ptr %50, align 8, !tbaa !11
  br label %486

483:                                              ; preds = %460
  %484 = load double, ptr %50, align 8, !tbaa !11
  %485 = fneg double %484
  br label %486

486:                                              ; preds = %483, %481
  %487 = phi double [ %482, %481 ], [ %485, %483 ]
  %488 = fadd double %462, %487
  %489 = load ptr, ptr %38, align 8, !tbaa !5
  %490 = load i32, ptr %54, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  store double %488, ptr %492, align 8, !tbaa !11
  br label %493

493:                                              ; preds = %486
  %494 = load i32, ptr %54, align 4, !tbaa !9
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %54, align 4, !tbaa !9
  br label %388, !llvm.loop !16

496:                                              ; preds = %388
  %497 = load ptr, ptr %32, align 8, !tbaa !5
  %498 = load ptr, ptr %22, align 8, !tbaa !5
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = load i32, ptr %55, align 4, !tbaa !9
  %501 = load i32, ptr %41, align 4, !tbaa !9
  %502 = mul nsw i32 %500, %501
  %503 = add nsw i32 %499, %502
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %497, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !11
  store double %506, ptr %47, align 8, !tbaa !11
  %507 = load double, ptr %47, align 8, !tbaa !11
  %508 = fcmp oge double %507, 0.000000e+00
  br i1 %508, label %509, label %511

509:                                              ; preds = %496
  %510 = load double, ptr %47, align 8, !tbaa !11
  br label %514

511:                                              ; preds = %496
  %512 = load double, ptr %47, align 8, !tbaa !11
  %513 = fneg double %512
  br label %514

514:                                              ; preds = %511, %509
  %515 = phi double [ %510, %509 ], [ %513, %511 ]
  %516 = load ptr, ptr %24, align 8, !tbaa !5
  %517 = load ptr, ptr %22, align 8, !tbaa !5
  %518 = load i32, ptr %517, align 4, !tbaa !9
  %519 = sub nsw i32 %518, 1
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds double, ptr %516, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !11
  %523 = load ptr, ptr %34, align 8, !tbaa !5
  %524 = load ptr, ptr %22, align 8, !tbaa !5
  %525 = load i32, ptr %524, align 4, !tbaa !9
  %526 = sub nsw i32 %525, 1
  %527 = load i32, ptr %55, align 4, !tbaa !9
  %528 = load i32, ptr %43, align 4, !tbaa !9
  %529 = mul nsw i32 %527, %528
  %530 = add nsw i32 %526, %529
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds double, ptr %523, i64 %531
  %533 = load double, ptr %532, align 8, !tbaa !11
  %534 = fmul double %522, %533
  store double %534, ptr %48, align 8, !tbaa !11
  %535 = load double, ptr %48, align 8, !tbaa !11
  %536 = fcmp oge double %535, 0.000000e+00
  br i1 %536, label %537, label %539

537:                                              ; preds = %514
  %538 = load double, ptr %48, align 8, !tbaa !11
  br label %542

539:                                              ; preds = %514
  %540 = load double, ptr %48, align 8, !tbaa !11
  %541 = fneg double %540
  br label %542

542:                                              ; preds = %539, %537
  %543 = phi double [ %538, %537 ], [ %541, %539 ]
  %544 = fadd double %515, %543
  %545 = load ptr, ptr %25, align 8, !tbaa !5
  %546 = load ptr, ptr %22, align 8, !tbaa !5
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %545, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !11
  %551 = load ptr, ptr %34, align 8, !tbaa !5
  %552 = load ptr, ptr %22, align 8, !tbaa !5
  %553 = load i32, ptr %552, align 4, !tbaa !9
  %554 = load i32, ptr %55, align 4, !tbaa !9
  %555 = load i32, ptr %43, align 4, !tbaa !9
  %556 = mul nsw i32 %554, %555
  %557 = add nsw i32 %553, %556
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds double, ptr %551, i64 %558
  %560 = load double, ptr %559, align 8, !tbaa !11
  %561 = fmul double %550, %560
  store double %561, ptr %49, align 8, !tbaa !11
  %562 = load double, ptr %49, align 8, !tbaa !11
  %563 = fcmp oge double %562, 0.000000e+00
  br i1 %563, label %564, label %566

564:                                              ; preds = %542
  %565 = load double, ptr %49, align 8, !tbaa !11
  br label %569

566:                                              ; preds = %542
  %567 = load double, ptr %49, align 8, !tbaa !11
  %568 = fneg double %567
  br label %569

569:                                              ; preds = %566, %564
  %570 = phi double [ %565, %564 ], [ %568, %566 ]
  %571 = fadd double %544, %570
  %572 = load ptr, ptr %38, align 8, !tbaa !5
  %573 = load ptr, ptr %22, align 8, !tbaa !5
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds double, ptr %572, i64 %575
  store double %571, ptr %576, align 8, !tbaa !11
  br label %577

577:                                              ; preds = %569, %316
  br label %881

578:                                              ; preds = %235
  %579 = load ptr, ptr %22, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  %581 = icmp eq i32 %580, 1
  br i1 %581, label %582, label %624

582:                                              ; preds = %578
  %583 = load ptr, ptr %32, align 8, !tbaa !5
  %584 = load i32, ptr %55, align 4, !tbaa !9
  %585 = load i32, ptr %41, align 4, !tbaa !9
  %586 = mul nsw i32 %584, %585
  %587 = add nsw i32 %586, 1
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %583, i64 %588
  %590 = load double, ptr %589, align 8, !tbaa !11
  store double %590, ptr %47, align 8, !tbaa !11
  %591 = load double, ptr %47, align 8, !tbaa !11
  %592 = fcmp oge double %591, 0.000000e+00
  br i1 %592, label %593, label %595

593:                                              ; preds = %582
  %594 = load double, ptr %47, align 8, !tbaa !11
  br label %598

595:                                              ; preds = %582
  %596 = load double, ptr %47, align 8, !tbaa !11
  %597 = fneg double %596
  br label %598

598:                                              ; preds = %595, %593
  %599 = phi double [ %594, %593 ], [ %597, %595 ]
  %600 = load ptr, ptr %25, align 8, !tbaa !5
  %601 = getelementptr inbounds double, ptr %600, i64 1
  %602 = load double, ptr %601, align 8, !tbaa !11
  %603 = load ptr, ptr %34, align 8, !tbaa !5
  %604 = load i32, ptr %55, align 4, !tbaa !9
  %605 = load i32, ptr %43, align 4, !tbaa !9
  %606 = mul nsw i32 %604, %605
  %607 = add nsw i32 %606, 1
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %603, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !11
  %611 = fmul double %602, %610
  store double %611, ptr %48, align 8, !tbaa !11
  %612 = load double, ptr %48, align 8, !tbaa !11
  %613 = fcmp oge double %612, 0.000000e+00
  br i1 %613, label %614, label %616

614:                                              ; preds = %598
  %615 = load double, ptr %48, align 8, !tbaa !11
  br label %619

616:                                              ; preds = %598
  %617 = load double, ptr %48, align 8, !tbaa !11
  %618 = fneg double %617
  br label %619

619:                                              ; preds = %616, %614
  %620 = phi double [ %615, %614 ], [ %618, %616 ]
  %621 = fadd double %599, %620
  %622 = load ptr, ptr %38, align 8, !tbaa !5
  %623 = getelementptr inbounds double, ptr %622, i64 1
  store double %621, ptr %623, align 8, !tbaa !11
  br label %880

624:                                              ; preds = %578
  %625 = load ptr, ptr %32, align 8, !tbaa !5
  %626 = load i32, ptr %55, align 4, !tbaa !9
  %627 = load i32, ptr %41, align 4, !tbaa !9
  %628 = mul nsw i32 %626, %627
  %629 = add nsw i32 %628, 1
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds double, ptr %625, i64 %630
  %632 = load double, ptr %631, align 8, !tbaa !11
  store double %632, ptr %47, align 8, !tbaa !11
  %633 = load double, ptr %47, align 8, !tbaa !11
  %634 = fcmp oge double %633, 0.000000e+00
  br i1 %634, label %635, label %637

635:                                              ; preds = %624
  %636 = load double, ptr %47, align 8, !tbaa !11
  br label %640

637:                                              ; preds = %624
  %638 = load double, ptr %47, align 8, !tbaa !11
  %639 = fneg double %638
  br label %640

640:                                              ; preds = %637, %635
  %641 = phi double [ %636, %635 ], [ %639, %637 ]
  %642 = load ptr, ptr %25, align 8, !tbaa !5
  %643 = getelementptr inbounds double, ptr %642, i64 1
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = load ptr, ptr %34, align 8, !tbaa !5
  %646 = load i32, ptr %55, align 4, !tbaa !9
  %647 = load i32, ptr %43, align 4, !tbaa !9
  %648 = mul nsw i32 %646, %647
  %649 = add nsw i32 %648, 1
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %645, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !11
  %653 = fmul double %644, %652
  store double %653, ptr %48, align 8, !tbaa !11
  %654 = load double, ptr %48, align 8, !tbaa !11
  %655 = fcmp oge double %654, 0.000000e+00
  br i1 %655, label %656, label %658

656:                                              ; preds = %640
  %657 = load double, ptr %48, align 8, !tbaa !11
  br label %661

658:                                              ; preds = %640
  %659 = load double, ptr %48, align 8, !tbaa !11
  %660 = fneg double %659
  br label %661

661:                                              ; preds = %658, %656
  %662 = phi double [ %657, %656 ], [ %660, %658 ]
  %663 = fadd double %641, %662
  %664 = load ptr, ptr %24, align 8, !tbaa !5
  %665 = getelementptr inbounds double, ptr %664, i64 1
  %666 = load double, ptr %665, align 8, !tbaa !11
  %667 = load ptr, ptr %34, align 8, !tbaa !5
  %668 = load i32, ptr %55, align 4, !tbaa !9
  %669 = load i32, ptr %43, align 4, !tbaa !9
  %670 = mul nsw i32 %668, %669
  %671 = add nsw i32 %670, 2
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds double, ptr %667, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = fmul double %666, %674
  store double %675, ptr %49, align 8, !tbaa !11
  %676 = load double, ptr %49, align 8, !tbaa !11
  %677 = fcmp oge double %676, 0.000000e+00
  br i1 %677, label %678, label %680

678:                                              ; preds = %661
  %679 = load double, ptr %49, align 8, !tbaa !11
  br label %683

680:                                              ; preds = %661
  %681 = load double, ptr %49, align 8, !tbaa !11
  %682 = fneg double %681
  br label %683

683:                                              ; preds = %680, %678
  %684 = phi double [ %679, %678 ], [ %682, %680 ]
  %685 = fadd double %663, %684
  %686 = load ptr, ptr %38, align 8, !tbaa !5
  %687 = getelementptr inbounds double, ptr %686, i64 1
  store double %685, ptr %687, align 8, !tbaa !11
  %688 = load ptr, ptr %22, align 8, !tbaa !5
  %689 = load i32, ptr %688, align 4, !tbaa !9
  %690 = sub nsw i32 %689, 1
  store i32 %690, ptr %46, align 4, !tbaa !9
  store i32 2, ptr %54, align 4, !tbaa !9
  br label %691

691:                                              ; preds = %796, %683
  %692 = load i32, ptr %54, align 4, !tbaa !9
  %693 = load i32, ptr %46, align 4, !tbaa !9
  %694 = icmp sle i32 %692, %693
  br i1 %694, label %695, label %799

695:                                              ; preds = %691
  %696 = load ptr, ptr %32, align 8, !tbaa !5
  %697 = load i32, ptr %54, align 4, !tbaa !9
  %698 = load i32, ptr %55, align 4, !tbaa !9
  %699 = load i32, ptr %41, align 4, !tbaa !9
  %700 = mul nsw i32 %698, %699
  %701 = add nsw i32 %697, %700
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %696, i64 %702
  %704 = load double, ptr %703, align 8, !tbaa !11
  store double %704, ptr %47, align 8, !tbaa !11
  %705 = load double, ptr %47, align 8, !tbaa !11
  %706 = fcmp oge double %705, 0.000000e+00
  br i1 %706, label %707, label %709

707:                                              ; preds = %695
  %708 = load double, ptr %47, align 8, !tbaa !11
  br label %712

709:                                              ; preds = %695
  %710 = load double, ptr %47, align 8, !tbaa !11
  %711 = fneg double %710
  br label %712

712:                                              ; preds = %709, %707
  %713 = phi double [ %708, %707 ], [ %711, %709 ]
  %714 = load ptr, ptr %26, align 8, !tbaa !5
  %715 = load i32, ptr %54, align 4, !tbaa !9
  %716 = sub nsw i32 %715, 1
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds double, ptr %714, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !11
  %720 = load ptr, ptr %34, align 8, !tbaa !5
  %721 = load i32, ptr %54, align 4, !tbaa !9
  %722 = sub nsw i32 %721, 1
  %723 = load i32, ptr %55, align 4, !tbaa !9
  %724 = load i32, ptr %43, align 4, !tbaa !9
  %725 = mul nsw i32 %723, %724
  %726 = add nsw i32 %722, %725
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds double, ptr %720, i64 %727
  %729 = load double, ptr %728, align 8, !tbaa !11
  %730 = fmul double %719, %729
  store double %730, ptr %48, align 8, !tbaa !11
  %731 = load double, ptr %48, align 8, !tbaa !11
  %732 = fcmp oge double %731, 0.000000e+00
  br i1 %732, label %733, label %735

733:                                              ; preds = %712
  %734 = load double, ptr %48, align 8, !tbaa !11
  br label %738

735:                                              ; preds = %712
  %736 = load double, ptr %48, align 8, !tbaa !11
  %737 = fneg double %736
  br label %738

738:                                              ; preds = %735, %733
  %739 = phi double [ %734, %733 ], [ %737, %735 ]
  %740 = fadd double %713, %739
  %741 = load ptr, ptr %25, align 8, !tbaa !5
  %742 = load i32, ptr %54, align 4, !tbaa !9
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %741, i64 %743
  %745 = load double, ptr %744, align 8, !tbaa !11
  %746 = load ptr, ptr %34, align 8, !tbaa !5
  %747 = load i32, ptr %54, align 4, !tbaa !9
  %748 = load i32, ptr %55, align 4, !tbaa !9
  %749 = load i32, ptr %43, align 4, !tbaa !9
  %750 = mul nsw i32 %748, %749
  %751 = add nsw i32 %747, %750
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %746, i64 %752
  %754 = load double, ptr %753, align 8, !tbaa !11
  %755 = fmul double %745, %754
  store double %755, ptr %49, align 8, !tbaa !11
  %756 = load double, ptr %49, align 8, !tbaa !11
  %757 = fcmp oge double %756, 0.000000e+00
  br i1 %757, label %758, label %760

758:                                              ; preds = %738
  %759 = load double, ptr %49, align 8, !tbaa !11
  br label %763

760:                                              ; preds = %738
  %761 = load double, ptr %49, align 8, !tbaa !11
  %762 = fneg double %761
  br label %763

763:                                              ; preds = %760, %758
  %764 = phi double [ %759, %758 ], [ %762, %760 ]
  %765 = fadd double %740, %764
  %766 = load ptr, ptr %24, align 8, !tbaa !5
  %767 = load i32, ptr %54, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %766, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = load ptr, ptr %34, align 8, !tbaa !5
  %772 = load i32, ptr %54, align 4, !tbaa !9
  %773 = add nsw i32 %772, 1
  %774 = load i32, ptr %55, align 4, !tbaa !9
  %775 = load i32, ptr %43, align 4, !tbaa !9
  %776 = mul nsw i32 %774, %775
  %777 = add nsw i32 %773, %776
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds double, ptr %771, i64 %778
  %780 = load double, ptr %779, align 8, !tbaa !11
  %781 = fmul double %770, %780
  store double %781, ptr %50, align 8, !tbaa !11
  %782 = load double, ptr %50, align 8, !tbaa !11
  %783 = fcmp oge double %782, 0.000000e+00
  br i1 %783, label %784, label %786

784:                                              ; preds = %763
  %785 = load double, ptr %50, align 8, !tbaa !11
  br label %789

786:                                              ; preds = %763
  %787 = load double, ptr %50, align 8, !tbaa !11
  %788 = fneg double %787
  br label %789

789:                                              ; preds = %786, %784
  %790 = phi double [ %785, %784 ], [ %788, %786 ]
  %791 = fadd double %765, %790
  %792 = load ptr, ptr %38, align 8, !tbaa !5
  %793 = load i32, ptr %54, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds double, ptr %792, i64 %794
  store double %791, ptr %795, align 8, !tbaa !11
  br label %796

796:                                              ; preds = %789
  %797 = load i32, ptr %54, align 4, !tbaa !9
  %798 = add nsw i32 %797, 1
  store i32 %798, ptr %54, align 4, !tbaa !9
  br label %691, !llvm.loop !17

799:                                              ; preds = %691
  %800 = load ptr, ptr %32, align 8, !tbaa !5
  %801 = load ptr, ptr %22, align 8, !tbaa !5
  %802 = load i32, ptr %801, align 4, !tbaa !9
  %803 = load i32, ptr %55, align 4, !tbaa !9
  %804 = load i32, ptr %41, align 4, !tbaa !9
  %805 = mul nsw i32 %803, %804
  %806 = add nsw i32 %802, %805
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %800, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !11
  store double %809, ptr %47, align 8, !tbaa !11
  %810 = load double, ptr %47, align 8, !tbaa !11
  %811 = fcmp oge double %810, 0.000000e+00
  br i1 %811, label %812, label %814

812:                                              ; preds = %799
  %813 = load double, ptr %47, align 8, !tbaa !11
  br label %817

814:                                              ; preds = %799
  %815 = load double, ptr %47, align 8, !tbaa !11
  %816 = fneg double %815
  br label %817

817:                                              ; preds = %814, %812
  %818 = phi double [ %813, %812 ], [ %816, %814 ]
  %819 = load ptr, ptr %26, align 8, !tbaa !5
  %820 = load ptr, ptr %22, align 8, !tbaa !5
  %821 = load i32, ptr %820, align 4, !tbaa !9
  %822 = sub nsw i32 %821, 1
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %819, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !11
  %826 = load ptr, ptr %34, align 8, !tbaa !5
  %827 = load ptr, ptr %22, align 8, !tbaa !5
  %828 = load i32, ptr %827, align 4, !tbaa !9
  %829 = sub nsw i32 %828, 1
  %830 = load i32, ptr %55, align 4, !tbaa !9
  %831 = load i32, ptr %43, align 4, !tbaa !9
  %832 = mul nsw i32 %830, %831
  %833 = add nsw i32 %829, %832
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds double, ptr %826, i64 %834
  %836 = load double, ptr %835, align 8, !tbaa !11
  %837 = fmul double %825, %836
  store double %837, ptr %48, align 8, !tbaa !11
  %838 = load double, ptr %48, align 8, !tbaa !11
  %839 = fcmp oge double %838, 0.000000e+00
  br i1 %839, label %840, label %842

840:                                              ; preds = %817
  %841 = load double, ptr %48, align 8, !tbaa !11
  br label %845

842:                                              ; preds = %817
  %843 = load double, ptr %48, align 8, !tbaa !11
  %844 = fneg double %843
  br label %845

845:                                              ; preds = %842, %840
  %846 = phi double [ %841, %840 ], [ %844, %842 ]
  %847 = fadd double %818, %846
  %848 = load ptr, ptr %25, align 8, !tbaa !5
  %849 = load ptr, ptr %22, align 8, !tbaa !5
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds double, ptr %848, i64 %851
  %853 = load double, ptr %852, align 8, !tbaa !11
  %854 = load ptr, ptr %34, align 8, !tbaa !5
  %855 = load ptr, ptr %22, align 8, !tbaa !5
  %856 = load i32, ptr %855, align 4, !tbaa !9
  %857 = load i32, ptr %55, align 4, !tbaa !9
  %858 = load i32, ptr %43, align 4, !tbaa !9
  %859 = mul nsw i32 %857, %858
  %860 = add nsw i32 %856, %859
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %854, i64 %861
  %863 = load double, ptr %862, align 8, !tbaa !11
  %864 = fmul double %853, %863
  store double %864, ptr %49, align 8, !tbaa !11
  %865 = load double, ptr %49, align 8, !tbaa !11
  %866 = fcmp oge double %865, 0.000000e+00
  br i1 %866, label %867, label %869

867:                                              ; preds = %845
  %868 = load double, ptr %49, align 8, !tbaa !11
  br label %872

869:                                              ; preds = %845
  %870 = load double, ptr %49, align 8, !tbaa !11
  %871 = fneg double %870
  br label %872

872:                                              ; preds = %869, %867
  %873 = phi double [ %868, %867 ], [ %871, %869 ]
  %874 = fadd double %847, %873
  %875 = load ptr, ptr %38, align 8, !tbaa !5
  %876 = load ptr, ptr %22, align 8, !tbaa !5
  %877 = load i32, ptr %876, align 4, !tbaa !9
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds double, ptr %875, i64 %878
  store double %874, ptr %879, align 8, !tbaa !11
  br label %880

880:                                              ; preds = %872, %619
  br label %881

881:                                              ; preds = %880, %577
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  %882 = load ptr, ptr %22, align 8, !tbaa !5
  %883 = load i32, ptr %882, align 4, !tbaa !9
  store i32 %883, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %884

884:                                              ; preds = %969, %881
  %885 = load i32, ptr %54, align 4, !tbaa !9
  %886 = load i32, ptr %46, align 4, !tbaa !9
  %887 = icmp sle i32 %885, %886
  br i1 %887, label %888, label %972

888:                                              ; preds = %884
  %889 = load ptr, ptr %38, align 8, !tbaa !5
  %890 = load i32, ptr %54, align 4, !tbaa !9
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds double, ptr %889, i64 %891
  %893 = load double, ptr %892, align 8, !tbaa !11
  %894 = load double, ptr %53, align 8, !tbaa !11
  %895 = fcmp ogt double %893, %894
  br i1 %895, label %896, label %930

896:                                              ; preds = %888
  %897 = load double, ptr %56, align 8, !tbaa !11
  store double %897, ptr %48, align 8, !tbaa !11
  %898 = load ptr, ptr %38, align 8, !tbaa !5
  %899 = load ptr, ptr %22, align 8, !tbaa !5
  %900 = load i32, ptr %899, align 4, !tbaa !9
  %901 = load i32, ptr %54, align 4, !tbaa !9
  %902 = add nsw i32 %900, %901
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds double, ptr %898, i64 %903
  %905 = load double, ptr %904, align 8, !tbaa !11
  store double %905, ptr %47, align 8, !tbaa !11
  %906 = load double, ptr %47, align 8, !tbaa !11
  %907 = fcmp oge double %906, 0.000000e+00
  br i1 %907, label %908, label %910

908:                                              ; preds = %896
  %909 = load double, ptr %47, align 8, !tbaa !11
  br label %913

910:                                              ; preds = %896
  %911 = load double, ptr %47, align 8, !tbaa !11
  %912 = fneg double %911
  br label %913

913:                                              ; preds = %910, %908
  %914 = phi double [ %909, %908 ], [ %912, %910 ]
  %915 = load ptr, ptr %38, align 8, !tbaa !5
  %916 = load i32, ptr %54, align 4, !tbaa !9
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %915, i64 %917
  %919 = load double, ptr %918, align 8, !tbaa !11
  %920 = fdiv double %914, %919
  store double %920, ptr %49, align 8, !tbaa !11
  %921 = load double, ptr %48, align 8, !tbaa !11
  %922 = load double, ptr %49, align 8, !tbaa !11
  %923 = fcmp oge double %921, %922
  br i1 %923, label %924, label %926

924:                                              ; preds = %913
  %925 = load double, ptr %48, align 8, !tbaa !11
  br label %928

926:                                              ; preds = %913
  %927 = load double, ptr %49, align 8, !tbaa !11
  br label %928

928:                                              ; preds = %926, %924
  %929 = phi double [ %925, %924 ], [ %927, %926 ]
  store double %929, ptr %56, align 8, !tbaa !11
  br label %968

930:                                              ; preds = %888
  %931 = load double, ptr %56, align 8, !tbaa !11
  store double %931, ptr %48, align 8, !tbaa !11
  %932 = load ptr, ptr %38, align 8, !tbaa !5
  %933 = load ptr, ptr %22, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !9
  %935 = load i32, ptr %54, align 4, !tbaa !9
  %936 = add nsw i32 %934, %935
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds double, ptr %932, i64 %937
  %939 = load double, ptr %938, align 8, !tbaa !11
  store double %939, ptr %47, align 8, !tbaa !11
  %940 = load double, ptr %47, align 8, !tbaa !11
  %941 = fcmp oge double %940, 0.000000e+00
  br i1 %941, label %942, label %944

942:                                              ; preds = %930
  %943 = load double, ptr %47, align 8, !tbaa !11
  br label %947

944:                                              ; preds = %930
  %945 = load double, ptr %47, align 8, !tbaa !11
  %946 = fneg double %945
  br label %947

947:                                              ; preds = %944, %942
  %948 = phi double [ %943, %942 ], [ %946, %944 ]
  %949 = load double, ptr %52, align 8, !tbaa !11
  %950 = fadd double %948, %949
  %951 = load ptr, ptr %38, align 8, !tbaa !5
  %952 = load i32, ptr %54, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load double, ptr %954, align 8, !tbaa !11
  %956 = load double, ptr %52, align 8, !tbaa !11
  %957 = fadd double %955, %956
  %958 = fdiv double %950, %957
  store double %958, ptr %49, align 8, !tbaa !11
  %959 = load double, ptr %48, align 8, !tbaa !11
  %960 = load double, ptr %49, align 8, !tbaa !11
  %961 = fcmp oge double %959, %960
  br i1 %961, label %962, label %964

962:                                              ; preds = %947
  %963 = load double, ptr %48, align 8, !tbaa !11
  br label %966

964:                                              ; preds = %947
  %965 = load double, ptr %49, align 8, !tbaa !11
  br label %966

966:                                              ; preds = %964, %962
  %967 = phi double [ %963, %962 ], [ %965, %964 ]
  store double %967, ptr %56, align 8, !tbaa !11
  br label %968

968:                                              ; preds = %966, %928
  br label %969

969:                                              ; preds = %968
  %970 = load i32, ptr %54, align 4, !tbaa !9
  %971 = add nsw i32 %970, 1
  store i32 %971, ptr %54, align 4, !tbaa !9
  br label %884, !llvm.loop !18

972:                                              ; preds = %884
  %973 = load double, ptr %56, align 8, !tbaa !11
  %974 = load ptr, ptr %37, align 8, !tbaa !5
  %975 = load i32, ptr %55, align 4, !tbaa !9
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %974, i64 %976
  store double %973, ptr %977, align 8, !tbaa !11
  %978 = load ptr, ptr %37, align 8, !tbaa !5
  %979 = load i32, ptr %55, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %978, i64 %980
  %982 = load double, ptr %981, align 8, !tbaa !11
  %983 = load double, ptr %65, align 8, !tbaa !11
  %984 = fcmp ogt double %982, %983
  br i1 %984, label %985, label %1039

985:                                              ; preds = %972
  %986 = load ptr, ptr %37, align 8, !tbaa !5
  %987 = load i32, ptr %55, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds double, ptr %986, i64 %988
  %990 = load double, ptr %989, align 8, !tbaa !11
  %991 = fmul double %990, 2.000000e+00
  %992 = load double, ptr %64, align 8, !tbaa !11
  %993 = fcmp ole double %991, %992
  br i1 %993, label %994, label %1039

994:                                              ; preds = %985
  %995 = load i32, ptr %58, align 4, !tbaa !9
  %996 = icmp sle i32 %995, 5
  br i1 %996, label %997, label %1039

997:                                              ; preds = %994
  %998 = load ptr, ptr %21, align 8, !tbaa !5
  %999 = load ptr, ptr %22, align 8, !tbaa !5
  %1000 = load ptr, ptr %27, align 8, !tbaa !5
  %1001 = getelementptr inbounds double, ptr %1000, i64 1
  %1002 = load ptr, ptr %28, align 8, !tbaa !5
  %1003 = getelementptr inbounds double, ptr %1002, i64 1
  %1004 = load ptr, ptr %29, align 8, !tbaa !5
  %1005 = getelementptr inbounds double, ptr %1004, i64 1
  %1006 = load ptr, ptr %30, align 8, !tbaa !5
  %1007 = getelementptr inbounds double, ptr %1006, i64 1
  %1008 = load ptr, ptr %31, align 8, !tbaa !5
  %1009 = getelementptr inbounds i32, ptr %1008, i64 1
  %1010 = load ptr, ptr %38, align 8, !tbaa !5
  %1011 = load ptr, ptr %22, align 8, !tbaa !5
  %1012 = load i32, ptr %1011, align 4, !tbaa !9
  %1013 = add nsw i32 %1012, 1
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds double, ptr %1010, i64 %1014
  %1016 = load ptr, ptr %22, align 8, !tbaa !5
  %1017 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dgttrs_(ptr noundef %998, ptr noundef %999, ptr noundef @c__1, ptr noundef %1001, ptr noundef %1003, ptr noundef %1005, ptr noundef %1007, ptr noundef %1009, ptr noundef %1015, ptr noundef %1016, ptr noundef %1017)
  %1018 = load ptr, ptr %22, align 8, !tbaa !5
  %1019 = load ptr, ptr %38, align 8, !tbaa !5
  %1020 = load ptr, ptr %22, align 8, !tbaa !5
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  %1022 = add nsw i32 %1021, 1
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds double, ptr %1019, i64 %1023
  %1025 = load ptr, ptr %34, align 8, !tbaa !5
  %1026 = load i32, ptr %55, align 4, !tbaa !9
  %1027 = load i32, ptr %43, align 4, !tbaa !9
  %1028 = mul nsw i32 %1026, %1027
  %1029 = add nsw i32 %1028, 1
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1025, i64 %1030
  call void @daxpy_(ptr noundef %1018, ptr noundef @c_b19, ptr noundef %1024, ptr noundef @c__1, ptr noundef %1031, ptr noundef @c__1)
  %1032 = load ptr, ptr %37, align 8, !tbaa !5
  %1033 = load i32, ptr %55, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds double, ptr %1032, i64 %1034
  %1036 = load double, ptr %1035, align 8, !tbaa !11
  store double %1036, ptr %64, align 8, !tbaa !11
  %1037 = load i32, ptr %58, align 4, !tbaa !9
  %1038 = add nsw i32 %1037, 1
  store i32 %1038, ptr %58, align 4, !tbaa !9
  br label %235

1039:                                             ; preds = %994, %985, %972
  %1040 = load ptr, ptr %22, align 8, !tbaa !5
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  store i32 %1041, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1042

1042:                                             ; preds = %1121, %1039
  %1043 = load i32, ptr %54, align 4, !tbaa !9
  %1044 = load i32, ptr %46, align 4, !tbaa !9
  %1045 = icmp sle i32 %1043, %1044
  br i1 %1045, label %1046, label %1124

1046:                                             ; preds = %1042
  %1047 = load ptr, ptr %38, align 8, !tbaa !5
  %1048 = load i32, ptr %54, align 4, !tbaa !9
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1047, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !11
  %1052 = load double, ptr %53, align 8, !tbaa !11
  %1053 = fcmp ogt double %1051, %1052
  br i1 %1053, label %1054, label %1086

1054:                                             ; preds = %1046
  %1055 = load ptr, ptr %38, align 8, !tbaa !5
  %1056 = load ptr, ptr %22, align 8, !tbaa !5
  %1057 = load i32, ptr %1056, align 4, !tbaa !9
  %1058 = load i32, ptr %54, align 4, !tbaa !9
  %1059 = add nsw i32 %1057, %1058
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds double, ptr %1055, i64 %1060
  %1062 = load double, ptr %1061, align 8, !tbaa !11
  store double %1062, ptr %47, align 8, !tbaa !11
  %1063 = load double, ptr %47, align 8, !tbaa !11
  %1064 = fcmp oge double %1063, 0.000000e+00
  br i1 %1064, label %1065, label %1067

1065:                                             ; preds = %1054
  %1066 = load double, ptr %47, align 8, !tbaa !11
  br label %1070

1067:                                             ; preds = %1054
  %1068 = load double, ptr %47, align 8, !tbaa !11
  %1069 = fneg double %1068
  br label %1070

1070:                                             ; preds = %1067, %1065
  %1071 = phi double [ %1066, %1065 ], [ %1069, %1067 ]
  %1072 = load i32, ptr %59, align 4, !tbaa !9
  %1073 = sitofp i32 %1072 to double
  %1074 = load double, ptr %65, align 8, !tbaa !11
  %1075 = fmul double %1073, %1074
  %1076 = load ptr, ptr %38, align 8, !tbaa !5
  %1077 = load i32, ptr %54, align 4, !tbaa !9
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds double, ptr %1076, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !11
  %1081 = call double @llvm.fmuladd.f64(double %1075, double %1080, double %1071)
  %1082 = load ptr, ptr %38, align 8, !tbaa !5
  %1083 = load i32, ptr %54, align 4, !tbaa !9
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds double, ptr %1082, i64 %1084
  store double %1081, ptr %1085, align 8, !tbaa !11
  br label %1120

1086:                                             ; preds = %1046
  %1087 = load ptr, ptr %38, align 8, !tbaa !5
  %1088 = load ptr, ptr %22, align 8, !tbaa !5
  %1089 = load i32, ptr %1088, align 4, !tbaa !9
  %1090 = load i32, ptr %54, align 4, !tbaa !9
  %1091 = add nsw i32 %1089, %1090
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds double, ptr %1087, i64 %1092
  %1094 = load double, ptr %1093, align 8, !tbaa !11
  store double %1094, ptr %47, align 8, !tbaa !11
  %1095 = load double, ptr %47, align 8, !tbaa !11
  %1096 = fcmp oge double %1095, 0.000000e+00
  br i1 %1096, label %1097, label %1099

1097:                                             ; preds = %1086
  %1098 = load double, ptr %47, align 8, !tbaa !11
  br label %1102

1099:                                             ; preds = %1086
  %1100 = load double, ptr %47, align 8, !tbaa !11
  %1101 = fneg double %1100
  br label %1102

1102:                                             ; preds = %1099, %1097
  %1103 = phi double [ %1098, %1097 ], [ %1101, %1099 ]
  %1104 = load i32, ptr %59, align 4, !tbaa !9
  %1105 = sitofp i32 %1104 to double
  %1106 = load double, ptr %65, align 8, !tbaa !11
  %1107 = fmul double %1105, %1106
  %1108 = load ptr, ptr %38, align 8, !tbaa !5
  %1109 = load i32, ptr %54, align 4, !tbaa !9
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds double, ptr %1108, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !11
  %1113 = call double @llvm.fmuladd.f64(double %1107, double %1112, double %1103)
  %1114 = load double, ptr %52, align 8, !tbaa !11
  %1115 = fadd double %1113, %1114
  %1116 = load ptr, ptr %38, align 8, !tbaa !5
  %1117 = load i32, ptr %54, align 4, !tbaa !9
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds double, ptr %1116, i64 %1118
  store double %1115, ptr %1119, align 8, !tbaa !11
  br label %1120

1120:                                             ; preds = %1102, %1070
  br label %1121

1121:                                             ; preds = %1120
  %1122 = load i32, ptr %54, align 4, !tbaa !9
  %1123 = add nsw i32 %1122, 1
  store i32 %1123, ptr %54, align 4, !tbaa !9
  br label %1042, !llvm.loop !19

1124:                                             ; preds = %1042
  store i32 0, ptr %51, align 4, !tbaa !9
  br label %1125

1125:                                             ; preds = %1258, %1124
  %1126 = load ptr, ptr %22, align 8, !tbaa !5
  %1127 = load ptr, ptr %38, align 8, !tbaa !5
  %1128 = load ptr, ptr %22, align 8, !tbaa !5
  %1129 = load i32, ptr %1128, align 4, !tbaa !9
  %1130 = shl i32 %1129, 1
  %1131 = add nsw i32 %1130, 1
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds double, ptr %1127, i64 %1132
  %1134 = load ptr, ptr %38, align 8, !tbaa !5
  %1135 = load ptr, ptr %22, align 8, !tbaa !5
  %1136 = load i32, ptr %1135, align 4, !tbaa !9
  %1137 = add nsw i32 %1136, 1
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds double, ptr %1134, i64 %1138
  %1140 = load ptr, ptr %39, align 8, !tbaa !5
  %1141 = getelementptr inbounds i32, ptr %1140, i64 1
  %1142 = load ptr, ptr %36, align 8, !tbaa !5
  %1143 = load i32, ptr %55, align 4, !tbaa !9
  %1144 = sext i32 %1143 to i64
  %1145 = getelementptr inbounds double, ptr %1142, i64 %1144
  %1146 = getelementptr inbounds [3 x i32], ptr %57, i64 0, i64 0
  call void @dlacn2_(ptr noundef %1126, ptr noundef %1133, ptr noundef %1139, ptr noundef %1141, ptr noundef %1145, ptr noundef %51, ptr noundef %1146)
  %1147 = load i32, ptr %51, align 4, !tbaa !9
  %1148 = icmp ne i32 %1147, 0
  br i1 %1148, label %1149, label %1259

1149:                                             ; preds = %1125
  %1150 = load i32, ptr %51, align 4, !tbaa !9
  %1151 = icmp eq i32 %1150, 1
  br i1 %1151, label %1152, label %1205

1152:                                             ; preds = %1149
  %1153 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  %1154 = load ptr, ptr %22, align 8, !tbaa !5
  %1155 = load ptr, ptr %27, align 8, !tbaa !5
  %1156 = getelementptr inbounds double, ptr %1155, i64 1
  %1157 = load ptr, ptr %28, align 8, !tbaa !5
  %1158 = getelementptr inbounds double, ptr %1157, i64 1
  %1159 = load ptr, ptr %29, align 8, !tbaa !5
  %1160 = getelementptr inbounds double, ptr %1159, i64 1
  %1161 = load ptr, ptr %30, align 8, !tbaa !5
  %1162 = getelementptr inbounds double, ptr %1161, i64 1
  %1163 = load ptr, ptr %31, align 8, !tbaa !5
  %1164 = getelementptr inbounds i32, ptr %1163, i64 1
  %1165 = load ptr, ptr %38, align 8, !tbaa !5
  %1166 = load ptr, ptr %22, align 8, !tbaa !5
  %1167 = load i32, ptr %1166, align 4, !tbaa !9
  %1168 = add nsw i32 %1167, 1
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds double, ptr %1165, i64 %1169
  %1171 = load ptr, ptr %22, align 8, !tbaa !5
  %1172 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dgttrs_(ptr noundef %1153, ptr noundef %1154, ptr noundef @c__1, ptr noundef %1156, ptr noundef %1158, ptr noundef %1160, ptr noundef %1162, ptr noundef %1164, ptr noundef %1170, ptr noundef %1171, ptr noundef %1172)
  %1173 = load ptr, ptr %22, align 8, !tbaa !5
  %1174 = load i32, ptr %1173, align 4, !tbaa !9
  store i32 %1174, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1175

1175:                                             ; preds = %1201, %1152
  %1176 = load i32, ptr %54, align 4, !tbaa !9
  %1177 = load i32, ptr %46, align 4, !tbaa !9
  %1178 = icmp sle i32 %1176, %1177
  br i1 %1178, label %1179, label %1204

1179:                                             ; preds = %1175
  %1180 = load ptr, ptr %38, align 8, !tbaa !5
  %1181 = load i32, ptr %54, align 4, !tbaa !9
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds double, ptr %1180, i64 %1182
  %1184 = load double, ptr %1183, align 8, !tbaa !11
  %1185 = load ptr, ptr %38, align 8, !tbaa !5
  %1186 = load ptr, ptr %22, align 8, !tbaa !5
  %1187 = load i32, ptr %1186, align 4, !tbaa !9
  %1188 = load i32, ptr %54, align 4, !tbaa !9
  %1189 = add nsw i32 %1187, %1188
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds double, ptr %1185, i64 %1190
  %1192 = load double, ptr %1191, align 8, !tbaa !11
  %1193 = fmul double %1184, %1192
  %1194 = load ptr, ptr %38, align 8, !tbaa !5
  %1195 = load ptr, ptr %22, align 8, !tbaa !5
  %1196 = load i32, ptr %1195, align 4, !tbaa !9
  %1197 = load i32, ptr %54, align 4, !tbaa !9
  %1198 = add nsw i32 %1196, %1197
  %1199 = sext i32 %1198 to i64
  %1200 = getelementptr inbounds double, ptr %1194, i64 %1199
  store double %1193, ptr %1200, align 8, !tbaa !11
  br label %1201

1201:                                             ; preds = %1179
  %1202 = load i32, ptr %54, align 4, !tbaa !9
  %1203 = add nsw i32 %1202, 1
  store i32 %1203, ptr %54, align 4, !tbaa !9
  br label %1175, !llvm.loop !20

1204:                                             ; preds = %1175
  br label %1258

1205:                                             ; preds = %1149
  %1206 = load ptr, ptr %22, align 8, !tbaa !5
  %1207 = load i32, ptr %1206, align 4, !tbaa !9
  store i32 %1207, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1208

1208:                                             ; preds = %1234, %1205
  %1209 = load i32, ptr %54, align 4, !tbaa !9
  %1210 = load i32, ptr %46, align 4, !tbaa !9
  %1211 = icmp sle i32 %1209, %1210
  br i1 %1211, label %1212, label %1237

1212:                                             ; preds = %1208
  %1213 = load ptr, ptr %38, align 8, !tbaa !5
  %1214 = load i32, ptr %54, align 4, !tbaa !9
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds double, ptr %1213, i64 %1215
  %1217 = load double, ptr %1216, align 8, !tbaa !11
  %1218 = load ptr, ptr %38, align 8, !tbaa !5
  %1219 = load ptr, ptr %22, align 8, !tbaa !5
  %1220 = load i32, ptr %1219, align 4, !tbaa !9
  %1221 = load i32, ptr %54, align 4, !tbaa !9
  %1222 = add nsw i32 %1220, %1221
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds double, ptr %1218, i64 %1223
  %1225 = load double, ptr %1224, align 8, !tbaa !11
  %1226 = fmul double %1217, %1225
  %1227 = load ptr, ptr %38, align 8, !tbaa !5
  %1228 = load ptr, ptr %22, align 8, !tbaa !5
  %1229 = load i32, ptr %1228, align 4, !tbaa !9
  %1230 = load i32, ptr %54, align 4, !tbaa !9
  %1231 = add nsw i32 %1229, %1230
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds double, ptr %1227, i64 %1232
  store double %1226, ptr %1233, align 8, !tbaa !11
  br label %1234

1234:                                             ; preds = %1212
  %1235 = load i32, ptr %54, align 4, !tbaa !9
  %1236 = add nsw i32 %1235, 1
  store i32 %1236, ptr %54, align 4, !tbaa !9
  br label %1208, !llvm.loop !21

1237:                                             ; preds = %1208
  %1238 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  %1239 = load ptr, ptr %22, align 8, !tbaa !5
  %1240 = load ptr, ptr %27, align 8, !tbaa !5
  %1241 = getelementptr inbounds double, ptr %1240, i64 1
  %1242 = load ptr, ptr %28, align 8, !tbaa !5
  %1243 = getelementptr inbounds double, ptr %1242, i64 1
  %1244 = load ptr, ptr %29, align 8, !tbaa !5
  %1245 = getelementptr inbounds double, ptr %1244, i64 1
  %1246 = load ptr, ptr %30, align 8, !tbaa !5
  %1247 = getelementptr inbounds double, ptr %1246, i64 1
  %1248 = load ptr, ptr %31, align 8, !tbaa !5
  %1249 = getelementptr inbounds i32, ptr %1248, i64 1
  %1250 = load ptr, ptr %38, align 8, !tbaa !5
  %1251 = load ptr, ptr %22, align 8, !tbaa !5
  %1252 = load i32, ptr %1251, align 4, !tbaa !9
  %1253 = add nsw i32 %1252, 1
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds double, ptr %1250, i64 %1254
  %1256 = load ptr, ptr %22, align 8, !tbaa !5
  %1257 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dgttrs_(ptr noundef %1238, ptr noundef %1239, ptr noundef @c__1, ptr noundef %1241, ptr noundef %1243, ptr noundef %1245, ptr noundef %1247, ptr noundef %1249, ptr noundef %1255, ptr noundef %1256, ptr noundef %1257)
  br label %1258

1258:                                             ; preds = %1237, %1204
  br label %1125

1259:                                             ; preds = %1125
  store double 0.000000e+00, ptr %64, align 8, !tbaa !11
  %1260 = load ptr, ptr %22, align 8, !tbaa !5
  %1261 = load i32, ptr %1260, align 4, !tbaa !9
  store i32 %1261, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1262

1262:                                             ; preds = %1295, %1259
  %1263 = load i32, ptr %54, align 4, !tbaa !9
  %1264 = load i32, ptr %46, align 4, !tbaa !9
  %1265 = icmp sle i32 %1263, %1264
  br i1 %1265, label %1266, label %1298

1266:                                             ; preds = %1262
  %1267 = load double, ptr %64, align 8, !tbaa !11
  store double %1267, ptr %48, align 8, !tbaa !11
  %1268 = load ptr, ptr %34, align 8, !tbaa !5
  %1269 = load i32, ptr %54, align 4, !tbaa !9
  %1270 = load i32, ptr %55, align 4, !tbaa !9
  %1271 = load i32, ptr %43, align 4, !tbaa !9
  %1272 = mul nsw i32 %1270, %1271
  %1273 = add nsw i32 %1269, %1272
  %1274 = sext i32 %1273 to i64
  %1275 = getelementptr inbounds double, ptr %1268, i64 %1274
  %1276 = load double, ptr %1275, align 8, !tbaa !11
  store double %1276, ptr %47, align 8, !tbaa !11
  %1277 = load double, ptr %47, align 8, !tbaa !11
  %1278 = fcmp oge double %1277, 0.000000e+00
  br i1 %1278, label %1279, label %1281

1279:                                             ; preds = %1266
  %1280 = load double, ptr %47, align 8, !tbaa !11
  br label %1284

1281:                                             ; preds = %1266
  %1282 = load double, ptr %47, align 8, !tbaa !11
  %1283 = fneg double %1282
  br label %1284

1284:                                             ; preds = %1281, %1279
  %1285 = phi double [ %1280, %1279 ], [ %1283, %1281 ]
  store double %1285, ptr %49, align 8, !tbaa !11
  %1286 = load double, ptr %48, align 8, !tbaa !11
  %1287 = load double, ptr %49, align 8, !tbaa !11
  %1288 = fcmp oge double %1286, %1287
  br i1 %1288, label %1289, label %1291

1289:                                             ; preds = %1284
  %1290 = load double, ptr %48, align 8, !tbaa !11
  br label %1293

1291:                                             ; preds = %1284
  %1292 = load double, ptr %49, align 8, !tbaa !11
  br label %1293

1293:                                             ; preds = %1291, %1289
  %1294 = phi double [ %1290, %1289 ], [ %1292, %1291 ]
  store double %1294, ptr %64, align 8, !tbaa !11
  br label %1295

1295:                                             ; preds = %1293
  %1296 = load i32, ptr %54, align 4, !tbaa !9
  %1297 = add nsw i32 %1296, 1
  store i32 %1297, ptr %54, align 4, !tbaa !9
  br label %1262, !llvm.loop !22

1298:                                             ; preds = %1262
  %1299 = load double, ptr %64, align 8, !tbaa !11
  %1300 = fcmp une double %1299, 0.000000e+00
  br i1 %1300, label %1301, label %1309

1301:                                             ; preds = %1298
  %1302 = load double, ptr %64, align 8, !tbaa !11
  %1303 = load ptr, ptr %36, align 8, !tbaa !5
  %1304 = load i32, ptr %55, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1303, i64 %1305
  %1307 = load double, ptr %1306, align 8, !tbaa !11
  %1308 = fdiv double %1307, %1302
  store double %1308, ptr %1306, align 8, !tbaa !11
  br label %1309

1309:                                             ; preds = %1301, %1298
  br label %1310

1310:                                             ; preds = %1309
  %1311 = load i32, ptr %55, align 4, !tbaa !9
  %1312 = add nsw i32 %1311, 1
  store i32 %1312, ptr %55, align 4, !tbaa !9
  br label %230, !llvm.loop !23

1313:                                             ; preds = %230
  store i32 1, ptr %66, align 4
  br label %1314

1314:                                             ; preds = %1313, %208, %176
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

declare void @daxpy_(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) #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!7, !7, i64 0}
!16 = distinct !{!16, !14}
!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}


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

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

41:                                               ; preds = %20
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not467 = icmp eq i32 %42, 0
  br i1 %.not467, label %43, label %45

43:                                               ; preds = %41
  %44 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not468 = icmp eq i32 %44, 0
  br i1 %.not468, label %.thread.sink.split, label %45

45:                                               ; preds = %43, %41, %20
  %46 = load i32, ptr %1, align 4, !tbaa !5
  %47 = icmp slt i32 %46, 0
  br i1 %47, label %.thread.sink.split, label %48

48:                                               ; preds = %45
  %49 = load i32, ptr %2, align 4, !tbaa !5
  %50 = icmp slt i32 %49, 0
  br i1 %50, label %.thread.sink.split, label %51

51:                                               ; preds = %48
  %52 = load i32, ptr %12, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %46, i32 1)
  %53 = icmp slt i32 %52, %spec.select
  br i1 %53, label %.thread.sink.split, label %54

54:                                               ; preds = %51
  %55 = load i32, ptr %14, align 4, !tbaa !5
  %56 = icmp slt i32 %55, %spec.select
  br i1 %56, label %.thread.sink.split, label %57

57:                                               ; preds = %54
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  %.not469 = icmp eq i32 %.pr, 0
  br i1 %.not469, label %61, label %.thread

.thread.sink.split:                               ; preds = %54, %51, %48, %45, %43
  %.sink = phi i32 [ -1, %43 ], [ -2, %45 ], [ -3, %48 ], [ -13, %51 ], [ -15, %54 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %57
  %58 = phi i32 [ %.pr, %57 ], [ %.sink, %.thread.sink.split ]
  %59 = sub nsw i32 0, %58
  store i32 %59, ptr %23, align 4, !tbaa !5
  %60 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %23, i32 noundef 6) #5
  br label %.loopexit

61:                                               ; preds = %57
  %62 = icmp eq i32 %46, 0
  %.not481539 = icmp eq i32 %49, 0
  br i1 %62, label %64, label %63

63:                                               ; preds = %61
  br i1 %.not481539, label %.loopexit, label %87

64:                                               ; preds = %61
  br i1 %.not481539, label %.loopexit, label %.lr.ph542.preheader

.lr.ph542.preheader:                              ; preds = %64
  %65 = add nuw i32 %49, 1
  %wide.trip.count582 = zext i32 %65 to i64
  %66 = zext nneg i32 %49 to i64
  %min.iters.check820 = icmp ult i32 %49, 4
  %67 = sub i64 %22, %21
  %diff.check = icmp ult i64 %67, 32
  %or.cond831 = or i1 %min.iters.check820, %diff.check
  br i1 %or.cond831, label %.lr.ph542.preheader834, label %vector.ph821

vector.ph821:                                     ; preds = %.lr.ph542.preheader
  %n.vec823 = and i64 %66, 2147483644
  %ind.end824 = or disjoint i64 %n.vec823, 1
  br label %vector.body826

vector.body826:                                   ; preds = %vector.body826, %vector.ph821
  %index827 = phi i64 [ 0, %vector.ph821 ], [ %index.next829, %vector.body826 ]
  %68 = getelementptr double, ptr %15, i64 %index827
  %69 = getelementptr inbounds i8, ptr %68, i64 16
  store <2 x double> zeroinitializer, ptr %68, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %69, align 8, !tbaa !9
  %70 = getelementptr double, ptr %16, i64 %index827
  %71 = getelementptr inbounds i8, ptr %70, i64 16
  store <2 x double> zeroinitializer, ptr %70, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %71, align 8, !tbaa !9
  %index.next829 = add nuw i64 %index827, 4
  %72 = icmp eq i64 %index.next829, %n.vec823
  br i1 %72, label %middle.block818, label %vector.body826, !llvm.loop !11

middle.block818:                                  ; preds = %vector.body826
  %cmp.n830 = icmp eq i64 %n.vec823, %66
  br i1 %cmp.n830, label %.loopexit, label %.lr.ph542.preheader834

.lr.ph542.preheader834:                           ; preds = %middle.block818, %.lr.ph542.preheader
  %indvars.iv579.ph = phi i64 [ 1, %.lr.ph542.preheader ], [ %ind.end824, %middle.block818 ]
  %73 = sub nsw i64 %wide.trip.count582, %indvars.iv579.ph
  %74 = zext nneg i32 %49 to i64
  %75 = sub nsw i64 %74, %indvars.iv579.ph
  %xtraiter850 = and i64 %73, 3
  %lcmp.mod851.not = icmp eq i64 %xtraiter850, 0
  br i1 %lcmp.mod851.not, label %.lr.ph542.prol.loopexit, label %.lr.ph542.prol

.lr.ph542.prol:                                   ; preds = %.lr.ph542.preheader834, %.lr.ph542.prol
  %indvars.iv579.prol = phi i64 [ %indvars.iv.next580.prol, %.lr.ph542.prol ], [ %indvars.iv579.ph, %.lr.ph542.preheader834 ]
  %prol.iter852 = phi i64 [ %prol.iter852.next, %.lr.ph542.prol ], [ 0, %.lr.ph542.preheader834 ]
  %76 = getelementptr inbounds double, ptr %37, i64 %indvars.iv579.prol
  store double 0.000000e+00, ptr %76, align 8, !tbaa !9
  %77 = getelementptr inbounds double, ptr %38, i64 %indvars.iv579.prol
  store double 0.000000e+00, ptr %77, align 8, !tbaa !9
  %indvars.iv.next580.prol = add nuw nsw i64 %indvars.iv579.prol, 1
  %prol.iter852.next = add i64 %prol.iter852, 1
  %prol.iter852.cmp.not = icmp eq i64 %prol.iter852.next, %xtraiter850
  br i1 %prol.iter852.cmp.not, label %.lr.ph542.prol.loopexit, label %.lr.ph542.prol, !llvm.loop !15

.lr.ph542.prol.loopexit:                          ; preds = %.lr.ph542.prol, %.lr.ph542.preheader834
  %indvars.iv579.unr = phi i64 [ %indvars.iv579.ph, %.lr.ph542.preheader834 ], [ %indvars.iv.next580.prol, %.lr.ph542.prol ]
  %78 = icmp ult i64 %75, 3
  br i1 %78, label %.loopexit, label %.lr.ph542

.lr.ph542:                                        ; preds = %.lr.ph542.prol.loopexit, %.lr.ph542
  %indvars.iv579 = phi i64 [ %indvars.iv.next580.3, %.lr.ph542 ], [ %indvars.iv579.unr, %.lr.ph542.prol.loopexit ]
  %79 = getelementptr inbounds double, ptr %37, i64 %indvars.iv579
  store double 0.000000e+00, ptr %79, align 8, !tbaa !9
  %80 = getelementptr inbounds double, ptr %38, i64 %indvars.iv579
  store double 0.000000e+00, ptr %80, align 8, !tbaa !9
  %81 = getelementptr double, ptr %15, i64 %indvars.iv579
  store double 0.000000e+00, ptr %81, align 8, !tbaa !9
  %82 = getelementptr double, ptr %16, i64 %indvars.iv579
  store double 0.000000e+00, ptr %82, align 8, !tbaa !9
  %indvars.iv.next580.1 = add nuw nsw i64 %indvars.iv579, 2
  %83 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next580.1
  store double 0.000000e+00, ptr %83, align 8, !tbaa !9
  %84 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next580.1
  store double 0.000000e+00, ptr %84, align 8, !tbaa !9
  %indvars.iv.next580.2 = add nuw nsw i64 %indvars.iv579, 3
  %85 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next580.2
  store double 0.000000e+00, ptr %85, align 8, !tbaa !9
  %86 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next580.2
  store double 0.000000e+00, ptr %86, align 8, !tbaa !9
  %indvars.iv.next580.3 = add nuw nsw i64 %indvars.iv579, 4
  %exitcond583.not.3 = icmp eq i64 %indvars.iv.next580.3, %wide.trip.count582
  br i1 %exitcond583.not.3, label %.loopexit, label %.lr.ph542, !llvm.loop !17

87:                                               ; preds = %63
  %. = select i1 %.not, i8 84, i8 78
  %.483 = select i1 %.not, i8 78, i8 84
  store i8 %., ptr %26, align 1, !tbaa !18
  store i8 %.483, ptr %27, align 1, !tbaa !18
  %88 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  %89 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %90 = fmul double %89, 4.000000e+00
  %91 = fdiv double %90, %88
  %92 = load i32, ptr %2, align 4, !tbaa !5
  %invariant.gep535 = getelementptr i8, ptr %33, i64 8
  %.not471537 = icmp slt i32 %92, 1
  br i1 %.not471537, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %87
  %93 = fmul double %88, 4.000000e+00
  %94 = sext i32 %31 to i64
  %95 = sext i32 %34 to i64
  %96 = zext nneg i32 %92 to i64
  %scevgep673 = getelementptr i8, ptr %17, i64 -8
  %scevgep675 = getelementptr i8, ptr %17, i64 -8
  %scevgep682 = getelementptr i8, ptr %17, i64 -8
  %scevgep684 = getelementptr i8, ptr %17, i64 -8
  %scevgep707 = getelementptr i8, ptr %17, i64 8
  %scevgep708 = getelementptr i8, ptr %17, i64 -8
  %97 = add nsw i64 %94, %32
  %98 = shl nsw i64 %97, 3
  %99 = shl nsw i64 %94, 3
  %scevgep713 = getelementptr i8, ptr %5, i64 -16
  %100 = add nsw i64 %95, %35
  %101 = shl nsw i64 %100, 3
  %102 = shl nsw i64 %95, 3
  %scevgep717 = getelementptr i8, ptr %4, i64 8
  %scevgep718 = getelementptr i8, ptr %4, i64 -8
  %scevgep720 = getelementptr i8, ptr %3, i64 8
  %scevgep721 = getelementptr i8, ptr %3, i64 -8
  %scevgep762 = getelementptr i8, ptr %17, i64 8
  %scevgep763 = getelementptr i8, ptr %17, i64 -8
  %103 = add nsw i64 %94, %32
  %104 = shl nsw i64 %103, 3
  %105 = shl nsw i64 %94, 3
  %scevgep768 = getelementptr i8, ptr %3, i64 -16
  %106 = add nsw i64 %95, %35
  %107 = shl nsw i64 %106, 3
  %108 = shl nsw i64 %95, 3
  %scevgep772 = getelementptr i8, ptr %4, i64 8
  %scevgep773 = getelementptr i8, ptr %4, i64 -8
  %scevgep775 = getelementptr i8, ptr %5, i64 8
  %scevgep776 = getelementptr i8, ptr %5, i64 -8
  %109 = getelementptr i8, ptr %11, i64 %104
  %110 = getelementptr i8, ptr %109, i64 16
  %111 = getelementptr i8, ptr %11, i64 %104
  %112 = getelementptr i8, ptr %13, i64 %107
  %113 = getelementptr i8, ptr %112, i64 8
  %114 = getelementptr i8, ptr %11, i64 %98
  %115 = getelementptr i8, ptr %114, i64 16
  %116 = getelementptr i8, ptr %11, i64 %98
  %117 = getelementptr i8, ptr %13, i64 %101
  %118 = getelementptr i8, ptr %117, i64 8
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge533.thread
  %indvar = phi i64 [ 0, %.preheader.lr.ph ], [ %indvar.next, %._crit_edge533.thread ]
  %indvars.iv576 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next577, %._crit_edge533.thread ]
  %119 = mul i64 %105, %indvar
  %scevgep765 = getelementptr i8, ptr %110, i64 %119
  %scevgep766 = getelementptr i8, ptr %111, i64 %119
  %120 = mul i64 %108, %indvar
  %scevgep770 = getelementptr i8, ptr %113, i64 %120
  %121 = mul i64 %99, %indvar
  %scevgep710 = getelementptr i8, ptr %115, i64 %121
  %scevgep711 = getelementptr i8, ptr %116, i64 %121
  %122 = mul i64 %102, %indvar
  %scevgep715 = getelementptr i8, ptr %118, i64 %122
  %123 = getelementptr inbounds double, ptr %38, i64 %indvars.iv576
  %124 = mul nsw i64 %indvars.iv576, %94
  %gep536 = getelementptr double, ptr %invariant.gep535, i64 %124
  %125 = mul nsw i64 %indvars.iv576, %95
  %126 = getelementptr double, ptr %36, i64 %125
  %127 = getelementptr i8, ptr %126, i64 8
  %128 = getelementptr i8, ptr %126, i64 16
  %invariant.gep = getelementptr double, ptr %33, i64 %124
  %invariant.gep595 = getelementptr double, ptr %36, i64 %125
  %invariant.gep597 = getelementptr double, ptr %36, i64 %125
  %invariant.gep599 = getelementptr double, ptr %36, i64 %125
  %invariant.gep601 = getelementptr double, ptr %33, i64 %124
  %invariant.gep603 = getelementptr double, ptr %36, i64 %125
  %invariant.gep605 = getelementptr double, ptr %36, i64 %125
  %invariant.gep607 = getelementptr double, ptr %36, i64 %125
  %invariant.gep856 = getelementptr i8, ptr %invariant.gep599, i64 24
  %invariant.gep858 = getelementptr i8, ptr %invariant.gep607, i64 24
  %.sink636 = getelementptr double, ptr %36, i64 %125
  %.sink650 = getelementptr double, ptr %36, i64 %125
  %.sink662 = getelementptr double, ptr %33, i64 %124
  br label %129

129:                                              ; preds = %.preheader, %339
  %.0451 = phi i32 [ %344, %339 ], [ 1, %.preheader ]
  %.0 = phi double [ %343, %339 ], [ 3.000000e+00, %.preheader ]
  %130 = load i32, ptr %1, align 4, !tbaa !5
  %131 = sext i32 %130 to i64
  %gep = getelementptr double, ptr %17, i64 %131
  call void @dcopy_(ptr noundef nonnull %1, ptr noundef %gep536, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %132 = load i32, ptr %1, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %gep503 = getelementptr double, ptr %17, i64 %133
  call void @dlagtm_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b18, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %127, ptr noundef nonnull %14, ptr noundef nonnull @c_b19, ptr noundef %gep503, ptr noundef nonnull %1) #5
  %134 = load i32, ptr %1, align 4, !tbaa !5
  %135 = icmp eq i32 %134, 1
  %136 = load double, ptr %gep536, align 8, !tbaa !9
  %137 = fcmp oge double %136, 0.000000e+00
  %138 = fneg double %136
  %139 = select i1 %137, double %136, double %138
  %140 = load double, ptr %4, align 8, !tbaa !9
  %141 = load double, ptr %127, align 8, !tbaa !9
  %142 = fmul double %140, %141
  %143 = fcmp oge double %142, 0.000000e+00
  %144 = fneg double %142
  %145 = select i1 %143, double %142, double %144
  %146 = fadd double %139, %145
  br i1 %.not, label %215, label %147

147:                                              ; preds = %129
  br i1 %135, label %.lr.ph500.preheader.sink.split, label %148

148:                                              ; preds = %147
  %149 = load double, ptr %5, align 8, !tbaa !9
  %150 = load double, ptr %128, align 8, !tbaa !9
  %151 = fmul double %149, %150
  %152 = fcmp oge double %151, 0.000000e+00
  %153 = fneg double %151
  %154 = select i1 %152, double %151, double %153
  %155 = fadd double %146, %154
  store double %155, ptr %17, align 8, !tbaa !9
  %.not473.not489 = icmp sgt i32 %134, 2
  br i1 %.not473.not489, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %148
  %wide.trip.count = zext nneg i32 %134 to i64
  %156 = add nsw i64 %wide.trip.count, -2
  %min.iters.check799 = icmp ult i64 %156, 4
  br i1 %min.iters.check799, label %.lr.ph.preheader838, label %vector.memcheck761

vector.memcheck761:                               ; preds = %.lr.ph.preheader
  %157 = shl nuw nsw i64 %wide.trip.count, 3
  %scevgep764 = getelementptr i8, ptr %scevgep763, i64 %157
  %scevgep767 = getelementptr i8, ptr %scevgep766, i64 %157
  %scevgep769 = getelementptr i8, ptr %scevgep768, i64 %157
  %scevgep771 = getelementptr i8, ptr %scevgep770, i64 %157
  %scevgep774 = getelementptr i8, ptr %scevgep773, i64 %157
  %scevgep777 = getelementptr i8, ptr %scevgep776, i64 %157
  %bound0778 = icmp ult ptr %scevgep762, %scevgep767
  %bound1779 = icmp ult ptr %scevgep765, %scevgep764
  %found.conflict780 = and i1 %bound0778, %bound1779
  %bound0781 = icmp ult ptr %scevgep762, %scevgep769
  %bound1782 = icmp ugt ptr %scevgep764, %3
  %found.conflict783 = and i1 %bound0781, %bound1782
  %conflict.rdx784 = or i1 %found.conflict780, %found.conflict783
  %bound0785 = icmp ult ptr %scevgep762, %scevgep771
  %bound1786 = icmp ult ptr %scevgep770, %scevgep764
  %found.conflict787 = and i1 %bound0785, %bound1786
  %conflict.rdx788 = or i1 %conflict.rdx784, %found.conflict787
  %bound0789 = icmp ult ptr %scevgep762, %scevgep774
  %bound1790 = icmp ult ptr %scevgep772, %scevgep764
  %found.conflict791 = and i1 %bound0789, %bound1790
  %conflict.rdx792 = or i1 %conflict.rdx788, %found.conflict791
  %bound0793 = icmp ult ptr %scevgep762, %scevgep777
  %bound1794 = icmp ult ptr %scevgep775, %scevgep764
  %found.conflict795 = and i1 %bound0793, %bound1794
  %conflict.rdx796 = or i1 %conflict.rdx792, %found.conflict795
  br i1 %conflict.rdx796, label %.lr.ph.preheader838, label %vector.ph800

vector.ph800:                                     ; preds = %vector.memcheck761
  %n.vec802 = and i64 %156, -2
  %ind.end803 = add nsw i64 %n.vec802, 2
  br label %vector.body805

vector.body805:                                   ; preds = %vector.body805, %vector.ph800
  %index806 = phi i64 [ 0, %vector.ph800 ], [ %index.next815, %vector.body805 ]
  %offset.idx807 = add i64 %index806, 2
  %158 = getelementptr double, ptr %invariant.gep, i64 %offset.idx807
  %wide.load808 = load <2 x double>, ptr %158, align 8, !tbaa !9, !alias.scope !19
  %159 = fcmp oge <2 x double> %wide.load808, zeroinitializer
  %160 = fneg <2 x double> %wide.load808
  %161 = select <2 x i1> %159, <2 x double> %wide.load808, <2 x double> %160
  %162 = or disjoint i64 %index806, 1
  %163 = getelementptr double, ptr %3, i64 %index806
  %wide.load809 = load <2 x double>, ptr %163, align 8, !tbaa !9, !alias.scope !22
  %164 = getelementptr double, ptr %invariant.gep595, i64 %162
  %wide.load810 = load <2 x double>, ptr %164, align 8, !tbaa !9, !alias.scope !24
  %165 = fmul <2 x double> %wide.load809, %wide.load810
  %166 = fcmp oge <2 x double> %165, zeroinitializer
  %167 = fneg <2 x double> %165
  %168 = select <2 x i1> %166, <2 x double> %165, <2 x double> %167
  %169 = fadd <2 x double> %161, %168
  %170 = getelementptr inbounds double, ptr %29, i64 %offset.idx807
  %wide.load811 = load <2 x double>, ptr %170, align 8, !tbaa !9, !alias.scope !26
  %171 = getelementptr double, ptr %invariant.gep597, i64 %offset.idx807
  %wide.load812 = load <2 x double>, ptr %171, align 8, !tbaa !9, !alias.scope !24
  %172 = fmul <2 x double> %wide.load811, %wide.load812
  %173 = fcmp oge <2 x double> %172, zeroinitializer
  %174 = fneg <2 x double> %172
  %175 = select <2 x i1> %173, <2 x double> %172, <2 x double> %174
  %176 = fadd <2 x double> %169, %175
  %177 = getelementptr inbounds double, ptr %30, i64 %offset.idx807
  %wide.load813 = load <2 x double>, ptr %177, align 8, !tbaa !9, !alias.scope !28
  %gep857 = getelementptr double, ptr %invariant.gep856, i64 %index806
  %wide.load814 = load <2 x double>, ptr %gep857, align 8, !tbaa !9, !alias.scope !24
  %178 = fmul <2 x double> %wide.load813, %wide.load814
  %179 = fcmp oge <2 x double> %178, zeroinitializer
  %180 = fneg <2 x double> %178
  %181 = select <2 x i1> %179, <2 x double> %178, <2 x double> %180
  %182 = fadd <2 x double> %176, %181
  %183 = getelementptr inbounds double, ptr %39, i64 %offset.idx807
  store <2 x double> %182, ptr %183, align 8, !tbaa !9, !alias.scope !30, !noalias !32
  %index.next815 = add nuw i64 %index806, 2
  %184 = icmp eq i64 %index.next815, %n.vec802
  br i1 %184, label %middle.block797, label %vector.body805, !llvm.loop !33

middle.block797:                                  ; preds = %vector.body805
  %cmp.n816 = icmp eq i64 %156, %n.vec802
  br i1 %cmp.n816, label %._crit_edge, label %.lr.ph.preheader838

.lr.ph.preheader838:                              ; preds = %middle.block797, %vector.memcheck761, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 2, %vector.memcheck761 ], [ 2, %.lr.ph.preheader ], [ %ind.end803, %middle.block797 ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader838, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader838 ]
  %gep594 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %185 = load double, ptr %gep594, align 8, !tbaa !9
  %186 = add nsw i64 %indvars.iv, -1
  %187 = getelementptr inbounds double, ptr %28, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !9
  %gep596 = getelementptr double, ptr %invariant.gep595, i64 %186
  %189 = load double, ptr %gep596, align 8, !tbaa !9
  %190 = fmul double %188, %189
  %191 = insertelement <2 x double> poison, double %185, i64 0
  %192 = insertelement <2 x double> %191, double %190, i64 1
  %193 = fcmp oge <2 x double> %192, zeroinitializer
  %194 = fneg <2 x double> %192
  %195 = select <2 x i1> %193, <2 x double> %192, <2 x double> %194
  %shift = shufflevector <2 x double> %195, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %196 = fadd <2 x double> %195, %shift
  %197 = extractelement <2 x double> %196, i64 0
  %198 = getelementptr inbounds double, ptr %29, i64 %indvars.iv
  %199 = load double, ptr %198, align 8, !tbaa !9
  %gep598 = getelementptr double, ptr %invariant.gep597, i64 %indvars.iv
  %200 = load double, ptr %gep598, align 8, !tbaa !9
  %201 = fmul double %199, %200
  %202 = fcmp oge double %201, 0.000000e+00
  %203 = fneg double %201
  %204 = select i1 %202, double %201, double %203
  %205 = fadd double %197, %204
  %206 = getelementptr inbounds double, ptr %30, i64 %indvars.iv
  %207 = load double, ptr %206, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep600 = getelementptr double, ptr %invariant.gep599, i64 %indvars.iv.next
  %208 = load double, ptr %gep600, align 8, !tbaa !9
  %209 = fmul double %207, %208
  %210 = fcmp oge double %209, 0.000000e+00
  %211 = fneg double %209
  %212 = select i1 %210, double %209, double %211
  %213 = fadd double %205, %212
  %214 = getelementptr inbounds double, ptr %39, i64 %indvars.iv
  store double %213, ptr %214, align 8, !tbaa !9
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !34

215:                                              ; preds = %129
  br i1 %135, label %.lr.ph500.preheader.sink.split, label %216

216:                                              ; preds = %215
  %217 = load double, ptr %3, align 8, !tbaa !9
  %218 = load double, ptr %128, align 8, !tbaa !9
  %219 = fmul double %217, %218
  %220 = fcmp oge double %219, 0.000000e+00
  %221 = fneg double %219
  %222 = select i1 %220, double %219, double %221
  %223 = fadd double %146, %222
  store double %223, ptr %17, align 8, !tbaa !9
  %.not472.not491 = icmp sgt i32 %134, 2
  br i1 %.not472.not491, label %.lr.ph494.preheader, label %._crit_edge

.lr.ph494.preheader:                              ; preds = %216
  %wide.trip.count549 = zext nneg i32 %134 to i64
  %224 = add nsw i64 %wide.trip.count549, -2
  %min.iters.check743 = icmp ult i64 %224, 4
  br i1 %min.iters.check743, label %.lr.ph494.preheader837, label %vector.memcheck706

vector.memcheck706:                               ; preds = %.lr.ph494.preheader
  %225 = shl nuw nsw i64 %wide.trip.count549, 3
  %scevgep709 = getelementptr i8, ptr %scevgep708, i64 %225
  %scevgep712 = getelementptr i8, ptr %scevgep711, i64 %225
  %scevgep714 = getelementptr i8, ptr %scevgep713, i64 %225
  %scevgep716 = getelementptr i8, ptr %scevgep715, i64 %225
  %scevgep719 = getelementptr i8, ptr %scevgep718, i64 %225
  %scevgep722 = getelementptr i8, ptr %scevgep721, i64 %225
  %bound0723 = icmp ult ptr %scevgep707, %scevgep712
  %bound1724 = icmp ult ptr %scevgep710, %scevgep709
  %found.conflict725 = and i1 %bound0723, %bound1724
  %bound0726 = icmp ult ptr %scevgep707, %scevgep714
  %bound1727 = icmp ugt ptr %scevgep709, %5
  %found.conflict728 = and i1 %bound0726, %bound1727
  %conflict.rdx = or i1 %found.conflict725, %found.conflict728
  %bound0729 = icmp ult ptr %scevgep707, %scevgep716
  %bound1730 = icmp ult ptr %scevgep715, %scevgep709
  %found.conflict731 = and i1 %bound0729, %bound1730
  %conflict.rdx732 = or i1 %conflict.rdx, %found.conflict731
  %bound0733 = icmp ult ptr %scevgep707, %scevgep719
  %bound1734 = icmp ult ptr %scevgep717, %scevgep709
  %found.conflict735 = and i1 %bound0733, %bound1734
  %conflict.rdx736 = or i1 %conflict.rdx732, %found.conflict735
  %bound0737 = icmp ult ptr %scevgep707, %scevgep722
  %bound1738 = icmp ult ptr %scevgep720, %scevgep709
  %found.conflict739 = and i1 %bound0737, %bound1738
  %conflict.rdx740 = or i1 %conflict.rdx736, %found.conflict739
  br i1 %conflict.rdx740, label %.lr.ph494.preheader837, label %vector.ph744

vector.ph744:                                     ; preds = %vector.memcheck706
  %n.vec746 = and i64 %224, -2
  %ind.end747 = add nsw i64 %n.vec746, 2
  br label %vector.body749

vector.body749:                                   ; preds = %vector.body749, %vector.ph744
  %index750 = phi i64 [ 0, %vector.ph744 ], [ %index.next759, %vector.body749 ]
  %offset.idx751 = add i64 %index750, 2
  %226 = getelementptr double, ptr %invariant.gep601, i64 %offset.idx751
  %wide.load752 = load <2 x double>, ptr %226, align 8, !tbaa !9, !alias.scope !35
  %227 = fcmp oge <2 x double> %wide.load752, zeroinitializer
  %228 = fneg <2 x double> %wide.load752
  %229 = select <2 x i1> %227, <2 x double> %wide.load752, <2 x double> %228
  %230 = or disjoint i64 %index750, 1
  %231 = getelementptr double, ptr %5, i64 %index750
  %wide.load753 = load <2 x double>, ptr %231, align 8, !tbaa !9, !alias.scope !38
  %232 = getelementptr double, ptr %invariant.gep603, i64 %230
  %wide.load754 = load <2 x double>, ptr %232, align 8, !tbaa !9, !alias.scope !40
  %233 = fmul <2 x double> %wide.load753, %wide.load754
  %234 = fcmp oge <2 x double> %233, zeroinitializer
  %235 = fneg <2 x double> %233
  %236 = select <2 x i1> %234, <2 x double> %233, <2 x double> %235
  %237 = fadd <2 x double> %229, %236
  %238 = getelementptr inbounds double, ptr %29, i64 %offset.idx751
  %wide.load755 = load <2 x double>, ptr %238, align 8, !tbaa !9, !alias.scope !42
  %239 = getelementptr double, ptr %invariant.gep605, i64 %offset.idx751
  %wide.load756 = load <2 x double>, ptr %239, align 8, !tbaa !9, !alias.scope !40
  %240 = fmul <2 x double> %wide.load755, %wide.load756
  %241 = fcmp oge <2 x double> %240, zeroinitializer
  %242 = fneg <2 x double> %240
  %243 = select <2 x i1> %241, <2 x double> %240, <2 x double> %242
  %244 = fadd <2 x double> %237, %243
  %245 = getelementptr inbounds double, ptr %28, i64 %offset.idx751
  %wide.load757 = load <2 x double>, ptr %245, align 8, !tbaa !9, !alias.scope !44
  %gep859 = getelementptr double, ptr %invariant.gep858, i64 %index750
  %wide.load758 = load <2 x double>, ptr %gep859, align 8, !tbaa !9, !alias.scope !40
  %246 = fmul <2 x double> %wide.load757, %wide.load758
  %247 = fcmp oge <2 x double> %246, zeroinitializer
  %248 = fneg <2 x double> %246
  %249 = select <2 x i1> %247, <2 x double> %246, <2 x double> %248
  %250 = fadd <2 x double> %244, %249
  %251 = getelementptr inbounds double, ptr %39, i64 %offset.idx751
  store <2 x double> %250, ptr %251, align 8, !tbaa !9, !alias.scope !46, !noalias !48
  %index.next759 = add nuw i64 %index750, 2
  %252 = icmp eq i64 %index.next759, %n.vec746
  br i1 %252, label %middle.block741, label %vector.body749, !llvm.loop !49

middle.block741:                                  ; preds = %vector.body749
  %cmp.n760 = icmp eq i64 %224, %n.vec746
  br i1 %cmp.n760, label %._crit_edge, label %.lr.ph494.preheader837

.lr.ph494.preheader837:                           ; preds = %middle.block741, %vector.memcheck706, %.lr.ph494.preheader
  %indvars.iv546.ph = phi i64 [ 2, %vector.memcheck706 ], [ 2, %.lr.ph494.preheader ], [ %ind.end747, %middle.block741 ]
  br label %.lr.ph494

.lr.ph494:                                        ; preds = %.lr.ph494.preheader837, %.lr.ph494
  %indvars.iv546 = phi i64 [ %indvars.iv.next547, %.lr.ph494 ], [ %indvars.iv546.ph, %.lr.ph494.preheader837 ]
  %gep602 = getelementptr double, ptr %invariant.gep601, i64 %indvars.iv546
  %253 = load double, ptr %gep602, align 8, !tbaa !9
  %254 = add nsw i64 %indvars.iv546, -1
  %255 = getelementptr inbounds double, ptr %30, i64 %254
  %256 = load double, ptr %255, align 8, !tbaa !9
  %gep604 = getelementptr double, ptr %invariant.gep603, i64 %254
  %257 = load double, ptr %gep604, align 8, !tbaa !9
  %258 = fmul double %256, %257
  %259 = insertelement <2 x double> poison, double %253, i64 0
  %260 = insertelement <2 x double> %259, double %258, i64 1
  %261 = fcmp oge <2 x double> %260, zeroinitializer
  %262 = fneg <2 x double> %260
  %263 = select <2 x i1> %261, <2 x double> %260, <2 x double> %262
  %shift832 = shufflevector <2 x double> %263, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %264 = fadd <2 x double> %263, %shift832
  %265 = extractelement <2 x double> %264, i64 0
  %266 = getelementptr inbounds double, ptr %29, i64 %indvars.iv546
  %267 = load double, ptr %266, align 8, !tbaa !9
  %gep606 = getelementptr double, ptr %invariant.gep605, i64 %indvars.iv546
  %268 = load double, ptr %gep606, align 8, !tbaa !9
  %269 = fmul double %267, %268
  %270 = fcmp oge double %269, 0.000000e+00
  %271 = fneg double %269
  %272 = select i1 %270, double %269, double %271
  %273 = fadd double %265, %272
  %274 = getelementptr inbounds double, ptr %28, i64 %indvars.iv546
  %275 = load double, ptr %274, align 8, !tbaa !9
  %indvars.iv.next547 = add nuw nsw i64 %indvars.iv546, 1
  %gep608 = getelementptr double, ptr %invariant.gep607, i64 %indvars.iv.next547
  %276 = load double, ptr %gep608, align 8, !tbaa !9
  %277 = fmul double %275, %276
  %278 = fcmp oge double %277, 0.000000e+00
  %279 = fneg double %277
  %280 = select i1 %278, double %277, double %279
  %281 = fadd double %273, %280
  %282 = getelementptr inbounds double, ptr %39, i64 %indvars.iv546
  store double %281, ptr %282, align 8, !tbaa !9
  %exitcond550.not = icmp eq i64 %indvars.iv.next547, %wide.trip.count549
  br i1 %exitcond550.not, label %._crit_edge, label %.lr.ph494, !llvm.loop !50

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph494, %middle.block797, %middle.block741, %216, %148
  %.sink653 = phi ptr [ %28, %148 ], [ %30, %216 ], [ %30, %middle.block741 ], [ %28, %middle.block797 ], [ %30, %.lr.ph494 ], [ %28, %.lr.ph ]
  %283 = sext i32 %134 to i64
  %284 = getelementptr double, ptr %.sink662, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !9
  %286 = add nsw i32 %134, -1
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds double, ptr %.sink653, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !9
  %290 = getelementptr double, ptr %.sink650, i64 %287
  %291 = load double, ptr %290, align 8, !tbaa !9
  %292 = fmul double %289, %291
  %293 = insertelement <2 x double> poison, double %285, i64 0
  %294 = insertelement <2 x double> %293, double %292, i64 1
  %295 = fcmp oge <2 x double> %294, zeroinitializer
  %296 = fneg <2 x double> %294
  %297 = select <2 x i1> %295, <2 x double> %294, <2 x double> %296
  %shift833 = shufflevector <2 x double> %297, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %298 = fadd <2 x double> %297, %shift833
  %299 = extractelement <2 x double> %298, i64 0
  %300 = getelementptr inbounds double, ptr %29, i64 %283
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = getelementptr double, ptr %.sink636, i64 %283
  %303 = load double, ptr %302, align 8, !tbaa !9
  %304 = fmul double %301, %303
  %305 = fcmp oge double %304, 0.000000e+00
  %306 = fneg double %304
  %307 = select i1 %305, double %304, double %306
  %308 = fadd double %299, %307
  %309 = getelementptr inbounds double, ptr %39, i64 %283
  store double %308, ptr %309, align 8, !tbaa !9
  %.not474496 = icmp slt i32 %134, 1
  br i1 %.not474496, label %._crit_edge501, label %.lr.ph500.preheader

.lr.ph500.preheader.sink.split:                   ; preds = %215, %147
  store double %146, ptr %17, align 8, !tbaa !9
  br label %.lr.ph500.preheader

.lr.ph500.preheader:                              ; preds = %.lr.ph500.preheader.sink.split, %._crit_edge
  %310 = phi i32 [ %134, %._crit_edge ], [ 1, %.lr.ph500.preheader.sink.split ]
  %311 = zext nneg i32 %310 to i64
  %312 = add nuw i32 %310, 1
  %wide.trip.count554 = zext i32 %312 to i64
  %invariant.gep609 = getelementptr inbounds double, ptr %39, i64 %311
  %invariant.gep611 = getelementptr inbounds double, ptr %39, i64 %311
  br label %.lr.ph500

.lr.ph500:                                        ; preds = %.lr.ph500.preheader, %330
  %indvars.iv551 = phi i64 [ 1, %.lr.ph500.preheader ], [ %indvars.iv.next552, %330 ]
  %.0452498 = phi double [ 0.000000e+00, %.lr.ph500.preheader ], [ %332, %330 ]
  %313 = getelementptr inbounds double, ptr %39, i64 %indvars.iv551
  %314 = load double, ptr %313, align 8, !tbaa !9
  %315 = fcmp ogt double %314, %91
  br i1 %315, label %316, label %322

316:                                              ; preds = %.lr.ph500
  %gep612 = getelementptr inbounds double, ptr %invariant.gep611, i64 %indvars.iv551
  %317 = load double, ptr %gep612, align 8, !tbaa !9
  %318 = fcmp oge double %317, 0.000000e+00
  %319 = fneg double %317
  %320 = select i1 %318, double %317, double %319
  %321 = fdiv double %320, %314
  br label %330

322:                                              ; preds = %.lr.ph500
  %gep610 = getelementptr inbounds double, ptr %invariant.gep609, i64 %indvars.iv551
  %323 = load double, ptr %gep610, align 8, !tbaa !9
  %324 = fcmp oge double %323, 0.000000e+00
  %325 = fneg double %323
  %326 = select i1 %324, double %323, double %325
  %327 = fadd double %90, %326
  %328 = fadd double %90, %314
  %329 = fdiv double %327, %328
  br label %330

330:                                              ; preds = %316, %322
  %.sink667 = phi double [ %321, %316 ], [ %329, %322 ]
  %331 = fcmp oge double %.0452498, %.sink667
  %332 = select i1 %331, double %.0452498, double %.sink667
  %indvars.iv.next552 = add nuw nsw i64 %indvars.iv551, 1
  %exitcond555.not = icmp eq i64 %indvars.iv.next552, %wide.trip.count554
  br i1 %exitcond555.not, label %._crit_edge501, label %.lr.ph500, !llvm.loop !51

._crit_edge501:                                   ; preds = %330, %._crit_edge
  %.not474496590 = phi i1 [ true, %._crit_edge ], [ false, %330 ]
  %333 = phi i32 [ %134, %._crit_edge ], [ %310, %330 ]
  %.0452.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ %332, %330 ]
  store double %.0452.lcssa, ptr %123, align 8, !tbaa !9
  %334 = fcmp ogt double %.0452.lcssa, %88
  br i1 %334, label %335, label %345

335:                                              ; preds = %._crit_edge501
  %336 = fmul double %.0452.lcssa, 2.000000e+00
  %337 = fcmp ole double %336, %.0
  %338 = icmp ult i32 %.0451, 6
  %or.cond = select i1 %337, i1 %338, i1 false
  br i1 %or.cond, label %339, label %345

339:                                              ; preds = %335
  %340 = sext i32 %333 to i64
  %gep505 = getelementptr double, ptr %17, i64 %340
  call void @dgttrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %gep505, ptr noundef nonnull %1, ptr noundef nonnull %19) #5
  %341 = load i32, ptr %1, align 4, !tbaa !5
  %342 = sext i32 %341 to i64
  %gep507 = getelementptr double, ptr %17, i64 %342
  call void @daxpy_(ptr noundef nonnull %1, ptr noundef nonnull @c_b19, ptr noundef %gep507, ptr noundef nonnull @c__1, ptr noundef nonnull %127, ptr noundef nonnull @c__1) #5
  %343 = load double, ptr %123, align 8, !tbaa !9
  %344 = add nuw nsw i32 %.0451, 1
  br label %129

345:                                              ; preds = %335, %._crit_edge501
  br i1 %.not474496590, label %._crit_edge512, label %.lr.ph511.preheader

.lr.ph511.preheader:                              ; preds = %345
  %346 = zext nneg i32 %333 to i64
  %347 = add nuw i32 %333, 1
  %wide.trip.count559 = zext i32 %347 to i64
  %invariant.gep613 = getelementptr inbounds double, ptr %39, i64 %346
  %invariant.gep615 = getelementptr inbounds double, ptr %39, i64 %346
  br label %.lr.ph511

.lr.ph511:                                        ; preds = %.lr.ph511.preheader, %364
  %indvars.iv556 = phi i64 [ 1, %.lr.ph511.preheader ], [ %indvars.iv.next557, %364 ]
  %348 = getelementptr inbounds double, ptr %39, i64 %indvars.iv556
  %349 = load double, ptr %348, align 8, !tbaa !9
  %350 = fcmp ogt double %349, %91
  br i1 %350, label %351, label %357

351:                                              ; preds = %.lr.ph511
  %gep616 = getelementptr inbounds double, ptr %invariant.gep615, i64 %indvars.iv556
  %352 = load double, ptr %gep616, align 8, !tbaa !9
  %353 = fcmp oge double %352, 0.000000e+00
  %354 = fneg double %352
  %355 = select i1 %353, double %352, double %354
  %356 = call double @llvm.fmuladd.f64(double %93, double %349, double %355)
  br label %364

357:                                              ; preds = %.lr.ph511
  %gep614 = getelementptr inbounds double, ptr %invariant.gep613, i64 %indvars.iv556
  %358 = load double, ptr %gep614, align 8, !tbaa !9
  %359 = fcmp oge double %358, 0.000000e+00
  %360 = fneg double %358
  %361 = select i1 %359, double %358, double %360
  %362 = call double @llvm.fmuladd.f64(double %93, double %349, double %361)
  %363 = fadd double %90, %362
  br label %364

364:                                              ; preds = %351, %357
  %storemerge480 = phi double [ %363, %357 ], [ %356, %351 ]
  store double %storemerge480, ptr %348, align 8, !tbaa !9
  %indvars.iv.next557 = add nuw nsw i64 %indvars.iv556, 1
  %exitcond560.not = icmp eq i64 %indvars.iv.next557, %wide.trip.count559
  br i1 %exitcond560.not, label %._crit_edge512, label %.lr.ph511, !llvm.loop !52

._crit_edge512:                                   ; preds = %364, %345
  store i32 0, ptr %24, align 4, !tbaa !5
  %365 = getelementptr inbounds double, ptr %37, i64 %indvars.iv576
  br label %.loopexit485

.loopexit485:                                     ; preds = %.loopexit485.backedge, %._crit_edge512
  %366 = phi i32 [ %333, %._crit_edge512 ], [ %.be, %.loopexit485.backedge ]
  %367 = shl i32 %366, 1
  %368 = or disjoint i32 %367, 1
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %39, i64 %369
  %371 = sext i32 %366 to i64
  %gep523 = getelementptr double, ptr %17, i64 %371
  call void @dlacn2_(ptr noundef nonnull %1, ptr noundef nonnull %370, ptr noundef %gep523, ptr noundef %18, ptr noundef nonnull %365, ptr noundef nonnull %24, ptr noundef nonnull %25) #5
  %372 = load i32, ptr %24, align 4, !tbaa !5
  %373 = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %372, label %414 [
    i32 0, label %453
    i32 1, label %374
  ]

374:                                              ; preds = %.loopexit485
  %375 = sext i32 %373 to i64
  %gep525 = getelementptr double, ptr %17, i64 %375
  call void @dgttrs_(ptr noundef nonnull %27, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %gep525, ptr noundef nonnull %1, ptr noundef nonnull %19) #5
  %376 = load i32, ptr %1, align 4, !tbaa !5
  %.not479513 = icmp slt i32 %376, 1
  br i1 %.not479513, label %.loopexit485.backedge, label %.lr.ph516.preheader

.lr.ph516.preheader:                              ; preds = %374
  %377 = zext nneg i32 %376 to i64
  %378 = add nuw i32 %376, 1
  %wide.trip.count564 = zext i32 %378 to i64
  %invariant.gep617 = getelementptr inbounds double, ptr %39, i64 %377
  %379 = zext nneg i32 %376 to i64
  %min.iters.check691 = icmp ult i32 %376, 6
  br i1 %min.iters.check691, label %.lr.ph516.preheader836, label %vector.memcheck680

vector.memcheck680:                               ; preds = %.lr.ph516.preheader
  %380 = shl nuw nsw i64 %377, 3
  %scevgep681 = getelementptr i8, ptr %17, i64 %380
  %381 = shl nuw nsw i64 %wide.trip.count564, 3
  %382 = getelementptr i8, ptr %scevgep682, i64 %380
  %scevgep683 = getelementptr i8, ptr %382, i64 %381
  %scevgep685 = getelementptr i8, ptr %scevgep684, i64 %381
  %bound0686 = icmp ult ptr %scevgep681, %scevgep685
  %bound1687 = icmp ugt ptr %scevgep683, %17
  %found.conflict688 = and i1 %bound0686, %bound1687
  br i1 %found.conflict688, label %.lr.ph516.preheader836, label %vector.ph692

vector.ph692:                                     ; preds = %vector.memcheck680
  %n.vec694 = and i64 %379, 2147483644
  %ind.end695 = or disjoint i64 %n.vec694, 1
  br label %vector.body697

vector.body697:                                   ; preds = %vector.body697, %vector.ph692
  %index698 = phi i64 [ 0, %vector.ph692 ], [ %index.next704, %vector.body697 ]
  %offset.idx699 = or disjoint i64 %index698, 1
  %383 = getelementptr double, ptr %17, i64 %index698
  %384 = getelementptr inbounds i8, ptr %383, i64 16
  %wide.load700 = load <2 x double>, ptr %383, align 8, !tbaa !9, !alias.scope !53
  %wide.load701 = load <2 x double>, ptr %384, align 8, !tbaa !9, !alias.scope !53
  %385 = getelementptr inbounds double, ptr %invariant.gep617, i64 %offset.idx699
  %386 = getelementptr inbounds i8, ptr %385, i64 16
  %wide.load702 = load <2 x double>, ptr %385, align 8, !tbaa !9, !alias.scope !56, !noalias !53
  %wide.load703 = load <2 x double>, ptr %386, align 8, !tbaa !9, !alias.scope !56, !noalias !53
  %387 = fmul <2 x double> %wide.load700, %wide.load702
  %388 = fmul <2 x double> %wide.load701, %wide.load703
  store <2 x double> %387, ptr %385, align 8, !tbaa !9, !alias.scope !56, !noalias !53
  store <2 x double> %388, ptr %386, align 8, !tbaa !9, !alias.scope !56, !noalias !53
  %index.next704 = add nuw i64 %index698, 4
  %389 = icmp eq i64 %index.next704, %n.vec694
  br i1 %389, label %middle.block689, label %vector.body697, !llvm.loop !58

middle.block689:                                  ; preds = %vector.body697
  %cmp.n705 = icmp eq i64 %n.vec694, %379
  br i1 %cmp.n705, label %.loopexit485.backedge, label %.lr.ph516.preheader836

.loopexit485.backedge:                            ; preds = %.lr.ph516.prol.loopexit, %.lr.ph516, %middle.block689, %374, %._crit_edge521
  %.be = phi i32 [ %376, %374 ], [ %.pre.pre, %._crit_edge521 ], [ %376, %middle.block689 ], [ %376, %.lr.ph516 ], [ %376, %.lr.ph516.prol.loopexit ]
  br label %.loopexit485

.lr.ph516.preheader836:                           ; preds = %middle.block689, %vector.memcheck680, %.lr.ph516.preheader
  %indvars.iv561.ph = phi i64 [ 1, %vector.memcheck680 ], [ 1, %.lr.ph516.preheader ], [ %ind.end695, %middle.block689 ]
  %390 = sub nsw i64 %wide.trip.count564, %indvars.iv561.ph
  %391 = zext nneg i32 %376 to i64
  %392 = sub nsw i64 %391, %indvars.iv561.ph
  %xtraiter = and i64 %390, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph516.prol.loopexit, label %.lr.ph516.prol

.lr.ph516.prol:                                   ; preds = %.lr.ph516.preheader836, %.lr.ph516.prol
  %indvars.iv561.prol = phi i64 [ %indvars.iv.next562.prol, %.lr.ph516.prol ], [ %indvars.iv561.ph, %.lr.ph516.preheader836 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph516.prol ], [ 0, %.lr.ph516.preheader836 ]
  %393 = getelementptr inbounds double, ptr %39, i64 %indvars.iv561.prol
  %394 = load double, ptr %393, align 8, !tbaa !9
  %gep618.prol = getelementptr inbounds double, ptr %invariant.gep617, i64 %indvars.iv561.prol
  %395 = load double, ptr %gep618.prol, align 8, !tbaa !9
  %396 = fmul double %394, %395
  store double %396, ptr %gep618.prol, align 8, !tbaa !9
  %indvars.iv.next562.prol = add nuw nsw i64 %indvars.iv561.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph516.prol.loopexit, label %.lr.ph516.prol, !llvm.loop !59

.lr.ph516.prol.loopexit:                          ; preds = %.lr.ph516.prol, %.lr.ph516.preheader836
  %indvars.iv561.unr = phi i64 [ %indvars.iv561.ph, %.lr.ph516.preheader836 ], [ %indvars.iv.next562.prol, %.lr.ph516.prol ]
  %397 = icmp ult i64 %392, 3
  br i1 %397, label %.loopexit485.backedge, label %.lr.ph516.preheader836.new

.lr.ph516.preheader836.new:                       ; preds = %.lr.ph516.prol.loopexit
  %invariant.gep860 = getelementptr i8, ptr %invariant.gep617, i64 8
  br label %.lr.ph516

.lr.ph516:                                        ; preds = %.lr.ph516, %.lr.ph516.preheader836.new
  %indvars.iv561 = phi i64 [ %indvars.iv561.unr, %.lr.ph516.preheader836.new ], [ %indvars.iv.next562.3, %.lr.ph516 ]
  %398 = getelementptr inbounds double, ptr %39, i64 %indvars.iv561
  %399 = load double, ptr %398, align 8, !tbaa !9
  %gep618 = getelementptr inbounds double, ptr %invariant.gep617, i64 %indvars.iv561
  %400 = load double, ptr %gep618, align 8, !tbaa !9
  %401 = fmul double %399, %400
  store double %401, ptr %gep618, align 8, !tbaa !9
  %402 = getelementptr double, ptr %17, i64 %indvars.iv561
  %403 = load double, ptr %402, align 8, !tbaa !9
  %gep861 = getelementptr double, ptr %invariant.gep860, i64 %indvars.iv561
  %404 = load double, ptr %gep861, align 8, !tbaa !9
  %405 = fmul double %403, %404
  store double %405, ptr %gep861, align 8, !tbaa !9
  %indvars.iv.next562.1 = add nuw nsw i64 %indvars.iv561, 2
  %406 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.next562.1
  %407 = load double, ptr %406, align 8, !tbaa !9
  %gep618.2 = getelementptr inbounds double, ptr %invariant.gep617, i64 %indvars.iv.next562.1
  %408 = load double, ptr %gep618.2, align 8, !tbaa !9
  %409 = fmul double %407, %408
  store double %409, ptr %gep618.2, align 8, !tbaa !9
  %indvars.iv.next562.2 = add nuw nsw i64 %indvars.iv561, 3
  %410 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.next562.2
  %411 = load double, ptr %410, align 8, !tbaa !9
  %gep618.3 = getelementptr inbounds double, ptr %invariant.gep617, i64 %indvars.iv.next562.2
  %412 = load double, ptr %gep618.3, align 8, !tbaa !9
  %413 = fmul double %411, %412
  store double %413, ptr %gep618.3, align 8, !tbaa !9
  %indvars.iv.next562.3 = add nuw nsw i64 %indvars.iv561, 4
  %exitcond565.not.3 = icmp eq i64 %indvars.iv.next562.3, %wide.trip.count564
  br i1 %exitcond565.not.3, label %.loopexit485.backedge, label %.lr.ph516, !llvm.loop !60

414:                                              ; preds = %.loopexit485
  %.not478517 = icmp slt i32 %373, 1
  br i1 %.not478517, label %._crit_edge521, label %.lr.ph520.preheader

.lr.ph520.preheader:                              ; preds = %414
  %415 = zext nneg i32 %373 to i64
  %416 = add nuw i32 %373, 1
  %wide.trip.count569 = zext i32 %416 to i64
  %invariant.gep619 = getelementptr inbounds double, ptr %39, i64 %415
  %417 = zext nneg i32 %373 to i64
  %min.iters.check = icmp ult i32 %373, 6
  br i1 %min.iters.check, label %.lr.ph520.preheader835, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph520.preheader
  %418 = shl nuw nsw i64 %415, 3
  %scevgep = getelementptr i8, ptr %17, i64 %418
  %419 = shl nuw nsw i64 %wide.trip.count569, 3
  %420 = getelementptr i8, ptr %scevgep673, i64 %418
  %scevgep674 = getelementptr i8, ptr %420, i64 %419
  %scevgep676 = getelementptr i8, ptr %scevgep675, i64 %419
  %bound0 = icmp ult ptr %scevgep, %scevgep676
  %bound1 = icmp ugt ptr %scevgep674, %17
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph520.preheader835, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %421 = getelementptr double, ptr %17, i64 %index
  %422 = getelementptr inbounds i8, ptr %421, i64 16
  %wide.load = load <2 x double>, ptr %421, align 8, !tbaa !9, !alias.scope !61
  %wide.load677 = load <2 x double>, ptr %422, align 8, !tbaa !9, !alias.scope !61
  %423 = getelementptr inbounds double, ptr %invariant.gep619, i64 %offset.idx
  %424 = getelementptr inbounds i8, ptr %423, i64 16
  %wide.load678 = load <2 x double>, ptr %423, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %wide.load679 = load <2 x double>, ptr %424, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %425 = fmul <2 x double> %wide.load, %wide.load678
  %426 = fmul <2 x double> %wide.load677, %wide.load679
  store <2 x double> %425, ptr %423, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  store <2 x double> %426, ptr %424, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %index.next = add nuw i64 %index, 4
  %427 = icmp eq i64 %index.next, %n.vec
  br i1 %427, label %middle.block, label %vector.body, !llvm.loop !66

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %417
  br i1 %cmp.n, label %._crit_edge521, label %.lr.ph520.preheader835

.lr.ph520.preheader835:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph520.preheader
  %indvars.iv566.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph520.preheader ], [ %ind.end, %middle.block ]
  %428 = sub nsw i64 %wide.trip.count569, %indvars.iv566.ph
  %429 = zext nneg i32 %373 to i64
  %430 = sub nsw i64 %429, %indvars.iv566.ph
  %xtraiter844 = and i64 %428, 3
  %lcmp.mod845.not = icmp eq i64 %xtraiter844, 0
  br i1 %lcmp.mod845.not, label %.lr.ph520.prol.loopexit, label %.lr.ph520.prol

.lr.ph520.prol:                                   ; preds = %.lr.ph520.preheader835, %.lr.ph520.prol
  %indvars.iv566.prol = phi i64 [ %indvars.iv.next567.prol, %.lr.ph520.prol ], [ %indvars.iv566.ph, %.lr.ph520.preheader835 ]
  %prol.iter846 = phi i64 [ %prol.iter846.next, %.lr.ph520.prol ], [ 0, %.lr.ph520.preheader835 ]
  %431 = getelementptr inbounds double, ptr %39, i64 %indvars.iv566.prol
  %432 = load double, ptr %431, align 8, !tbaa !9
  %gep620.prol = getelementptr inbounds double, ptr %invariant.gep619, i64 %indvars.iv566.prol
  %433 = load double, ptr %gep620.prol, align 8, !tbaa !9
  %434 = fmul double %432, %433
  store double %434, ptr %gep620.prol, align 8, !tbaa !9
  %indvars.iv.next567.prol = add nuw nsw i64 %indvars.iv566.prol, 1
  %prol.iter846.next = add i64 %prol.iter846, 1
  %prol.iter846.cmp.not = icmp eq i64 %prol.iter846.next, %xtraiter844
  br i1 %prol.iter846.cmp.not, label %.lr.ph520.prol.loopexit, label %.lr.ph520.prol, !llvm.loop !67

.lr.ph520.prol.loopexit:                          ; preds = %.lr.ph520.prol, %.lr.ph520.preheader835
  %indvars.iv566.unr = phi i64 [ %indvars.iv566.ph, %.lr.ph520.preheader835 ], [ %indvars.iv.next567.prol, %.lr.ph520.prol ]
  %435 = icmp ult i64 %430, 3
  br i1 %435, label %._crit_edge521, label %.lr.ph520.preheader835.new

.lr.ph520.preheader835.new:                       ; preds = %.lr.ph520.prol.loopexit
  %invariant.gep862 = getelementptr i8, ptr %invariant.gep619, i64 8
  br label %.lr.ph520

.lr.ph520:                                        ; preds = %.lr.ph520, %.lr.ph520.preheader835.new
  %indvars.iv566 = phi i64 [ %indvars.iv566.unr, %.lr.ph520.preheader835.new ], [ %indvars.iv.next567.3, %.lr.ph520 ]
  %436 = getelementptr inbounds double, ptr %39, i64 %indvars.iv566
  %437 = load double, ptr %436, align 8, !tbaa !9
  %gep620 = getelementptr inbounds double, ptr %invariant.gep619, i64 %indvars.iv566
  %438 = load double, ptr %gep620, align 8, !tbaa !9
  %439 = fmul double %437, %438
  store double %439, ptr %gep620, align 8, !tbaa !9
  %440 = getelementptr double, ptr %17, i64 %indvars.iv566
  %441 = load double, ptr %440, align 8, !tbaa !9
  %gep863 = getelementptr double, ptr %invariant.gep862, i64 %indvars.iv566
  %442 = load double, ptr %gep863, align 8, !tbaa !9
  %443 = fmul double %441, %442
  store double %443, ptr %gep863, align 8, !tbaa !9
  %indvars.iv.next567.1 = add nuw nsw i64 %indvars.iv566, 2
  %444 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.next567.1
  %445 = load double, ptr %444, align 8, !tbaa !9
  %gep620.2 = getelementptr inbounds double, ptr %invariant.gep619, i64 %indvars.iv.next567.1
  %446 = load double, ptr %gep620.2, align 8, !tbaa !9
  %447 = fmul double %445, %446
  store double %447, ptr %gep620.2, align 8, !tbaa !9
  %indvars.iv.next567.2 = add nuw nsw i64 %indvars.iv566, 3
  %448 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.next567.2
  %449 = load double, ptr %448, align 8, !tbaa !9
  %gep620.3 = getelementptr inbounds double, ptr %invariant.gep619, i64 %indvars.iv.next567.2
  %450 = load double, ptr %gep620.3, align 8, !tbaa !9
  %451 = fmul double %449, %450
  store double %451, ptr %gep620.3, align 8, !tbaa !9
  %indvars.iv.next567.3 = add nuw nsw i64 %indvars.iv566, 4
  %exitcond570.not.3 = icmp eq i64 %indvars.iv.next567.3, %wide.trip.count569
  br i1 %exitcond570.not.3, label %._crit_edge521, label %.lr.ph520, !llvm.loop !68

._crit_edge521:                                   ; preds = %.lr.ph520.prol.loopexit, %.lr.ph520, %middle.block, %414
  %452 = sext i32 %373 to i64
  %gep527 = getelementptr double, ptr %17, i64 %452
  call void @dgttrs_(ptr noundef nonnull %26, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %gep527, ptr noundef nonnull %1, ptr noundef nonnull %19) #5
  %.pre.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %.loopexit485.backedge

453:                                              ; preds = %.loopexit485
  %.not477528 = icmp slt i32 %373, 1
  br i1 %.not477528, label %._crit_edge533.thread, label %.lr.ph532.preheader

.lr.ph532.preheader:                              ; preds = %453
  %invariant.gep621 = getelementptr double, ptr %36, i64 %125
  %454 = zext nneg i32 %373 to i64
  %xtraiter847 = and i64 %454, 1
  %455 = icmp eq i32 %373, 1
  br i1 %455, label %._crit_edge533.unr-lcssa, label %.lr.ph532.preheader.new

.lr.ph532.preheader.new:                          ; preds = %.lr.ph532.preheader
  %unroll_iter = and i64 %454, 2147483646
  %invariant.gep864 = getelementptr i8, ptr %invariant.gep621, i64 8
  br label %.lr.ph532

.lr.ph532:                                        ; preds = %.lr.ph532, %.lr.ph532.preheader.new
  %indvars.iv571 = phi i64 [ 1, %.lr.ph532.preheader.new ], [ %indvars.iv.next572.1, %.lr.ph532 ]
  %.1530 = phi double [ 0.000000e+00, %.lr.ph532.preheader.new ], [ %467, %.lr.ph532 ]
  %niter = phi i64 [ 0, %.lr.ph532.preheader.new ], [ %niter.next.1, %.lr.ph532 ]
  %gep622 = getelementptr double, ptr %invariant.gep621, i64 %indvars.iv571
  %456 = load double, ptr %gep622, align 8, !tbaa !9
  %457 = fcmp oge double %456, 0.000000e+00
  %458 = fneg double %456
  %459 = select i1 %457, double %456, double %458
  %460 = fcmp oge double %.1530, %459
  %461 = select i1 %460, double %.1530, double %459
  %gep865 = getelementptr double, ptr %invariant.gep864, i64 %indvars.iv571
  %462 = load double, ptr %gep865, align 8, !tbaa !9
  %463 = fcmp oge double %462, 0.000000e+00
  %464 = fneg double %462
  %465 = select i1 %463, double %462, double %464
  %466 = fcmp oge double %461, %465
  %467 = select i1 %466, double %461, double %465
  %indvars.iv.next572.1 = add nuw nsw i64 %indvars.iv571, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge533.unr-lcssa, label %.lr.ph532, !llvm.loop !69

._crit_edge533.unr-lcssa:                         ; preds = %.lr.ph532, %.lr.ph532.preheader
  %.lcssa843.ph = phi double [ poison, %.lr.ph532.preheader ], [ %467, %.lr.ph532 ]
  %indvars.iv571.unr = phi i64 [ 1, %.lr.ph532.preheader ], [ %indvars.iv.next572.1, %.lr.ph532 ]
  %.1530.unr = phi double [ 0.000000e+00, %.lr.ph532.preheader ], [ %467, %.lr.ph532 ]
  %lcmp.mod848.not = icmp eq i64 %xtraiter847, 0
  br i1 %lcmp.mod848.not, label %._crit_edge533, label %.lr.ph532.epil

.lr.ph532.epil:                                   ; preds = %._crit_edge533.unr-lcssa
  %gep622.epil = getelementptr double, ptr %invariant.gep621, i64 %indvars.iv571.unr
  %468 = load double, ptr %gep622.epil, align 8, !tbaa !9
  %469 = fcmp oge double %468, 0.000000e+00
  %470 = fneg double %468
  %471 = select i1 %469, double %468, double %470
  %472 = fcmp oge double %.1530.unr, %471
  %473 = select i1 %472, double %.1530.unr, double %471
  br label %._crit_edge533

._crit_edge533:                                   ; preds = %._crit_edge533.unr-lcssa, %.lr.ph532.epil
  %.lcssa843 = phi double [ %.lcssa843.ph, %._crit_edge533.unr-lcssa ], [ %473, %.lr.ph532.epil ]
  %474 = fcmp une double %.lcssa843, 0.000000e+00
  br i1 %474, label %475, label %._crit_edge533.thread

475:                                              ; preds = %._crit_edge533
  %476 = load double, ptr %365, align 8, !tbaa !9
  %477 = fdiv double %476, %.lcssa843
  store double %477, ptr %365, align 8, !tbaa !9
  br label %._crit_edge533.thread

._crit_edge533.thread:                            ; preds = %453, %._crit_edge533, %475
  %indvars.iv.next577 = add nuw nsw i64 %indvars.iv576, 1
  %.not471.not = icmp ult i64 %indvars.iv576, %96
  %indvar.next = add i64 %indvar, 1
  br i1 %.not471.not, label %.preheader, label %.loopexit, !llvm.loop !70

.loopexit:                                        ; preds = %._crit_edge533.thread, %.lr.ph542.prol.loopexit, %.lr.ph542, %middle.block818, %63, %87, %64, %.thread
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  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

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

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

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

declare void @daxpy_(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) #3

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

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

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

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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = !{!7, !7, i64 0}
!19 = !{!20}
!20 = distinct !{!20, !21}
!21 = distinct !{!21, !"LVerDomain"}
!22 = !{!23}
!23 = distinct !{!23, !21}
!24 = !{!25}
!25 = distinct !{!25, !21}
!26 = !{!27}
!27 = distinct !{!27, !21}
!28 = !{!29}
!29 = distinct !{!29, !21}
!30 = !{!31}
!31 = distinct !{!31, !21}
!32 = !{!20, !23, !25, !27, !29}
!33 = distinct !{!33, !12, !13, !14}
!34 = distinct !{!34, !12, !13}
!35 = !{!36}
!36 = distinct !{!36, !37}
!37 = distinct !{!37, !"LVerDomain"}
!38 = !{!39}
!39 = distinct !{!39, !37}
!40 = !{!41}
!41 = distinct !{!41, !37}
!42 = !{!43}
!43 = distinct !{!43, !37}
!44 = !{!45}
!45 = distinct !{!45, !37}
!46 = !{!47}
!47 = distinct !{!47, !37}
!48 = !{!36, !39, !41, !43, !45}
!49 = distinct !{!49, !12, !13, !14}
!50 = distinct !{!50, !12, !13}
!51 = distinct !{!51, !12}
!52 = distinct !{!52, !12}
!53 = !{!54}
!54 = distinct !{!54, !55}
!55 = distinct !{!55, !"LVerDomain"}
!56 = !{!57}
!57 = distinct !{!57, !55}
!58 = distinct !{!58, !12, !13, !14}
!59 = distinct !{!59, !16}
!60 = distinct !{!60, !12, !13}
!61 = !{!62}
!62 = distinct !{!62, !63}
!63 = distinct !{!63, !"LVerDomain"}
!64 = !{!65}
!65 = distinct !{!65, !63}
!66 = distinct !{!66, !12, !13, !14}
!67 = distinct !{!67, !16}
!68 = distinct !{!68, !12, !13}
!69 = distinct !{!69, !12}
!70 = distinct !{!70, !12}


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