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

; 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 [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @dtfttr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) #0 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  %34 = load ptr, ptr %14, align 8, !tbaa !5
  %35 = load i64, ptr %34, align 8, !tbaa !9
  %36 = sub nsw i64 %35, 1
  %37 = sub nsw i64 %36, 0
  %38 = add nsw i64 %37, 1
  store i64 %38, ptr %16, align 8, !tbaa !9
  %39 = load i64, ptr %16, align 8, !tbaa !9
  %40 = mul nsw i64 %39, 0
  %41 = add nsw i64 0, %40
  store i64 %41, ptr %17, align 8, !tbaa !9
  %42 = load i64, ptr %17, align 8, !tbaa !9
  %43 = load ptr, ptr %13, align 8, !tbaa !5
  %44 = sub i64 0, %42
  %45 = getelementptr inbounds double, ptr %43, i64 %44
  store ptr %45, ptr %13, align 8, !tbaa !5
  %46 = load ptr, ptr %15, align 8, !tbaa !5
  store i64 0, ptr %46, align 8, !tbaa !9
  %47 = load ptr, ptr %9, align 8, !tbaa !5
  %48 = call i64 @lsame_(ptr noundef %47, ptr noundef @.str)
  store i64 %48, ptr %30, align 8, !tbaa !9
  %49 = load ptr, ptr %10, align 8, !tbaa !5
  %50 = call i64 @lsame_(ptr noundef %49, ptr noundef @.str.1)
  store i64 %50, ptr %31, align 8, !tbaa !9
  %51 = load i64, ptr %30, align 8, !tbaa !9
  %52 = icmp ne i64 %51, 0
  br i1 %52, label %59, label %53

53:                                               ; preds = %7
  %54 = load ptr, ptr %9, align 8, !tbaa !5
  %55 = call i64 @lsame_(ptr noundef %54, ptr noundef @.str.2)
  %56 = icmp ne i64 %55, 0
  br i1 %56, label %59, label %57

57:                                               ; preds = %53
  %58 = load ptr, ptr %15, align 8, !tbaa !5
  store i64 -1, ptr %58, align 8, !tbaa !9
  br label %92

59:                                               ; preds = %53, %7
  %60 = load i64, ptr %31, align 8, !tbaa !9
  %61 = icmp ne i64 %60, 0
  br i1 %61, label %68, label %62

62:                                               ; preds = %59
  %63 = load ptr, ptr %10, align 8, !tbaa !5
  %64 = call i64 @lsame_(ptr noundef %63, ptr noundef @.str.3)
  %65 = icmp ne i64 %64, 0
  br i1 %65, label %68, label %66

66:                                               ; preds = %62
  %67 = load ptr, ptr %15, align 8, !tbaa !5
  store i64 -2, ptr %67, align 8, !tbaa !9
  br label %91

68:                                               ; preds = %62, %59
  %69 = load ptr, ptr %11, align 8, !tbaa !5
  %70 = load i64, ptr %69, align 8, !tbaa !9
  %71 = icmp slt i64 %70, 0
  br i1 %71, label %72, label %74

72:                                               ; preds = %68
  %73 = load ptr, ptr %15, align 8, !tbaa !5
  store i64 -3, ptr %73, align 8, !tbaa !9
  br label %90

74:                                               ; preds = %68
  %75 = load ptr, ptr %14, align 8, !tbaa !5
  %76 = load i64, ptr %75, align 8, !tbaa !9
  %77 = load ptr, ptr %11, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  %79 = icmp sge i64 1, %78
  br i1 %79, label %80, label %81

80:                                               ; preds = %74
  br label %84

81:                                               ; preds = %74
  %82 = load ptr, ptr %11, align 8, !tbaa !5
  %83 = load i64, ptr %82, align 8, !tbaa !9
  br label %84

84:                                               ; preds = %81, %80
  %85 = phi i64 [ 1, %80 ], [ %83, %81 ]
  %86 = icmp slt i64 %76, %85
  br i1 %86, label %87, label %89

87:                                               ; preds = %84
  %88 = load ptr, ptr %15, align 8, !tbaa !5
  store i64 -6, ptr %88, align 8, !tbaa !9
  br label %89

89:                                               ; preds = %87, %84
  br label %90

90:                                               ; preds = %89, %72
  br label %91

91:                                               ; preds = %90, %66
  br label %92

92:                                               ; preds = %91, %57
  %93 = load ptr, ptr %15, align 8, !tbaa !5
  %94 = load i64, ptr %93, align 8, !tbaa !9
  %95 = icmp ne i64 %94, 0
  br i1 %95, label %96, label %101

96:                                               ; preds = %92
  %97 = load ptr, ptr %15, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  %99 = sub nsw i64 0, %98
  store i64 %99, ptr %18, align 8, !tbaa !9
  %100 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %18)
  store i32 0, ptr %8, align 4
  store i32 1, ptr %33, align 4
  br label %938

101:                                              ; preds = %92
  %102 = load ptr, ptr %11, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = icmp sle i64 %103, 1
  br i1 %104, label %105, label %116

105:                                              ; preds = %101
  %106 = load ptr, ptr %11, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = icmp eq i64 %107, 1
  br i1 %108, label %109, label %115

109:                                              ; preds = %105
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = getelementptr inbounds double, ptr %110, i64 0
  %112 = load double, ptr %111, align 8, !tbaa !11
  %113 = load ptr, ptr %13, align 8, !tbaa !5
  %114 = getelementptr inbounds double, ptr %113, i64 0
  store double %112, ptr %114, align 8, !tbaa !11
  br label %115

115:                                              ; preds = %109, %105
  store i32 0, ptr %8, align 4
  store i32 1, ptr %33, align 4
  br label %938

116:                                              ; preds = %101
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = load ptr, ptr %11, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = add nsw i64 %120, 1
  %122 = mul nsw i64 %118, %121
  %123 = sdiv i64 %122, 2
  store i64 %123, ptr %27, align 8, !tbaa !9
  %124 = load i64, ptr %31, align 8, !tbaa !9
  %125 = icmp ne i64 %124, 0
  br i1 %125, label %126, label %134

126:                                              ; preds = %116
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = sdiv i64 %128, 2
  store i64 %129, ptr %25, align 8, !tbaa !9
  %130 = load ptr, ptr %11, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = load i64, ptr %25, align 8, !tbaa !9
  %133 = sub nsw i64 %131, %132
  store i64 %133, ptr %24, align 8, !tbaa !9
  br label %142

134:                                              ; preds = %116
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = load i64, ptr %135, align 8, !tbaa !9
  %137 = sdiv i64 %136, 2
  store i64 %137, ptr %24, align 8, !tbaa !9
  %138 = load ptr, ptr %11, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = load i64, ptr %24, align 8, !tbaa !9
  %141 = sub nsw i64 %139, %140
  store i64 %141, ptr %25, align 8, !tbaa !9
  br label %142

142:                                              ; preds = %134, %126
  %143 = load ptr, ptr %11, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = srem i64 %144, 2
  %146 = icmp eq i64 %145, 0
  br i1 %146, label %147, label %161

147:                                              ; preds = %142
  %148 = load ptr, ptr %11, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = sdiv i64 %149, 2
  store i64 %150, ptr %22, align 8, !tbaa !9
  store i64 0, ptr %32, align 8, !tbaa !9
  %151 = load i64, ptr %31, align 8, !tbaa !9
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %160, label %153

153:                                              ; preds = %147
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = load ptr, ptr %11, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = add nsw i64 %155, %157
  %159 = add nsw i64 %158, 2
  store i64 %159, ptr %29, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %153, %147
  br label %171

161:                                              ; preds = %142
  store i64 1, ptr %32, align 8, !tbaa !9
  %162 = load i64, ptr %31, align 8, !tbaa !9
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %170, label %164

164:                                              ; preds = %161
  %165 = load ptr, ptr %11, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = load ptr, ptr %11, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = add nsw i64 %166, %168
  store i64 %169, ptr %28, align 8, !tbaa !9
  br label %170

170:                                              ; preds = %164, %161
  br label %171

171:                                              ; preds = %170, %160
  %172 = load i64, ptr %32, align 8, !tbaa !9
  %173 = icmp ne i64 %172, 0
  br i1 %173, label %174, label %527

174:                                              ; preds = %171
  %175 = load i64, ptr %30, align 8, !tbaa !9
  %176 = icmp ne i64 %175, 0
  br i1 %176, label %177, label %319

177:                                              ; preds = %174
  %178 = load i64, ptr %31, align 8, !tbaa !9
  %179 = icmp ne i64 %178, 0
  br i1 %179, label %180, label %245

180:                                              ; preds = %177
  store i64 0, ptr %26, align 8, !tbaa !9
  %181 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %181, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %182

182:                                              ; preds = %241, %180
  %183 = load i64, ptr %21, align 8, !tbaa !9
  %184 = load i64, ptr %18, align 8, !tbaa !9
  %185 = icmp sle i64 %183, %184
  br i1 %185, label %186, label %244

186:                                              ; preds = %182
  %187 = load i64, ptr %25, align 8, !tbaa !9
  %188 = load i64, ptr %21, align 8, !tbaa !9
  %189 = add nsw i64 %187, %188
  store i64 %189, ptr %19, align 8, !tbaa !9
  %190 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %190, ptr %20, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %211, %186
  %192 = load i64, ptr %20, align 8, !tbaa !9
  %193 = load i64, ptr %19, align 8, !tbaa !9
  %194 = icmp sle i64 %192, %193
  br i1 %194, label %195, label %214

195:                                              ; preds = %191
  %196 = load ptr, ptr %12, align 8, !tbaa !5
  %197 = load i64, ptr %26, align 8, !tbaa !9
  %198 = getelementptr inbounds double, ptr %196, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !11
  %200 = load ptr, ptr %13, align 8, !tbaa !5
  %201 = load i64, ptr %25, align 8, !tbaa !9
  %202 = load i64, ptr %21, align 8, !tbaa !9
  %203 = add nsw i64 %201, %202
  %204 = load i64, ptr %20, align 8, !tbaa !9
  %205 = load i64, ptr %16, align 8, !tbaa !9
  %206 = mul nsw i64 %204, %205
  %207 = add nsw i64 %203, %206
  %208 = getelementptr inbounds double, ptr %200, i64 %207
  store double %199, ptr %208, align 8, !tbaa !11
  %209 = load i64, ptr %26, align 8, !tbaa !9
  %210 = add nsw i64 %209, 1
  store i64 %210, ptr %26, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %195
  %212 = load i64, ptr %20, align 8, !tbaa !9
  %213 = add nsw i64 %212, 1
  store i64 %213, ptr %20, align 8, !tbaa !9
  br label %191, !llvm.loop !13

214:                                              ; preds = %191
  %215 = load ptr, ptr %11, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = sub nsw i64 %216, 1
  store i64 %217, ptr %19, align 8, !tbaa !9
  %218 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %218, ptr %20, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %237, %214
  %220 = load i64, ptr %20, align 8, !tbaa !9
  %221 = load i64, ptr %19, align 8, !tbaa !9
  %222 = icmp sle i64 %220, %221
  br i1 %222, label %223, label %240

223:                                              ; preds = %219
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = load i64, ptr %26, align 8, !tbaa !9
  %226 = getelementptr inbounds double, ptr %224, i64 %225
  %227 = load double, ptr %226, align 8, !tbaa !11
  %228 = load ptr, ptr %13, align 8, !tbaa !5
  %229 = load i64, ptr %20, align 8, !tbaa !9
  %230 = load i64, ptr %21, align 8, !tbaa !9
  %231 = load i64, ptr %16, align 8, !tbaa !9
  %232 = mul nsw i64 %230, %231
  %233 = add nsw i64 %229, %232
  %234 = getelementptr inbounds double, ptr %228, i64 %233
  store double %227, ptr %234, align 8, !tbaa !11
  %235 = load i64, ptr %26, align 8, !tbaa !9
  %236 = add nsw i64 %235, 1
  store i64 %236, ptr %26, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %223
  %238 = load i64, ptr %20, align 8, !tbaa !9
  %239 = add nsw i64 %238, 1
  store i64 %239, ptr %20, align 8, !tbaa !9
  br label %219, !llvm.loop !15

240:                                              ; preds = %219
  br label %241

241:                                              ; preds = %240
  %242 = load i64, ptr %21, align 8, !tbaa !9
  %243 = add nsw i64 %242, 1
  store i64 %243, ptr %21, align 8, !tbaa !9
  br label %182, !llvm.loop !16

244:                                              ; preds = %182
  br label %318

245:                                              ; preds = %177
  %246 = load i64, ptr %27, align 8, !tbaa !9
  %247 = load ptr, ptr %11, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = sub nsw i64 %246, %248
  store i64 %249, ptr %26, align 8, !tbaa !9
  %250 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %250, ptr %18, align 8, !tbaa !9
  %251 = load ptr, ptr %11, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  %253 = sub nsw i64 %252, 1
  store i64 %253, ptr %21, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %314, %245
  %255 = load i64, ptr %21, align 8, !tbaa !9
  %256 = load i64, ptr %18, align 8, !tbaa !9
  %257 = icmp sge i64 %255, %256
  br i1 %257, label %258, label %317

258:                                              ; preds = %254
  %259 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %259, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %278, %258
  %261 = load i64, ptr %20, align 8, !tbaa !9
  %262 = load i64, ptr %19, align 8, !tbaa !9
  %263 = icmp sle i64 %261, %262
  br i1 %263, label %264, label %281

264:                                              ; preds = %260
  %265 = load ptr, ptr %12, align 8, !tbaa !5
  %266 = load i64, ptr %26, align 8, !tbaa !9
  %267 = getelementptr inbounds double, ptr %265, i64 %266
  %268 = load double, ptr %267, align 8, !tbaa !11
  %269 = load ptr, ptr %13, align 8, !tbaa !5
  %270 = load i64, ptr %20, align 8, !tbaa !9
  %271 = load i64, ptr %21, align 8, !tbaa !9
  %272 = load i64, ptr %16, align 8, !tbaa !9
  %273 = mul nsw i64 %271, %272
  %274 = add nsw i64 %270, %273
  %275 = getelementptr inbounds double, ptr %269, i64 %274
  store double %268, ptr %275, align 8, !tbaa !11
  %276 = load i64, ptr %26, align 8, !tbaa !9
  %277 = add nsw i64 %276, 1
  store i64 %277, ptr %26, align 8, !tbaa !9
  br label %278

278:                                              ; preds = %264
  %279 = load i64, ptr %20, align 8, !tbaa !9
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %20, align 8, !tbaa !9
  br label %260, !llvm.loop !17

281:                                              ; preds = %260
  %282 = load i64, ptr %24, align 8, !tbaa !9
  %283 = sub nsw i64 %282, 1
  store i64 %283, ptr %19, align 8, !tbaa !9
  %284 = load i64, ptr %21, align 8, !tbaa !9
  %285 = load i64, ptr %24, align 8, !tbaa !9
  %286 = sub nsw i64 %284, %285
  store i64 %286, ptr %23, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %307, %281
  %288 = load i64, ptr %23, align 8, !tbaa !9
  %289 = load i64, ptr %19, align 8, !tbaa !9
  %290 = icmp sle i64 %288, %289
  br i1 %290, label %291, label %310

291:                                              ; preds = %287
  %292 = load ptr, ptr %12, align 8, !tbaa !5
  %293 = load i64, ptr %26, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %292, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !11
  %296 = load ptr, ptr %13, align 8, !tbaa !5
  %297 = load i64, ptr %21, align 8, !tbaa !9
  %298 = load i64, ptr %24, align 8, !tbaa !9
  %299 = sub nsw i64 %297, %298
  %300 = load i64, ptr %23, align 8, !tbaa !9
  %301 = load i64, ptr %16, align 8, !tbaa !9
  %302 = mul nsw i64 %300, %301
  %303 = add nsw i64 %299, %302
  %304 = getelementptr inbounds double, ptr %296, i64 %303
  store double %295, ptr %304, align 8, !tbaa !11
  %305 = load i64, ptr %26, align 8, !tbaa !9
  %306 = add nsw i64 %305, 1
  store i64 %306, ptr %26, align 8, !tbaa !9
  br label %307

307:                                              ; preds = %291
  %308 = load i64, ptr %23, align 8, !tbaa !9
  %309 = add nsw i64 %308, 1
  store i64 %309, ptr %23, align 8, !tbaa !9
  br label %287, !llvm.loop !18

310:                                              ; preds = %287
  %311 = load i64, ptr %28, align 8, !tbaa !9
  %312 = load i64, ptr %26, align 8, !tbaa !9
  %313 = sub nsw i64 %312, %311
  store i64 %313, ptr %26, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %310
  %315 = load i64, ptr %21, align 8, !tbaa !9
  %316 = add nsw i64 %315, -1
  store i64 %316, ptr %21, align 8, !tbaa !9
  br label %254, !llvm.loop !19

317:                                              ; preds = %254
  br label %318

318:                                              ; preds = %317, %244
  br label %526

319:                                              ; preds = %174
  %320 = load i64, ptr %31, align 8, !tbaa !9
  %321 = icmp ne i64 %320, 0
  br i1 %321, label %322, label %424

322:                                              ; preds = %319
  store i64 0, ptr %26, align 8, !tbaa !9
  %323 = load i64, ptr %25, align 8, !tbaa !9
  %324 = sub nsw i64 %323, 1
  store i64 %324, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %325

325:                                              ; preds = %383, %322
  %326 = load i64, ptr %21, align 8, !tbaa !9
  %327 = load i64, ptr %18, align 8, !tbaa !9
  %328 = icmp sle i64 %326, %327
  br i1 %328, label %329, label %386

329:                                              ; preds = %325
  %330 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %330, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %331

331:                                              ; preds = %349, %329
  %332 = load i64, ptr %20, align 8, !tbaa !9
  %333 = load i64, ptr %19, align 8, !tbaa !9
  %334 = icmp sle i64 %332, %333
  br i1 %334, label %335, label %352

335:                                              ; preds = %331
  %336 = load ptr, ptr %12, align 8, !tbaa !5
  %337 = load i64, ptr %26, align 8, !tbaa !9
  %338 = getelementptr inbounds double, ptr %336, i64 %337
  %339 = load double, ptr %338, align 8, !tbaa !11
  %340 = load ptr, ptr %13, align 8, !tbaa !5
  %341 = load i64, ptr %21, align 8, !tbaa !9
  %342 = load i64, ptr %20, align 8, !tbaa !9
  %343 = load i64, ptr %16, align 8, !tbaa !9
  %344 = mul nsw i64 %342, %343
  %345 = add nsw i64 %341, %344
  %346 = getelementptr inbounds double, ptr %340, i64 %345
  store double %339, ptr %346, align 8, !tbaa !11
  %347 = load i64, ptr %26, align 8, !tbaa !9
  %348 = add nsw i64 %347, 1
  store i64 %348, ptr %26, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %335
  %350 = load i64, ptr %20, align 8, !tbaa !9
  %351 = add nsw i64 %350, 1
  store i64 %351, ptr %20, align 8, !tbaa !9
  br label %331, !llvm.loop !20

352:                                              ; preds = %331
  %353 = load ptr, ptr %11, align 8, !tbaa !5
  %354 = load i64, ptr %353, align 8, !tbaa !9
  %355 = sub nsw i64 %354, 1
  store i64 %355, ptr %19, align 8, !tbaa !9
  %356 = load i64, ptr %24, align 8, !tbaa !9
  %357 = load i64, ptr %21, align 8, !tbaa !9
  %358 = add nsw i64 %356, %357
  store i64 %358, ptr %20, align 8, !tbaa !9
  br label %359

359:                                              ; preds = %379, %352
  %360 = load i64, ptr %20, align 8, !tbaa !9
  %361 = load i64, ptr %19, align 8, !tbaa !9
  %362 = icmp sle i64 %360, %361
  br i1 %362, label %363, label %382

363:                                              ; preds = %359
  %364 = load ptr, ptr %12, align 8, !tbaa !5
  %365 = load i64, ptr %26, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !11
  %368 = load ptr, ptr %13, align 8, !tbaa !5
  %369 = load i64, ptr %20, align 8, !tbaa !9
  %370 = load i64, ptr %24, align 8, !tbaa !9
  %371 = load i64, ptr %21, align 8, !tbaa !9
  %372 = add nsw i64 %370, %371
  %373 = load i64, ptr %16, align 8, !tbaa !9
  %374 = mul nsw i64 %372, %373
  %375 = add nsw i64 %369, %374
  %376 = getelementptr inbounds double, ptr %368, i64 %375
  store double %367, ptr %376, align 8, !tbaa !11
  %377 = load i64, ptr %26, align 8, !tbaa !9
  %378 = add nsw i64 %377, 1
  store i64 %378, ptr %26, align 8, !tbaa !9
  br label %379

379:                                              ; preds = %363
  %380 = load i64, ptr %20, align 8, !tbaa !9
  %381 = add nsw i64 %380, 1
  store i64 %381, ptr %20, align 8, !tbaa !9
  br label %359, !llvm.loop !21

382:                                              ; preds = %359
  br label %383

383:                                              ; preds = %382
  %384 = load i64, ptr %21, align 8, !tbaa !9
  %385 = add nsw i64 %384, 1
  store i64 %385, ptr %21, align 8, !tbaa !9
  br label %325, !llvm.loop !22

386:                                              ; preds = %325
  %387 = load ptr, ptr %11, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = sub nsw i64 %388, 1
  store i64 %389, ptr %18, align 8, !tbaa !9
  %390 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %390, ptr %21, align 8, !tbaa !9
  br label %391

391:                                              ; preds = %420, %386
  %392 = load i64, ptr %21, align 8, !tbaa !9
  %393 = load i64, ptr %18, align 8, !tbaa !9
  %394 = icmp sle i64 %392, %393
  br i1 %394, label %395, label %423

395:                                              ; preds = %391
  %396 = load i64, ptr %24, align 8, !tbaa !9
  %397 = sub nsw i64 %396, 1
  store i64 %397, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %398

398:                                              ; preds = %416, %395
  %399 = load i64, ptr %20, align 8, !tbaa !9
  %400 = load i64, ptr %19, align 8, !tbaa !9
  %401 = icmp sle i64 %399, %400
  br i1 %401, label %402, label %419

402:                                              ; preds = %398
  %403 = load ptr, ptr %12, align 8, !tbaa !5
  %404 = load i64, ptr %26, align 8, !tbaa !9
  %405 = getelementptr inbounds double, ptr %403, i64 %404
  %406 = load double, ptr %405, align 8, !tbaa !11
  %407 = load ptr, ptr %13, align 8, !tbaa !5
  %408 = load i64, ptr %21, align 8, !tbaa !9
  %409 = load i64, ptr %20, align 8, !tbaa !9
  %410 = load i64, ptr %16, align 8, !tbaa !9
  %411 = mul nsw i64 %409, %410
  %412 = add nsw i64 %408, %411
  %413 = getelementptr inbounds double, ptr %407, i64 %412
  store double %406, ptr %413, align 8, !tbaa !11
  %414 = load i64, ptr %26, align 8, !tbaa !9
  %415 = add nsw i64 %414, 1
  store i64 %415, ptr %26, align 8, !tbaa !9
  br label %416

416:                                              ; preds = %402
  %417 = load i64, ptr %20, align 8, !tbaa !9
  %418 = add nsw i64 %417, 1
  store i64 %418, ptr %20, align 8, !tbaa !9
  br label %398, !llvm.loop !23

419:                                              ; preds = %398
  br label %420

420:                                              ; preds = %419
  %421 = load i64, ptr %21, align 8, !tbaa !9
  %422 = add nsw i64 %421, 1
  store i64 %422, ptr %21, align 8, !tbaa !9
  br label %391, !llvm.loop !24

423:                                              ; preds = %391
  br label %525

424:                                              ; preds = %319
  store i64 0, ptr %26, align 8, !tbaa !9
  %425 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %425, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %426

426:                                              ; preds = %457, %424
  %427 = load i64, ptr %21, align 8, !tbaa !9
  %428 = load i64, ptr %18, align 8, !tbaa !9
  %429 = icmp sle i64 %427, %428
  br i1 %429, label %430, label %460

430:                                              ; preds = %426
  %431 = load ptr, ptr %11, align 8, !tbaa !5
  %432 = load i64, ptr %431, align 8, !tbaa !9
  %433 = sub nsw i64 %432, 1
  store i64 %433, ptr %19, align 8, !tbaa !9
  %434 = load i64, ptr %24, align 8, !tbaa !9
  store i64 %434, ptr %20, align 8, !tbaa !9
  br label %435

435:                                              ; preds = %453, %430
  %436 = load i64, ptr %20, align 8, !tbaa !9
  %437 = load i64, ptr %19, align 8, !tbaa !9
  %438 = icmp sle i64 %436, %437
  br i1 %438, label %439, label %456

