; LLVM IR from kkumatani/distant_speech_recognition :: btk20_src/modulated (pc_lattice)

; 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"

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @Dpclat(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4) #3 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store i32 %3, ptr %9, align 4, !tbaa !9
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  %18 = load i32, ptr %10, align 4, !tbaa !9
  %19 = icmp eq i32 %18, 0
  br i1 %19, label %20, label %119

20:                                               ; preds = %5
  %21 = load ptr, ptr %6, align 8, !tbaa !5
  store double 1.000000e+00, ptr %21, align 8, !tbaa !11
  %22 = load ptr, ptr %8, align 8, !tbaa !5
  %23 = load double, ptr %22, align 8, !tbaa !11
  %24 = fneg double %23
  %25 = load ptr, ptr %7, align 8, !tbaa !5
  %26 = load i32, ptr %9, align 4, !tbaa !9
  %27 = sext i32 %26 to i64
  %28 = getelementptr inbounds double, ptr %25, i64 %27
  store double %24, ptr %28, align 8, !tbaa !11
  %29 = load ptr, ptr %8, align 8, !tbaa !5
  %30 = load double, ptr %29, align 8, !tbaa !11
  %31 = load ptr, ptr %8, align 8, !tbaa !5
  %32 = load double, ptr %31, align 8, !tbaa !11
  %33 = call double @llvm.fmuladd.f64(double %30, double %32, double 1.000000e+00)
  store double %33, ptr %14, align 8, !tbaa !11
  %34 = load double, ptr %14, align 8, !tbaa !11
  %35 = load double, ptr %14, align 8, !tbaa !11
  %36 = fmul double %34, %35
  %37 = load double, ptr %14, align 8, !tbaa !11
  %38 = fmul double %36, %37
  store double %38, ptr %15, align 8, !tbaa !11
  store i32 1, ptr %11, align 4, !tbaa !9
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %39, ptr %16, align 8, !tbaa !5
  %40 = load i32, ptr %9, align 4, !tbaa !9
  %41 = sub nsw i32 %40, 1
  store i32 %41, ptr %13, align 4, !tbaa !9
  %42 = load ptr, ptr %7, align 8, !tbaa !5
  %43 = load i32, ptr %13, align 4, !tbaa !9
  %44 = sext i32 %43 to i64
  %45 = getelementptr inbounds double, ptr %42, i64 %44
  store ptr %45, ptr %17, align 8, !tbaa !5
  br label %46

46:                                               ; preds = %109, %20
  %47 = load i32, ptr %11, align 4, !tbaa !9
  %48 = load i32, ptr %9, align 4, !tbaa !9
  %49 = icmp sle i32 %47, %48
  br i1 %49, label %50, label %118

50:                                               ; preds = %46
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = load double, ptr %51, align 8, !tbaa !11
  %53 = load ptr, ptr %17, align 8, !tbaa !5
  store double %52, ptr %53, align 8, !tbaa !11
  %54 = load ptr, ptr %8, align 8, !tbaa !5
  %55 = getelementptr inbounds double, ptr %54, i32 1
  store ptr %55, ptr %8, align 8, !tbaa !5
  %56 = load double, ptr %55, align 8, !tbaa !11
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  %58 = load double, ptr %57, align 8, !tbaa !11
  %59 = fmul double %56, %58
  %60 = load ptr, ptr %16, align 8, !tbaa !5
  store double %59, ptr %60, align 8, !tbaa !11
  store i32 1, ptr %12, align 4, !tbaa !9
  br label %61

61:                                               ; preds = %86, %50
  %62 = load i32, ptr %12, align 4, !tbaa !9
  %63 = load i32, ptr %11, align 4, !tbaa !9
  %64 = icmp slt i32 %62, %63
  br i1 %64, label %65, label %89

65:                                               ; preds = %61
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = load double, ptr %66, align 8, !tbaa !11
  %68 = load ptr, ptr %16, align 8, !tbaa !5
  %69 = getelementptr inbounds double, ptr %68, i32 1
  store ptr %69, ptr %16, align 8, !tbaa !5
  %70 = load double, ptr %69, align 8, !tbaa !11
  %71 = load ptr, ptr %17, align 8, !tbaa !5
  %72 = getelementptr inbounds double, ptr %71, i32 1
  store ptr %72, ptr %17, align 8, !tbaa !5
  %73 = load double, ptr %72, align 8, !tbaa !11
  %74 = call double @llvm.fmuladd.f64(double %67, double %70, double %73)
  store double %74, ptr %14, align 8, !tbaa !11
  %75 = load ptr, ptr %16, align 8, !tbaa !5
  %76 = load double, ptr %75, align 8, !tbaa !11
  %77 = load ptr, ptr %8, align 8, !tbaa !5
  %78 = load double, ptr %77, align 8, !tbaa !11
  %79 = load ptr, ptr %17, align 8, !tbaa !5
  %80 = load double, ptr %79, align 8, !tbaa !11
  %81 = fneg double %78
  %82 = call double @llvm.fmuladd.f64(double %81, double %80, double %76)
  %83 = load ptr, ptr %17, align 8, !tbaa !5
  store double %82, ptr %83, align 8, !tbaa !11
  %84 = load double, ptr %14, align 8, !tbaa !11
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  store double %84, ptr %85, align 8, !tbaa !11
  br label %86

86:                                               ; preds = %65
  %87 = load i32, ptr %12, align 4, !tbaa !9
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %12, align 4, !tbaa !9
  br label %61, !llvm.loop !13

89:                                               ; preds = %61
  %90 = load ptr, ptr %17, align 8, !tbaa !5
  %91 = getelementptr inbounds double, ptr %90, i32 1
  store ptr %91, ptr %17, align 8, !tbaa !5
  %92 = load double, ptr %91, align 8, !tbaa !11
  %93 = load ptr, ptr %16, align 8, !tbaa !5
  %94 = getelementptr inbounds double, ptr %93, i32 1
  store ptr %94, ptr %16, align 8, !tbaa !5
  store double %92, ptr %94, align 8, !tbaa !11
  %95 = load ptr, ptr %8, align 8, !tbaa !5
  %96 = load double, ptr %95, align 8, !tbaa !11
  %97 = fneg double %96
  %98 = load ptr, ptr %17, align 8, !tbaa !5
  %99 = load double, ptr %98, align 8, !tbaa !11
  %100 = fmul double %97, %99
  %101 = load ptr, ptr %17, align 8, !tbaa !5
  store double %100, ptr %101, align 8, !tbaa !11
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = load double, ptr %102, align 8, !tbaa !11
  %104 = load ptr, ptr %8, align 8, !tbaa !5
  %105 = load double, ptr %104, align 8, !tbaa !11
  %106 = call double @llvm.fmuladd.f64(double %103, double %105, double 1.000000e+00)
  %107 = load double, ptr %15, align 8, !tbaa !11
  %108 = fmul double %107, %106
  store double %108, ptr %15, align 8, !tbaa !11
  br label %109

109:                                              ; preds = %89
  %110 = load i32, ptr %11, align 4, !tbaa !9
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr %11, align 4, !tbaa !9
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %112, ptr %16, align 8, !tbaa !5
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = load i32, ptr %13, align 4, !tbaa !9
  %115 = add nsw i32 %114, -1
  store i32 %115, ptr %13, align 4, !tbaa !9
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds double, ptr %113, i64 %116
  store ptr %117, ptr %17, align 8, !tbaa !5
  br label %46, !llvm.loop !15

118:                                              ; preds = %46
  br label %357

119:                                              ; preds = %5
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  %121 = load double, ptr %120, align 8, !tbaa !11
  %122 = load ptr, ptr %6, align 8, !tbaa !5
  store double %121, ptr %122, align 8, !tbaa !11
  %123 = load ptr, ptr %7, align 8, !tbaa !5
  %124 = load i32, ptr %9, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %123, i64 %125
  store double 1.000000e+00, ptr %126, align 8, !tbaa !11
  %127 = load ptr, ptr %8, align 8, !tbaa !5
  %128 = load double, ptr %127, align 8, !tbaa !11
  %129 = load ptr, ptr %8, align 8, !tbaa !5
  %130 = load double, ptr %129, align 8, !tbaa !11
  %131 = call double @llvm.fmuladd.f64(double %128, double %130, double 1.000000e+00)
  store double %131, ptr %15, align 8, !tbaa !11
  store i32 1, ptr %11, align 4, !tbaa !9
  %132 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %132, ptr %16, align 8, !tbaa !5
  %133 = load i32, ptr %9, align 4, !tbaa !9
  %134 = sub nsw i32 %133, 1
  store i32 %134, ptr %13, align 4, !tbaa !9
  %135 = load ptr, ptr %7, align 8, !tbaa !5
  %136 = load i32, ptr %13, align 4, !tbaa !9
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds double, ptr %135, i64 %137
  store ptr %138, ptr %17, align 8, !tbaa !5
  br label %139

139:                                              ; preds = %202, %119
  %140 = load i32, ptr %11, align 4, !tbaa !9
  %141 = load i32, ptr %10, align 4, !tbaa !9
  %142 = icmp slt i32 %140, %141
  br i1 %142, label %143, label %211

143:                                              ; preds = %139
  %144 = load ptr, ptr %6, align 8, !tbaa !5
  %145 = load double, ptr %144, align 8, !tbaa !11
  %146 = load ptr, ptr %17, align 8, !tbaa !5
  store double %145, ptr %146, align 8, !tbaa !11
  %147 = load ptr, ptr %8, align 8, !tbaa !5
  %148 = getelementptr inbounds double, ptr %147, i32 1
  store ptr %148, ptr %8, align 8, !tbaa !5
  %149 = load double, ptr %148, align 8, !tbaa !11
  %150 = load ptr, ptr %6, align 8, !tbaa !5
  %151 = load double, ptr %150, align 8, !tbaa !11
  %152 = fmul double %149, %151
  %153 = load ptr, ptr %16, align 8, !tbaa !5
  store double %152, ptr %153, align 8, !tbaa !11
  store i32 1, ptr %12, align 4, !tbaa !9
  br label %154

154:                                              ; preds = %179, %143
  %155 = load i32, ptr %12, align 4, !tbaa !9
  %156 = load i32, ptr %11, align 4, !tbaa !9
  %157 = icmp slt i32 %155, %156
  br i1 %157, label %158, label %182

