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

; 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 @dtrttf_(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 %13, 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 %12, align 8, !tbaa !5
  %44 = sub i64 0, %42
  %45 = getelementptr inbounds double, ptr %43, i64 %44
  store ptr %45, ptr %12, 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 %13, 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 -5, 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 %14, 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 %25, align 8, !tbaa !9
  %198 = load i64, ptr %21, align 8, !tbaa !9
  %199 = add nsw i64 %197, %198
  %200 = load i64, ptr %20, align 8, !tbaa !9
  %201 = load i64, ptr %16, align 8, !tbaa !9
  %202 = mul nsw i64 %200, %201
  %203 = add nsw i64 %199, %202
  %204 = getelementptr inbounds double, ptr %196, i64 %203
  %205 = load double, ptr %204, align 8, !tbaa !11
  %206 = load ptr, ptr %14, align 8, !tbaa !5
  %207 = load i64, ptr %26, align 8, !tbaa !9
  %208 = getelementptr inbounds double, ptr %206, i64 %207
  store double %205, 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 %20, align 8, !tbaa !9
  %226 = load i64, ptr %21, align 8, !tbaa !9
  %227 = load i64, ptr %16, align 8, !tbaa !9
  %228 = mul nsw i64 %226, %227
  %229 = add nsw i64 %225, %228
  %230 = getelementptr inbounds double, ptr %224, i64 %229
  %231 = load double, ptr %230, align 8, !tbaa !11
  %232 = load ptr, ptr %14, align 8, !tbaa !5
  %233 = load i64, ptr %26, align 8, !tbaa !9
  %234 = getelementptr inbounds double, ptr %232, i64 %233
  store double %231, 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 %20, align 8, !tbaa !9
  %267 = load i64, ptr %21, align 8, !tbaa !9
  %268 = load i64, ptr %16, align 8, !tbaa !9
  %269 = mul nsw i64 %267, %268
  %270 = add nsw i64 %266, %269
  %271 = getelementptr inbounds double, ptr %265, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !11
  %273 = load ptr, ptr %14, align 8, !tbaa !5
  %274 = load i64, ptr %26, align 8, !tbaa !9
  %275 = getelementptr inbounds double, ptr %273, i64 %274
  store double %272, 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 %21, align 8, !tbaa !9
  %294 = load i64, ptr %24, align 8, !tbaa !9
  %295 = sub nsw i64 %293, %294
  %296 = load i64, ptr %23, align 8, !tbaa !9
  %297 = load i64, ptr %16, align 8, !tbaa !9
  %298 = mul nsw i64 %296, %297
  %299 = add nsw i64 %295, %298
  %300 = getelementptr inbounds double, ptr %292, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  %302 = load ptr, ptr %14, align 8, !tbaa !5
  %303 = load i64, ptr %26, align 8, !tbaa !9
  %304 = getelementptr inbounds double, ptr %302, i64 %303
  store double %301, 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 %21, align 8, !tbaa !9
  %338 = load i64, ptr %20, align 8, !tbaa !9
  %339 = load i64, ptr %16, align 8, !tbaa !9
  %340 = mul nsw i64 %338, %339
  %341 = add nsw i64 %337, %340
  %342 = getelementptr inbounds double, ptr %336, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !11
  %344 = load ptr, ptr %14, align 8, !tbaa !5
  %345 = load i64, ptr %26, align 8, !tbaa !9
  %346 = getelementptr inbounds double, ptr %344, i64 %345
  store double %343, 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 %20, align 8, !tbaa !9
  %366 = load i64, ptr %24, align 8, !tbaa !9
  %367 = load i64, ptr %21, align 8, !tbaa !9
  %368 = add nsw i64 %366, %367
  %369 = load i64, ptr %16, align 8, !tbaa !9
  %370 = mul nsw i64 %368, %369
  %371 = add nsw i64 %365, %370
  %372 = getelementptr inbounds double, ptr %364, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !11
  %374 = load ptr, ptr %14, align 8, !tbaa !5
  %375 = load i64, ptr %26, align 8, !tbaa !9
  %376 = getelementptr inbounds double, ptr %374, i64 %375
  store double %373, 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 %21, align 8, !tbaa !9
  %405 = load i64, ptr %20, align 8, !tbaa !9
  %406 = load i64, ptr %16, align 8, !tbaa !9
  %407 = mul nsw i64 %405, %406
  %408 = add nsw i64 %404, %407
  %409 = getelementptr inbounds double, ptr %403, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = load ptr, ptr %14, align 8, !tbaa !5
  %412 = load i64, ptr %26, align 8, !tbaa !9
  %413 = getelementptr inbounds double, ptr %411, i64 %412
  store double %410, 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 %21, align 8, !tbaa !9
  %442 = load i64, ptr %20, align 8, !tbaa !9
  %443 = load i64, ptr %16, align 8, !tbaa !9
  %444 = mul nsw i64 %442, %443
  %445 = add nsw i64 %441, %444
  %446 = getelementptr inbounds double, ptr %440, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = load ptr, ptr %14, align 8, !tbaa !5
  %449 = load i64, ptr %26, align 8, !tbaa !9
  %450 = getelementptr inbounds double, ptr %448, i64 %449
  store double %447, 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 %20, align 8, !tbaa !9
  %476 = load i64, ptr %21, align 8, !tbaa !9
  %477 = load i64, ptr %16, align 8, !tbaa !9
  %478 = mul nsw i64 %476, %477
  %479 = add nsw i64 %475, %478
  %480 = getelementptr inbounds double, ptr %474, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !11
  %482 = load ptr, ptr %14, align 8, !tbaa !5
  %483 = load i64, ptr %26, align 8, !tbaa !9
  %484 = getelementptr inbounds double, ptr %482, i64 %483
  store double %481, 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 %25, align 8, !tbaa !9
  %504 = load i64, ptr %21, align 8, !tbaa !9
  %505 = add nsw i64 %503, %504
  %506 = load i64, ptr %23, align 8, !tbaa !9
  %507 = load i64, ptr %16, align 8, !tbaa !9
  %508 = mul nsw i64 %506, %507
  %509 = add nsw i64 %505, %508
  %510 = getelementptr inbounds double, ptr %502, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = load ptr, ptr %14, align 8, !tbaa !5
  %513 = load i64, ptr %26, align 8, !tbaa !9
  %514 = getelementptr inbounds double, ptr %512, i64 %513
  store double %511, 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 %22, align 8, !tbaa !9
  %552 = load i64, ptr %21, align 8, !tbaa !9
  %553 = add nsw i64 %551, %552
  %554 = load i64, ptr %20, align 8, !tbaa !9
  %555 = load i64, ptr %16, align 8, !tbaa !9
  %556 = mul nsw i64 %554, %555
  %557 = add nsw i64 %553, %556
  %558 = getelementptr inbounds double, ptr %550, i64 %557
  %559 = load double, ptr %558, align 8, !tbaa !11
  %560 = load ptr, ptr %14, align 8, !tbaa !5
  %561 = load i64, ptr %26, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  store double %559, 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 %20, align 8, !tbaa !9
  %580 = load i64, ptr %21, align 8, !tbaa !9
  %581 = load i64, ptr %16, align 8, !tbaa !9
  %582 = mul nsw i64 %580, %581
  %583 = add nsw i64 %579, %582
  %584 = getelementptr inbounds double, ptr %578, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !11
  %586 = load ptr, ptr %14, align 8, !tbaa !5
  %587 = load i64, ptr %26, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  store double %585, 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 %20, align 8, !tbaa !9
  %622 = load i64, ptr %21, align 8, !tbaa !9
  %623 = load i64, ptr %16, align 8, !tbaa !9
  %624 = mul nsw i64 %622, %623
  %625 = add nsw i64 %621, %624
  %626 = getelementptr inbounds double, ptr %620, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  %628 = load ptr, ptr %14, align 8, !tbaa !5
  %629 = load i64, ptr %26, align 8, !tbaa !9
  %630 = getelementptr inbounds double, ptr %628, i64 %629
  store double %627, 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 %21, align 8, !tbaa !9
  %649 = load i64, ptr %22, align 8, !tbaa !9
  %650 = sub nsw i64 %648, %649
  %651 = load i64, ptr %23, align 8, !tbaa !9
  %652 = load i64, ptr %16, align 8, !tbaa !9
  %653 = mul nsw i64 %651, %652
  %654 = add nsw i64 %650, %653
  %655 = getelementptr inbounds double, ptr %647, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  %657 = load ptr, ptr %14, align 8, !tbaa !5
  %658 = load i64, ptr %26, align 8, !tbaa !9
  %659 = getelementptr inbounds double, ptr %657, i64 %658
  store double %656, 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 %20, align 8, !tbaa !9
  %690 = load i64, ptr %21, align 8, !tbaa !9
  %691 = load i64, ptr %16, align 8, !tbaa !9
  %692 = mul nsw i64 %690, %691
  %693 = add nsw i64 %689, %692
  %694 = getelementptr inbounds double, ptr %688, i64 %693
  %695 = load double, ptr %694, align 8, !tbaa !11
  %696 = load ptr, ptr %14, align 8, !tbaa !5
  %697 = load i64, ptr %26, align 8, !tbaa !9
  %698 = getelementptr inbounds double, ptr %696, i64 %697
  store double %695, 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 %21, align 8, !tbaa !9
  %720 = load i64, ptr %20, align 8, !tbaa !9
  %721 = load i64, ptr %16, align 8, !tbaa !9
  %722 = mul nsw i64 %720, %721
  %723 = add nsw i64 %719, %722
  %724 = getelementptr inbounds double, ptr %718, i64 %723
  %725 = load double, ptr %724, align 8, !tbaa !11
  %726 = load ptr, ptr %14, align 8, !tbaa !5
  %727 = load i64, ptr %26, align 8, !tbaa !9
  %728 = getelementptr inbounds double, ptr %726, i64 %727
  store double %725, 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 %20, align 8, !tbaa !9
  %749 = load i64, ptr %22, align 8, !tbaa !9
  %750 = add nsw i64 %749, 1
  %751 = load i64, ptr %21, align 8, !tbaa !9
  %752 = add nsw i64 %750, %751
  %753 = load i64, ptr %16, align 8, !tbaa !9
  %754 = mul nsw i64 %752, %753
  %755 = add nsw i64 %748, %754
  %756 = getelementptr inbounds double, ptr %747, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !11
  %758 = load ptr, ptr %14, align 8, !tbaa !5
  %759 = load i64, ptr %26, align 8, !tbaa !9
  %760 = getelementptr inbounds double, ptr %758, i64 %759
  store double %757, 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 %21, align 8, !tbaa !9
  %790 = load i64, ptr %20, align 8, !tbaa !9
  %791 = load i64, ptr %16, align 8, !tbaa !9
  %792 = mul nsw i64 %790, %791
  %793 = add nsw i64 %789, %792
  %794 = getelementptr inbounds double, ptr %788, i64 %793
  %795 = load double, ptr %794, align 8, !tbaa !11
  %796 = load ptr, ptr %14, align 8, !tbaa !5
  %797 = load i64, ptr %26, align 8, !tbaa !9
  %798 = getelementptr inbounds double, ptr %796, i64 %797
  store double %795, 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 %21, align 8, !tbaa !9
  %827 = load i64, ptr %20, align 8, !tbaa !9
  %828 = load i64, ptr %16, align 8, !tbaa !9
  %829 = mul nsw i64 %827, %828
  %830 = add nsw i64 %826, %829
  %831 = getelementptr inbounds double, ptr %825, i64 %830
  %832 = load double, ptr %831, align 8, !tbaa !11
  %833 = load ptr, ptr %14, align 8, !tbaa !5
  %834 = load i64, ptr %26, align 8, !tbaa !9
  %835 = getelementptr inbounds double, ptr %833, i64 %834
  store double %832, 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 %20, align 8, !tbaa !9
  %861 = load i64, ptr %21, align 8, !tbaa !9
  %862 = load i64, ptr %16, align 8, !tbaa !9
  %863 = mul nsw i64 %861, %862
  %864 = add nsw i64 %860, %863
  %865 = getelementptr inbounds double, ptr %859, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  %867 = load ptr, ptr %14, align 8, !tbaa !5
  %868 = load i64, ptr %26, align 8, !tbaa !9
  %869 = getelementptr inbounds double, ptr %867, i64 %868
  store double %866, 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 %22, align 8, !tbaa !9
  %890 = add nsw i64 %889, 1
  %891 = load i64, ptr %21, align 8, !tbaa !9
  %892 = add nsw i64 %890, %891
  %893 = load i64, ptr %23, align 8, !tbaa !9
  %894 = load i64, ptr %16, align 8, !tbaa !9
  %895 = mul nsw i64 %893, %894
  %896 = add nsw i64 %892, %895
  %897 = getelementptr inbounds double, ptr %888, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !11
  %899 = load ptr, ptr %14, align 8, !tbaa !5
  %900 = load i64, ptr %26, align 8, !tbaa !9
  %901 = getelementptr inbounds double, ptr %899, i64 %900
  store double %898, 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 %20, align 8, !tbaa !9
  %920 = load i64, ptr %21, align 8, !tbaa !9
  %921 = load i64, ptr %16, align 8, !tbaa !9
  %922 = mul nsw i64 %920, %921
  %923 = add nsw i64 %919, %922
  %924 = getelementptr inbounds double, ptr %918, i64 %923
  %925 = load double, ptr %924, align 8, !tbaa !11
  %926 = load ptr, ptr %14, align 8, !tbaa !5
  %927 = load i64, ptr %26, align 8, !tbaa !9
  %928 = getelementptr inbounds double, ptr %926, i64 %927
  store double %925, 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 @dtrttf_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef writeonly %5, ptr nocapture noundef %6) local_unnamed_addr #0 {
  %8 = ptrtoint ptr %3 to i64
  %9 = ptrtoint ptr %5 to i64
  %10 = ptrtoint ptr %3 to i64
  %11 = ptrtoint ptr %5 to i64
  %12 = ptrtoint ptr %3 to i64
  %13 = ptrtoint ptr %5 to i64
  %14 = ptrtoint ptr %3 to i64
  %15 = ptrtoint ptr %5 to i64
  %16 = ptrtoint ptr %3 to i64
  %17 = ptrtoint ptr %5 to i64
  %18 = ptrtoint ptr %3 to i64
  %19 = ptrtoint ptr %5 to i64
  %20 = ptrtoint ptr %3 to i64
  %21 = ptrtoint ptr %5 to i64
  %22 = ptrtoint ptr %3 to i64
  %23 = ptrtoint ptr %5 to i64
  %24 = ptrtoint ptr %3 to i64
  %25 = ptrtoint ptr %5 to i64
  %26 = ptrtoint ptr %3 to i64
  %27 = ptrtoint ptr %5 to i64
  %28 = ptrtoint ptr %3 to i64
  %29 = ptrtoint ptr %5 to i64
  %30 = ptrtoint ptr %3 to i64
  %31 = ptrtoint ptr %5 to i64
  %32 = ptrtoint ptr %3 to i64
  %33 = ptrtoint ptr %5 to i64
  %34 = ptrtoint ptr %3 to i64
  %35 = ptrtoint ptr %5 to i64
  %36 = ptrtoint ptr %3 to i64
  %37 = ptrtoint ptr %5 to i64
  %38 = ptrtoint ptr %3 to i64
  %39 = ptrtoint ptr %5 to i64
  %40 = ptrtoint ptr %3 to i64
  %41 = ptrtoint ptr %5 to i64
  %42 = ptrtoint ptr %3 to i64
  %43 = ptrtoint ptr %5 to i64
  %44 = ptrtoint ptr %3 to i64
  %45 = ptrtoint ptr %5 to i64
  %46 = ptrtoint ptr %3 to i64
  %47 = ptrtoint ptr %5 to i64
  %48 = ptrtoint ptr %3 to i64
  %49 = ptrtoint ptr %5 to i64
  %50 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #4
  %51 = load i64, ptr %4, 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 %4, 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 ], [ -5, %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 %5, 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 %398, 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 %184, label %86

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

.lr.ph500.preheader:                              ; preds = %86
  %87 = sub i64 %49, %48
  %88 = shl i64 %51, 3
  %89 = sub nuw nsw i64 -8, %88
  %90 = add i64 %.0371, 1
  %91 = sub i64 %90, %.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 ]
  %92 = add i64 %91, %.0378497
  %93 = add i64 %60, %.0378497
  %94 = shl i64 %93, 3
  %95 = add i64 %94, %46
  %96 = sub i64 %47, %95
  %97 = sub i64 %60, %.0378497
  %98 = mul i64 %89, %.0378497
  %99 = add i64 %87, %98
  %100 = add nuw nsw i64 %.0378497, %.0371
  %.not452488 = icmp sgt i64 %.0372, %100
  br i1 %.not452488, label %.preheader486, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph500
  %101 = getelementptr double, ptr %3, i64 %100
  %min.iters.check797 = icmp ugt i64 %92, 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
  %102 = shl i64 %.0370498, 3
  %103 = add i64 %96, %102
  %diff.check794 = icmp ult i64 %103, 32
  br i1 %diff.check794, label %scalar.ph796.preheader, label %vector.ph798