439:                                              ; preds = %435
  %440 = load ptr, ptr %12, align 8, !tbaa !5
  %441 = load i64, ptr %26, align 8, !tbaa !9
  %442 = getelementptr inbounds double, ptr %440, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !11
  %444 = load ptr, ptr %13, align 8, !tbaa !5
  %445 = load i64, ptr %21, align 8, !tbaa !9
  %446 = load i64, ptr %20, align 8, !tbaa !9
  %447 = load i64, ptr %16, align 8, !tbaa !9
  %448 = mul nsw i64 %446, %447
  %449 = add nsw i64 %445, %448
  %450 = getelementptr inbounds double, ptr %444, i64 %449
  store double %443, ptr %450, align 8, !tbaa !11
  %451 = load i64, ptr %26, align 8, !tbaa !9
  %452 = add nsw i64 %451, 1
  store i64 %452, ptr %26, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %439
  %454 = load i64, ptr %20, align 8, !tbaa !9
  %455 = add nsw i64 %454, 1
  store i64 %455, ptr %20, align 8, !tbaa !9
  br label %435, !llvm.loop !25

456:                                              ; preds = %435
  br label %457

457:                                              ; preds = %456
  %458 = load i64, ptr %21, align 8, !tbaa !9
  %459 = add nsw i64 %458, 1
  store i64 %459, ptr %21, align 8, !tbaa !9
  br label %426, !llvm.loop !26

460:                                              ; preds = %426
  %461 = load i64, ptr %24, align 8, !tbaa !9
  %462 = sub nsw i64 %461, 1
  store i64 %462, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %463

463:                                              ; preds = %521, %460
  %464 = load i64, ptr %21, align 8, !tbaa !9
  %465 = load i64, ptr %18, align 8, !tbaa !9
  %466 = icmp sle i64 %464, %465
  br i1 %466, label %467, label %524

467:                                              ; preds = %463
  %468 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %468, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %469

469:                                              ; preds = %487, %467
  %470 = load i64, ptr %20, align 8, !tbaa !9
  %471 = load i64, ptr %19, align 8, !tbaa !9
  %472 = icmp sle i64 %470, %471
  br i1 %472, label %473, label %490

473:                                              ; preds = %469
  %474 = load ptr, ptr %12, align 8, !tbaa !5
  %475 = load i64, ptr %26, align 8, !tbaa !9
  %476 = getelementptr inbounds double, ptr %474, i64 %475
  %477 = load double, ptr %476, align 8, !tbaa !11
  %478 = load ptr, ptr %13, align 8, !tbaa !5
  %479 = load i64, ptr %20, align 8, !tbaa !9
  %480 = load i64, ptr %21, align 8, !tbaa !9
  %481 = load i64, ptr %16, align 8, !tbaa !9
  %482 = mul nsw i64 %480, %481
  %483 = add nsw i64 %479, %482
  %484 = getelementptr inbounds double, ptr %478, i64 %483
  store double %477, ptr %484, align 8, !tbaa !11
  %485 = load i64, ptr %26, align 8, !tbaa !9
  %486 = add nsw i64 %485, 1
  store i64 %486, ptr %26, align 8, !tbaa !9
  br label %487

487:                                              ; preds = %473
  %488 = load i64, ptr %20, align 8, !tbaa !9
  %489 = add nsw i64 %488, 1
  store i64 %489, ptr %20, align 8, !tbaa !9
  br label %469, !llvm.loop !27

490:                                              ; preds = %469
  %491 = load ptr, ptr %11, align 8, !tbaa !5
  %492 = load i64, ptr %491, align 8, !tbaa !9
  %493 = sub nsw i64 %492, 1
  store i64 %493, ptr %19, align 8, !tbaa !9
  %494 = load i64, ptr %25, align 8, !tbaa !9
  %495 = load i64, ptr %21, align 8, !tbaa !9
  %496 = add nsw i64 %494, %495
  store i64 %496, ptr %23, align 8, !tbaa !9
  br label %497

497:                                              ; preds = %517, %490
  %498 = load i64, ptr %23, align 8, !tbaa !9
  %499 = load i64, ptr %19, align 8, !tbaa !9
  %500 = icmp sle i64 %498, %499
  br i1 %500, label %501, label %520

501:                                              ; preds = %497
  %502 = load ptr, ptr %12, align 8, !tbaa !5
  %503 = load i64, ptr %26, align 8, !tbaa !9
  %504 = getelementptr inbounds double, ptr %502, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !11
  %506 = load ptr, ptr %13, align 8, !tbaa !5
  %507 = load i64, ptr %25, align 8, !tbaa !9
  %508 = load i64, ptr %21, align 8, !tbaa !9
  %509 = add nsw i64 %507, %508
  %510 = load i64, ptr %23, align 8, !tbaa !9
  %511 = load i64, ptr %16, align 8, !tbaa !9
  %512 = mul nsw i64 %510, %511
  %513 = add nsw i64 %509, %512
  %514 = getelementptr inbounds double, ptr %506, i64 %513
  store double %505, ptr %514, align 8, !tbaa !11
  %515 = load i64, ptr %26, align 8, !tbaa !9
  %516 = add nsw i64 %515, 1
  store i64 %516, ptr %26, align 8, !tbaa !9
  br label %517

517:                                              ; preds = %501
  %518 = load i64, ptr %23, align 8, !tbaa !9
  %519 = add nsw i64 %518, 1
  store i64 %519, ptr %23, align 8, !tbaa !9
  br label %497, !llvm.loop !28

520:                                              ; preds = %497
  br label %521

521:                                              ; preds = %520
  %522 = load i64, ptr %21, align 8, !tbaa !9
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %21, align 8, !tbaa !9
  br label %463, !llvm.loop !29

524:                                              ; preds = %463
  br label %525

525:                                              ; preds = %524, %423
  br label %526

526:                                              ; preds = %525, %318
  br label %937

527:                                              ; preds = %171
  %528 = load i64, ptr %30, align 8, !tbaa !9
  %529 = icmp ne i64 %528, 0
  br i1 %529, label %530, label %674

530:                                              ; preds = %527
  %531 = load i64, ptr %31, align 8, !tbaa !9
  %532 = icmp ne i64 %531, 0
  br i1 %532, label %533, label %599

533:                                              ; preds = %530
  store i64 0, ptr %26, align 8, !tbaa !9
  %534 = load i64, ptr %22, align 8, !tbaa !9
  %535 = sub nsw i64 %534, 1
  store i64 %535, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %536

536:                                              ; preds = %595, %533
  %537 = load i64, ptr %21, align 8, !tbaa !9
  %538 = load i64, ptr %18, align 8, !tbaa !9
  %539 = icmp sle i64 %537, %538
  br i1 %539, label %540, label %598

540:                                              ; preds = %536
  %541 = load i64, ptr %22, align 8, !tbaa !9
  %542 = load i64, ptr %21, align 8, !tbaa !9
  %543 = add nsw i64 %541, %542
  store i64 %543, ptr %19, align 8, !tbaa !9
  %544 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %544, ptr %20, align 8, !tbaa !9
  br label %545

545:                                              ; preds = %565, %540
  %546 = load i64, ptr %20, align 8, !tbaa !9
  %547 = load i64, ptr %19, align 8, !tbaa !9
  %548 = icmp sle i64 %546, %547
  br i1 %548, label %549, label %568

549:                                              ; preds = %545
  %550 = load ptr, ptr %12, align 8, !tbaa !5
  %551 = load i64, ptr %26, align 8, !tbaa !9
  %552 = getelementptr inbounds double, ptr %550, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !11
  %554 = load ptr, ptr %13, align 8, !tbaa !5
  %555 = load i64, ptr %22, align 8, !tbaa !9
  %556 = load i64, ptr %21, align 8, !tbaa !9
  %557 = add nsw i64 %555, %556
  %558 = load i64, ptr %20, align 8, !tbaa !9
  %559 = load i64, ptr %16, align 8, !tbaa !9
  %560 = mul nsw i64 %558, %559
  %561 = add nsw i64 %557, %560
  %562 = getelementptr inbounds double, ptr %554, i64 %561
  store double %553, ptr %562, align 8, !tbaa !11
  %563 = load i64, ptr %26, align 8, !tbaa !9
  %564 = add nsw i64 %563, 1
  store i64 %564, ptr %26, align 8, !tbaa !9
  br label %565

565:                                              ; preds = %549
  %566 = load i64, ptr %20, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %20, align 8, !tbaa !9
  br label %545, !llvm.loop !30

568:                                              ; preds = %545
  %569 = load ptr, ptr %11, align 8, !tbaa !5
  %570 = load i64, ptr %569, align 8, !tbaa !9
  %571 = sub nsw i64 %570, 1
  store i64 %571, ptr %19, align 8, !tbaa !9
  %572 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %572, ptr %20, align 8, !tbaa !9
  br label %573

573:                                              ; preds = %591, %568
  %574 = load i64, ptr %20, align 8, !tbaa !9
  %575 = load i64, ptr %19, align 8, !tbaa !9
  %576 = icmp sle i64 %574, %575
  br i1 %576, label %577, label %594

577:                                              ; preds = %573
  %578 = load ptr, ptr %12, align 8, !tbaa !5
  %579 = load i64, ptr %26, align 8, !tbaa !9
  %580 = getelementptr inbounds double, ptr %578, i64 %579
  %581 = load double, ptr %580, align 8, !tbaa !11
  %582 = load ptr, ptr %13, align 8, !tbaa !5
  %583 = load i64, ptr %20, align 8, !tbaa !9
  %584 = load i64, ptr %21, align 8, !tbaa !9
  %585 = load i64, ptr %16, align 8, !tbaa !9
  %586 = mul nsw i64 %584, %585
  %587 = add nsw i64 %583, %586
  %588 = getelementptr inbounds double, ptr %582, i64 %587
  store double %581, ptr %588, align 8, !tbaa !11
  %589 = load i64, ptr %26, align 8, !tbaa !9
  %590 = add nsw i64 %589, 1
  store i64 %590, ptr %26, align 8, !tbaa !9
  br label %591

591:                                              ; preds = %577
  %592 = load i64, ptr %20, align 8, !tbaa !9
  %593 = add nsw i64 %592, 1
  store i64 %593, ptr %20, align 8, !tbaa !9
  br label %573, !llvm.loop !31

594:                                              ; preds = %573
  br label %595

595:                                              ; preds = %594
  %596 = load i64, ptr %21, align 8, !tbaa !9
  %597 = add nsw i64 %596, 1
  store i64 %597, ptr %21, align 8, !tbaa !9
  br label %536, !llvm.loop !32

598:                                              ; preds = %536
  br label %673

599:                                              ; preds = %530
  %600 = load i64, ptr %27, align 8, !tbaa !9
  %601 = load ptr, ptr %11, align 8, !tbaa !5
  %602 = load i64, ptr %601, align 8, !tbaa !9
  %603 = sub nsw i64 %600, %602
  %604 = sub nsw i64 %603, 1
  store i64 %604, ptr %26, align 8, !tbaa !9
  %605 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %605, ptr %18, align 8, !tbaa !9
  %606 = load ptr, ptr %11, align 8, !tbaa !5
  %607 = load i64, ptr %606, align 8, !tbaa !9
  %608 = sub nsw i64 %607, 1
  store i64 %608, ptr %21, align 8, !tbaa !9
  br label %609

609:                                              ; preds = %669, %599
  %610 = load i64, ptr %21, align 8, !tbaa !9
  %611 = load i64, ptr %18, align 8, !tbaa !9
  %612 = icmp sge i64 %610, %611
  br i1 %612, label %613, label %672

613:                                              ; preds = %609
  %614 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %614, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %615

615:                                              ; preds = %633, %613
  %616 = load i64, ptr %20, align 8, !tbaa !9
  %617 = load i64, ptr %19, align 8, !tbaa !9
  %618 = icmp sle i64 %616, %617
  br i1 %618, label %619, label %636

619:                                              ; preds = %615
  %620 = load ptr, ptr %12, align 8, !tbaa !5
  %621 = load i64, ptr %26, align 8, !tbaa !9
  %622 = getelementptr inbounds double, ptr %620, i64 %621
  %623 = load double, ptr %622, align 8, !tbaa !11
  %624 = load ptr, ptr %13, align 8, !tbaa !5
  %625 = load i64, ptr %20, align 8, !tbaa !9
  %626 = load i64, ptr %21, align 8, !tbaa !9
  %627 = load i64, ptr %16, align 8, !tbaa !9
  %628 = mul nsw i64 %626, %627
  %629 = add nsw i64 %625, %628
  %630 = getelementptr inbounds double, ptr %624, i64 %629
  store double %623, ptr %630, align 8, !tbaa !11
  %631 = load i64, ptr %26, align 8, !tbaa !9
  %632 = add nsw i64 %631, 1
  store i64 %632, ptr %26, align 8, !tbaa !9
  br label %633

633:                                              ; preds = %619
  %634 = load i64, ptr %20, align 8, !tbaa !9
  %635 = add nsw i64 %634, 1
  store i64 %635, ptr %20, align 8, !tbaa !9
  br label %615, !llvm.loop !33

636:                                              ; preds = %615
  %637 = load i64, ptr %22, align 8, !tbaa !9
  %638 = sub nsw i64 %637, 1
  store i64 %638, ptr %19, align 8, !tbaa !9
  %639 = load i64, ptr %21, align 8, !tbaa !9
  %640 = load i64, ptr %22, align 8, !tbaa !9
  %641 = sub nsw i64 %639, %640
  store i64 %641, ptr %23, align 8, !tbaa !9
  br label %642

642:                                              ; preds = %662, %636
  %643 = load i64, ptr %23, align 8, !tbaa !9
  %644 = load i64, ptr %19, align 8, !tbaa !9
  %645 = icmp sle i64 %643, %644
  br i1 %645, label %646, label %665

646:                                              ; preds = %642
  %647 = load ptr, ptr %12, align 8, !tbaa !5
  %648 = load i64, ptr %26, align 8, !tbaa !9
  %649 = getelementptr inbounds double, ptr %647, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !11
  %651 = load ptr, ptr %13, align 8, !tbaa !5
  %652 = load i64, ptr %21, align 8, !tbaa !9
  %653 = load i64, ptr %22, align 8, !tbaa !9
  %654 = sub nsw i64 %652, %653
  %655 = load i64, ptr %23, align 8, !tbaa !9
  %656 = load i64, ptr %16, align 8, !tbaa !9
  %657 = mul nsw i64 %655, %656
  %658 = add nsw i64 %654, %657
  %659 = getelementptr inbounds double, ptr %651, i64 %658
  store double %650, ptr %659, align 8, !tbaa !11
  %660 = load i64, ptr %26, align 8, !tbaa !9
  %661 = add nsw i64 %660, 1
  store i64 %661, ptr %26, align 8, !tbaa !9
  br label %662

662:                                              ; preds = %646
  %663 = load i64, ptr %23, align 8, !tbaa !9
  %664 = add nsw i64 %663, 1
  store i64 %664, ptr %23, align 8, !tbaa !9
  br label %642, !llvm.loop !34

665:                                              ; preds = %642
  %666 = load i64, ptr %29, align 8, !tbaa !9
  %667 = load i64, ptr %26, align 8, !tbaa !9
  %668 = sub nsw i64 %667, %666
  store i64 %668, ptr %26, align 8, !tbaa !9
  br label %669

669:                                              ; preds = %665
  %670 = load i64, ptr %21, align 8, !tbaa !9
  %671 = add nsw i64 %670, -1
  store i64 %671, ptr %21, align 8, !tbaa !9
  br label %609, !llvm.loop !35

672:                                              ; preds = %609
  br label %673

673:                                              ; preds = %672, %598
  br label %936

674:                                              ; preds = %527
  %675 = load i64, ptr %31, align 8, !tbaa !9
  %676 = icmp ne i64 %675, 0
  br i1 %676, label %677, label %809

677:                                              ; preds = %674
  store i64 0, ptr %26, align 8, !tbaa !9
  %678 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %678, ptr %21, align 8, !tbaa !9
  %679 = load ptr, ptr %11, align 8, !tbaa !5
  %680 = load i64, ptr %679, align 8, !tbaa !9
  %681 = sub nsw i64 %680, 1
  store i64 %681, ptr %18, align 8, !tbaa !9
  %682 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %682, ptr %20, align 8, !tbaa !9
  br label %683

683:                                              ; preds = %701, %677
  %684 = load i64, ptr %20, align 8, !tbaa !9
  %685 = load i64, ptr %18, align 8, !tbaa !9
  %686 = icmp sle i64 %684, %685
  br i1 %686, label %687, label %704

687:                                              ; preds = %683
  %688 = load ptr, ptr %12, align 8, !tbaa !5
  %689 = load i64, ptr %26, align 8, !tbaa !9
  %690 = getelementptr inbounds double, ptr %688, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = load ptr, ptr %13, align 8, !tbaa !5
  %693 = load i64, ptr %20, align 8, !tbaa !9
  %694 = load i64, ptr %21, align 8, !tbaa !9
  %695 = load i64, ptr %16, align 8, !tbaa !9
  %696 = mul nsw i64 %694, %695
  %697 = add nsw i64 %693, %696
  %698 = getelementptr inbounds double, ptr %692, i64 %697
  store double %691, ptr %698, align 8, !tbaa !11
  %699 = load i64, ptr %26, align 8, !tbaa !9
  %700 = add nsw i64 %699, 1
  store i64 %700, ptr %26, align 8, !tbaa !9
  br label %701

701:                                              ; preds = %687
  %702 = load i64, ptr %20, align 8, !tbaa !9
  %703 = add nsw i64 %702, 1
  store i64 %703, ptr %20, align 8, !tbaa !9
  br label %683, !llvm.loop !36

704:                                              ; preds = %683
  %705 = load i64, ptr %22, align 8, !tbaa !9
  %706 = sub nsw i64 %705, 2
  store i64 %706, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %707

707:                                              ; preds = %767, %704
  %708 = load i64, ptr %21, align 8, !tbaa !9
  %709 = load i64, ptr %18, align 8, !tbaa !9
  %710 = icmp sle i64 %708, %709
  br i1 %710, label %711, label %770

711:                                              ; preds = %707
  %712 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %712, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %713

713:                                              ; preds = %731, %711
  %714 = load i64, ptr %20, align 8, !tbaa !9
  %715 = load i64, ptr %19, align 8, !tbaa !9
  %716 = icmp sle i64 %714, %715
  br i1 %716, label %717, label %734

717:                                              ; preds = %713
  %718 = load ptr, ptr %12, align 8, !tbaa !5
  %719 = load i64, ptr %26, align 8, !tbaa !9
  %720 = getelementptr inbounds double, ptr %718, i64 %719
  %721 = load double, ptr %720, align 8, !tbaa !11
  %722 = load ptr, ptr %13, align 8, !tbaa !5
  %723 = load i64, ptr %21, align 8, !tbaa !9
  %724 = load i64, ptr %20, align 8, !tbaa !9
  %725 = load i64, ptr %16, align 8, !tbaa !9
  %726 = mul nsw i64 %724, %725
  %727 = add nsw i64 %723, %726
  %728 = getelementptr inbounds double, ptr %722, i64 %727
  store double %721, ptr %728, align 8, !tbaa !11
  %729 = load i64, ptr %26, align 8, !tbaa !9
  %730 = add nsw i64 %729, 1
  store i64 %730, ptr %26, align 8, !tbaa !9
  br label %731

731:                                              ; preds = %717
  %732 = load i64, ptr %20, align 8, !tbaa !9
  %733 = add nsw i64 %732, 1
  store i64 %733, ptr %20, align 8, !tbaa !9
  br label %713, !llvm.loop !37

734:                                              ; preds = %713
  %735 = load ptr, ptr %11, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = sub nsw i64 %736, 1
  store i64 %737, ptr %19, align 8, !tbaa !9
  %738 = load i64, ptr %22, align 8, !tbaa !9
  %739 = add nsw i64 %738, 1
  %740 = load i64, ptr %21, align 8, !tbaa !9
  %741 = add nsw i64 %739, %740
  store i64 %741, ptr %20, align 8, !tbaa !9
  br label %742

742:                                              ; preds = %763, %734
  %743 = load i64, ptr %20, align 8, !tbaa !9
  %744 = load i64, ptr %19, align 8, !tbaa !9
  %745 = icmp sle i64 %743, %744
  br i1 %745, label %746, label %766

746:                                              ; preds = %742
  %747 = load ptr, ptr %12, align 8, !tbaa !5
  %748 = load i64, ptr %26, align 8, !tbaa !9
  %749 = getelementptr inbounds double, ptr %747, i64 %748
  %750 = load double, ptr %749, align 8, !tbaa !11
  %751 = load ptr, ptr %13, align 8, !tbaa !5
  %752 = load i64, ptr %20, align 8, !tbaa !9
  %753 = load i64, ptr %22, align 8, !tbaa !9
  %754 = add nsw i64 %753, 1
  %755 = load i64, ptr %21, align 8, !tbaa !9
  %756 = add nsw i64 %754, %755
  %757 = load i64, ptr %16, align 8, !tbaa !9
  %758 = mul nsw i64 %756, %757
  %759 = add nsw i64 %752, %758
  %760 = getelementptr inbounds double, ptr %751, i64 %759
  store double %750, ptr %760, align 8, !tbaa !11
  %761 = load i64, ptr %26, align 8, !tbaa !9
  %762 = add nsw i64 %761, 1
  store i64 %762, ptr %26, align 8, !tbaa !9
  br label %763

763:                                              ; preds = %746
  %764 = load i64, ptr %20, align 8, !tbaa !9
  %765 = add nsw i64 %764, 1
  store i64 %765, ptr %20, align 8, !tbaa !9
  br label %742, !llvm.loop !38

766:                                              ; preds = %742
  br label %767

767:                                              ; preds = %766
  %768 = load i64, ptr %21, align 8, !tbaa !9
  %769 = add nsw i64 %768, 1
  store i64 %769, ptr %21, align 8, !tbaa !9
  br label %707, !llvm.loop !39

770:                                              ; preds = %707
  %771 = load ptr, ptr %11, align 8, !tbaa !5
  %772 = load i64, ptr %771, align 8, !tbaa !9
  %773 = sub nsw i64 %772, 1
  store i64 %773, ptr %18, align 8, !tbaa !9
  %774 = load i64, ptr %22, align 8, !tbaa !9
  %775 = sub nsw i64 %774, 1
  store i64 %775, ptr %21, align 8, !tbaa !9
  br label %776

776:                                              ; preds = %805, %770
  %777 = load i64, ptr %21, align 8, !tbaa !9
  %778 = load i64, ptr %18, align 8, !tbaa !9
  %779 = icmp sle i64 %777, %778
  br i1 %779, label %780, label %808

780:                                              ; preds = %776
  %781 = load i64, ptr %22, align 8, !tbaa !9
  %782 = sub nsw i64 %781, 1
  store i64 %782, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %783

783:                                              ; preds = %801, %780
  %784 = load i64, ptr %20, align 8, !tbaa !9
  %785 = load i64, ptr %19, align 8, !tbaa !9
  %786 = icmp sle i64 %784, %785
  br i1 %786, label %787, label %804

787:                                              ; preds = %783
  %788 = load ptr, ptr %12, align 8, !tbaa !5
  %789 = load i64, ptr %26, align 8, !tbaa !9
  %790 = getelementptr inbounds double, ptr %788, i64 %789
  %791 = load double, ptr %790, align 8, !tbaa !11
  %792 = load ptr, ptr %13, align 8, !tbaa !5
  %793 = load i64, ptr %21, align 8, !tbaa !9
  %794 = load i64, ptr %20, align 8, !tbaa !9
  %795 = load i64, ptr %16, align 8, !tbaa !9
  %796 = mul nsw i64 %794, %795
  %797 = add nsw i64 %793, %796
  %798 = getelementptr inbounds double, ptr %792, i64 %797
  store double %791, ptr %798, align 8, !tbaa !11
  %799 = load i64, ptr %26, align 8, !tbaa !9
  %800 = add nsw i64 %799, 1
  store i64 %800, ptr %26, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %787
  %802 = load i64, ptr %20, align 8, !tbaa !9
  %803 = add nsw i64 %802, 1
  store i64 %803, ptr %20, align 8, !tbaa !9
  br label %783, !llvm.loop !40

804:                                              ; preds = %783
  br label %805

805:                                              ; preds = %804
  %806 = load i64, ptr %21, align 8, !tbaa !9
  %807 = add nsw i64 %806, 1
  store i64 %807, ptr %21, align 8, !tbaa !9
  br label %776, !llvm.loop !41

808:                                              ; preds = %776
  br label %935

809:                                              ; preds = %674
  store i64 0, ptr %26, align 8, !tbaa !9
  %810 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %810, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %811

811:                                              ; preds = %842, %809
  %812 = load i64, ptr %21, align 8, !tbaa !9
  %813 = load i64, ptr %18, align 8, !tbaa !9
  %814 = icmp sle i64 %812, %813
  br i1 %814, label %815, label %845

815:                                              ; preds = %811
  %816 = load ptr, ptr %11, align 8, !tbaa !5
  %817 = load i64, ptr %816, align 8, !tbaa !9
  %818 = sub nsw i64 %817, 1
  store i64 %818, ptr %19, align 8, !tbaa !9
  %819 = load i64, ptr %22, align 8, !tbaa !9
  store i64 %819, ptr %20, align 8, !tbaa !9
  br label %820