158:                                              ; preds = %154
  %159 = load ptr, ptr %8, align 8, !tbaa !5
  %160 = load double, ptr %159, align 8, !tbaa !11
  %161 = load ptr, ptr %16, align 8, !tbaa !5
  %162 = getelementptr inbounds double, ptr %161, i32 1
  store ptr %162, ptr %16, align 8, !tbaa !5
  %163 = load double, ptr %162, align 8, !tbaa !11
  %164 = load ptr, ptr %17, align 8, !tbaa !5
  %165 = getelementptr inbounds double, ptr %164, i32 1
  store ptr %165, ptr %17, align 8, !tbaa !5
  %166 = load double, ptr %165, align 8, !tbaa !11
  %167 = call double @llvm.fmuladd.f64(double %160, double %163, double %166)
  store double %167, ptr %14, align 8, !tbaa !11
  %168 = load ptr, ptr %16, align 8, !tbaa !5
  %169 = load double, ptr %168, align 8, !tbaa !11
  %170 = load ptr, ptr %8, align 8, !tbaa !5
  %171 = load double, ptr %170, align 8, !tbaa !11
  %172 = load ptr, ptr %17, align 8, !tbaa !5
  %173 = load double, ptr %172, align 8, !tbaa !11
  %174 = fneg double %171
  %175 = call double @llvm.fmuladd.f64(double %174, double %173, double %169)
  %176 = load ptr, ptr %17, align 8, !tbaa !5
  store double %175, ptr %176, align 8, !tbaa !11
  %177 = load double, ptr %14, align 8, !tbaa !11
  %178 = load ptr, ptr %16, align 8, !tbaa !5
  store double %177, ptr %178, align 8, !tbaa !11
  br label %179

179:                                              ; preds = %158
  %180 = load i32, ptr %12, align 4, !tbaa !9
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr %12, align 4, !tbaa !9
  br label %154, !llvm.loop !16

182:                                              ; preds = %154
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = getelementptr inbounds double, ptr %183, i32 1
  store ptr %184, ptr %17, align 8, !tbaa !5
  %185 = load double, ptr %184, align 8, !tbaa !11
  %186 = load ptr, ptr %16, align 8, !tbaa !5
  %187 = getelementptr inbounds double, ptr %186, i32 1
  store ptr %187, ptr %16, align 8, !tbaa !5
  store double %185, ptr %187, align 8, !tbaa !11
  %188 = load ptr, ptr %8, align 8, !tbaa !5
  %189 = load double, ptr %188, align 8, !tbaa !11
  %190 = fneg double %189
  %191 = load ptr, ptr %17, align 8, !tbaa !5
  %192 = load double, ptr %191, align 8, !tbaa !11
  %193 = fmul double %190, %192
  %194 = load ptr, ptr %17, align 8, !tbaa !5
  store double %193, ptr %194, align 8, !tbaa !11
  %195 = load ptr, ptr %8, align 8, !tbaa !5
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = load ptr, ptr %8, align 8, !tbaa !5
  %198 = load double, ptr %197, align 8, !tbaa !11
  %199 = call double @llvm.fmuladd.f64(double %196, double %198, double 1.000000e+00)
  %200 = load double, ptr %15, align 8, !tbaa !11
  %201 = fmul double %200, %199
  store double %201, ptr %15, align 8, !tbaa !11
  br label %202

202:                                              ; preds = %182
  %203 = load i32, ptr %11, align 4, !tbaa !9
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %11, align 4, !tbaa !9
  %205 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %205, ptr %16, align 8, !tbaa !5
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  %207 = load i32, ptr %13, align 4, !tbaa !9
  %208 = add nsw i32 %207, -1
  store i32 %208, ptr %13, align 4, !tbaa !9
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %206, i64 %209
  store ptr %210, ptr %17, align 8, !tbaa !5
  br label %139, !llvm.loop !17

211:                                              ; preds = %139
  %212 = load ptr, ptr %8, align 8, !tbaa !5
  %213 = getelementptr inbounds double, ptr %212, i32 1
  store ptr %213, ptr %8, align 8, !tbaa !5
  %214 = load double, ptr %213, align 8, !tbaa !11
  %215 = fneg double %214
  %216 = load ptr, ptr %16, align 8, !tbaa !5
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = fmul double %215, %217
  %219 = load ptr, ptr %17, align 8, !tbaa !5
  store double %218, ptr %219, align 8, !tbaa !11
  store i32 1, ptr %12, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %247, %211
  %221 = load i32, ptr %12, align 4, !tbaa !9
  %222 = load i32, ptr %11, align 4, !tbaa !9
  %223 = icmp slt i32 %221, %222
  br i1 %223, label %224, label %250

224:                                              ; preds = %220
  %225 = load ptr, ptr %16, align 8, !tbaa !5
  %226 = getelementptr inbounds double, ptr %225, i32 1
  store ptr %226, ptr %16, align 8, !tbaa !5
  %227 = load double, ptr %226, align 8, !tbaa !11
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = load double, ptr %228, align 8, !tbaa !11
  %230 = load ptr, ptr %17, align 8, !tbaa !5
  %231 = getelementptr inbounds double, ptr %230, i32 1
  store ptr %231, ptr %17, align 8, !tbaa !5
  %232 = load double, ptr %231, align 8, !tbaa !11
  %233 = fneg double %229
  %234 = call double @llvm.fmuladd.f64(double %233, double %232, double %227)
  store double %234, ptr %14, align 8, !tbaa !11
  %235 = load ptr, ptr %8, align 8, !tbaa !5
  %236 = load double, ptr %235, align 8, !tbaa !11
  %237 = fneg double %236
  %238 = load ptr, ptr %16, align 8, !tbaa !5
  %239 = load double, ptr %238, align 8, !tbaa !11
  %240 = load ptr, ptr %17, align 8, !tbaa !5
  %241 = load double, ptr %240, align 8, !tbaa !11
  %242 = fneg double %241
  %243 = call double @llvm.fmuladd.f64(double %237, double %239, double %242)
  %244 = load ptr, ptr %17, align 8, !tbaa !5
  store double %243, ptr %244, align 8, !tbaa !11
  %245 = load double, ptr %14, align 8, !tbaa !11
  %246 = load ptr, ptr %16, align 8, !tbaa !5
  store double %245, ptr %246, align 8, !tbaa !11
  br label %247

247:                                              ; preds = %224
  %248 = load i32, ptr %12, align 4, !tbaa !9
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %12, align 4, !tbaa !9
  br label %220, !llvm.loop !18

250:                                              ; preds = %220
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  %252 = load double, ptr %251, align 8, !tbaa !11
  %253 = fneg double %252
  %254 = load ptr, ptr %17, align 8, !tbaa !5
  %255 = getelementptr inbounds double, ptr %254, i32 1
  store ptr %255, ptr %17, align 8, !tbaa !5
  %256 = load double, ptr %255, align 8, !tbaa !11
  %257 = fmul double %253, %256
  %258 = load ptr, ptr %16, align 8, !tbaa !5
  %259 = getelementptr inbounds double, ptr %258, i32 1
  store ptr %259, ptr %16, align 8, !tbaa !5
  store double %257, ptr %259, align 8, !tbaa !11
  %260 = load ptr, ptr %17, align 8, !tbaa !5
  %261 = load double, ptr %260, align 8, !tbaa !11
  %262 = fneg double %261
  %263 = load ptr, ptr %17, align 8, !tbaa !5
  store double %262, ptr %263, align 8, !tbaa !11
  %264 = load ptr, ptr %8, align 8, !tbaa !5
  %265 = load double, ptr %264, align 8, !tbaa !11
  %266 = load ptr, ptr %8, align 8, !tbaa !5
  %267 = load double, ptr %266, align 8, !tbaa !11
  %268 = call double @llvm.fmuladd.f64(double %265, double %267, double 1.000000e+00)
  store double %268, ptr %14, align 8, !tbaa !11
  %269 = load double, ptr %14, align 8, !tbaa !11
  %270 = load double, ptr %14, align 8, !tbaa !11
  %271 = fmul double %269, %270
  %272 = load double, ptr %14, align 8, !tbaa !11
  %273 = fmul double %271, %272
  %274 = load double, ptr %15, align 8, !tbaa !11
  %275 = fmul double %274, %273
  store double %275, ptr %15, align 8, !tbaa !11
  %276 = load i32, ptr %10, align 4, !tbaa !9
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %11, align 4, !tbaa !9
  %278 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %278, ptr %16, align 8, !tbaa !5
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = load i32, ptr %13, align 4, !tbaa !9
  %281 = add nsw i32 %280, -1
  store i32 %281, ptr %13, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %279, i64 %282
  store ptr %283, ptr %17, align 8, !tbaa !5
  br label %284

284:                                              ; preds = %347, %250
  %285 = load i32, ptr %11, align 4, !tbaa !9
  %286 = load i32, ptr %9, align 4, !tbaa !9
  %287 = icmp sle i32 %285, %286
  br i1 %287, label %288, label %356

288:                                              ; preds = %284
  %289 = load ptr, ptr %6, align 8, !tbaa !5
  %290 = load double, ptr %289, align 8, !tbaa !11
  %291 = load ptr, ptr %17, align 8, !tbaa !5
  store double %290, ptr %291, align 8, !tbaa !11
  %292 = load ptr, ptr %8, align 8, !tbaa !5
  %293 = getelementptr inbounds double, ptr %292, i32 1
  store ptr %293, ptr %8, align 8, !tbaa !5
  %294 = load double, ptr %293, align 8, !tbaa !11
  %295 = load ptr, ptr %6, align 8, !tbaa !5
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = fmul double %294, %296
  %298 = load ptr, ptr %16, align 8, !tbaa !5
  store double %297, ptr %298, align 8, !tbaa !11
  store i32 1, ptr %12, align 4, !tbaa !9
  br label %299

299:                                              ; preds = %324, %288
  %300 = load i32, ptr %12, align 4, !tbaa !9
  %301 = load i32, ptr %11, align 4, !tbaa !9
  %302 = icmp slt i32 %300, %301
  br i1 %302, label %303, label %327

303:                                              ; preds = %299
  %304 = load ptr, ptr %8, align 8, !tbaa !5
  %305 = load double, ptr %304, align 8, !tbaa !11
  %306 = load ptr, ptr %16, align 8, !tbaa !5
  %307 = getelementptr inbounds double, ptr %306, i32 1
  store ptr %307, ptr %16, align 8, !tbaa !5
  %308 = load double, ptr %307, align 8, !tbaa !11
  %309 = load ptr, ptr %17, align 8, !tbaa !5
  %310 = getelementptr inbounds double, ptr %309, i32 1
  store ptr %310, ptr %17, align 8, !tbaa !5
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = call double @llvm.fmuladd.f64(double %305, double %308, double %311)
  store double %312, ptr %14, align 8, !tbaa !11
  %313 = load ptr, ptr %16, align 8, !tbaa !5
  %314 = load double, ptr %313, align 8, !tbaa !11
  %315 = load ptr, ptr %8, align 8, !tbaa !5
  %316 = load double, ptr %315, align 8, !tbaa !11
  %317 = load ptr, ptr %17, align 8, !tbaa !5
  %318 = load double, ptr %317, align 8, !tbaa !11
  %319 = fneg double %316
  %320 = call double @llvm.fmuladd.f64(double %319, double %318, double %314)
  %321 = load ptr, ptr %17, align 8, !tbaa !5
  store double %320, ptr %321, align 8, !tbaa !11
  %322 = load double, ptr %14, align 8, !tbaa !11
  %323 = load ptr, ptr %16, align 8, !tbaa !5
  store double %322, ptr %323, align 8, !tbaa !11
  br label %324

324:                                              ; preds = %303
  %325 = load i32, ptr %12, align 4, !tbaa !9
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %12, align 4, !tbaa !9
  br label %299, !llvm.loop !19

