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

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

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

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

114:                                              ; preds = %17
  %115 = load ptr, ptr %18, align 8, !tbaa !5
  %116 = call i32 @lsame_(ptr noundef %115, ptr noundef @.str.2)
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %120, label %118

118:                                              ; preds = %114
  %119 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -1, ptr %119, align 4, !tbaa !9
  br label %207

120:                                              ; preds = %114, %17
  %121 = load i32, ptr %61, align 4, !tbaa !9
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %133, label %123

123:                                              ; preds = %120
  %124 = load ptr, ptr %19, align 8, !tbaa !5
  %125 = call i32 @lsame_(ptr noundef %124, ptr noundef @.str.3)
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %133, label %127

127:                                              ; preds = %123
  %128 = load ptr, ptr %19, align 8, !tbaa !5
  %129 = call i32 @lsame_(ptr noundef %128, ptr noundef @.str.4)
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %133, label %131

131:                                              ; preds = %127
  %132 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %132, align 4, !tbaa !9
  br label %206

133:                                              ; preds = %127, %123, %120
  %134 = load i32, ptr %63, align 4, !tbaa !9
  %135 = icmp ne i32 %134, 0
  br i1 %135, label %142, label %136

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

140:                                              ; preds = %136
  %141 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %141, align 4, !tbaa !9
  br label %205

142:                                              ; preds = %136, %133
  %143 = load ptr, ptr %21, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = icmp slt i32 %144, 0
  br i1 %145, label %146, label %148

146:                                              ; preds = %142
  %147 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -4, ptr %147, align 4, !tbaa !9
  br label %204

148:                                              ; preds = %142
  %149 = load ptr, ptr %22, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp slt i32 %150, 0
  br i1 %151, label %152, label %154

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

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

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

160:                                              ; preds = %154
  %161 = load ptr, ptr %25, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = load ptr, ptr %22, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = add nsw i32 %164, 1
  %166 = icmp slt i32 %162, %165
  br i1 %166, label %167, label %169

167:                                              ; preds = %160
  %168 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -8, ptr %168, align 4, !tbaa !9
  br label %201

169:                                              ; preds = %160
  %170 = load ptr, ptr %27, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = load ptr, ptr %21, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp sge i32 1, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %179

176:                                              ; preds = %169
  %177 = load ptr, ptr %21, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  br label %179

179:                                              ; preds = %176, %175
  %180 = phi i32 [ 1, %175 ], [ %178, %176 ]
  %181 = icmp slt i32 %171, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %179
  %183 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -10, ptr %183, align 4, !tbaa !9
  br label %200

184:                                              ; preds = %179
  %185 = load ptr, ptr %29, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = load ptr, ptr %21, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = icmp sge i32 1, %188
  br i1 %189, label %190, label %191

190:                                              ; preds = %184
  br label %194

191:                                              ; preds = %184
  %192 = load ptr, ptr %21, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %191, %190
  %195 = phi i32 [ 1, %190 ], [ %193, %191 ]
  %196 = icmp slt i32 %186, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %194
  %198 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -12, ptr %198, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %197, %194
  br label %200

200:                                              ; preds = %199, %182
  br label %201

201:                                              ; preds = %200, %167
  br label %202

202:                                              ; preds = %201, %158
  br label %203

203:                                              ; preds = %202, %152
  br label %204

204:                                              ; preds = %203, %146
  br label %205

205:                                              ; preds = %204, %140
  br label %206

206:                                              ; preds = %205, %131
  br label %207

207:                                              ; preds = %206, %118
  %208 = load ptr, ptr %34, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %211, label %216

211:                                              ; preds = %207
  %212 = load ptr, ptr %34, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = sub nsw i32 0, %213
  store i32 %214, ptr %41, align 4, !tbaa !9
  %215 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %41, i32 noundef 6)
  store i32 1, ptr %66, align 4
  br label %1467

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

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

224:                                              ; preds = %220, %216
  %225 = load ptr, ptr %23, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  store i32 %226, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %240, %224
  %228 = load i32, ptr %53, align 4, !tbaa !9
  %229 = load i32, ptr %41, align 4, !tbaa !9
  %230 = icmp sle i32 %228, %229
  br i1 %230, label %231, label %243

231:                                              ; preds = %227
  %232 = load ptr, ptr %30, align 8, !tbaa !5
  %233 = load i32, ptr %53, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds double, ptr %232, i64 %234
  store double 0.000000e+00, ptr %235, align 8, !tbaa !11
  %236 = load ptr, ptr %31, align 8, !tbaa !5
  %237 = load i32, ptr %53, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds double, ptr %236, i64 %238
  store double 0.000000e+00, ptr %239, align 8, !tbaa !11
  br label %240

240:                                              ; preds = %231
  %241 = load i32, ptr %53, align 4, !tbaa !9
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr %53, align 4, !tbaa !9
  br label %227, !llvm.loop !13

243:                                              ; preds = %227
  store i32 1, ptr %66, align 4
  br label %1467

244:                                              ; preds = %220
  %245 = load i32, ptr %61, align 4, !tbaa !9
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %247, label %249

247:                                              ; preds = %244
  %248 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 84, ptr %248, align 1, !tbaa !15
  br label %251

249:                                              ; preds = %244
  %250 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 78, ptr %250, align 1, !tbaa !15
  br label %251

251:                                              ; preds = %249, %247
  %252 = load ptr, ptr %22, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = add nsw i32 %253, 2
  store i32 %254, ptr %59, align 4, !tbaa !9
  %255 = call double @dlamch_(ptr noundef @.str.6)
  store double %255, ptr %65, align 8, !tbaa !11
  %256 = call double @dlamch_(ptr noundef @.str.7)
  store double %256, ptr %60, align 8, !tbaa !11
  %257 = load i32, ptr %59, align 4, !tbaa !9
  %258 = sitofp i32 %257 to double
  %259 = load double, ptr %60, align 8, !tbaa !11
  %260 = fmul double %258, %259
  store double %260, ptr %50, align 8, !tbaa !11
  %261 = load double, ptr %50, align 8, !tbaa !11
  %262 = load double, ptr %65, align 8, !tbaa !11
  %263 = fdiv double %261, %262
  store double %263, ptr %51, align 8, !tbaa !11
  %264 = load ptr, ptr %23, align 8, !tbaa !5
  %265 = load i32, ptr %264, align 4, !tbaa !9
  store i32 %265, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %1463, %251
  %267 = load i32, ptr %53, align 4, !tbaa !9
  %268 = load i32, ptr %41, align 4, !tbaa !9
  %269 = icmp sle i32 %267, %268
  br i1 %269, label %270, label %1466

270:                                              ; preds = %266
  %271 = load ptr, ptr %21, align 8, !tbaa !5
  %272 = load ptr, ptr %28, align 8, !tbaa !5
  %273 = load i32, ptr %53, align 4, !tbaa !9
  %274 = load i32, ptr %39, align 4, !tbaa !9
  %275 = mul nsw i32 %273, %274
  %276 = add nsw i32 %275, 1
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %272, i64 %277
  %279 = load ptr, ptr %32, align 8, !tbaa !5
  %280 = load ptr, ptr %21, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = add nsw i32 %281, 1
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds double, ptr %279, i64 %283
  call void @dcopy_(ptr noundef %271, ptr noundef %278, ptr noundef @c__1, ptr noundef %284, ptr noundef @c__1)
  %285 = load ptr, ptr %18, align 8, !tbaa !5
  %286 = load ptr, ptr %19, align 8, !tbaa !5
  %287 = load ptr, ptr %20, align 8, !tbaa !5
  %288 = load ptr, ptr %21, align 8, !tbaa !5
  %289 = load ptr, ptr %22, align 8, !tbaa !5
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = load i32, ptr %36, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds double, ptr %290, i64 %292
  %294 = load ptr, ptr %25, align 8, !tbaa !5
  %295 = load ptr, ptr %32, align 8, !tbaa !5
  %296 = load ptr, ptr %21, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = add nsw i32 %297, 1
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %295, i64 %299
  call void @dtbmv_(ptr noundef %285, ptr noundef %286, ptr noundef %287, ptr noundef %288, ptr noundef %289, ptr noundef %293, ptr noundef %294, ptr noundef %300, ptr noundef @c__1)
  %301 = load ptr, ptr %21, align 8, !tbaa !5
  %302 = load ptr, ptr %26, align 8, !tbaa !5
  %303 = load i32, ptr %53, align 4, !tbaa !9
  %304 = load i32, ptr %37, align 4, !tbaa !9
  %305 = mul nsw i32 %303, %304
  %306 = add nsw i32 %305, 1
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %302, i64 %307
  %309 = load ptr, ptr %32, align 8, !tbaa !5
  %310 = load ptr, ptr %21, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = add nsw i32 %311, 1
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds double, ptr %309, i64 %313
  call void @daxpy_(ptr noundef %301, ptr noundef @c_b19, ptr noundef %308, ptr noundef @c__1, ptr noundef %314, ptr noundef @c__1)
  %315 = load ptr, ptr %21, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  store i32 %316, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %344, %270
  %318 = load i32, ptr %52, align 4, !tbaa !9
  %319 = load i32, ptr %42, align 4, !tbaa !9
  %320 = icmp sle i32 %318, %319
  br i1 %320, label %321, label %347

321:                                              ; preds = %317
  %322 = load ptr, ptr %26, align 8, !tbaa !5
  %323 = load i32, ptr %52, align 4, !tbaa !9
  %324 = load i32, ptr %53, align 4, !tbaa !9
  %325 = load i32, ptr %37, align 4, !tbaa !9
  %326 = mul nsw i32 %324, %325
  %327 = add nsw i32 %323, %326
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds double, ptr %322, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !11
  store double %330, ptr %46, align 8, !tbaa !11
  %331 = load double, ptr %46, align 8, !tbaa !11
  %332 = fcmp oge double %331, 0.000000e+00
  br i1 %332, label %333, label %335

333:                                              ; preds = %321
  %334 = load double, ptr %46, align 8, !tbaa !11
  br label %338

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

338:                                              ; preds = %335, %333
  %339 = phi double [ %334, %333 ], [ %337, %335 ]
  %340 = load ptr, ptr %32, align 8, !tbaa !5
  %341 = load i32, ptr %52, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %340, i64 %342
  store double %339, ptr %343, align 8, !tbaa !11
  br label %344

344:                                              ; preds = %338
  %345 = load i32, ptr %52, align 4, !tbaa !9
  %346 = add nsw i32 %345, 1
  store i32 %346, ptr %52, align 4, !tbaa !9
  br label %317, !llvm.loop !16

347:                                              ; preds = %317
  %348 = load i32, ptr %61, align 4, !tbaa !9
  %349 = icmp ne i32 %348, 0
  br i1 %349, label %350, label %712

350:                                              ; preds = %347
  %351 = load i32, ptr %57, align 4, !tbaa !9
  %352 = icmp ne i32 %351, 0
  br i1 %352, label %353, label %533

353:                                              ; preds = %350
  %354 = load i32, ptr %63, align 4, !tbaa !9
  %355 = icmp ne i32 %354, 0
  br i1 %355, label %356, label %440

356:                                              ; preds = %353
  %357 = load ptr, ptr %21, align 8, !tbaa !5
  %358 = load i32, ptr %357, align 4, !tbaa !9
  store i32 %358, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %359

359:                                              ; preds = %436, %356
  %360 = load i32, ptr %54, align 4, !tbaa !9
  %361 = load i32, ptr %42, align 4, !tbaa !9
  %362 = icmp sle i32 %360, %361
  br i1 %362, label %363, label %439

363:                                              ; preds = %359
  %364 = load ptr, ptr %28, align 8, !tbaa !5
  %365 = load i32, ptr %54, align 4, !tbaa !9
  %366 = load i32, ptr %53, align 4, !tbaa !9
  %367 = load i32, ptr %39, align 4, !tbaa !9
  %368 = mul nsw i32 %366, %367
  %369 = add nsw i32 %365, %368
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds double, ptr %364, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !11
  store double %372, ptr %46, align 8, !tbaa !11
  %373 = load double, ptr %46, align 8, !tbaa !11
  %374 = fcmp oge double %373, 0.000000e+00
  br i1 %374, label %375, label %377

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

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

380:                                              ; preds = %377, %375
  %381 = phi double [ %376, %375 ], [ %379, %377 ]
  store double %381, ptr %58, align 8, !tbaa !11
  store i32 1, ptr %43, align 4, !tbaa !9
  %382 = load i32, ptr %54, align 4, !tbaa !9
  %383 = load ptr, ptr %22, align 8, !tbaa !5
  %384 = load i32, ptr %383, align 4, !tbaa !9
  %385 = sub nsw i32 %382, %384
  store i32 %385, ptr %44, align 4, !tbaa !9
  %386 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %386, ptr %45, align 4, !tbaa !9
  %387 = load i32, ptr %43, align 4, !tbaa !9
  %388 = load i32, ptr %44, align 4, !tbaa !9
  %389 = icmp sge i32 %387, %388
  br i1 %389, label %390, label %392

390:                                              ; preds = %380
  %391 = load i32, ptr %43, align 4, !tbaa !9
  br label %394

392:                                              ; preds = %380
  %393 = load i32, ptr %44, align 4, !tbaa !9
  br label %394

394:                                              ; preds = %392, %390
  %395 = phi i32 [ %391, %390 ], [ %393, %392 ]
  store i32 %395, ptr %52, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %432, %394
  %397 = load i32, ptr %52, align 4, !tbaa !9
  %398 = load i32, ptr %45, align 4, !tbaa !9
  %399 = icmp sle i32 %397, %398
  br i1 %399, label %400, label %435

400:                                              ; preds = %396
  %401 = load ptr, ptr %24, align 8, !tbaa !5
  %402 = load ptr, ptr %22, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  %405 = load i32, ptr %52, align 4, !tbaa !9
  %406 = add nsw i32 %404, %405
  %407 = load i32, ptr %54, align 4, !tbaa !9
  %408 = sub nsw i32 %406, %407
  %409 = load i32, ptr %54, align 4, !tbaa !9
  %410 = load i32, ptr %35, align 4, !tbaa !9
  %411 = mul nsw i32 %409, %410
  %412 = add nsw i32 %408, %411
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %401, i64 %413
  %415 = load double, ptr %414, align 8, !tbaa !11
  store double %415, ptr %46, align 8, !tbaa !11
  %416 = load double, ptr %46, align 8, !tbaa !11
  %417 = fcmp oge double %416, 0.000000e+00
  br i1 %417, label %418, label %420

418:                                              ; preds = %400
  %419 = load double, ptr %46, align 8, !tbaa !11
  br label %423

420:                                              ; preds = %400
  %421 = load double, ptr %46, align 8, !tbaa !11
  %422 = fneg double %421
  br label %423

423:                                              ; preds = %420, %418
  %424 = phi double [ %419, %418 ], [ %422, %420 ]
  %425 = load double, ptr %58, align 8, !tbaa !11
  %426 = load ptr, ptr %32, align 8, !tbaa !5
  %427 = load i32, ptr %52, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %426, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !11
  %431 = call double @llvm.fmuladd.f64(double %424, double %425, double %430)
  store double %431, ptr %429, align 8, !tbaa !11
  br label %432

432:                                              ; preds = %423
  %433 = load i32, ptr %52, align 4, !tbaa !9
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %52, align 4, !tbaa !9
  br label %396, !llvm.loop !17

435:                                              ; preds = %396
  br label %436

436:                                              ; preds = %435
  %437 = load i32, ptr %54, align 4, !tbaa !9
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %54, align 4, !tbaa !9
  br label %359, !llvm.loop !18

439:                                              ; preds = %359
  br label %532

440:                                              ; preds = %353
  %441 = load ptr, ptr %21, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  store i32 %442, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %443

443:                                              ; preds = %528, %440
  %444 = load i32, ptr %54, align 4, !tbaa !9
  %445 = load i32, ptr %42, align 4, !tbaa !9
  %446 = icmp sle i32 %444, %445
  br i1 %446, label %447, label %531

447:                                              ; preds = %443
  %448 = load ptr, ptr %28, align 8, !tbaa !5
  %449 = load i32, ptr %54, align 4, !tbaa !9
  %450 = load i32, ptr %53, align 4, !tbaa !9
  %451 = load i32, ptr %39, align 4, !tbaa !9
  %452 = mul nsw i32 %450, %451
  %453 = add nsw i32 %449, %452
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %448, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !11
  store double %456, ptr %46, align 8, !tbaa !11
  %457 = load double, ptr %46, align 8, !tbaa !11
  %458 = fcmp oge double %457, 0.000000e+00
  br i1 %458, label %459, label %461

459:                                              ; preds = %447
  %460 = load double, ptr %46, align 8, !tbaa !11
  br label %464

461:                                              ; preds = %447
  %462 = load double, ptr %46, align 8, !tbaa !11
  %463 = fneg double %462
  br label %464

464:                                              ; preds = %461, %459
  %465 = phi double [ %460, %459 ], [ %463, %461 ]
  store double %465, ptr %58, align 8, !tbaa !11
  store i32 1, ptr %45, align 4, !tbaa !9
  %466 = load i32, ptr %54, align 4, !tbaa !9
  %467 = load ptr, ptr %22, align 8, !tbaa !5
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = sub nsw i32 %466, %468
  store i32 %469, ptr %43, align 4, !tbaa !9
  %470 = load i32, ptr %54, align 4, !tbaa !9
  %471 = sub nsw i32 %470, 1
  store i32 %471, ptr %44, align 4, !tbaa !9
  %472 = load i32, ptr %45, align 4, !tbaa !9
  %473 = load i32, ptr %43, align 4, !tbaa !9
  %474 = icmp sge i32 %472, %473
  br i1 %474, label %475, label %477

475:                                              ; preds = %464
  %476 = load i32, ptr %45, align 4, !tbaa !9
  br label %479

477:                                              ; preds = %464
  %478 = load i32, ptr %43, align 4, !tbaa !9
  br label %479

479:                                              ; preds = %477, %475
  %480 = phi i32 [ %476, %475 ], [ %478, %477 ]
  store i32 %480, ptr %52, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %517, %479
  %482 = load i32, ptr %52, align 4, !tbaa !9
  %483 = load i32, ptr %44, align 4, !tbaa !9
  %484 = icmp sle i32 %482, %483
  br i1 %484, label %485, label %520

485:                                              ; preds = %481
  %486 = load ptr, ptr %24, align 8, !tbaa !5
  %487 = load ptr, ptr %22, align 8, !tbaa !5
  %488 = load i32, ptr %487, align 4, !tbaa !9
  %489 = add nsw i32 %488, 1
  %490 = load i32, ptr %52, align 4, !tbaa !9
  %491 = add nsw i32 %489, %490
  %492 = load i32, ptr %54, align 4, !tbaa !9
  %493 = sub nsw i32 %491, %492
  %494 = load i32, ptr %54, align 4, !tbaa !9
  %495 = load i32, ptr %35, align 4, !tbaa !9
  %496 = mul nsw i32 %494, %495
  %497 = add nsw i32 %493, %496
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %486, i64 %498
  %500 = load double, ptr %499, align 8, !tbaa !11
  store double %500, ptr %46, align 8, !tbaa !11
  %501 = load double, ptr %46, align 8, !tbaa !11
  %502 = fcmp oge double %501, 0.000000e+00
  br i1 %502, label %503, label %505

503:                                              ; preds = %485
  %504 = load double, ptr %46, align 8, !tbaa !11
  br label %508

505:                                              ; preds = %485
  %506 = load double, ptr %46, align 8, !tbaa !11
  %507 = fneg double %506
  br label %508

508:                                              ; preds = %505, %503
  %509 = phi double [ %504, %503 ], [ %507, %505 ]
  %510 = load double, ptr %58, align 8, !tbaa !11
  %511 = load ptr, ptr %32, align 8, !tbaa !5
  %512 = load i32, ptr %52, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds double, ptr %511, i64 %513
  %515 = load double, ptr %514, align 8, !tbaa !11
  %516 = call double @llvm.fmuladd.f64(double %509, double %510, double %515)
  store double %516, ptr %514, align 8, !tbaa !11
  br label %517

517:                                              ; preds = %508
  %518 = load i32, ptr %52, align 4, !tbaa !9
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %52, align 4, !tbaa !9
  br label %481, !llvm.loop !19

520:                                              ; preds = %481
  %521 = load double, ptr %58, align 8, !tbaa !11
  %522 = load ptr, ptr %32, align 8, !tbaa !5
  %523 = load i32, ptr %54, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds double, ptr %522, i64 %524
  %526 = load double, ptr %525, align 8, !tbaa !11
  %527 = fadd double %526, %521
  store double %527, ptr %525, align 8, !tbaa !11
  br label %528

528:                                              ; preds = %520
  %529 = load i32, ptr %54, align 4, !tbaa !9
  %530 = add nsw i32 %529, 1
  store i32 %530, ptr %54, align 4, !tbaa !9
  br label %443, !llvm.loop !20

531:                                              ; preds = %443
  br label %532

532:                                              ; preds = %531, %439
  br label %711

533:                                              ; preds = %350
  %534 = load i32, ptr %63, align 4, !tbaa !9
  %535 = icmp ne i32 %534, 0
  br i1 %535, label %536, label %619

536:                                              ; preds = %533
  %537 = load ptr, ptr %21, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  store i32 %538, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %539

539:                                              ; preds = %615, %536
  %540 = load i32, ptr %54, align 4, !tbaa !9
  %541 = load i32, ptr %42, align 4, !tbaa !9
  %542 = icmp sle i32 %540, %541
  br i1 %542, label %543, label %618

543:                                              ; preds = %539
  %544 = load ptr, ptr %28, align 8, !tbaa !5
  %545 = load i32, ptr %54, align 4, !tbaa !9
  %546 = load i32, ptr %53, align 4, !tbaa !9
  %547 = load i32, ptr %39, align 4, !tbaa !9
  %548 = mul nsw i32 %546, %547
  %549 = add nsw i32 %545, %548
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds double, ptr %544, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !11
  store double %552, ptr %46, align 8, !tbaa !11
  %553 = load double, ptr %46, align 8, !tbaa !11
  %554 = fcmp oge double %553, 0.000000e+00
  br i1 %554, label %555, label %557

555:                                              ; preds = %543
  %556 = load double, ptr %46, align 8, !tbaa !11
  br label %560

557:                                              ; preds = %543
  %558 = load double, ptr %46, align 8, !tbaa !11
  %559 = fneg double %558
  br label %560