820:                                              ; preds = %838, %815
  %821 = load i64, ptr %20, align 8, !tbaa !9
  %822 = load i64, ptr %19, align 8, !tbaa !9
  %823 = icmp sle i64 %821, %822
  br i1 %823, label %824, label %841

824:                                              ; preds = %820
  %825 = load ptr, ptr %12, align 8, !tbaa !5
  %826 = load i64, ptr %26, align 8, !tbaa !9
  %827 = getelementptr inbounds double, ptr %825, i64 %826
  %828 = load double, ptr %827, align 8, !tbaa !11
  %829 = load ptr, ptr %13, align 8, !tbaa !5
  %830 = load i64, ptr %21, align 8, !tbaa !9
  %831 = load i64, ptr %20, align 8, !tbaa !9
  %832 = load i64, ptr %16, align 8, !tbaa !9
  %833 = mul nsw i64 %831, %832
  %834 = add nsw i64 %830, %833
  %835 = getelementptr inbounds double, ptr %829, i64 %834
  store double %828, ptr %835, align 8, !tbaa !11
  %836 = load i64, ptr %26, align 8, !tbaa !9
  %837 = add nsw i64 %836, 1
  store i64 %837, ptr %26, align 8, !tbaa !9
  br label %838

838:                                              ; preds = %824
  %839 = load i64, ptr %20, align 8, !tbaa !9
  %840 = add nsw i64 %839, 1
  store i64 %840, ptr %20, align 8, !tbaa !9
  br label %820, !llvm.loop !42

841:                                              ; preds = %820
  br label %842

842:                                              ; preds = %841
  %843 = load i64, ptr %21, align 8, !tbaa !9
  %844 = add nsw i64 %843, 1
  store i64 %844, ptr %21, align 8, !tbaa !9
  br label %811, !llvm.loop !43

845:                                              ; preds = %811
  %846 = load i64, ptr %22, align 8, !tbaa !9
  %847 = sub nsw i64 %846, 2
  store i64 %847, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %848

848:                                              ; preds = %908, %845
  %849 = load i64, ptr %21, align 8, !tbaa !9
  %850 = load i64, ptr %18, align 8, !tbaa !9
  %851 = icmp sle i64 %849, %850
  br i1 %851, label %852, label %911

852:                                              ; preds = %848
  %853 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %853, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %854

854:                                              ; preds = %872, %852
  %855 = load i64, ptr %20, align 8, !tbaa !9
  %856 = load i64, ptr %19, align 8, !tbaa !9
  %857 = icmp sle i64 %855, %856
  br i1 %857, label %858, label %875

858:                                              ; preds = %854
  %859 = load ptr, ptr %12, align 8, !tbaa !5
  %860 = load i64, ptr %26, align 8, !tbaa !9
  %861 = getelementptr inbounds double, ptr %859, i64 %860
  %862 = load double, ptr %861, align 8, !tbaa !11
  %863 = load ptr, ptr %13, align 8, !tbaa !5
  %864 = load i64, ptr %20, align 8, !tbaa !9
  %865 = load i64, ptr %21, align 8, !tbaa !9
  %866 = load i64, ptr %16, align 8, !tbaa !9
  %867 = mul nsw i64 %865, %866
  %868 = add nsw i64 %864, %867
  %869 = getelementptr inbounds double, ptr %863, i64 %868
  store double %862, ptr %869, align 8, !tbaa !11
  %870 = load i64, ptr %26, align 8, !tbaa !9
  %871 = add nsw i64 %870, 1
  store i64 %871, ptr %26, align 8, !tbaa !9
  br label %872

872:                                              ; preds = %858
  %873 = load i64, ptr %20, align 8, !tbaa !9
  %874 = add nsw i64 %873, 1
  store i64 %874, ptr %20, align 8, !tbaa !9
  br label %854, !llvm.loop !44

875:                                              ; preds = %854
  %876 = load ptr, ptr %11, align 8, !tbaa !5
  %877 = load i64, ptr %876, align 8, !tbaa !9
  %878 = sub nsw i64 %877, 1
  store i64 %878, ptr %19, align 8, !tbaa !9
  %879 = load i64, ptr %22, align 8, !tbaa !9
  %880 = add nsw i64 %879, 1
  %881 = load i64, ptr %21, align 8, !tbaa !9
  %882 = add nsw i64 %880, %881
  store i64 %882, ptr %23, align 8, !tbaa !9
  br label %883

883:                                              ; preds = %904, %875
  %884 = load i64, ptr %23, align 8, !tbaa !9
  %885 = load i64, ptr %19, align 8, !tbaa !9
  %886 = icmp sle i64 %884, %885
  br i1 %886, label %887, label %907

887:                                              ; preds = %883
  %888 = load ptr, ptr %12, align 8, !tbaa !5
  %889 = load i64, ptr %26, align 8, !tbaa !9
  %890 = getelementptr inbounds double, ptr %888, i64 %889
  %891 = load double, ptr %890, align 8, !tbaa !11
  %892 = load ptr, ptr %13, align 8, !tbaa !5
  %893 = load i64, ptr %22, align 8, !tbaa !9
  %894 = add nsw i64 %893, 1
  %895 = load i64, ptr %21, align 8, !tbaa !9
  %896 = add nsw i64 %894, %895
  %897 = load i64, ptr %23, align 8, !tbaa !9
  %898 = load i64, ptr %16, align 8, !tbaa !9
  %899 = mul nsw i64 %897, %898
  %900 = add nsw i64 %896, %899
  %901 = getelementptr inbounds double, ptr %892, i64 %900
  store double %891, ptr %901, align 8, !tbaa !11
  %902 = load i64, ptr %26, align 8, !tbaa !9
  %903 = add nsw i64 %902, 1
  store i64 %903, ptr %26, align 8, !tbaa !9
  br label %904

904:                                              ; preds = %887
  %905 = load i64, ptr %23, align 8, !tbaa !9
  %906 = add nsw i64 %905, 1
  store i64 %906, ptr %23, align 8, !tbaa !9
  br label %883, !llvm.loop !45

907:                                              ; preds = %883
  br label %908

908:                                              ; preds = %907
  %909 = load i64, ptr %21, align 8, !tbaa !9
  %910 = add nsw i64 %909, 1
  store i64 %910, ptr %21, align 8, !tbaa !9
  br label %848, !llvm.loop !46

911:                                              ; preds = %848
  %912 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %912, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %913

913:                                              ; preds = %931, %911
  %914 = load i64, ptr %20, align 8, !tbaa !9
  %915 = load i64, ptr %18, align 8, !tbaa !9
  %916 = icmp sle i64 %914, %915
  br i1 %916, label %917, label %934

917:                                              ; preds = %913
  %918 = load ptr, ptr %12, align 8, !tbaa !5
  %919 = load i64, ptr %26, align 8, !tbaa !9
  %920 = getelementptr inbounds double, ptr %918, i64 %919
  %921 = load double, ptr %920, align 8, !tbaa !11
  %922 = load ptr, ptr %13, align 8, !tbaa !5
  %923 = load i64, ptr %20, align 8, !tbaa !9
  %924 = load i64, ptr %21, align 8, !tbaa !9
  %925 = load i64, ptr %16, align 8, !tbaa !9
  %926 = mul nsw i64 %924, %925
  %927 = add nsw i64 %923, %926
  %928 = getelementptr inbounds double, ptr %922, i64 %927
  store double %921, ptr %928, align 8, !tbaa !11
  %929 = load i64, ptr %26, align 8, !tbaa !9
  %930 = add nsw i64 %929, 1
  store i64 %930, ptr %26, align 8, !tbaa !9
  br label %931

931:                                              ; preds = %917
  %932 = load i64, ptr %20, align 8, !tbaa !9
  %933 = add nsw i64 %932, 1
  store i64 %933, ptr %20, align 8, !tbaa !9
  br label %913, !llvm.loop !47

934:                                              ; preds = %913
  br label %935

935:                                              ; preds = %934, %808
  br label %936

936:                                              ; preds = %935, %673
  br label %937

937:                                              ; preds = %936, %526
  store i32 0, ptr %8, align 4
  store i32 1, ptr %33, align 4
  br label %938

938:                                              ; preds = %937, %115, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  %939 = load i32, ptr %8, align 4
  ret i32 %939
}

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !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 [7 x i8], align 1

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

54:                                               ; preds = %7
  %55 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %.not414 = icmp eq i64 %55, 0
  br i1 %.not414, label %.thread.sink.split, label %56

56:                                               ; preds = %54, %7
  %.not415 = icmp eq i64 %53, 0
  br i1 %.not415, label %57, label %59

57:                                               ; preds = %56
  %58 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #4
  %.not416 = icmp eq i64 %58, 0
  br i1 %.not416, label %.thread.sink.split, label %59

59:                                               ; preds = %57, %56
  %60 = load i64, ptr %2, align 8, !tbaa !5
  %61 = icmp slt i64 %60, 0
  br i1 %61, label %.thread.sink.split, label %62

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

65:                                               ; preds = %62
  %.pr = load i64, ptr %6, align 8, !tbaa !5
  %.not417 = icmp eq i64 %.pr, 0
  br i1 %.not417, label %69, label %.thread

.thread.sink.split:                               ; preds = %62, %59, %57, %54
  %.sink = phi i64 [ -1, %54 ], [ -2, %57 ], [ -3, %59 ], [ -6, %62 ]
  store i64 %.sink, ptr %6, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %65
  %66 = phi i64 [ %.pr, %65 ], [ %.sink, %.thread.sink.split ]
  %67 = sub nsw i64 0, %66
  store i64 %67, ptr %50, align 8, !tbaa !5
  %68 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %50) #4
  br label %.loopexit

69:                                               ; preds = %65
  %70 = icmp ult i64 %60, 2
  br i1 %70, label %71, label %75

71:                                               ; preds = %69
  %72 = icmp eq i64 %60, 1
  br i1 %72, label %73, label %.loopexit

73:                                               ; preds = %71
  %74 = load double, ptr %3, align 8, !tbaa !9
  store double %74, ptr %4, align 8, !tbaa !9
  br label %.loopexit

75:                                               ; preds = %69
  %76 = add nuw nsw i64 %60, 1
  %77 = mul nuw nsw i64 %76, %60
  %78 = lshr i64 %77, 1
  %79 = lshr i64 %60, 1
  %80 = sub nsw i64 %60, %79
  %.0372 = select i1 %.not415, i64 %79, i64 %80
  %.0371 = select i1 %.not415, i64 %80, i64 %79
  %81 = and i64 %60, 1
  %82 = icmp eq i64 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %75
  br i1 %.not415, label %395, label %.thread463

84:                                               ; preds = %75
  %85 = shl nuw nsw i64 %60, 1
  %spec.select454 = select i1 %.not415, i64 %85, i64 undef
  br i1 %.not, label %183, label %86

86:                                               ; preds = %84
  br i1 %.not415, label %.preheader484.preheader, label %.lr.ph500.preheader

.lr.ph500.preheader:                              ; preds = %86
  %87 = shl i64 %51, 3
  %88 = add i64 %87, 8
  %89 = add i64 %.0371, 1
  %90 = sub i64 %89, %.0372
  %ident.check.not = icmp eq i64 %51, 1
  br label %.lr.ph500

.lr.ph500:                                        ; preds = %.lr.ph500.preheader, %._crit_edge
  %.0370498 = phi i64 [ %.2.lcssa, %._crit_edge ], [ 0, %.lr.ph500.preheader ]
  %.0378497 = phi i64 [ %131, %._crit_edge ], [ 0, %.lr.ph500.preheader ]
  %91 = add i64 %90, %.0378497
  %92 = sub i64 %60, %.0378497
  %93 = mul i64 %88, %.0378497
  %94 = add nuw nsw i64 %.0378497, %.0371
  %.not452488 = icmp sgt i64 %.0372, %94
  br i1 %.not452488, label %.preheader486, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph500
  %95 = getelementptr double, ptr %4, i64 %94
  %min.iters.check797 = icmp ugt i64 %91, 3
  %or.cond1238 = select i1 %min.iters.check797, i1 %ident.check.not, i1 false
  br i1 %or.cond1238, label %vector.memcheck793, label %scalar.ph796.preheader

scalar.ph796.preheader:                           ; preds = %middle.block795, %vector.memcheck793, %.lr.ph
  %.1490.ph = phi i64 [ %.0370498, %vector.memcheck793 ], [ %.0370498, %.lr.ph ], [ %ind.end801, %middle.block795 ]
  %.0390489.ph = phi i64 [ %.0372, %vector.memcheck793 ], [ %.0372, %.lr.ph ], [ %ind.end803, %middle.block795 ]
  br label %scalar.ph796

vector.memcheck793:                               ; preds = %.lr.ph
  %96 = shl i64 %.0370498, 3
  %97 = add i64 %60, %.0378497
  %98 = shl i64 %97, 3
  %99 = add i64 %98, %47
  %100 = add i64 %96, %46
  %101 = sub i64 %99, %100
  %diff.check794 = icmp ult i64 %101, 32
  br i1 %diff.check794, label %scalar.ph796.preheader, label %vector.ph798

vector.ph798:                                     ; preds = %vector.memcheck793
  %n.vec800 = and i64 %91, -4
  %ind.end801 = add i64 %.0370498, %n.vec800
  %ind.end803 = add i64 %.0372, %n.vec800
  %102 = getelementptr double, ptr %3, i64 %.0370498
  %103 = getelementptr double, ptr %95, i64 %.0372
  br label %vector.body805

vector.body805:                                   ; preds = %vector.body805, %vector.ph798
  %index806 = phi i64 [ 0, %vector.ph798 ], [ %index.next811, %vector.body805 ]
  %104 = getelementptr double, ptr %102, i64 %index806
  %105 = getelementptr inbounds i8, ptr %104, i64 16
  %wide.load809 = load <2 x double>, ptr %104, align 8, !tbaa !9
  %wide.load810 = load <2 x double>, ptr %105, align 8, !tbaa !9
  %106 = getelementptr double, ptr %103, i64 %index806
  %107 = getelementptr i8, ptr %106, i64 16
  store <2 x double> %wide.load809, ptr %106, align 8, !tbaa !9
  store <2 x double> %wide.load810, ptr %107, align 8, !tbaa !9
  %index.next811 = add nuw i64 %index806, 4
  %108 = icmp eq i64 %index.next811, %n.vec800
  br i1 %108, label %middle.block795, label %vector.body805, !llvm.loop !11

middle.block795:                                  ; preds = %vector.body805
  %cmp.n812 = icmp eq i64 %91, %n.vec800
  br i1 %cmp.n812, label %.preheader486, label %scalar.ph796.preheader

.preheader486:                                    ; preds = %scalar.ph796, %middle.block795, %.lr.ph500
  %.1.lcssa = phi i64 [ %.0370498, %.lr.ph500 ], [ %ind.end801, %middle.block795 ], [ %125, %scalar.ph796 ]
  %.not453.not491 = icmp slt i64 %.0378497, %60
  br i1 %.not453.not491, label %.lr.ph494, label %._crit_edge

.lr.ph494:                                        ; preds = %.preheader486
  %109 = mul nsw i64 %.0378497, %51
  %invariant.gep = getelementptr double, ptr %4, i64 %109
  %min.iters.check = icmp ult i64 %92, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph494
  %.2493.ph = phi i64 [ %.1.lcssa, %vector.memcheck ], [ %.1.lcssa, %.lr.ph494 ], [ %ind.end, %middle.block ]
  %.1391492.ph = phi i64 [ %.0378497, %vector.memcheck ], [ %.0378497, %.lr.ph494 ], [ %ind.end789, %middle.block ]
  br label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph494
  %110 = shl i64 %.1.lcssa, 3
  %111 = add i64 %93, %49
  %112 = add i64 %110, %48
  %113 = sub i64 %111, %112
  %diff.check = icmp ult i64 %113, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %92, -4
  %ind.end = add i64 %.1.lcssa, %n.vec
  %ind.end789 = add i64 %.0378497, %n.vec
  %114 = getelementptr double, ptr %3, i64 %.1.lcssa
  %115 = getelementptr double, ptr %invariant.gep, i64 %.0378497
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %116 = getelementptr double, ptr %114, i64 %index
  %117 = getelementptr inbounds i8, ptr %116, i64 16
  %wide.load = load <2 x double>, ptr %116, align 8, !tbaa !9
  %wide.load792 = load <2 x double>, ptr %117, align 8, !tbaa !9
  %118 = getelementptr double, ptr %115, i64 %index
  %119 = getelementptr i8, ptr %118, i64 16
  store <2 x double> %wide.load, ptr %118, align 8, !tbaa !9
  store <2 x double> %wide.load792, ptr %119, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %120 = icmp eq i64 %index.next, %n.vec
  br i1 %120, label %middle.block, label %vector.body, !llvm.loop !15

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

scalar.ph796:                                     ; preds = %scalar.ph796.preheader, %scalar.ph796
  %.1490 = phi i64 [ %125, %scalar.ph796 ], [ %.1490.ph, %scalar.ph796.preheader ]
  %.0390489 = phi i64 [ %126, %scalar.ph796 ], [ %.0390489.ph, %scalar.ph796.preheader ]
  %121 = getelementptr inbounds double, ptr %3, i64 %.1490
  %122 = load double, ptr %121, align 8, !tbaa !9
  %123 = mul nsw i64 %.0390489, %51
  %124 = getelementptr double, ptr %95, i64 %123
  store double %122, ptr %124, align 8, !tbaa !9
  %125 = add nsw i64 %.1490, 1
  %126 = add nsw i64 %.0390489, 1
  %.not452.not = icmp slt i64 %.0390489, %94
  br i1 %.not452.not, label %scalar.ph796, label %.preheader486, !llvm.loop !16

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.2493 = phi i64 [ %129, %scalar.ph ], [ %.2493.ph, %scalar.ph.preheader ]
  %.1391492 = phi i64 [ %130, %scalar.ph ], [ %.1391492.ph, %scalar.ph.preheader ]
  %127 = getelementptr inbounds double, ptr %3, i64 %.2493
  %128 = load double, ptr %127, align 8, !tbaa !9
  %gep = getelementptr double, ptr %invariant.gep, i64 %.1391492
  store double %128, ptr %gep, align 8, !tbaa !9
  %129 = add nsw i64 %.2493, 1
  %130 = add nuw nsw i64 %.1391492, 1
  %.not453.not = icmp slt i64 %130, %60
  br i1 %.not453.not, label %scalar.ph, label %._crit_edge, !llvm.loop !17

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %.preheader486
  %.2.lcssa = phi i64 [ %.1.lcssa, %.preheader486 ], [ %ind.end, %middle.block ], [ %129, %scalar.ph ]
  %131 = add nuw i64 %.0378497, 1
  %exitcond.not = icmp eq i64 %.0378497, %.0371
  br i1 %exitcond.not, label %.loopexit, label %.lr.ph500, !llvm.loop !18

.preheader484.preheader:                          ; preds = %86
  %132 = sub nsw i64 %78, %60
  %133 = shl i64 %60, 4
  %134 = add i64 %133, %45
  %135 = add i64 %134, -16
  %136 = shl i64 %.0372, 1
  %137 = or disjoint i64 %136, 1
  %138 = sub i64 %137, %60
  %139 = add nuw i64 %60, 2305843009213693951
  %140 = mul i64 %51, %139
  %141 = shl i64 %140, 3
  %142 = add i64 %141, %43
  %143 = mul i64 %51, -8
  %ident.check814.not = icmp eq i64 %51, 1
  br label %.preheader484

.preheader484:                                    ; preds = %.preheader484.preheader, %._crit_edge514
  %indvar = phi i64 [ 0, %.preheader484.preheader ], [ %indvar.next, %._crit_edge514 ]
  %.3519 = phi i64 [ %132, %.preheader484.preheader ], [ %182, %._crit_edge514 ]
  %.1379.in518 = phi i64 [ %60, %.preheader484.preheader ], [ %.1379520, %._crit_edge514 ]
  %144 = mul i64 %143, %indvar
  %145 = add i64 %138, %indvar
  %146 = add i64 %.0372, %indvar
  %147 = shl i64 %146, 4
  %148 = add i64 %147, %44
  %.1379520 = add nsw i64 %.1379.in518, -1
  %.not449.not501 = icmp sgt i64 %.1379.in518, 0
  br i1 %.not449.not501, label %.lr.ph504, label %._crit_edge505

.lr.ph504:                                        ; preds = %.preheader484
  %149 = mul nsw i64 %.1379520, %51
  %invariant.gep507 = getelementptr double, ptr %4, i64 %149
  %min.iters.check839 = icmp ult i64 %.1379.in518, 4
  br i1 %min.iters.check839, label %scalar.ph838.preheader, label %vector.memcheck835

vector.memcheck835:                               ; preds = %.lr.ph504
  %150 = shl i64 %.3519, 3
  %151 = add i64 %142, %144
  %152 = add i64 %150, %42
  %153 = sub i64 %151, %152
  %diff.check836 = icmp ult i64 %153, 32
  br i1 %diff.check836, label %scalar.ph838.preheader, label %vector.ph840

vector.ph840:                                     ; preds = %vector.memcheck835
  %n.vec842 = and i64 %.1379.in518, 9223372036854775804
  %ind.end843 = add i64 %.3519, %n.vec842
  %154 = getelementptr double, ptr %3, i64 %.3519
  br label %vector.body846

vector.body846:                                   ; preds = %vector.body846, %vector.ph840
  %index847 = phi i64 [ 0, %vector.ph840 ], [ %index.next851, %vector.body846 ]
  %155 = getelementptr double, ptr %154, i64 %index847
  %156 = getelementptr inbounds i8, ptr %155, i64 16
  %wide.load849 = load <2 x double>, ptr %155, align 8, !tbaa !9
  %wide.load850 = load <2 x double>, ptr %156, align 8, !tbaa !9
  %157 = getelementptr double, ptr %invariant.gep507, i64 %index847
  %158 = getelementptr i8, ptr %157, i64 16
  store <2 x double> %wide.load849, ptr %157, align 8, !tbaa !9
  store <2 x double> %wide.load850, ptr %158, align 8, !tbaa !9
  %index.next851 = add nuw i64 %index847, 4
  %159 = icmp eq i64 %index.next851, %n.vec842
  br i1 %159, label %middle.block837, label %vector.body846, !llvm.loop !19

middle.block837:                                  ; preds = %vector.body846
  %cmp.n852 = icmp eq i64 %.1379.in518, %n.vec842
  br i1 %cmp.n852, label %._crit_edge505, label %scalar.ph838.preheader

scalar.ph838.preheader:                           ; preds = %middle.block837, %vector.memcheck835, %.lr.ph504
  %.4503.ph = phi i64 [ %.3519, %vector.memcheck835 ], [ %.3519, %.lr.ph504 ], [ %ind.end843, %middle.block837 ]
  %.2392502.ph = phi i64 [ 0, %vector.memcheck835 ], [ 0, %.lr.ph504 ], [ %n.vec842, %middle.block837 ]
  br label %scalar.ph838

scalar.ph838:                                     ; preds = %scalar.ph838.preheader, %scalar.ph838
  %.4503 = phi i64 [ %162, %scalar.ph838 ], [ %.4503.ph, %scalar.ph838.preheader ]
  %.2392502 = phi i64 [ %163, %scalar.ph838 ], [ %.2392502.ph, %scalar.ph838.preheader ]
  %160 = getelementptr inbounds double, ptr %3, i64 %.4503
  %161 = load double, ptr %160, align 8, !tbaa !9
  %gep508 = getelementptr double, ptr %invariant.gep507, i64 %.2392502
  store double %161, ptr %gep508, align 8, !tbaa !9
  %162 = add nsw i64 %.4503, 1
  %163 = add nuw nsw i64 %.2392502, 1
  %.not449.not = icmp slt i64 %163, %.1379.in518
  br i1 %.not449.not, label %scalar.ph838, label %._crit_edge505, !llvm.loop !20

._crit_edge505:                                   ; preds = %scalar.ph838, %middle.block837, %.preheader484
  %.4.lcssa = phi i64 [ %.3519, %.preheader484 ], [ %ind.end843, %middle.block837 ], [ %162, %scalar.ph838 ]
  %164 = sub nsw i64 %.1379520, %.0372
  %.not450.not509 = icmp slt i64 %164, %.0372
  br i1 %.not450.not509, label %.lr.ph513, label %._crit_edge514

.lr.ph513:                                        ; preds = %._crit_edge505
  %165 = getelementptr double, ptr %4, i64 %164
  %min.iters.check819 = icmp ugt i64 %145, 3
  %or.cond1239 = select i1 %min.iters.check819, i1 %ident.check814.not, i1 false
  br i1 %or.cond1239, label %vector.memcheck815, label %scalar.ph818.preheader

vector.memcheck815:                               ; preds = %.lr.ph513
  %166 = shl i64 %.4.lcssa, 3
  %167 = add i64 %148, %166
  %168 = sub i64 %135, %167
  %diff.check816 = icmp ult i64 %168, 32
  br i1 %diff.check816, label %scalar.ph818.preheader, label %vector.ph820