327:                                              ; preds = %299
  %328 = load ptr, ptr %17, align 8, !tbaa !5
  %329 = getelementptr inbounds double, ptr %328, i32 1
  store ptr %329, ptr %17, align 8, !tbaa !5
  %330 = load double, ptr %329, align 8, !tbaa !11
  %331 = load ptr, ptr %16, align 8, !tbaa !5
  %332 = getelementptr inbounds double, ptr %331, i32 1
  store ptr %332, ptr %16, align 8, !tbaa !5
  store double %330, ptr %332, align 8, !tbaa !11
  %333 = load ptr, ptr %8, align 8, !tbaa !5
  %334 = load double, ptr %333, align 8, !tbaa !11
  %335 = fneg double %334
  %336 = load ptr, ptr %17, align 8, !tbaa !5
  %337 = load double, ptr %336, align 8, !tbaa !11
  %338 = fmul double %335, %337
  %339 = load ptr, ptr %17, align 8, !tbaa !5
  store double %338, ptr %339, align 8, !tbaa !11
  %340 = load ptr, ptr %8, align 8, !tbaa !5
  %341 = load double, ptr %340, align 8, !tbaa !11
  %342 = load ptr, ptr %8, align 8, !tbaa !5
  %343 = load double, ptr %342, align 8, !tbaa !11
  %344 = call double @llvm.fmuladd.f64(double %341, double %343, double 1.000000e+00)
  %345 = load double, ptr %15, align 8, !tbaa !11
  %346 = fmul double %345, %344
  store double %346, ptr %15, align 8, !tbaa !11
  br label %347

347:                                              ; preds = %327
  %348 = load i32, ptr %11, align 4, !tbaa !9
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr %11, align 4, !tbaa !9
  %350 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %350, ptr %16, align 8, !tbaa !5
  %351 = load ptr, ptr %7, align 8, !tbaa !5
  %352 = load i32, ptr %13, align 4, !tbaa !9
  %353 = add nsw i32 %352, -1
  store i32 %353, ptr %13, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds double, ptr %351, i64 %354
  store ptr %355, ptr %17, align 8, !tbaa !5
  br label %284, !llvm.loop !20

356:                                              ; preds = %284
  br label %357

357:                                              ; preds = %356, %118
  %358 = load double, ptr %15, align 8, !tbaa !11
  %359 = call double @sqrt(double noundef %358) #4
  %360 = fdiv double 1.000000e+00, %359
  store double %360, ptr %15, align 8, !tbaa !11
  store i32 0, ptr %11, align 4, !tbaa !9
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %361, ptr %16, align 8, !tbaa !5
  %362 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %362, ptr %17, align 8, !tbaa !5
  br label %363

363:                                              ; preds = %380, %357
  %364 = load i32, ptr %11, align 4, !tbaa !9
  %365 = load i32, ptr %9, align 4, !tbaa !9
  %366 = icmp sle i32 %364, %365
  br i1 %366, label %367, label %383

367:                                              ; preds = %363
  %368 = load ptr, ptr %16, align 8, !tbaa !5
  %369 = load double, ptr %368, align 8, !tbaa !11
  %370 = load double, ptr %15, align 8, !tbaa !11
  %371 = fmul double %369, %370
  %372 = load ptr, ptr %16, align 8, !tbaa !5
  %373 = getelementptr inbounds double, ptr %372, i32 1
  store ptr %373, ptr %16, align 8, !tbaa !5
  store double %371, ptr %372, align 8, !tbaa !11
  %374 = load ptr, ptr %17, align 8, !tbaa !5
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = load double, ptr %15, align 8, !tbaa !11
  %377 = fmul double %375, %376
  %378 = load ptr, ptr %17, align 8, !tbaa !5
  %379 = getelementptr inbounds double, ptr %378, i32 1
  store ptr %379, ptr %17, align 8, !tbaa !5
  store double %377, ptr %378, align 8, !tbaa !11
  br label %380

380:                                              ; preds = %367
  %381 = load i32, ptr %11, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %11, align 4, !tbaa !9
  br label %363, !llvm.loop !21

383:                                              ; preds = %363
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = 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}


; 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"

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind memory(readwrite, inaccessiblemem: write) uwtable
define dso_local void @Dpclat(ptr nocapture noundef %0, ptr nocapture noundef %1, ptr nocapture noundef readonly %2, i32 noundef %3, i32 noundef %4) local_unnamed_addr #2 {
  %6 = icmp eq i32 %4, 0
  br i1 %6, label %7, label %79

7:                                                ; preds = %5
  store double 1.000000e+00, ptr %0, align 8, !tbaa !5
  %8 = load double, ptr %2, align 8, !tbaa !5
  %9 = fneg double %8
  %10 = sext i32 %3 to i64
  %11 = getelementptr inbounds double, ptr %1, i64 %10
  store double %9, ptr %11, align 8, !tbaa !5
  %12 = load double, ptr %2, align 8, !tbaa !5
  %13 = tail call double @llvm.fmuladd.f64(double %12, double %12, double 1.000000e+00)
  %14 = fmul double %13, %13
  %15 = fmul double %13, %14
  %.not187246 = icmp slt i32 %3, 1
  br i1 %.not187246, label %.loopexit, label %.lr.ph252.preheader

.lr.ph252.preheader:                              ; preds = %7
  %16 = shl nuw nsw i64 %10, 3
  %scevgep438 = getelementptr i8, ptr %0, i64 8
  %scevgep439 = getelementptr i8, ptr %0, i64 16
  %scevgep441 = getelementptr i8, ptr %2, i64 8
  %17 = add nsw i32 %3, -1
  %18 = zext i32 %17 to i64
  %19 = shl nuw nsw i64 %18, 3
  %20 = getelementptr i8, ptr %2, i64 %19
  %scevgep442 = getelementptr i8, ptr %20, i64 16
  %21 = getelementptr i8, ptr %1, i64 %16
  %22 = getelementptr i8, ptr %1, i64 %16
  %23 = getelementptr i8, ptr %22, i64 8
  %bound0450 = icmp ult ptr %scevgep438, %scevgep442
  %invariant.gep558 = getelementptr i8, ptr %0, i64 8
  br label %.lr.ph252

.lr.ph252:                                        ; preds = %.lr.ph252.preheader, %._crit_edge242
  %indvar433 = phi i64 [ 0, %.lr.ph252.preheader ], [ %indvar.next434, %._crit_edge242 ]
  %indvars.iv287 = phi i64 [ %10, %.lr.ph252.preheader ], [ %indvars.iv.next288, %._crit_edge242 ]
  %.0166249 = phi double [ %15, %.lr.ph252.preheader ], [ %77, %._crit_edge242 ]
  %.0177248 = phi i32 [ 1, %.lr.ph252.preheader ], [ %78, %._crit_edge242 ]
  %.0181247 = phi ptr [ %2, %.lr.ph252.preheader ], [ %30, %._crit_edge242 ]
  %24 = trunc i64 %indvar433 to i32
  %25 = mul nsw i64 %indvar433, -8
  %scevgep435 = getelementptr i8, ptr %21, i64 %25
  %scevgep436 = getelementptr i8, ptr %23, i64 %25
  %26 = shl i64 %indvar433, 3
  %27 = add i64 %26, 34359738360
  %28 = and i64 %27, 34359738360
  %scevgep437 = getelementptr i8, ptr %scevgep436, i64 %28
  %scevgep440 = getelementptr i8, ptr %scevgep439, i64 %28
  %indvars.iv.next288 = add nsw i64 %indvars.iv287, -1
  %.0 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next288
  %29 = load double, ptr %0, align 8, !tbaa !5
  store double %29, ptr %.0, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %.0181247, i64 8
  %31 = load double, ptr %30, align 8, !tbaa !5
  %32 = fmul double %31, %29
  store double %32, ptr %0, align 8, !tbaa !5
  %33 = icmp ugt i32 %.0177248, 1
  br i1 %33, label %.lr.ph241.preheader, label %._crit_edge242

.lr.ph241.preheader:                              ; preds = %.lr.ph252
  %min.iters.check456 = icmp ult i64 %indvar433, 4
  br i1 %min.iters.check456, label %.lr.ph241.preheader515, label %vector.memcheck432

vector.memcheck432:                               ; preds = %.lr.ph241.preheader
  %bound0443 = icmp ult ptr %scevgep435, %scevgep440
  %bound1444 = icmp ult ptr %scevgep438, %scevgep437
  %found.conflict445 = and i1 %bound0443, %bound1444
  %bound0446 = icmp ult ptr %scevgep435, %scevgep442
  %bound1447 = icmp ult ptr %scevgep441, %scevgep437
  %found.conflict448 = and i1 %bound0446, %bound1447
  %conflict.rdx449 = or i1 %found.conflict445, %found.conflict448
  %bound1451 = icmp ult ptr %scevgep441, %scevgep440
  %found.conflict452 = and i1 %bound0450, %bound1451
  %conflict.rdx453 = or i1 %conflict.rdx449, %found.conflict452
  br i1 %conflict.rdx453, label %.lr.ph241.preheader515, label %vector.ph457

vector.ph457:                                     ; preds = %vector.memcheck432
  %n.vec459 = and i64 %indvar433, -2
  %34 = shl i64 %n.vec459, 3
  %ind.end460 = getelementptr i8, ptr %.0, i64 %34
  %35 = shl i64 %n.vec459, 3
  %ind.end462 = getelementptr i8, ptr %0, i64 %35
  %.cast464 = trunc i64 %indvar433 to i32
  %ind.end465 = or i32 %.cast464, 1
  %36 = load double, ptr %30, align 8, !tbaa !5, !alias.scope !9
  %broadcast.splatinsert475 = insertelement <2 x double> poison, double %36, i64 0
  %broadcast.splat476 = shufflevector <2 x double> %broadcast.splatinsert475, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep560 = getelementptr i8, ptr %.0, i64 8
  %37 = fneg <2 x double> %broadcast.splat476
  br label %vector.body467

vector.body467:                                   ; preds = %vector.body467, %vector.ph457
  %index468 = phi i64 [ 0, %vector.ph457 ], [ %index.next477, %vector.body467 ]
  %offset.idx469 = shl i64 %index468, 3
  %offset.idx471 = shl i64 %index468, 3
  %gep559 = getelementptr i8, ptr %invariant.gep558, i64 %offset.idx471
  %wide.load473 = load <2 x double>, ptr %gep559, align 8, !tbaa !5, !alias.scope !12, !noalias !9
  %gep561 = getelementptr i8, ptr %invariant.gep560, i64 %offset.idx469
  %wide.load474 = load <2 x double>, ptr %gep561, align 8, !tbaa !5, !alias.scope !14, !noalias !16
  %38 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat476, <2 x double> %wide.load473, <2 x double> %wide.load474)
  %39 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %37, <2 x double> %wide.load474, <2 x double> %wide.load473)
  store <2 x double> %39, ptr %gep561, align 8, !tbaa !5, !alias.scope !14, !noalias !16
  store <2 x double> %38, ptr %gep559, align 8, !tbaa !5, !alias.scope !12, !noalias !9
  %index.next477 = add nuw i64 %index468, 2
  %40 = icmp eq i64 %index.next477, %n.vec459
  br i1 %40, label %middle.block454, label %vector.body467, !llvm.loop !17