560:                                              ; preds = %557, %555
  %561 = phi double [ %556, %555 ], [ %559, %557 ]
  store double %561, ptr %58, align 8, !tbaa !11
  %562 = load ptr, ptr %21, align 8, !tbaa !5
  %563 = load i32, ptr %562, align 4, !tbaa !9
  store i32 %563, ptr %45, align 4, !tbaa !9
  %564 = load i32, ptr %54, align 4, !tbaa !9
  %565 = load ptr, ptr %22, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = add nsw i32 %564, %566
  store i32 %567, ptr %43, align 4, !tbaa !9
  %568 = load i32, ptr %45, align 4, !tbaa !9
  %569 = load i32, ptr %43, align 4, !tbaa !9
  %570 = icmp sle i32 %568, %569
  br i1 %570, label %571, label %573

571:                                              ; preds = %560
  %572 = load i32, ptr %45, align 4, !tbaa !9
  br label %575

573:                                              ; preds = %560
  %574 = load i32, ptr %43, align 4, !tbaa !9
  br label %575

575:                                              ; preds = %573, %571
  %576 = phi i32 [ %572, %571 ], [ %574, %573 ]
  store i32 %576, ptr %44, align 4, !tbaa !9
  %577 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %577, ptr %52, align 4, !tbaa !9
  br label %578

578:                                              ; preds = %611, %575
  %579 = load i32, ptr %52, align 4, !tbaa !9
  %580 = load i32, ptr %44, align 4, !tbaa !9
  %581 = icmp sle i32 %579, %580
  br i1 %581, label %582, label %614

582:                                              ; preds = %578
  %583 = load ptr, ptr %24, align 8, !tbaa !5
  %584 = load i32, ptr %52, align 4, !tbaa !9
  %585 = add nsw i32 %584, 1
  %586 = load i32, ptr %54, align 4, !tbaa !9
  %587 = sub nsw i32 %585, %586
  %588 = load i32, ptr %54, align 4, !tbaa !9
  %589 = load i32, ptr %35, align 4, !tbaa !9
  %590 = mul nsw i32 %588, %589
  %591 = add nsw i32 %587, %590
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %583, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !11
  store double %594, ptr %46, align 8, !tbaa !11
  %595 = load double, ptr %46, align 8, !tbaa !11
  %596 = fcmp oge double %595, 0.000000e+00
  br i1 %596, label %597, label %599

597:                                              ; preds = %582
  %598 = load double, ptr %46, align 8, !tbaa !11
  br label %602

599:                                              ; preds = %582
  %600 = load double, ptr %46, align 8, !tbaa !11
  %601 = fneg double %600
  br label %602

602:                                              ; preds = %599, %597
  %603 = phi double [ %598, %597 ], [ %601, %599 ]
  %604 = load double, ptr %58, align 8, !tbaa !11
  %605 = load ptr, ptr %32, align 8, !tbaa !5
  %606 = load i32, ptr %52, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %605, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  %610 = call double @llvm.fmuladd.f64(double %603, double %604, double %609)
  store double %610, ptr %608, align 8, !tbaa !11
  br label %611

611:                                              ; preds = %602
  %612 = load i32, ptr %52, align 4, !tbaa !9
  %613 = add nsw i32 %612, 1
  store i32 %613, ptr %52, align 4, !tbaa !9
  br label %578, !llvm.loop !21

614:                                              ; preds = %578
  br label %615

615:                                              ; preds = %614
  %616 = load i32, ptr %54, align 4, !tbaa !9
  %617 = add nsw i32 %616, 1
  store i32 %617, ptr %54, align 4, !tbaa !9
  br label %539, !llvm.loop !22

618:                                              ; preds = %539
  br label %710

619:                                              ; preds = %533
  %620 = load ptr, ptr %21, align 8, !tbaa !5
  %621 = load i32, ptr %620, align 4, !tbaa !9
  store i32 %621, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %622

622:                                              ; preds = %706, %619
  %623 = load i32, ptr %54, align 4, !tbaa !9
  %624 = load i32, ptr %42, align 4, !tbaa !9
  %625 = icmp sle i32 %623, %624
  br i1 %625, label %626, label %709

626:                                              ; preds = %622
  %627 = load ptr, ptr %28, align 8, !tbaa !5
  %628 = load i32, ptr %54, align 4, !tbaa !9
  %629 = load i32, ptr %53, align 4, !tbaa !9
  %630 = load i32, ptr %39, align 4, !tbaa !9
  %631 = mul nsw i32 %629, %630
  %632 = add nsw i32 %628, %631
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %627, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !11
  store double %635, ptr %46, align 8, !tbaa !11
  %636 = load double, ptr %46, align 8, !tbaa !11
  %637 = fcmp oge double %636, 0.000000e+00
  br i1 %637, label %638, label %640

638:                                              ; preds = %626
  %639 = load double, ptr %46, align 8, !tbaa !11
  br label %643

640:                                              ; preds = %626
  %641 = load double, ptr %46, align 8, !tbaa !11
  %642 = fneg double %641
  br label %643

643:                                              ; preds = %640, %638
  %644 = phi double [ %639, %638 ], [ %642, %640 ]
  store double %644, ptr %58, align 8, !tbaa !11
  %645 = load ptr, ptr %21, align 8, !tbaa !5
  %646 = load i32, ptr %645, align 4, !tbaa !9
  store i32 %646, ptr %45, align 4, !tbaa !9
  %647 = load i32, ptr %54, align 4, !tbaa !9
  %648 = load ptr, ptr %22, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = add nsw i32 %647, %649
  store i32 %650, ptr %43, align 4, !tbaa !9
  %651 = load i32, ptr %45, align 4, !tbaa !9
  %652 = load i32, ptr %43, align 4, !tbaa !9
  %653 = icmp sle i32 %651, %652
  br i1 %653, label %654, label %656

654:                                              ; preds = %643
  %655 = load i32, ptr %45, align 4, !tbaa !9
  br label %658

656:                                              ; preds = %643
  %657 = load i32, ptr %43, align 4, !tbaa !9
  br label %658

658:                                              ; preds = %656, %654
  %659 = phi i32 [ %655, %654 ], [ %657, %656 ]
  store i32 %659, ptr %44, align 4, !tbaa !9
  %660 = load i32, ptr %54, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %52, align 4, !tbaa !9
  br label %662

662:                                              ; preds = %695, %658
  %663 = load i32, ptr %52, align 4, !tbaa !9
  %664 = load i32, ptr %44, align 4, !tbaa !9
  %665 = icmp sle i32 %663, %664
  br i1 %665, label %666, label %698

666:                                              ; preds = %662
  %667 = load ptr, ptr %24, align 8, !tbaa !5
  %668 = load i32, ptr %52, align 4, !tbaa !9
  %669 = add nsw i32 %668, 1
  %670 = load i32, ptr %54, align 4, !tbaa !9
  %671 = sub nsw i32 %669, %670
  %672 = load i32, ptr %54, align 4, !tbaa !9
  %673 = load i32, ptr %35, align 4, !tbaa !9
  %674 = mul nsw i32 %672, %673
  %675 = add nsw i32 %671, %674
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds double, ptr %667, i64 %676
  %678 = load double, ptr %677, align 8, !tbaa !11
  store double %678, ptr %46, align 8, !tbaa !11
  %679 = load double, ptr %46, align 8, !tbaa !11
  %680 = fcmp oge double %679, 0.000000e+00
  br i1 %680, label %681, label %683

681:                                              ; preds = %666
  %682 = load double, ptr %46, align 8, !tbaa !11
  br label %686

683:                                              ; preds = %666
  %684 = load double, ptr %46, align 8, !tbaa !11
  %685 = fneg double %684
  br label %686

686:                                              ; preds = %683, %681
  %687 = phi double [ %682, %681 ], [ %685, %683 ]
  %688 = load double, ptr %58, align 8, !tbaa !11
  %689 = load ptr, ptr %32, align 8, !tbaa !5
  %690 = load i32, ptr %52, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds double, ptr %689, i64 %691
  %693 = load double, ptr %692, align 8, !tbaa !11
  %694 = call double @llvm.fmuladd.f64(double %687, double %688, double %693)
  store double %694, ptr %692, align 8, !tbaa !11
  br label %695

695:                                              ; preds = %686
  %696 = load i32, ptr %52, align 4, !tbaa !9
  %697 = add nsw i32 %696, 1
  store i32 %697, ptr %52, align 4, !tbaa !9
  br label %662, !llvm.loop !23

698:                                              ; preds = %662
  %699 = load double, ptr %58, align 8, !tbaa !11
  %700 = load ptr, ptr %32, align 8, !tbaa !5
  %701 = load i32, ptr %54, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %700, i64 %702
  %704 = load double, ptr %703, align 8, !tbaa !11
  %705 = fadd double %704, %699
  store double %705, ptr %703, align 8, !tbaa !11
  br label %706

706:                                              ; preds = %698
  %707 = load i32, ptr %54, align 4, !tbaa !9
  %708 = add nsw i32 %707, 1
  store i32 %708, ptr %54, align 4, !tbaa !9
  br label %622, !llvm.loop !24

709:                                              ; preds = %622
  br label %710

710:                                              ; preds = %709, %618
  br label %711

711:                                              ; preds = %710, %532
  br label %1104

712:                                              ; preds = %347
  %713 = load i32, ptr %57, align 4, !tbaa !9
  %714 = icmp ne i32 %713, 0
  br i1 %714, label %715, label %910

715:                                              ; preds = %712
  %716 = load i32, ptr %63, align 4, !tbaa !9
  %717 = icmp ne i32 %716, 0
  br i1 %717, label %718, label %804

718:                                              ; preds = %715
  %719 = load ptr, ptr %21, align 8, !tbaa !5
  %720 = load i32, ptr %719, align 4, !tbaa !9
  store i32 %720, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %721

721:                                              ; preds = %800, %718
  %722 = load i32, ptr %54, align 4, !tbaa !9
  %723 = load i32, ptr %42, align 4, !tbaa !9
  %724 = icmp sle i32 %722, %723
  br i1 %724, label %725, label %803

725:                                              ; preds = %721
  store double 0.000000e+00, ptr %55, align 8, !tbaa !11
  store i32 1, ptr %44, align 4, !tbaa !9
  %726 = load i32, ptr %54, align 4, !tbaa !9
  %727 = load ptr, ptr %22, align 8, !tbaa !5
  %728 = load i32, ptr %727, align 4, !tbaa !9
  %729 = sub nsw i32 %726, %728
  store i32 %729, ptr %45, align 4, !tbaa !9
  %730 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %730, ptr %43, align 4, !tbaa !9
  %731 = load i32, ptr %44, align 4, !tbaa !9
  %732 = load i32, ptr %45, align 4, !tbaa !9
  %733 = icmp sge i32 %731, %732
  br i1 %733, label %734, label %736

734:                                              ; preds = %725
  %735 = load i32, ptr %44, align 4, !tbaa !9
  br label %738

736:                                              ; preds = %725
  %737 = load i32, ptr %45, align 4, !tbaa !9
  br label %738

738:                                              ; preds = %736, %734
  %739 = phi i32 [ %735, %734 ], [ %737, %736 ]
  store i32 %739, ptr %52, align 4, !tbaa !9
  br label %740

740:                                              ; preds = %789, %738
  %741 = load i32, ptr %52, align 4, !tbaa !9
  %742 = load i32, ptr %43, align 4, !tbaa !9
  %743 = icmp sle i32 %741, %742
  br i1 %743, label %744, label %792

744:                                              ; preds = %740
  %745 = load ptr, ptr %24, align 8, !tbaa !5
  %746 = load ptr, ptr %22, align 8, !tbaa !5
  %747 = load i32, ptr %746, align 4, !tbaa !9
  %748 = add nsw i32 %747, 1
  %749 = load i32, ptr %52, align 4, !tbaa !9
  %750 = add nsw i32 %748, %749
  %751 = load i32, ptr %54, align 4, !tbaa !9
  %752 = sub nsw i32 %750, %751
  %753 = load i32, ptr %54, align 4, !tbaa !9
  %754 = load i32, ptr %35, align 4, !tbaa !9
  %755 = mul nsw i32 %753, %754
  %756 = add nsw i32 %752, %755
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %745, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !11
  store double %759, ptr %46, align 8, !tbaa !11
  %760 = load double, ptr %46, align 8, !tbaa !11
  %761 = fcmp oge double %760, 0.000000e+00
  br i1 %761, label %762, label %764

762:                                              ; preds = %744
  %763 = load double, ptr %46, align 8, !tbaa !11
  br label %767

764:                                              ; preds = %744
  %765 = load double, ptr %46, align 8, !tbaa !11
  %766 = fneg double %765
  br label %767

767:                                              ; preds = %764, %762
  %768 = phi double [ %763, %762 ], [ %766, %764 ]
  %769 = load ptr, ptr %28, align 8, !tbaa !5
  %770 = load i32, ptr %52, align 4, !tbaa !9
  %771 = load i32, ptr %53, align 4, !tbaa !9
  %772 = load i32, ptr %39, align 4, !tbaa !9
  %773 = mul nsw i32 %771, %772
  %774 = add nsw i32 %770, %773
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds double, ptr %769, i64 %775
  %777 = load double, ptr %776, align 8, !tbaa !11
  store double %777, ptr %47, align 8, !tbaa !11
  %778 = load double, ptr %47, align 8, !tbaa !11
  %779 = fcmp oge double %778, 0.000000e+00
  br i1 %779, label %780, label %782

780:                                              ; preds = %767
  %781 = load double, ptr %47, align 8, !tbaa !11
  br label %785

782:                                              ; preds = %767
  %783 = load double, ptr %47, align 8, !tbaa !11
  %784 = fneg double %783
  br label %785

785:                                              ; preds = %782, %780
  %786 = phi double [ %781, %780 ], [ %784, %782 ]
  %787 = load double, ptr %55, align 8, !tbaa !11
  %788 = call double @llvm.fmuladd.f64(double %768, double %786, double %787)
  store double %788, ptr %55, align 8, !tbaa !11
  br label %789

789:                                              ; preds = %785
  %790 = load i32, ptr %52, align 4, !tbaa !9
  %791 = add nsw i32 %790, 1
  store i32 %791, ptr %52, align 4, !tbaa !9
  br label %740, !llvm.loop !25

792:                                              ; preds = %740
  %793 = load double, ptr %55, align 8, !tbaa !11
  %794 = load ptr, ptr %32, align 8, !tbaa !5
  %795 = load i32, ptr %54, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds double, ptr %794, i64 %796
  %798 = load double, ptr %797, align 8, !tbaa !11
  %799 = fadd double %798, %793
  store double %799, ptr %797, align 8, !tbaa !11
  br label %800

800:                                              ; preds = %792
  %801 = load i32, ptr %54, align 4, !tbaa !9
  %802 = add nsw i32 %801, 1
  store i32 %802, ptr %54, align 4, !tbaa !9
  br label %721, !llvm.loop !26

803:                                              ; preds = %721
  br label %909

804:                                              ; preds = %715
  %805 = load ptr, ptr %21, align 8, !tbaa !5
  %806 = load i32, ptr %805, align 4, !tbaa !9
  store i32 %806, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %807

807:                                              ; preds = %905, %804
  %808 = load i32, ptr %54, align 4, !tbaa !9
  %809 = load i32, ptr %42, align 4, !tbaa !9
  %810 = icmp sle i32 %808, %809
  br i1 %810, label %811, label %908

811:                                              ; preds = %807
  %812 = load ptr, ptr %28, align 8, !tbaa !5
  %813 = load i32, ptr %54, align 4, !tbaa !9
  %814 = load i32, ptr %53, align 4, !tbaa !9
  %815 = load i32, ptr %39, align 4, !tbaa !9
  %816 = mul nsw i32 %814, %815
  %817 = add nsw i32 %813, %816
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds double, ptr %812, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  store double %820, ptr %46, align 8, !tbaa !11
  %821 = load double, ptr %46, align 8, !tbaa !11
  %822 = fcmp oge double %821, 0.000000e+00
  br i1 %822, label %823, label %825

823:                                              ; preds = %811
  %824 = load double, ptr %46, align 8, !tbaa !11
  br label %828

825:                                              ; preds = %811
  %826 = load double, ptr %46, align 8, !tbaa !11
  %827 = fneg double %826
  br label %828

828:                                              ; preds = %825, %823
  %829 = phi double [ %824, %823 ], [ %827, %825 ]
  store double %829, ptr %55, align 8, !tbaa !11
  store i32 1, ptr %43, align 4, !tbaa !9
  %830 = load i32, ptr %54, align 4, !tbaa !9
  %831 = load ptr, ptr %22, align 8, !tbaa !5
  %832 = load i32, ptr %831, align 4, !tbaa !9
  %833 = sub nsw i32 %830, %832
  store i32 %833, ptr %44, align 4, !tbaa !9
  %834 = load i32, ptr %54, align 4, !tbaa !9
  %835 = sub nsw i32 %834, 1
  store i32 %835, ptr %45, align 4, !tbaa !9
  %836 = load i32, ptr %43, align 4, !tbaa !9
  %837 = load i32, ptr %44, align 4, !tbaa !9
  %838 = icmp sge i32 %836, %837
  br i1 %838, label %839, label %841

839:                                              ; preds = %828
  %840 = load i32, ptr %43, align 4, !tbaa !9
  br label %843

841:                                              ; preds = %828
  %842 = load i32, ptr %44, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %841, %839
  %844 = phi i32 [ %840, %839 ], [ %842, %841 ]
  store i32 %844, ptr %52, align 4, !tbaa !9
  br label %845

845:                                              ; preds = %894, %843
  %846 = load i32, ptr %52, align 4, !tbaa !9
  %847 = load i32, ptr %45, align 4, !tbaa !9
  %848 = icmp sle i32 %846, %847
  br i1 %848, label %849, label %897

849:                                              ; preds = %845
  %850 = load ptr, ptr %24, align 8, !tbaa !5
  %851 = load ptr, ptr %22, align 8, !tbaa !5
  %852 = load i32, ptr %851, align 4, !tbaa !9
  %853 = add nsw i32 %852, 1
  %854 = load i32, ptr %52, align 4, !tbaa !9
  %855 = add nsw i32 %853, %854
  %856 = load i32, ptr %54, align 4, !tbaa !9
  %857 = sub nsw i32 %855, %856
  %858 = load i32, ptr %54, align 4, !tbaa !9
  %859 = load i32, ptr %35, align 4, !tbaa !9
  %860 = mul nsw i32 %858, %859
  %861 = add nsw i32 %857, %860
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %850, i64 %862
  %864 = load double, ptr %863, align 8, !tbaa !11
  store double %864, ptr %46, align 8, !tbaa !11
  %865 = load double, ptr %46, align 8, !tbaa !11
  %866 = fcmp oge double %865, 0.000000e+00
  br i1 %866, label %867, label %869

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

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

872:                                              ; preds = %869, %867
  %873 = phi double [ %868, %867 ], [ %871, %869 ]
  %874 = load ptr, ptr %28, align 8, !tbaa !5
  %875 = load i32, ptr %52, align 4, !tbaa !9
  %876 = load i32, ptr %53, align 4, !tbaa !9
  %877 = load i32, ptr %39, align 4, !tbaa !9
  %878 = mul nsw i32 %876, %877
  %879 = add nsw i32 %875, %878
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %874, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !11
  store double %882, ptr %47, align 8, !tbaa !11
  %883 = load double, ptr %47, align 8, !tbaa !11
  %884 = fcmp oge double %883, 0.000000e+00
  br i1 %884, label %885, label %887

885:                                              ; preds = %872
  %886 = load double, ptr %47, align 8, !tbaa !11
  br label %890

887:                                              ; preds = %872
  %888 = load double, ptr %47, align 8, !tbaa !11
  %889 = fneg double %888
  br label %890

890:                                              ; preds = %887, %885
  %891 = phi double [ %886, %885 ], [ %889, %887 ]
  %892 = load double, ptr %55, align 8, !tbaa !11
  %893 = call double @llvm.fmuladd.f64(double %873, double %891, double %892)
  store double %893, ptr %55, align 8, !tbaa !11
  br label %894

894:                                              ; preds = %890
  %895 = load i32, ptr %52, align 4, !tbaa !9
  %896 = add nsw i32 %895, 1
  store i32 %896, ptr %52, align 4, !tbaa !9
  br label %845, !llvm.loop !27

897:                                              ; preds = %845
  %898 = load double, ptr %55, align 8, !tbaa !11
  %899 = load ptr, ptr %32, align 8, !tbaa !5
  %900 = load i32, ptr %54, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds double, ptr %899, i64 %901
  %903 = load double, ptr %902, align 8, !tbaa !11
  %904 = fadd double %903, %898
  store double %904, ptr %902, align 8, !tbaa !11
  br label %905

905:                                              ; preds = %897
  %906 = load i32, ptr %54, align 4, !tbaa !9
  %907 = add nsw i32 %906, 1
  store i32 %907, ptr %54, align 4, !tbaa !9
  br label %807, !llvm.loop !28

908:                                              ; preds = %807
  br label %909

909:                                              ; preds = %908, %803
  br label %1103

910:                                              ; preds = %712
  %911 = load i32, ptr %63, align 4, !tbaa !9
  %912 = icmp ne i32 %911, 0
  br i1 %912, label %913, label %998

913:                                              ; preds = %910
  %914 = load ptr, ptr %21, align 8, !tbaa !5
  %915 = load i32, ptr %914, align 4, !tbaa !9
  store i32 %915, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %916

916:                                              ; preds = %994, %913
  %917 = load i32, ptr %54, align 4, !tbaa !9
  %918 = load i32, ptr %42, align 4, !tbaa !9
  %919 = icmp sle i32 %917, %918
  br i1 %919, label %920, label %997

920:                                              ; preds = %916
  store double 0.000000e+00, ptr %55, align 8, !tbaa !11
  %921 = load ptr, ptr %21, align 8, !tbaa !5
  %922 = load i32, ptr %921, align 4, !tbaa !9
  store i32 %922, ptr %43, align 4, !tbaa !9
  %923 = load i32, ptr %54, align 4, !tbaa !9
  %924 = load ptr, ptr %22, align 8, !tbaa !5
  %925 = load i32, ptr %924, align 4, !tbaa !9
  %926 = add nsw i32 %923, %925
  store i32 %926, ptr %44, align 4, !tbaa !9
  %927 = load i32, ptr %43, align 4, !tbaa !9
  %928 = load i32, ptr %44, align 4, !tbaa !9
  %929 = icmp sle i32 %927, %928
  br i1 %929, label %930, label %932

930:                                              ; preds = %920
  %931 = load i32, ptr %43, align 4, !tbaa !9
  br label %934

932:                                              ; preds = %920
  %933 = load i32, ptr %44, align 4, !tbaa !9
  br label %934

934:                                              ; preds = %932, %930
  %935 = phi i32 [ %931, %930 ], [ %933, %932 ]
  store i32 %935, ptr %45, align 4, !tbaa !9
  %936 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %936, ptr %52, align 4, !tbaa !9
  br label %937