vector.ph798:                                     ; preds = %vector.memcheck793
  %n.vec800 = and i64 %92, -4
  %ind.end801 = add i64 %.0370498, %n.vec800
  %ind.end803 = add i64 %.0372, %n.vec800
  %104 = getelementptr double, ptr %101, i64 %.0372
  %105 = getelementptr double, ptr %5, i64 %.0370498
  br label %vector.body805

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

middle.block795:                                  ; preds = %vector.body805
  %cmp.n812 = icmp eq i64 %92, %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
  %111 = mul nsw i64 %.0378497, %51
  %invariant.gep = getelementptr double, ptr %3, i64 %111
  %min.iters.check = icmp ult i64 %97, 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
  %112 = shl i64 %.1.lcssa, 3
  %113 = add i64 %99, %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 %97, -4
  %ind.end = add i64 %.1.lcssa, %n.vec
  %ind.end789 = add i64 %.0378497, %n.vec
  %114 = getelementptr double, ptr %invariant.gep, i64 %.0378497
  %115 = getelementptr double, ptr %5, i64 %.1.lcssa
  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 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 inbounds 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 %97, %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 = mul nsw i64 %.0390489, %51
  %122 = getelementptr double, ptr %101, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !9
  %124 = getelementptr inbounds double, ptr %5, i64 %.1490
  store double %123, ptr %124, align 8, !tbaa !9
  %125 = add nsw i64 %.1490, 1
  %126 = add nsw i64 %.0390489, 1
  %.not452.not = icmp slt i64 %.0390489, %100
  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 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.1391492
  %127 = load double, ptr %gep, align 8, !tbaa !9
  %128 = getelementptr inbounds double, ptr %5, i64 %.2493
  store double %127, ptr %128, 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 %.0372, 4
  %134 = add i64 %133, %45
  %135 = add i64 %134, 16
  %136 = shl i64 %60, 4
  %137 = add i64 %136, %44
  %138 = sub i64 %135, %137
  %139 = shl i64 %.0372, 1
  %140 = or disjoint i64 %139, 1
  %141 = sub i64 %140, %60
  %142 = add nuw i64 %60, 2305843009213693951
  %143 = mul i64 %51, %142
  %144 = shl i64 %143, 3
  %145 = add i64 %144, %42
  %146 = sub i64 %43, %145
  %147 = shl i64 %51, 3
  %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 ], [ %183, %._crit_edge514 ]
  %.1379.in518 = phi i64 [ %60, %.preheader484.preheader ], [ %.1379520, %._crit_edge514 ]
  %148 = mul i64 %147, %indvar
  %149 = add i64 %146, %148
  %150 = add i64 %141, %indvar
  %151 = shl i64 %indvar, 4
  %152 = add i64 %138, %151
  %.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
  %153 = mul nsw i64 %.1379520, %51
  %invariant.gep507 = getelementptr double, ptr %3, i64 %153
  %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
  %154 = shl i64 %.3519, 3
  %155 = add i64 %149, %154
  %diff.check836 = icmp ult i64 %155, 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
  %156 = getelementptr double, ptr %5, i64 %.3519
  br label %vector.body846

vector.body846:                                   ; preds = %vector.body846, %vector.ph840
  %index847 = phi i64 [ 0, %vector.ph840 ], [ %index.next851, %vector.body846 ]
  %157 = getelementptr double, ptr %invariant.gep507, i64 %index847
  %158 = getelementptr i8, ptr %157, i64 16
  %wide.load849 = load <2 x double>, ptr %157, align 8, !tbaa !9
  %wide.load850 = load <2 x double>, ptr %158, align 8, !tbaa !9
  %159 = getelementptr double, ptr %156, i64 %index847
  %160 = getelementptr inbounds i8, ptr %159, i64 16
  store <2 x double> %wide.load849, ptr %159, align 8, !tbaa !9
  store <2 x double> %wide.load850, ptr %160, align 8, !tbaa !9
  %index.next851 = add nuw i64 %index847, 4
  %161 = icmp eq i64 %index.next851, %n.vec842
  br i1 %161, 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 [ %164, %scalar.ph838 ], [ %.4503.ph, %scalar.ph838.preheader ]
  %.2392502 = phi i64 [ %165, %scalar.ph838 ], [ %.2392502.ph, %scalar.ph838.preheader ]
  %gep508 = getelementptr double, ptr %invariant.gep507, i64 %.2392502
  %162 = load double, ptr %gep508, align 8, !tbaa !9
  %163 = getelementptr inbounds double, ptr %5, i64 %.4503
  store double %162, ptr %163, align 8, !tbaa !9
  %164 = add nsw i64 %.4503, 1
  %165 = add nuw nsw i64 %.2392502, 1
  %.not449.not = icmp slt i64 %165, %.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 ], [ %164, %scalar.ph838 ]
  %166 = sub nsw i64 %.1379520, %.0372
  %.not450.not509 = icmp slt i64 %166, %.0372
  br i1 %.not450.not509, label %.lr.ph513, label %._crit_edge514

.lr.ph513:                                        ; preds = %._crit_edge505
  %167 = getelementptr double, ptr %3, i64 %166
  %min.iters.check819 = icmp ugt i64 %150, 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
  %168 = shl i64 %.4.lcssa, 3
  %169 = add i64 %152, %168
  %diff.check816 = icmp ult i64 %169, 32
  br i1 %diff.check816, label %scalar.ph818.preheader, label %vector.ph820

vector.ph820:                                     ; preds = %vector.memcheck815
  %n.vec822 = and i64 %150, -4
  %ind.end823 = add i64 %.4.lcssa, %n.vec822
  %ind.end825 = add i64 %166, %n.vec822
  %170 = getelementptr double, ptr %167, i64 %166
  %171 = getelementptr double, ptr %5, i64 %.4.lcssa
  br label %vector.body827

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

middle.block817:                                  ; preds = %vector.body827
  %cmp.n834 = icmp eq i64 %150, %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 [ %166, %vector.memcheck815 ], [ %166, %.lr.ph513 ], [ %ind.end825, %middle.block817 ]
  br label %scalar.ph818