middle.block454:                                  ; preds = %vector.body467
  %cmp.n478 = icmp eq i64 %indvar433, %n.vec459
  br i1 %cmp.n478, label %._crit_edge242, label %.lr.ph241.preheader515

.lr.ph241.preheader515:                           ; preds = %middle.block454, %vector.memcheck432, %.lr.ph241.preheader
  %.1239.ph = phi ptr [ %.0, %vector.memcheck432 ], [ %.0, %.lr.ph241.preheader ], [ %ind.end460, %middle.block454 ]
  %.1159238.ph = phi ptr [ %0, %vector.memcheck432 ], [ %0, %.lr.ph241.preheader ], [ %ind.end462, %middle.block454 ]
  %.0173237.ph = phi i32 [ 1, %vector.memcheck432 ], [ 1, %.lr.ph241.preheader ], [ %ind.end465, %middle.block454 ]
  %41 = and i32 %.0177248, 1
  %lcmp.mod534.not.not = icmp eq i32 %41, 0
  br i1 %lcmp.mod534.not.not, label %.lr.ph241.prol, label %.lr.ph241.prol.loopexit

.lr.ph241.prol:                                   ; preds = %.lr.ph241.preheader515
  %42 = load double, ptr %30, align 8, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %.1159238.ph, i64 8
  %44 = load double, ptr %43, align 8, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %.1239.ph, i64 8
  %46 = load double, ptr %45, align 8, !tbaa !5
  %47 = tail call double @llvm.fmuladd.f64(double %42, double %44, double %46)
  %48 = fneg double %42
  %49 = tail call double @llvm.fmuladd.f64(double %48, double %46, double %44)
  store double %49, ptr %45, align 8, !tbaa !5
  store double %47, ptr %43, align 8, !tbaa !5
  %50 = add nuw nsw i32 %.0173237.ph, 1
  br label %.lr.ph241.prol.loopexit

.lr.ph241.prol.loopexit:                          ; preds = %.lr.ph241.prol, %.lr.ph241.preheader515
  %.lcssa516.unr = phi ptr [ poison, %.lr.ph241.preheader515 ], [ %43, %.lr.ph241.prol ]
  %.lcssa.unr = phi ptr [ poison, %.lr.ph241.preheader515 ], [ %45, %.lr.ph241.prol ]
  %.1239.unr = phi ptr [ %.1239.ph, %.lr.ph241.preheader515 ], [ %45, %.lr.ph241.prol ]
  %.1159238.unr = phi ptr [ %.1159238.ph, %.lr.ph241.preheader515 ], [ %43, %.lr.ph241.prol ]
  %.0173237.unr = phi i32 [ %.0173237.ph, %.lr.ph241.preheader515 ], [ %50, %.lr.ph241.prol ]
  %51 = icmp eq i32 %.0173237.ph, %24
  br i1 %51, label %._crit_edge242, label %.lr.ph241

.lr.ph241:                                        ; preds = %.lr.ph241.prol.loopexit, %.lr.ph241
  %.1239 = phi ptr [ %63, %.lr.ph241 ], [ %.1239.unr, %.lr.ph241.prol.loopexit ]
  %.1159238 = phi ptr [ %61, %.lr.ph241 ], [ %.1159238.unr, %.lr.ph241.prol.loopexit ]
  %.0173237 = phi i32 [ %68, %.lr.ph241 ], [ %.0173237.unr, %.lr.ph241.prol.loopexit ]
  %52 = load double, ptr %30, align 8, !tbaa !5
  %53 = getelementptr inbounds i8, ptr %.1159238, i64 8
  %54 = load double, ptr %53, align 8, !tbaa !5
  %55 = getelementptr inbounds i8, ptr %.1239, i64 8
  %56 = load double, ptr %55, align 8, !tbaa !5
  %57 = tail call double @llvm.fmuladd.f64(double %52, double %54, double %56)
  %58 = fneg double %52
  %59 = tail call double @llvm.fmuladd.f64(double %58, double %56, double %54)
  store double %59, ptr %55, align 8, !tbaa !5
  store double %57, ptr %53, align 8, !tbaa !5
  %60 = load double, ptr %30, align 8, !tbaa !5
  %61 = getelementptr inbounds i8, ptr %.1159238, i64 16
  %62 = load double, ptr %61, align 8, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %.1239, i64 16
  %64 = load double, ptr %63, align 8, !tbaa !5
  %65 = tail call double @llvm.fmuladd.f64(double %60, double %62, double %64)
  %66 = fneg double %60
  %67 = tail call double @llvm.fmuladd.f64(double %66, double %64, double %62)
  store double %67, ptr %63, align 8, !tbaa !5
  store double %65, ptr %61, align 8, !tbaa !5
  %68 = add nuw nsw i32 %.0173237, 2
  %exitcond286.not.1 = icmp eq i32 %68, %.0177248
  br i1 %exitcond286.not.1, label %._crit_edge242, label %.lr.ph241, !llvm.loop !21

._crit_edge242:                                   ; preds = %.lr.ph241.prol.loopexit, %.lr.ph241, %middle.block454, %.lr.ph252
  %.1159.lcssa = phi ptr [ %0, %.lr.ph252 ], [ %ind.end462, %middle.block454 ], [ %.lcssa516.unr, %.lr.ph241.prol.loopexit ], [ %61, %.lr.ph241 ]
  %.1.lcssa = phi ptr [ %.0, %.lr.ph252 ], [ %ind.end460, %middle.block454 ], [ %.lcssa.unr, %.lr.ph241.prol.loopexit ], [ %63, %.lr.ph241 ]
  %69 = getelementptr inbounds i8, ptr %.1.lcssa, i64 8
  %70 = load double, ptr %69, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %.1159.lcssa, i64 8
  store double %70, ptr %71, align 8, !tbaa !5
  %72 = load double, ptr %30, align 8, !tbaa !5
  %73 = fneg double %72
  %74 = fmul double %70, %73
  store double %74, ptr %69, align 8, !tbaa !5
  %75 = load double, ptr %30, align 8, !tbaa !5
  %76 = tail call double @llvm.fmuladd.f64(double %75, double %75, double 1.000000e+00)
  %77 = fmul double %.0166249, %76
  %78 = add nuw i32 %.0177248, 1
  %exitcond290.not = icmp eq i32 %.0177248, %3
  %indvar.next434 = add i64 %indvar433, 1
  br i1 %exitcond290.not, label %.loopexit, label %.lr.ph252, !llvm.loop !22

79:                                               ; preds = %5
  %80 = load double, ptr %2, align 8, !tbaa !5
  store double %80, ptr %0, align 8, !tbaa !5
  %81 = sext i32 %3 to i64
  %82 = getelementptr inbounds double, ptr %1, i64 %81
  store double 1.000000e+00, ptr %82, align 8, !tbaa !5
  %83 = load double, ptr %2, align 8, !tbaa !5
  %84 = tail call double @llvm.fmuladd.f64(double %83, double %83, double 1.000000e+00)
  %.1171194 = add i32 %3, -1
  %.pn195 = sext i32 %.1171194 to i64
  %.2196 = getelementptr inbounds double, ptr %1, i64 %.pn195
  %85 = icmp sgt i32 %4, 1
  br i1 %85, label %.lr.ph203.preheader, label %._crit_edge204.thread

.lr.ph203.preheader:                              ; preds = %79
  %86 = shl nsw i64 %.pn195, 3
  %scevgep324 = getelementptr i8, ptr %0, i64 8
  %scevgep325 = getelementptr i8, ptr %0, i64 16
  %scevgep327 = getelementptr i8, ptr %2, i64 8
  %87 = add nsw i32 %4, -2
  %88 = zext i32 %87 to i64
  %89 = shl nuw nsw i64 %88, 3
  %90 = getelementptr i8, ptr %2, i64 %89
  %scevgep328 = getelementptr i8, ptr %90, i64 16
  %91 = getelementptr i8, ptr %1, i64 %86
  %92 = getelementptr i8, ptr %91, i64 8
  %93 = getelementptr i8, ptr %1, i64 %86
  %94 = getelementptr i8, ptr %93, i64 16
  %bound0332 = icmp ult ptr %scevgep324, %scevgep328
  %invariant.gep = getelementptr i8, ptr %0, i64 8
  br label %.lr.ph203

._crit_edge204.thread:                            ; preds = %79
  %95 = getelementptr inbounds i8, ptr %2, i64 8
  %96 = load double, ptr %95, align 8, !tbaa !5
  %97 = fneg double %96
  %98 = load double, ptr %0, align 8, !tbaa !5
  %99 = fmul double %98, %97
  store double %99, ptr %.2196, align 8, !tbaa !5
  br label %._crit_edge215