937:                                              ; preds = %983, %934
  %938 = load i32, ptr %52, align 4, !tbaa !9
  %939 = load i32, ptr %45, align 4, !tbaa !9
  %940 = icmp sle i32 %938, %939
  br i1 %940, label %941, label %986

941:                                              ; preds = %937
  %942 = load ptr, ptr %24, align 8, !tbaa !5
  %943 = load i32, ptr %52, align 4, !tbaa !9
  %944 = add nsw i32 %943, 1
  %945 = load i32, ptr %54, align 4, !tbaa !9
  %946 = sub nsw i32 %944, %945
  %947 = load i32, ptr %54, align 4, !tbaa !9
  %948 = load i32, ptr %35, align 4, !tbaa !9
  %949 = mul nsw i32 %947, %948
  %950 = add nsw i32 %946, %949
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds double, ptr %942, i64 %951
  %953 = load double, ptr %952, align 8, !tbaa !11
  store double %953, ptr %46, align 8, !tbaa !11
  %954 = load double, ptr %46, align 8, !tbaa !11
  %955 = fcmp oge double %954, 0.000000e+00
  br i1 %955, label %956, label %958

956:                                              ; preds = %941
  %957 = load double, ptr %46, align 8, !tbaa !11
  br label %961

958:                                              ; preds = %941
  %959 = load double, ptr %46, align 8, !tbaa !11
  %960 = fneg double %959
  br label %961

961:                                              ; preds = %958, %956
  %962 = phi double [ %957, %956 ], [ %960, %958 ]
  %963 = load ptr, ptr %28, align 8, !tbaa !5
  %964 = load i32, ptr %52, align 4, !tbaa !9
  %965 = load i32, ptr %53, align 4, !tbaa !9
  %966 = load i32, ptr %39, align 4, !tbaa !9
  %967 = mul nsw i32 %965, %966
  %968 = add nsw i32 %964, %967
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %963, i64 %969
  %971 = load double, ptr %970, align 8, !tbaa !11
  store double %971, ptr %47, align 8, !tbaa !11
  %972 = load double, ptr %47, align 8, !tbaa !11
  %973 = fcmp oge double %972, 0.000000e+00
  br i1 %973, label %974, label %976

974:                                              ; preds = %961
  %975 = load double, ptr %47, align 8, !tbaa !11
  br label %979

976:                                              ; preds = %961
  %977 = load double, ptr %47, align 8, !tbaa !11
  %978 = fneg double %977
  br label %979

979:                                              ; preds = %976, %974
  %980 = phi double [ %975, %974 ], [ %978, %976 ]
  %981 = load double, ptr %55, align 8, !tbaa !11
  %982 = call double @llvm.fmuladd.f64(double %962, double %980, double %981)
  store double %982, ptr %55, align 8, !tbaa !11
  br label %983

983:                                              ; preds = %979
  %984 = load i32, ptr %52, align 4, !tbaa !9
  %985 = add nsw i32 %984, 1
  store i32 %985, ptr %52, align 4, !tbaa !9
  br label %937, !llvm.loop !29

986:                                              ; preds = %937
  %987 = load double, ptr %55, align 8, !tbaa !11
  %988 = load ptr, ptr %32, align 8, !tbaa !5
  %989 = load i32, ptr %54, align 4, !tbaa !9
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds double, ptr %988, i64 %990
  %992 = load double, ptr %991, align 8, !tbaa !11
  %993 = fadd double %992, %987
  store double %993, ptr %991, align 8, !tbaa !11
  br label %994

994:                                              ; preds = %986
  %995 = load i32, ptr %54, align 4, !tbaa !9
  %996 = add nsw i32 %995, 1
  store i32 %996, ptr %54, align 4, !tbaa !9
  br label %916, !llvm.loop !30

997:                                              ; preds = %916
  br label %1102

998:                                              ; preds = %910
  %999 = load ptr, ptr %21, align 8, !tbaa !5
  %1000 = load i32, ptr %999, align 4, !tbaa !9
  store i32 %1000, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %1001

1001:                                             ; preds = %1098, %998
  %1002 = load i32, ptr %54, align 4, !tbaa !9
  %1003 = load i32, ptr %42, align 4, !tbaa !9
  %1004 = icmp sle i32 %1002, %1003
  br i1 %1004, label %1005, label %1101

1005:                                             ; preds = %1001
  %1006 = load ptr, ptr %28, align 8, !tbaa !5
  %1007 = load i32, ptr %54, align 4, !tbaa !9
  %1008 = load i32, ptr %53, align 4, !tbaa !9
  %1009 = load i32, ptr %39, align 4, !tbaa !9
  %1010 = mul nsw i32 %1008, %1009
  %1011 = add nsw i32 %1007, %1010
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds double, ptr %1006, i64 %1012
  %1014 = load double, ptr %1013, align 8, !tbaa !11
  store double %1014, ptr %46, align 8, !tbaa !11
  %1015 = load double, ptr %46, align 8, !tbaa !11
  %1016 = fcmp oge double %1015, 0.000000e+00
  br i1 %1016, label %1017, label %1019

1017:                                             ; preds = %1005
  %1018 = load double, ptr %46, align 8, !tbaa !11
  br label %1022

1019:                                             ; preds = %1005
  %1020 = load double, ptr %46, align 8, !tbaa !11
  %1021 = fneg double %1020
  br label %1022

1022:                                             ; preds = %1019, %1017
  %1023 = phi double [ %1018, %1017 ], [ %1021, %1019 ]
  store double %1023, ptr %55, align 8, !tbaa !11
  %1024 = load ptr, ptr %21, align 8, !tbaa !5
  %1025 = load i32, ptr %1024, align 4, !tbaa !9
  store i32 %1025, ptr %43, align 4, !tbaa !9
  %1026 = load i32, ptr %54, align 4, !tbaa !9
  %1027 = load ptr, ptr %22, align 8, !tbaa !5
  %1028 = load i32, ptr %1027, align 4, !tbaa !9
  %1029 = add nsw i32 %1026, %1028
  store i32 %1029, ptr %44, align 4, !tbaa !9
  %1030 = load i32, ptr %43, align 4, !tbaa !9
  %1031 = load i32, ptr %44, align 4, !tbaa !9
  %1032 = icmp sle i32 %1030, %1031
  br i1 %1032, label %1033, label %1035

1033:                                             ; preds = %1022
  %1034 = load i32, ptr %43, align 4, !tbaa !9
  br label %1037

1035:                                             ; preds = %1022
  %1036 = load i32, ptr %44, align 4, !tbaa !9
  br label %1037

1037:                                             ; preds = %1035, %1033
  %1038 = phi i32 [ %1034, %1033 ], [ %1036, %1035 ]
  store i32 %1038, ptr %45, align 4, !tbaa !9
  %1039 = load i32, ptr %54, align 4, !tbaa !9
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr %52, align 4, !tbaa !9
  br label %1041

1041:                                             ; preds = %1087, %1037
  %1042 = load i32, ptr %52, align 4, !tbaa !9
  %1043 = load i32, ptr %45, align 4, !tbaa !9
  %1044 = icmp sle i32 %1042, %1043
  br i1 %1044, label %1045, label %1090

1045:                                             ; preds = %1041
  %1046 = load ptr, ptr %24, align 8, !tbaa !5
  %1047 = load i32, ptr %52, align 4, !tbaa !9
  %1048 = add nsw i32 %1047, 1
  %1049 = load i32, ptr %54, align 4, !tbaa !9
  %1050 = sub nsw i32 %1048, %1049
  %1051 = load i32, ptr %54, align 4, !tbaa !9
  %1052 = load i32, ptr %35, align 4, !tbaa !9
  %1053 = mul nsw i32 %1051, %1052
  %1054 = add nsw i32 %1050, %1053
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds double, ptr %1046, i64 %1055
  %1057 = load double, ptr %1056, align 8, !tbaa !11
  store double %1057, ptr %46, align 8, !tbaa !11
  %1058 = load double, ptr %46, align 8, !tbaa !11
  %1059 = fcmp oge double %1058, 0.000000e+00
  br i1 %1059, label %1060, label %1062

1060:                                             ; preds = %1045
  %1061 = load double, ptr %46, align 8, !tbaa !11
  br label %1065

1062:                                             ; preds = %1045
  %1063 = load double, ptr %46, align 8, !tbaa !11
  %1064 = fneg double %1063
  br label %1065

1065:                                             ; preds = %1062, %1060
  %1066 = phi double [ %1061, %1060 ], [ %1064, %1062 ]
  %1067 = load ptr, ptr %28, align 8, !tbaa !5
  %1068 = load i32, ptr %52, align 4, !tbaa !9
  %1069 = load i32, ptr %53, align 4, !tbaa !9
  %1070 = load i32, ptr %39, align 4, !tbaa !9
  %1071 = mul nsw i32 %1069, %1070
  %1072 = add nsw i32 %1068, %1071
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds double, ptr %1067, i64 %1073
  %1075 = load double, ptr %1074, align 8, !tbaa !11
  store double %1075, ptr %47, align 8, !tbaa !11
  %1076 = load double, ptr %47, align 8, !tbaa !11
  %1077 = fcmp oge double %1076, 0.000000e+00
  br i1 %1077, label %1078, label %1080

1078:                                             ; preds = %1065
  %1079 = load double, ptr %47, align 8, !tbaa !11
  br label %1083

1080:                                             ; preds = %1065
  %1081 = load double, ptr %47, align 8, !tbaa !11
  %1082 = fneg double %1081
  br label %1083

1083:                                             ; preds = %1080, %1078
  %1084 = phi double [ %1079, %1078 ], [ %1082, %1080 ]
  %1085 = load double, ptr %55, align 8, !tbaa !11
  %1086 = call double @llvm.fmuladd.f64(double %1066, double %1084, double %1085)
  store double %1086, ptr %55, align 8, !tbaa !11
  br label %1087

1087:                                             ; preds = %1083
  %1088 = load i32, ptr %52, align 4, !tbaa !9
  %1089 = add nsw i32 %1088, 1
  store i32 %1089, ptr %52, align 4, !tbaa !9
  br label %1041, !llvm.loop !31

1090:                                             ; preds = %1041
  %1091 = load double, ptr %55, align 8, !tbaa !11
  %1092 = load ptr, ptr %32, align 8, !tbaa !5
  %1093 = load i32, ptr %54, align 4, !tbaa !9
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds double, ptr %1092, i64 %1094
  %1096 = load double, ptr %1095, align 8, !tbaa !11
  %1097 = fadd double %1096, %1091
  store double %1097, ptr %1095, align 8, !tbaa !11
  br label %1098

1098:                                             ; preds = %1090
  %1099 = load i32, ptr %54, align 4, !tbaa !9
  %1100 = add nsw i32 %1099, 1
  store i32 %1100, ptr %54, align 4, !tbaa !9
  br label %1001, !llvm.loop !32

1101:                                             ; preds = %1001
  br label %1102

1102:                                             ; preds = %1101, %997
  br label %1103

1103:                                             ; preds = %1102, %909
  br label %1104

1104:                                             ; preds = %1103, %711
  store double 0.000000e+00, ptr %55, align 8, !tbaa !11
  %1105 = load ptr, ptr %21, align 8, !tbaa !5
  %1106 = load i32, ptr %1105, align 4, !tbaa !9
  store i32 %1106, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1107

1107:                                             ; preds = %1192, %1104
  %1108 = load i32, ptr %52, align 4, !tbaa !9
  %1109 = load i32, ptr %42, align 4, !tbaa !9
  %1110 = icmp sle i32 %1108, %1109
  br i1 %1110, label %1111, label %1195

1111:                                             ; preds = %1107
  %1112 = load ptr, ptr %32, align 8, !tbaa !5
  %1113 = load i32, ptr %52, align 4, !tbaa !9
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds double, ptr %1112, i64 %1114
  %1116 = load double, ptr %1115, align 8, !tbaa !11
  %1117 = load double, ptr %51, align 8, !tbaa !11
  %1118 = fcmp ogt double %1116, %1117
  br i1 %1118, label %1119, label %1153

1119:                                             ; preds = %1111
  %1120 = load double, ptr %55, align 8, !tbaa !11
  store double %1120, ptr %47, align 8, !tbaa !11
  %1121 = load ptr, ptr %32, align 8, !tbaa !5
  %1122 = load ptr, ptr %21, align 8, !tbaa !5
  %1123 = load i32, ptr %1122, align 4, !tbaa !9
  %1124 = load i32, ptr %52, align 4, !tbaa !9
  %1125 = add nsw i32 %1123, %1124
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds double, ptr %1121, i64 %1126
  %1128 = load double, ptr %1127, align 8, !tbaa !11
  store double %1128, ptr %46, align 8, !tbaa !11
  %1129 = load double, ptr %46, align 8, !tbaa !11
  %1130 = fcmp oge double %1129, 0.000000e+00
  br i1 %1130, label %1131, label %1133

1131:                                             ; preds = %1119
  %1132 = load double, ptr %46, align 8, !tbaa !11
  br label %1136

1133:                                             ; preds = %1119
  %1134 = load double, ptr %46, align 8, !tbaa !11
  %1135 = fneg double %1134
  br label %1136

1136:                                             ; preds = %1133, %1131
  %1137 = phi double [ %1132, %1131 ], [ %1135, %1133 ]
  %1138 = load ptr, ptr %32, align 8, !tbaa !5
  %1139 = load i32, ptr %52, align 4, !tbaa !9
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds double, ptr %1138, i64 %1140
  %1142 = load double, ptr %1141, align 8, !tbaa !11
  %1143 = fdiv double %1137, %1142
  store double %1143, ptr %48, align 8, !tbaa !11
  %1144 = load double, ptr %47, align 8, !tbaa !11
  %1145 = load double, ptr %48, align 8, !tbaa !11
  %1146 = fcmp oge double %1144, %1145
  br i1 %1146, label %1147, label %1149

1147:                                             ; preds = %1136
  %1148 = load double, ptr %47, align 8, !tbaa !11
  br label %1151

1149:                                             ; preds = %1136
  %1150 = load double, ptr %48, align 8, !tbaa !11
  br label %1151

1151:                                             ; preds = %1149, %1147
  %1152 = phi double [ %1148, %1147 ], [ %1150, %1149 ]
  store double %1152, ptr %55, align 8, !tbaa !11
  br label %1191

1153:                                             ; preds = %1111
  %1154 = load double, ptr %55, align 8, !tbaa !11
  store double %1154, ptr %47, align 8, !tbaa !11
  %1155 = load ptr, ptr %32, align 8, !tbaa !5
  %1156 = load ptr, ptr %21, align 8, !tbaa !5
  %1157 = load i32, ptr %1156, align 4, !tbaa !9
  %1158 = load i32, ptr %52, align 4, !tbaa !9
  %1159 = add nsw i32 %1157, %1158
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds double, ptr %1155, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !11
  store double %1162, ptr %46, align 8, !tbaa !11
  %1163 = load double, ptr %46, align 8, !tbaa !11
  %1164 = fcmp oge double %1163, 0.000000e+00
  br i1 %1164, label %1165, label %1167

1165:                                             ; preds = %1153
  %1166 = load double, ptr %46, align 8, !tbaa !11
  br label %1170

1167:                                             ; preds = %1153
  %1168 = load double, ptr %46, align 8, !tbaa !11
  %1169 = fneg double %1168
  br label %1170

1170:                                             ; preds = %1167, %1165
  %1171 = phi double [ %1166, %1165 ], [ %1169, %1167 ]
  %1172 = load double, ptr %50, align 8, !tbaa !11
  %1173 = fadd double %1171, %1172
  %1174 = load ptr, ptr %32, align 8, !tbaa !5
  %1175 = load i32, ptr %52, align 4, !tbaa !9
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds double, ptr %1174, i64 %1176
  %1178 = load double, ptr %1177, align 8, !tbaa !11
  %1179 = load double, ptr %50, align 8, !tbaa !11
  %1180 = fadd double %1178, %1179
  %1181 = fdiv double %1173, %1180
  store double %1181, ptr %48, align 8, !tbaa !11
  %1182 = load double, ptr %47, align 8, !tbaa !11
  %1183 = load double, ptr %48, align 8, !tbaa !11
  %1184 = fcmp oge double %1182, %1183
  br i1 %1184, label %1185, label %1187

1185:                                             ; preds = %1170
  %1186 = load double, ptr %47, align 8, !tbaa !11
  br label %1189

1187:                                             ; preds = %1170
  %1188 = load double, ptr %48, align 8, !tbaa !11
  br label %1189

1189:                                             ; preds = %1187, %1185
  %1190 = phi double [ %1186, %1185 ], [ %1188, %1187 ]
  store double %1190, ptr %55, align 8, !tbaa !11
  br label %1191

1191:                                             ; preds = %1189, %1151
  br label %1192

1192:                                             ; preds = %1191
  %1193 = load i32, ptr %52, align 4, !tbaa !9
  %1194 = add nsw i32 %1193, 1
  store i32 %1194, ptr %52, align 4, !tbaa !9
  br label %1107, !llvm.loop !33

1195:                                             ; preds = %1107
  %1196 = load double, ptr %55, align 8, !tbaa !11
  %1197 = load ptr, ptr %31, align 8, !tbaa !5
  %1198 = load i32, ptr %53, align 4, !tbaa !9
  %1199 = sext i32 %1198 to i64
  %1200 = getelementptr inbounds double, ptr %1197, i64 %1199
  store double %1196, ptr %1200, align 8, !tbaa !11
  %1201 = load ptr, ptr %21, align 8, !tbaa !5
  %1202 = load i32, ptr %1201, align 4, !tbaa !9
  store i32 %1202, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1203

1203:                                             ; preds = %1282, %1195
  %1204 = load i32, ptr %52, align 4, !tbaa !9
  %1205 = load i32, ptr %42, align 4, !tbaa !9
  %1206 = icmp sle i32 %1204, %1205
  br i1 %1206, label %1207, label %1285

1207:                                             ; preds = %1203
  %1208 = load ptr, ptr %32, align 8, !tbaa !5
  %1209 = load i32, ptr %52, align 4, !tbaa !9
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds double, ptr %1208, i64 %1210
  %1212 = load double, ptr %1211, align 8, !tbaa !11
  %1213 = load double, ptr %51, align 8, !tbaa !11
  %1214 = fcmp ogt double %1212, %1213
  br i1 %1214, label %1215, label %1247

1215:                                             ; preds = %1207
  %1216 = load ptr, ptr %32, align 8, !tbaa !5
  %1217 = load ptr, ptr %21, align 8, !tbaa !5
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = load i32, ptr %52, align 4, !tbaa !9
  %1220 = add nsw i32 %1218, %1219
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds double, ptr %1216, i64 %1221
  %1223 = load double, ptr %1222, align 8, !tbaa !11
  store double %1223, ptr %46, align 8, !tbaa !11
  %1224 = load double, ptr %46, align 8, !tbaa !11
  %1225 = fcmp oge double %1224, 0.000000e+00
  br i1 %1225, label %1226, label %1228

1226:                                             ; preds = %1215
  %1227 = load double, ptr %46, align 8, !tbaa !11
  br label %1231

1228:                                             ; preds = %1215
  %1229 = load double, ptr %46, align 8, !tbaa !11
  %1230 = fneg double %1229
  br label %1231

1231:                                             ; preds = %1228, %1226
  %1232 = phi double [ %1227, %1226 ], [ %1230, %1228 ]
  %1233 = load i32, ptr %59, align 4, !tbaa !9
  %1234 = sitofp i32 %1233 to double
  %1235 = load double, ptr %65, align 8, !tbaa !11
  %1236 = fmul double %1234, %1235
  %1237 = load ptr, ptr %32, align 8, !tbaa !5
  %1238 = load i32, ptr %52, align 4, !tbaa !9
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds double, ptr %1237, i64 %1239
  %1241 = load double, ptr %1240, align 8, !tbaa !11
  %1242 = call double @llvm.fmuladd.f64(double %1236, double %1241, double %1232)
  %1243 = load ptr, ptr %32, align 8, !tbaa !5
  %1244 = load i32, ptr %52, align 4, !tbaa !9
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds double, ptr %1243, i64 %1245
  store double %1242, ptr %1246, align 8, !tbaa !11
  br label %1281

1247:                                             ; preds = %1207
  %1248 = load ptr, ptr %32, align 8, !tbaa !5
  %1249 = load ptr, ptr %21, align 8, !tbaa !5
  %1250 = load i32, ptr %1249, align 4, !tbaa !9
  %1251 = load i32, ptr %52, align 4, !tbaa !9
  %1252 = add nsw i32 %1250, %1251
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds double, ptr %1248, i64 %1253
  %1255 = load double, ptr %1254, align 8, !tbaa !11
  store double %1255, ptr %46, align 8, !tbaa !11
  %1256 = load double, ptr %46, align 8, !tbaa !11
  %1257 = fcmp oge double %1256, 0.000000e+00
  br i1 %1257, label %1258, label %1260

1258:                                             ; preds = %1247
  %1259 = load double, ptr %46, align 8, !tbaa !11
  br label %1263

1260:                                             ; preds = %1247
  %1261 = load double, ptr %46, align 8, !tbaa !11
  %1262 = fneg double %1261
  br label %1263

1263:                                             ; preds = %1260, %1258
  %1264 = phi double [ %1259, %1258 ], [ %1262, %1260 ]
  %1265 = load i32, ptr %59, align 4, !tbaa !9
  %1266 = sitofp i32 %1265 to double
  %1267 = load double, ptr %65, align 8, !tbaa !11
  %1268 = fmul double %1266, %1267
  %1269 = load ptr, ptr %32, align 8, !tbaa !5
  %1270 = load i32, ptr %52, align 4, !tbaa !9
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds double, ptr %1269, i64 %1271
  %1273 = load double, ptr %1272, align 8, !tbaa !11
  %1274 = call double @llvm.fmuladd.f64(double %1268, double %1273, double %1264)
  %1275 = load double, ptr %50, align 8, !tbaa !11
  %1276 = fadd double %1274, %1275
  %1277 = load ptr, ptr %32, align 8, !tbaa !5
  %1278 = load i32, ptr %52, align 4, !tbaa !9
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds double, ptr %1277, i64 %1279
  store double %1276, ptr %1280, align 8, !tbaa !11
  br label %1281

1281:                                             ; preds = %1263, %1231
  br label %1282

1282:                                             ; preds = %1281
  %1283 = load i32, ptr %52, align 4, !tbaa !9
  %1284 = add nsw i32 %1283, 1
  store i32 %1284, ptr %52, align 4, !tbaa !9
  br label %1203, !llvm.loop !34

1285:                                             ; preds = %1203
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %1286