scalar.ph818:                                     ; preds = %scalar.ph818.preheader, %scalar.ph818
  %.5511 = phi i64 [ %181, %scalar.ph818 ], [ %.5511.ph, %scalar.ph818.preheader ]
  %.0373510 = phi i64 [ %182, %scalar.ph818 ], [ %.0373510.ph, %scalar.ph818.preheader ]
  %177 = mul nsw i64 %.0373510, %51
  %178 = getelementptr double, ptr %167, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !9
  %180 = getelementptr inbounds double, ptr %5, i64 %.5511
  store double %179, ptr %180, align 8, !tbaa !9
  %181 = add nsw i64 %.5511, 1
  %182 = add nsw i64 %.0373510, 1
  %.not450.not = icmp slt i64 %182, %.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 ], [ %181, %scalar.ph818 ]
  %183 = 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

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

.preheader483.preheader:                          ; preds = %184
  %185 = add i64 %41, 8
  %186 = shl i64 %51, 3
  %187 = add i64 %186, 8
  %188 = mul i64 %.0372, %187
  %189 = add i64 %188, %40
  %190 = sub i64 %185, %189
  %191 = sub nuw nsw i64 -8, %186
  %ident.check874.not = icmp eq i64 %51, 1
  %invariant.gep1348 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1350 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1352 = getelementptr i8, ptr %5, 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 [ %251, %._crit_edge528 ], [ 0, %.preheader483.preheader ]
  %192 = add i64 %.0372, %.2380533
  %193 = sub i64 %60, %192
  %194 = mul i64 %191, %.2380533
  %195 = add i64 %190, %194
  %196 = getelementptr double, ptr %3, 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
  %197 = shl i64 %.2380533, 3
  %198 = add i64 %197, %38
  %199 = sub i64 %39, %198
  %200 = shl i64 %.6534, 3
  %201 = add i64 %199, %200
  %diff.check876 = icmp ult i64 %201, 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
  %202 = getelementptr double, ptr %5, i64 %.6534
  br label %vector.body886

vector.body886:                                   ; preds = %vector.body886, %vector.ph880
  %index887 = phi i64 [ 0, %vector.ph880 ], [ %index.next891, %vector.body886 ]
  %203 = getelementptr double, ptr %196, i64 %index887
  %204 = getelementptr i8, ptr %203, i64 16
  %wide.load889 = load <2 x double>, ptr %203, align 8, !tbaa !9
  %wide.load890 = load <2 x double>, ptr %204, align 8, !tbaa !9
  %205 = getelementptr double, ptr %202, i64 %index887
  %206 = getelementptr inbounds i8, ptr %205, i64 16
  store <2 x double> %wide.load889, ptr %205, align 8, !tbaa !9
  store <2 x double> %wide.load890, ptr %206, align 8, !tbaa !9
  %index.next891 = add nuw i64 %index887, 4
  %207 = icmp eq i64 %index.next891, %n.vec882
  br i1 %207, 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 ]
  %208 = 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 [ %213, %scalar.ph878.prol ], [ %.7522.ph, %scalar.ph878.preheader ]
  %.3393521.prol = phi i64 [ %214, %scalar.ph878.prol ], [ %.3393521.ph, %scalar.ph878.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph878.prol ], [ 0, %scalar.ph878.preheader ]
  %209 = mul nsw i64 %.3393521.prol, %51
  %210 = getelementptr double, ptr %196, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = getelementptr inbounds double, ptr %5, i64 %.7522.prol
  store double %211, ptr %212, align 8, !tbaa !9
  %213 = add nsw i64 %.7522.prol, 1
  %214 = 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 ], [ %213, %scalar.ph878.prol ]
  %.7522.unr = phi i64 [ %.7522.ph, %scalar.ph878.preheader ], [ %213, %scalar.ph878.prol ]
  %.3393521.unr = phi i64 [ %.3393521.ph, %scalar.ph878.preheader ], [ %214, %scalar.ph878.prol ]
  %215 = icmp ult i64 %208, 3
  br i1 %215, label %.loopexit1236, label %scalar.ph878

scalar.ph878:                                     ; preds = %scalar.ph878.prol.loopexit, %scalar.ph878
  %.7522 = phi i64 [ %232, %scalar.ph878 ], [ %.7522.unr, %scalar.ph878.prol.loopexit ]
  %.3393521 = phi i64 [ %233, %scalar.ph878 ], [ %.3393521.unr, %scalar.ph878.prol.loopexit ]
  %216 = mul nsw i64 %.3393521, %51
  %217 = getelementptr double, ptr %196, i64 %216
  %218 = load double, ptr %217, align 8, !tbaa !9
  %219 = getelementptr inbounds double, ptr %5, i64 %.7522
  store double %218, ptr %219, align 8, !tbaa !9
  %220 = add nuw nsw i64 %.3393521, 1
  %221 = mul nsw i64 %220, %51
  %222 = getelementptr double, ptr %196, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !9
  %gep1349 = getelementptr double, ptr %invariant.gep1348, i64 %.7522
  store double %223, ptr %gep1349, align 8, !tbaa !9
  %224 = add nuw nsw i64 %.3393521, 2
  %225 = mul nsw i64 %224, %51
  %226 = getelementptr double, ptr %196, i64 %225
  %227 = load double, ptr %226, align 8, !tbaa !9
  %gep1351 = getelementptr double, ptr %invariant.gep1350, i64 %.7522
  store double %227, ptr %gep1351, align 8, !tbaa !9
  %228 = add nuw nsw i64 %.3393521, 3
  %229 = mul nsw i64 %228, %51
  %230 = getelementptr double, ptr %196, i64 %229
  %231 = load double, ptr %230, align 8, !tbaa !9
  %gep1353 = getelementptr double, ptr %invariant.gep1352, i64 %.7522
  store double %231, ptr %gep1353, align 8, !tbaa !9
  %232 = add nsw i64 %.7522, 4
  %233 = add nuw nsw i64 %.3393521, 4
  %exitcond701.not.3 = icmp eq i64 %233, %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 ], [ %228, %scalar.ph878 ]
  %.lcssa783 = phi i64 [ %ind.end883, %middle.block877 ], [ %.lcssa1275.unr, %scalar.ph878.prol.loopexit ], [ %232, %scalar.ph878 ]
  %234 = add nsw i64 %.2380533, %.0372
  %.not447.not523 = icmp slt i64 %234, %60
  br i1 %.not447.not523, label %.lr.ph527, label %._crit_edge528

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

vector.memcheck853:                               ; preds = %.lr.ph527
  %236 = shl i64 %.6534, 3
  %237 = add i64 %195, %236
  %238 = shl i64 %.3393521.lcssa, 3
  %239 = add i64 %238, %237
  %diff.check854 = icmp ult i64 %239, 32
  br i1 %diff.check854, label %scalar.ph856.preheader, label %vector.ph858

vector.ph858:                                     ; preds = %vector.memcheck853
  %n.vec860 = and i64 %193, -4
  %ind.end861 = add i64 %.lcssa783, %n.vec860
  %ind.end863 = add i64 %234, %n.vec860
  %240 = getelementptr double, ptr %invariant.gep530, i64 %234
  %241 = getelementptr double, ptr %5, i64 %.lcssa783
  br label %vector.body865

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

middle.block855:                                  ; preds = %vector.body865
  %cmp.n872 = icmp eq i64 %193, %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 [ %234, %vector.memcheck853 ], [ %234, %.lr.ph527 ], [ %ind.end863, %middle.block855 ]
  br label %scalar.ph856

scalar.ph856:                                     ; preds = %scalar.ph856.preheader, %scalar.ph856
  %.8525 = phi i64 [ %249, %scalar.ph856 ], [ %.8525.ph, %scalar.ph856.preheader ]
  %.4394524 = phi i64 [ %250, %scalar.ph856 ], [ %.4394524.ph, %scalar.ph856.preheader ]
  %gep531 = getelementptr double, ptr %invariant.gep530, i64 %.4394524
  %247 = load double, ptr %gep531, align 8, !tbaa !9
  %248 = getelementptr inbounds double, ptr %5, i64 %.8525
  store double %247, ptr %248, align 8, !tbaa !9
  %249 = add nsw i64 %.8525, 1
  %250 = add nsw i64 %.4394524, 1
  %.not447.not = icmp slt i64 %250, %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 ], [ %249, %scalar.ph856 ]
  %251 = add nuw nsw i64 %.2380533, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond703.not = icmp eq i64 %251, %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 %5, i64 8
  %invariant.gep1356 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1358 = getelementptr i8, ptr %5, 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 [ %291, %._crit_edge541.us ], [ %.0371, %.preheader481.us.preheader ]
  %252 = getelementptr double, ptr %3, i64 %.3381544.us
  br i1 %or.cond1241, label %vector.memcheck895, label %scalar.ph900.preheader

vector.memcheck895:                               ; preds = %.preheader481.us
  %253 = add i64 %.0371, %indvar896
  %254 = shl i64 %253, 3
  %255 = add i64 %254, %36
  %256 = sub i64 %37, %255
  %257 = shl i64 %.9545.us, 3
  %258 = add i64 %256, %257
  %diff.check898 = icmp ult i64 %258, 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
  %259 = getelementptr double, ptr %5, i64 %.9545.us
  br label %vector.body908

vector.body908:                                   ; preds = %vector.body908, %vector.ph902
  %index909 = phi i64 [ 0, %vector.ph902 ], [ %index.next913, %vector.body908 ]
  %260 = getelementptr double, ptr %252, i64 %index909
  %261 = getelementptr i8, ptr %260, i64 16
  %wide.load911 = load <2 x double>, ptr %260, align 8, !tbaa !9
  %wide.load912 = load <2 x double>, ptr %261, align 8, !tbaa !9
  %262 = getelementptr double, ptr %259, i64 %index909
  %263 = getelementptr inbounds i8, ptr %262, i64 16
  store <2 x double> %wide.load911, ptr %262, align 8, !tbaa !9
  store <2 x double> %wide.load912, ptr %263, align 8, !tbaa !9
  %index.next913 = add nuw i64 %index909, 4
  %264 = icmp eq i64 %index.next913, %n.vec904
  br i1 %264, 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 [ %269, %scalar.ph900.prol ], [ %.10539.us.ph, %scalar.ph900.preheader ]
  %.5395538.us.prol = phi i64 [ %270, %scalar.ph900.prol ], [ %.5395538.us.ph, %scalar.ph900.preheader ]
  %prol.iter1286 = phi i64 [ %prol.iter1286.next, %scalar.ph900.prol ], [ 0, %scalar.ph900.preheader ]
  %265 = mul nsw i64 %.5395538.us.prol, %51
  %266 = getelementptr double, ptr %252, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !9
  %268 = getelementptr inbounds double, ptr %5, i64 %.10539.us.prol
  store double %267, ptr %268, align 8, !tbaa !9
  %269 = add nsw i64 %.10539.us.prol, 1
  %270 = 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 ], [ %269, %scalar.ph900.prol ]
  %.10539.us.unr = phi i64 [ %.10539.us.ph, %scalar.ph900.preheader ], [ %269, %scalar.ph900.prol ]
  %.5395538.us.unr = phi i64 [ %.5395538.us.ph, %scalar.ph900.preheader ], [ %270, %scalar.ph900.prol ]
  %271 = sub nsw i64 %.5395538.us.ph, %.0372
  %272 = icmp ugt i64 %271, -4
  br i1 %272, label %._crit_edge541.us, label %scalar.ph900