vector.ph820:                                     ; preds = %vector.memcheck815
  %n.vec822 = and i64 %145, -4
  %ind.end823 = add i64 %.4.lcssa, %n.vec822
  %ind.end825 = add i64 %164, %n.vec822
  %169 = getelementptr double, ptr %3, i64 %.4.lcssa
  %170 = getelementptr double, ptr %165, i64 %164
  br label %vector.body827

vector.body827:                                   ; preds = %vector.body827, %vector.ph820
  %index828 = phi i64 [ 0, %vector.ph820 ], [ %index.next833, %vector.body827 ]
  %171 = getelementptr double, ptr %169, i64 %index828
  %172 = getelementptr inbounds i8, ptr %171, i64 16
  %wide.load831 = load <2 x double>, ptr %171, align 8, !tbaa !9
  %wide.load832 = load <2 x double>, ptr %172, align 8, !tbaa !9
  %173 = getelementptr double, ptr %170, i64 %index828
  %174 = getelementptr i8, ptr %173, i64 16
  store <2 x double> %wide.load831, ptr %173, align 8, !tbaa !9
  store <2 x double> %wide.load832, ptr %174, align 8, !tbaa !9
  %index.next833 = add nuw i64 %index828, 4
  %175 = icmp eq i64 %index.next833, %n.vec822
  br i1 %175, label %middle.block817, label %vector.body827, !llvm.loop !21

middle.block817:                                  ; preds = %vector.body827
  %cmp.n834 = icmp eq i64 %145, %n.vec822
  br i1 %cmp.n834, label %._crit_edge514, label %scalar.ph818.preheader

scalar.ph818.preheader:                           ; preds = %middle.block817, %vector.memcheck815, %.lr.ph513
  %.5511.ph = phi i64 [ %.4.lcssa, %vector.memcheck815 ], [ %.4.lcssa, %.lr.ph513 ], [ %ind.end823, %middle.block817 ]
  %.0373510.ph = phi i64 [ %164, %vector.memcheck815 ], [ %164, %.lr.ph513 ], [ %ind.end825, %middle.block817 ]
  br label %scalar.ph818

scalar.ph818:                                     ; preds = %scalar.ph818.preheader, %scalar.ph818
  %.5511 = phi i64 [ %180, %scalar.ph818 ], [ %.5511.ph, %scalar.ph818.preheader ]
  %.0373510 = phi i64 [ %181, %scalar.ph818 ], [ %.0373510.ph, %scalar.ph818.preheader ]
  %176 = getelementptr inbounds double, ptr %3, i64 %.5511
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = mul nsw i64 %.0373510, %51
  %179 = getelementptr double, ptr %165, i64 %178
  store double %177, ptr %179, align 8, !tbaa !9
  %180 = add nsw i64 %.5511, 1
  %181 = add nsw i64 %.0373510, 1
  %.not450.not = icmp slt i64 %181, %.0372
  br i1 %.not450.not, label %scalar.ph818, label %._crit_edge514, !llvm.loop !22

._crit_edge514:                                   ; preds = %scalar.ph818, %middle.block817, %._crit_edge505
  %.5.lcssa = phi i64 [ %.4.lcssa, %._crit_edge505 ], [ %ind.end823, %middle.block817 ], [ %180, %scalar.ph818 ]
  %182 = sub nsw i64 %.5.lcssa, %spec.select454
  %.not448.not = icmp sgt i64 %.1379520, %.0372
  %indvar.next = add i64 %indvar, 1
  br i1 %.not448.not, label %.preheader484, label %.loopexit, !llvm.loop !23

183:                                              ; preds = %84
  br i1 %.not415, label %.preheader480.us.preheader, label %.preheader483.preheader

.preheader483.preheader:                          ; preds = %183
  %184 = shl i64 %51, 3
  %185 = add i64 %184, 8
  %186 = mul i64 %.0372, %185
  %187 = add i64 %186, %41
  %188 = add i64 %187, -8
  %ident.check874.not = icmp eq i64 %51, 1
  %invariant.gep1348 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1350 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1352 = getelementptr i8, ptr %3, i64 24
  br label %.preheader483

.preheader483:                                    ; preds = %.preheader483.preheader, %._crit_edge528
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge528 ], [ 1, %.preheader483.preheader ]
  %.6534 = phi i64 [ %.8.lcssa, %._crit_edge528 ], [ 0, %.preheader483.preheader ]
  %.2380533 = phi i64 [ %248, %._crit_edge528 ], [ 0, %.preheader483.preheader ]
  %189 = add i64 %.0372, %.2380533
  %190 = sub i64 %60, %189
  %191 = mul i64 %185, %.2380533
  %192 = getelementptr double, ptr %4, i64 %.2380533
  %min.iters.check879 = icmp ugt i64 %indvars.iv, 3
  %or.cond1240 = select i1 %min.iters.check879, i1 %ident.check874.not, i1 false
  br i1 %or.cond1240, label %vector.memcheck875, label %scalar.ph878.preheader

vector.memcheck875:                               ; preds = %.preheader483
  %193 = shl i64 %.2380533, 3
  %194 = shl i64 %.6534, 3
  %195 = add i64 %193, %39
  %196 = add i64 %194, %38
  %197 = sub i64 %195, %196
  %diff.check876 = icmp ult i64 %197, 32
  br i1 %diff.check876, label %scalar.ph878.preheader, label %vector.ph880

vector.ph880:                                     ; preds = %vector.memcheck875
  %n.vec882 = and i64 %indvars.iv, -4
  %ind.end883 = add i64 %.6534, %n.vec882
  %198 = getelementptr double, ptr %3, i64 %.6534
  br label %vector.body886

vector.body886:                                   ; preds = %vector.body886, %vector.ph880
  %index887 = phi i64 [ 0, %vector.ph880 ], [ %index.next891, %vector.body886 ]
  %199 = getelementptr double, ptr %198, i64 %index887
  %200 = getelementptr inbounds i8, ptr %199, i64 16
  %wide.load889 = load <2 x double>, ptr %199, align 8, !tbaa !9
  %wide.load890 = load <2 x double>, ptr %200, align 8, !tbaa !9
  %201 = getelementptr double, ptr %192, i64 %index887
  %202 = getelementptr i8, ptr %201, i64 16
  store <2 x double> %wide.load889, ptr %201, align 8, !tbaa !9
  store <2 x double> %wide.load890, ptr %202, align 8, !tbaa !9
  %index.next891 = add nuw i64 %index887, 4
  %203 = icmp eq i64 %index.next891, %n.vec882
  br i1 %203, label %middle.block877, label %vector.body886, !llvm.loop !24

middle.block877:                                  ; preds = %vector.body886
  %cmp.n892 = icmp eq i64 %indvars.iv, %n.vec882
  %ind.escape = add i64 %n.vec882, -1
  br i1 %cmp.n892, label %.loopexit1236, label %scalar.ph878.preheader

scalar.ph878.preheader:                           ; preds = %middle.block877, %vector.memcheck875, %.preheader483
  %.7522.ph = phi i64 [ %.6534, %vector.memcheck875 ], [ %.6534, %.preheader483 ], [ %ind.end883, %middle.block877 ]
  %.3393521.ph = phi i64 [ 0, %vector.memcheck875 ], [ 0, %.preheader483 ], [ %n.vec882, %middle.block877 ]
  %204 = sub i64 %.2380533, %.3393521.ph
  %xtraiter = and i64 %indvars.iv, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph878.prol.loopexit, label %scalar.ph878.prol

scalar.ph878.prol:                                ; preds = %scalar.ph878.preheader, %scalar.ph878.prol
  %.7522.prol = phi i64 [ %209, %scalar.ph878.prol ], [ %.7522.ph, %scalar.ph878.preheader ]
  %.3393521.prol = phi i64 [ %210, %scalar.ph878.prol ], [ %.3393521.ph, %scalar.ph878.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph878.prol ], [ 0, %scalar.ph878.preheader ]
  %205 = getelementptr inbounds double, ptr %3, i64 %.7522.prol
  %206 = load double, ptr %205, align 8, !tbaa !9
  %207 = mul nsw i64 %.3393521.prol, %51
  %208 = getelementptr double, ptr %192, i64 %207
  store double %206, ptr %208, align 8, !tbaa !9
  %209 = add nsw i64 %.7522.prol, 1
  %210 = add nuw nsw i64 %.3393521.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph878.prol.loopexit, label %scalar.ph878.prol, !llvm.loop !25

scalar.ph878.prol.loopexit:                       ; preds = %scalar.ph878.prol, %scalar.ph878.preheader
  %.3393521.lcssa1276.unr = phi i64 [ poison, %scalar.ph878.preheader ], [ %.3393521.prol, %scalar.ph878.prol ]
  %.lcssa1275.unr = phi i64 [ poison, %scalar.ph878.preheader ], [ %209, %scalar.ph878.prol ]
  %.7522.unr = phi i64 [ %.7522.ph, %scalar.ph878.preheader ], [ %209, %scalar.ph878.prol ]
  %.3393521.unr = phi i64 [ %.3393521.ph, %scalar.ph878.preheader ], [ %210, %scalar.ph878.prol ]
  %211 = icmp ult i64 %204, 3
  br i1 %211, label %.loopexit1236, label %scalar.ph878

scalar.ph878:                                     ; preds = %scalar.ph878.prol.loopexit, %scalar.ph878
  %.7522 = phi i64 [ %228, %scalar.ph878 ], [ %.7522.unr, %scalar.ph878.prol.loopexit ]
  %.3393521 = phi i64 [ %229, %scalar.ph878 ], [ %.3393521.unr, %scalar.ph878.prol.loopexit ]
  %212 = getelementptr inbounds double, ptr %3, i64 %.7522
  %213 = load double, ptr %212, align 8, !tbaa !9
  %214 = mul nsw i64 %.3393521, %51
  %215 = getelementptr double, ptr %192, i64 %214
  store double %213, ptr %215, align 8, !tbaa !9
  %216 = add nuw nsw i64 %.3393521, 1
  %gep1349 = getelementptr double, ptr %invariant.gep1348, i64 %.7522
  %217 = load double, ptr %gep1349, align 8, !tbaa !9
  %218 = mul nsw i64 %216, %51
  %219 = getelementptr double, ptr %192, i64 %218
  store double %217, ptr %219, align 8, !tbaa !9
  %220 = add nuw nsw i64 %.3393521, 2
  %gep1351 = getelementptr double, ptr %invariant.gep1350, i64 %.7522
  %221 = load double, ptr %gep1351, align 8, !tbaa !9
  %222 = mul nsw i64 %220, %51
  %223 = getelementptr double, ptr %192, i64 %222
  store double %221, ptr %223, align 8, !tbaa !9
  %224 = add nuw nsw i64 %.3393521, 3
  %gep1353 = getelementptr double, ptr %invariant.gep1352, i64 %.7522
  %225 = load double, ptr %gep1353, align 8, !tbaa !9
  %226 = mul nsw i64 %224, %51
  %227 = getelementptr double, ptr %192, i64 %226
  store double %225, ptr %227, align 8, !tbaa !9
  %228 = add nsw i64 %.7522, 4
  %229 = add nuw nsw i64 %.3393521, 4
  %exitcond701.not.3 = icmp eq i64 %229, %indvars.iv
  br i1 %exitcond701.not.3, label %.loopexit1236, label %scalar.ph878, !llvm.loop !27

.loopexit1236:                                    ; preds = %scalar.ph878.prol.loopexit, %scalar.ph878, %middle.block877
  %.3393521.lcssa = phi i64 [ %ind.escape, %middle.block877 ], [ %.3393521.lcssa1276.unr, %scalar.ph878.prol.loopexit ], [ %224, %scalar.ph878 ]
  %.lcssa783 = phi i64 [ %ind.end883, %middle.block877 ], [ %.lcssa1275.unr, %scalar.ph878.prol.loopexit ], [ %228, %scalar.ph878 ]
  %230 = add nsw i64 %.2380533, %.0372
  %.not447.not523 = icmp slt i64 %230, %60
  br i1 %.not447.not523, label %.lr.ph527, label %._crit_edge528

.lr.ph527:                                        ; preds = %.loopexit1236
  %231 = mul nsw i64 %230, %51
  %invariant.gep530 = getelementptr double, ptr %4, i64 %231
  %min.iters.check857 = icmp ult i64 %190, 6
  br i1 %min.iters.check857, label %scalar.ph856.preheader, label %vector.memcheck853

vector.memcheck853:                               ; preds = %.lr.ph527
  %232 = add i64 %188, %191
  %233 = add i64 %.6534, %.3393521.lcssa
  %234 = shl i64 %233, 3
  %235 = add i64 %234, %40
  %236 = sub i64 %232, %235
  %diff.check854 = icmp ult i64 %236, 32
  br i1 %diff.check854, label %scalar.ph856.preheader, label %vector.ph858

vector.ph858:                                     ; preds = %vector.memcheck853
  %n.vec860 = and i64 %190, -4
  %ind.end861 = add i64 %.lcssa783, %n.vec860
  %ind.end863 = add i64 %230, %n.vec860
  %237 = getelementptr double, ptr %3, i64 %.lcssa783
  %238 = getelementptr double, ptr %invariant.gep530, i64 %230
  br label %vector.body865

vector.body865:                                   ; preds = %vector.body865, %vector.ph858
  %index866 = phi i64 [ 0, %vector.ph858 ], [ %index.next871, %vector.body865 ]
  %239 = getelementptr double, ptr %237, i64 %index866
  %240 = getelementptr inbounds i8, ptr %239, i64 16
  %wide.load869 = load <2 x double>, ptr %239, align 8, !tbaa !9
  %wide.load870 = load <2 x double>, ptr %240, align 8, !tbaa !9
  %241 = getelementptr double, ptr %238, i64 %index866
  %242 = getelementptr i8, ptr %241, i64 16
  store <2 x double> %wide.load869, ptr %241, align 8, !tbaa !9
  store <2 x double> %wide.load870, ptr %242, align 8, !tbaa !9
  %index.next871 = add nuw i64 %index866, 4
  %243 = icmp eq i64 %index.next871, %n.vec860
  br i1 %243, label %middle.block855, label %vector.body865, !llvm.loop !28

middle.block855:                                  ; preds = %vector.body865
  %cmp.n872 = icmp eq i64 %190, %n.vec860
  br i1 %cmp.n872, label %._crit_edge528, label %scalar.ph856.preheader

scalar.ph856.preheader:                           ; preds = %middle.block855, %vector.memcheck853, %.lr.ph527
  %.8525.ph = phi i64 [ %.lcssa783, %vector.memcheck853 ], [ %.lcssa783, %.lr.ph527 ], [ %ind.end861, %middle.block855 ]
  %.4394524.ph = phi i64 [ %230, %vector.memcheck853 ], [ %230, %.lr.ph527 ], [ %ind.end863, %middle.block855 ]
  br label %scalar.ph856

scalar.ph856:                                     ; preds = %scalar.ph856.preheader, %scalar.ph856
  %.8525 = phi i64 [ %246, %scalar.ph856 ], [ %.8525.ph, %scalar.ph856.preheader ]
  %.4394524 = phi i64 [ %247, %scalar.ph856 ], [ %.4394524.ph, %scalar.ph856.preheader ]
  %244 = getelementptr inbounds double, ptr %3, i64 %.8525
  %245 = load double, ptr %244, align 8, !tbaa !9
  %gep531 = getelementptr double, ptr %invariant.gep530, i64 %.4394524
  store double %245, ptr %gep531, align 8, !tbaa !9
  %246 = add nsw i64 %.8525, 1
  %247 = add nsw i64 %.4394524, 1
  %.not447.not = icmp slt i64 %247, %60
  br i1 %.not447.not, label %scalar.ph856, label %._crit_edge528, !llvm.loop !29

._crit_edge528:                                   ; preds = %scalar.ph856, %middle.block855, %.loopexit1236
  %.8.lcssa = phi i64 [ %.lcssa783, %.loopexit1236 ], [ %ind.end861, %middle.block855 ], [ %246, %scalar.ph856 ]
  %248 = add nuw nsw i64 %.2380533, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond703.not = icmp eq i64 %248, %79
  br i1 %exitcond703.not, label %._crit_edge535, label %.preheader483, !llvm.loop !30

._crit_edge535:                                   ; preds = %._crit_edge528
  %.not444.not543 = icmp slt i64 %.0371, %60
  %.not445.not537 = icmp sgt i64 %.0372, 0
  %or.cond = select i1 %.not444.not543, i1 %.not445.not537, i1 false
  br i1 %or.cond, label %.preheader481.us.preheader, label %.loopexit

.preheader481.us.preheader:                       ; preds = %._crit_edge535
  %min.iters.check901 = icmp ugt i64 %.0372, 3
  %ident.check894.not = icmp eq i64 %51, 1
  %or.cond1241 = select i1 %min.iters.check901, i1 %ident.check894.not, i1 false
  %n.vec904 = and i64 %.0372, 9223372036854775804
  %cmp.n914 = icmp eq i64 %.0372, %n.vec904
  %xtraiter1284 = and i64 %.0372, 3
  %lcmp.mod1285.not = icmp eq i64 %xtraiter1284, 0
  %invariant.gep1354 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1356 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1358 = getelementptr i8, ptr %3, i64 24
  br label %.preheader481.us

.preheader481.us:                                 ; preds = %.preheader481.us.preheader, %._crit_edge541.us
  %indvar896 = phi i64 [ %indvar.next897, %._crit_edge541.us ], [ 0, %.preheader481.us.preheader ]
  %.9545.us = phi i64 [ %.lcssa782, %._crit_edge541.us ], [ %.8.lcssa, %.preheader481.us.preheader ]
  %.3381544.us = phi i64 [ %288, %._crit_edge541.us ], [ %.0371, %.preheader481.us.preheader ]
  %249 = getelementptr double, ptr %4, i64 %.3381544.us
  br i1 %or.cond1241, label %vector.memcheck895, label %scalar.ph900.preheader

vector.memcheck895:                               ; preds = %.preheader481.us
  %250 = shl i64 %.9545.us, 3
  %251 = add i64 %.0371, %indvar896
  %252 = shl i64 %251, 3
  %253 = add i64 %252, %37
  %254 = add i64 %250, %36
  %255 = sub i64 %253, %254
  %diff.check898 = icmp ult i64 %255, 32
  br i1 %diff.check898, label %scalar.ph900.preheader, label %vector.ph902

vector.ph902:                                     ; preds = %vector.memcheck895
  %ind.end905 = add i64 %.9545.us, %n.vec904
  %256 = getelementptr double, ptr %3, i64 %.9545.us
  br label %vector.body908

vector.body908:                                   ; preds = %vector.body908, %vector.ph902
  %index909 = phi i64 [ 0, %vector.ph902 ], [ %index.next913, %vector.body908 ]
  %257 = getelementptr double, ptr %256, i64 %index909
  %258 = getelementptr inbounds i8, ptr %257, i64 16
  %wide.load911 = load <2 x double>, ptr %257, align 8, !tbaa !9
  %wide.load912 = load <2 x double>, ptr %258, align 8, !tbaa !9
  %259 = getelementptr double, ptr %249, i64 %index909
  %260 = getelementptr i8, ptr %259, i64 16
  store <2 x double> %wide.load911, ptr %259, align 8, !tbaa !9
  store <2 x double> %wide.load912, ptr %260, align 8, !tbaa !9
  %index.next913 = add nuw i64 %index909, 4
  %261 = icmp eq i64 %index.next913, %n.vec904
  br i1 %261, label %middle.block899, label %vector.body908, !llvm.loop !31

middle.block899:                                  ; preds = %vector.body908
  br i1 %cmp.n914, label %._crit_edge541.us, label %scalar.ph900.preheader

scalar.ph900.preheader:                           ; preds = %middle.block899, %vector.memcheck895, %.preheader481.us
  %.10539.us.ph = phi i64 [ %.9545.us, %vector.memcheck895 ], [ %.9545.us, %.preheader481.us ], [ %ind.end905, %middle.block899 ]
  %.5395538.us.ph = phi i64 [ 0, %vector.memcheck895 ], [ 0, %.preheader481.us ], [ %n.vec904, %middle.block899 ]
  br i1 %lcmp.mod1285.not, label %scalar.ph900.prol.loopexit, label %scalar.ph900.prol

scalar.ph900.prol:                                ; preds = %scalar.ph900.preheader, %scalar.ph900.prol
  %.10539.us.prol = phi i64 [ %266, %scalar.ph900.prol ], [ %.10539.us.ph, %scalar.ph900.preheader ]
  %.5395538.us.prol = phi i64 [ %267, %scalar.ph900.prol ], [ %.5395538.us.ph, %scalar.ph900.preheader ]
  %prol.iter1286 = phi i64 [ %prol.iter1286.next, %scalar.ph900.prol ], [ 0, %scalar.ph900.preheader ]
  %262 = getelementptr inbounds double, ptr %3, i64 %.10539.us.prol
  %263 = load double, ptr %262, align 8, !tbaa !9
  %264 = mul nsw i64 %.5395538.us.prol, %51
  %265 = getelementptr double, ptr %249, i64 %264
  store double %263, ptr %265, align 8, !tbaa !9
  %266 = add nsw i64 %.10539.us.prol, 1
  %267 = add nuw nsw i64 %.5395538.us.prol, 1
  %prol.iter1286.next = add i64 %prol.iter1286, 1
  %prol.iter1286.cmp.not = icmp eq i64 %prol.iter1286.next, %xtraiter1284
  br i1 %prol.iter1286.cmp.not, label %scalar.ph900.prol.loopexit, label %scalar.ph900.prol, !llvm.loop !32

scalar.ph900.prol.loopexit:                       ; preds = %scalar.ph900.prol, %scalar.ph900.preheader
  %.lcssa1274.unr = phi i64 [ poison, %scalar.ph900.preheader ], [ %266, %scalar.ph900.prol ]
  %.10539.us.unr = phi i64 [ %.10539.us.ph, %scalar.ph900.preheader ], [ %266, %scalar.ph900.prol ]
  %.5395538.us.unr = phi i64 [ %.5395538.us.ph, %scalar.ph900.preheader ], [ %267, %scalar.ph900.prol ]
  %268 = sub nsw i64 %.5395538.us.ph, %.0372
  %269 = icmp ugt i64 %268, -4
  br i1 %269, label %._crit_edge541.us, label %scalar.ph900

scalar.ph900:                                     ; preds = %scalar.ph900.prol.loopexit, %scalar.ph900
  %.10539.us = phi i64 [ %286, %scalar.ph900 ], [ %.10539.us.unr, %scalar.ph900.prol.loopexit ]
  %.5395538.us = phi i64 [ %287, %scalar.ph900 ], [ %.5395538.us.unr, %scalar.ph900.prol.loopexit ]
  %270 = getelementptr inbounds double, ptr %3, i64 %.10539.us
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = mul nsw i64 %.5395538.us, %51
  %273 = getelementptr double, ptr %249, i64 %272
  store double %271, ptr %273, align 8, !tbaa !9
  %274 = add nuw nsw i64 %.5395538.us, 1
  %gep1355 = getelementptr double, ptr %invariant.gep1354, i64 %.10539.us
  %275 = load double, ptr %gep1355, align 8, !tbaa !9
  %276 = mul nsw i64 %274, %51
  %277 = getelementptr double, ptr %249, i64 %276
  store double %275, ptr %277, align 8, !tbaa !9
  %278 = add nuw nsw i64 %.5395538.us, 2
  %gep1357 = getelementptr double, ptr %invariant.gep1356, i64 %.10539.us
  %279 = load double, ptr %gep1357, align 8, !tbaa !9
  %280 = mul nsw i64 %278, %51
  %281 = getelementptr double, ptr %249, i64 %280
  store double %279, ptr %281, align 8, !tbaa !9
  %282 = add nuw nsw i64 %.5395538.us, 3
  %gep1359 = getelementptr double, ptr %invariant.gep1358, i64 %.10539.us
  %283 = load double, ptr %gep1359, align 8, !tbaa !9
  %284 = mul nsw i64 %282, %51
  %285 = getelementptr double, ptr %249, i64 %284
  store double %283, ptr %285, align 8, !tbaa !9
  %286 = add nsw i64 %.10539.us, 4
  %287 = add nuw nsw i64 %.5395538.us, 4
  %exitcond704.not.3 = icmp eq i64 %287, %.0372
  br i1 %exitcond704.not.3, label %._crit_edge541.us, label %scalar.ph900, !llvm.loop !33

._crit_edge541.us:                                ; preds = %scalar.ph900.prol.loopexit, %scalar.ph900, %middle.block899
  %.lcssa782 = phi i64 [ %ind.end905, %middle.block899 ], [ %.lcssa1274.unr, %scalar.ph900.prol.loopexit ], [ %286, %scalar.ph900 ]
  %288 = add nsw i64 %.3381544.us, 1
  %exitcond705.not = icmp eq i64 %288, %60
  %indvar.next897 = add i64 %indvar896, 1
  br i1 %exitcond705.not, label %.loopexit, label %.preheader481.us, !llvm.loop !34