1286:                                             ; preds = %1411, %1285
  %1287 = load ptr, ptr %21, align 8, !tbaa !5
  %1288 = load ptr, ptr %32, align 8, !tbaa !5
  %1289 = load ptr, ptr %21, align 8, !tbaa !5
  %1290 = load i32, ptr %1289, align 4, !tbaa !9
  %1291 = shl i32 %1290, 1
  %1292 = add nsw i32 %1291, 1
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds double, ptr %1288, i64 %1293
  %1295 = load ptr, ptr %32, align 8, !tbaa !5
  %1296 = load ptr, ptr %21, align 8, !tbaa !5
  %1297 = load i32, ptr %1296, align 4, !tbaa !9
  %1298 = add nsw i32 %1297, 1
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds double, ptr %1295, i64 %1299
  %1301 = load ptr, ptr %33, align 8, !tbaa !5
  %1302 = getelementptr inbounds i32, ptr %1301, i64 1
  %1303 = load ptr, ptr %30, align 8, !tbaa !5
  %1304 = load i32, ptr %53, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1303, i64 %1305
  %1307 = getelementptr inbounds [3 x i32], ptr %56, i64 0, i64 0
  call void @dlacn2_(ptr noundef %1287, ptr noundef %1294, ptr noundef %1300, ptr noundef %1302, ptr noundef %1306, ptr noundef %49, ptr noundef %1307)
  %1308 = load i32, ptr %49, align 4, !tbaa !9
  %1309 = icmp ne i32 %1308, 0
  br i1 %1309, label %1310, label %1412

1310:                                             ; preds = %1286
  %1311 = load i32, ptr %49, align 4, !tbaa !9
  %1312 = icmp eq i32 %1311, 1
  br i1 %1312, label %1313, label %1362

1313:                                             ; preds = %1310
  %1314 = load ptr, ptr %18, align 8, !tbaa !5
  %1315 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  %1316 = load ptr, ptr %20, align 8, !tbaa !5
  %1317 = load ptr, ptr %21, align 8, !tbaa !5
  %1318 = load ptr, ptr %22, align 8, !tbaa !5
  %1319 = load ptr, ptr %24, align 8, !tbaa !5
  %1320 = load i32, ptr %36, align 4, !tbaa !9
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds double, ptr %1319, i64 %1321
  %1323 = load ptr, ptr %25, align 8, !tbaa !5
  %1324 = load ptr, ptr %32, align 8, !tbaa !5
  %1325 = load ptr, ptr %21, align 8, !tbaa !5
  %1326 = load i32, ptr %1325, align 4, !tbaa !9
  %1327 = add nsw i32 %1326, 1
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds double, ptr %1324, i64 %1328
  call void @dtbsv_(ptr noundef %1314, ptr noundef %1315, ptr noundef %1316, ptr noundef %1317, ptr noundef %1318, ptr noundef %1322, ptr noundef %1323, ptr noundef %1329, ptr noundef @c__1)
  %1330 = load ptr, ptr %21, align 8, !tbaa !5
  %1331 = load i32, ptr %1330, align 4, !tbaa !9
  store i32 %1331, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1332

1332:                                             ; preds = %1358, %1313
  %1333 = load i32, ptr %52, align 4, !tbaa !9
  %1334 = load i32, ptr %42, align 4, !tbaa !9
  %1335 = icmp sle i32 %1333, %1334
  br i1 %1335, label %1336, label %1361

1336:                                             ; preds = %1332
  %1337 = load ptr, ptr %32, align 8, !tbaa !5
  %1338 = load i32, ptr %52, align 4, !tbaa !9
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds double, ptr %1337, i64 %1339
  %1341 = load double, ptr %1340, align 8, !tbaa !11
  %1342 = load ptr, ptr %32, align 8, !tbaa !5
  %1343 = load ptr, ptr %21, align 8, !tbaa !5
  %1344 = load i32, ptr %1343, align 4, !tbaa !9
  %1345 = load i32, ptr %52, align 4, !tbaa !9
  %1346 = add nsw i32 %1344, %1345
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds double, ptr %1342, i64 %1347
  %1349 = load double, ptr %1348, align 8, !tbaa !11
  %1350 = fmul double %1341, %1349
  %1351 = load ptr, ptr %32, align 8, !tbaa !5
  %1352 = load ptr, ptr %21, align 8, !tbaa !5
  %1353 = load i32, ptr %1352, align 4, !tbaa !9
  %1354 = load i32, ptr %52, align 4, !tbaa !9
  %1355 = add nsw i32 %1353, %1354
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds double, ptr %1351, i64 %1356
  store double %1350, ptr %1357, align 8, !tbaa !11
  br label %1358

1358:                                             ; preds = %1336
  %1359 = load i32, ptr %52, align 4, !tbaa !9
  %1360 = add nsw i32 %1359, 1
  store i32 %1360, ptr %52, align 4, !tbaa !9
  br label %1332, !llvm.loop !35

1361:                                             ; preds = %1332
  br label %1411

1362:                                             ; preds = %1310
  %1363 = load ptr, ptr %21, align 8, !tbaa !5
  %1364 = load i32, ptr %1363, align 4, !tbaa !9
  store i32 %1364, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1365

1365:                                             ; preds = %1391, %1362
  %1366 = load i32, ptr %52, align 4, !tbaa !9
  %1367 = load i32, ptr %42, align 4, !tbaa !9
  %1368 = icmp sle i32 %1366, %1367
  br i1 %1368, label %1369, label %1394

1369:                                             ; preds = %1365
  %1370 = load ptr, ptr %32, align 8, !tbaa !5
  %1371 = load i32, ptr %52, align 4, !tbaa !9
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds double, ptr %1370, i64 %1372
  %1374 = load double, ptr %1373, align 8, !tbaa !11
  %1375 = load ptr, ptr %32, align 8, !tbaa !5
  %1376 = load ptr, ptr %21, align 8, !tbaa !5
  %1377 = load i32, ptr %1376, align 4, !tbaa !9
  %1378 = load i32, ptr %52, align 4, !tbaa !9
  %1379 = add nsw i32 %1377, %1378
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds double, ptr %1375, i64 %1380
  %1382 = load double, ptr %1381, align 8, !tbaa !11
  %1383 = fmul double %1374, %1382
  %1384 = load ptr, ptr %32, align 8, !tbaa !5
  %1385 = load ptr, ptr %21, align 8, !tbaa !5
  %1386 = load i32, ptr %1385, align 4, !tbaa !9
  %1387 = load i32, ptr %52, align 4, !tbaa !9
  %1388 = add nsw i32 %1386, %1387
  %1389 = sext i32 %1388 to i64
  %1390 = getelementptr inbounds double, ptr %1384, i64 %1389
  store double %1383, ptr %1390, align 8, !tbaa !11
  br label %1391

1391:                                             ; preds = %1369
  %1392 = load i32, ptr %52, align 4, !tbaa !9
  %1393 = add nsw i32 %1392, 1
  store i32 %1393, ptr %52, align 4, !tbaa !9
  br label %1365, !llvm.loop !36

1394:                                             ; preds = %1365
  %1395 = load ptr, ptr %18, align 8, !tbaa !5
  %1396 = load ptr, ptr %19, align 8, !tbaa !5
  %1397 = load ptr, ptr %20, align 8, !tbaa !5
  %1398 = load ptr, ptr %21, align 8, !tbaa !5
  %1399 = load ptr, ptr %22, align 8, !tbaa !5
  %1400 = load ptr, ptr %24, align 8, !tbaa !5
  %1401 = load i32, ptr %36, align 4, !tbaa !9
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds double, ptr %1400, i64 %1402
  %1404 = load ptr, ptr %25, align 8, !tbaa !5
  %1405 = load ptr, ptr %32, align 8, !tbaa !5
  %1406 = load ptr, ptr %21, align 8, !tbaa !5
  %1407 = load i32, ptr %1406, align 4, !tbaa !9
  %1408 = add nsw i32 %1407, 1
  %1409 = sext i32 %1408 to i64
  %1410 = getelementptr inbounds double, ptr %1405, i64 %1409
  call void @dtbsv_(ptr noundef %1395, ptr noundef %1396, ptr noundef %1397, ptr noundef %1398, ptr noundef %1399, ptr noundef %1403, ptr noundef %1404, ptr noundef %1410, ptr noundef @c__1)
  br label %1411

1411:                                             ; preds = %1394, %1361
  br label %1286

1412:                                             ; preds = %1286
  store double 0.000000e+00, ptr %64, align 8, !tbaa !11
  %1413 = load ptr, ptr %21, align 8, !tbaa !5
  %1414 = load i32, ptr %1413, align 4, !tbaa !9
  store i32 %1414, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %1415

1415:                                             ; preds = %1448, %1412
  %1416 = load i32, ptr %52, align 4, !tbaa !9
  %1417 = load i32, ptr %42, align 4, !tbaa !9
  %1418 = icmp sle i32 %1416, %1417
  br i1 %1418, label %1419, label %1451

1419:                                             ; preds = %1415
  %1420 = load double, ptr %64, align 8, !tbaa !11
  store double %1420, ptr %47, align 8, !tbaa !11
  %1421 = load ptr, ptr %28, align 8, !tbaa !5
  %1422 = load i32, ptr %52, align 4, !tbaa !9
  %1423 = load i32, ptr %53, align 4, !tbaa !9
  %1424 = load i32, ptr %39, align 4, !tbaa !9
  %1425 = mul nsw i32 %1423, %1424
  %1426 = add nsw i32 %1422, %1425
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds double, ptr %1421, i64 %1427
  %1429 = load double, ptr %1428, align 8, !tbaa !11
  store double %1429, ptr %46, align 8, !tbaa !11
  %1430 = load double, ptr %46, align 8, !tbaa !11
  %1431 = fcmp oge double %1430, 0.000000e+00
  br i1 %1431, label %1432, label %1434

1432:                                             ; preds = %1419
  %1433 = load double, ptr %46, align 8, !tbaa !11
  br label %1437

1434:                                             ; preds = %1419
  %1435 = load double, ptr %46, align 8, !tbaa !11
  %1436 = fneg double %1435
  br label %1437

1437:                                             ; preds = %1434, %1432
  %1438 = phi double [ %1433, %1432 ], [ %1436, %1434 ]
  store double %1438, ptr %48, align 8, !tbaa !11
  %1439 = load double, ptr %47, align 8, !tbaa !11
  %1440 = load double, ptr %48, align 8, !tbaa !11
  %1441 = fcmp oge double %1439, %1440
  br i1 %1441, label %1442, label %1444

1442:                                             ; preds = %1437
  %1443 = load double, ptr %47, align 8, !tbaa !11
  br label %1446

1444:                                             ; preds = %1437
  %1445 = load double, ptr %48, align 8, !tbaa !11
  br label %1446

1446:                                             ; preds = %1444, %1442
  %1447 = phi double [ %1443, %1442 ], [ %1445, %1444 ]
  store double %1447, ptr %64, align 8, !tbaa !11
  br label %1448

1448:                                             ; preds = %1446
  %1449 = load i32, ptr %52, align 4, !tbaa !9
  %1450 = add nsw i32 %1449, 1
  store i32 %1450, ptr %52, align 4, !tbaa !9
  br label %1415, !llvm.loop !37

1451:                                             ; preds = %1415
  %1452 = load double, ptr %64, align 8, !tbaa !11
  %1453 = fcmp une double %1452, 0.000000e+00
  br i1 %1453, label %1454, label %1462

1454:                                             ; preds = %1451
  %1455 = load double, ptr %64, align 8, !tbaa !11
  %1456 = load ptr, ptr %30, align 8, !tbaa !5
  %1457 = load i32, ptr %53, align 4, !tbaa !9
  %1458 = sext i32 %1457 to i64
  %1459 = getelementptr inbounds double, ptr %1456, i64 %1458
  %1460 = load double, ptr %1459, align 8, !tbaa !11
  %1461 = fdiv double %1460, %1455
  store double %1461, ptr %1459, align 8, !tbaa !11
  br label %1462

1462:                                             ; preds = %1454, %1451
  br label %1463

1463:                                             ; preds = %1462
  %1464 = load i32, ptr %53, align 4, !tbaa !9
  %1465 = add nsw i32 %1464, 1
  store i32 %1465, ptr %53, align 4, !tbaa !9
  br label %266, !llvm.loop !38

1466:                                             ; preds = %266
  store i32 1, ptr %66, align 4
  br label %1467

1467:                                             ; preds = %1466, %243, %211
  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 4, 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 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #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 @dtbmv_(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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

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

43:                                               ; preds = %41, %17
  %.not565 = icmp eq i32 %39, 0
  br i1 %.not565, label %44, label %48

44:                                               ; preds = %43
  %45 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not566 = icmp eq i32 %45, 0
  br i1 %.not566, label %46, label %48

46:                                               ; preds = %44
  %47 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %.not567 = icmp eq i32 %47, 0
  br i1 %.not567, label %.thread.sink.split, label %48

48:                                               ; preds = %46, %44, %43
  %.not568 = icmp eq i32 %40, 0
  br i1 %.not568, label %49, label %51

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

51:                                               ; preds = %49, %48
  %52 = load i32, ptr %3, align 4, !tbaa !5
  %53 = icmp slt i32 %52, 0
  br i1 %53, label %.thread.sink.split, label %54

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

57:                                               ; preds = %54
  %58 = load i32, ptr %5, align 4, !tbaa !5
  %59 = icmp slt i32 %58, 0
  br i1 %59, label %.thread.sink.split, label %60

60:                                               ; preds = %57
  %61 = load i32, ptr %7, align 4, !tbaa !5
  %.not570 = icmp sgt i32 %61, %55
  br i1 %.not570, label %62, label %.thread.sink.split

62:                                               ; preds = %60
  %63 = load i32, ptr %9, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %52, i32 1)
  %64 = icmp slt i32 %63, %spec.select
  br i1 %64, label %.thread.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i32, ptr %11, align 4, !tbaa !5
  %67 = icmp slt i32 %66, %spec.select
  br i1 %67, label %.thread.sink.split, label %68

68:                                               ; preds = %65
  %.pr = load i32, ptr %16, align 4, !tbaa !5
  %.not571 = icmp eq i32 %.pr, 0
  br i1 %.not571, label %72, label %.thread

.thread.sink.split:                               ; preds = %65, %62, %60, %57, %54, %51, %49, %46, %41
  %.sink = phi i32 [ -1, %41 ], [ -2, %46 ], [ -3, %49 ], [ -4, %51 ], [ -5, %54 ], [ -6, %57 ], [ -8, %60 ], [ -10, %62 ], [ -12, %65 ]
  store i32 %.sink, ptr %16, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %68
  %69 = phi i32 [ %.pr, %68 ], [ %.sink, %.thread.sink.split ]
  %70 = sub nsw i32 0, %69
  store i32 %70, ptr %22, align 4, !tbaa !5
  %71 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %22, i32 noundef 6) #5
  br label %.loopexit

72:                                               ; preds = %68
  %73 = icmp eq i32 %52, 0
  %.not607746 = icmp eq i32 %58, 0
  br i1 %73, label %75, label %74

74:                                               ; preds = %72
  br i1 %.not607746, label %.loopexit, label %98

75:                                               ; preds = %72
  br i1 %.not607746, label %.loopexit, label %.lr.ph749.preheader

.lr.ph749.preheader:                              ; preds = %75
  %76 = add nuw i32 %58, 1
  %wide.trip.count884 = zext i32 %76 to i64
  %77 = zext nneg i32 %58 to i64
  %min.iters.check1161 = icmp ult i32 %58, 4
  %78 = sub i64 %19, %18
  %diff.check1158 = icmp ult i64 %78, 32
  %or.cond = or i1 %min.iters.check1161, %diff.check1158
  br i1 %or.cond, label %.lr.ph749.preheader1173, label %vector.ph1162

vector.ph1162:                                    ; preds = %.lr.ph749.preheader
  %n.vec1164 = and i64 %77, 2147483644
  %ind.end1165 = or disjoint i64 %n.vec1164, 1
  br label %vector.body1167

vector.body1167:                                  ; preds = %vector.body1167, %vector.ph1162
  %index1168 = phi i64 [ 0, %vector.ph1162 ], [ %index.next1170, %vector.body1167 ]
  %79 = getelementptr double, ptr %12, i64 %index1168
  %80 = getelementptr inbounds i8, ptr %79, i64 16
  store <2 x double> zeroinitializer, ptr %79, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %80, align 8, !tbaa !9
  %81 = getelementptr double, ptr %13, i64 %index1168
  %82 = getelementptr inbounds i8, ptr %81, i64 16
  store <2 x double> zeroinitializer, ptr %81, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %82, align 8, !tbaa !9
  %index.next1170 = add nuw i64 %index1168, 4
  %83 = icmp eq i64 %index.next1170, %n.vec1164
  br i1 %83, label %middle.block1159, label %vector.body1167, !llvm.loop !11

middle.block1159:                                 ; preds = %vector.body1167
  %cmp.n1171 = icmp eq i64 %n.vec1164, %77
  br i1 %cmp.n1171, label %.loopexit, label %.lr.ph749.preheader1173

.lr.ph749.preheader1173:                          ; preds = %middle.block1159, %.lr.ph749.preheader
  %indvars.iv881.ph = phi i64 [ 1, %.lr.ph749.preheader ], [ %ind.end1165, %middle.block1159 ]
  %84 = sub nsw i64 %wide.trip.count884, %indvars.iv881.ph
  %85 = zext nneg i32 %58 to i64
  %86 = sub nsw i64 %85, %indvars.iv881.ph
  %xtraiter1199 = and i64 %84, 3
  %lcmp.mod1200.not = icmp eq i64 %xtraiter1199, 0
  br i1 %lcmp.mod1200.not, label %.lr.ph749.prol.loopexit, label %.lr.ph749.prol

.lr.ph749.prol:                                   ; preds = %.lr.ph749.preheader1173, %.lr.ph749.prol
  %indvars.iv881.prol = phi i64 [ %indvars.iv.next882.prol, %.lr.ph749.prol ], [ %indvars.iv881.ph, %.lr.ph749.preheader1173 ]
  %prol.iter1201 = phi i64 [ %prol.iter1201.next, %.lr.ph749.prol ], [ 0, %.lr.ph749.preheader1173 ]
  %87 = getelementptr inbounds double, ptr %35, i64 %indvars.iv881.prol
  store double 0.000000e+00, ptr %87, align 8, !tbaa !9
  %88 = getelementptr inbounds double, ptr %36, i64 %indvars.iv881.prol
  store double 0.000000e+00, ptr %88, align 8, !tbaa !9
  %indvars.iv.next882.prol = add nuw nsw i64 %indvars.iv881.prol, 1
  %prol.iter1201.next = add i64 %prol.iter1201, 1
  %prol.iter1201.cmp.not = icmp eq i64 %prol.iter1201.next, %xtraiter1199
  br i1 %prol.iter1201.cmp.not, label %.lr.ph749.prol.loopexit, label %.lr.ph749.prol, !llvm.loop !15

.lr.ph749.prol.loopexit:                          ; preds = %.lr.ph749.prol, %.lr.ph749.preheader1173
  %indvars.iv881.unr = phi i64 [ %indvars.iv881.ph, %.lr.ph749.preheader1173 ], [ %indvars.iv.next882.prol, %.lr.ph749.prol ]
  %89 = icmp ult i64 %86, 3
  br i1 %89, label %.loopexit, label %.lr.ph749

.lr.ph749:                                        ; preds = %.lr.ph749.prol.loopexit, %.lr.ph749
  %indvars.iv881 = phi i64 [ %indvars.iv.next882.3, %.lr.ph749 ], [ %indvars.iv881.unr, %.lr.ph749.prol.loopexit ]
  %90 = getelementptr inbounds double, ptr %35, i64 %indvars.iv881
  store double 0.000000e+00, ptr %90, align 8, !tbaa !9
  %91 = getelementptr inbounds double, ptr %36, i64 %indvars.iv881
  store double 0.000000e+00, ptr %91, align 8, !tbaa !9
  %92 = getelementptr double, ptr %12, i64 %indvars.iv881
  store double 0.000000e+00, ptr %92, align 8, !tbaa !9
  %93 = getelementptr double, ptr %13, i64 %indvars.iv881
  store double 0.000000e+00, ptr %93, align 8, !tbaa !9
  %indvars.iv.next882.1 = add nuw nsw i64 %indvars.iv881, 2
  %94 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.next882.1
  store double 0.000000e+00, ptr %94, align 8, !tbaa !9
  %95 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next882.1
  store double 0.000000e+00, ptr %95, align 8, !tbaa !9
  %indvars.iv.next882.2 = add nuw nsw i64 %indvars.iv881, 3
  %96 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.next882.2
  store double 0.000000e+00, ptr %96, align 8, !tbaa !9
  %97 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next882.2
  store double 0.000000e+00, ptr %97, align 8, !tbaa !9
  %indvars.iv.next882.3 = add nuw nsw i64 %indvars.iv881, 4
  %exitcond885.not.3 = icmp eq i64 %indvars.iv.next882.3, %wide.trip.count884
  br i1 %exitcond885.not.3, label %.loopexit, label %.lr.ph749, !llvm.loop !17

98:                                               ; preds = %74
  %. = select i1 %.not565, i8 78, i8 84
  store i8 %., ptr %25, align 1, !tbaa !18
  %99 = add nuw nsw i32 %55, 2
  %100 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #5
  %101 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %102 = uitofp nneg i32 %99 to double
  %103 = fmul double %101, %102
  %104 = fdiv double %103, %100
  %105 = load i32, ptr %5, align 4, !tbaa !5
  %invariant.gep732 = getelementptr i8, ptr %34, i64 8
  %invariant.gep738 = getelementptr i8, ptr %31, i64 8
  %.not573742 = icmp slt i32 %105, 1
  br i1 %.not573742, label %.loopexit, label %.lr.ph745