scalar.ph900:                                     ; preds = %scalar.ph900.prol.loopexit, %scalar.ph900
  %.10539.us = phi i64 [ %289, %scalar.ph900 ], [ %.10539.us.unr, %scalar.ph900.prol.loopexit ]
  %.5395538.us = phi i64 [ %290, %scalar.ph900 ], [ %.5395538.us.unr, %scalar.ph900.prol.loopexit ]
  %273 = mul nsw i64 %.5395538.us, %51
  %274 = getelementptr double, ptr %252, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = getelementptr inbounds double, ptr %5, i64 %.10539.us
  store double %275, ptr %276, align 8, !tbaa !9
  %277 = add nuw nsw i64 %.5395538.us, 1
  %278 = mul nsw i64 %277, %51
  %279 = getelementptr double, ptr %252, i64 %278
  %280 = load double, ptr %279, align 8, !tbaa !9
  %gep1355 = getelementptr double, ptr %invariant.gep1354, i64 %.10539.us
  store double %280, ptr %gep1355, align 8, !tbaa !9
  %281 = add nuw nsw i64 %.5395538.us, 2
  %282 = mul nsw i64 %281, %51
  %283 = getelementptr double, ptr %252, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !9
  %gep1357 = getelementptr double, ptr %invariant.gep1356, i64 %.10539.us
  store double %284, ptr %gep1357, align 8, !tbaa !9
  %285 = add nuw nsw i64 %.5395538.us, 3
  %286 = mul nsw i64 %285, %51
  %287 = getelementptr double, ptr %252, i64 %286
  %288 = load double, ptr %287, align 8, !tbaa !9
  %gep1359 = getelementptr double, ptr %invariant.gep1358, i64 %.10539.us
  store double %288, ptr %gep1359, align 8, !tbaa !9
  %289 = add nsw i64 %.10539.us, 4
  %290 = add nuw nsw i64 %.5395538.us, 4
  %exitcond704.not.3 = icmp eq i64 %290, %.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 ], [ %289, %scalar.ph900 ]
  %291 = add nsw i64 %.3381544.us, 1
  %exitcond705.not = icmp eq i64 %291, %60
  %indvar.next897 = add i64 %indvar896, 1
  br i1 %exitcond705.not, label %.loopexit, label %.preheader481.us, !llvm.loop !34

.preheader480.us.preheader:                       ; preds = %184
  %292 = sub nsw i64 %60, %79
  %293 = shl i64 %60, 3
  %294 = shl i64 %79, 3
  %295 = sub i64 %293, %294
  %296 = mul i64 %.0372, %295
  %297 = add i64 %296, %293
  %298 = sub i64 %297, %294
  %scevgep = getelementptr i8, ptr %5, i64 %298
  %299 = shl i64 %.0372, 3
  %scevgep918 = getelementptr i8, ptr %3, i64 %299
  %300 = shl i64 %.0372, 4
  %301 = add i64 %300, %293
  %302 = sub i64 %301, %294
  %scevgep919 = getelementptr i8, ptr %3, i64 %302
  %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 ugt ptr %scevgep919, %5
  %bound1 = icmp ult ptr %scevgep918, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i64 %295, 0
  %303 = 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 %5, i64 8
  %invariant.gep1362 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1364 = getelementptr i8, ptr %5, i64 24
  br label %.preheader480.us

.preheader480.us:                                 ; preds = %.preheader480.us.preheader, %._crit_edge550.us
  %.11554.us = phi i64 [ %306, %._crit_edge550.us ], [ 0, %.preheader480.us.preheader ]
  %.4382553.us = phi i64 [ %343, %._crit_edge550.us ], [ 0, %.preheader480.us.preheader ]
  %304 = add i64 %80, %.11554.us
  %305 = getelementptr double, ptr %3, i64 %.4382553.us
  %306 = add i64 %292, %.11554.us
  %or.cond1242.not = xor i1 %or.cond1242, true
  %brmerge = select i1 %or.cond1242.not, i1 true, i1 %303
  br i1 %brmerge, label %scalar.ph921.preheader, label %vector.ph923

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

vector.body930:                                   ; preds = %vector.body930, %vector.ph923
  %index931 = phi i64 [ 0, %vector.ph923 ], [ %index.next936, %vector.body930 ]
  %309 = getelementptr double, ptr %307, i64 %index931
  %310 = getelementptr i8, ptr %309, i64 16
  %wide.load934 = load <2 x double>, ptr %309, align 8, !tbaa !9, !alias.scope !35
  %wide.load935 = load <2 x double>, ptr %310, align 8, !tbaa !9, !alias.scope !35
  %311 = getelementptr double, ptr %308, i64 %index931
  %312 = getelementptr inbounds i8, ptr %311, i64 16
  store <2 x double> %wide.load934, ptr %311, align 8, !tbaa !9, !alias.scope !38, !noalias !35
  store <2 x double> %wide.load935, ptr %312, align 8, !tbaa !9, !alias.scope !38, !noalias !35
  %index.next936 = add nuw i64 %index931, 4
  %313 = icmp eq i64 %index.next936, %n.vec925
  br i1 %313, 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 ]
  %314 = sub i64 %304, %.12548.us.ph
  %xtraiter1287 = and i64 %314, 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 [ %319, %scalar.ph921.prol ], [ %.12548.us.ph, %scalar.ph921.preheader ]
  %.6396547.us.prol = phi i64 [ %320, %scalar.ph921.prol ], [ %.6396547.us.ph, %scalar.ph921.preheader ]
  %prol.iter1289 = phi i64 [ %prol.iter1289.next, %scalar.ph921.prol ], [ 0, %scalar.ph921.preheader ]
  %315 = mul nsw i64 %.6396547.us.prol, %51
  %316 = getelementptr double, ptr %305, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !9
  %318 = getelementptr inbounds double, ptr %5, i64 %.12548.us.prol
  store double %317, ptr %318, align 8, !tbaa !9
  %319 = add i64 %.12548.us.prol, 1
  %320 = 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 ], [ %319, %scalar.ph921.prol ]
  %.6396547.us.unr = phi i64 [ %.6396547.us.ph, %scalar.ph921.preheader ], [ %320, %scalar.ph921.prol ]
  %321 = add i64 %60, %.11554.us
  %322 = sub i64 %79, %321
  %323 = add i64 %322, %.12548.us.ph
  %324 = icmp ugt i64 %323, -4
  br i1 %324, label %._crit_edge550.us, label %scalar.ph921

scalar.ph921:                                     ; preds = %scalar.ph921.prol.loopexit, %scalar.ph921
  %.12548.us = phi i64 [ %341, %scalar.ph921 ], [ %.12548.us.unr, %scalar.ph921.prol.loopexit ]
  %.6396547.us = phi i64 [ %342, %scalar.ph921 ], [ %.6396547.us.unr, %scalar.ph921.prol.loopexit ]
  %325 = mul nsw i64 %.6396547.us, %51
  %326 = getelementptr double, ptr %305, i64 %325
  %327 = load double, ptr %326, align 8, !tbaa !9
  %328 = getelementptr inbounds double, ptr %5, i64 %.12548.us
  store double %327, ptr %328, align 8, !tbaa !9
  %329 = add nuw nsw i64 %.6396547.us, 1
  %330 = mul nsw i64 %329, %51
  %331 = getelementptr double, ptr %305, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !9
  %gep1361 = getelementptr double, ptr %invariant.gep1360, i64 %.12548.us
  store double %332, ptr %gep1361, align 8, !tbaa !9
  %333 = add nuw nsw i64 %.6396547.us, 2
  %334 = mul nsw i64 %333, %51
  %335 = getelementptr double, ptr %305, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !9
  %gep1363 = getelementptr double, ptr %invariant.gep1362, i64 %.12548.us
  store double %336, ptr %gep1363, align 8, !tbaa !9
  %337 = add nuw nsw i64 %.6396547.us, 3
  %338 = mul nsw i64 %337, %51
  %339 = getelementptr double, ptr %305, i64 %338
  %340 = load double, ptr %339, align 8, !tbaa !9
  %gep1365 = getelementptr double, ptr %invariant.gep1364, i64 %.12548.us
  store double %340, ptr %gep1365, align 8, !tbaa !9
  %341 = add i64 %.12548.us, 4
  %342 = add nuw nsw i64 %.6396547.us, 4
  %exitcond706.not.3 = icmp eq i64 %341, %306
  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
  %343 = 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
  %344 = add i64 %35, 8
  %345 = sub i64 %33, %32
  %346 = mul i64 %51, -8
  %invariant.gep1368 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1372 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1374 = getelementptr i8, ptr %5, 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 [ %306, %.preheader478.preheader ], [ %.15.lcssa, %._crit_edge566 ]
  %.5383569 = phi i64 [ 0, %.preheader478.preheader ], [ %397, %._crit_edge566 ]
  %347 = add i64 %.0371, %.5383569
  %348 = sub i64 %60, %347
  %349 = add i64 %.0371, %.5383569
  %350 = shl i64 %349, 4
  %351 = add i64 %350, %34
  %352 = sub i64 %344, %351
  %353 = mul nsw i64 %.5383569, %51
  %invariant.gep557 = getelementptr double, ptr %3, i64 %353
  %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
  %354 = mul i64 %346, %.5383569
  %355 = add i64 %345, %354
  %356 = shl i64 %.13570, 3
  %357 = add i64 %355, %356
  %diff.check961 = icmp ult i64 %357, 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
  %358 = getelementptr double, ptr %5, i64 %.13570
  br label %vector.body971

vector.body971:                                   ; preds = %vector.body971, %vector.ph965
  %index972 = phi i64 [ 0, %vector.ph965 ], [ %index.next976, %vector.body971 ]
  %359 = getelementptr double, ptr %invariant.gep557, i64 %index972
  %360 = getelementptr i8, ptr %359, i64 16
  %wide.load974 = load <2 x double>, ptr %359, align 8, !tbaa !9
  %wide.load975 = load <2 x double>, ptr %360, align 8, !tbaa !9
  %361 = getelementptr double, ptr %358, i64 %index972
  %362 = getelementptr inbounds i8, ptr %361, i64 16
  store <2 x double> %wide.load974, ptr %361, align 8, !tbaa !9
  store <2 x double> %wide.load975, ptr %362, align 8, !tbaa !9
  %index.next976 = add nuw i64 %index972, 4
  %363 = icmp eq i64 %index.next976, %n.vec967
  br i1 %363, 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 ]
  %364 = 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 [ %367, %scalar.ph963.prol ], [ %.14560.ph, %scalar.ph963.preheader ]
  %.7397559.prol = phi i64 [ %368, %scalar.ph963.prol ], [ %.7397559.ph, %scalar.ph963.preheader ]
  %prol.iter1292 = phi i64 [ %prol.iter1292.next, %scalar.ph963.prol ], [ 0, %scalar.ph963.preheader ]
  %gep558.prol = getelementptr double, ptr %invariant.gep557, i64 %.7397559.prol
  %365 = load double, ptr %gep558.prol, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %5, i64 %.14560.prol
  store double %365, ptr %366, align 8, !tbaa !9
  %367 = add nsw i64 %.14560.prol, 1
  %368 = 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 ], [ %367, %scalar.ph963.prol ]
  %.14560.unr = phi i64 [ %.14560.ph, %scalar.ph963.preheader ], [ %367, %scalar.ph963.prol ]
  %.7397559.unr = phi i64 [ %.7397559.ph, %scalar.ph963.preheader ], [ %368, %scalar.ph963.prol ]
  %369 = icmp ult i64 %364, 3
  br i1 %369, label %.loopexit1235, label %scalar.ph963.preheader.new