.lr.ph203:                                        ; preds = %.lr.ph203.preheader, %._crit_edge
  %indvar = phi i64 [ 0, %.lr.ph203.preheader ], [ %indvar.next, %._crit_edge ]
  %indvars.iv = phi i64 [ %.pn195, %.lr.ph203.preheader ], [ %indvars.iv.next, %._crit_edge ]
  %.2201 = phi ptr [ %.2196, %.lr.ph203.preheader ], [ %.2, %._crit_edge ]
  %.1167199 = phi double [ %84, %.lr.ph203.preheader ], [ %153, %._crit_edge ]
  %.1178198 = phi i32 [ 1, %.lr.ph203.preheader ], [ %154, %._crit_edge ]
  %.1182197 = phi ptr [ %2, %.lr.ph203.preheader ], [ %106, %._crit_edge ]
  %100 = trunc i64 %indvar to i32
  %101 = mul nsw i64 %indvar, -8
  %scevgep = getelementptr i8, ptr %92, i64 %101
  %scevgep322 = getelementptr i8, ptr %94, i64 %101
  %102 = shl i64 %indvar, 3
  %103 = add i64 %102, 34359738360
  %104 = and i64 %103, 34359738360
  %scevgep323 = getelementptr i8, ptr %scevgep322, i64 %104
  %scevgep326 = getelementptr i8, ptr %scevgep325, i64 %104
  %105 = load double, ptr %0, align 8, !tbaa !5
  store double %105, ptr %.2201, align 8, !tbaa !5
  %106 = getelementptr inbounds i8, ptr %.1182197, i64 8
  %107 = load double, ptr %106, align 8, !tbaa !5
  %108 = fmul double %107, %105
  store double %108, ptr %0, align 8, !tbaa !5
  %109 = icmp ugt i32 %.1178198, 1
  br i1 %109, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph203
  %min.iters.check = icmp ult i64 %indvar, 4
  br i1 %min.iters.check, label %.lr.ph.preheader525, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %bound0 = icmp ult ptr %scevgep, %scevgep326
  %bound1 = icmp ult ptr %scevgep324, %scevgep323
  %found.conflict = and i1 %bound0, %bound1
  %bound0329 = icmp ult ptr %scevgep, %scevgep328
  %bound1330 = icmp ult ptr %scevgep327, %scevgep323
  %found.conflict331 = and i1 %bound0329, %bound1330
  %conflict.rdx = or i1 %found.conflict, %found.conflict331
  %bound1333 = icmp ult ptr %scevgep327, %scevgep326
  %found.conflict334 = and i1 %bound0332, %bound1333
  %conflict.rdx335 = or i1 %conflict.rdx, %found.conflict334
  br i1 %conflict.rdx335, label %.lr.ph.preheader525, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %indvar, -2
  %110 = shl i64 %n.vec, 3
  %ind.end = getelementptr i8, ptr %.2201, i64 %110
  %111 = shl i64 %n.vec, 3
  %ind.end336 = getelementptr i8, ptr %0, i64 %111
  %.cast = trunc i64 %indvar to i32
  %ind.end338 = or i32 %.cast, 1
  %112 = load double, ptr %106, align 8, !tbaa !5, !alias.scope !23
  %broadcast.splatinsert = insertelement <2 x double> poison, double %112, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep548 = getelementptr i8, ptr %.2201, i64 8
  %113 = fneg <2 x double> %broadcast.splat
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = shl i64 %index, 3
  %offset.idx340 = shl i64 %index, 3
  %gep = getelementptr i8, ptr %invariant.gep, i64 %offset.idx340
  %wide.load = load <2 x double>, ptr %gep, align 8, !tbaa !5, !alias.scope !26, !noalias !23
  %gep549 = getelementptr i8, ptr %invariant.gep548, i64 %offset.idx
  %wide.load342 = load <2 x double>, ptr %gep549, align 8, !tbaa !5, !alias.scope !28, !noalias !30
  %114 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat, <2 x double> %wide.load, <2 x double> %wide.load342)
  %115 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %113, <2 x double> %wide.load342, <2 x double> %wide.load)
  store <2 x double> %115, ptr %gep549, align 8, !tbaa !5, !alias.scope !28, !noalias !30
  store <2 x double> %114, ptr %gep, align 8, !tbaa !5, !alias.scope !26, !noalias !23
  %index.next = add nuw i64 %index, 2
  %116 = icmp eq i64 %index.next, %n.vec
  br i1 %116, label %middle.block, label %vector.body, !llvm.loop !31

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %indvar, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader525

.lr.ph.preheader525:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %.3192.ph = phi ptr [ %.2201, %vector.memcheck ], [ %.2201, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.3161191.ph = phi ptr [ %0, %vector.memcheck ], [ %0, %.lr.ph.preheader ], [ %ind.end336, %middle.block ]
  %.1174190.ph = phi i32 [ 1, %vector.memcheck ], [ 1, %.lr.ph.preheader ], [ %ind.end338, %middle.block ]
  %117 = and i32 %.1178198, 1
  %lcmp.mod.not.not = icmp eq i32 %117, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph.prol, label %.lr.ph.prol.loopexit

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader525
  %118 = load double, ptr %106, align 8, !tbaa !5
  %119 = getelementptr inbounds i8, ptr %.3161191.ph, i64 8
  %120 = load double, ptr %119, align 8, !tbaa !5
  %121 = getelementptr inbounds i8, ptr %.3192.ph, i64 8
  %122 = load double, ptr %121, align 8, !tbaa !5
  %123 = tail call double @llvm.fmuladd.f64(double %118, double %120, double %122)
  %124 = fneg double %118
  %125 = tail call double @llvm.fmuladd.f64(double %124, double %122, double %120)
  store double %125, ptr %121, align 8, !tbaa !5
  store double %123, ptr %119, align 8, !tbaa !5
  %126 = add nuw nsw i32 %.1174190.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader525
  %.lcssa527.unr = phi ptr [ poison, %.lr.ph.preheader525 ], [ %119, %.lr.ph.prol ]
  %.lcssa526.unr = phi ptr [ poison, %.lr.ph.preheader525 ], [ %121, %.lr.ph.prol ]
  %.3192.unr = phi ptr [ %.3192.ph, %.lr.ph.preheader525 ], [ %121, %.lr.ph.prol ]
  %.3161191.unr = phi ptr [ %.3161191.ph, %.lr.ph.preheader525 ], [ %119, %.lr.ph.prol ]
  %.1174190.unr = phi i32 [ %.1174190.ph, %.lr.ph.preheader525 ], [ %126, %.lr.ph.prol ]
  %127 = icmp eq i32 %.1174190.ph, %100
  br i1 %127, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.3192 = phi ptr [ %139, %.lr.ph ], [ %.3192.unr, %.lr.ph.prol.loopexit ]
  %.3161191 = phi ptr [ %137, %.lr.ph ], [ %.3161191.unr, %.lr.ph.prol.loopexit ]
  %.1174190 = phi i32 [ %144, %.lr.ph ], [ %.1174190.unr, %.lr.ph.prol.loopexit ]
  %128 = load double, ptr %106, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %.3161191, i64 8
  %130 = load double, ptr %129, align 8, !tbaa !5
  %131 = getelementptr inbounds i8, ptr %.3192, i64 8
  %132 = load double, ptr %131, align 8, !tbaa !5
  %133 = tail call double @llvm.fmuladd.f64(double %128, double %130, double %132)
  %134 = fneg double %128
  %135 = tail call double @llvm.fmuladd.f64(double %134, double %132, double %130)
  store double %135, ptr %131, align 8, !tbaa !5
  store double %133, ptr %129, align 8, !tbaa !5
  %136 = load double, ptr %106, align 8, !tbaa !5
  %137 = getelementptr inbounds i8, ptr %.3161191, i64 16
  %138 = load double, ptr %137, align 8, !tbaa !5
  %139 = getelementptr inbounds i8, ptr %.3192, i64 16
  %140 = load double, ptr %139, align 8, !tbaa !5
  %141 = tail call double @llvm.fmuladd.f64(double %136, double %138, double %140)
  %142 = fneg double %136
  %143 = tail call double @llvm.fmuladd.f64(double %142, double %140, double %138)
  store double %143, ptr %139, align 8, !tbaa !5
  store double %141, ptr %137, align 8, !tbaa !5
  %144 = add nuw nsw i32 %.1174190, 2
  %exitcond.not.1 = icmp eq i32 %144, %.1178198
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !32

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %.lr.ph203
  %.3161.lcssa = phi ptr [ %0, %.lr.ph203 ], [ %ind.end336, %middle.block ], [ %.lcssa527.unr, %.lr.ph.prol.loopexit ], [ %137, %.lr.ph ]
  %.3.lcssa = phi ptr [ %.2201, %.lr.ph203 ], [ %ind.end, %middle.block ], [ %.lcssa526.unr, %.lr.ph.prol.loopexit ], [ %139, %.lr.ph ]
  %145 = getelementptr inbounds i8, ptr %.3.lcssa, i64 8
  %146 = load double, ptr %145, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %.3161.lcssa, i64 8
  store double %146, ptr %147, align 8, !tbaa !5
  %148 = load double, ptr %106, align 8, !tbaa !5
  %149 = fneg double %148
  %150 = fmul double %146, %149
  store double %150, ptr %145, align 8, !tbaa !5
  %151 = load double, ptr %106, align 8, !tbaa !5
  %152 = tail call double @llvm.fmuladd.f64(double %151, double %151, double 1.000000e+00)
  %153 = fmul double %.1167199, %152
  %154 = add nuw nsw i32 %.1178198, 1
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %.2 = getelementptr inbounds double, ptr %1, i64 %indvars.iv.next
  %exitcond277.not = icmp eq i32 %154, %4
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond277.not, label %._crit_edge204, label %.lr.ph203, !llvm.loop !33

._crit_edge204:                                   ; preds = %._crit_edge
  %155 = trunc nsw i64 %indvars.iv to i32
  %156 = getelementptr inbounds i8, ptr %.1182197, i64 16
  %157 = load double, ptr %156, align 8, !tbaa !5
  %158 = fneg double %157
  %159 = load double, ptr %0, align 8, !tbaa !5
  %160 = fmul double %159, %158
  store double %160, ptr %.2, align 8, !tbaa !5
  %161 = add nsw i32 %4, -1
  %162 = zext i32 %161 to i64
  %min.iters.check362 = icmp ult i32 %4, 15
  br i1 %min.iters.check362, label %.lr.ph214.preheader, label %vector.memcheck343

vector.memcheck343:                               ; preds = %._crit_edge204
  %163 = shl nsw i64 %.pn195, 3
  %164 = mul nsw i64 %indvar, -8
  %165 = getelementptr i8, ptr %1, i64 %163
  %scevgep344 = getelementptr i8, ptr %165, i64 %164
  %166 = add nsw i32 %4, -2
  %167 = zext i32 %166 to i64
  %168 = shl nuw nsw i64 %167, 3
  %169 = getelementptr i8, ptr %1, i64 %164
  %170 = getelementptr i8, ptr %169, i64 %163
  %171 = getelementptr i8, ptr %170, i64 %168
  %scevgep345 = getelementptr i8, ptr %171, i64 8
  %scevgep346 = getelementptr i8, ptr %0, i64 8
  %172 = getelementptr i8, ptr %0, i64 %168
  %scevgep347 = getelementptr i8, ptr %172, i64 16
  %173 = shl nuw nsw i64 %indvar, 3
  %174 = getelementptr i8, ptr %2, i64 %173
  %scevgep348 = getelementptr i8, ptr %174, i64 24
  %bound0349 = icmp ult ptr %scevgep344, %scevgep347
  %bound1350 = icmp ugt ptr %171, %0
  %found.conflict351 = and i1 %bound0349, %bound1350
  %bound0352 = icmp ult ptr %scevgep344, %scevgep348
  %bound1353 = icmp ult ptr %156, %scevgep345
  %found.conflict354 = and i1 %bound0352, %bound1353
  %conflict.rdx355 = or i1 %found.conflict351, %found.conflict354
  %bound0356 = icmp ult ptr %scevgep346, %scevgep348
  %bound1357 = icmp ult ptr %.1182197, %172
  %found.conflict358 = and i1 %bound0356, %bound1357
  %conflict.rdx359 = or i1 %conflict.rdx355, %found.conflict358
  br i1 %conflict.rdx359, label %.lr.ph214.preheader, label %vector.ph363

vector.ph363:                                     ; preds = %vector.memcheck343
  %n.vec365 = and i64 %162, 4294967294
  %175 = shl nuw nsw i64 %n.vec365, 3
  %ind.end366 = getelementptr i8, ptr %.2, i64 %175
  %176 = shl nuw nsw i64 %n.vec365, 3
  %ind.end368 = getelementptr i8, ptr %0, i64 %176
  %ind.end371 = or i32 %161, 1
  %invariant.gep550 = getelementptr i8, ptr %0, i64 8
  %177 = load double, ptr %156, align 8, !tbaa !5, !alias.scope !34
  %broadcast.splatinsert381 = insertelement <2 x double> poison, double %177, i64 0
  %broadcast.splat382 = shufflevector <2 x double> %broadcast.splatinsert381, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep552 = getelementptr i8, ptr %.2, i64 8
  %178 = fneg <2 x double> %broadcast.splat382
  br label %vector.body373

vector.body373:                                   ; preds = %vector.body373, %vector.ph363
  %index374 = phi i64 [ 0, %vector.ph363 ], [ %index.next383, %vector.body373 ]
  %offset.idx375 = shl i64 %index374, 3
  %offset.idx377 = shl i64 %index374, 3
  %gep551 = getelementptr i8, ptr %invariant.gep550, i64 %offset.idx377
  %wide.load379 = load <2 x double>, ptr %gep551, align 8, !tbaa !5, !alias.scope !37, !noalias !34
  %gep553 = getelementptr i8, ptr %invariant.gep552, i64 %offset.idx375
  %wide.load380 = load <2 x double>, ptr %gep553, align 8, !tbaa !5, !alias.scope !39, !noalias !41
  %179 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %178, <2 x double> %wide.load380, <2 x double> %wide.load379)
  %180 = fneg <2 x double> %wide.load380
  %181 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %178, <2 x double> %wide.load379, <2 x double> %180)
  store <2 x double> %181, ptr %gep553, align 8, !tbaa !5, !alias.scope !39, !noalias !41
  store <2 x double> %179, ptr %gep551, align 8, !tbaa !5, !alias.scope !37, !noalias !34
  %index.next383 = add nuw i64 %index374, 2
  %182 = icmp eq i64 %index.next383, %n.vec365
  br i1 %182, label %middle.block360, label %vector.body373, !llvm.loop !42