.lr.ph745:                                        ; preds = %98
  %106 = fmul double %100, %102
  %107 = sext i32 %32 to i64
  %108 = sext i32 %29 to i64
  %.pre = load i32, ptr %3, align 4, !tbaa !5
  %.0538635750 = add i32 %26, -1
  %.1539643752 = add i32 %26, -1
  %.2540651753 = add i32 %26, -1
  %.3541659754 = add i32 %26, -1
  %.4542668756 = add i32 %26, -1
  %.5543678758 = add i32 %26, -1
  %.6688759 = add i32 %26, -1
  %.7698760 = add i32 %26, -1
  %109 = zext nneg i32 %105 to i64
  %scevgep956 = getelementptr i8, ptr %14, i64 -8
  %scevgep958 = getelementptr i8, ptr %14, i64 -8
  %scevgep965 = getelementptr i8, ptr %14, i64 -8
  %scevgep967 = getelementptr i8, ptr %14, i64 -8
  %110 = add i32 %26, 2
  %scevgep991 = getelementptr i8, ptr %14, i64 -8
  %111 = shl nsw i64 %27, 3
  %scevgep996 = getelementptr i8, ptr %6, i64 %111
  %112 = getelementptr i8, ptr %6, i64 %111
  %scevgep998 = getelementptr i8, ptr %112, i64 8
  %113 = add i32 %26, 1
  %114 = shl nsw i64 %27, 3
  %scevgep1035 = getelementptr i8, ptr %6, i64 %114
  %115 = getelementptr i8, ptr %6, i64 %114
  %scevgep1037 = getelementptr i8, ptr %115, i64 8
  %scevgep1068 = getelementptr i8, ptr %14, i64 -8
  %116 = shl nsw i64 %27, 3
  %scevgep1072 = getelementptr i8, ptr %6, i64 %116
  %scevgep1105 = getelementptr i8, ptr %14, i64 -8
  %117 = shl nsw i64 %27, 3
  %scevgep1110 = getelementptr i8, ptr %6, i64 %117
  %118 = getelementptr i8, ptr %6, i64 %117
  %scevgep1112 = getelementptr i8, ptr %118, i64 8
  %119 = add i64 %21, -8
  %120 = add nsw i64 %108, %30
  %121 = shl nsw i64 %120, 3
  %122 = add i64 %121, %20
  %123 = sub i64 %119, %122
  %124 = mul nsw i64 %108, -8
  %125 = getelementptr i8, ptr %6, i64 %116
  %126 = getelementptr i8, ptr %125, i64 8
  %invariant.gep1214 = getelementptr i8, ptr %14, i64 8
  br label %127

127:                                              ; preds = %.lr.ph745, %._crit_edge730.thread
  %indvar1140 = phi i64 [ 0, %.lr.ph745 ], [ %indvar.next1141, %._crit_edge730.thread ]
  %128 = phi i32 [ %.pre, %.lr.ph745 ], [ %627, %._crit_edge730.thread ]
  %indvars.iv878 = phi i64 [ 1, %.lr.ph745 ], [ %indvars.iv.next879, %._crit_edge730.thread ]
  %129 = mul nsw i64 %indvars.iv878, %107
  %gep733 = getelementptr double, ptr %invariant.gep732, i64 %129
  %130 = sext i32 %128 to i64
  %gep735 = getelementptr double, ptr %14, i64 %130
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %gep733, ptr noundef nonnull @c__1, ptr noundef %gep735, ptr noundef nonnull @c__1) #5
  %131 = load i32, ptr %3, align 4, !tbaa !5
  %132 = sext i32 %131 to i64
  %gep737 = getelementptr double, ptr %14, i64 %132
  call void @dtbmv_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep737, ptr noundef nonnull @c__1) #5
  %133 = mul nsw i64 %indvars.iv878, %108
  %gep739 = getelementptr double, ptr %invariant.gep738, i64 %133
  %134 = load i32, ptr %3, align 4, !tbaa !5
  %135 = sext i32 %134 to i64
  %gep741 = getelementptr double, ptr %14, i64 %135
  call void @daxpy_(ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %gep739, ptr noundef nonnull @c__1, ptr noundef %gep741, ptr noundef nonnull @c__1) #5
  %136 = load i32, ptr %3, align 4, !tbaa !5
  %.not575627 = icmp slt i32 %136, 1
  br i1 %.not575627, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %127
  %137 = mul i64 %124, %indvar1140
  %138 = add i64 %123, %137
  %139 = add nuw i32 %136, 1
  %wide.trip.count = zext i32 %139 to i64
  %invariant.gep = getelementptr double, ptr %31, i64 %133
  %140 = zext nneg i32 %136 to i64
  %min.iters.check1144 = icmp ult i32 %136, 4
  %diff.check = icmp ult i64 %138, 32
  %or.cond1172 = select i1 %min.iters.check1144, i1 true, i1 %diff.check
  br i1 %or.cond1172, label %.lr.ph.preheader1183, label %vector.ph1145

vector.ph1145:                                    ; preds = %.lr.ph.preheader
  %n.vec1147 = and i64 %140, 2147483644
  %ind.end1148 = or disjoint i64 %n.vec1147, 1
  br label %vector.body1150

vector.body1150:                                  ; preds = %vector.body1150, %vector.ph1145
  %index1151 = phi i64 [ 0, %vector.ph1145 ], [ %index.next1155, %vector.body1150 ]
  %offset.idx1152 = or disjoint i64 %index1151, 1
  %141 = getelementptr double, ptr %invariant.gep, i64 %offset.idx1152
  %142 = getelementptr i8, ptr %141, i64 16
  %wide.load1153 = load <2 x double>, ptr %141, align 8, !tbaa !9
  %wide.load1154 = load <2 x double>, ptr %142, align 8, !tbaa !9
  %143 = fcmp oge <2 x double> %wide.load1153, zeroinitializer
  %144 = fcmp oge <2 x double> %wide.load1154, zeroinitializer
  %145 = fneg <2 x double> %wide.load1153
  %146 = fneg <2 x double> %wide.load1154
  %147 = select <2 x i1> %143, <2 x double> %wide.load1153, <2 x double> %145
  %148 = select <2 x i1> %144, <2 x double> %wide.load1154, <2 x double> %146
  %149 = getelementptr double, ptr %14, i64 %index1151
  %150 = getelementptr inbounds i8, ptr %149, i64 16
  store <2 x double> %147, ptr %149, align 8, !tbaa !9
  store <2 x double> %148, ptr %150, align 8, !tbaa !9
  %index.next1155 = add nuw i64 %index1151, 4
  %151 = icmp eq i64 %index.next1155, %n.vec1147
  br i1 %151, label %middle.block1142, label %vector.body1150, !llvm.loop !19

middle.block1142:                                 ; preds = %vector.body1150
  %cmp.n1156 = icmp eq i64 %n.vec1147, %140
  br i1 %cmp.n1156, label %._crit_edge, label %.lr.ph.preheader1183

.lr.ph.preheader1183:                             ; preds = %middle.block1142, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end1148, %middle.block1142 ]
  %152 = zext nneg i32 %136 to i64
  %153 = and i32 %136, 1
  %lcmp.mod.not = icmp eq i32 %153, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader1183
  %gep904.prol = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.ph
  %154 = load double, ptr %gep904.prol, align 8, !tbaa !9
  %155 = fcmp oge double %154, 0.000000e+00
  %156 = fneg double %154
  %157 = select i1 %155, double %154, double %156
  %158 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.ph
  store double %157, ptr %158, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader1183
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader1183 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %159 = icmp eq i64 %indvars.iv.ph, %152
  br i1 %159, label %._crit_edge, label %.lr.ph.preheader1183.new

.lr.ph.preheader1183.new:                         ; preds = %.lr.ph.prol.loopexit
  %invariant.gep1208 = getelementptr i8, ptr %invariant.gep, i64 8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader1183.new
  %indvars.iv = phi i64 [ %indvars.iv.unr, %.lr.ph.preheader1183.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %gep904 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %160 = load double, ptr %gep904, align 8, !tbaa !9
  %161 = fcmp oge double %160, 0.000000e+00
  %162 = fneg double %160
  %163 = select i1 %161, double %160, double %162
  %164 = getelementptr inbounds double, ptr %37, i64 %indvars.iv
  store double %163, ptr %164, align 8, !tbaa !9
  %gep1209 = getelementptr double, ptr %invariant.gep1208, i64 %indvars.iv
  %165 = load double, ptr %gep1209, align 8, !tbaa !9
  %166 = fcmp oge double %165, 0.000000e+00
  %167 = fneg double %165
  %168 = select i1 %166, double %165, double %167
  %169 = getelementptr double, ptr %14, i64 %indvars.iv
  store double %168, ptr %169, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !20

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block1142, %127
  br i1 %.not565, label %457, label %170

170:                                              ; preds = %._crit_edge
  br i1 %.not, label %306, label %171

171:                                              ; preds = %170
  br i1 %.not568, label %.preheader622, label %.preheader624

.preheader624:                                    ; preds = %171
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph636

.lr.ph636:                                        ; preds = %.preheader624
  %172 = load i32, ptr %4, align 4, !tbaa !5
  %173 = sub i32 1, %172
  %174 = add nuw i32 %136, 1
  %wide.trip.count782 = zext i32 %174 to i64
  %invariant.gep905 = getelementptr double, ptr %34, i64 %129
  %.not606629 = icmp slt i32 %172, 0
  %175 = add i32 %26, %172
  br label %180

.preheader622:                                    ; preds = %171
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph644

.lr.ph644:                                        ; preds = %.preheader622
  %176 = load i32, ptr %4, align 4, !tbaa !5
  %177 = sub i32 1, %176
  %178 = add nuw i32 %136, 1
  %wide.trip.count793 = zext i32 %178 to i64
  %invariant.gep907 = getelementptr double, ptr %34, i64 %129
  %179 = add i32 %26, %176
  br label %239

180:                                              ; preds = %.lr.ph636, %._crit_edge633
  %indvar1102 = phi i32 [ 0, %.lr.ph636 ], [ %indvar.next1103, %._crit_edge633 ]
  %indvars.iv779 = phi i64 [ 1, %.lr.ph636 ], [ %indvars.iv.next780, %._crit_edge633 ]
  %indvars.iv774 = phi i32 [ %173, %.lr.ph636 ], [ %indvars.iv.next775, %._crit_edge633 ]
  %smax1117 = call i32 @llvm.smax.i32(i32 %indvars.iv774, i32 1)
  %181 = zext nneg i32 %smax1117 to i64
  %umax1118 = call i64 @llvm.umax.i64(i64 %indvars.iv779, i64 %181)
  %182 = add nuw i64 %umax1118, 1
  %183 = sub i64 %182, %181
  %smax1106 = call i32 @llvm.smax.i32(i32 %indvars.iv774, i32 1)
  %184 = zext nneg i32 %smax1106 to i64
  %185 = shl nuw nsw i64 %184, 3
  %scevgep1107 = getelementptr i8, ptr %scevgep1105, i64 %185
  %umax1108 = call i64 @llvm.umax.i64(i64 %indvars.iv779, i64 %184)
  %186 = shl nuw nsw i64 %umax1108, 3
  %scevgep1109 = getelementptr i8, ptr %14, i64 %186
  %187 = mul i32 %.7698760, %indvar1102
  %188 = add i32 %175, %187
  %189 = add i32 %smax1106, %188
  %190 = sext i32 %189 to i64
  %191 = shl nsw i64 %190, 3
  %scevgep1111 = getelementptr i8, ptr %scevgep1110, i64 %191
  %192 = add i64 %186, %191
  %193 = sub i64 %192, %185
  %scevgep1113 = getelementptr i8, ptr %scevgep1112, i64 %193
  %smax1101 = call i32 @llvm.smax.i32(i32 %indvars.iv774, i32 1)
  %194 = zext nneg i32 %smax1101 to i64
  %195 = call i64 @llvm.usub.sat.i64(i64 %indvars.iv779, i64 %194)
  %196 = mul i32 %.7698760, %indvar1102
  %197 = add i32 %175, %196
  %198 = add i32 %smax1101, %197
  %gep906 = getelementptr double, ptr %invariant.gep905, i64 %indvars.iv779
  %199 = load double, ptr %gep906, align 8, !tbaa !9
  %200 = fcmp oge double %199, 0.000000e+00
  %201 = fneg double %199
  %202 = select i1 %200, double %199, double %201
  br i1 %.not606629, label %._crit_edge633, label %.lr.ph632

.lr.ph632:                                        ; preds = %180
  %smax = call i32 @llvm.smax.i32(i32 %indvars.iv774, i32 1)
  %203 = zext nneg i32 %smax to i64
  %204 = trunc nuw nsw i64 %indvars.iv779 to i32
  %reass.sub = mul i32 %.0538635750, %204
  %205 = add i32 %reass.sub, 1
  %206 = add i32 %205, %172
  %min.iters.check1121 = icmp ult i64 %183, 4
  br i1 %min.iters.check1121, label %scalar.ph1120.preheader, label %vector.scevcheck1100

vector.scevcheck1100:                             ; preds = %.lr.ph632
  %207 = trunc i64 %195 to i32
  %208 = add i32 %198, %207
  %209 = icmp slt i32 %208, %198
  %210 = icmp ugt i64 %195, 4294967295
  %211 = or i1 %209, %210
  br i1 %211, label %scalar.ph1120.preheader, label %vector.memcheck1104

vector.memcheck1104:                              ; preds = %vector.scevcheck1100
  %bound01114 = icmp ult ptr %scevgep1107, %scevgep1113
  %bound11115 = icmp ult ptr %scevgep1111, %scevgep1109
  %found.conflict1116 = and i1 %bound01114, %bound11115
  br i1 %found.conflict1116, label %scalar.ph1120.preheader, label %vector.ph1122

vector.ph1122:                                    ; preds = %vector.memcheck1104
  %n.vec1124 = and i64 %183, -4
  %ind.end1125 = add i64 %n.vec1124, %203
  %broadcast.splatinsert1135 = insertelement <2 x double> poison, double %202, i64 0
  %broadcast.splat1136 = shufflevector <2 x double> %broadcast.splatinsert1135, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep1210 = getelementptr double, ptr %37, i64 %203
  br label %vector.body1127

vector.body1127:                                  ; preds = %vector.body1127, %vector.ph1122
  %index1128 = phi i64 [ 0, %vector.ph1122 ], [ %index.next1137, %vector.body1127 ]
  %212 = trunc i64 %index1128 to i32
  %213 = add i32 %smax, %212
  %214 = add i32 %206, %213
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %28, i64 %215
  %217 = getelementptr inbounds i8, ptr %216, i64 16
  %wide.load1131 = load <2 x double>, ptr %216, align 8, !tbaa !9, !alias.scope !21
  %wide.load1132 = load <2 x double>, ptr %217, align 8, !tbaa !9, !alias.scope !21
  %218 = fcmp oge <2 x double> %wide.load1131, zeroinitializer
  %219 = fcmp oge <2 x double> %wide.load1132, zeroinitializer
  %220 = fneg <2 x double> %wide.load1131
  %221 = fneg <2 x double> %wide.load1132
  %222 = select <2 x i1> %218, <2 x double> %wide.load1131, <2 x double> %220
  %223 = select <2 x i1> %219, <2 x double> %wide.load1132, <2 x double> %221
  %gep1211 = getelementptr double, ptr %invariant.gep1210, i64 %index1128
  %224 = getelementptr inbounds i8, ptr %gep1211, i64 16
  %wide.load1133 = load <2 x double>, ptr %gep1211, align 8, !tbaa !9, !alias.scope !24, !noalias !21
  %wide.load1134 = load <2 x double>, ptr %224, align 8, !tbaa !9, !alias.scope !24, !noalias !21
  %225 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %222, <2 x double> %broadcast.splat1136, <2 x double> %wide.load1133)
  %226 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %223, <2 x double> %broadcast.splat1136, <2 x double> %wide.load1134)
  store <2 x double> %225, ptr %gep1211, align 8, !tbaa !9, !alias.scope !24, !noalias !21
  store <2 x double> %226, ptr %224, align 8, !tbaa !9, !alias.scope !24, !noalias !21
  %index.next1137 = add nuw i64 %index1128, 4
  %227 = icmp eq i64 %index.next1137, %n.vec1124
  br i1 %227, label %middle.block1119, label %vector.body1127, !llvm.loop !26

middle.block1119:                                 ; preds = %vector.body1127
  %cmp.n1138 = icmp eq i64 %183, %n.vec1124
  br i1 %cmp.n1138, label %._crit_edge633, label %scalar.ph1120.preheader

scalar.ph1120.preheader:                          ; preds = %middle.block1119, %vector.memcheck1104, %vector.scevcheck1100, %.lr.ph632
  %indvars.iv776.ph = phi i64 [ %203, %vector.memcheck1104 ], [ %203, %vector.scevcheck1100 ], [ %203, %.lr.ph632 ], [ %ind.end1125, %middle.block1119 ]
  br label %scalar.ph1120

scalar.ph1120:                                    ; preds = %scalar.ph1120.preheader, %scalar.ph1120
  %indvars.iv776 = phi i64 [ %indvars.iv.next777, %scalar.ph1120 ], [ %indvars.iv776.ph, %scalar.ph1120.preheader ]
  %228 = trunc nuw nsw i64 %indvars.iv776 to i32
  %229 = add i32 %206, %228
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %28, i64 %230
  %232 = load double, ptr %231, align 8, !tbaa !9
  %233 = fcmp oge double %232, 0.000000e+00
  %234 = fneg double %232
  %235 = select i1 %233, double %232, double %234
  %236 = getelementptr inbounds double, ptr %37, i64 %indvars.iv776
  %237 = load double, ptr %236, align 8, !tbaa !9
  %238 = call double @llvm.fmuladd.f64(double %235, double %202, double %237)
  store double %238, ptr %236, align 8, !tbaa !9
  %indvars.iv.next777 = add nuw nsw i64 %indvars.iv776, 1
  %.not606.not = icmp ult i64 %indvars.iv776, %indvars.iv779
  br i1 %.not606.not, label %scalar.ph1120, label %._crit_edge633, !llvm.loop !27

._crit_edge633:                                   ; preds = %scalar.ph1120, %middle.block1119, %180
  %indvars.iv.next780 = add nuw nsw i64 %indvars.iv779, 1
  %indvars.iv.next775 = add i32 %indvars.iv774, 1
  %exitcond783.not = icmp eq i64 %indvars.iv.next780, %wide.trip.count782
  %indvar.next1103 = add i32 %indvar1102, 1
  br i1 %exitcond783.not, label %.loopexit611, label %180, !llvm.loop !28

239:                                              ; preds = %.lr.ph644, %._crit_edge641
  %indvar1064 = phi i64 [ 0, %.lr.ph644 ], [ %indvar.next1065, %._crit_edge641 ]
  %indvars.iv790 = phi i64 [ 1, %.lr.ph644 ], [ %indvars.iv.next791, %._crit_edge641 ]
  %indvars.iv784 = phi i32 [ %177, %.lr.ph644 ], [ %indvars.iv.next785, %._crit_edge641 ]
  %smax1079 = call i32 @llvm.smax.i32(i32 %indvars.iv784, i32 1)
  %240 = zext nneg i32 %smax1079 to i64
  %241 = sub nsw i64 %indvars.iv790, %240
  %smax1069 = call i32 @llvm.smax.i32(i32 %indvars.iv784, i32 1)
  %242 = zext nneg i32 %smax1069 to i64
  %243 = shl nuw nsw i64 %242, 3
  %scevgep1070 = getelementptr i8, ptr %scevgep1068, i64 %243
  %244 = shl nuw nsw i64 %indvar1064, 3
  %scevgep1071 = getelementptr i8, ptr %14, i64 %244
  %245 = trunc i64 %indvar1064 to i32
  %246 = mul i32 %.7698760, %245
  %247 = add i32 %246, %179
  %248 = add i32 %smax1069, %247
  %249 = sext i32 %248 to i64
  %250 = shl nsw i64 %249, 3
  %scevgep1073 = getelementptr i8, ptr %scevgep1072, i64 %250
  %scevgep1074 = getelementptr i8, ptr %126, i64 %244
  %251 = sub nsw i64 %250, %243
  %scevgep1075 = getelementptr i8, ptr %scevgep1074, i64 %251
  %smax1066 = call i32 @llvm.smax.i32(i32 %indvars.iv784, i32 1)
  %252 = zext nneg i32 %smax1066 to i64
  %253 = sub i64 %indvar1064, %252
  %254 = trunc i64 %indvar1064 to i32
  %255 = mul i32 %.7698760, %254
  %256 = add i32 %255, %179
  %257 = add i32 %smax1066, %256
  %gep908 = getelementptr double, ptr %invariant.gep907, i64 %indvars.iv790
  %258 = load double, ptr %gep908, align 8, !tbaa !9
  %259 = fcmp oge double %258, 0.000000e+00
  %260 = fneg double %258
  %261 = select i1 %259, double %258, double %260
  %262 = trunc i64 %indvars.iv790 to i32
  %263 = sub i32 %262, %176
  %264 = call i32 @llvm.smax.i32(i32 %263, i32 1)
  %265 = zext nneg i32 %264 to i64
  %.not597.not637 = icmp ugt i64 %indvars.iv790, %265
  br i1 %.not597.not637, label %.lr.ph640, label %._crit_edge641

.lr.ph640:                                        ; preds = %239
  %smax786 = call i32 @llvm.smax.i32(i32 %indvars.iv784, i32 1)
  %266 = zext nneg i32 %smax786 to i64
  %267 = trunc nuw nsw i64 %indvars.iv790 to i32
  %reass.sub751 = mul i32 %.1539643752, %267
  %268 = add i32 %reass.sub751, 1
  %269 = add i32 %268, %176
  %min.iters.check1082 = icmp ult i64 %241, 4
  br i1 %min.iters.check1082, label %scalar.ph1081.preheader, label %vector.scevcheck1063

vector.scevcheck1063:                             ; preds = %.lr.ph640
  %270 = trunc i64 %253 to i32
  %271 = add i32 %257, %270
  %272 = icmp slt i32 %271, %257
  %273 = icmp ugt i64 %253, 4294967295
  %274 = or i1 %272, %273
  br i1 %274, label %scalar.ph1081.preheader, label %vector.memcheck1067

vector.memcheck1067:                              ; preds = %vector.scevcheck1063
  %bound01076 = icmp ult ptr %scevgep1070, %scevgep1075
  %bound11077 = icmp ult ptr %scevgep1073, %scevgep1071
  %found.conflict1078 = and i1 %bound01076, %bound11077
  br i1 %found.conflict1078, label %scalar.ph1081.preheader, label %vector.ph1083

vector.ph1083:                                    ; preds = %vector.memcheck1067
  %n.vec1085 = and i64 %241, -4
  %ind.end1086 = add i64 %n.vec1085, %266
  %broadcast.splatinsert1096 = insertelement <2 x double> poison, double %261, i64 0
  %broadcast.splat1097 = shufflevector <2 x double> %broadcast.splatinsert1096, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep1212 = getelementptr double, ptr %37, i64 %266
  br label %vector.body1088