.preheader480.us.preheader:                       ; preds = %183
  %289 = sub nsw i64 %60, %79
  %290 = shl i64 %.0372, 3
  %scevgep = getelementptr i8, ptr %4, i64 %290
  %291 = shl i64 %.0372, 4
  %292 = shl i64 %60, 3
  %293 = add i64 %291, %292
  %294 = shl i64 %79, 3
  %295 = sub i64 %293, %294
  %scevgep918 = getelementptr i8, ptr %4, i64 %295
  %296 = sub i64 %292, %294
  %297 = mul i64 %.0372, %296
  %298 = add i64 %297, %292
  %299 = sub i64 %298, %294
  %scevgep919 = getelementptr i8, ptr %3, i64 %299
  %min.iters.check922 = icmp ugt i64 %80, 5
  %ident.check916.not = icmp eq i64 %51, 1
  %or.cond1242 = select i1 %min.iters.check922, i1 %ident.check916.not, i1 false
  %bound0 = icmp ult ptr %scevgep, %scevgep919
  %bound1 = icmp ugt ptr %scevgep918, %3
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i64 %296, 0
  %300 = or i1 %found.conflict, %stride.check
  %n.vec925 = and i64 %80, -4
  %ind.end928 = add i64 %.0372, %n.vec925
  %cmp.n937 = icmp eq i64 %80, %n.vec925
  %invariant.gep1360 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1362 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1364 = getelementptr i8, ptr %3, i64 24
  br label %.preheader480.us

.preheader480.us:                                 ; preds = %.preheader480.us.preheader, %._crit_edge550.us
  %.11554.us = phi i64 [ %303, %._crit_edge550.us ], [ 0, %.preheader480.us.preheader ]
  %.4382553.us = phi i64 [ %340, %._crit_edge550.us ], [ 0, %.preheader480.us.preheader ]
  %301 = add i64 %80, %.11554.us
  %302 = getelementptr double, ptr %4, i64 %.4382553.us
  %303 = add i64 %289, %.11554.us
  %or.cond1242.not = xor i1 %or.cond1242, true
  %brmerge = select i1 %or.cond1242.not, i1 true, i1 %300
  br i1 %brmerge, label %scalar.ph921.preheader, label %vector.ph923

vector.ph923:                                     ; preds = %.preheader480.us
  %ind.end926 = add i64 %.11554.us, %n.vec925
  %304 = getelementptr double, ptr %3, i64 %.11554.us
  %305 = getelementptr double, ptr %302, i64 %.0372
  br label %vector.body930

vector.body930:                                   ; preds = %vector.body930, %vector.ph923
  %index931 = phi i64 [ 0, %vector.ph923 ], [ %index.next936, %vector.body930 ]
  %306 = getelementptr double, ptr %304, i64 %index931
  %307 = getelementptr inbounds i8, ptr %306, i64 16
  %wide.load934 = load <2 x double>, ptr %306, align 8, !tbaa !9, !alias.scope !35
  %wide.load935 = load <2 x double>, ptr %307, align 8, !tbaa !9, !alias.scope !35
  %308 = getelementptr double, ptr %305, i64 %index931
  %309 = getelementptr i8, ptr %308, i64 16
  store <2 x double> %wide.load934, ptr %308, align 8, !tbaa !9, !alias.scope !38, !noalias !35
  store <2 x double> %wide.load935, ptr %309, align 8, !tbaa !9, !alias.scope !38, !noalias !35
  %index.next936 = add nuw i64 %index931, 4
  %310 = icmp eq i64 %index.next936, %n.vec925
  br i1 %310, label %middle.block920, label %vector.body930, !llvm.loop !40

middle.block920:                                  ; preds = %vector.body930
  br i1 %cmp.n937, label %._crit_edge550.us, label %scalar.ph921.preheader

scalar.ph921.preheader:                           ; preds = %.preheader480.us, %middle.block920
  %.12548.us.ph = phi i64 [ %.11554.us, %.preheader480.us ], [ %ind.end926, %middle.block920 ]
  %.6396547.us.ph = phi i64 [ %.0372, %.preheader480.us ], [ %ind.end928, %middle.block920 ]
  %311 = sub i64 %301, %.12548.us.ph
  %xtraiter1287 = and i64 %311, 3
  %lcmp.mod1288.not = icmp eq i64 %xtraiter1287, 0
  br i1 %lcmp.mod1288.not, label %scalar.ph921.prol.loopexit, label %scalar.ph921.prol

scalar.ph921.prol:                                ; preds = %scalar.ph921.preheader, %scalar.ph921.prol
  %.12548.us.prol = phi i64 [ %316, %scalar.ph921.prol ], [ %.12548.us.ph, %scalar.ph921.preheader ]
  %.6396547.us.prol = phi i64 [ %317, %scalar.ph921.prol ], [ %.6396547.us.ph, %scalar.ph921.preheader ]
  %prol.iter1289 = phi i64 [ %prol.iter1289.next, %scalar.ph921.prol ], [ 0, %scalar.ph921.preheader ]
  %312 = getelementptr inbounds double, ptr %3, i64 %.12548.us.prol
  %313 = load double, ptr %312, align 8, !tbaa !9
  %314 = mul nsw i64 %.6396547.us.prol, %51
  %315 = getelementptr double, ptr %302, i64 %314
  store double %313, ptr %315, align 8, !tbaa !9
  %316 = add i64 %.12548.us.prol, 1
  %317 = add nuw nsw i64 %.6396547.us.prol, 1
  %prol.iter1289.next = add i64 %prol.iter1289, 1
  %prol.iter1289.cmp.not = icmp eq i64 %prol.iter1289.next, %xtraiter1287
  br i1 %prol.iter1289.cmp.not, label %scalar.ph921.prol.loopexit, label %scalar.ph921.prol, !llvm.loop !41

scalar.ph921.prol.loopexit:                       ; preds = %scalar.ph921.prol, %scalar.ph921.preheader
  %.12548.us.unr = phi i64 [ %.12548.us.ph, %scalar.ph921.preheader ], [ %316, %scalar.ph921.prol ]
  %.6396547.us.unr = phi i64 [ %.6396547.us.ph, %scalar.ph921.preheader ], [ %317, %scalar.ph921.prol ]
  %318 = add i64 %60, %.11554.us
  %319 = sub i64 %79, %318
  %320 = add i64 %319, %.12548.us.ph
  %321 = icmp ugt i64 %320, -4
  br i1 %321, label %._crit_edge550.us, label %scalar.ph921

scalar.ph921:                                     ; preds = %scalar.ph921.prol.loopexit, %scalar.ph921
  %.12548.us = phi i64 [ %338, %scalar.ph921 ], [ %.12548.us.unr, %scalar.ph921.prol.loopexit ]
  %.6396547.us = phi i64 [ %339, %scalar.ph921 ], [ %.6396547.us.unr, %scalar.ph921.prol.loopexit ]
  %322 = getelementptr inbounds double, ptr %3, i64 %.12548.us
  %323 = load double, ptr %322, align 8, !tbaa !9
  %324 = mul nsw i64 %.6396547.us, %51
  %325 = getelementptr double, ptr %302, i64 %324
  store double %323, ptr %325, align 8, !tbaa !9
  %326 = add nuw nsw i64 %.6396547.us, 1
  %gep1361 = getelementptr double, ptr %invariant.gep1360, i64 %.12548.us
  %327 = load double, ptr %gep1361, align 8, !tbaa !9
  %328 = mul nsw i64 %326, %51
  %329 = getelementptr double, ptr %302, i64 %328
  store double %327, ptr %329, align 8, !tbaa !9
  %330 = add nuw nsw i64 %.6396547.us, 2
  %gep1363 = getelementptr double, ptr %invariant.gep1362, i64 %.12548.us
  %331 = load double, ptr %gep1363, align 8, !tbaa !9
  %332 = mul nsw i64 %330, %51
  %333 = getelementptr double, ptr %302, i64 %332
  store double %331, ptr %333, align 8, !tbaa !9
  %334 = add nuw nsw i64 %.6396547.us, 3
  %gep1365 = getelementptr double, ptr %invariant.gep1364, i64 %.12548.us
  %335 = load double, ptr %gep1365, align 8, !tbaa !9
  %336 = mul nsw i64 %334, %51
  %337 = getelementptr double, ptr %302, i64 %336
  store double %335, ptr %337, align 8, !tbaa !9
  %338 = add i64 %.12548.us, 4
  %339 = add nuw nsw i64 %.6396547.us, 4
  %exitcond706.not.3 = icmp eq i64 %338, %303
  br i1 %exitcond706.not.3, label %._crit_edge550.us, label %scalar.ph921, !llvm.loop !42

._crit_edge550.us:                                ; preds = %scalar.ph921.prol.loopexit, %scalar.ph921, %middle.block920
  %340 = add nuw i64 %.4382553.us, 1
  %exitcond707.not = icmp eq i64 %.4382553.us, %.0372
  br i1 %exitcond707.not, label %._crit_edge555, label %.preheader480.us, !llvm.loop !43

._crit_edge555:                                   ; preds = %._crit_edge550.us
  %.not439.not568 = icmp sgt i64 %.0372, 0
  br i1 %.not439.not568, label %.preheader478.preheader, label %.loopexit

.preheader478.preheader:                          ; preds = %._crit_edge555
  %341 = shl i64 %.0371, 4
  %342 = add i64 %341, %35
  %343 = add i64 %342, -8
  %344 = shl i64 %51, 3
  %invariant.gep1366 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1370 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1374 = getelementptr i8, ptr %3, i64 24
  %ident.check939.not = icmp eq i64 %51, 1
  br label %.preheader478

.preheader478:                                    ; preds = %.preheader478.preheader, %._crit_edge566
  %indvars.iv709 = phi i64 [ 1, %.preheader478.preheader ], [ %indvars.iv.next710, %._crit_edge566 ]
  %.13570 = phi i64 [ %303, %.preheader478.preheader ], [ %.15.lcssa, %._crit_edge566 ]
  %.5383569 = phi i64 [ 0, %.preheader478.preheader ], [ %394, %._crit_edge566 ]
  %345 = add i64 %.0371, %.5383569
  %346 = sub i64 %60, %345
  %347 = shl i64 %.5383569, 4
  %348 = mul nsw i64 %.5383569, %51
  %invariant.gep557 = getelementptr double, ptr %4, i64 %348
  %min.iters.check964 = icmp ult i64 %indvars.iv709, 4
  br i1 %min.iters.check964, label %scalar.ph963.preheader, label %vector.memcheck960

vector.memcheck960:                               ; preds = %.preheader478
  %349 = mul i64 %344, %.5383569
  %350 = shl i64 %.13570, 3
  %351 = add i64 %349, %33
  %352 = add i64 %350, %32
  %353 = sub i64 %351, %352
  %diff.check961 = icmp ult i64 %353, 32
  br i1 %diff.check961, label %scalar.ph963.preheader, label %vector.ph965

vector.ph965:                                     ; preds = %vector.memcheck960
  %n.vec967 = and i64 %indvars.iv709, -4
  %ind.end968 = add i64 %.13570, %n.vec967
  %354 = getelementptr double, ptr %3, i64 %.13570
  br label %vector.body971

vector.body971:                                   ; preds = %vector.body971, %vector.ph965
  %index972 = phi i64 [ 0, %vector.ph965 ], [ %index.next976, %vector.body971 ]
  %355 = getelementptr double, ptr %354, i64 %index972
  %356 = getelementptr inbounds i8, ptr %355, i64 16
  %wide.load974 = load <2 x double>, ptr %355, align 8, !tbaa !9
  %wide.load975 = load <2 x double>, ptr %356, align 8, !tbaa !9
  %357 = getelementptr double, ptr %invariant.gep557, i64 %index972
  %358 = getelementptr i8, ptr %357, i64 16
  store <2 x double> %wide.load974, ptr %357, align 8, !tbaa !9
  store <2 x double> %wide.load975, ptr %358, align 8, !tbaa !9
  %index.next976 = add nuw i64 %index972, 4
  %359 = icmp eq i64 %index.next976, %n.vec967
  br i1 %359, label %middle.block962, label %vector.body971, !llvm.loop !44

middle.block962:                                  ; preds = %vector.body971
  %cmp.n977 = icmp eq i64 %indvars.iv709, %n.vec967
  %ind.escape978 = add i64 %n.vec967, -1
  br i1 %cmp.n977, label %.loopexit1235, label %scalar.ph963.preheader

scalar.ph963.preheader:                           ; preds = %middle.block962, %vector.memcheck960, %.preheader478
  %.14560.ph = phi i64 [ %.13570, %vector.memcheck960 ], [ %.13570, %.preheader478 ], [ %ind.end968, %middle.block962 ]
  %.7397559.ph = phi i64 [ 0, %vector.memcheck960 ], [ 0, %.preheader478 ], [ %n.vec967, %middle.block962 ]
  %360 = sub i64 %.5383569, %.7397559.ph
  %xtraiter1290 = and i64 %indvars.iv709, 3
  %lcmp.mod1291.not = icmp eq i64 %xtraiter1290, 0
  br i1 %lcmp.mod1291.not, label %scalar.ph963.prol.loopexit, label %scalar.ph963.prol

scalar.ph963.prol:                                ; preds = %scalar.ph963.preheader, %scalar.ph963.prol
  %.14560.prol = phi i64 [ %363, %scalar.ph963.prol ], [ %.14560.ph, %scalar.ph963.preheader ]
  %.7397559.prol = phi i64 [ %364, %scalar.ph963.prol ], [ %.7397559.ph, %scalar.ph963.preheader ]
  %prol.iter1292 = phi i64 [ %prol.iter1292.next, %scalar.ph963.prol ], [ 0, %scalar.ph963.preheader ]
  %361 = getelementptr inbounds double, ptr %3, i64 %.14560.prol
  %362 = load double, ptr %361, align 8, !tbaa !9
  %gep558.prol = getelementptr double, ptr %invariant.gep557, i64 %.7397559.prol
  store double %362, ptr %gep558.prol, align 8, !tbaa !9
  %363 = add nsw i64 %.14560.prol, 1
  %364 = add nuw nsw i64 %.7397559.prol, 1
  %prol.iter1292.next = add i64 %prol.iter1292, 1
  %prol.iter1292.cmp.not = icmp eq i64 %prol.iter1292.next, %xtraiter1290
  br i1 %prol.iter1292.cmp.not, label %scalar.ph963.prol.loopexit, label %scalar.ph963.prol, !llvm.loop !45

scalar.ph963.prol.loopexit:                       ; preds = %scalar.ph963.prol, %scalar.ph963.preheader
  %.7397559.lcssa1270.unr = phi i64 [ poison, %scalar.ph963.preheader ], [ %.7397559.prol, %scalar.ph963.prol ]
  %.lcssa1269.unr = phi i64 [ poison, %scalar.ph963.preheader ], [ %363, %scalar.ph963.prol ]
  %.14560.unr = phi i64 [ %.14560.ph, %scalar.ph963.preheader ], [ %363, %scalar.ph963.prol ]
  %.7397559.unr = phi i64 [ %.7397559.ph, %scalar.ph963.preheader ], [ %364, %scalar.ph963.prol ]
  %365 = icmp ult i64 %360, 3
  br i1 %365, label %.loopexit1235, label %scalar.ph963.preheader.new

scalar.ph963.preheader.new:                       ; preds = %scalar.ph963.prol.loopexit
  %invariant.gep1368 = getelementptr i8, ptr %invariant.gep557, i64 8
  %invariant.gep1372 = getelementptr i8, ptr %invariant.gep557, i64 16
  br label %scalar.ph963

scalar.ph963:                                     ; preds = %scalar.ph963, %scalar.ph963.preheader.new
  %.14560 = phi i64 [ %.14560.unr, %scalar.ph963.preheader.new ], [ %372, %scalar.ph963 ]
  %.7397559 = phi i64 [ %.7397559.unr, %scalar.ph963.preheader.new ], [ %373, %scalar.ph963 ]
  %366 = getelementptr inbounds double, ptr %3, i64 %.14560
  %367 = load double, ptr %366, align 8, !tbaa !9
  %gep558 = getelementptr double, ptr %invariant.gep557, i64 %.7397559
  store double %367, ptr %gep558, align 8, !tbaa !9
  %gep1367 = getelementptr double, ptr %invariant.gep1366, i64 %.14560
  %368 = load double, ptr %gep1367, align 8, !tbaa !9
  %gep1369 = getelementptr double, ptr %invariant.gep1368, i64 %.7397559
  store double %368, ptr %gep1369, align 8, !tbaa !9
  %gep1371 = getelementptr double, ptr %invariant.gep1370, i64 %.14560
  %369 = load double, ptr %gep1371, align 8, !tbaa !9
  %gep1373 = getelementptr double, ptr %invariant.gep1372, i64 %.7397559
  store double %369, ptr %gep1373, align 8, !tbaa !9
  %370 = add nuw nsw i64 %.7397559, 3
  %gep1375 = getelementptr double, ptr %invariant.gep1374, i64 %.14560
  %371 = load double, ptr %gep1375, align 8, !tbaa !9
  %gep558.3 = getelementptr double, ptr %invariant.gep557, i64 %370
  store double %371, ptr %gep558.3, align 8, !tbaa !9
  %372 = add nsw i64 %.14560, 4
  %373 = add nuw nsw i64 %.7397559, 4
  %exitcond711.not.3 = icmp eq i64 %373, %indvars.iv709
  br i1 %exitcond711.not.3, label %.loopexit1235, label %scalar.ph963, !llvm.loop !46

.loopexit1235:                                    ; preds = %scalar.ph963.prol.loopexit, %scalar.ph963, %middle.block962
  %.7397559.lcssa = phi i64 [ %ind.escape978, %middle.block962 ], [ %.7397559.lcssa1270.unr, %scalar.ph963.prol.loopexit ], [ %370, %scalar.ph963 ]
  %.lcssa779 = phi i64 [ %ind.end968, %middle.block962 ], [ %.lcssa1269.unr, %scalar.ph963.prol.loopexit ], [ %372, %scalar.ph963 ]
  %374 = add nsw i64 %.5383569, %.0371
  %.not441.not561 = icmp slt i64 %374, %60
  br i1 %.not441.not561, label %.lr.ph565, label %._crit_edge566

.lr.ph565:                                        ; preds = %.loopexit1235
  %375 = getelementptr double, ptr %4, i64 %374
  %min.iters.check944 = icmp ugt i64 %346, 7
  %or.cond1243 = select i1 %min.iters.check944, i1 %ident.check939.not, i1 false
  br i1 %or.cond1243, label %vector.memcheck940, label %scalar.ph943.preheader

vector.memcheck940:                               ; preds = %.lr.ph565
  %376 = add i64 %343, %347
  %377 = add i64 %.13570, %.7397559.lcssa
  %378 = shl i64 %377, 3
  %379 = add i64 %378, %34
  %380 = sub i64 %376, %379
  %diff.check941 = icmp ult i64 %380, 32
  br i1 %diff.check941, label %scalar.ph943.preheader, label %vector.ph945

vector.ph945:                                     ; preds = %vector.memcheck940
  %n.vec947 = and i64 %346, -4
  %ind.end948 = add i64 %.lcssa779, %n.vec947
  %ind.end950 = add i64 %374, %n.vec947
  %381 = getelementptr double, ptr %3, i64 %.lcssa779
  %382 = getelementptr double, ptr %375, i64 %374
  br label %vector.body952

vector.body952:                                   ; preds = %vector.body952, %vector.ph945
  %index953 = phi i64 [ 0, %vector.ph945 ], [ %index.next958, %vector.body952 ]
  %383 = getelementptr double, ptr %381, i64 %index953
  %384 = getelementptr inbounds i8, ptr %383, i64 16
  %wide.load956 = load <2 x double>, ptr %383, align 8, !tbaa !9
  %wide.load957 = load <2 x double>, ptr %384, align 8, !tbaa !9
  %385 = getelementptr double, ptr %382, i64 %index953
  %386 = getelementptr i8, ptr %385, i64 16
  store <2 x double> %wide.load956, ptr %385, align 8, !tbaa !9
  store <2 x double> %wide.load957, ptr %386, align 8, !tbaa !9
  %index.next958 = add nuw i64 %index953, 4
  %387 = icmp eq i64 %index.next958, %n.vec947
  br i1 %387, label %middle.block942, label %vector.body952, !llvm.loop !47

middle.block942:                                  ; preds = %vector.body952
  %cmp.n959 = icmp eq i64 %346, %n.vec947
  br i1 %cmp.n959, label %._crit_edge566, label %scalar.ph943.preheader

scalar.ph943.preheader:                           ; preds = %middle.block942, %vector.memcheck940, %.lr.ph565
  %.15563.ph = phi i64 [ %.lcssa779, %vector.memcheck940 ], [ %.lcssa779, %.lr.ph565 ], [ %ind.end948, %middle.block942 ]
  %.1374562.ph = phi i64 [ %374, %vector.memcheck940 ], [ %374, %.lr.ph565 ], [ %ind.end950, %middle.block942 ]
  br label %scalar.ph943

scalar.ph943:                                     ; preds = %scalar.ph943.preheader, %scalar.ph943
  %.15563 = phi i64 [ %392, %scalar.ph943 ], [ %.15563.ph, %scalar.ph943.preheader ]
  %.1374562 = phi i64 [ %393, %scalar.ph943 ], [ %.1374562.ph, %scalar.ph943.preheader ]
  %388 = getelementptr inbounds double, ptr %3, i64 %.15563
  %389 = load double, ptr %388, align 8, !tbaa !9
  %390 = mul nsw i64 %.1374562, %51
  %391 = getelementptr double, ptr %375, i64 %390
  store double %389, ptr %391, align 8, !tbaa !9
  %392 = add nsw i64 %.15563, 1
  %393 = add nsw i64 %.1374562, 1
  %.not441.not = icmp slt i64 %393, %60
  br i1 %.not441.not, label %scalar.ph943, label %._crit_edge566, !llvm.loop !48

._crit_edge566:                                   ; preds = %scalar.ph943, %middle.block942, %.loopexit1235
  %.15.lcssa = phi i64 [ %.lcssa779, %.loopexit1235 ], [ %ind.end948, %middle.block942 ], [ %392, %scalar.ph943 ]
  %394 = add nuw nsw i64 %.5383569, 1
  %indvars.iv.next710 = add nuw i64 %indvars.iv709, 1
  %exitcond712.not = icmp eq i64 %394, %.0372
  br i1 %exitcond712.not, label %.loopexit, label %.preheader478, !llvm.loop !49

395:                                              ; preds = %83
  br i1 %.not, label %.preheader470.us.preheader, label %.preheader471.lr.ph

.preheader470.us.preheader:                       ; preds = %395
  %396 = add nuw nsw i64 %79, 1
  %smax1154 = tail call i64 @llvm.smax.i64(i64 %60, i64 %396)
  %397 = sub nsw i64 %smax1154, %79
  %min.iters.check1157 = icmp ugt i64 %397, 3
  %ident.check1151.not = icmp eq i64 %51, 1
  %or.cond1248 = select i1 %min.iters.check1157, i1 %ident.check1151.not, i1 false
  %n.vec1160 = and i64 %397, -4
  %ind.end1163 = add i64 %79, %n.vec1160
  %cmp.n1172 = icmp eq i64 %397, %n.vec1160
  br label %.preheader470.us

.thread463:                                       ; preds = %83
  br i1 %.not, label %.lr.ph588, label %.lr.ph584.preheader

.lr.ph584.preheader:                              ; preds = %.thread463
  %398 = add i64 %31, -8
  %399 = shl i64 %51, 3
  %400 = add i64 %399, 8
  %401 = shl i64 %79, 4
  %402 = add i64 %401, %29
  %ident.check1002.not = icmp eq i64 %51, 1
  br label %.lr.ph584

.lr.ph584:                                        ; preds = %.lr.ph584.preheader, %._crit_edge577
  %.16583 = phi i64 [ %.18.lcssa, %._crit_edge577 ], [ 0, %.lr.ph584.preheader ]
  %.6384582 = phi i64 [ %443, %._crit_edge577 ], [ 0, %.lr.ph584.preheader ]
  %403 = add nuw i64 %.6384582, 1
  %404 = sub nsw i64 %60, %.6384582
  %405 = mul i64 %400, %.6384582
  %406 = add nuw nsw i64 %.6384582, %79
  %407 = getelementptr double, ptr %4, i64 %406
  %min.iters.check1008 = icmp ugt i64 %.6384582, 2
  %or.cond1244 = select i1 %min.iters.check1008, i1 %ident.check1002.not, i1 false
  br i1 %or.cond1244, label %vector.memcheck1003, label %scalar.ph1007.preheader