scalar.ph963.preheader.new:                       ; preds = %scalar.ph963.prol.loopexit
  %invariant.gep1366 = getelementptr i8, ptr %invariant.gep557, i64 8
  %invariant.gep1370 = 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 ], [ %376, %scalar.ph963 ]
  %.7397559 = phi i64 [ %.7397559.unr, %scalar.ph963.preheader.new ], [ %377, %scalar.ph963 ]
  %gep558 = getelementptr double, ptr %invariant.gep557, i64 %.7397559
  %370 = load double, ptr %gep558, align 8, !tbaa !9
  %371 = getelementptr inbounds double, ptr %5, i64 %.14560
  store double %370, ptr %371, align 8, !tbaa !9
  %gep1367 = getelementptr double, ptr %invariant.gep1366, i64 %.7397559
  %372 = load double, ptr %gep1367, align 8, !tbaa !9
  %gep1369 = getelementptr double, ptr %invariant.gep1368, i64 %.14560
  store double %372, ptr %gep1369, align 8, !tbaa !9
  %gep1371 = getelementptr double, ptr %invariant.gep1370, i64 %.7397559
  %373 = load double, ptr %gep1371, align 8, !tbaa !9
  %gep1373 = getelementptr double, ptr %invariant.gep1372, i64 %.14560
  store double %373, ptr %gep1373, align 8, !tbaa !9
  %374 = add nuw nsw i64 %.7397559, 3
  %gep558.3 = getelementptr double, ptr %invariant.gep557, i64 %374
  %375 = load double, ptr %gep558.3, align 8, !tbaa !9
  %gep1375 = getelementptr double, ptr %invariant.gep1374, i64 %.14560
  store double %375, ptr %gep1375, align 8, !tbaa !9
  %376 = add nsw i64 %.14560, 4
  %377 = add nuw nsw i64 %.7397559, 4
  %exitcond711.not.3 = icmp eq i64 %377, %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 ], [ %374, %scalar.ph963 ]
  %.lcssa779 = phi i64 [ %ind.end968, %middle.block962 ], [ %.lcssa1269.unr, %scalar.ph963.prol.loopexit ], [ %376, %scalar.ph963 ]
  %378 = add nsw i64 %.5383569, %.0371
  %.not441.not561 = icmp slt i64 %378, %60
  br i1 %.not441.not561, label %.lr.ph565, label %._crit_edge566

.lr.ph565:                                        ; preds = %.loopexit1235
  %379 = getelementptr double, ptr %3, i64 %378
  %min.iters.check944 = icmp ugt i64 %348, 5
  %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
  %380 = shl i64 %.13570, 3
  %381 = add i64 %352, %380
  %382 = shl i64 %.7397559.lcssa, 3
  %383 = add i64 %382, %381
  %diff.check941 = icmp ult i64 %383, 32
  br i1 %diff.check941, label %scalar.ph943.preheader, label %vector.ph945

vector.ph945:                                     ; preds = %vector.memcheck940
  %n.vec947 = and i64 %348, -4
  %ind.end948 = add i64 %.lcssa779, %n.vec947
  %ind.end950 = add i64 %378, %n.vec947
  %384 = getelementptr double, ptr %379, i64 %378
  %385 = getelementptr double, ptr %5, i64 %.lcssa779
  br label %vector.body952

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

middle.block942:                                  ; preds = %vector.body952
  %cmp.n959 = icmp eq i64 %348, %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 [ %378, %vector.memcheck940 ], [ %378, %.lr.ph565 ], [ %ind.end950, %middle.block942 ]
  br label %scalar.ph943

scalar.ph943:                                     ; preds = %scalar.ph943.preheader, %scalar.ph943
  %.15563 = phi i64 [ %395, %scalar.ph943 ], [ %.15563.ph, %scalar.ph943.preheader ]
  %.1374562 = phi i64 [ %396, %scalar.ph943 ], [ %.1374562.ph, %scalar.ph943.preheader ]
  %391 = mul nsw i64 %.1374562, %51
  %392 = getelementptr double, ptr %379, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = getelementptr inbounds double, ptr %5, i64 %.15563
  store double %393, ptr %394, align 8, !tbaa !9
  %395 = add nsw i64 %.15563, 1
  %396 = add nsw i64 %.1374562, 1
  %.not441.not = icmp slt i64 %396, %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 ], [ %395, %scalar.ph943 ]
  %397 = add nuw nsw i64 %.5383569, 1
  %indvars.iv.next710 = add nuw i64 %indvars.iv709, 1
  %exitcond712.not = icmp eq i64 %397, %.0372
  br i1 %exitcond712.not, label %.loopexit, label %.preheader478, !llvm.loop !49

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

.preheader470.us.preheader:                       ; preds = %398
  %399 = add nuw nsw i64 %79, 1
  %smax1154 = tail call i64 @llvm.smax.i64(i64 %60, i64 %399)
  %400 = sub nsw i64 %smax1154, %79
  %min.iters.check1157 = icmp ugt i64 %400, 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 %400, -4
  %ind.end1163 = add i64 %79, %n.vec1160
  %cmp.n1172 = icmp eq i64 %400, %n.vec1160
  br label %.preheader470.us

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

.lr.ph584.preheader:                              ; preds = %.thread463
  %401 = add i64 %31, 8
  %402 = sub i64 %401, %30
  %403 = shl i64 %51, 3
  %404 = sub nuw nsw i64 -8, %403
  %405 = shl i64 %79, 4
  %406 = add i64 %405, %28
  %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 [ %447, %._crit_edge577 ], [ 0, %.lr.ph584.preheader ]
  %407 = add nuw i64 %.6384582, 1
  %408 = sub nsw i64 %60, %.6384582
  %409 = mul i64 %404, %.6384582
  %410 = add i64 %402, %409
  %411 = add nuw nsw i64 %.6384582, %79
  %412 = getelementptr double, ptr %3, i64 %411
  %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
  %413 = shl i64 %.6384582, 3
  %414 = add i64 %406, %413
  %415 = sub i64 %29, %414
  %416 = shl i64 %.16583, 3
  %417 = add i64 %415, %416
  %diff.check1004 = icmp ult i64 %417, 32
  br i1 %diff.check1004, label %scalar.ph1007.preheader, label %vector.ph1009

vector.ph1009:                                    ; preds = %vector.memcheck1003
  %n.vec1011 = and i64 %407, -4
  %ind.end1013 = add i64 %.16583, %n.vec1011
  %ind.end1015 = add i64 %79, %n.vec1011
  %418 = getelementptr double, ptr %412, i64 %79
  %419 = getelementptr double, ptr %5, i64 %.16583
  br label %vector.body1017

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

middle.block1006:                                 ; preds = %vector.body1017
  %cmp.n1024 = icmp eq i64 %407, %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 ], [ %441, %scalar.ph1007 ]
  %.not437.not573 = icmp slt i64 %.6384582, %60
  br i1 %.not437.not573, label %.lr.ph576, label %._crit_edge577

.lr.ph576:                                        ; preds = %.preheader476
  %425 = mul nsw i64 %.6384582, %51
  %invariant.gep579 = getelementptr double, ptr %3, i64 %425
  %min.iters.check985 = icmp ult i64 %408, 4
  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
  %426 = shl i64 %.16583, 3
  %427 = add i64 %410, %426
  %428 = shl i64 %indvar980.lcssa, 3
  %429 = add i64 %428, %427
  %diff.check982 = icmp ult i64 %429, 32
  br i1 %diff.check982, label %scalar.ph984.preheader, label %vector.ph986

vector.ph986:                                     ; preds = %vector.memcheck979
  %n.vec988 = and i64 %408, -4
  %ind.end989 = add i64 %.lcssa777, %n.vec988
  %ind.end991 = add i64 %.6384582, %n.vec988
  %430 = getelementptr double, ptr %invariant.gep579, i64 %.6384582
  %431 = getelementptr double, ptr %5, i64 %.lcssa777
  br label %vector.body993

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

middle.block983:                                  ; preds = %vector.body993
  %cmp.n1000 = icmp eq i64 %408, %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 [ %441, %scalar.ph1007 ], [ %.17572.ph, %scalar.ph1007.preheader ]
  %.8398571 = phi i64 [ %442, %scalar.ph1007 ], [ %.8398571.ph, %scalar.ph1007.preheader ]
  %437 = mul nsw i64 %.8398571, %51
  %438 = getelementptr double, ptr %412, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !9
  %440 = getelementptr inbounds double, ptr %5, i64 %.17572
  store double %439, ptr %440, align 8, !tbaa !9
  %441 = add nsw i64 %.17572, 1
  %442 = add nuw nsw i64 %.8398571, 1
  %.not436.not = icmp ult i64 %.8398571, %411
  %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 [ %445, %scalar.ph984 ], [ %.18575.ph, %scalar.ph984.preheader ]
  %.9399574 = phi i64 [ %446, %scalar.ph984 ], [ %.9399574.ph, %scalar.ph984.preheader ]
  %gep580 = getelementptr double, ptr %invariant.gep579, i64 %.9399574
  %443 = load double, ptr %gep580, align 8, !tbaa !9
  %444 = getelementptr inbounds double, ptr %5, i64 %.18575
  store double %443, ptr %444, align 8, !tbaa !9
  %445 = add nsw i64 %.18575, 1
  %446 = add nuw nsw i64 %.9399574, 1
  %.not437.not = icmp slt i64 %446, %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 ], [ %445, %scalar.ph984 ]
  %447 = add nuw nsw i64 %.6384582, 1
  %exitcond714.not = icmp eq i64 %447, %79
  br i1 %exitcond714.not, label %.loopexit, label %.lr.ph584, !llvm.loop !54

.preheader471.lr.ph:                              ; preds = %398
  %448 = xor i64 %60, -1
  %449 = add nsw i64 %78, %448
  %450 = shl nuw i64 %60, 1
  %451 = shl i64 %79, 4
  %452 = add i64 %451, %19
  %453 = add i64 %452, 24
  %454 = shl i64 %60, 4
  %455 = add i64 %454, %18
  %456 = sub i64 %453, %455
  %457 = add nuw i64 %60, 2305843009213693951
  %458 = mul i64 %51, %457
  %459 = shl i64 %458, 3
  %460 = add i64 %459, %16
  %461 = sub i64 %17, %460
  %462 = shl i64 %51, 3
  %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 [ %449, %.preheader471.lr.ph ], [ %500, %._crit_edge627 ]
  %.7385.in631 = phi i64 [ %60, %.preheader471.lr.ph ], [ %.7385633, %._crit_edge627 ]
  %463 = add i64 %indvar1110, 1
  %464 = shl i64 %indvar1110, 4
  %465 = add i64 %456, %464
  %.7385633 = add nsw i64 %.7385.in631, -1
  %466 = mul nsw i64 %.7385633, %51
  %invariant.gep620 = getelementptr double, ptr %3, i64 %466
  %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
  %467 = mul i64 %462, %indvar1110
  %468 = add i64 %461, %467
  %469 = shl i64 %.19632, 3
  %470 = add i64 %468, %469
  %diff.check1132 = icmp ult i64 %470, 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
  %471 = getelementptr double, ptr %5, i64 %.19632
  br label %vector.body1142