vector.body1088:                                  ; preds = %vector.body1088, %vector.ph1083
  %index1089 = phi i64 [ 0, %vector.ph1083 ], [ %index.next1098, %vector.body1088 ]
  %275 = trunc i64 %index1089 to i32
  %276 = add i32 %smax786, %275
  %277 = add i32 %269, %276
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds double, ptr %28, i64 %278
  %280 = getelementptr inbounds i8, ptr %279, i64 16
  %wide.load1092 = load <2 x double>, ptr %279, align 8, !tbaa !9, !alias.scope !29
  %wide.load1093 = load <2 x double>, ptr %280, align 8, !tbaa !9, !alias.scope !29
  %281 = fcmp oge <2 x double> %wide.load1092, zeroinitializer
  %282 = fcmp oge <2 x double> %wide.load1093, zeroinitializer
  %283 = fneg <2 x double> %wide.load1092
  %284 = fneg <2 x double> %wide.load1093
  %285 = select <2 x i1> %281, <2 x double> %wide.load1092, <2 x double> %283
  %286 = select <2 x i1> %282, <2 x double> %wide.load1093, <2 x double> %284
  %gep1213 = getelementptr double, ptr %invariant.gep1212, i64 %index1089
  %287 = getelementptr inbounds i8, ptr %gep1213, i64 16
  %wide.load1094 = load <2 x double>, ptr %gep1213, align 8, !tbaa !9, !alias.scope !32, !noalias !29
  %wide.load1095 = load <2 x double>, ptr %287, align 8, !tbaa !9, !alias.scope !32, !noalias !29
  %288 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %285, <2 x double> %broadcast.splat1097, <2 x double> %wide.load1094)
  %289 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %286, <2 x double> %broadcast.splat1097, <2 x double> %wide.load1095)
  store <2 x double> %288, ptr %gep1213, align 8, !tbaa !9, !alias.scope !32, !noalias !29
  store <2 x double> %289, ptr %287, align 8, !tbaa !9, !alias.scope !32, !noalias !29
  %index.next1098 = add nuw i64 %index1089, 4
  %290 = icmp eq i64 %index.next1098, %n.vec1085
  br i1 %290, label %middle.block1080, label %vector.body1088, !llvm.loop !34

middle.block1080:                                 ; preds = %vector.body1088
  %cmp.n1099 = icmp eq i64 %241, %n.vec1085
  br i1 %cmp.n1099, label %._crit_edge641, label %scalar.ph1081.preheader

scalar.ph1081.preheader:                          ; preds = %middle.block1080, %vector.memcheck1067, %vector.scevcheck1063, %.lr.ph640
  %indvars.iv787.ph = phi i64 [ %266, %vector.memcheck1067 ], [ %266, %vector.scevcheck1063 ], [ %266, %.lr.ph640 ], [ %ind.end1086, %middle.block1080 ]
  br label %scalar.ph1081

scalar.ph1081:                                    ; preds = %scalar.ph1081.preheader, %scalar.ph1081
  %indvars.iv787 = phi i64 [ %indvars.iv.next788, %scalar.ph1081 ], [ %indvars.iv787.ph, %scalar.ph1081.preheader ]
  %291 = trunc nuw nsw i64 %indvars.iv787 to i32
  %292 = add i32 %269, %291
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %28, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !9
  %296 = fcmp oge double %295, 0.000000e+00
  %297 = fneg double %295
  %298 = select i1 %296, double %295, double %297
  %299 = getelementptr inbounds double, ptr %37, i64 %indvars.iv787
  %300 = load double, ptr %299, align 8, !tbaa !9
  %301 = call double @llvm.fmuladd.f64(double %298, double %261, double %300)
  store double %301, ptr %299, align 8, !tbaa !9
  %indvars.iv.next788 = add nuw nsw i64 %indvars.iv787, 1
  %302 = icmp ult i64 %indvars.iv.next788, %indvars.iv790
  br i1 %302, label %scalar.ph1081, label %._crit_edge641, !llvm.loop !35

._crit_edge641:                                   ; preds = %scalar.ph1081, %middle.block1080, %239
  %303 = getelementptr inbounds double, ptr %37, i64 %indvars.iv790
  %304 = load double, ptr %303, align 8, !tbaa !9
  %305 = fadd double %261, %304
  store double %305, ptr %303, align 8, !tbaa !9
  %indvars.iv.next791 = add nuw nsw i64 %indvars.iv790, 1
  %indvars.iv.next785 = add i32 %indvars.iv784, 1
  %exitcond794.not = icmp eq i64 %indvars.iv.next791, %wide.trip.count793
  %indvar.next1065 = add i64 %indvar1064, 1
  br i1 %exitcond794.not, label %.loopexit611, label %239, !llvm.loop !36

306:                                              ; preds = %170
  br i1 %.not568, label %.preheader618, label %.preheader620

.preheader620:                                    ; preds = %306
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph652

.lr.ph652:                                        ; preds = %.preheader620
  %307 = load i32, ptr %4, align 4, !tbaa !5
  %308 = add nuw i32 %136, 1
  %wide.trip.count801 = zext i32 %308 to i64
  %invariant.gep909 = getelementptr double, ptr %34, i64 %129
  %309 = zext nneg i32 %136 to i64
  %310 = add i32 %307, 1
  %311 = zext nneg i32 %136 to i64
  %312 = zext nneg i32 %136 to i64
  br label %319

.preheader618:                                    ; preds = %306
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph660

.lr.ph660:                                        ; preds = %.preheader618
  %313 = load i32, ptr %4, align 4, !tbaa !5
  %314 = add nuw i32 %136, 1
  %wide.trip.count811 = zext i32 %314 to i64
  %invariant.gep911 = getelementptr double, ptr %34, i64 %129
  %315 = zext nneg i32 %136 to i64
  %316 = add i32 %313, 1
  %317 = zext nneg i32 %136 to i64
  %318 = zext nneg i32 %136 to i64
  br label %387

319:                                              ; preds = %.lr.ph652, %._crit_edge649
  %indvar1027 = phi i64 [ 0, %.lr.ph652 ], [ %indvar.next1028, %._crit_edge649 ]
  %indvar1023 = phi i32 [ 0, %.lr.ph652 ], [ %indvar.next1024, %._crit_edge649 ]
  %indvars.iv795 = phi i64 [ 1, %.lr.ph652 ], [ %indvars.iv.next796, %._crit_edge649 ]
  %320 = trunc i64 %indvar1027 to i32
  %321 = add i32 %310, %320
  %322 = sext i32 %321 to i64
  %smin1042 = call i64 @llvm.smin.i64(i64 %312, i64 %322)
  %smax1043 = call i64 @llvm.smax.i64(i64 %smin1042, i64 %indvars.iv795)
  %323 = sub i64 %smax1043, %indvar1027
  %324 = shl nuw nsw i64 %indvar1027, 3
  %scevgep1030 = getelementptr i8, ptr %14, i64 %324
  %gep1215 = getelementptr i8, ptr %invariant.gep1214, i64 %324
  %325 = trunc i64 %indvar1027 to i32
  %326 = add i32 %310, %325
  %327 = sext i32 %326 to i64
  %smin1032 = call i64 @llvm.smin.i64(i64 %311, i64 %327)
  %smax1033 = call i64 @llvm.smax.i64(i64 %smin1032, i64 %indvars.iv795)
  %328 = xor i64 %indvar1027, -1
  %329 = add i64 %smax1033, %328
  %330 = shl nsw i64 %329, 3
  %scevgep1034 = getelementptr i8, ptr %gep1215, i64 %330
  %331 = trunc i64 %indvar1027 to i32
  %332 = mul i32 %26, %331
  %333 = add i32 %332, %113
  %334 = sext i32 %333 to i64
  %335 = shl nsw i64 %334, 3
  %scevgep1036 = getelementptr i8, ptr %scevgep1035, i64 %335
  %336 = getelementptr i8, ptr %scevgep1037, i64 %330
  %scevgep1038 = getelementptr i8, ptr %336, i64 %335
  %337 = add i32 %310, %indvar1023
  %338 = sext i32 %337 to i64
  %smin1025 = call i64 @llvm.smin.i64(i64 %309, i64 %338)
  %smax1026 = call i64 @llvm.smax.i64(i64 %smin1025, i64 %indvars.iv795)
  %339 = xor i64 %indvar1027, -1
  %340 = add i64 %smax1026, %339
  %341 = trunc i64 %indvar1027 to i32
  %342 = mul i32 %26, %341
  %343 = add i32 %342, %113
  %gep910 = getelementptr double, ptr %invariant.gep909, i64 %indvars.iv795
  %344 = load double, ptr %gep910, align 8, !tbaa !9
  %345 = fcmp oge double %344, 0.000000e+00
  %346 = fneg double %344
  %347 = select i1 %345, double %344, double %346
  %348 = trunc i64 %indvars.iv795 to i32
  %349 = add i32 %307, %348
  %350 = call i32 @llvm.smin.i32(i32 %136, i32 %349)
  %351 = sext i32 %350 to i64
  %.not594645 = icmp sgt i64 %indvars.iv795, %351
  br i1 %.not594645, label %._crit_edge649, label %.lr.ph648

.lr.ph648:                                        ; preds = %319
  %352 = trunc nuw nsw i64 %indvars.iv795 to i32
  %353 = mul i32 %.2540651753, %352
  %min.iters.check1046 = icmp ult i64 %323, 4
  br i1 %min.iters.check1046, label %scalar.ph1045.preheader, label %vector.scevcheck1022

vector.scevcheck1022:                             ; preds = %.lr.ph648
  %354 = trunc i64 %340 to i32
  %355 = add i32 %343, %354
  %356 = icmp slt i32 %355, %343
  %357 = icmp ugt i64 %340, 4294967295
  %358 = or i1 %356, %357
  br i1 %358, label %scalar.ph1045.preheader, label %vector.memcheck1029

vector.memcheck1029:                              ; preds = %vector.scevcheck1022
  %bound01039 = icmp ult ptr %scevgep1030, %scevgep1038
  %bound11040 = icmp ult ptr %scevgep1036, %scevgep1034
  %found.conflict1041 = and i1 %bound01039, %bound11040
  br i1 %found.conflict1041, label %scalar.ph1045.preheader, label %vector.ph1047

vector.ph1047:                                    ; preds = %vector.memcheck1029
  %n.vec1049 = and i64 %323, -4
  %ind.end1050 = add i64 %indvars.iv795, %n.vec1049
  %broadcast.splatinsert1059 = insertelement <2 x double> poison, double %347, i64 0
  %broadcast.splat1060 = shufflevector <2 x double> %broadcast.splatinsert1059, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1052

vector.body1052:                                  ; preds = %vector.body1052, %vector.ph1047
  %index1053 = phi i64 [ 0, %vector.ph1047 ], [ %index.next1061, %vector.body1052 ]
  %offset.idx1054 = add i64 %indvars.iv795, %index1053
  %359 = trunc i64 %offset.idx1054 to i32
  %360 = add i32 %359, 1
  %361 = add i32 %353, %360
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %28, i64 %362
  %364 = getelementptr inbounds i8, ptr %363, i64 16
  %wide.load1055 = load <2 x double>, ptr %363, align 8, !tbaa !9, !alias.scope !37
  %wide.load1056 = load <2 x double>, ptr %364, align 8, !tbaa !9, !alias.scope !37
  %365 = fcmp oge <2 x double> %wide.load1055, zeroinitializer
  %366 = fcmp oge <2 x double> %wide.load1056, zeroinitializer
  %367 = fneg <2 x double> %wide.load1055
  %368 = fneg <2 x double> %wide.load1056
  %369 = select <2 x i1> %365, <2 x double> %wide.load1055, <2 x double> %367
  %370 = select <2 x i1> %366, <2 x double> %wide.load1056, <2 x double> %368
  %371 = getelementptr inbounds double, ptr %37, i64 %offset.idx1054
  %372 = getelementptr inbounds i8, ptr %371, i64 16
  %wide.load1057 = load <2 x double>, ptr %371, align 8, !tbaa !9, !alias.scope !40, !noalias !37
  %wide.load1058 = load <2 x double>, ptr %372, align 8, !tbaa !9, !alias.scope !40, !noalias !37
  %373 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %369, <2 x double> %broadcast.splat1060, <2 x double> %wide.load1057)
  %374 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %370, <2 x double> %broadcast.splat1060, <2 x double> %wide.load1058)
  store <2 x double> %373, ptr %371, align 8, !tbaa !9, !alias.scope !40, !noalias !37
  store <2 x double> %374, ptr %372, align 8, !tbaa !9, !alias.scope !40, !noalias !37
  %index.next1061 = add nuw i64 %index1053, 4
  %375 = icmp eq i64 %index.next1061, %n.vec1049
  br i1 %375, label %middle.block1044, label %vector.body1052, !llvm.loop !42

middle.block1044:                                 ; preds = %vector.body1052
  %cmp.n1062 = icmp eq i64 %323, %n.vec1049
  br i1 %cmp.n1062, label %._crit_edge649, label %scalar.ph1045.preheader

scalar.ph1045.preheader:                          ; preds = %middle.block1044, %vector.memcheck1029, %vector.scevcheck1022, %.lr.ph648
  %indvars.iv797.ph = phi i64 [ %indvars.iv795, %vector.memcheck1029 ], [ %indvars.iv795, %vector.scevcheck1022 ], [ %indvars.iv795, %.lr.ph648 ], [ %ind.end1050, %middle.block1044 ]
  br label %scalar.ph1045

scalar.ph1045:                                    ; preds = %scalar.ph1045.preheader, %scalar.ph1045
  %indvars.iv797 = phi i64 [ %indvars.iv.next798, %scalar.ph1045 ], [ %indvars.iv797.ph, %scalar.ph1045.preheader ]
  %indvars.iv.next798 = add nuw nsw i64 %indvars.iv797, 1
  %376 = trunc nsw i64 %indvars.iv.next798 to i32
  %377 = add i32 %353, %376
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %28, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !9
  %381 = fcmp oge double %380, 0.000000e+00
  %382 = fneg double %380
  %383 = select i1 %381, double %380, double %382
  %384 = getelementptr inbounds double, ptr %37, i64 %indvars.iv797
  %385 = load double, ptr %384, align 8, !tbaa !9
  %386 = call double @llvm.fmuladd.f64(double %383, double %347, double %385)
  store double %386, ptr %384, align 8, !tbaa !9
  %.not594.not = icmp slt i64 %indvars.iv797, %351
  br i1 %.not594.not, label %scalar.ph1045, label %._crit_edge649, !llvm.loop !43

._crit_edge649:                                   ; preds = %scalar.ph1045, %middle.block1044, %319
  %indvars.iv.next796 = add nuw nsw i64 %indvars.iv795, 1
  %exitcond802.not = icmp eq i64 %indvars.iv.next796, %wide.trip.count801
  %indvar.next1024 = add i32 %indvar1023, 1
  %indvar.next1028 = add i64 %indvar1027, 1
  br i1 %exitcond802.not, label %.loopexit611, label %319, !llvm.loop !44

387:                                              ; preds = %.lr.ph660, %._crit_edge657
  %indvar = phi i32 [ 0, %.lr.ph660 ], [ %indvar.next, %._crit_edge657 ]
  %indvars.iv808 = phi i64 [ 1, %.lr.ph660 ], [ %indvars.iv.next809, %._crit_edge657 ]
  %indvars.iv803 = phi i32 [ 2, %.lr.ph660 ], [ %indvars.iv.next804, %._crit_edge657 ]
  %388 = add i32 %316, %indvar
  %389 = sext i32 %388 to i64
  %smin1003 = call i64 @llvm.smin.i64(i64 %318, i64 %389)
  %390 = sext i32 %indvars.iv803 to i64
  %smax1004 = call i64 @llvm.smax.i64(i64 %smin1003, i64 %390)
  %391 = add i64 %smax1004, 1
  %392 = sub i64 %391, %390
  %393 = sext i32 %indvars.iv803 to i64
  %394 = shl nsw i64 %393, 3
  %scevgep992 = getelementptr i8, ptr %scevgep991, i64 %394
  %395 = add i32 %316, %indvar
  %396 = sext i32 %395 to i64
  %smin993 = call i64 @llvm.smin.i64(i64 %317, i64 %396)
  %smax994 = call i64 @llvm.smax.i64(i64 %smin993, i64 %393)
  %397 = shl nsw i64 %smax994, 3
  %scevgep995 = getelementptr i8, ptr %14, i64 %397
  %398 = mul i32 %26, %indvar
  %399 = add i32 %110, %398
  %400 = sext i32 %399 to i64
  %401 = shl nsw i64 %400, 3
  %scevgep997 = getelementptr i8, ptr %scevgep996, i64 %401
  %402 = add i64 %397, %401
  %403 = sub i64 %402, %394
  %scevgep999 = getelementptr i8, ptr %scevgep998, i64 %403
  %404 = add i32 %316, %indvar
  %405 = sext i32 %404 to i64
  %smin = call i64 @llvm.smin.i64(i64 %315, i64 %405)
  %406 = sext i32 %indvars.iv803 to i64
  %smax989 = call i64 @llvm.smax.i64(i64 %smin, i64 %406)
  %407 = sub i64 %smax989, %406
  %408 = mul i32 %26, %indvar
  %409 = add i32 %110, %408
  %gep912 = getelementptr double, ptr %invariant.gep911, i64 %indvars.iv808
  %410 = load double, ptr %gep912, align 8, !tbaa !9
  %411 = fcmp oge double %410, 0.000000e+00
  %412 = fneg double %410
  %413 = select i1 %411, double %410, double %412
  %414 = trunc i64 %indvars.iv808 to i32
  %415 = add i32 %313, %414
  %416 = call i32 @llvm.smin.i32(i32 %136, i32 %415)
  %indvars.iv.next809 = add nuw nsw i64 %indvars.iv808, 1
  %417 = sext i32 %416 to i64
  %.not591653.not = icmp slt i64 %indvars.iv808, %417
  br i1 %.not591653.not, label %.lr.ph656, label %._crit_edge657

.lr.ph656:                                        ; preds = %387
  %418 = sext i32 %indvars.iv803 to i64
  %419 = trunc nuw nsw i64 %indvars.iv808 to i32
  %420 = mul i32 %.3541659754, %419
  %min.iters.check1007 = icmp ult i64 %392, 4
  br i1 %min.iters.check1007, label %scalar.ph1006.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph656
  %421 = trunc i64 %407 to i32
  %422 = add i32 %409, %421
  %423 = icmp slt i32 %422, %409
  %424 = icmp ugt i64 %407, 4294967295
  %425 = or i1 %423, %424
  br i1 %425, label %scalar.ph1006.preheader, label %vector.memcheck990

vector.memcheck990:                               ; preds = %vector.scevcheck
  %bound01000 = icmp ult ptr %scevgep992, %scevgep999
  %bound11001 = icmp ult ptr %scevgep997, %scevgep995
  %found.conflict1002 = and i1 %bound01000, %bound11001
  br i1 %found.conflict1002, label %scalar.ph1006.preheader, label %vector.ph1008

vector.ph1008:                                    ; preds = %vector.memcheck990
  %n.vec1010 = and i64 %392, -4
  %ind.end1011 = add i64 %n.vec1010, %418
  %broadcast.splatinsert = insertelement <2 x double> poison, double %413, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1013

vector.body1013:                                  ; preds = %vector.body1013, %vector.ph1008
  %index1014 = phi i64 [ 0, %vector.ph1008 ], [ %index.next1020, %vector.body1013 ]
  %offset.idx1015 = add i64 %index1014, %418
  %426 = trunc i64 %offset.idx1015 to i32
  %427 = add i32 %426, 1
  %428 = add i32 %420, %427
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds double, ptr %28, i64 %429
  %431 = getelementptr inbounds i8, ptr %430, i64 16
  %wide.load1016 = load <2 x double>, ptr %430, align 8, !tbaa !9, !alias.scope !45
  %wide.load1017 = load <2 x double>, ptr %431, align 8, !tbaa !9, !alias.scope !45
  %432 = fcmp oge <2 x double> %wide.load1016, zeroinitializer
  %433 = fcmp oge <2 x double> %wide.load1017, zeroinitializer
  %434 = fneg <2 x double> %wide.load1016
  %435 = fneg <2 x double> %wide.load1017
  %436 = select <2 x i1> %432, <2 x double> %wide.load1016, <2 x double> %434
  %437 = select <2 x i1> %433, <2 x double> %wide.load1017, <2 x double> %435
  %438 = getelementptr inbounds double, ptr %37, i64 %offset.idx1015
  %439 = getelementptr inbounds i8, ptr %438, i64 16
  %wide.load1018 = load <2 x double>, ptr %438, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %wide.load1019 = load <2 x double>, ptr %439, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %440 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %436, <2 x double> %broadcast.splat, <2 x double> %wide.load1018)
  %441 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %437, <2 x double> %broadcast.splat, <2 x double> %wide.load1019)
  store <2 x double> %440, ptr %438, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  store <2 x double> %441, ptr %439, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %index.next1020 = add nuw i64 %index1014, 4
  %442 = icmp eq i64 %index.next1020, %n.vec1010
  br i1 %442, label %middle.block1005, label %vector.body1013, !llvm.loop !50

middle.block1005:                                 ; preds = %vector.body1013
  %cmp.n1021 = icmp eq i64 %392, %n.vec1010
  br i1 %cmp.n1021, label %._crit_edge657, label %scalar.ph1006.preheader

scalar.ph1006.preheader:                          ; preds = %middle.block1005, %vector.memcheck990, %vector.scevcheck, %.lr.ph656
  %indvars.iv805.ph = phi i64 [ %418, %vector.memcheck990 ], [ %418, %vector.scevcheck ], [ %418, %.lr.ph656 ], [ %ind.end1011, %middle.block1005 ]
  br label %scalar.ph1006

scalar.ph1006:                                    ; preds = %scalar.ph1006.preheader, %scalar.ph1006
  %indvars.iv805 = phi i64 [ %indvars.iv.next806, %scalar.ph1006 ], [ %indvars.iv805.ph, %scalar.ph1006.preheader ]
  %indvars.iv.next806 = add nuw nsw i64 %indvars.iv805, 1
  %443 = trunc nsw i64 %indvars.iv.next806 to i32
  %444 = add i32 %420, %443
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds double, ptr %28, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !9
  %448 = fcmp oge double %447, 0.000000e+00
  %449 = fneg double %447
  %450 = select i1 %448, double %447, double %449
  %451 = getelementptr inbounds double, ptr %37, i64 %indvars.iv805
  %452 = load double, ptr %451, align 8, !tbaa !9
  %453 = call double @llvm.fmuladd.f64(double %450, double %413, double %452)
  store double %453, ptr %451, align 8, !tbaa !9
  %.not591.not = icmp slt i64 %indvars.iv805, %417
  br i1 %.not591.not, label %scalar.ph1006, label %._crit_edge657, !llvm.loop !51