middle.block360:                                  ; preds = %vector.body373
  %cmp.n384 = icmp eq i64 %n.vec365, %162
  br i1 %cmp.n384, label %._crit_edge215, label %.lr.ph214.preheader

.lr.ph214.preheader:                              ; preds = %middle.block360, %vector.memcheck343, %._crit_edge204
  %.4212.ph = phi ptr [ %.2, %vector.memcheck343 ], [ %.2, %._crit_edge204 ], [ %ind.end366, %middle.block360 ]
  %.4162211.ph = phi ptr [ %0, %vector.memcheck343 ], [ %0, %._crit_edge204 ], [ %ind.end368, %middle.block360 ]
  %.2175210.ph = phi i32 [ 1, %vector.memcheck343 ], [ 1, %._crit_edge204 ], [ %ind.end371, %middle.block360 ]
  %183 = and i32 %4, 1
  %lcmp.mod530.not.not = icmp eq i32 %183, 0
  br i1 %lcmp.mod530.not.not, label %.lr.ph214.prol, label %.lr.ph214.prol.loopexit

.lr.ph214.prol:                                   ; preds = %.lr.ph214.preheader
  %184 = getelementptr inbounds i8, ptr %.4162211.ph, i64 8
  %185 = load double, ptr %184, align 8, !tbaa !5
  %186 = load double, ptr %156, align 8, !tbaa !5
  %187 = getelementptr inbounds i8, ptr %.4212.ph, i64 8
  %188 = load double, ptr %187, align 8, !tbaa !5
  %189 = fneg double %186
  %190 = tail call double @llvm.fmuladd.f64(double %189, double %188, double %185)
  %191 = fneg double %188
  %192 = tail call double @llvm.fmuladd.f64(double %189, double %185, double %191)
  store double %192, ptr %187, align 8, !tbaa !5
  store double %190, ptr %184, align 8, !tbaa !5
  %193 = add nuw nsw i32 %.2175210.ph, 1
  br label %.lr.ph214.prol.loopexit

.lr.ph214.prol.loopexit:                          ; preds = %.lr.ph214.prol, %.lr.ph214.preheader
  %.lcssa524.unr = phi ptr [ poison, %.lr.ph214.preheader ], [ %184, %.lr.ph214.prol ]
  %.lcssa523.unr = phi ptr [ poison, %.lr.ph214.preheader ], [ %187, %.lr.ph214.prol ]
  %.4212.unr = phi ptr [ %.4212.ph, %.lr.ph214.preheader ], [ %187, %.lr.ph214.prol ]
  %.4162211.unr = phi ptr [ %.4162211.ph, %.lr.ph214.preheader ], [ %184, %.lr.ph214.prol ]
  %.2175210.unr = phi i32 [ %.2175210.ph, %.lr.ph214.preheader ], [ %193, %.lr.ph214.prol ]
  %194 = add nsw i32 %4, -1
  %195 = icmp eq i32 %.2175210.ph, %194
  br i1 %195, label %._crit_edge215, label %.lr.ph214

.lr.ph214:                                        ; preds = %.lr.ph214.prol.loopexit, %.lr.ph214
  %.4212 = phi ptr [ %208, %.lr.ph214 ], [ %.4212.unr, %.lr.ph214.prol.loopexit ]
  %.4162211 = phi ptr [ %205, %.lr.ph214 ], [ %.4162211.unr, %.lr.ph214.prol.loopexit ]
  %.2175210 = phi i32 [ %214, %.lr.ph214 ], [ %.2175210.unr, %.lr.ph214.prol.loopexit ]
  %196 = getelementptr inbounds i8, ptr %.4162211, i64 8
  %197 = load double, ptr %196, align 8, !tbaa !5
  %198 = load double, ptr %156, align 8, !tbaa !5
  %199 = getelementptr inbounds i8, ptr %.4212, i64 8
  %200 = load double, ptr %199, align 8, !tbaa !5
  %201 = fneg double %198
  %202 = tail call double @llvm.fmuladd.f64(double %201, double %200, double %197)
  %203 = fneg double %200
  %204 = tail call double @llvm.fmuladd.f64(double %201, double %197, double %203)
  store double %204, ptr %199, align 8, !tbaa !5
  store double %202, ptr %196, align 8, !tbaa !5
  %205 = getelementptr inbounds i8, ptr %.4162211, i64 16
  %206 = load double, ptr %205, align 8, !tbaa !5
  %207 = load double, ptr %156, align 8, !tbaa !5
  %208 = getelementptr inbounds i8, ptr %.4212, i64 16
  %209 = load double, ptr %208, align 8, !tbaa !5
  %210 = fneg double %207
  %211 = tail call double @llvm.fmuladd.f64(double %210, double %209, double %206)
  %212 = fneg double %209
  %213 = tail call double @llvm.fmuladd.f64(double %210, double %206, double %212)
  store double %213, ptr %208, align 8, !tbaa !5
  store double %211, ptr %205, align 8, !tbaa !5
  %214 = add nuw nsw i32 %.2175210, 2
  %exitcond278.not.1 = icmp eq i32 %214, %4
  br i1 %exitcond278.not.1, label %._crit_edge215, label %.lr.ph214, !llvm.loop !43

._crit_edge215:                                   ; preds = %.lr.ph214.prol.loopexit, %.lr.ph214, %middle.block360, %._crit_edge204.thread
  %215 = phi ptr [ %95, %._crit_edge204.thread ], [ %156, %middle.block360 ], [ %156, %.lr.ph214 ], [ %156, %.lr.ph214.prol.loopexit ]
  %.1167.lcssa298 = phi double [ %84, %._crit_edge204.thread ], [ %153, %middle.block360 ], [ %153, %.lr.ph214 ], [ %153, %.lr.ph214.prol.loopexit ]
  %.1171.in.lcssa297 = phi i32 [ %3, %._crit_edge204.thread ], [ %155, %middle.block360 ], [ %155, %.lr.ph214 ], [ %155, %.lr.ph214.prol.loopexit ]
  %.4162.lcssa = phi ptr [ %0, %._crit_edge204.thread ], [ %ind.end368, %middle.block360 ], [ %.lcssa524.unr, %.lr.ph214.prol.loopexit ], [ %205, %.lr.ph214 ]
  %.4.lcssa = phi ptr [ %.2196, %._crit_edge204.thread ], [ %ind.end366, %middle.block360 ], [ %.lcssa523.unr, %.lr.ph214.prol.loopexit ], [ %208, %.lr.ph214 ]
  %216 = load double, ptr %215, align 8, !tbaa !5
  %217 = fneg double %216
  %218 = getelementptr inbounds i8, ptr %.4.lcssa, i64 8
  %219 = load double, ptr %218, align 8, !tbaa !5
  %220 = fmul double %219, %217
  %221 = getelementptr inbounds i8, ptr %.4162.lcssa, i64 8
  store double %220, ptr %221, align 8, !tbaa !5
  %222 = load double, ptr %218, align 8, !tbaa !5
  %223 = fneg double %222
  store double %223, ptr %218, align 8, !tbaa !5
  %224 = load double, ptr %215, align 8, !tbaa !5
  %225 = tail call double @llvm.fmuladd.f64(double %224, double %224, double 1.000000e+00)
  %226 = fmul double %225, %225
  %227 = fmul double %225, %226
  %228 = fmul double %.1167.lcssa298, %227
  %.not.not228 = icmp slt i32 %4, %3
  br i1 %.not.not228, label %.lr.ph235.preheader, label %.loopexit

.lr.ph235.preheader:                              ; preds = %._crit_edge215
  %229 = add i32 %.1171.in.lcssa297, -2
  %230 = sext i32 %229 to i64
  %231 = shl nsw i64 %230, 3
  %232 = add i32 %4, -1
  %scevgep391 = getelementptr i8, ptr %0, i64 8
  %scevgep392 = getelementptr i8, ptr %0, i64 16
  %scevgep394 = getelementptr i8, ptr %215, i64 8
  %233 = xor i32 %4, -1
  %234 = add i32 %233, %3
  %235 = zext i32 %234 to i64
  %236 = shl nuw nsw i64 %235, 3
  %237 = add nuw nsw i64 %236, 16
  %scevgep395 = getelementptr i8, ptr %215, i64 %237
  %238 = getelementptr i8, ptr %1, i64 %231
  %239 = getelementptr i8, ptr %238, i64 8
  %240 = getelementptr i8, ptr %1, i64 %231
  %241 = getelementptr i8, ptr %240, i64 16
  %bound0403 = icmp ult ptr %scevgep391, %scevgep395
  %invariant.gep554 = getelementptr i8, ptr %0, i64 8
  br label %.lr.ph235