vector.body1142:                                  ; preds = %vector.body1142, %vector.ph1136
  %index1143 = phi i64 [ 0, %vector.ph1136 ], [ %index.next1147, %vector.body1142 ]
  %472 = getelementptr double, ptr %invariant.gep620, i64 %index1143
  %473 = getelementptr i8, ptr %472, i64 16
  %wide.load1145 = load <2 x double>, ptr %472, align 8, !tbaa !9
  %wide.load1146 = load <2 x double>, ptr %473, align 8, !tbaa !9
  %474 = getelementptr double, ptr %471, i64 %index1143
  %475 = getelementptr inbounds i8, ptr %474, i64 16
  store <2 x double> %wide.load1145, ptr %474, align 8, !tbaa !9
  store <2 x double> %wide.load1146, ptr %475, align 8, !tbaa !9
  %index.next1147 = add nuw i64 %index1143, 4
  %476 = icmp eq i64 %index.next1147, %n.vec1138
  br i1 %476, 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 [ %479, %scalar.ph1134 ], [ %.20619.ph, %scalar.ph1134.preheader ]
  %.10400618 = phi i64 [ %480, %scalar.ph1134 ], [ %.10400618.ph, %scalar.ph1134.preheader ]
  %gep621 = getelementptr double, ptr %invariant.gep620, i64 %.10400618
  %477 = load double, ptr %gep621, align 8, !tbaa !9
  %478 = getelementptr inbounds double, ptr %5, i64 %.20619
  store double %477, ptr %478, align 8, !tbaa !9
  %479 = add nsw i64 %.20619, 1
  %480 = add nuw nsw i64 %.10400618, 1
  %.not433.not = icmp slt i64 %480, %.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 ], [ %479, %scalar.ph1134 ]
  %481 = sub nsw i64 %.7385633, %79
  %.not434.not622 = icmp slt i64 %481, %79
  br i1 %.not434.not622, label %.lr.ph626, label %._crit_edge627

.lr.ph626:                                        ; preds = %.loopexit1233
  %482 = getelementptr double, ptr %3, i64 %481
  %min.iters.check1115 = icmp ugt i64 %463, 5
  %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
  %483 = shl i64 %.19632, 3
  %484 = add i64 %465, %483
  %485 = shl i64 %.10400618.lcssa, 3
  %486 = add i64 %485, %484
  %diff.check1112 = icmp ult i64 %486, 32
  br i1 %diff.check1112, label %scalar.ph1114.preheader, label %vector.ph1116

vector.ph1116:                                    ; preds = %vector.memcheck1109
  %n.vec1118 = and i64 %463, -4
  %ind.end1119 = add i64 %.lcssa771, %n.vec1118
  %ind.end1121 = add i64 %481, %n.vec1118
  %487 = getelementptr double, ptr %482, i64 %481
  %488 = getelementptr double, ptr %5, i64 %.lcssa771
  br label %vector.body1123

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

middle.block1113:                                 ; preds = %vector.body1123
  %cmp.n1130 = icmp eq i64 %463, %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 [ %481, %vector.memcheck1109 ], [ %481, %.lr.ph626 ], [ %ind.end1121, %middle.block1113 ]
  br label %scalar.ph1114

scalar.ph1114:                                    ; preds = %scalar.ph1114.preheader, %scalar.ph1114
  %.21624 = phi i64 [ %498, %scalar.ph1114 ], [ %.21624.ph, %scalar.ph1114.preheader ]
  %.2375623 = phi i64 [ %499, %scalar.ph1114 ], [ %.2375623.ph, %scalar.ph1114.preheader ]
  %494 = mul nsw i64 %.2375623, %51
  %495 = getelementptr double, ptr %482, i64 %494
  %496 = load double, ptr %495, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %5, i64 %.21624
  store double %496, ptr %497, align 8, !tbaa !9
  %498 = add nsw i64 %.21624, 1
  %499 = add nsw i64 %.2375623, 1
  %.not434.not = icmp slt i64 %499, %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 ], [ %498, %scalar.ph1114 ]
  %reass.sub = sub i64 %.21.lcssa, %450
  %500 = 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
  %501 = mul nsw i64 %79, %51
  %invariant.gep591 = getelementptr double, ptr %3, i64 %501
  %502 = add nuw nsw i64 %79, 1
  %smax = tail call i64 @llvm.smax.i64(i64 %60, i64 %502)
  %503 = sub nsw i64 %smax, %79
  %min.iters.check1030 = icmp ult i64 %503, 14
  br i1 %min.iters.check1030, label %scalar.ph1029.preheader, label %vector.memcheck1026

vector.memcheck1026:                              ; preds = %.lr.ph588
  %504 = shl i64 %51, 3
  %505 = add i64 %504, 8
  %506 = mul i64 %79, %505
  %507 = add i64 %506, %26
  %508 = sub i64 %27, %507
  %diff.check1027 = icmp ult i64 %508, 32
  br i1 %diff.check1027, label %scalar.ph1029.preheader, label %vector.ph1031

vector.ph1031:                                    ; preds = %vector.memcheck1026
  %n.vec1033 = and i64 %503, -4
  %ind.end1035 = add i64 %79, %n.vec1033
  %509 = 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 ]
  %510 = getelementptr double, ptr %509, i64 %index1038
  %511 = getelementptr i8, ptr %510, i64 16
  %wide.load1040 = load <2 x double>, ptr %510, align 8, !tbaa !9
  %wide.load1041 = load <2 x double>, ptr %511, align 8, !tbaa !9
  %512 = getelementptr inbounds double, ptr %5, i64 %index1038
  %513 = getelementptr inbounds i8, ptr %512, i64 16
  store <2 x double> %wide.load1040, ptr %512, align 8, !tbaa !9
  store <2 x double> %wide.load1041, ptr %513, align 8, !tbaa !9
  %index.next1042 = add nuw i64 %index1038, 4
  %514 = icmp eq i64 %index.next1042, %n.vec1033
  br i1 %514, label %middle.block1028, label %vector.body1037, !llvm.loop !60

middle.block1028:                                 ; preds = %vector.body1037
  %cmp.n1043 = icmp eq i64 %503, %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 [ %517, %scalar.ph1029 ], [ %.22587.ph, %scalar.ph1029.preheader ]
  %.11401586 = phi i64 [ %518, %scalar.ph1029 ], [ %.11401586.ph, %scalar.ph1029.preheader ]
  %gep592 = getelementptr double, ptr %invariant.gep591, i64 %.11401586
  %515 = load double, ptr %gep592, align 8, !tbaa !9
  %516 = getelementptr inbounds double, ptr %5, i64 %.22587
  store double %515, ptr %516, align 8, !tbaa !9
  %517 = add nuw nsw i64 %.22587, 1
  %518 = add nuw nsw i64 %.11401586, 1
  %.not426.not = icmp slt i64 %518, %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 ], [ %517, %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
  %519 = add nuw nsw i64 %79, 1
  %520 = add nsw i64 %79, -2
  %521 = mul i64 %51, %519
  %522 = add i64 %521, %79
  %523 = shl i64 %522, 3
  %524 = add i64 %523, %24
  %525 = sub i64 %25, %524
  %526 = shl i64 %51, 3
  %527 = sub nuw nsw i64 -8, %526
  %528 = xor i64 %79, -1
  %529 = add nsw i64 %60, %528
  %ident.check1065.not = icmp eq i64 %51, 1
  %invariant.gep1376 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1378 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1380 = getelementptr i8, ptr %5, 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 ], [ %588, %._crit_edge600 ]
  %530 = sub i64 %529, %.8386605
  %531 = mul i64 %527, %.8386605
  %532 = add i64 %525, %531
  %533 = getelementptr double, ptr %3, 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
  %534 = shl i64 %.8386605, 3
  %535 = add i64 %534, %22
  %536 = sub i64 %23, %535
  %537 = shl i64 %.23606, 3
  %538 = add i64 %536, %537
  %diff.check1067 = icmp ult i64 %538, 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
  %539 = getelementptr double, ptr %5, i64 %.23606
  br label %vector.body1077

vector.body1077:                                  ; preds = %vector.body1077, %vector.ph1071
  %index1078 = phi i64 [ 0, %vector.ph1071 ], [ %index.next1082, %vector.body1077 ]
  %540 = getelementptr double, ptr %533, i64 %index1078
  %541 = getelementptr i8, ptr %540, i64 16
  %wide.load1080 = load <2 x double>, ptr %540, align 8, !tbaa !9
  %wide.load1081 = load <2 x double>, ptr %541, align 8, !tbaa !9
  %542 = getelementptr double, ptr %539, i64 %index1078
  %543 = getelementptr inbounds i8, ptr %542, i64 16
  store <2 x double> %wide.load1080, ptr %542, align 8, !tbaa !9
  store <2 x double> %wide.load1081, ptr %543, align 8, !tbaa !9
  %index.next1082 = add nuw i64 %index1078, 4
  %544 = icmp eq i64 %index.next1082, %n.vec1073
  br i1 %544, 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 ]
  %545 = 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 [ %550, %scalar.ph1069.prol ], [ %.24594.ph, %scalar.ph1069.preheader ]
  %.12402593.prol = phi i64 [ %551, %scalar.ph1069.prol ], [ %.12402593.ph, %scalar.ph1069.preheader ]
  %prol.iter1295 = phi i64 [ %prol.iter1295.next, %scalar.ph1069.prol ], [ 0, %scalar.ph1069.preheader ]
  %546 = mul nsw i64 %.12402593.prol, %51
  %547 = getelementptr double, ptr %533, i64 %546
  %548 = load double, ptr %547, align 8, !tbaa !9
  %549 = getelementptr inbounds double, ptr %5, i64 %.24594.prol
  store double %548, ptr %549, align 8, !tbaa !9
  %550 = add nsw i64 %.24594.prol, 1
  %551 = 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 ], [ %550, %scalar.ph1069.prol ]
  %.24594.unr = phi i64 [ %.24594.ph, %scalar.ph1069.preheader ], [ %550, %scalar.ph1069.prol ]
  %.12402593.unr = phi i64 [ %.12402593.ph, %scalar.ph1069.preheader ], [ %551, %scalar.ph1069.prol ]
  %552 = icmp ult i64 %545, 3
  br i1 %552, label %.loopexit1234, label %scalar.ph1069

scalar.ph1069:                                    ; preds = %scalar.ph1069.prol.loopexit, %scalar.ph1069
  %.24594 = phi i64 [ %569, %scalar.ph1069 ], [ %.24594.unr, %scalar.ph1069.prol.loopexit ]
  %.12402593 = phi i64 [ %570, %scalar.ph1069 ], [ %.12402593.unr, %scalar.ph1069.prol.loopexit ]
  %553 = mul nsw i64 %.12402593, %51
  %554 = getelementptr double, ptr %533, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !9
  %556 = getelementptr inbounds double, ptr %5, i64 %.24594
  store double %555, ptr %556, align 8, !tbaa !9
  %557 = add nuw nsw i64 %.12402593, 1
  %558 = mul nsw i64 %557, %51
  %559 = getelementptr double, ptr %533, i64 %558
  %560 = load double, ptr %559, align 8, !tbaa !9
  %gep1377 = getelementptr double, ptr %invariant.gep1376, i64 %.24594
  store double %560, ptr %gep1377, align 8, !tbaa !9
  %561 = add nuw nsw i64 %.12402593, 2
  %562 = mul nsw i64 %561, %51
  %563 = getelementptr double, ptr %533, i64 %562
  %564 = load double, ptr %563, align 8, !tbaa !9
  %gep1379 = getelementptr double, ptr %invariant.gep1378, i64 %.24594
  store double %564, ptr %gep1379, align 8, !tbaa !9
  %565 = add nuw nsw i64 %.12402593, 3
  %566 = mul nsw i64 %565, %51
  %567 = getelementptr double, ptr %533, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !9
  %gep1381 = getelementptr double, ptr %invariant.gep1380, i64 %.24594
  store double %568, ptr %gep1381, align 8, !tbaa !9
  %569 = add nsw i64 %.24594, 4
  %570 = add nuw nsw i64 %.12402593, 4
  %exitcond717.not.3 = icmp eq i64 %570, %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 ], [ %565, %scalar.ph1069 ]
  %.lcssa774 = phi i64 [ %ind.end1074, %middle.block1068 ], [ %.lcssa1260.unr, %scalar.ph1069.prol.loopexit ], [ %569, %scalar.ph1069 ]
  %571 = add nuw nsw i64 %519, %.8386605
  %.not431.not595 = icmp slt i64 %571, %60
  br i1 %.not431.not595, label %.lr.ph599, label %._crit_edge600

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