._crit_edge657:                                   ; preds = %scalar.ph1006, %middle.block1005, %387
  %454 = getelementptr inbounds double, ptr %37, i64 %indvars.iv808
  %455 = load double, ptr %454, align 8, !tbaa !9
  %456 = fadd double %413, %455
  store double %456, ptr %454, align 8, !tbaa !9
  %indvars.iv.next804 = add nuw i32 %indvars.iv803, 1
  %exitcond812.not = icmp eq i64 %indvars.iv.next809, %wide.trip.count811
  %indvar.next = add i32 %indvar, 1
  br i1 %exitcond812.not, label %.loopexit611, label %387, !llvm.loop !52

457:                                              ; preds = %._crit_edge
  br i1 %.not, label %518, label %458

458:                                              ; preds = %457
  br i1 %.not568, label %.preheader614, label %.preheader616

.preheader616:                                    ; preds = %458
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph669

.lr.ph669:                                        ; preds = %.preheader616
  %459 = load i32, ptr %4, align 4, !tbaa !5
  %460 = sub i32 1, %459
  %461 = add nuw i32 %136, 1
  %wide.trip.count822 = zext i32 %461 to i64
  %.not587661 = icmp slt i32 %459, 0
  %invariant.gep913 = getelementptr double, ptr %34, i64 %129
  br label %465

.preheader614:                                    ; preds = %458
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph679

.lr.ph679:                                        ; preds = %.preheader614
  %462 = load i32, ptr %4, align 4, !tbaa !5
  %463 = sub i32 1, %462
  %464 = add nuw i32 %136, 1
  %wide.trip.count833 = zext i32 %464 to i64
  %invariant.gep917 = getelementptr double, ptr %34, i64 %129
  %invariant.gep915 = getelementptr double, ptr %34, i64 %129
  br label %487

465:                                              ; preds = %.lr.ph669, %._crit_edge666
  %indvars.iv819 = phi i64 [ 1, %.lr.ph669 ], [ %indvars.iv.next820, %._crit_edge666 ]
  %indvars.iv813 = phi i32 [ %460, %.lr.ph669 ], [ %indvars.iv.next814, %._crit_edge666 ]
  br i1 %.not587661, label %._crit_edge666, label %.lr.ph665

.lr.ph665:                                        ; preds = %465
  %smax815 = call i32 @llvm.smax.i32(i32 %indvars.iv813, i32 1)
  %466 = zext nneg i32 %smax815 to i64
  %467 = trunc nuw nsw i64 %indvars.iv819 to i32
  %reass.sub755 = mul i32 %.4542668756, %467
  %468 = add i32 %reass.sub755, 1
  %469 = add i32 %468, %459
  br label %470

470:                                              ; preds = %.lr.ph665, %470
  %indvars.iv816 = phi i64 [ %466, %.lr.ph665 ], [ %indvars.iv.next817, %470 ]
  %.0537663 = phi double [ 0.000000e+00, %.lr.ph665 ], [ %483, %470 ]
  %471 = trunc nuw nsw i64 %indvars.iv816 to i32
  %472 = add i32 %469, %471
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds double, ptr %28, i64 %473
  %475 = load double, ptr %474, align 8, !tbaa !9
  %476 = fcmp oge double %475, 0.000000e+00
  %477 = fneg double %475
  %478 = select i1 %476, double %475, double %477
  %gep914 = getelementptr double, ptr %invariant.gep913, i64 %indvars.iv816
  %479 = load double, ptr %gep914, align 8, !tbaa !9
  %480 = fcmp oge double %479, 0.000000e+00
  %481 = fneg double %479
  %482 = select i1 %480, double %479, double %481
  %483 = call double @llvm.fmuladd.f64(double %478, double %482, double %.0537663)
  %indvars.iv.next817 = add nuw nsw i64 %indvars.iv816, 1
  %.not587.not = icmp ult i64 %indvars.iv816, %indvars.iv819
  br i1 %.not587.not, label %470, label %._crit_edge666, !llvm.loop !53

._crit_edge666:                                   ; preds = %470, %465
  %.0537.lcssa = phi double [ 0.000000e+00, %465 ], [ %483, %470 ]
  %484 = getelementptr inbounds double, ptr %37, i64 %indvars.iv819
  %485 = load double, ptr %484, align 8, !tbaa !9
  %486 = fadd double %.0537.lcssa, %485
  store double %486, ptr %484, align 8, !tbaa !9
  %indvars.iv.next820 = add nuw nsw i64 %indvars.iv819, 1
  %indvars.iv.next814 = add i32 %indvars.iv813, 1
  %exitcond823.not = icmp eq i64 %indvars.iv.next820, %wide.trip.count822
  br i1 %exitcond823.not, label %.loopexit611, label %465, !llvm.loop !54

487:                                              ; preds = %.lr.ph679, %._crit_edge675
  %indvars.iv830 = phi i64 [ 1, %.lr.ph679 ], [ %indvars.iv.next831, %._crit_edge675 ]
  %indvars.iv824 = phi i32 [ %463, %.lr.ph679 ], [ %indvars.iv.next825, %._crit_edge675 ]
  %gep918 = getelementptr double, ptr %invariant.gep917, i64 %indvars.iv830
  %488 = load double, ptr %gep918, align 8, !tbaa !9
  %489 = fcmp oge double %488, 0.000000e+00
  %490 = fneg double %488
  %491 = select i1 %489, double %488, double %490
  %492 = trunc i64 %indvars.iv830 to i32
  %493 = sub i32 %492, %462
  %494 = call i32 @llvm.smax.i32(i32 %493, i32 1)
  %495 = zext nneg i32 %494 to i64
  %.not585.not670 = icmp ugt i64 %indvars.iv830, %495
  br i1 %.not585.not670, label %.lr.ph674, label %._crit_edge675

.lr.ph674:                                        ; preds = %487
  %smax826 = call i32 @llvm.smax.i32(i32 %indvars.iv824, i32 1)
  %496 = zext nneg i32 %smax826 to i64
  %497 = trunc nuw nsw i64 %indvars.iv830 to i32
  %reass.sub757 = mul i32 %.5543678758, %497
  %498 = add i32 %reass.sub757, 1
  %499 = add i32 %498, %462
  br label %500

500:                                              ; preds = %.lr.ph674, %500
  %indvars.iv827 = phi i64 [ %496, %.lr.ph674 ], [ %indvars.iv.next828, %500 ]
  %.1672 = phi double [ %491, %.lr.ph674 ], [ %513, %500 ]
  %501 = trunc nuw nsw i64 %indvars.iv827 to i32
  %502 = add i32 %499, %501
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %28, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !9
  %506 = fcmp oge double %505, 0.000000e+00
  %507 = fneg double %505
  %508 = select i1 %506, double %505, double %507
  %gep916 = getelementptr double, ptr %invariant.gep915, i64 %indvars.iv827
  %509 = load double, ptr %gep916, align 8, !tbaa !9
  %510 = fcmp oge double %509, 0.000000e+00
  %511 = fneg double %509
  %512 = select i1 %510, double %509, double %511
  %513 = call double @llvm.fmuladd.f64(double %508, double %512, double %.1672)
  %indvars.iv.next828 = add nuw nsw i64 %indvars.iv827, 1
  %514 = icmp ult i64 %indvars.iv.next828, %indvars.iv830
  br i1 %514, label %500, label %._crit_edge675, !llvm.loop !55

._crit_edge675:                                   ; preds = %500, %487
  %.1.lcssa = phi double [ %491, %487 ], [ %513, %500 ]
  %515 = getelementptr inbounds double, ptr %37, i64 %indvars.iv830
  %516 = load double, ptr %515, align 8, !tbaa !9
  %517 = fadd double %.1.lcssa, %516
  store double %517, ptr %515, align 8, !tbaa !9
  %indvars.iv.next831 = add nuw nsw i64 %indvars.iv830, 1
  %indvars.iv.next825 = add i32 %indvars.iv824, 1
  %exitcond834.not = icmp eq i64 %indvars.iv.next831, %wide.trip.count833
  br i1 %exitcond834.not, label %.loopexit611, label %487, !llvm.loop !56

518:                                              ; preds = %457
  br i1 %.not568, label %.preheader, label %.preheader612

.preheader612:                                    ; preds = %518
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph689

.lr.ph689:                                        ; preds = %.preheader612
  %519 = load i32, ptr %4, align 4, !tbaa !5
  %520 = add nuw i32 %136, 1
  %wide.trip.count841 = zext i32 %520 to i64
  %invariant.gep919 = getelementptr double, ptr %34, i64 %129
  br label %523

.preheader:                                       ; preds = %518
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph699

.lr.ph699:                                        ; preds = %.preheader
  %521 = load i32, ptr %4, align 4, !tbaa !5
  %522 = add nuw i32 %136, 1
  %wide.trip.count851 = zext i32 %522 to i64
  %invariant.gep923 = getelementptr double, ptr %34, i64 %129
  %invariant.gep921 = getelementptr double, ptr %34, i64 %129
  br label %547

523:                                              ; preds = %.lr.ph689, %._crit_edge685
  %indvars.iv835 = phi i64 [ 1, %.lr.ph689 ], [ %indvars.iv.next836, %._crit_edge685 ]
  %524 = trunc i64 %indvars.iv835 to i32
  %525 = add i32 %519, %524
  %526 = call i32 @llvm.smin.i32(i32 %136, i32 %525)
  %527 = sext i32 %526 to i64
  %.not582680 = icmp sgt i64 %indvars.iv835, %527
  br i1 %.not582680, label %._crit_edge685, label %.lr.ph684

.lr.ph684:                                        ; preds = %523
  %528 = trunc nuw nsw i64 %indvars.iv835 to i32
  %529 = mul i32 %.6688759, %528
  br label %530

530:                                              ; preds = %.lr.ph684, %530
  %indvars.iv837 = phi i64 [ %indvars.iv835, %.lr.ph684 ], [ %indvars.iv.next838, %530 ]
  %.2682 = phi double [ 0.000000e+00, %.lr.ph684 ], [ %543, %530 ]
  %indvars.iv.next838 = add nuw nsw i64 %indvars.iv837, 1
  %531 = trunc nsw i64 %indvars.iv.next838 to i32
  %532 = add i32 %529, %531
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds double, ptr %28, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !9
  %536 = fcmp oge double %535, 0.000000e+00
  %537 = fneg double %535
  %538 = select i1 %536, double %535, double %537
  %gep920 = getelementptr double, ptr %invariant.gep919, i64 %indvars.iv837
  %539 = load double, ptr %gep920, align 8, !tbaa !9
  %540 = fcmp oge double %539, 0.000000e+00
  %541 = fneg double %539
  %542 = select i1 %540, double %539, double %541
  %543 = call double @llvm.fmuladd.f64(double %538, double %542, double %.2682)
  %.not582.not = icmp slt i64 %indvars.iv837, %527
  br i1 %.not582.not, label %530, label %._crit_edge685, !llvm.loop !57

._crit_edge685:                                   ; preds = %530, %523
  %.2.lcssa = phi double [ 0.000000e+00, %523 ], [ %543, %530 ]
  %544 = getelementptr inbounds double, ptr %37, i64 %indvars.iv835
  %545 = load double, ptr %544, align 8, !tbaa !9
  %546 = fadd double %.2.lcssa, %545
  store double %546, ptr %544, align 8, !tbaa !9
  %indvars.iv.next836 = add nuw nsw i64 %indvars.iv835, 1
  %exitcond842.not = icmp eq i64 %indvars.iv.next836, %wide.trip.count841
  br i1 %exitcond842.not, label %.loopexit611, label %523, !llvm.loop !58

547:                                              ; preds = %.lr.ph699, %._crit_edge695
  %indvars.iv848 = phi i64 [ 1, %.lr.ph699 ], [ %indvars.iv.next849, %._crit_edge695 ]
  %indvars.iv843 = phi i32 [ 2, %.lr.ph699 ], [ %indvars.iv.next844, %._crit_edge695 ]
  %gep924 = getelementptr double, ptr %invariant.gep923, i64 %indvars.iv848
  %548 = load double, ptr %gep924, align 8, !tbaa !9
  %549 = fcmp oge double %548, 0.000000e+00
  %550 = fneg double %548
  %551 = select i1 %549, double %548, double %550
  %552 = trunc i64 %indvars.iv848 to i32
  %553 = add i32 %521, %552
  %554 = call i32 @llvm.smin.i32(i32 %136, i32 %553)
  %indvars.iv.next849 = add nuw nsw i64 %indvars.iv848, 1
  %555 = sext i32 %554 to i64
  %.not579690.not = icmp slt i64 %indvars.iv848, %555
  br i1 %.not579690.not, label %.lr.ph694, label %._crit_edge695

.lr.ph694:                                        ; preds = %547
  %556 = sext i32 %indvars.iv843 to i64
  %557 = trunc nuw nsw i64 %indvars.iv848 to i32
  %558 = mul i32 %.7698760, %557
  br label %559

559:                                              ; preds = %.lr.ph694, %559
  %indvars.iv845 = phi i64 [ %556, %.lr.ph694 ], [ %indvars.iv.next846, %559 ]
  %.3692 = phi double [ %551, %.lr.ph694 ], [ %572, %559 ]
  %indvars.iv.next846 = add nuw nsw i64 %indvars.iv845, 1
  %560 = trunc nsw i64 %indvars.iv.next846 to i32
  %561 = add i32 %558, %560
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds double, ptr %28, i64 %562
  %564 = load double, ptr %563, align 8, !tbaa !9
  %565 = fcmp oge double %564, 0.000000e+00
  %566 = fneg double %564
  %567 = select i1 %565, double %564, double %566
  %gep922 = getelementptr double, ptr %invariant.gep921, i64 %indvars.iv845
  %568 = load double, ptr %gep922, align 8, !tbaa !9
  %569 = fcmp oge double %568, 0.000000e+00
  %570 = fneg double %568
  %571 = select i1 %569, double %568, double %570
  %572 = call double @llvm.fmuladd.f64(double %567, double %571, double %.3692)
  %.not579.not = icmp slt i64 %indvars.iv845, %555
  br i1 %.not579.not, label %559, label %._crit_edge695, !llvm.loop !59

._crit_edge695:                                   ; preds = %559, %547
  %.3.lcssa = phi double [ %551, %547 ], [ %572, %559 ]
  %573 = getelementptr inbounds double, ptr %37, i64 %indvars.iv848
  %574 = load double, ptr %573, align 8, !tbaa !9
  %575 = fadd double %.3.lcssa, %574
  store double %575, ptr %573, align 8, !tbaa !9
  %indvars.iv.next844 = add nuw i32 %indvars.iv843, 1
  %exitcond852.not = icmp eq i64 %indvars.iv.next849, %wide.trip.count851
  br i1 %exitcond852.not, label %.loopexit611, label %547, !llvm.loop !60

.loopexit611:                                     ; preds = %._crit_edge633, %._crit_edge641, %._crit_edge649, %._crit_edge657, %._crit_edge666, %._crit_edge675, %._crit_edge685, %._crit_edge695
  br i1 %.not575627, label %._crit_edge705.thread, label %.lr.ph704.preheader

.lr.ph704.preheader:                              ; preds = %.loopexit611
  %576 = zext nneg i32 %136 to i64
  %577 = add nuw i32 %136, 1
  %wide.trip.count856 = zext i32 %577 to i64
  %invariant.gep925 = getelementptr inbounds double, ptr %37, i64 %576
  %invariant.gep927 = getelementptr inbounds double, ptr %37, i64 %576
  br label %.lr.ph704

.lr.ph704:                                        ; preds = %.lr.ph704.preheader, %595
  %indvars.iv853 = phi i64 [ 1, %.lr.ph704.preheader ], [ %indvars.iv.next854, %595 ]
  %.4702 = phi double [ 0.000000e+00, %.lr.ph704.preheader ], [ %597, %595 ]
  %578 = getelementptr inbounds double, ptr %37, i64 %indvars.iv853
  %579 = load double, ptr %578, align 8, !tbaa !9
  %580 = fcmp ogt double %579, %104
  br i1 %580, label %581, label %587

581:                                              ; preds = %.lr.ph704
  %gep928 = getelementptr inbounds double, ptr %invariant.gep927, i64 %indvars.iv853
  %582 = load double, ptr %gep928, align 8, !tbaa !9
  %583 = fcmp oge double %582, 0.000000e+00
  %584 = fneg double %582
  %585 = select i1 %583, double %582, double %584
  %586 = fdiv double %585, %579
  br label %595

587:                                              ; preds = %.lr.ph704
  %gep926 = getelementptr inbounds double, ptr %invariant.gep925, i64 %indvars.iv853
  %588 = load double, ptr %gep926, align 8, !tbaa !9
  %589 = fcmp oge double %588, 0.000000e+00
  %590 = fneg double %588
  %591 = select i1 %589, double %588, double %590
  %592 = fadd double %103, %591
  %593 = fadd double %103, %579
  %594 = fdiv double %592, %593
  br label %595

595:                                              ; preds = %581, %587
  %.sink941 = phi double [ %586, %581 ], [ %594, %587 ]
  %596 = fcmp oge double %.4702, %.sink941
  %597 = select i1 %596, double %.4702, double %.sink941
  %indvars.iv.next854 = add nuw nsw i64 %indvars.iv853, 1
  %exitcond857.not = icmp eq i64 %indvars.iv.next854, %wide.trip.count856
  br i1 %exitcond857.not, label %._crit_edge705, label %.lr.ph704, !llvm.loop !61

._crit_edge705.thread:                            ; preds = %.loopexit611, %.preheader624, %.preheader622, %.preheader620, %.preheader618, %.preheader616, %.preheader614, %.preheader612, %.preheader
  %598 = getelementptr inbounds double, ptr %36, i64 %indvars.iv878
  store double 0.000000e+00, ptr %598, align 8, !tbaa !9
  br label %._crit_edge711

._crit_edge705:                                   ; preds = %595
  %599 = getelementptr inbounds double, ptr %36, i64 %indvars.iv878
  store double %597, ptr %599, align 8, !tbaa !9
  br i1 %.not575627, label %._crit_edge711, label %.lr.ph710.preheader

.lr.ph710.preheader:                              ; preds = %._crit_edge705
  %600 = zext nneg i32 %136 to i64
  %601 = add nuw i32 %136, 1
  %wide.trip.count861 = zext i32 %601 to i64
  %invariant.gep929 = getelementptr inbounds double, ptr %37, i64 %600
  %invariant.gep931 = getelementptr inbounds double, ptr %37, i64 %600
  br label %.lr.ph710

.lr.ph710:                                        ; preds = %.lr.ph710.preheader, %618
  %indvars.iv858 = phi i64 [ 1, %.lr.ph710.preheader ], [ %indvars.iv.next859, %618 ]
  %602 = getelementptr inbounds double, ptr %37, i64 %indvars.iv858
  %603 = load double, ptr %602, align 8, !tbaa !9
  %604 = fcmp ogt double %603, %104
  br i1 %604, label %605, label %611

605:                                              ; preds = %.lr.ph710
  %gep932 = getelementptr inbounds double, ptr %invariant.gep931, i64 %indvars.iv858
  %606 = load double, ptr %gep932, align 8, !tbaa !9
  %607 = fcmp oge double %606, 0.000000e+00
  %608 = fneg double %606
  %609 = select i1 %607, double %606, double %608
  %610 = call double @llvm.fmuladd.f64(double %106, double %603, double %609)
  br label %618

611:                                              ; preds = %.lr.ph710
  %gep930 = getelementptr inbounds double, ptr %invariant.gep929, i64 %indvars.iv858
  %612 = load double, ptr %gep930, align 8, !tbaa !9
  %613 = fcmp oge double %612, 0.000000e+00
  %614 = fneg double %612
  %615 = select i1 %613, double %612, double %614
  %616 = call double @llvm.fmuladd.f64(double %106, double %603, double %615)
  %617 = fadd double %103, %616
  br label %618

618:                                              ; preds = %605, %611
  %storemerge605 = phi double [ %617, %611 ], [ %610, %605 ]
  store double %storemerge605, ptr %602, align 8, !tbaa !9
  %indvars.iv.next859 = add nuw nsw i64 %indvars.iv858, 1
  %exitcond862.not = icmp eq i64 %indvars.iv.next859, %wide.trip.count861
  br i1 %exitcond862.not, label %._crit_edge711, label %.lr.ph710, !llvm.loop !62

._crit_edge711:                                   ; preds = %618, %._crit_edge705.thread, %._crit_edge705
  store i32 0, ptr %23, align 4, !tbaa !5
  %619 = getelementptr inbounds double, ptr %35, i64 %indvars.iv878
  br label %.loopexit610

.loopexit610:                                     ; preds = %.loopexit610.backedge, %._crit_edge711
  %620 = phi i32 [ %136, %._crit_edge711 ], [ %.be, %.loopexit610.backedge ]
  %621 = shl i32 %620, 1
  %622 = or disjoint i32 %621, 1
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds double, ptr %37, i64 %623
  %625 = sext i32 %620 to i64
  %gep = getelementptr double, ptr %14, i64 %625
  call void @dlacn2_(ptr noundef nonnull %3, ptr noundef nonnull %624, ptr noundef %gep, ptr noundef %15, ptr noundef nonnull %619, ptr noundef nonnull %23, ptr noundef nonnull %24) #5
  %626 = load i32, ptr %23, align 4, !tbaa !5
  %627 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %626, label %668 [
    i32 0, label %707
    i32 1, label %628
  ]

628:                                              ; preds = %.loopexit610
  %629 = sext i32 %627 to i64
  %gep722 = getelementptr double, ptr %14, i64 %629
  call void @dtbsv_(ptr noundef %0, ptr noundef nonnull %25, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep722, ptr noundef nonnull @c__1) #5
  %630 = load i32, ptr %3, align 4, !tbaa !5
  %.not604712 = icmp slt i32 %630, 1
  br i1 %.not604712, label %.loopexit610.backedge, label %.lr.ph715.preheader

.lr.ph715.preheader:                              ; preds = %628
  %631 = zext nneg i32 %630 to i64
  %632 = add nuw i32 %630, 1
  %wide.trip.count866 = zext i32 %632 to i64
  %invariant.gep933 = getelementptr inbounds double, ptr %37, i64 %631
  %633 = zext nneg i32 %630 to i64
  %min.iters.check974 = icmp ult i32 %630, 6
  br i1 %min.iters.check974, label %.lr.ph715.preheader1175, label %vector.memcheck963

vector.memcheck963:                               ; preds = %.lr.ph715.preheader
  %634 = shl nuw nsw i64 %631, 3
  %scevgep964 = getelementptr i8, ptr %14, i64 %634
  %635 = shl nuw nsw i64 %wide.trip.count866, 3
  %636 = getelementptr i8, ptr %scevgep965, i64 %634
  %scevgep966 = getelementptr i8, ptr %636, i64 %635
  %scevgep968 = getelementptr i8, ptr %scevgep967, i64 %635
  %bound0969 = icmp ult ptr %scevgep964, %scevgep968
  %bound1970 = icmp ugt ptr %scevgep966, %14
  %found.conflict971 = and i1 %bound0969, %bound1970
  br i1 %found.conflict971, label %.lr.ph715.preheader1175, label %vector.ph975