.lr.ph235:                                        ; preds = %.lr.ph235.preheader, %._crit_edge224
  %indvar386 = phi i64 [ 0, %.lr.ph235.preheader ], [ %indvar.next387, %._crit_edge224 ]
  %indvars.iv282 = phi i64 [ %230, %.lr.ph235.preheader ], [ %indvars.iv.next283, %._crit_edge224 ]
  %indvars.iv279.in = phi i32 [ %4, %.lr.ph235.preheader ], [ %indvars.iv279, %._crit_edge224 ]
  %.2168232 = phi double [ %228, %.lr.ph235.preheader ], [ %297, %._crit_edge224 ]
  %.2179.in230 = phi i32 [ %4, %.lr.ph235.preheader ], [ %.2179233, %._crit_edge224 ]
  %.2183229 = phi ptr [ %215, %.lr.ph235.preheader ], [ %250, %._crit_edge224 ]
  %242 = trunc i64 %indvar386 to i32
  %243 = zext i32 %indvars.iv279.in to i64
  %244 = mul nsw i64 %indvar386, -8
  %scevgep388 = getelementptr i8, ptr %239, i64 %244
  %scevgep389 = getelementptr i8, ptr %241, i64 %244
  %245 = trunc i64 %indvar386 to i32
  %246 = add i32 %232, %245
  %247 = zext i32 %246 to i64
  %248 = shl nuw nsw i64 %247, 3
  %scevgep390 = getelementptr i8, ptr %scevgep389, i64 %248
  %scevgep393 = getelementptr i8, ptr %scevgep392, i64 %248
  %indvars.iv279 = add i32 %indvars.iv279.in, 1
  %.2179233 = add nsw i32 %.2179.in230, 1
  %.5 = getelementptr inbounds double, ptr %1, i64 %indvars.iv282
  %249 = load double, ptr %0, align 8, !tbaa !5
  store double %249, ptr %.5, align 8, !tbaa !5
  %250 = getelementptr inbounds i8, ptr %.2183229, i64 8
  %251 = load double, ptr %250, align 8, !tbaa !5
  %252 = fmul double %251, %249
  store double %252, ptr %0, align 8, !tbaa !5
  %.not218 = icmp slt i32 %.2179.in230, 1
  br i1 %.not218, label %._crit_edge224, label %.lr.ph223.preheader

.lr.ph223.preheader:                              ; preds = %.lr.ph235
  %min.iters.check409 = icmp ult i32 %indvars.iv279.in, 4
  br i1 %min.iters.check409, label %.lr.ph223.preheader518, label %vector.memcheck385

vector.memcheck385:                               ; preds = %.lr.ph223.preheader
  %bound0396 = icmp ult ptr %scevgep388, %scevgep393
  %bound1397 = icmp ult ptr %scevgep391, %scevgep390
  %found.conflict398 = and i1 %bound0396, %bound1397
  %bound0399 = icmp ult ptr %scevgep388, %scevgep395
  %bound1400 = icmp ult ptr %scevgep394, %scevgep390
  %found.conflict401 = and i1 %bound0399, %bound1400
  %conflict.rdx402 = or i1 %found.conflict398, %found.conflict401
  %bound1404 = icmp ult ptr %scevgep394, %scevgep393
  %found.conflict405 = and i1 %bound0403, %bound1404
  %conflict.rdx406 = or i1 %conflict.rdx402, %found.conflict405
  br i1 %conflict.rdx406, label %.lr.ph223.preheader518, label %vector.ph410

vector.ph410:                                     ; preds = %vector.memcheck385
  %n.vec412 = and i64 %243, 4294967294
  %253 = shl nuw nsw i64 %n.vec412, 3
  %ind.end413 = getelementptr i8, ptr %.5, i64 %253
  %254 = shl nuw nsw i64 %n.vec412, 3
  %ind.end415 = getelementptr i8, ptr %0, i64 %254
  %ind.end418 = or i32 %indvars.iv279.in, 1
  %255 = load double, ptr %250, align 8, !tbaa !5, !alias.scope !44
  %broadcast.splatinsert428 = insertelement <2 x double> poison, double %255, i64 0
  %broadcast.splat429 = shufflevector <2 x double> %broadcast.splatinsert428, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep556 = getelementptr i8, ptr %.5, i64 8
  %256 = fneg <2 x double> %broadcast.splat429
  br label %vector.body420

vector.body420:                                   ; preds = %vector.body420, %vector.ph410
  %index421 = phi i64 [ 0, %vector.ph410 ], [ %index.next430, %vector.body420 ]
  %offset.idx422 = shl i64 %index421, 3
  %offset.idx424 = shl i64 %index421, 3
  %gep555 = getelementptr i8, ptr %invariant.gep554, i64 %offset.idx424
  %wide.load426 = load <2 x double>, ptr %gep555, align 8, !tbaa !5, !alias.scope !47, !noalias !44
  %gep557 = getelementptr i8, ptr %invariant.gep556, i64 %offset.idx422
  %wide.load427 = load <2 x double>, ptr %gep557, align 8, !tbaa !5, !alias.scope !49, !noalias !51
  %257 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat429, <2 x double> %wide.load426, <2 x double> %wide.load427)
  %258 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %256, <2 x double> %wide.load427, <2 x double> %wide.load426)
  store <2 x double> %258, ptr %gep557, align 8, !tbaa !5, !alias.scope !49, !noalias !51
  store <2 x double> %257, ptr %gep555, align 8, !tbaa !5, !alias.scope !47, !noalias !44
  %index.next430 = add nuw i64 %index421, 2
  %259 = icmp eq i64 %index.next430, %n.vec412
  br i1 %259, label %middle.block407, label %vector.body420, !llvm.loop !52

middle.block407:                                  ; preds = %vector.body420
  %cmp.n431 = icmp eq i64 %n.vec412, %243
  br i1 %cmp.n431, label %._crit_edge224, label %.lr.ph223.preheader518

.lr.ph223.preheader518:                           ; preds = %middle.block407, %vector.memcheck385, %.lr.ph223.preheader
  %.6221.ph = phi ptr [ %.5, %vector.memcheck385 ], [ %.5, %.lr.ph223.preheader ], [ %ind.end413, %middle.block407 ]
  %.6164220.ph = phi ptr [ %0, %vector.memcheck385 ], [ %0, %.lr.ph223.preheader ], [ %ind.end415, %middle.block407 ]
  %.3176219.ph = phi i32 [ 1, %vector.memcheck385 ], [ 1, %.lr.ph223.preheader ], [ %ind.end418, %middle.block407 ]
  %260 = add i32 %242, %4
  %xtraiter531 = and i32 %260, 1
  %lcmp.mod532.not = icmp eq i32 %xtraiter531, 0
  br i1 %lcmp.mod532.not, label %.lr.ph223.prol.loopexit, label %.lr.ph223.prol

.lr.ph223.prol:                                   ; preds = %.lr.ph223.preheader518
  %261 = load double, ptr %250, align 8, !tbaa !5
  %262 = getelementptr inbounds i8, ptr %.6164220.ph, i64 8
  %263 = load double, ptr %262, align 8, !tbaa !5
  %264 = getelementptr inbounds i8, ptr %.6221.ph, i64 8
  %265 = load double, ptr %264, align 8, !tbaa !5
  %266 = tail call double @llvm.fmuladd.f64(double %261, double %263, double %265)
  %267 = fneg double %261
  %268 = tail call double @llvm.fmuladd.f64(double %267, double %265, double %263)
  store double %268, ptr %264, align 8, !tbaa !5
  store double %266, ptr %262, align 8, !tbaa !5
  %269 = add nuw i32 %.3176219.ph, 1
  br label %.lr.ph223.prol.loopexit

.lr.ph223.prol.loopexit:                          ; preds = %.lr.ph223.prol, %.lr.ph223.preheader518
  %.lcssa521.unr = phi ptr [ poison, %.lr.ph223.preheader518 ], [ %262, %.lr.ph223.prol ]
  %.lcssa520.unr = phi ptr [ poison, %.lr.ph223.preheader518 ], [ %264, %.lr.ph223.prol ]
  %.6221.unr = phi ptr [ %.6221.ph, %.lr.ph223.preheader518 ], [ %264, %.lr.ph223.prol ]
  %.6164220.unr = phi ptr [ %.6164220.ph, %.lr.ph223.preheader518 ], [ %262, %.lr.ph223.prol ]
  %.3176219.unr = phi i32 [ %.3176219.ph, %.lr.ph223.preheader518 ], [ %269, %.lr.ph223.prol ]
  %270 = icmp eq i32 %indvars.iv279.in, %.3176219.ph
  br i1 %270, label %._crit_edge224, label %.lr.ph223

.lr.ph223:                                        ; preds = %.lr.ph223.prol.loopexit, %.lr.ph223
  %.6221 = phi ptr [ %283, %.lr.ph223 ], [ %.6221.unr, %.lr.ph223.prol.loopexit ]
  %.6164220 = phi ptr [ %281, %.lr.ph223 ], [ %.6164220.unr, %.lr.ph223.prol.loopexit ]
  %.3176219 = phi i32 [ %288, %.lr.ph223 ], [ %.3176219.unr, %.lr.ph223.prol.loopexit ]
  %271 = load double, ptr %250, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %.6164220, i64 8
  %273 = load double, ptr %272, align 8, !tbaa !5
  %274 = getelementptr inbounds i8, ptr %.6221, i64 8
  %275 = load double, ptr %274, align 8, !tbaa !5
  %276 = tail call double @llvm.fmuladd.f64(double %271, double %273, double %275)
  %277 = fneg double %271
  %278 = tail call double @llvm.fmuladd.f64(double %277, double %275, double %273)
  store double %278, ptr %274, align 8, !tbaa !5
  store double %276, ptr %272, align 8, !tbaa !5
  %279 = add nuw i32 %.3176219, 1
  %280 = load double, ptr %250, align 8, !tbaa !5
  %281 = getelementptr inbounds i8, ptr %.6164220, i64 16
  %282 = load double, ptr %281, align 8, !tbaa !5
  %283 = getelementptr inbounds i8, ptr %.6221, i64 16
  %284 = load double, ptr %283, align 8, !tbaa !5
  %285 = tail call double @llvm.fmuladd.f64(double %280, double %282, double %284)
  %286 = fneg double %280
  %287 = tail call double @llvm.fmuladd.f64(double %286, double %284, double %282)
  store double %287, ptr %283, align 8, !tbaa !5
  store double %285, ptr %281, align 8, !tbaa !5
  %288 = add nuw i32 %.3176219, 2
  %exitcond281.not.1 = icmp eq i32 %279, %indvars.iv279.in
  br i1 %exitcond281.not.1, label %._crit_edge224, label %.lr.ph223, !llvm.loop !53

._crit_edge224:                                   ; preds = %.lr.ph223.prol.loopexit, %.lr.ph223, %middle.block407, %.lr.ph235
  %.6164.lcssa = phi ptr [ %0, %.lr.ph235 ], [ %ind.end415, %middle.block407 ], [ %.lcssa521.unr, %.lr.ph223.prol.loopexit ], [ %281, %.lr.ph223 ]
  %.6.lcssa = phi ptr [ %.5, %.lr.ph235 ], [ %ind.end413, %middle.block407 ], [ %.lcssa520.unr, %.lr.ph223.prol.loopexit ], [ %283, %.lr.ph223 ]
  %289 = getelementptr inbounds i8, ptr %.6.lcssa, i64 8
  %290 = load double, ptr %289, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %.6164.lcssa, i64 8
  store double %290, ptr %291, align 8, !tbaa !5
  %292 = load double, ptr %250, align 8, !tbaa !5
  %293 = fneg double %292
  %294 = fmul double %290, %293
  store double %294, ptr %289, align 8, !tbaa !5
  %295 = load double, ptr %250, align 8, !tbaa !5
  %296 = tail call double @llvm.fmuladd.f64(double %295, double %295, double 1.000000e+00)
  %297 = fmul double %.2168232, %296
  %indvars.iv.next283 = add nsw i64 %indvars.iv282, -1
  %exitcond285.not = icmp eq i32 %.2179233, %3
  %indvar.next387 = add i64 %indvar386, 1
  br i1 %exitcond285.not, label %.loopexit, label %.lr.ph235, !llvm.loop !54