vector.memcheck1044:                              ; preds = %.lr.ph599
  %573 = shl i64 %.23606, 3
  %574 = add i64 %532, %573
  %575 = shl i64 %.12402593.lcssa, 3
  %576 = add i64 %575, %574
  %diff.check1045 = icmp ult i64 %576, 32
  br i1 %diff.check1045, label %scalar.ph1047.preheader, label %vector.ph1049

vector.ph1049:                                    ; preds = %vector.memcheck1044
  %n.vec1051 = and i64 %530, -4
  %ind.end1052 = add i64 %.lcssa774, %n.vec1051
  %ind.end1054 = add i64 %571, %n.vec1051
  %577 = getelementptr double, ptr %invariant.gep602, i64 %571
  %578 = getelementptr double, ptr %5, i64 %.lcssa774
  br label %vector.body1056

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

middle.block1046:                                 ; preds = %vector.body1056
  %cmp.n1063 = icmp eq i64 %530, %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 [ %571, %vector.memcheck1044 ], [ %571, %.lr.ph599 ], [ %ind.end1054, %middle.block1046 ]
  br label %scalar.ph1047

scalar.ph1047:                                    ; preds = %scalar.ph1047.preheader, %scalar.ph1047
  %.25597 = phi i64 [ %586, %scalar.ph1047 ], [ %.25597.ph, %scalar.ph1047.preheader ]
  %.13403596 = phi i64 [ %587, %scalar.ph1047 ], [ %.13403596.ph, %scalar.ph1047.preheader ]
  %gep603 = getelementptr double, ptr %invariant.gep602, i64 %.13403596
  %584 = load double, ptr %gep603, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %5, i64 %.25597
  store double %584, ptr %585, align 8, !tbaa !9
  %586 = add nsw i64 %.25597, 1
  %587 = add nuw nsw i64 %.13403596, 1
  %.not431.not = icmp slt i64 %587, %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 ], [ %586, %scalar.ph1047 ]
  %588 = add nuw nsw i64 %.8386605, 1
  %indvars.iv.next716 = add nuw nsw i64 %indvars.iv715, 1
  %exitcond719.not = icmp eq i64 %.8386605, %520
  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 ]
  %589 = add nsw i64 %79, -1
  %umax = tail call i64 @llvm.umax.i64(i64 %79, i64 1)
  %590 = add i64 %21, 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 %5, i64 8
  %invariant.gep1384 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1386 = getelementptr i8, ptr %5, 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 [ %589, %.preheader473.us.preheader ], [ %630, %._crit_edge613.us ]
  %591 = getelementptr double, ptr %3, i64 %.9387616.us
  br i1 %or.cond1247, label %vector.memcheck1087, label %scalar.ph1092.preheader

vector.memcheck1087:                              ; preds = %.preheader473.us
  %592 = add i64 %79, %indvar1088
  %593 = shl i64 %592, 3
  %594 = add i64 %593, %20
  %595 = sub i64 %590, %594
  %596 = shl i64 %.26617.us, 3
  %597 = add i64 %595, %596
  %diff.check1090 = icmp ult i64 %597, 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
  %598 = getelementptr double, ptr %5, i64 %.26617.us
  br label %vector.body1100

vector.body1100:                                  ; preds = %vector.body1100, %vector.ph1094
  %index1101 = phi i64 [ 0, %vector.ph1094 ], [ %index.next1105, %vector.body1100 ]
  %599 = getelementptr double, ptr %591, i64 %index1101
  %600 = getelementptr i8, ptr %599, i64 16
  %wide.load1103 = load <2 x double>, ptr %599, align 8, !tbaa !9
  %wide.load1104 = load <2 x double>, ptr %600, align 8, !tbaa !9
  %601 = getelementptr double, ptr %598, i64 %index1101
  %602 = getelementptr inbounds i8, ptr %601, i64 16
  store <2 x double> %wide.load1103, ptr %601, align 8, !tbaa !9
  store <2 x double> %wide.load1104, ptr %602, align 8, !tbaa !9
  %index.next1105 = add nuw i64 %index1101, 4
  %603 = icmp eq i64 %index.next1105, %n.vec1096
  br i1 %603, 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 [ %608, %scalar.ph1092.prol ], [ %.27611.us.ph, %scalar.ph1092.preheader ]
  %.14404610.us.prol = phi i64 [ %609, %scalar.ph1092.prol ], [ %.14404610.us.ph, %scalar.ph1092.preheader ]
  %prol.iter1298 = phi i64 [ %prol.iter1298.next, %scalar.ph1092.prol ], [ 0, %scalar.ph1092.preheader ]
  %604 = mul nsw i64 %.14404610.us.prol, %51
  %605 = getelementptr double, ptr %591, i64 %604
  %606 = load double, ptr %605, align 8, !tbaa !9
  %607 = getelementptr inbounds double, ptr %5, i64 %.27611.us.prol
  store double %606, ptr %607, align 8, !tbaa !9
  %608 = add nsw i64 %.27611.us.prol, 1
  %609 = 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 ], [ %608, %scalar.ph1092.prol ]
  %.27611.us.unr = phi i64 [ %.27611.us.ph, %scalar.ph1092.preheader ], [ %608, %scalar.ph1092.prol ]
  %.14404610.us.unr = phi i64 [ %.14404610.us.ph, %scalar.ph1092.preheader ], [ %609, %scalar.ph1092.prol ]
  %610 = sub nsw i64 %.14404610.us.ph, %umax
  %611 = icmp ugt i64 %610, -4
  br i1 %611, label %._crit_edge613.us, label %scalar.ph1092

scalar.ph1092:                                    ; preds = %scalar.ph1092.prol.loopexit, %scalar.ph1092
  %.27611.us = phi i64 [ %628, %scalar.ph1092 ], [ %.27611.us.unr, %scalar.ph1092.prol.loopexit ]
  %.14404610.us = phi i64 [ %629, %scalar.ph1092 ], [ %.14404610.us.unr, %scalar.ph1092.prol.loopexit ]
  %612 = mul nsw i64 %.14404610.us, %51
  %613 = getelementptr double, ptr %591, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !9
  %615 = getelementptr inbounds double, ptr %5, i64 %.27611.us
  store double %614, ptr %615, align 8, !tbaa !9
  %616 = add nuw nsw i64 %.14404610.us, 1
  %617 = mul nsw i64 %616, %51
  %618 = getelementptr double, ptr %591, i64 %617
  %619 = load double, ptr %618, align 8, !tbaa !9
  %gep1383 = getelementptr double, ptr %invariant.gep1382, i64 %.27611.us
  store double %619, ptr %gep1383, align 8, !tbaa !9
  %620 = add nuw nsw i64 %.14404610.us, 2
  %621 = mul nsw i64 %620, %51
  %622 = getelementptr double, ptr %591, i64 %621
  %623 = load double, ptr %622, align 8, !tbaa !9
  %gep1385 = getelementptr double, ptr %invariant.gep1384, i64 %.27611.us
  store double %623, ptr %gep1385, align 8, !tbaa !9
  %624 = add nuw nsw i64 %.14404610.us, 3
  %625 = mul nsw i64 %624, %51
  %626 = getelementptr double, ptr %591, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !9
  %gep1387 = getelementptr double, ptr %invariant.gep1386, i64 %.27611.us
  store double %627, ptr %gep1387, align 8, !tbaa !9
  %628 = add nsw i64 %.27611.us, 4
  %629 = add nuw nsw i64 %.14404610.us, 4
  %exitcond720.not.3 = icmp eq i64 %79, %629
  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 ], [ %628, %scalar.ph1092 ]
  %630 = add nsw i64 %.9387616.us, 1
  %.not428.not.us = icmp slt i64 %630, %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 [ %651, %._crit_edge638.us ], [ 0, %.preheader470.us.preheader ]
  %631 = getelementptr double, ptr %3, i64 %.10388640.us
  br i1 %or.cond1248, label %vector.memcheck1152, label %scalar.ph1156.preheader

vector.memcheck1152:                              ; preds = %.preheader470.us
  %632 = add i64 %79, %.10388640.us
  %633 = shl i64 %632, 3
  %634 = add i64 %633, %14
  %635 = sub i64 %15, %634
  %636 = shl i64 %.28641.us, 3
  %637 = add i64 %635, %636
  %diff.check1153 = icmp ult i64 %637, 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
  %638 = getelementptr double, ptr %631, i64 %79
  %639 = getelementptr double, ptr %5, i64 %.28641.us
  br label %vector.body1165

vector.body1165:                                  ; preds = %vector.body1165, %vector.ph1158
  %index1166 = phi i64 [ 0, %vector.ph1158 ], [ %index.next1171, %vector.body1165 ]
  %640 = getelementptr double, ptr %638, i64 %index1166
  %641 = getelementptr i8, ptr %640, i64 16
  %wide.load1169 = load <2 x double>, ptr %640, align 8, !tbaa !9
  %wide.load1170 = load <2 x double>, ptr %641, align 8, !tbaa !9
  %642 = getelementptr double, ptr %639, i64 %index1166
  %643 = getelementptr inbounds i8, ptr %642, i64 16
  store <2 x double> %wide.load1169, ptr %642, align 8, !tbaa !9
  store <2 x double> %wide.load1170, ptr %643, align 8, !tbaa !9
  %index.next1171 = add nuw i64 %index1166, 4
  %644 = icmp eq i64 %index.next1171, %n.vec1160
  br i1 %644, 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 [ %649, %scalar.ph1156 ], [ %.29636.us.ph, %scalar.ph1156.preheader ]
  %.15405635.us = phi i64 [ %650, %scalar.ph1156 ], [ %.15405635.us.ph, %scalar.ph1156.preheader ]
  %645 = mul nsw i64 %.15405635.us, %51
  %646 = getelementptr double, ptr %631, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !9
  %648 = getelementptr inbounds double, ptr %5, i64 %.29636.us
  store double %647, ptr %648, align 8, !tbaa !9
  %649 = add nsw i64 %.29636.us, 1
  %650 = add nuw nsw i64 %.15405635.us, 1
  %.not425.not.us = icmp slt i64 %650, %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 ], [ %649, %scalar.ph1156 ]
  %651 = 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
  %652 = add nuw nsw i64 %79, 1
  %653 = add nsw i64 %79, -1
  %654 = add i64 %13, -8
  %655 = xor i64 %79, -1
  %656 = add nsw i64 %60, %655
  %657 = sub i64 %11, %10
  %658 = mul i64 %51, -8
  %invariant.gep1390 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1394 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1396 = getelementptr i8, ptr %5, 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 ], [ %708, %._crit_edge654 ]
  %659 = sub i64 %656, %.11389657
  %660 = add nuw i64 %79, %.11389657
  %661 = shl i64 %660, 4
  %662 = add i64 %661, %12
  %663 = sub i64 %654, %662
  %664 = mul nsw i64 %.11389657, %51
  %invariant.gep645 = getelementptr double, ptr %3, i64 %664
  %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
  %665 = mul i64 %658, %.11389657
  %666 = add i64 %657, %665
  %667 = shl i64 %.30658, 3
  %668 = add i64 %666, %667
  %diff.check1196 = icmp ult i64 %668, 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
  %669 = getelementptr double, ptr %5, i64 %.30658
  br label %vector.body1206