vector.ph975:                                     ; preds = %vector.memcheck963
  %n.vec977 = and i64 %633, 2147483644
  %ind.end978 = or disjoint i64 %n.vec977, 1
  br label %vector.body980

vector.body980:                                   ; preds = %vector.body980, %vector.ph975
  %index981 = phi i64 [ 0, %vector.ph975 ], [ %index.next987, %vector.body980 ]
  %offset.idx982 = or disjoint i64 %index981, 1
  %637 = getelementptr double, ptr %14, i64 %index981
  %638 = getelementptr inbounds i8, ptr %637, i64 16
  %wide.load983 = load <2 x double>, ptr %637, align 8, !tbaa !9, !alias.scope !63
  %wide.load984 = load <2 x double>, ptr %638, align 8, !tbaa !9, !alias.scope !63
  %639 = getelementptr inbounds double, ptr %invariant.gep933, i64 %offset.idx982
  %640 = getelementptr inbounds i8, ptr %639, i64 16
  %wide.load985 = load <2 x double>, ptr %639, align 8, !tbaa !9, !alias.scope !66, !noalias !63
  %wide.load986 = load <2 x double>, ptr %640, align 8, !tbaa !9, !alias.scope !66, !noalias !63
  %641 = fmul <2 x double> %wide.load983, %wide.load985
  %642 = fmul <2 x double> %wide.load984, %wide.load986
  store <2 x double> %641, ptr %639, align 8, !tbaa !9, !alias.scope !66, !noalias !63
  store <2 x double> %642, ptr %640, align 8, !tbaa !9, !alias.scope !66, !noalias !63
  %index.next987 = add nuw i64 %index981, 4
  %643 = icmp eq i64 %index.next987, %n.vec977
  br i1 %643, label %middle.block972, label %vector.body980, !llvm.loop !68

middle.block972:                                  ; preds = %vector.body980
  %cmp.n988 = icmp eq i64 %n.vec977, %633
  br i1 %cmp.n988, label %.loopexit610.backedge, label %.lr.ph715.preheader1175

.loopexit610.backedge:                            ; preds = %.lr.ph715.prol.loopexit, %.lr.ph715, %middle.block972, %628, %._crit_edge720
  %.be = phi i32 [ %630, %628 ], [ %.pre886.pre, %._crit_edge720 ], [ %630, %middle.block972 ], [ %630, %.lr.ph715 ], [ %630, %.lr.ph715.prol.loopexit ]
  br label %.loopexit610

.lr.ph715.preheader1175:                          ; preds = %middle.block972, %vector.memcheck963, %.lr.ph715.preheader
  %indvars.iv863.ph = phi i64 [ 1, %vector.memcheck963 ], [ 1, %.lr.ph715.preheader ], [ %ind.end978, %middle.block972 ]
  %644 = sub nsw i64 %wide.trip.count866, %indvars.iv863.ph
  %645 = zext nneg i32 %630 to i64
  %646 = sub nsw i64 %645, %indvars.iv863.ph
  %xtraiter1191 = and i64 %644, 3
  %lcmp.mod1192.not = icmp eq i64 %xtraiter1191, 0
  br i1 %lcmp.mod1192.not, label %.lr.ph715.prol.loopexit, label %.lr.ph715.prol

.lr.ph715.prol:                                   ; preds = %.lr.ph715.preheader1175, %.lr.ph715.prol
  %indvars.iv863.prol = phi i64 [ %indvars.iv.next864.prol, %.lr.ph715.prol ], [ %indvars.iv863.ph, %.lr.ph715.preheader1175 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph715.prol ], [ 0, %.lr.ph715.preheader1175 ]
  %647 = getelementptr inbounds double, ptr %37, i64 %indvars.iv863.prol
  %648 = load double, ptr %647, align 8, !tbaa !9
  %gep934.prol = getelementptr inbounds double, ptr %invariant.gep933, i64 %indvars.iv863.prol
  %649 = load double, ptr %gep934.prol, align 8, !tbaa !9
  %650 = fmul double %648, %649
  store double %650, ptr %gep934.prol, align 8, !tbaa !9
  %indvars.iv.next864.prol = add nuw nsw i64 %indvars.iv863.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1191
  br i1 %prol.iter.cmp.not, label %.lr.ph715.prol.loopexit, label %.lr.ph715.prol, !llvm.loop !69

.lr.ph715.prol.loopexit:                          ; preds = %.lr.ph715.prol, %.lr.ph715.preheader1175
  %indvars.iv863.unr = phi i64 [ %indvars.iv863.ph, %.lr.ph715.preheader1175 ], [ %indvars.iv.next864.prol, %.lr.ph715.prol ]
  %651 = icmp ult i64 %646, 3
  br i1 %651, label %.loopexit610.backedge, label %.lr.ph715.preheader1175.new

.lr.ph715.preheader1175.new:                      ; preds = %.lr.ph715.prol.loopexit
  %invariant.gep1216 = getelementptr i8, ptr %invariant.gep933, i64 8
  br label %.lr.ph715

.lr.ph715:                                        ; preds = %.lr.ph715, %.lr.ph715.preheader1175.new
  %indvars.iv863 = phi i64 [ %indvars.iv863.unr, %.lr.ph715.preheader1175.new ], [ %indvars.iv.next864.3, %.lr.ph715 ]
  %652 = getelementptr inbounds double, ptr %37, i64 %indvars.iv863
  %653 = load double, ptr %652, align 8, !tbaa !9
  %gep934 = getelementptr inbounds double, ptr %invariant.gep933, i64 %indvars.iv863
  %654 = load double, ptr %gep934, align 8, !tbaa !9
  %655 = fmul double %653, %654
  store double %655, ptr %gep934, align 8, !tbaa !9
  %656 = getelementptr double, ptr %14, i64 %indvars.iv863
  %657 = load double, ptr %656, align 8, !tbaa !9
  %gep1217 = getelementptr double, ptr %invariant.gep1216, i64 %indvars.iv863
  %658 = load double, ptr %gep1217, align 8, !tbaa !9
  %659 = fmul double %657, %658
  store double %659, ptr %gep1217, align 8, !tbaa !9
  %indvars.iv.next864.1 = add nuw nsw i64 %indvars.iv863, 2
  %660 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next864.1
  %661 = load double, ptr %660, align 8, !tbaa !9
  %gep934.2 = getelementptr inbounds double, ptr %invariant.gep933, i64 %indvars.iv.next864.1
  %662 = load double, ptr %gep934.2, align 8, !tbaa !9
  %663 = fmul double %661, %662
  store double %663, ptr %gep934.2, align 8, !tbaa !9
  %indvars.iv.next864.2 = add nuw nsw i64 %indvars.iv863, 3
  %664 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next864.2
  %665 = load double, ptr %664, align 8, !tbaa !9
  %gep934.3 = getelementptr inbounds double, ptr %invariant.gep933, i64 %indvars.iv.next864.2
  %666 = load double, ptr %gep934.3, align 8, !tbaa !9
  %667 = fmul double %665, %666
  store double %667, ptr %gep934.3, align 8, !tbaa !9
  %indvars.iv.next864.3 = add nuw nsw i64 %indvars.iv863, 4
  %exitcond867.not.3 = icmp eq i64 %indvars.iv.next864.3, %wide.trip.count866
  br i1 %exitcond867.not.3, label %.loopexit610.backedge, label %.lr.ph715, !llvm.loop !70

668:                                              ; preds = %.loopexit610
  %.not603716 = icmp slt i32 %627, 1
  br i1 %.not603716, label %._crit_edge720, label %.lr.ph719.preheader

.lr.ph719.preheader:                              ; preds = %668
  %669 = zext nneg i32 %627 to i64
  %670 = add nuw i32 %627, 1
  %wide.trip.count871 = zext i32 %670 to i64
  %invariant.gep935 = getelementptr inbounds double, ptr %37, i64 %669
  %671 = zext nneg i32 %627 to i64
  %min.iters.check = icmp ult i32 %627, 6
  br i1 %min.iters.check, label %.lr.ph719.preheader1174, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph719.preheader
  %672 = shl nuw nsw i64 %669, 3
  %scevgep = getelementptr i8, ptr %14, i64 %672
  %673 = shl nuw nsw i64 %wide.trip.count871, 3
  %674 = getelementptr i8, ptr %scevgep956, i64 %672
  %scevgep957 = getelementptr i8, ptr %674, i64 %673
  %scevgep959 = getelementptr i8, ptr %scevgep958, i64 %673
  %bound0 = icmp ult ptr %scevgep, %scevgep959
  %bound1 = icmp ugt ptr %scevgep957, %14
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph719.preheader1174, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %671, 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
  %675 = getelementptr double, ptr %14, i64 %index
  %676 = getelementptr inbounds i8, ptr %675, i64 16
  %wide.load = load <2 x double>, ptr %675, align 8, !tbaa !9, !alias.scope !71
  %wide.load960 = load <2 x double>, ptr %676, align 8, !tbaa !9, !alias.scope !71
  %677 = getelementptr inbounds double, ptr %invariant.gep935, i64 %offset.idx
  %678 = getelementptr inbounds i8, ptr %677, i64 16
  %wide.load961 = load <2 x double>, ptr %677, align 8, !tbaa !9, !alias.scope !74, !noalias !71
  %wide.load962 = load <2 x double>, ptr %678, align 8, !tbaa !9, !alias.scope !74, !noalias !71
  %679 = fmul <2 x double> %wide.load, %wide.load961
  %680 = fmul <2 x double> %wide.load960, %wide.load962
  store <2 x double> %679, ptr %677, align 8, !tbaa !9, !alias.scope !74, !noalias !71
  store <2 x double> %680, ptr %678, align 8, !tbaa !9, !alias.scope !74, !noalias !71
  %index.next = add nuw i64 %index, 4
  %681 = icmp eq i64 %index.next, %n.vec
  br i1 %681, label %middle.block, label %vector.body, !llvm.loop !76

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %671
  br i1 %cmp.n, label %._crit_edge720, label %.lr.ph719.preheader1174

.lr.ph719.preheader1174:                          ; preds = %middle.block, %vector.memcheck, %.lr.ph719.preheader
  %indvars.iv868.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph719.preheader ], [ %ind.end, %middle.block ]
  %682 = sub nsw i64 %wide.trip.count871, %indvars.iv868.ph
  %683 = zext nneg i32 %627 to i64
  %684 = sub nsw i64 %683, %indvars.iv868.ph
  %xtraiter1193 = and i64 %682, 3
  %lcmp.mod1194.not = icmp eq i64 %xtraiter1193, 0
  br i1 %lcmp.mod1194.not, label %.lr.ph719.prol.loopexit, label %.lr.ph719.prol

.lr.ph719.prol:                                   ; preds = %.lr.ph719.preheader1174, %.lr.ph719.prol
  %indvars.iv868.prol = phi i64 [ %indvars.iv.next869.prol, %.lr.ph719.prol ], [ %indvars.iv868.ph, %.lr.ph719.preheader1174 ]
  %prol.iter1195 = phi i64 [ %prol.iter1195.next, %.lr.ph719.prol ], [ 0, %.lr.ph719.preheader1174 ]
  %685 = getelementptr inbounds double, ptr %37, i64 %indvars.iv868.prol
  %686 = load double, ptr %685, align 8, !tbaa !9
  %gep936.prol = getelementptr inbounds double, ptr %invariant.gep935, i64 %indvars.iv868.prol
  %687 = load double, ptr %gep936.prol, align 8, !tbaa !9
  %688 = fmul double %686, %687
  store double %688, ptr %gep936.prol, align 8, !tbaa !9
  %indvars.iv.next869.prol = add nuw nsw i64 %indvars.iv868.prol, 1
  %prol.iter1195.next = add i64 %prol.iter1195, 1
  %prol.iter1195.cmp.not = icmp eq i64 %prol.iter1195.next, %xtraiter1193
  br i1 %prol.iter1195.cmp.not, label %.lr.ph719.prol.loopexit, label %.lr.ph719.prol, !llvm.loop !77

.lr.ph719.prol.loopexit:                          ; preds = %.lr.ph719.prol, %.lr.ph719.preheader1174
  %indvars.iv868.unr = phi i64 [ %indvars.iv868.ph, %.lr.ph719.preheader1174 ], [ %indvars.iv.next869.prol, %.lr.ph719.prol ]
  %689 = icmp ult i64 %684, 3
  br i1 %689, label %._crit_edge720, label %.lr.ph719.preheader1174.new

.lr.ph719.preheader1174.new:                      ; preds = %.lr.ph719.prol.loopexit
  %invariant.gep1218 = getelementptr i8, ptr %invariant.gep935, i64 8
  br label %.lr.ph719

.lr.ph719:                                        ; preds = %.lr.ph719, %.lr.ph719.preheader1174.new
  %indvars.iv868 = phi i64 [ %indvars.iv868.unr, %.lr.ph719.preheader1174.new ], [ %indvars.iv.next869.3, %.lr.ph719 ]
  %690 = getelementptr inbounds double, ptr %37, i64 %indvars.iv868
  %691 = load double, ptr %690, align 8, !tbaa !9
  %gep936 = getelementptr inbounds double, ptr %invariant.gep935, i64 %indvars.iv868
  %692 = load double, ptr %gep936, align 8, !tbaa !9
  %693 = fmul double %691, %692
  store double %693, ptr %gep936, align 8, !tbaa !9
  %694 = getelementptr double, ptr %14, i64 %indvars.iv868
  %695 = load double, ptr %694, align 8, !tbaa !9
  %gep1219 = getelementptr double, ptr %invariant.gep1218, i64 %indvars.iv868
  %696 = load double, ptr %gep1219, align 8, !tbaa !9
  %697 = fmul double %695, %696
  store double %697, ptr %gep1219, align 8, !tbaa !9
  %indvars.iv.next869.1 = add nuw nsw i64 %indvars.iv868, 2
  %698 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next869.1
  %699 = load double, ptr %698, align 8, !tbaa !9
  %gep936.2 = getelementptr inbounds double, ptr %invariant.gep935, i64 %indvars.iv.next869.1
  %700 = load double, ptr %gep936.2, align 8, !tbaa !9
  %701 = fmul double %699, %700
  store double %701, ptr %gep936.2, align 8, !tbaa !9
  %indvars.iv.next869.2 = add nuw nsw i64 %indvars.iv868, 3
  %702 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next869.2
  %703 = load double, ptr %702, align 8, !tbaa !9
  %gep936.3 = getelementptr inbounds double, ptr %invariant.gep935, i64 %indvars.iv.next869.2
  %704 = load double, ptr %gep936.3, align 8, !tbaa !9
  %705 = fmul double %703, %704
  store double %705, ptr %gep936.3, align 8, !tbaa !9
  %indvars.iv.next869.3 = add nuw nsw i64 %indvars.iv868, 4
  %exitcond872.not.3 = icmp eq i64 %indvars.iv.next869.3, %wide.trip.count871
  br i1 %exitcond872.not.3, label %._crit_edge720, label %.lr.ph719, !llvm.loop !78

._crit_edge720:                                   ; preds = %.lr.ph719.prol.loopexit, %.lr.ph719, %middle.block, %668
  %706 = sext i32 %627 to i64
  %gep724 = getelementptr double, ptr %14, i64 %706
  call void @dtbsv_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep724, ptr noundef nonnull @c__1) #5
  %.pre886.pre = load i32, ptr %3, align 4, !tbaa !5
  br label %.loopexit610.backedge

707:                                              ; preds = %.loopexit610
  %.not602725 = icmp slt i32 %627, 1
  br i1 %.not602725, label %._crit_edge730.thread, label %.lr.ph729.preheader

.lr.ph729.preheader:                              ; preds = %707
  %invariant.gep937 = getelementptr double, ptr %34, i64 %129
  %708 = zext nneg i32 %627 to i64
  %xtraiter1196 = and i64 %708, 1
  %709 = icmp eq i32 %627, 1
  br i1 %709, label %._crit_edge730.unr-lcssa, label %.lr.ph729.preheader.new

.lr.ph729.preheader.new:                          ; preds = %.lr.ph729.preheader
  %unroll_iter = and i64 %708, 2147483646
  %invariant.gep1220 = getelementptr i8, ptr %invariant.gep937, i64 8
  br label %.lr.ph729

.lr.ph729:                                        ; preds = %.lr.ph729, %.lr.ph729.preheader.new
  %indvars.iv873 = phi i64 [ 1, %.lr.ph729.preheader.new ], [ %indvars.iv.next874.1, %.lr.ph729 ]
  %.0727 = phi double [ 0.000000e+00, %.lr.ph729.preheader.new ], [ %721, %.lr.ph729 ]
  %niter = phi i64 [ 0, %.lr.ph729.preheader.new ], [ %niter.next.1, %.lr.ph729 ]
  %gep938 = getelementptr double, ptr %invariant.gep937, i64 %indvars.iv873
  %710 = load double, ptr %gep938, align 8, !tbaa !9
  %711 = fcmp oge double %710, 0.000000e+00
  %712 = fneg double %710
  %713 = select i1 %711, double %710, double %712
  %714 = fcmp oge double %.0727, %713
  %715 = select i1 %714, double %.0727, double %713
  %gep1221 = getelementptr double, ptr %invariant.gep1220, i64 %indvars.iv873
  %716 = load double, ptr %gep1221, align 8, !tbaa !9
  %717 = fcmp oge double %716, 0.000000e+00
  %718 = fneg double %716
  %719 = select i1 %717, double %716, double %718
  %720 = fcmp oge double %715, %719
  %721 = select i1 %720, double %715, double %719
  %indvars.iv.next874.1 = add nuw nsw i64 %indvars.iv873, 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_edge730.unr-lcssa, label %.lr.ph729, !llvm.loop !79

._crit_edge730.unr-lcssa:                         ; preds = %.lr.ph729, %.lr.ph729.preheader
  %.lcssa1190.ph = phi double [ poison, %.lr.ph729.preheader ], [ %721, %.lr.ph729 ]
  %indvars.iv873.unr = phi i64 [ 1, %.lr.ph729.preheader ], [ %indvars.iv.next874.1, %.lr.ph729 ]
  %.0727.unr = phi double [ 0.000000e+00, %.lr.ph729.preheader ], [ %721, %.lr.ph729 ]
  %lcmp.mod1197.not = icmp eq i64 %xtraiter1196, 0
  br i1 %lcmp.mod1197.not, label %._crit_edge730, label %.lr.ph729.epil

.lr.ph729.epil:                                   ; preds = %._crit_edge730.unr-lcssa
  %gep938.epil = getelementptr double, ptr %invariant.gep937, i64 %indvars.iv873.unr
  %722 = load double, ptr %gep938.epil, align 8, !tbaa !9
  %723 = fcmp oge double %722, 0.000000e+00
  %724 = fneg double %722
  %725 = select i1 %723, double %722, double %724
  %726 = fcmp oge double %.0727.unr, %725
  %727 = select i1 %726, double %.0727.unr, double %725
  br label %._crit_edge730

._crit_edge730:                                   ; preds = %._crit_edge730.unr-lcssa, %.lr.ph729.epil
  %.lcssa1190 = phi double [ %.lcssa1190.ph, %._crit_edge730.unr-lcssa ], [ %727, %.lr.ph729.epil ]
  %728 = fcmp une double %.lcssa1190, 0.000000e+00
  br i1 %728, label %729, label %._crit_edge730.thread

729:                                              ; preds = %._crit_edge730
  %730 = load double, ptr %619, align 8, !tbaa !9
  %731 = fdiv double %730, %.lcssa1190
  store double %731, ptr %619, align 8, !tbaa !9
  br label %._crit_edge730.thread

._crit_edge730.thread:                            ; preds = %707, %._crit_edge730, %729
  %indvars.iv.next879 = add nuw nsw i64 %indvars.iv878, 1
  %.not573.not = icmp ult i64 %indvars.iv878, %109
  %indvar.next1141 = add i64 %indvar1140, 1
  br i1 %.not573.not, label %127, label %.loopexit, !llvm.loop !80

.loopexit:                                        ; preds = %._crit_edge730.thread, %.lr.ph749.prol.loopexit, %.lr.ph749, %middle.block1159, %74, %98, %75, %.thread
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #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 @dtbmv_(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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.usub.sat.i64(i64, i64) #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 = distinct !{!19, !12, !13, !14}
!20 = distinct !{!20, !12, !13}
!21 = !{!22}
!22 = distinct !{!22, !23}
!23 = distinct !{!23, !"LVerDomain"}
!24 = !{!25}
!25 = distinct !{!25, !23}
!26 = distinct !{!26, !12, !13, !14}
!27 = distinct !{!27, !12, !13}
!28 = distinct !{!28, !12}
!29 = !{!30}
!30 = distinct !{!30, !31}
!31 = distinct !{!31, !"LVerDomain"}
!32 = !{!33}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !12, !13, !14}
!35 = distinct !{!35, !12, !13}
!36 = distinct !{!36, !12}
!37 = !{!38}
!38 = distinct !{!38, !39}
!39 = distinct !{!39, !"LVerDomain"}
!40 = !{!41}
!41 = distinct !{!41, !39}
!42 = distinct !{!42, !12, !13, !14}
!43 = distinct !{!43, !12, !13}
!44 = distinct !{!44, !12}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = !{!49}
!49 = distinct !{!49, !47}
!50 = distinct !{!50, !12, !13, !14}
!51 = distinct !{!51, !12, !13}
!52 = distinct !{!52, !12}
!53 = distinct !{!53, !12}
!54 = distinct !{!54, !12}
!55 = distinct !{!55, !12}
!56 = distinct !{!56, !12}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12}
!59 = distinct !{!59, !12}
!60 = distinct !{!60, !12}
!61 = distinct !{!61, !12}
!62 = distinct !{!62, !12}
!63 = !{!64}
!64 = distinct !{!64, !65}
!65 = distinct !{!65, !"LVerDomain"}
!66 = !{!67}
!67 = distinct !{!67, !65}
!68 = distinct !{!68, !12, !13, !14}
!69 = distinct !{!69, !16}
!70 = distinct !{!70, !12, !13}
!71 = !{!72}
!72 = distinct !{!72, !73}
!73 = distinct !{!73, !"LVerDomain"}
!74 = !{!75}
!75 = distinct !{!75, !73}
!76 = distinct !{!76, !12, !13, !14}
!77 = distinct !{!77, !16}
!78 = distinct !{!78, !12, !13}
!79 = distinct !{!79, !12}
!80 = distinct !{!80, !12}


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