scalar.ph1007.preheader:                          ; preds = %middle.block1006, %vector.memcheck1003, %.lr.ph584
  %indvar980.ph = phi i64 [ 0, %vector.memcheck1003 ], [ 0, %.lr.ph584 ], [ %n.vec1011, %middle.block1006 ]
  %.17572.ph = phi i64 [ %.16583, %vector.memcheck1003 ], [ %.16583, %.lr.ph584 ], [ %ind.end1013, %middle.block1006 ]
  %.8398571.ph = phi i64 [ %79, %vector.memcheck1003 ], [ %79, %.lr.ph584 ], [ %ind.end1015, %middle.block1006 ]
  br label %scalar.ph1007

vector.memcheck1003:                              ; preds = %.lr.ph584
  %408 = shl i64 %.6384582, 3
  %409 = shl i64 %.16583, 3
  %410 = add i64 %402, %408
  %411 = add i64 %409, %28
  %412 = sub i64 %410, %411
  %diff.check1004 = icmp ult i64 %412, 32
  br i1 %diff.check1004, label %scalar.ph1007.preheader, label %vector.ph1009

vector.ph1009:                                    ; preds = %vector.memcheck1003
  %n.vec1011 = and i64 %403, -4
  %ind.end1013 = add i64 %.16583, %n.vec1011
  %ind.end1015 = add i64 %79, %n.vec1011
  %413 = getelementptr double, ptr %3, i64 %.16583
  %414 = getelementptr double, ptr %407, i64 %79
  br label %vector.body1017

vector.body1017:                                  ; preds = %vector.body1017, %vector.ph1009
  %index1018 = phi i64 [ 0, %vector.ph1009 ], [ %index.next1023, %vector.body1017 ]
  %415 = getelementptr double, ptr %413, i64 %index1018
  %416 = getelementptr inbounds i8, ptr %415, i64 16
  %wide.load1021 = load <2 x double>, ptr %415, align 8, !tbaa !9
  %wide.load1022 = load <2 x double>, ptr %416, align 8, !tbaa !9
  %417 = getelementptr double, ptr %414, i64 %index1018
  %418 = getelementptr i8, ptr %417, i64 16
  store <2 x double> %wide.load1021, ptr %417, align 8, !tbaa !9
  store <2 x double> %wide.load1022, ptr %418, align 8, !tbaa !9
  %index.next1023 = add nuw i64 %index1018, 4
  %419 = icmp eq i64 %index.next1023, %n.vec1011
  br i1 %419, label %middle.block1006, label %vector.body1017, !llvm.loop !50

middle.block1006:                                 ; preds = %vector.body1017
  %cmp.n1024 = icmp eq i64 %403, %n.vec1011
  %ind.escape1025 = add i64 %n.vec1011, -1
  br i1 %cmp.n1024, label %.preheader476, label %scalar.ph1007.preheader

.preheader476:                                    ; preds = %scalar.ph1007, %middle.block1006
  %indvar980.lcssa = phi i64 [ %ind.escape1025, %middle.block1006 ], [ %indvar980, %scalar.ph1007 ]
  %.lcssa777 = phi i64 [ %ind.end1013, %middle.block1006 ], [ %437, %scalar.ph1007 ]
  %.not437.not573 = icmp slt i64 %.6384582, %60
  br i1 %.not437.not573, label %.lr.ph576, label %._crit_edge577

.lr.ph576:                                        ; preds = %.preheader476
  %420 = mul nsw i64 %.6384582, %51
  %invariant.gep579 = getelementptr double, ptr %4, i64 %420
  %min.iters.check985 = icmp ult i64 %404, 6
  br i1 %min.iters.check985, label %scalar.ph984.preheader, label %vector.memcheck979

scalar.ph984.preheader:                           ; preds = %middle.block983, %vector.memcheck979, %.lr.ph576
  %.18575.ph = phi i64 [ %.lcssa777, %vector.memcheck979 ], [ %.lcssa777, %.lr.ph576 ], [ %ind.end989, %middle.block983 ]
  %.9399574.ph = phi i64 [ %.6384582, %vector.memcheck979 ], [ %.6384582, %.lr.ph576 ], [ %ind.end991, %middle.block983 ]
  br label %scalar.ph984

vector.memcheck979:                               ; preds = %.lr.ph576
  %421 = add i64 %398, %405
  %422 = add i64 %.16583, %indvar980.lcssa
  %423 = shl i64 %422, 3
  %424 = add i64 %423, %30
  %425 = sub i64 %421, %424
  %diff.check982 = icmp ult i64 %425, 32
  br i1 %diff.check982, label %scalar.ph984.preheader, label %vector.ph986

vector.ph986:                                     ; preds = %vector.memcheck979
  %n.vec988 = and i64 %404, -4
  %ind.end989 = add i64 %.lcssa777, %n.vec988
  %ind.end991 = add i64 %.6384582, %n.vec988
  %426 = getelementptr double, ptr %3, i64 %.lcssa777
  %427 = getelementptr double, ptr %invariant.gep579, i64 %.6384582
  br label %vector.body993

vector.body993:                                   ; preds = %vector.body993, %vector.ph986
  %index994 = phi i64 [ 0, %vector.ph986 ], [ %index.next999, %vector.body993 ]
  %428 = getelementptr double, ptr %426, i64 %index994
  %429 = getelementptr inbounds i8, ptr %428, i64 16
  %wide.load997 = load <2 x double>, ptr %428, align 8, !tbaa !9
  %wide.load998 = load <2 x double>, ptr %429, align 8, !tbaa !9
  %430 = getelementptr double, ptr %427, i64 %index994
  %431 = getelementptr i8, ptr %430, i64 16
  store <2 x double> %wide.load997, ptr %430, align 8, !tbaa !9
  store <2 x double> %wide.load998, ptr %431, align 8, !tbaa !9
  %index.next999 = add nuw i64 %index994, 4
  %432 = icmp eq i64 %index.next999, %n.vec988
  br i1 %432, label %middle.block983, label %vector.body993, !llvm.loop !51

middle.block983:                                  ; preds = %vector.body993
  %cmp.n1000 = icmp eq i64 %404, %n.vec988
  br i1 %cmp.n1000, label %._crit_edge577, label %scalar.ph984.preheader

scalar.ph1007:                                    ; preds = %scalar.ph1007.preheader, %scalar.ph1007
  %indvar980 = phi i64 [ %indvar.next981, %scalar.ph1007 ], [ %indvar980.ph, %scalar.ph1007.preheader ]
  %.17572 = phi i64 [ %437, %scalar.ph1007 ], [ %.17572.ph, %scalar.ph1007.preheader ]
  %.8398571 = phi i64 [ %438, %scalar.ph1007 ], [ %.8398571.ph, %scalar.ph1007.preheader ]
  %433 = getelementptr inbounds double, ptr %3, i64 %.17572
  %434 = load double, ptr %433, align 8, !tbaa !9
  %435 = mul nsw i64 %.8398571, %51
  %436 = getelementptr double, ptr %407, i64 %435
  store double %434, ptr %436, align 8, !tbaa !9
  %437 = add nsw i64 %.17572, 1
  %438 = add nuw nsw i64 %.8398571, 1
  %.not436.not = icmp ult i64 %.8398571, %406
  %indvar.next981 = add i64 %indvar980, 1
  br i1 %.not436.not, label %scalar.ph1007, label %.preheader476, !llvm.loop !52

scalar.ph984:                                     ; preds = %scalar.ph984.preheader, %scalar.ph984
  %.18575 = phi i64 [ %441, %scalar.ph984 ], [ %.18575.ph, %scalar.ph984.preheader ]
  %.9399574 = phi i64 [ %442, %scalar.ph984 ], [ %.9399574.ph, %scalar.ph984.preheader ]
  %439 = getelementptr inbounds double, ptr %3, i64 %.18575
  %440 = load double, ptr %439, align 8, !tbaa !9
  %gep580 = getelementptr double, ptr %invariant.gep579, i64 %.9399574
  store double %440, ptr %gep580, align 8, !tbaa !9
  %441 = add nsw i64 %.18575, 1
  %442 = add nuw nsw i64 %.9399574, 1
  %.not437.not = icmp slt i64 %442, %60
  br i1 %.not437.not, label %scalar.ph984, label %._crit_edge577, !llvm.loop !53

._crit_edge577:                                   ; preds = %scalar.ph984, %middle.block983, %.preheader476
  %.18.lcssa = phi i64 [ %.lcssa777, %.preheader476 ], [ %ind.end989, %middle.block983 ], [ %441, %scalar.ph984 ]
  %443 = add nuw nsw i64 %.6384582, 1
  %exitcond714.not = icmp eq i64 %443, %79
  br i1 %exitcond714.not, label %.loopexit, label %.lr.ph584, !llvm.loop !54

.preheader471.lr.ph:                              ; preds = %395
  %444 = xor i64 %60, -1
  %445 = add nsw i64 %78, %444
  %446 = shl nuw i64 %60, 1
  %447 = shl i64 %60, 4
  %448 = add i64 %447, %19
  %449 = add i64 %448, -24
  %450 = add nuw i64 %60, 2305843009213693951
  %451 = mul i64 %51, %450
  %452 = shl i64 %451, 3
  %453 = add i64 %452, %17
  %454 = mul i64 %51, -8
  %ident.check1108.not = icmp eq i64 %51, 1
  br label %.preheader471

.preheader471:                                    ; preds = %.preheader471.lr.ph, %._crit_edge627
  %indvar1110 = phi i64 [ 0, %.preheader471.lr.ph ], [ %indvar.next1111, %._crit_edge627 ]
  %.19632 = phi i64 [ %445, %.preheader471.lr.ph ], [ %495, %._crit_edge627 ]
  %.7385.in631 = phi i64 [ %60, %.preheader471.lr.ph ], [ %.7385633, %._crit_edge627 ]
  %455 = add i64 %indvar1110, 1
  %456 = add i64 %79, %indvar1110
  %457 = shl i64 %456, 4
  %458 = add i64 %457, %18
  %.7385633 = add nsw i64 %.7385.in631, -1
  %459 = mul nsw i64 %.7385633, %51
  %invariant.gep620 = getelementptr double, ptr %4, i64 %459
  %min.iters.check1135 = icmp ult i64 %.7385.in631, 4
  br i1 %min.iters.check1135, label %scalar.ph1134.preheader, label %vector.memcheck1131

vector.memcheck1131:                              ; preds = %.preheader471
  %460 = mul i64 %454, %indvar1110
  %461 = shl i64 %.19632, 3
  %462 = add i64 %453, %460
  %463 = add i64 %461, %16
  %464 = sub i64 %462, %463
  %diff.check1132 = icmp ult i64 %464, 32
  br i1 %diff.check1132, label %scalar.ph1134.preheader, label %vector.ph1136

vector.ph1136:                                    ; preds = %vector.memcheck1131
  %n.vec1138 = and i64 %.7385.in631, -4
  %ind.end1139 = add i64 %.19632, %n.vec1138
  %465 = getelementptr double, ptr %3, i64 %.19632
  br label %vector.body1142

vector.body1142:                                  ; preds = %vector.body1142, %vector.ph1136
  %index1143 = phi i64 [ 0, %vector.ph1136 ], [ %index.next1147, %vector.body1142 ]
  %466 = getelementptr double, ptr %465, i64 %index1143
  %467 = getelementptr inbounds i8, ptr %466, i64 16
  %wide.load1145 = load <2 x double>, ptr %466, align 8, !tbaa !9
  %wide.load1146 = load <2 x double>, ptr %467, align 8, !tbaa !9
  %468 = getelementptr double, ptr %invariant.gep620, i64 %index1143
  %469 = getelementptr i8, ptr %468, i64 16
  store <2 x double> %wide.load1145, ptr %468, align 8, !tbaa !9
  store <2 x double> %wide.load1146, ptr %469, align 8, !tbaa !9
  %index.next1147 = add nuw i64 %index1143, 4
  %470 = icmp eq i64 %index.next1147, %n.vec1138
  br i1 %470, label %middle.block1133, label %vector.body1142, !llvm.loop !55

middle.block1133:                                 ; preds = %vector.body1142
  %cmp.n1148 = icmp eq i64 %.7385.in631, %n.vec1138
  %ind.escape1149 = add i64 %n.vec1138, -1
  br i1 %cmp.n1148, label %.loopexit1233, label %scalar.ph1134.preheader

scalar.ph1134.preheader:                          ; preds = %middle.block1133, %vector.memcheck1131, %.preheader471
  %.20619.ph = phi i64 [ %.19632, %vector.memcheck1131 ], [ %.19632, %.preheader471 ], [ %ind.end1139, %middle.block1133 ]
  %.10400618.ph = phi i64 [ 0, %vector.memcheck1131 ], [ 0, %.preheader471 ], [ %n.vec1138, %middle.block1133 ]
  br label %scalar.ph1134

scalar.ph1134:                                    ; preds = %scalar.ph1134.preheader, %scalar.ph1134
  %.20619 = phi i64 [ %473, %scalar.ph1134 ], [ %.20619.ph, %scalar.ph1134.preheader ]
  %.10400618 = phi i64 [ %474, %scalar.ph1134 ], [ %.10400618.ph, %scalar.ph1134.preheader ]
  %471 = getelementptr inbounds double, ptr %3, i64 %.20619
  %472 = load double, ptr %471, align 8, !tbaa !9
  %gep621 = getelementptr double, ptr %invariant.gep620, i64 %.10400618
  store double %472, ptr %gep621, align 8, !tbaa !9
  %473 = add nsw i64 %.20619, 1
  %474 = add nuw nsw i64 %.10400618, 1
  %.not433.not = icmp slt i64 %474, %.7385.in631
  br i1 %.not433.not, label %scalar.ph1134, label %.loopexit1233, !llvm.loop !56

.loopexit1233:                                    ; preds = %scalar.ph1134, %middle.block1133
  %.10400618.lcssa = phi i64 [ %ind.escape1149, %middle.block1133 ], [ %.10400618, %scalar.ph1134 ]
  %.lcssa771 = phi i64 [ %ind.end1139, %middle.block1133 ], [ %473, %scalar.ph1134 ]
  %475 = sub nsw i64 %.7385633, %79
  %.not434.not622 = icmp slt i64 %475, %79
  br i1 %.not434.not622, label %.lr.ph626, label %._crit_edge627

.lr.ph626:                                        ; preds = %.loopexit1233
  %476 = getelementptr double, ptr %4, i64 %475
  %min.iters.check1115 = icmp ugt i64 %455, 7
  %or.cond1245 = select i1 %min.iters.check1115, i1 %ident.check1108.not, i1 false
  br i1 %or.cond1245, label %vector.memcheck1109, label %scalar.ph1114.preheader

vector.memcheck1109:                              ; preds = %.lr.ph626
  %477 = shl i64 %.19632, 3
  %478 = add i64 %458, %477
  %479 = shl i64 %.10400618.lcssa, 3
  %480 = add i64 %478, %479
  %481 = sub i64 %449, %480
  %diff.check1112 = icmp ult i64 %481, 32
  br i1 %diff.check1112, label %scalar.ph1114.preheader, label %vector.ph1116

vector.ph1116:                                    ; preds = %vector.memcheck1109
  %n.vec1118 = and i64 %455, -4
  %ind.end1119 = add i64 %.lcssa771, %n.vec1118
  %ind.end1121 = add i64 %475, %n.vec1118
  %482 = getelementptr double, ptr %3, i64 %.lcssa771
  %483 = getelementptr double, ptr %476, i64 %475
  br label %vector.body1123

vector.body1123:                                  ; preds = %vector.body1123, %vector.ph1116
  %index1124 = phi i64 [ 0, %vector.ph1116 ], [ %index.next1129, %vector.body1123 ]
  %484 = getelementptr double, ptr %482, i64 %index1124
  %485 = getelementptr inbounds i8, ptr %484, i64 16
  %wide.load1127 = load <2 x double>, ptr %484, align 8, !tbaa !9
  %wide.load1128 = load <2 x double>, ptr %485, align 8, !tbaa !9
  %486 = getelementptr double, ptr %483, i64 %index1124
  %487 = getelementptr i8, ptr %486, i64 16
  store <2 x double> %wide.load1127, ptr %486, align 8, !tbaa !9
  store <2 x double> %wide.load1128, ptr %487, align 8, !tbaa !9
  %index.next1129 = add nuw i64 %index1124, 4
  %488 = icmp eq i64 %index.next1129, %n.vec1118
  br i1 %488, label %middle.block1113, label %vector.body1123, !llvm.loop !57

middle.block1113:                                 ; preds = %vector.body1123
  %cmp.n1130 = icmp eq i64 %455, %n.vec1118
  br i1 %cmp.n1130, label %._crit_edge627, label %scalar.ph1114.preheader

scalar.ph1114.preheader:                          ; preds = %middle.block1113, %vector.memcheck1109, %.lr.ph626
  %.21624.ph = phi i64 [ %.lcssa771, %vector.memcheck1109 ], [ %.lcssa771, %.lr.ph626 ], [ %ind.end1119, %middle.block1113 ]
  %.2375623.ph = phi i64 [ %475, %vector.memcheck1109 ], [ %475, %.lr.ph626 ], [ %ind.end1121, %middle.block1113 ]
  br label %scalar.ph1114

scalar.ph1114:                                    ; preds = %scalar.ph1114.preheader, %scalar.ph1114
  %.21624 = phi i64 [ %493, %scalar.ph1114 ], [ %.21624.ph, %scalar.ph1114.preheader ]
  %.2375623 = phi i64 [ %494, %scalar.ph1114 ], [ %.2375623.ph, %scalar.ph1114.preheader ]
  %489 = getelementptr inbounds double, ptr %3, i64 %.21624
  %490 = load double, ptr %489, align 8, !tbaa !9
  %491 = mul nsw i64 %.2375623, %51
  %492 = getelementptr double, ptr %476, i64 %491
  store double %490, ptr %492, align 8, !tbaa !9
  %493 = add nsw i64 %.21624, 1
  %494 = add nsw i64 %.2375623, 1
  %.not434.not = icmp slt i64 %494, %79
  br i1 %.not434.not, label %scalar.ph1114, label %._crit_edge627, !llvm.loop !58

._crit_edge627:                                   ; preds = %scalar.ph1114, %middle.block1113, %.loopexit1233
  %.21.lcssa = phi i64 [ %.lcssa771, %.loopexit1233 ], [ %ind.end1119, %middle.block1113 ], [ %493, %scalar.ph1114 ]
  %reass.sub = sub i64 %.21.lcssa, %446
  %495 = add i64 %reass.sub, -2
  %.not432.not = icmp sgt i64 %.7385633, %79
  %indvar.next1111 = add i64 %indvar1110, 1
  br i1 %.not432.not, label %.preheader471, label %.loopexit, !llvm.loop !59

.lr.ph588:                                        ; preds = %.thread463
  %496 = mul nsw i64 %79, %51
  %invariant.gep591 = getelementptr double, ptr %4, i64 %496
  %497 = add nuw nsw i64 %79, 1
  %smax = tail call i64 @llvm.smax.i64(i64 %60, i64 %497)
  %498 = sub nsw i64 %smax, %79
  %min.iters.check1030 = icmp ult i64 %498, 14
  br i1 %min.iters.check1030, label %scalar.ph1029.preheader, label %vector.memcheck1026

vector.memcheck1026:                              ; preds = %.lr.ph588
  %499 = shl i64 %51, 3
  %500 = add i64 %499, 8
  %501 = mul i64 %79, %500
  %502 = add i64 %501, %27
  %503 = sub i64 %502, %26
  %diff.check1027 = icmp ult i64 %503, 32
  br i1 %diff.check1027, label %scalar.ph1029.preheader, label %vector.ph1031

vector.ph1031:                                    ; preds = %vector.memcheck1026
  %n.vec1033 = and i64 %498, -4
  %ind.end1035 = add i64 %79, %n.vec1033
  %504 = getelementptr double, ptr %invariant.gep591, i64 %79
  br label %vector.body1037

vector.body1037:                                  ; preds = %vector.body1037, %vector.ph1031
  %index1038 = phi i64 [ 0, %vector.ph1031 ], [ %index.next1042, %vector.body1037 ]
  %505 = getelementptr inbounds double, ptr %3, i64 %index1038
  %506 = getelementptr inbounds i8, ptr %505, i64 16
  %wide.load1040 = load <2 x double>, ptr %505, align 8, !tbaa !9
  %wide.load1041 = load <2 x double>, ptr %506, align 8, !tbaa !9
  %507 = getelementptr double, ptr %504, i64 %index1038
  %508 = getelementptr i8, ptr %507, i64 16
  store <2 x double> %wide.load1040, ptr %507, align 8, !tbaa !9
  store <2 x double> %wide.load1041, ptr %508, align 8, !tbaa !9
  %index.next1042 = add nuw i64 %index1038, 4
  %509 = icmp eq i64 %index.next1042, %n.vec1033
  br i1 %509, label %middle.block1028, label %vector.body1037, !llvm.loop !60

middle.block1028:                                 ; preds = %vector.body1037
  %cmp.n1043 = icmp eq i64 %498, %n.vec1033
  br i1 %cmp.n1043, label %._crit_edge589, label %scalar.ph1029.preheader

scalar.ph1029.preheader:                          ; preds = %middle.block1028, %vector.memcheck1026, %.lr.ph588
  %.22587.ph = phi i64 [ 0, %vector.memcheck1026 ], [ 0, %.lr.ph588 ], [ %n.vec1033, %middle.block1028 ]
  %.11401586.ph = phi i64 [ %79, %vector.memcheck1026 ], [ %79, %.lr.ph588 ], [ %ind.end1035, %middle.block1028 ]
  br label %scalar.ph1029

scalar.ph1029:                                    ; preds = %scalar.ph1029.preheader, %scalar.ph1029
  %.22587 = phi i64 [ %512, %scalar.ph1029 ], [ %.22587.ph, %scalar.ph1029.preheader ]
  %.11401586 = phi i64 [ %513, %scalar.ph1029 ], [ %.11401586.ph, %scalar.ph1029.preheader ]
  %510 = getelementptr inbounds double, ptr %3, i64 %.22587
  %511 = load double, ptr %510, align 8, !tbaa !9
  %gep592 = getelementptr double, ptr %invariant.gep591, i64 %.11401586
  store double %511, ptr %gep592, align 8, !tbaa !9
  %512 = add nuw nsw i64 %.22587, 1
  %513 = add nuw nsw i64 %.11401586, 1
  %.not426.not = icmp slt i64 %513, %60
  br i1 %.not426.not, label %scalar.ph1029, label %._crit_edge589, !llvm.loop !61

._crit_edge589:                                   ; preds = %scalar.ph1029, %middle.block1028
  %.lcssa776 = phi i64 [ %n.vec1033, %middle.block1028 ], [ %512, %scalar.ph1029 ]
  %.not427604 = icmp ult i64 %60, 4
  br i1 %.not427604, label %.preheader473.us.preheader, label %.preheader475.lr.ph

.preheader475.lr.ph:                              ; preds = %._crit_edge589
  %514 = add nuw nsw i64 %79, 1
  %515 = add nsw i64 %79, -2
  %516 = mul i64 %51, %514
  %517 = add i64 %516, %79
  %518 = shl i64 %517, 3
  %519 = add i64 %518, %25
  %520 = shl i64 %51, 3
  %521 = add i64 %520, 8
  %522 = xor i64 %79, -1
  %523 = add nsw i64 %60, %522
  %ident.check1065.not = icmp eq i64 %51, 1
  %invariant.gep1376 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1378 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1380 = getelementptr i8, ptr %3, i64 24
  br label %.preheader475

.preheader475:                                    ; preds = %.preheader475.lr.ph, %._crit_edge600
  %indvars.iv715 = phi i64 [ 1, %.preheader475.lr.ph ], [ %indvars.iv.next716, %._crit_edge600 ]
  %.23606 = phi i64 [ %.lcssa776, %.preheader475.lr.ph ], [ %.25.lcssa, %._crit_edge600 ]
  %.8386605 = phi i64 [ 0, %.preheader475.lr.ph ], [ %582, %._crit_edge600 ]
  %524 = sub i64 %523, %.8386605
  %525 = mul i64 %521, %.8386605
  %526 = getelementptr double, ptr %4, i64 %.8386605
  %min.iters.check1070 = icmp ugt i64 %indvars.iv715, 3
  %or.cond1246 = select i1 %min.iters.check1070, i1 %ident.check1065.not, i1 false
  br i1 %or.cond1246, label %vector.memcheck1066, label %scalar.ph1069.preheader

vector.memcheck1066:                              ; preds = %.preheader475
  %527 = shl i64 %.8386605, 3
  %528 = shl i64 %.23606, 3
  %529 = add i64 %527, %23
  %530 = add i64 %528, %22
  %531 = sub i64 %529, %530
  %diff.check1067 = icmp ult i64 %531, 32
  br i1 %diff.check1067, label %scalar.ph1069.preheader, label %vector.ph1071

vector.ph1071:                                    ; preds = %vector.memcheck1066
  %n.vec1073 = and i64 %indvars.iv715, 9223372036854775804
  %ind.end1074 = add i64 %.23606, %n.vec1073
  %532 = getelementptr double, ptr %3, i64 %.23606
  br label %vector.body1077