vector.body1206:                                  ; preds = %vector.body1206, %vector.ph1200
  %index1207 = phi i64 [ 0, %vector.ph1200 ], [ %index.next1211, %vector.body1206 ]
  %670 = getelementptr double, ptr %invariant.gep645, i64 %index1207
  %671 = getelementptr i8, ptr %670, i64 16
  %wide.load1209 = load <2 x double>, ptr %670, align 8, !tbaa !9
  %wide.load1210 = load <2 x double>, ptr %671, align 8, !tbaa !9
  %672 = getelementptr double, ptr %669, i64 %index1207
  %673 = getelementptr inbounds i8, ptr %672, i64 16
  store <2 x double> %wide.load1209, ptr %672, align 8, !tbaa !9
  store <2 x double> %wide.load1210, ptr %673, align 8, !tbaa !9
  %index.next1211 = add nuw i64 %index1207, 4
  %674 = icmp eq i64 %index.next1211, %n.vec1202
  br i1 %674, 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 ]
  %675 = 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 [ %678, %scalar.ph1198.prol ], [ %.31648.ph, %scalar.ph1198.preheader ]
  %.16406647.prol = phi i64 [ %679, %scalar.ph1198.prol ], [ %.16406647.ph, %scalar.ph1198.preheader ]
  %prol.iter1301 = phi i64 [ %prol.iter1301.next, %scalar.ph1198.prol ], [ 0, %scalar.ph1198.preheader ]
  %gep646.prol = getelementptr double, ptr %invariant.gep645, i64 %.16406647.prol
  %676 = load double, ptr %gep646.prol, align 8, !tbaa !9
  %677 = getelementptr inbounds double, ptr %5, i64 %.31648.prol
  store double %676, ptr %677, align 8, !tbaa !9
  %678 = add nsw i64 %.31648.prol, 1
  %679 = 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 ], [ %678, %scalar.ph1198.prol ]
  %.31648.unr = phi i64 [ %.31648.ph, %scalar.ph1198.preheader ], [ %678, %scalar.ph1198.prol ]
  %.16406647.unr = phi i64 [ %.16406647.ph, %scalar.ph1198.preheader ], [ %679, %scalar.ph1198.prol ]
  %680 = icmp ult i64 %675, 3
  br i1 %680, label %.loopexit1232, label %scalar.ph1198.preheader.new

scalar.ph1198.preheader.new:                      ; preds = %scalar.ph1198.prol.loopexit
  %invariant.gep1388 = getelementptr i8, ptr %invariant.gep645, i64 8
  %invariant.gep1392 = 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 ], [ %687, %scalar.ph1198 ]
  %.16406647 = phi i64 [ %.16406647.unr, %scalar.ph1198.preheader.new ], [ %688, %scalar.ph1198 ]
  %gep646 = getelementptr double, ptr %invariant.gep645, i64 %.16406647
  %681 = load double, ptr %gep646, align 8, !tbaa !9
  %682 = getelementptr inbounds double, ptr %5, i64 %.31648
  store double %681, ptr %682, align 8, !tbaa !9
  %gep1389 = getelementptr double, ptr %invariant.gep1388, i64 %.16406647
  %683 = load double, ptr %gep1389, align 8, !tbaa !9
  %gep1391 = getelementptr double, ptr %invariant.gep1390, i64 %.31648
  store double %683, ptr %gep1391, align 8, !tbaa !9
  %gep1393 = getelementptr double, ptr %invariant.gep1392, i64 %.16406647
  %684 = load double, ptr %gep1393, align 8, !tbaa !9
  %gep1395 = getelementptr double, ptr %invariant.gep1394, i64 %.31648
  store double %684, ptr %gep1395, align 8, !tbaa !9
  %685 = add nuw nsw i64 %.16406647, 3
  %gep646.3 = getelementptr double, ptr %invariant.gep645, i64 %685
  %686 = load double, ptr %gep646.3, align 8, !tbaa !9
  %gep1397 = getelementptr double, ptr %invariant.gep1396, i64 %.31648
  store double %686, ptr %gep1397, align 8, !tbaa !9
  %687 = add nsw i64 %.31648, 4
  %688 = add nuw nsw i64 %.16406647, 4
  %exitcond726.not.3 = icmp eq i64 %688, %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 ], [ %685, %scalar.ph1198 ]
  %.lcssa = phi i64 [ %ind.end1203, %middle.block1197 ], [ %.lcssa1250.unr, %scalar.ph1198.prol.loopexit ], [ %687, %scalar.ph1198 ]
  %689 = add nuw nsw i64 %652, %.11389657
  %.not424.not649 = icmp slt i64 %689, %60
  br i1 %.not424.not649, label %.lr.ph653, label %._crit_edge654

.lr.ph653:                                        ; preds = %.loopexit1232
  %690 = getelementptr double, ptr %3, i64 %689
  %min.iters.check1179 = icmp ugt i64 %659, 5
  %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
  %691 = shl i64 %.30658, 3
  %692 = add i64 %663, %691
  %693 = shl i64 %.16406647.lcssa, 3
  %694 = add i64 %693, %692
  %diff.check1176 = icmp ult i64 %694, 32
  br i1 %diff.check1176, label %scalar.ph1178.preheader, label %vector.ph1180

vector.ph1180:                                    ; preds = %vector.memcheck1175
  %n.vec1182 = and i64 %659, -4
  %ind.end1183 = add i64 %.lcssa, %n.vec1182
  %ind.end1185 = add i64 %689, %n.vec1182
  %695 = getelementptr double, ptr %690, i64 %689
  %696 = getelementptr double, ptr %5, i64 %.lcssa
  br label %vector.body1187

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

middle.block1177:                                 ; preds = %vector.body1187
  %cmp.n1194 = icmp eq i64 %659, %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 [ %689, %vector.memcheck1175 ], [ %689, %.lr.ph653 ], [ %ind.end1185, %middle.block1177 ]
  br label %scalar.ph1178

scalar.ph1178:                                    ; preds = %scalar.ph1178.preheader, %scalar.ph1178
  %.32651 = phi i64 [ %706, %scalar.ph1178 ], [ %.32651.ph, %scalar.ph1178.preheader ]
  %.3376650 = phi i64 [ %707, %scalar.ph1178 ], [ %.3376650.ph, %scalar.ph1178.preheader ]
  %702 = mul nsw i64 %.3376650, %51
  %703 = getelementptr double, ptr %690, i64 %702
  %704 = load double, ptr %703, align 8, !tbaa !9
  %705 = getelementptr inbounds double, ptr %5, i64 %.32651
  store double %704, ptr %705, align 8, !tbaa !9
  %706 = add nsw i64 %.32651, 1
  %707 = add nuw nsw i64 %.3376650, 1
  %.not424.not = icmp slt i64 %707, %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 ], [ %706, %scalar.ph1178 ]
  %708 = add nuw nsw i64 %.11389657, 1
  %indvars.iv.next725 = add nuw nsw i64 %indvars.iv724, 1
  %exitcond727.not = icmp eq i64 %708, %653
  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 ], [ %653, %._crit_edge654 ]
  %.30.lcssa = phi i64 [ %.lcssa770, %.split643.us ], [ %.32.lcssa, %._crit_edge654 ]
  %709 = mul nsw i64 %.11389.lcssa, %51
  %invariant.gep662 = getelementptr double, ptr %3, i64 %709
  %710 = add nsw i64 %.11389.lcssa, 1
  %min.iters.check1218 = icmp ult i64 %710, 16
  br i1 %min.iters.check1218, label %scalar.ph1217.preheader, label %vector.memcheck1214

vector.memcheck1214:                              ; preds = %._crit_edge659
  %711 = shl i64 %.30.lcssa, 3
  %712 = add i64 %711, %9
  %713 = mul i64 %.11389.lcssa, %51
  %714 = shl i64 %713, 3
  %715 = add i64 %714, %8
  %716 = sub i64 %712, %715
  %diff.check1215 = icmp ult i64 %716, 32
  br i1 %diff.check1215, label %scalar.ph1217.preheader, label %vector.ph1219

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

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

middle.block1216:                                 ; preds = %vector.body1225
  %cmp.n1231 = icmp eq i64 %710, %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 ]
  %723 = add nsw i64 %.11389.lcssa, 1
  %724 = sub i64 %.11389.lcssa, %.17407664.ph
  %xtraiter1302 = and i64 %723, 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 [ %727, %scalar.ph1217.prol ], [ %.33665.ph, %scalar.ph1217.preheader ]
  %.17407664.prol = phi i64 [ %728, %scalar.ph1217.prol ], [ %.17407664.ph, %scalar.ph1217.preheader ]
  %prol.iter1304 = phi i64 [ %prol.iter1304.next, %scalar.ph1217.prol ], [ 0, %scalar.ph1217.preheader ]
  %gep663.prol = getelementptr double, ptr %invariant.gep662, i64 %.17407664.prol
  %725 = load double, ptr %gep663.prol, align 8, !tbaa !9
  %726 = getelementptr inbounds double, ptr %5, i64 %.33665.prol
  store double %725, ptr %726, align 8, !tbaa !9
  %727 = add nsw i64 %.33665.prol, 1
  %728 = 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 ], [ %727, %scalar.ph1217.prol ]
  %.17407664.unr = phi i64 [ %.17407664.ph, %scalar.ph1217.preheader ], [ %728, %scalar.ph1217.prol ]
  %729 = icmp ult i64 %724, 3
  br i1 %729, label %.loopexit, label %scalar.ph1217.preheader.new

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

scalar.ph1217:                                    ; preds = %scalar.ph1217, %scalar.ph1217.preheader.new
  %.33665 = phi i64 [ %.33665.unr, %scalar.ph1217.preheader.new ], [ %736, %scalar.ph1217 ]
  %.17407664 = phi i64 [ %.17407664.unr, %scalar.ph1217.preheader.new ], [ %737, %scalar.ph1217 ]
  %gep663 = getelementptr double, ptr %invariant.gep662, i64 %.17407664
  %730 = load double, ptr %gep663, align 8, !tbaa !9
  %731 = getelementptr inbounds double, ptr %5, i64 %.33665
  store double %730, ptr %731, align 8, !tbaa !9
  %gep1399 = getelementptr double, ptr %invariant.gep1398, i64 %.17407664
  %732 = load double, ptr %gep1399, align 8, !tbaa !9
  %gep1401 = getelementptr double, ptr %invariant.gep1400, i64 %.33665
  store double %732, ptr %gep1401, align 8, !tbaa !9
  %gep1403 = getelementptr double, ptr %invariant.gep1402, i64 %.17407664
  %733 = load double, ptr %gep1403, align 8, !tbaa !9
  %gep1405 = getelementptr double, ptr %invariant.gep1404, i64 %.33665
  store double %733, ptr %gep1405, align 8, !tbaa !9
  %734 = add nuw nsw i64 %.17407664, 3
  %gep663.3 = getelementptr double, ptr %invariant.gep662, i64 %734
  %735 = load double, ptr %gep663.3, align 8, !tbaa !9
  %gep1407 = getelementptr double, ptr %invariant.gep1406, i64 %.33665
  store double %735, ptr %gep1407, align 8, !tbaa !9
  %736 = add nsw i64 %.33665, 4
  %737 = add nuw nsw i64 %.17407664, 4
  %exitcond728.not.3 = icmp eq i64 %734, %.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