.loopexit:                                        ; preds = %._crit_edge224, %._crit_edge242, %._crit_edge215, %7
  %.3169 = phi double [ %15, %7 ], [ %228, %._crit_edge215 ], [ %77, %._crit_edge242 ], [ %297, %._crit_edge224 ]
  %298 = tail call double @sqrt(double noundef %.3169) #4
  %299 = fdiv double 1.000000e+00, %298
  %.not188254 = icmp slt i32 %3, 0
  br i1 %.not188254, label %._crit_edge260, label %.lr.ph259.preheader

.lr.ph259.preheader:                              ; preds = %.loopexit
  %300 = add nuw i32 %3, 1
  %301 = zext i32 %300 to i64
  %min.iters.check487 = icmp ult i32 %3, 5
  br i1 %min.iters.check487, label %.lr.ph259.preheader514, label %vector.memcheck479

vector.memcheck479:                               ; preds = %.lr.ph259.preheader
  %302 = zext nneg i32 %3 to i64
  %303 = shl nuw nsw i64 %302, 3
  %304 = add nuw nsw i64 %303, 8
  %scevgep480 = getelementptr i8, ptr %0, i64 %304
  %scevgep481 = getelementptr i8, ptr %1, i64 %304
  %bound0482 = icmp ugt ptr %scevgep481, %0
  %bound1483 = icmp ugt ptr %scevgep480, %1
  %found.conflict484 = and i1 %bound0482, %bound1483
  br i1 %found.conflict484, label %.lr.ph259.preheader514, label %vector.ph488

vector.ph488:                                     ; preds = %vector.memcheck479
  %n.vec490 = and i64 %301, 4294967292
  %305 = shl nuw nsw i64 %n.vec490, 3
  %ind.end491 = getelementptr i8, ptr %1, i64 %305
  %306 = shl nuw nsw i64 %n.vec490, 3
  %ind.end493 = getelementptr i8, ptr %0, i64 %306
  %ind.end496 = trunc nuw i64 %n.vec490 to i32
  %broadcast.splatinsert508 = insertelement <2 x double> poison, double %299, i64 0
  %broadcast.splat509 = shufflevector <2 x double> %broadcast.splatinsert508, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body498

vector.body498:                                   ; preds = %vector.body498, %vector.ph488
  %index499 = phi i64 [ 0, %vector.ph488 ], [ %index.next512, %vector.body498 ]
  %offset.idx500 = shl i64 %index499, 3
  %next.gep501 = getelementptr i8, ptr %1, i64 %offset.idx500
  %offset.idx503 = shl i64 %index499, 3
  %next.gep504 = getelementptr i8, ptr %0, i64 %offset.idx503
  %307 = getelementptr i8, ptr %next.gep504, i64 16
  %wide.load506 = load <2 x double>, ptr %next.gep504, align 8, !tbaa !5, !alias.scope !55, !noalias !58
  %wide.load507 = load <2 x double>, ptr %307, align 8, !tbaa !5, !alias.scope !55, !noalias !58
  %308 = fmul <2 x double> %broadcast.splat509, %wide.load506
  %309 = fmul <2 x double> %broadcast.splat509, %wide.load507
  store <2 x double> %308, ptr %next.gep504, align 8, !tbaa !5, !alias.scope !55, !noalias !58
  store <2 x double> %309, ptr %307, align 8, !tbaa !5, !alias.scope !55, !noalias !58
  %310 = getelementptr i8, ptr %next.gep501, i64 16
  %wide.load510 = load <2 x double>, ptr %next.gep501, align 8, !tbaa !5, !alias.scope !58
  %wide.load511 = load <2 x double>, ptr %310, align 8, !tbaa !5, !alias.scope !58
  %311 = fmul <2 x double> %broadcast.splat509, %wide.load510
  %312 = fmul <2 x double> %broadcast.splat509, %wide.load511
  store <2 x double> %311, ptr %next.gep501, align 8, !tbaa !5, !alias.scope !58
  store <2 x double> %312, ptr %310, align 8, !tbaa !5, !alias.scope !58
  %index.next512 = add nuw i64 %index499, 4
  %313 = icmp eq i64 %index.next512, %n.vec490
  br i1 %313, label %middle.block485, label %vector.body498, !llvm.loop !60

middle.block485:                                  ; preds = %vector.body498
  %cmp.n513 = icmp eq i64 %n.vec490, %301
  br i1 %cmp.n513, label %._crit_edge260, label %.lr.ph259.preheader514

.lr.ph259.preheader514:                           ; preds = %middle.block485, %vector.memcheck479, %.lr.ph259.preheader
  %.7257.ph = phi ptr [ %1, %vector.memcheck479 ], [ %1, %.lr.ph259.preheader ], [ %ind.end491, %middle.block485 ]
  %.7165256.ph = phi ptr [ %0, %vector.memcheck479 ], [ %0, %.lr.ph259.preheader ], [ %ind.end493, %middle.block485 ]
  %.3180255.ph = phi i32 [ 0, %vector.memcheck479 ], [ 0, %.lr.ph259.preheader ], [ %ind.end496, %middle.block485 ]
  %314 = add i32 %.3180255.ph, %3
  %315 = and i32 %314, 1
  %lcmp.mod536.not.not = icmp eq i32 %315, 0
  br i1 %lcmp.mod536.not.not, label %.lr.ph259.prol, label %.lr.ph259.prol.loopexit

.lr.ph259.prol:                                   ; preds = %.lr.ph259.preheader514
  %316 = load double, ptr %.7165256.ph, align 8, !tbaa !5
  %317 = fmul double %299, %316
  %318 = getelementptr inbounds i8, ptr %.7165256.ph, i64 8
  store double %317, ptr %.7165256.ph, align 8, !tbaa !5
  %319 = load double, ptr %.7257.ph, align 8, !tbaa !5
  %320 = fmul double %299, %319
  %321 = getelementptr inbounds i8, ptr %.7257.ph, i64 8
  store double %320, ptr %.7257.ph, align 8, !tbaa !5
  %322 = add nuw i32 %.3180255.ph, 1
  br label %.lr.ph259.prol.loopexit

.lr.ph259.prol.loopexit:                          ; preds = %.lr.ph259.prol, %.lr.ph259.preheader514
  %.7257.unr = phi ptr [ %.7257.ph, %.lr.ph259.preheader514 ], [ %321, %.lr.ph259.prol ]
  %.7165256.unr = phi ptr [ %.7165256.ph, %.lr.ph259.preheader514 ], [ %318, %.lr.ph259.prol ]
  %.3180255.unr = phi i32 [ %.3180255.ph, %.lr.ph259.preheader514 ], [ %322, %.lr.ph259.prol ]
  %323 = icmp eq i32 %.3180255.ph, %3
  br i1 %323, label %._crit_edge260, label %.lr.ph259

.lr.ph259:                                        ; preds = %.lr.ph259.prol.loopexit, %.lr.ph259
  %.7257 = phi ptr [ %336, %.lr.ph259 ], [ %.7257.unr, %.lr.ph259.prol.loopexit ]
  %.7165256 = phi ptr [ %333, %.lr.ph259 ], [ %.7165256.unr, %.lr.ph259.prol.loopexit ]
  %.3180255 = phi i32 [ %337, %.lr.ph259 ], [ %.3180255.unr, %.lr.ph259.prol.loopexit ]
  %324 = load double, ptr %.7165256, align 8, !tbaa !5
  %325 = fmul double %299, %324
  %326 = getelementptr inbounds i8, ptr %.7165256, i64 8
  store double %325, ptr %.7165256, align 8, !tbaa !5
  %327 = load double, ptr %.7257, align 8, !tbaa !5
  %328 = fmul double %299, %327
  %329 = getelementptr inbounds i8, ptr %.7257, i64 8
  store double %328, ptr %.7257, align 8, !tbaa !5
  %330 = add nuw i32 %.3180255, 1
  %331 = load double, ptr %326, align 8, !tbaa !5
  %332 = fmul double %299, %331
  %333 = getelementptr inbounds i8, ptr %.7165256, i64 16
  store double %332, ptr %326, align 8, !tbaa !5
  %334 = load double, ptr %329, align 8, !tbaa !5
  %335 = fmul double %299, %334
  %336 = getelementptr inbounds i8, ptr %.7257, i64 16
  store double %335, ptr %329, align 8, !tbaa !5
  %337 = add nuw i32 %.3180255, 2
  %exitcond291.not.1 = icmp eq i32 %330, %3
  br i1 %exitcond291.not.1, label %._crit_edge260, label %.lr.ph259, !llvm.loop !61

._crit_edge260:                                   ; preds = %.lr.ph259.prol.loopexit, %.lr.ph259, %middle.block485, %.loopexit
  ret void
}

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nofree nounwind memory(readwrite, inaccessiblemem: write) 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 #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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10}
!10 = distinct !{!10, !11}
!11 = distinct !{!11, !"LVerDomain"}
!12 = !{!13}
!13 = distinct !{!13, !11}
!14 = !{!15}
!15 = distinct !{!15, !11}
!16 = !{!13, !10}
!17 = distinct !{!17, !18, !19, !20}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !18, !19}
!22 = distinct !{!22, !18}
!23 = !{!24}
!24 = distinct !{!24, !25}
!25 = distinct !{!25, !"LVerDomain"}
!26 = !{!27}
!27 = distinct !{!27, !25}
!28 = !{!29}
!29 = distinct !{!29, !25}
!30 = !{!27, !24}
!31 = distinct !{!31, !18, !19, !20}
!32 = distinct !{!32, !18, !19}
!33 = distinct !{!33, !18}
!34 = !{!35}
!35 = distinct !{!35, !36}
!36 = distinct !{!36, !"LVerDomain"}
!37 = !{!38}
!38 = distinct !{!38, !36}
!39 = !{!40}
!40 = distinct !{!40, !36}
!41 = !{!38, !35}
!42 = distinct !{!42, !18, !19, !20}
!43 = distinct !{!43, !18, !19}
!44 = !{!45}
!45 = distinct !{!45, !46}
!46 = distinct !{!46, !"LVerDomain"}
!47 = !{!48}
!48 = distinct !{!48, !46}
!49 = !{!50}
!50 = distinct !{!50, !46}
!51 = !{!48, !45}
!52 = distinct !{!52, !18, !19, !20}
!53 = distinct !{!53, !18, !19}
!54 = distinct !{!54, !18}
!55 = !{!56}
!56 = distinct !{!56, !57}
!57 = distinct !{!57, !"LVerDomain"}
!58 = !{!59}
!59 = distinct !{!59, !57}
!60 = distinct !{!60, !18, !19, !20}
!61 = distinct !{!61, !18, !19}


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