vector.body1077:                                  ; preds = %vector.body1077, %vector.ph1071
  %index1078 = phi i64 [ 0, %vector.ph1071 ], [ %index.next1082, %vector.body1077 ]
  %533 = getelementptr double, ptr %532, i64 %index1078
  %534 = getelementptr inbounds i8, ptr %533, i64 16
  %wide.load1080 = load <2 x double>, ptr %533, align 8, !tbaa !9
  %wide.load1081 = load <2 x double>, ptr %534, align 8, !tbaa !9
  %535 = getelementptr double, ptr %526, i64 %index1078
  %536 = getelementptr i8, ptr %535, i64 16
  store <2 x double> %wide.load1080, ptr %535, align 8, !tbaa !9
  store <2 x double> %wide.load1081, ptr %536, align 8, !tbaa !9
  %index.next1082 = add nuw i64 %index1078, 4
  %537 = icmp eq i64 %index.next1082, %n.vec1073
  br i1 %537, label %middle.block1068, label %vector.body1077, !llvm.loop !62

middle.block1068:                                 ; preds = %vector.body1077
  %cmp.n1083 = icmp eq i64 %indvars.iv715, %n.vec1073
  %ind.escape1084 = add nsw i64 %n.vec1073, -1
  br i1 %cmp.n1083, label %.loopexit1234, label %scalar.ph1069.preheader

scalar.ph1069.preheader:                          ; preds = %middle.block1068, %vector.memcheck1066, %.preheader475
  %.24594.ph = phi i64 [ %.23606, %vector.memcheck1066 ], [ %.23606, %.preheader475 ], [ %ind.end1074, %middle.block1068 ]
  %.12402593.ph = phi i64 [ 0, %vector.memcheck1066 ], [ 0, %.preheader475 ], [ %n.vec1073, %middle.block1068 ]
  %538 = sub nsw i64 %.8386605, %.12402593.ph
  %xtraiter1293 = and i64 %indvars.iv715, 3
  %lcmp.mod1294.not = icmp eq i64 %xtraiter1293, 0
  br i1 %lcmp.mod1294.not, label %scalar.ph1069.prol.loopexit, label %scalar.ph1069.prol

scalar.ph1069.prol:                               ; preds = %scalar.ph1069.preheader, %scalar.ph1069.prol
  %.24594.prol = phi i64 [ %543, %scalar.ph1069.prol ], [ %.24594.ph, %scalar.ph1069.preheader ]
  %.12402593.prol = phi i64 [ %544, %scalar.ph1069.prol ], [ %.12402593.ph, %scalar.ph1069.preheader ]
  %prol.iter1295 = phi i64 [ %prol.iter1295.next, %scalar.ph1069.prol ], [ 0, %scalar.ph1069.preheader ]
  %539 = getelementptr inbounds double, ptr %3, i64 %.24594.prol
  %540 = load double, ptr %539, align 8, !tbaa !9
  %541 = mul nsw i64 %.12402593.prol, %51
  %542 = getelementptr double, ptr %526, i64 %541
  store double %540, ptr %542, align 8, !tbaa !9
  %543 = add nsw i64 %.24594.prol, 1
  %544 = add nuw nsw i64 %.12402593.prol, 1
  %prol.iter1295.next = add i64 %prol.iter1295, 1
  %prol.iter1295.cmp.not = icmp eq i64 %prol.iter1295.next, %xtraiter1293
  br i1 %prol.iter1295.cmp.not, label %scalar.ph1069.prol.loopexit, label %scalar.ph1069.prol, !llvm.loop !63

scalar.ph1069.prol.loopexit:                      ; preds = %scalar.ph1069.prol, %scalar.ph1069.preheader
  %.12402593.lcssa1261.unr = phi i64 [ poison, %scalar.ph1069.preheader ], [ %.12402593.prol, %scalar.ph1069.prol ]
  %.lcssa1260.unr = phi i64 [ poison, %scalar.ph1069.preheader ], [ %543, %scalar.ph1069.prol ]
  %.24594.unr = phi i64 [ %.24594.ph, %scalar.ph1069.preheader ], [ %543, %scalar.ph1069.prol ]
  %.12402593.unr = phi i64 [ %.12402593.ph, %scalar.ph1069.preheader ], [ %544, %scalar.ph1069.prol ]
  %545 = icmp ult i64 %538, 3
  br i1 %545, label %.loopexit1234, label %scalar.ph1069

scalar.ph1069:                                    ; preds = %scalar.ph1069.prol.loopexit, %scalar.ph1069
  %.24594 = phi i64 [ %562, %scalar.ph1069 ], [ %.24594.unr, %scalar.ph1069.prol.loopexit ]
  %.12402593 = phi i64 [ %563, %scalar.ph1069 ], [ %.12402593.unr, %scalar.ph1069.prol.loopexit ]
  %546 = getelementptr inbounds double, ptr %3, i64 %.24594
  %547 = load double, ptr %546, align 8, !tbaa !9
  %548 = mul nsw i64 %.12402593, %51
  %549 = getelementptr double, ptr %526, i64 %548
  store double %547, ptr %549, align 8, !tbaa !9
  %550 = add nuw nsw i64 %.12402593, 1
  %gep1377 = getelementptr double, ptr %invariant.gep1376, i64 %.24594
  %551 = load double, ptr %gep1377, align 8, !tbaa !9
  %552 = mul nsw i64 %550, %51
  %553 = getelementptr double, ptr %526, i64 %552
  store double %551, ptr %553, align 8, !tbaa !9
  %554 = add nuw nsw i64 %.12402593, 2
  %gep1379 = getelementptr double, ptr %invariant.gep1378, i64 %.24594
  %555 = load double, ptr %gep1379, align 8, !tbaa !9
  %556 = mul nsw i64 %554, %51
  %557 = getelementptr double, ptr %526, i64 %556
  store double %555, ptr %557, align 8, !tbaa !9
  %558 = add nuw nsw i64 %.12402593, 3
  %gep1381 = getelementptr double, ptr %invariant.gep1380, i64 %.24594
  %559 = load double, ptr %gep1381, align 8, !tbaa !9
  %560 = mul nsw i64 %558, %51
  %561 = getelementptr double, ptr %526, i64 %560
  store double %559, ptr %561, align 8, !tbaa !9
  %562 = add nsw i64 %.24594, 4
  %563 = add nuw nsw i64 %.12402593, 4
  %exitcond717.not.3 = icmp eq i64 %563, %indvars.iv715
  br i1 %exitcond717.not.3, label %.loopexit1234, label %scalar.ph1069, !llvm.loop !64

.loopexit1234:                                    ; preds = %scalar.ph1069.prol.loopexit, %scalar.ph1069, %middle.block1068
  %.12402593.lcssa = phi i64 [ %ind.escape1084, %middle.block1068 ], [ %.12402593.lcssa1261.unr, %scalar.ph1069.prol.loopexit ], [ %558, %scalar.ph1069 ]
  %.lcssa774 = phi i64 [ %ind.end1074, %middle.block1068 ], [ %.lcssa1260.unr, %scalar.ph1069.prol.loopexit ], [ %562, %scalar.ph1069 ]
  %564 = add nuw nsw i64 %514, %.8386605
  %.not431.not595 = icmp slt i64 %564, %60
  br i1 %.not431.not595, label %.lr.ph599, label %._crit_edge600

.lr.ph599:                                        ; preds = %.loopexit1234
  %565 = mul nsw i64 %564, %51
  %invariant.gep602 = getelementptr double, ptr %4, i64 %565
  %min.iters.check1048 = icmp ult i64 %524, 6
  br i1 %min.iters.check1048, label %scalar.ph1047.preheader, label %vector.memcheck1044

vector.memcheck1044:                              ; preds = %.lr.ph599
  %566 = add i64 %519, %525
  %567 = add i64 %.23606, %.12402593.lcssa
  %568 = shl i64 %567, 3
  %569 = add i64 %568, %24
  %570 = sub i64 %566, %569
  %diff.check1045 = icmp ult i64 %570, 32
  br i1 %diff.check1045, label %scalar.ph1047.preheader, label %vector.ph1049

vector.ph1049:                                    ; preds = %vector.memcheck1044
  %n.vec1051 = and i64 %524, -4
  %ind.end1052 = add i64 %.lcssa774, %n.vec1051
  %ind.end1054 = add i64 %564, %n.vec1051
  %571 = getelementptr double, ptr %3, i64 %.lcssa774
  %572 = getelementptr double, ptr %invariant.gep602, i64 %564
  br label %vector.body1056

vector.body1056:                                  ; preds = %vector.body1056, %vector.ph1049
  %index1057 = phi i64 [ 0, %vector.ph1049 ], [ %index.next1062, %vector.body1056 ]
  %573 = getelementptr double, ptr %571, i64 %index1057
  %574 = getelementptr inbounds i8, ptr %573, i64 16
  %wide.load1060 = load <2 x double>, ptr %573, align 8, !tbaa !9
  %wide.load1061 = load <2 x double>, ptr %574, align 8, !tbaa !9
  %575 = getelementptr double, ptr %572, i64 %index1057
  %576 = getelementptr i8, ptr %575, i64 16
  store <2 x double> %wide.load1060, ptr %575, align 8, !tbaa !9
  store <2 x double> %wide.load1061, ptr %576, align 8, !tbaa !9
  %index.next1062 = add nuw i64 %index1057, 4
  %577 = icmp eq i64 %index.next1062, %n.vec1051
  br i1 %577, label %middle.block1046, label %vector.body1056, !llvm.loop !65

middle.block1046:                                 ; preds = %vector.body1056
  %cmp.n1063 = icmp eq i64 %524, %n.vec1051
  br i1 %cmp.n1063, label %._crit_edge600, label %scalar.ph1047.preheader

scalar.ph1047.preheader:                          ; preds = %middle.block1046, %vector.memcheck1044, %.lr.ph599
  %.25597.ph = phi i64 [ %.lcssa774, %vector.memcheck1044 ], [ %.lcssa774, %.lr.ph599 ], [ %ind.end1052, %middle.block1046 ]
  %.13403596.ph = phi i64 [ %564, %vector.memcheck1044 ], [ %564, %.lr.ph599 ], [ %ind.end1054, %middle.block1046 ]
  br label %scalar.ph1047

scalar.ph1047:                                    ; preds = %scalar.ph1047.preheader, %scalar.ph1047
  %.25597 = phi i64 [ %580, %scalar.ph1047 ], [ %.25597.ph, %scalar.ph1047.preheader ]
  %.13403596 = phi i64 [ %581, %scalar.ph1047 ], [ %.13403596.ph, %scalar.ph1047.preheader ]
  %578 = getelementptr inbounds double, ptr %3, i64 %.25597
  %579 = load double, ptr %578, align 8, !tbaa !9
  %gep603 = getelementptr double, ptr %invariant.gep602, i64 %.13403596
  store double %579, ptr %gep603, align 8, !tbaa !9
  %580 = add nsw i64 %.25597, 1
  %581 = add nuw nsw i64 %.13403596, 1
  %.not431.not = icmp slt i64 %581, %60
  br i1 %.not431.not, label %scalar.ph1047, label %._crit_edge600, !llvm.loop !66

._crit_edge600:                                   ; preds = %scalar.ph1047, %middle.block1046, %.loopexit1234
  %.25.lcssa = phi i64 [ %.lcssa774, %.loopexit1234 ], [ %ind.end1052, %middle.block1046 ], [ %580, %scalar.ph1047 ]
  %582 = add nuw nsw i64 %.8386605, 1
  %indvars.iv.next716 = add nuw nsw i64 %indvars.iv715, 1
  %exitcond719.not = icmp eq i64 %.8386605, %515
  br i1 %exitcond719.not, label %.preheader473.us.preheader, label %.preheader475, !llvm.loop !67

.preheader473.us.preheader:                       ; preds = %._crit_edge600, %._crit_edge589
  %.23.lcssa = phi i64 [ %.lcssa776, %._crit_edge589 ], [ %.25.lcssa, %._crit_edge600 ]
  %583 = add nsw i64 %79, -1
  %umax = tail call i64 @llvm.umax.i64(i64 %79, i64 1)
  %584 = shl i64 %79, 3
  %585 = add i64 %584, %21
  %586 = add i64 %585, -8
  %min.iters.check1093 = icmp ugt i64 %60, 7
  %ident.check1086.not = icmp eq i64 %51, 1
  %or.cond1247 = select i1 %min.iters.check1093, i1 %ident.check1086.not, i1 false
  %n.vec1096 = and i64 %umax, 4611686018427387900
  %cmp.n1106 = icmp eq i64 %79, %n.vec1096
  %xtraiter1296 = and i64 %umax, 3
  %lcmp.mod1297.not = icmp eq i64 %xtraiter1296, 0
  %invariant.gep1382 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1384 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1386 = getelementptr i8, ptr %3, i64 24
  br label %.preheader473.us

.preheader473.us:                                 ; preds = %.preheader473.us.preheader, %._crit_edge613.us
  %indvar1088 = phi i64 [ 0, %.preheader473.us.preheader ], [ %indvar.next1089, %._crit_edge613.us ]
  %.26617.us = phi i64 [ %.23.lcssa, %.preheader473.us.preheader ], [ %.lcssa773, %._crit_edge613.us ]
  %.9387616.us = phi i64 [ %583, %.preheader473.us.preheader ], [ %625, %._crit_edge613.us ]
  %587 = getelementptr double, ptr %4, i64 %.9387616.us
  br i1 %or.cond1247, label %vector.memcheck1087, label %scalar.ph1092.preheader

vector.memcheck1087:                              ; preds = %.preheader473.us
  %588 = shl i64 %indvar1088, 3
  %589 = shl i64 %.26617.us, 3
  %590 = add i64 %586, %588
  %591 = add i64 %589, %20
  %592 = sub i64 %590, %591
  %diff.check1090 = icmp ult i64 %592, 32
  br i1 %diff.check1090, label %scalar.ph1092.preheader, label %vector.ph1094

vector.ph1094:                                    ; preds = %vector.memcheck1087
  %ind.end1097 = add i64 %.26617.us, %n.vec1096
  %593 = getelementptr double, ptr %3, i64 %.26617.us
  br label %vector.body1100

vector.body1100:                                  ; preds = %vector.body1100, %vector.ph1094
  %index1101 = phi i64 [ 0, %vector.ph1094 ], [ %index.next1105, %vector.body1100 ]
  %594 = getelementptr double, ptr %593, i64 %index1101
  %595 = getelementptr inbounds i8, ptr %594, i64 16
  %wide.load1103 = load <2 x double>, ptr %594, align 8, !tbaa !9
  %wide.load1104 = load <2 x double>, ptr %595, align 8, !tbaa !9
  %596 = getelementptr double, ptr %587, i64 %index1101
  %597 = getelementptr i8, ptr %596, i64 16
  store <2 x double> %wide.load1103, ptr %596, align 8, !tbaa !9
  store <2 x double> %wide.load1104, ptr %597, align 8, !tbaa !9
  %index.next1105 = add nuw i64 %index1101, 4
  %598 = icmp eq i64 %index.next1105, %n.vec1096
  br i1 %598, label %middle.block1091, label %vector.body1100, !llvm.loop !68

middle.block1091:                                 ; preds = %vector.body1100
  br i1 %cmp.n1106, label %._crit_edge613.us, label %scalar.ph1092.preheader

scalar.ph1092.preheader:                          ; preds = %middle.block1091, %vector.memcheck1087, %.preheader473.us
  %.27611.us.ph = phi i64 [ %.26617.us, %vector.memcheck1087 ], [ %.26617.us, %.preheader473.us ], [ %ind.end1097, %middle.block1091 ]
  %.14404610.us.ph = phi i64 [ 0, %vector.memcheck1087 ], [ 0, %.preheader473.us ], [ %n.vec1096, %middle.block1091 ]
  br i1 %lcmp.mod1297.not, label %scalar.ph1092.prol.loopexit, label %scalar.ph1092.prol

scalar.ph1092.prol:                               ; preds = %scalar.ph1092.preheader, %scalar.ph1092.prol
  %.27611.us.prol = phi i64 [ %603, %scalar.ph1092.prol ], [ %.27611.us.ph, %scalar.ph1092.preheader ]
  %.14404610.us.prol = phi i64 [ %604, %scalar.ph1092.prol ], [ %.14404610.us.ph, %scalar.ph1092.preheader ]
  %prol.iter1298 = phi i64 [ %prol.iter1298.next, %scalar.ph1092.prol ], [ 0, %scalar.ph1092.preheader ]
  %599 = getelementptr inbounds double, ptr %3, i64 %.27611.us.prol
  %600 = load double, ptr %599, align 8, !tbaa !9
  %601 = mul nsw i64 %.14404610.us.prol, %51
  %602 = getelementptr double, ptr %587, i64 %601
  store double %600, ptr %602, align 8, !tbaa !9
  %603 = add nsw i64 %.27611.us.prol, 1
  %604 = add nuw nsw i64 %.14404610.us.prol, 1
  %prol.iter1298.next = add i64 %prol.iter1298, 1
  %prol.iter1298.cmp.not = icmp eq i64 %prol.iter1298.next, %xtraiter1296
  br i1 %prol.iter1298.cmp.not, label %scalar.ph1092.prol.loopexit, label %scalar.ph1092.prol, !llvm.loop !69

scalar.ph1092.prol.loopexit:                      ; preds = %scalar.ph1092.prol, %scalar.ph1092.preheader
  %.lcssa1259.unr = phi i64 [ poison, %scalar.ph1092.preheader ], [ %603, %scalar.ph1092.prol ]
  %.27611.us.unr = phi i64 [ %.27611.us.ph, %scalar.ph1092.preheader ], [ %603, %scalar.ph1092.prol ]
  %.14404610.us.unr = phi i64 [ %.14404610.us.ph, %scalar.ph1092.preheader ], [ %604, %scalar.ph1092.prol ]
  %605 = sub nsw i64 %.14404610.us.ph, %umax
  %606 = icmp ugt i64 %605, -4
  br i1 %606, label %._crit_edge613.us, label %scalar.ph1092

scalar.ph1092:                                    ; preds = %scalar.ph1092.prol.loopexit, %scalar.ph1092
  %.27611.us = phi i64 [ %623, %scalar.ph1092 ], [ %.27611.us.unr, %scalar.ph1092.prol.loopexit ]
  %.14404610.us = phi i64 [ %624, %scalar.ph1092 ], [ %.14404610.us.unr, %scalar.ph1092.prol.loopexit ]
  %607 = getelementptr inbounds double, ptr %3, i64 %.27611.us
  %608 = load double, ptr %607, align 8, !tbaa !9
  %609 = mul nsw i64 %.14404610.us, %51
  %610 = getelementptr double, ptr %587, i64 %609
  store double %608, ptr %610, align 8, !tbaa !9
  %611 = add nuw nsw i64 %.14404610.us, 1
  %gep1383 = getelementptr double, ptr %invariant.gep1382, i64 %.27611.us
  %612 = load double, ptr %gep1383, align 8, !tbaa !9
  %613 = mul nsw i64 %611, %51
  %614 = getelementptr double, ptr %587, i64 %613
  store double %612, ptr %614, align 8, !tbaa !9
  %615 = add nuw nsw i64 %.14404610.us, 2
  %gep1385 = getelementptr double, ptr %invariant.gep1384, i64 %.27611.us
  %616 = load double, ptr %gep1385, align 8, !tbaa !9
  %617 = mul nsw i64 %615, %51
  %618 = getelementptr double, ptr %587, i64 %617
  store double %616, ptr %618, align 8, !tbaa !9
  %619 = add nuw nsw i64 %.14404610.us, 3
  %gep1387 = getelementptr double, ptr %invariant.gep1386, i64 %.27611.us
  %620 = load double, ptr %gep1387, align 8, !tbaa !9
  %621 = mul nsw i64 %619, %51
  %622 = getelementptr double, ptr %587, i64 %621
  store double %620, ptr %622, align 8, !tbaa !9
  %623 = add nsw i64 %.27611.us, 4
  %624 = add nuw nsw i64 %.14404610.us, 4
  %exitcond720.not.3 = icmp eq i64 %79, %624
  br i1 %exitcond720.not.3, label %._crit_edge613.us, label %scalar.ph1092, !llvm.loop !70

._crit_edge613.us:                                ; preds = %scalar.ph1092.prol.loopexit, %scalar.ph1092, %middle.block1091
  %.lcssa773 = phi i64 [ %ind.end1097, %middle.block1091 ], [ %.lcssa1259.unr, %scalar.ph1092.prol.loopexit ], [ %623, %scalar.ph1092 ]
  %625 = add nsw i64 %.9387616.us, 1
  %.not428.not.us = icmp slt i64 %625, %60
  %indvar.next1089 = add i64 %indvar1088, 1
  br i1 %.not428.not.us, label %.preheader473.us, label %.loopexit, !llvm.loop !71

.preheader470.us:                                 ; preds = %.preheader470.us.preheader, %._crit_edge638.us
  %.28641.us = phi i64 [ %.lcssa770, %._crit_edge638.us ], [ 0, %.preheader470.us.preheader ]
  %.10388640.us = phi i64 [ %646, %._crit_edge638.us ], [ 0, %.preheader470.us.preheader ]
  %626 = getelementptr double, ptr %4, i64 %.10388640.us
  br i1 %or.cond1248, label %vector.memcheck1152, label %scalar.ph1156.preheader

vector.memcheck1152:                              ; preds = %.preheader470.us
  %627 = shl i64 %.28641.us, 3
  %628 = add i64 %79, %.10388640.us
  %629 = shl i64 %628, 3
  %630 = add i64 %629, %15
  %631 = add i64 %627, %14
  %632 = sub i64 %630, %631
  %diff.check1153 = icmp ult i64 %632, 32
  br i1 %diff.check1153, label %scalar.ph1156.preheader, label %vector.ph1158

vector.ph1158:                                    ; preds = %vector.memcheck1152
  %ind.end1161 = add i64 %.28641.us, %n.vec1160
  %633 = getelementptr double, ptr %3, i64 %.28641.us
  %634 = getelementptr double, ptr %626, i64 %79
  br label %vector.body1165

vector.body1165:                                  ; preds = %vector.body1165, %vector.ph1158
  %index1166 = phi i64 [ 0, %vector.ph1158 ], [ %index.next1171, %vector.body1165 ]
  %635 = getelementptr double, ptr %633, i64 %index1166
  %636 = getelementptr inbounds i8, ptr %635, i64 16
  %wide.load1169 = load <2 x double>, ptr %635, align 8, !tbaa !9
  %wide.load1170 = load <2 x double>, ptr %636, align 8, !tbaa !9
  %637 = getelementptr double, ptr %634, i64 %index1166
  %638 = getelementptr i8, ptr %637, i64 16
  store <2 x double> %wide.load1169, ptr %637, align 8, !tbaa !9
  store <2 x double> %wide.load1170, ptr %638, align 8, !tbaa !9
  %index.next1171 = add nuw i64 %index1166, 4
  %639 = icmp eq i64 %index.next1171, %n.vec1160
  br i1 %639, label %middle.block1155, label %vector.body1165, !llvm.loop !72

middle.block1155:                                 ; preds = %vector.body1165
  br i1 %cmp.n1172, label %._crit_edge638.us, label %scalar.ph1156.preheader

scalar.ph1156.preheader:                          ; preds = %middle.block1155, %vector.memcheck1152, %.preheader470.us
  %.29636.us.ph = phi i64 [ %.28641.us, %vector.memcheck1152 ], [ %.28641.us, %.preheader470.us ], [ %ind.end1161, %middle.block1155 ]
  %.15405635.us.ph = phi i64 [ %79, %vector.memcheck1152 ], [ %79, %.preheader470.us ], [ %ind.end1163, %middle.block1155 ]
  br label %scalar.ph1156

scalar.ph1156:                                    ; preds = %scalar.ph1156.preheader, %scalar.ph1156
  %.29636.us = phi i64 [ %644, %scalar.ph1156 ], [ %.29636.us.ph, %scalar.ph1156.preheader ]
  %.15405635.us = phi i64 [ %645, %scalar.ph1156 ], [ %.15405635.us.ph, %scalar.ph1156.preheader ]
  %640 = getelementptr inbounds double, ptr %3, i64 %.29636.us
  %641 = load double, ptr %640, align 8, !tbaa !9
  %642 = mul nsw i64 %.15405635.us, %51
  %643 = getelementptr double, ptr %626, i64 %642
  store double %641, ptr %643, align 8, !tbaa !9
  %644 = add nsw i64 %.29636.us, 1
  %645 = add nuw nsw i64 %.15405635.us, 1
  %.not425.not.us = icmp slt i64 %645, %60
  br i1 %.not425.not.us, label %scalar.ph1156, label %._crit_edge638.us, !llvm.loop !73

._crit_edge638.us:                                ; preds = %scalar.ph1156, %middle.block1155
  %.lcssa770 = phi i64 [ %ind.end1161, %middle.block1155 ], [ %644, %scalar.ph1156 ]
  %646 = add nuw i64 %.10388640.us, 1
  %exitcond722.not = icmp eq i64 %.10388640.us, %79
  br i1 %exitcond722.not, label %.split643.us, label %.preheader470.us, !llvm.loop !74

.split643.us:                                     ; preds = %._crit_edge638.us
  %.not421656 = icmp ult i64 %60, 4
  br i1 %.not421656, label %._crit_edge659, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.split643.us
  %647 = add nuw nsw i64 %79, 1
  %648 = add nsw i64 %79, -1
  %649 = shl i64 %79, 4
  %650 = add i64 %649, %13
  %651 = add i64 %650, 8
  %652 = xor i64 %79, -1
  %653 = add nsw i64 %60, %652
  %654 = shl i64 %51, 3
  %invariant.gep1388 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1392 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1396 = getelementptr i8, ptr %3, i64 24
  %ident.check1174.not = icmp eq i64 %51, 1
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge654
  %indvars.iv724 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next725, %._crit_edge654 ]
  %.30658 = phi i64 [ %.lcssa770, %.preheader.lr.ph ], [ %.32.lcssa, %._crit_edge654 ]
  %.11389657 = phi i64 [ 0, %.preheader.lr.ph ], [ %703, %._crit_edge654 ]
  %655 = sub i64 %653, %.11389657
  %656 = shl i64 %.11389657, 4
  %657 = mul nsw i64 %.11389657, %51
  %invariant.gep645 = getelementptr double, ptr %4, i64 %657
  %min.iters.check1199 = icmp ult i64 %indvars.iv724, 4
  br i1 %min.iters.check1199, label %scalar.ph1198.preheader, label %vector.memcheck1195

vector.memcheck1195:                              ; preds = %.preheader
  %658 = mul i64 %654, %.11389657
  %659 = shl i64 %.30658, 3
  %660 = add i64 %658, %11
  %661 = add i64 %659, %10
  %662 = sub i64 %660, %661
  %diff.check1196 = icmp ult i64 %662, 32
  br i1 %diff.check1196, label %scalar.ph1198.preheader, label %vector.ph1200

vector.ph1200:                                    ; preds = %vector.memcheck1195
  %n.vec1202 = and i64 %indvars.iv724, 9223372036854775804
  %ind.end1203 = add i64 %.30658, %n.vec1202
  %663 = getelementptr double, ptr %3, i64 %.30658
  br label %vector.body1206

vector.body1206:                                  ; preds = %vector.body1206, %vector.ph1200
  %index1207 = phi i64 [ 0, %vector.ph1200 ], [ %index.next1211, %vector.body1206 ]
  %664 = getelementptr double, ptr %663, i64 %index1207
  %665 = getelementptr inbounds i8, ptr %664, i64 16
  %wide.load1209 = load <2 x double>, ptr %664, align 8, !tbaa !9
  %wide.load1210 = load <2 x double>, ptr %665, align 8, !tbaa !9
  %666 = getelementptr double, ptr %invariant.gep645, i64 %index1207
  %667 = getelementptr i8, ptr %666, i64 16
  store <2 x double> %wide.load1209, ptr %666, align 8, !tbaa !9
  store <2 x double> %wide.load1210, ptr %667, align 8, !tbaa !9
  %index.next1211 = add nuw i64 %index1207, 4
  %668 = icmp eq i64 %index.next1211, %n.vec1202
  br i1 %668, label %middle.block1197, label %vector.body1206, !llvm.loop !75

middle.block1197:                                 ; preds = %vector.body1206
  %cmp.n1212 = icmp eq i64 %indvars.iv724, %n.vec1202
  %ind.escape1213 = add nsw i64 %n.vec1202, -1
  br i1 %cmp.n1212, label %.loopexit1232, label %scalar.ph1198.preheader

scalar.ph1198.preheader:                          ; preds = %middle.block1197, %vector.memcheck1195, %.preheader
  %.31648.ph = phi i64 [ %.30658, %vector.memcheck1195 ], [ %.30658, %.preheader ], [ %ind.end1203, %middle.block1197 ]
  %.16406647.ph = phi i64 [ 0, %vector.memcheck1195 ], [ 0, %.preheader ], [ %n.vec1202, %middle.block1197 ]
  %669 = sub nsw i64 %.11389657, %.16406647.ph
  %xtraiter1299 = and i64 %indvars.iv724, 3
  %lcmp.mod1300.not = icmp eq i64 %xtraiter1299, 0
  br i1 %lcmp.mod1300.not, label %scalar.ph1198.prol.loopexit, label %scalar.ph1198.prol

scalar.ph1198.prol:                               ; preds = %scalar.ph1198.preheader, %scalar.ph1198.prol
  %.31648.prol = phi i64 [ %672, %scalar.ph1198.prol ], [ %.31648.ph, %scalar.ph1198.preheader ]
  %.16406647.prol = phi i64 [ %673, %scalar.ph1198.prol ], [ %.16406647.ph, %scalar.ph1198.preheader ]
  %prol.iter1301 = phi i64 [ %prol.iter1301.next, %scalar.ph1198.prol ], [ 0, %scalar.ph1198.preheader ]
  %670 = getelementptr inbounds double, ptr %3, i64 %.31648.prol
  %671 = load double, ptr %670, align 8, !tbaa !9
  %gep646.prol = getelementptr double, ptr %invariant.gep645, i64 %.16406647.prol
  store double %671, ptr %gep646.prol, align 8, !tbaa !9
  %672 = add nsw i64 %.31648.prol, 1
  %673 = add nuw nsw i64 %.16406647.prol, 1
  %prol.iter1301.next = add i64 %prol.iter1301, 1
  %prol.iter1301.cmp.not = icmp eq i64 %prol.iter1301.next, %xtraiter1299
  br i1 %prol.iter1301.cmp.not, label %scalar.ph1198.prol.loopexit, label %scalar.ph1198.prol, !llvm.loop !76

scalar.ph1198.prol.loopexit:                      ; preds = %scalar.ph1198.prol, %scalar.ph1198.preheader
  %.16406647.lcssa1251.unr = phi i64 [ poison, %scalar.ph1198.preheader ], [ %.16406647.prol, %scalar.ph1198.prol ]
  %.lcssa1250.unr = phi i64 [ poison, %scalar.ph1198.preheader ], [ %672, %scalar.ph1198.prol ]
  %.31648.unr = phi i64 [ %.31648.ph, %scalar.ph1198.preheader ], [ %672, %scalar.ph1198.prol ]
  %.16406647.unr = phi i64 [ %.16406647.ph, %scalar.ph1198.preheader ], [ %673, %scalar.ph1198.prol ]
  %674 = icmp ult i64 %669, 3
  br i1 %674, label %.loopexit1232, label %scalar.ph1198.preheader.new

scalar.ph1198.preheader.new:                      ; preds = %scalar.ph1198.prol.loopexit
  %invariant.gep1390 = getelementptr i8, ptr %invariant.gep645, i64 8
  %invariant.gep1394 = getelementptr i8, ptr %invariant.gep645, i64 16
  br label %scalar.ph1198

scalar.ph1198:                                    ; preds = %scalar.ph1198, %scalar.ph1198.preheader.new
  %.31648 = phi i64 [ %.31648.unr, %scalar.ph1198.preheader.new ], [ %681, %scalar.ph1198 ]
  %.16406647 = phi i64 [ %.16406647.unr, %scalar.ph1198.preheader.new ], [ %682, %scalar.ph1198 ]
  %675 = getelementptr inbounds double, ptr %3, i64 %.31648
  %676 = load double, ptr %675, align 8, !tbaa !9
  %gep646 = getelementptr double, ptr %invariant.gep645, i64 %.16406647
  store double %676, ptr %gep646, align 8, !tbaa !9
  %gep1389 = getelementptr double, ptr %invariant.gep1388, i64 %.31648
  %677 = load double, ptr %gep1389, align 8, !tbaa !9
  %gep1391 = getelementptr double, ptr %invariant.gep1390, i64 %.16406647
  store double %677, ptr %gep1391, align 8, !tbaa !9
  %gep1393 = getelementptr double, ptr %invariant.gep1392, i64 %.31648
  %678 = load double, ptr %gep1393, align 8, !tbaa !9
  %gep1395 = getelementptr double, ptr %invariant.gep1394, i64 %.16406647
  store double %678, ptr %gep1395, align 8, !tbaa !9
  %679 = add nuw nsw i64 %.16406647, 3
  %gep1397 = getelementptr double, ptr %invariant.gep1396, i64 %.31648
  %680 = load double, ptr %gep1397, align 8, !tbaa !9
  %gep646.3 = getelementptr double, ptr %invariant.gep645, i64 %679
  store double %680, ptr %gep646.3, align 8, !tbaa !9
  %681 = add nsw i64 %.31648, 4
  %682 = add nuw nsw i64 %.16406647, 4
  %exitcond726.not.3 = icmp eq i64 %682, %indvars.iv724
  br i1 %exitcond726.not.3, label %.loopexit1232, label %scalar.ph1198, !llvm.loop !77

.loopexit1232:                                    ; preds = %scalar.ph1198.prol.loopexit, %scalar.ph1198, %middle.block1197
  %.16406647.lcssa = phi i64 [ %ind.escape1213, %middle.block1197 ], [ %.16406647.lcssa1251.unr, %scalar.ph1198.prol.loopexit ], [ %679, %scalar.ph1198 ]
  %.lcssa = phi i64 [ %ind.end1203, %middle.block1197 ], [ %.lcssa1250.unr, %scalar.ph1198.prol.loopexit ], [ %681, %scalar.ph1198 ]
  %683 = add nuw nsw i64 %647, %.11389657
  %.not424.not649 = icmp slt i64 %683, %60
  br i1 %.not424.not649, label %.lr.ph653, label %._crit_edge654

.lr.ph653:                                        ; preds = %.loopexit1232
  %684 = getelementptr double, ptr %4, i64 %683
  %min.iters.check1179 = icmp ugt i64 %655, 7
  %or.cond1249 = select i1 %min.iters.check1179, i1 %ident.check1174.not, i1 false
  br i1 %or.cond1249, label %vector.memcheck1175, label %scalar.ph1178.preheader

vector.memcheck1175:                              ; preds = %.lr.ph653
  %685 = add i64 %651, %656
  %686 = add i64 %.30658, %.16406647.lcssa
  %687 = shl i64 %686, 3
  %688 = add i64 %687, %12
  %689 = sub i64 %685, %688
  %diff.check1176 = icmp ult i64 %689, 32
  br i1 %diff.check1176, label %scalar.ph1178.preheader, label %vector.ph1180

vector.ph1180:                                    ; preds = %vector.memcheck1175
  %n.vec1182 = and i64 %655, -4
  %ind.end1183 = add i64 %.lcssa, %n.vec1182
  %ind.end1185 = add i64 %683, %n.vec1182
  %690 = getelementptr double, ptr %3, i64 %.lcssa
  %691 = getelementptr double, ptr %684, i64 %683
  br label %vector.body1187

vector.body1187:                                  ; preds = %vector.body1187, %vector.ph1180
  %index1188 = phi i64 [ 0, %vector.ph1180 ], [ %index.next1193, %vector.body1187 ]
  %692 = getelementptr double, ptr %690, i64 %index1188
  %693 = getelementptr inbounds i8, ptr %692, i64 16
  %wide.load1191 = load <2 x double>, ptr %692, align 8, !tbaa !9
  %wide.load1192 = load <2 x double>, ptr %693, align 8, !tbaa !9
  %694 = getelementptr double, ptr %691, i64 %index1188
  %695 = getelementptr i8, ptr %694, i64 16
  store <2 x double> %wide.load1191, ptr %694, align 8, !tbaa !9
  store <2 x double> %wide.load1192, ptr %695, align 8, !tbaa !9
  %index.next1193 = add nuw i64 %index1188, 4
  %696 = icmp eq i64 %index.next1193, %n.vec1182
  br i1 %696, label %middle.block1177, label %vector.body1187, !llvm.loop !78

middle.block1177:                                 ; preds = %vector.body1187
  %cmp.n1194 = icmp eq i64 %655, %n.vec1182
  br i1 %cmp.n1194, label %._crit_edge654, label %scalar.ph1178.preheader

scalar.ph1178.preheader:                          ; preds = %middle.block1177, %vector.memcheck1175, %.lr.ph653
  %.32651.ph = phi i64 [ %.lcssa, %vector.memcheck1175 ], [ %.lcssa, %.lr.ph653 ], [ %ind.end1183, %middle.block1177 ]
  %.3376650.ph = phi i64 [ %683, %vector.memcheck1175 ], [ %683, %.lr.ph653 ], [ %ind.end1185, %middle.block1177 ]
  br label %scalar.ph1178

scalar.ph1178:                                    ; preds = %scalar.ph1178.preheader, %scalar.ph1178
  %.32651 = phi i64 [ %701, %scalar.ph1178 ], [ %.32651.ph, %scalar.ph1178.preheader ]
  %.3376650 = phi i64 [ %702, %scalar.ph1178 ], [ %.3376650.ph, %scalar.ph1178.preheader ]
  %697 = getelementptr inbounds double, ptr %3, i64 %.32651
  %698 = load double, ptr %697, align 8, !tbaa !9
  %699 = mul nsw i64 %.3376650, %51
  %700 = getelementptr double, ptr %684, i64 %699
  store double %698, ptr %700, align 8, !tbaa !9
  %701 = add nsw i64 %.32651, 1
  %702 = add nuw nsw i64 %.3376650, 1
  %.not424.not = icmp slt i64 %702, %60
  br i1 %.not424.not, label %scalar.ph1178, label %._crit_edge654, !llvm.loop !79

._crit_edge654:                                   ; preds = %scalar.ph1178, %middle.block1177, %.loopexit1232
  %.32.lcssa = phi i64 [ %.lcssa, %.loopexit1232 ], [ %ind.end1183, %middle.block1177 ], [ %701, %scalar.ph1178 ]
  %703 = add nuw nsw i64 %.11389657, 1
  %indvars.iv.next725 = add nuw nsw i64 %indvars.iv724, 1
  %exitcond727.not = icmp eq i64 %703, %648
  br i1 %exitcond727.not, label %._crit_edge659, label %.preheader, !llvm.loop !80

._crit_edge659:                                   ; preds = %._crit_edge654, %.split643.us
  %.11389.lcssa = phi i64 [ 0, %.split643.us ], [ %648, %._crit_edge654 ]
  %.30.lcssa = phi i64 [ %.lcssa770, %.split643.us ], [ %.32.lcssa, %._crit_edge654 ]
  %704 = mul nsw i64 %.11389.lcssa, %51
  %invariant.gep662 = getelementptr double, ptr %4, i64 %704
  %705 = add nsw i64 %.11389.lcssa, 1
  %min.iters.check1218 = icmp ult i64 %705, 16
  br i1 %min.iters.check1218, label %scalar.ph1217.preheader, label %vector.memcheck1214

vector.memcheck1214:                              ; preds = %._crit_edge659
  %706 = mul i64 %.11389.lcssa, %51
  %707 = shl i64 %706, 3
  %708 = add i64 %707, %9
  %709 = shl i64 %.30.lcssa, 3
  %710 = add i64 %709, %8
  %711 = sub i64 %708, %710
  %diff.check1215 = icmp ult i64 %711, 32
  br i1 %diff.check1215, label %scalar.ph1217.preheader, label %vector.ph1219

vector.ph1219:                                    ; preds = %vector.memcheck1214
  %n.vec1221 = and i64 %705, -4
  %ind.end1222 = add i64 %.30.lcssa, %n.vec1221
  %712 = getelementptr double, ptr %3, i64 %.30.lcssa
  br label %vector.body1225

vector.body1225:                                  ; preds = %vector.body1225, %vector.ph1219
  %index1226 = phi i64 [ 0, %vector.ph1219 ], [ %index.next1230, %vector.body1225 ]
  %713 = getelementptr double, ptr %712, i64 %index1226
  %714 = getelementptr inbounds i8, ptr %713, i64 16
  %wide.load1228 = load <2 x double>, ptr %713, align 8, !tbaa !9
  %wide.load1229 = load <2 x double>, ptr %714, align 8, !tbaa !9
  %715 = getelementptr double, ptr %invariant.gep662, i64 %index1226
  %716 = getelementptr i8, ptr %715, i64 16
  store <2 x double> %wide.load1228, ptr %715, align 8, !tbaa !9
  store <2 x double> %wide.load1229, ptr %716, align 8, !tbaa !9
  %index.next1230 = add nuw i64 %index1226, 4
  %717 = icmp eq i64 %index.next1230, %n.vec1221
  br i1 %717, label %middle.block1216, label %vector.body1225, !llvm.loop !81

middle.block1216:                                 ; preds = %vector.body1225
  %cmp.n1231 = icmp eq i64 %705, %n.vec1221
  br i1 %cmp.n1231, label %.loopexit, label %scalar.ph1217.preheader

scalar.ph1217.preheader:                          ; preds = %middle.block1216, %vector.memcheck1214, %._crit_edge659
  %.33665.ph = phi i64 [ %.30.lcssa, %vector.memcheck1214 ], [ %.30.lcssa, %._crit_edge659 ], [ %ind.end1222, %middle.block1216 ]
  %.17407664.ph = phi i64 [ 0, %vector.memcheck1214 ], [ 0, %._crit_edge659 ], [ %n.vec1221, %middle.block1216 ]
  %718 = add nsw i64 %.11389.lcssa, 1
  %719 = sub i64 %.11389.lcssa, %.17407664.ph
  %xtraiter1302 = and i64 %718, 3
  %lcmp.mod1303.not = icmp eq i64 %xtraiter1302, 0
  br i1 %lcmp.mod1303.not, label %scalar.ph1217.prol.loopexit, label %scalar.ph1217.prol

scalar.ph1217.prol:                               ; preds = %scalar.ph1217.preheader, %scalar.ph1217.prol
  %.33665.prol = phi i64 [ %722, %scalar.ph1217.prol ], [ %.33665.ph, %scalar.ph1217.preheader ]
  %.17407664.prol = phi i64 [ %723, %scalar.ph1217.prol ], [ %.17407664.ph, %scalar.ph1217.preheader ]
  %prol.iter1304 = phi i64 [ %prol.iter1304.next, %scalar.ph1217.prol ], [ 0, %scalar.ph1217.preheader ]
  %720 = getelementptr inbounds double, ptr %3, i64 %.33665.prol
  %721 = load double, ptr %720, align 8, !tbaa !9
  %gep663.prol = getelementptr double, ptr %invariant.gep662, i64 %.17407664.prol
  store double %721, ptr %gep663.prol, align 8, !tbaa !9
  %722 = add nsw i64 %.33665.prol, 1
  %723 = add nuw nsw i64 %.17407664.prol, 1
  %prol.iter1304.next = add i64 %prol.iter1304, 1
  %prol.iter1304.cmp.not = icmp eq i64 %prol.iter1304.next, %xtraiter1302
  br i1 %prol.iter1304.cmp.not, label %scalar.ph1217.prol.loopexit, label %scalar.ph1217.prol, !llvm.loop !82

scalar.ph1217.prol.loopexit:                      ; preds = %scalar.ph1217.prol, %scalar.ph1217.preheader
  %.33665.unr = phi i64 [ %.33665.ph, %scalar.ph1217.preheader ], [ %722, %scalar.ph1217.prol ]
  %.17407664.unr = phi i64 [ %.17407664.ph, %scalar.ph1217.preheader ], [ %723, %scalar.ph1217.prol ]
  %724 = icmp ult i64 %719, 3
  br i1 %724, label %.loopexit, label %scalar.ph1217.preheader.new

scalar.ph1217.preheader.new:                      ; preds = %scalar.ph1217.prol.loopexit
  %invariant.gep1398 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1400 = getelementptr i8, ptr %invariant.gep662, i64 8
  %invariant.gep1402 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1404 = getelementptr i8, ptr %invariant.gep662, i64 16
  %invariant.gep1406 = getelementptr i8, ptr %3, i64 24
  br label %scalar.ph1217

scalar.ph1217:                                    ; preds = %scalar.ph1217, %scalar.ph1217.preheader.new
  %.33665 = phi i64 [ %.33665.unr, %scalar.ph1217.preheader.new ], [ %731, %scalar.ph1217 ]
  %.17407664 = phi i64 [ %.17407664.unr, %scalar.ph1217.preheader.new ], [ %732, %scalar.ph1217 ]
  %725 = getelementptr inbounds double, ptr %3, i64 %.33665
  %726 = load double, ptr %725, align 8, !tbaa !9
  %gep663 = getelementptr double, ptr %invariant.gep662, i64 %.17407664
  store double %726, ptr %gep663, align 8, !tbaa !9
  %gep1399 = getelementptr double, ptr %invariant.gep1398, i64 %.33665
  %727 = load double, ptr %gep1399, align 8, !tbaa !9
  %gep1401 = getelementptr double, ptr %invariant.gep1400, i64 %.17407664
  store double %727, ptr %gep1401, align 8, !tbaa !9
  %gep1403 = getelementptr double, ptr %invariant.gep1402, i64 %.33665
  %728 = load double, ptr %gep1403, align 8, !tbaa !9
  %gep1405 = getelementptr double, ptr %invariant.gep1404, i64 %.17407664
  store double %728, ptr %gep1405, align 8, !tbaa !9
  %729 = add nuw nsw i64 %.17407664, 3
  %gep1407 = getelementptr double, ptr %invariant.gep1406, i64 %.33665
  %730 = load double, ptr %gep1407, align 8, !tbaa !9
  %gep663.3 = getelementptr double, ptr %invariant.gep662, i64 %729
  store double %730, ptr %gep663.3, align 8, !tbaa !9
  %731 = add nsw i64 %.33665, 4
  %732 = add nuw nsw i64 %.17407664, 4
  %exitcond728.not.3 = icmp eq i64 %729, %.11389.lcssa
  br i1 %exitcond728.not.3, label %.loopexit, label %scalar.ph1217, !llvm.loop !83

.loopexit:                                        ; preds = %._crit_edge, %._crit_edge514, %._crit_edge541.us, %._crit_edge566, %._crit_edge577, %._crit_edge613.us, %._crit_edge627, %scalar.ph1217.prol.loopexit, %scalar.ph1217, %middle.block1216, %._crit_edge535, %._crit_edge555, %71, %73, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #4
  ret i32 0
}

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

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

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

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

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

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

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 = { 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !12, !13, !14}
!16 = distinct !{!16, !12, !13}
!17 = distinct !{!17, !12, !13}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12, !13, !14}
!20 = distinct !{!20, !12, !13}
!21 = distinct !{!21, !12, !13, !14}
!22 = distinct !{!22, !12, !13}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12, !13, !14}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.unroll.disable"}
!27 = distinct !{!27, !12, !13}
!28 = distinct !{!28, !12, !13, !14}
!29 = distinct !{!29, !12, !13}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12, !13, !14}
!32 = distinct !{!32, !26}
!33 = distinct !{!33, !12, !13}
!34 = distinct !{!34, !12}
!35 = !{!36}
!36 = distinct !{!36, !37}
!37 = distinct !{!37, !"LVerDomain"}
!38 = !{!39}
!39 = distinct !{!39, !37}
!40 = distinct !{!40, !12, !13, !14}
!41 = distinct !{!41, !26}
!42 = distinct !{!42, !12, !13}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12, !13, !14}
!45 = distinct !{!45, !26}
!46 = distinct !{!46, !12, !13}
!47 = distinct !{!47, !12, !13, !14}
!48 = distinct !{!48, !12, !13}
!49 = distinct !{!49, !12}
!50 = distinct !{!50, !12, !13, !14}
!51 = distinct !{!51, !12, !13, !14}
!52 = distinct !{!52, !12, !13}
!53 = distinct !{!53, !12, !13}
!54 = distinct !{!54, !12}
!55 = distinct !{!55, !12, !13, !14}
!56 = distinct !{!56, !12, !13}
!57 = distinct !{!57, !12, !13, !14}
!58 = distinct !{!58, !12, !13}
!59 = distinct !{!59, !12}
!60 = distinct !{!60, !12, !13, !14}
!61 = distinct !{!61, !12, !13}
!62 = distinct !{!62, !12, !13, !14}
!63 = distinct !{!63, !26}
!64 = distinct !{!64, !12, !13}
!65 = distinct !{!65, !12, !13, !14}
!66 = distinct !{!66, !12, !13}
!67 = distinct !{!67, !12}
!68 = distinct !{!68, !12, !13, !14}
!69 = distinct !{!69, !26}
!70 = distinct !{!70, !12, !13}
!71 = distinct !{!71, !12}
!72 = distinct !{!72, !12, !13, !14}
!73 = distinct !{!73, !12, !13}
!74 = distinct !{!74, !12}
!75 = distinct !{!75, !12, !13, !14}
!76 = distinct !{!76, !26}
!77 = distinct !{!77, !12, !13}
!78 = distinct !{!78, !12, !13, !14}
!79 = distinct !{!79, !12, !13}
!80 = distinct !{!80, !12}
!81 = distinct !{!81, !12, !13, !14}
!82 = distinct !{!82, !26}
!83 = distinct !{!83, !12, !13}


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