; LLVM IR from romerojosh/zefr :: src (gimmik_cpu)

; 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: 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 @gimmik_mm_cpu_14215087943608699843_b1(i32 noundef %0, ptr noalias noundef %1, i32 noundef %2, ptr noalias noundef %3, i32 noundef %4) #2 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  store i32 %0, ptr %6, align 4, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !9
  store i32 %2, ptr %8, align 4, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !9
  store i32 %4, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %13

13:                                               ; preds = %1333, %5
  %14 = load i32, ptr %12, align 4, !tbaa !5
  %15 = load i32, ptr %6, align 4, !tbaa !5
  %16 = icmp slt i32 %14, %15
  br i1 %16, label %18, label %17

17:                                               ; preds = %13
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  br label %1336

18:                                               ; preds = %13
  %19 = load ptr, ptr %7, align 8, !tbaa !9
  %20 = load i32, ptr %12, align 4, !tbaa !5
  %21 = load i32, ptr %8, align 4, !tbaa !5
  %22 = mul nsw i32 10, %21
  %23 = add nsw i32 %20, %22
  %24 = sext i32 %23 to i64
  %25 = getelementptr inbounds double, ptr %19, i64 %24
  %26 = load double, ptr %25, align 8, !tbaa !11
  %27 = load ptr, ptr %7, align 8, !tbaa !9
  %28 = load i32, ptr %12, align 4, !tbaa !5
  %29 = load i32, ptr %8, align 4, !tbaa !5
  %30 = mul nsw i32 11, %29
  %31 = add nsw i32 %28, %30
  %32 = sext i32 %31 to i64
  %33 = getelementptr inbounds double, ptr %27, i64 %32
  %34 = load double, ptr %33, align 8, !tbaa !11
  %35 = fmul double 0xBFFDDB3D742C264E, %34
  %36 = call double @llvm.fmuladd.f64(double 0xBFC126145E9ECD6D, double %26, double %35)
  %37 = load ptr, ptr %7, align 8, !tbaa !9
  %38 = load i32, ptr %12, align 4, !tbaa !5
  %39 = load i32, ptr %8, align 4, !tbaa !5
  %40 = mul nsw i32 13, %39
  %41 = add nsw i32 %38, %40
  %42 = sext i32 %41 to i64
  %43 = getelementptr inbounds double, ptr %37, i64 %42
  %44 = load double, ptr %43, align 8, !tbaa !11
  %45 = call double @llvm.fmuladd.f64(double 0xBCB8000000000001, double %44, double %36)
  %46 = load ptr, ptr %7, align 8, !tbaa !9
  %47 = load i32, ptr %12, align 4, !tbaa !5
  %48 = load i32, ptr %8, align 4, !tbaa !5
  %49 = mul nsw i32 14, %48
  %50 = add nsw i32 %47, %49
  %51 = sext i32 %50 to i64
  %52 = getelementptr inbounds double, ptr %46, i64 %51
  %53 = load double, ptr %52, align 8, !tbaa !11
  %54 = call double @llvm.fmuladd.f64(double 0x3FB8408293B0D513, double %53, double %45)
  %55 = load ptr, ptr %7, align 8, !tbaa !9
  %56 = load i32, ptr %12, align 4, !tbaa !5
  %57 = load i32, ptr %8, align 4, !tbaa !5
  %58 = mul nsw i32 15, %57
  %59 = add nsw i32 %56, %58
  %60 = sext i32 %59 to i64
  %61 = getelementptr inbounds double, ptr %55, i64 %60
  %62 = load double, ptr %61, align 8, !tbaa !11
  %63 = call double @llvm.fmuladd.f64(double 0x3FF51C963D442E79, double %62, double %54)
  %64 = load ptr, ptr %7, align 8, !tbaa !9
  %65 = load i32, ptr %12, align 4, !tbaa !5
  %66 = load i32, ptr %8, align 4, !tbaa !5
  %67 = mul nsw i32 17, %66
  %68 = add nsw i32 %65, %67
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds double, ptr %64, i64 %69
  %71 = load double, ptr %70, align 8, !tbaa !11
  %72 = call double @llvm.fmuladd.f64(double 0x3CB0F876CCDF6CD8, double %71, double %63)
  store double %72, ptr %11, align 8, !tbaa !11
  %73 = load double, ptr %11, align 8, !tbaa !11
  %74 = load ptr, ptr %9, align 8, !tbaa !9
  %75 = load i32, ptr %12, align 4, !tbaa !5
  %76 = load i32, ptr %10, align 4, !tbaa !5
  %77 = mul nsw i32 0, %76
  %78 = add nsw i32 %75, %77
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds double, ptr %74, i64 %79
  %81 = load double, ptr %80, align 8, !tbaa !11
  %82 = fadd double %81, %73
  store double %82, ptr %80, align 8, !tbaa !11
  %83 = load ptr, ptr %7, align 8, !tbaa !9
  %84 = load i32, ptr %12, align 4, !tbaa !5
  %85 = load i32, ptr %8, align 4, !tbaa !5
  %86 = mul nsw i32 10, %85
  %87 = add nsw i32 %84, %86
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds double, ptr %83, i64 %88
  %90 = load double, ptr %89, align 8, !tbaa !11
  %91 = load ptr, ptr %7, align 8, !tbaa !9
  %92 = load i32, ptr %12, align 4, !tbaa !5
  %93 = load i32, ptr %8, align 4, !tbaa !5
  %94 = mul nsw i32 11, %93
  %95 = add nsw i32 %92, %94
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds double, ptr %91, i64 %96
  %98 = load double, ptr %97, align 8, !tbaa !11
  %99 = fmul double 0x3FDFFFFFFFFFFFE1, %98
  %100 = call double @llvm.fmuladd.f64(double 0x3FDFFFFFFFFFFFDA, double %90, double %99)
  %101 = load ptr, ptr %7, align 8, !tbaa !9
  %102 = load i32, ptr %12, align 4, !tbaa !5
  %103 = load i32, ptr %8, align 4, !tbaa !5
  %104 = mul nsw i32 12, %103
  %105 = add nsw i32 %102, %104
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds double, ptr %101, i64 %106
  %108 = load double, ptr %107, align 8, !tbaa !11
  %109 = call double @llvm.fmuladd.f64(double 0xBC90000000000000, double %108, double %100)
  %110 = load ptr, ptr %7, align 8, !tbaa !9
  %111 = load i32, ptr %12, align 4, !tbaa !5
  %112 = load i32, ptr %8, align 4, !tbaa !5
  %113 = mul nsw i32 13, %112
  %114 = add nsw i32 %111, %113
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds double, ptr %110, i64 %115
  %117 = load double, ptr %116, align 8, !tbaa !11
  %118 = call double @llvm.fmuladd.f64(double 0x3CA0000000000002, double %117, double %109)
  %119 = load ptr, ptr %7, align 8, !tbaa !9
  %120 = load i32, ptr %12, align 4, !tbaa !5
  %121 = load i32, ptr %8, align 4, !tbaa !5
  %122 = mul nsw i32 14, %121
  %123 = add nsw i32 %120, %122
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds double, ptr %119, i64 %124
  %126 = load double, ptr %125, align 8, !tbaa !11
  %127 = call double @llvm.fmuladd.f64(double 0x3FF51C963D442E74, double %126, double %118)
  %128 = load ptr, ptr %7, align 8, !tbaa !9
  %129 = load i32, ptr %12, align 4, !tbaa !5
  %130 = load i32, ptr %8, align 4, !tbaa !5
  %131 = mul nsw i32 15, %130
  %132 = add nsw i32 %129, %131
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %128, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !11
  %136 = call double @llvm.fmuladd.f64(double 0x3FB8408293B0D50C, double %135, double %127)
  %137 = load ptr, ptr %7, align 8, !tbaa !9
  %138 = load i32, ptr %12, align 4, !tbaa !5
  %139 = load i32, ptr %8, align 4, !tbaa !5
  %140 = mul nsw i32 16, %139
  %141 = add nsw i32 %138, %140
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds double, ptr %137, i64 %142
  %144 = load double, ptr %143, align 8, !tbaa !11
  %145 = call double @llvm.fmuladd.f64(double 0x3CB0F876CCDF6CD8, double %144, double %136)
  %146 = load ptr, ptr %7, align 8, !tbaa !9
  %147 = load i32, ptr %12, align 4, !tbaa !5
  %148 = load i32, ptr %8, align 4, !tbaa !5
  %149 = mul nsw i32 17, %148
  %150 = add nsw i32 %147, %149
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds double, ptr %146, i64 %151
  %153 = load double, ptr %152, align 8, !tbaa !11
  %154 = call double @llvm.fmuladd.f64(double 0x3C86A09E667F3BCC, double %153, double %145)
  store double %154, ptr %11, align 8, !tbaa !11
  %155 = load double, ptr %11, align 8, !tbaa !11
  %156 = load ptr, ptr %9, align 8, !tbaa !9
  %157 = load i32, ptr %12, align 4, !tbaa !5
  %158 = load i32, ptr %10, align 4, !tbaa !5
  %159 = mul nsw i32 1, %158
  %160 = add nsw i32 %157, %159
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds double, ptr %156, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !11
  %164 = fadd double %163, %155
  store double %164, ptr %162, align 8, !tbaa !11
  %165 = load ptr, ptr %7, align 8, !tbaa !9
  %166 = load i32, ptr %12, align 4, !tbaa !5
  %167 = load i32, ptr %8, align 4, !tbaa !5
  %168 = mul nsw i32 10, %167
  %169 = add nsw i32 %166, %168
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds double, ptr %165, i64 %170
  %172 = load double, ptr %171, align 8, !tbaa !11
  %173 = load ptr, ptr %7, align 8, !tbaa !9
  %174 = load i32, ptr %12, align 4, !tbaa !5
  %175 = load i32, ptr %8, align 4, !tbaa !5
  %176 = mul nsw i32 11, %175
  %177 = add nsw i32 %174, %176
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds double, ptr %173, i64 %178
  %180 = load double, ptr %179, align 8, !tbaa !11
  %181 = fmul double 0xBFC126145E9ECD6A, %180
  %182 = call double @llvm.fmuladd.f64(double 0xBFFDDB3D742C2649, double %172, double %181)
  %183 = load ptr, ptr %7, align 8, !tbaa !9
  %184 = load i32, ptr %12, align 4, !tbaa !5
  %185 = load i32, ptr %8, align 4, !tbaa !5
  %186 = mul nsw i32 12, %185
  %187 = add nsw i32 %184, %186
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds double, ptr %183, i64 %188
  %190 = load double, ptr %189, align 8, !tbaa !11
  %191 = call double @llvm.fmuladd.f64(double 0xBCB8000000000001, double %190, double %182)
  %192 = load ptr, ptr %7, align 8, !tbaa !9
  %193 = load i32, ptr %12, align 4, !tbaa !5
  %194 = load i32, ptr %8, align 4, !tbaa !5
  %195 = mul nsw i32 13, %194
  %196 = add nsw i32 %193, %195
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %192, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !11
  %200 = call double @llvm.fmuladd.f64(double 0xBC90000000000000, double %199, double %191)
  %201 = load ptr, ptr %7, align 8, !tbaa !9
  %202 = load i32, ptr %12, align 4, !tbaa !5
  %203 = load i32, ptr %8, align 4, !tbaa !5
  %204 = mul nsw i32 14, %203
  %205 = add nsw i32 %202, %204
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds double, ptr %201, i64 %206
  %208 = load double, ptr %207, align 8, !tbaa !11
  %209 = call double @llvm.fmuladd.f64(double 0xBFD6A09E667F3BB0, double %208, double %200)
  %210 = load ptr, ptr %7, align 8, !tbaa !9
  %211 = load i32, ptr %12, align 4, !tbaa !5
  %212 = load i32, ptr %8, align 4, !tbaa !5
  %213 = mul nsw i32 15, %212
  %214 = add nsw i32 %211, %213
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %210, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = call double @llvm.fmuladd.f64(double 0xBFD6A09E667F3BB8, double %217, double %209)
  %219 = load ptr, ptr %7, align 8, !tbaa !9
  %220 = load i32, ptr %12, align 4, !tbaa !5
  %221 = load i32, ptr %8, align 4, !tbaa !5
  %222 = mul nsw i32 16, %221
  %223 = add nsw i32 %220, %222
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds double, ptr %219, i64 %224
  %226 = load double, ptr %225, align 8, !tbaa !11
  %227 = call double @llvm.fmuladd.f64(double 0x3C86A09E667F3BCC, double %226, double %218)
  %228 = load ptr, ptr %7, align 8, !tbaa !9
  %229 = load i32, ptr %12, align 4, !tbaa !5
  %230 = load i32, ptr %8, align 4, !tbaa !5
  %231 = mul nsw i32 17, %230
  %232 = add nsw i32 %229, %231
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds double, ptr %228, i64 %233
  %235 = load double, ptr %234, align 8, !tbaa !11
  %236 = call double @llvm.fmuladd.f64(double 0xBC96A09E667F3BCC, double %235, double %227)
  store double %236, ptr %11, align 8, !tbaa !11
  %237 = load double, ptr %11, align 8, !tbaa !11
  %238 = load ptr, ptr %9, align 8, !tbaa !9
  %239 = load i32, ptr %12, align 4, !tbaa !5
  %240 = load i32, ptr %10, align 4, !tbaa !5
  %241 = mul nsw i32 2, %240
  %242 = add nsw i32 %239, %241
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %238, i64 %243
  %245 = load double, ptr %244, align 8, !tbaa !11
  %246 = fadd double %245, %237
  store double %246, ptr %244, align 8, !tbaa !11
  %247 = load ptr, ptr %7, align 8, !tbaa !9
  %248 = load i32, ptr %12, align 4, !tbaa !5
  %249 = load i32, ptr %8, align 4, !tbaa !5
  %250 = mul nsw i32 11, %249
  %251 = add nsw i32 %248, %250
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds double, ptr %247, i64 %252
  %254 = load double, ptr %253, align 8, !tbaa !11
  %255 = load ptr, ptr %7, align 8, !tbaa !9
  %256 = load i32, ptr %12, align 4, !tbaa !5
  %257 = load i32, ptr %8, align 4, !tbaa !5
  %258 = mul nsw i32 12, %257
  %259 = add nsw i32 %256, %258
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %255, i64 %260
  %262 = load double, ptr %261, align 8, !tbaa !11
  %263 = fmul double 0xBFC126145E9ECD6D, %262
  %264 = call double @llvm.fmuladd.f64(double 0xBCB8000000000001, double %254, double %263)
  %265 = load ptr, ptr %7, align 8, !tbaa !9
  %266 = load i32, ptr %12, align 4, !tbaa !5
  %267 = load i32, ptr %8, align 4, !tbaa !5
  %268 = mul nsw i32 13, %267
  %269 = add nsw i32 %266, %268
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds double, ptr %265, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !11
  %273 = call double @llvm.fmuladd.f64(double 0xBFFDDB3D742C264E, double %272, double %264)
  %274 = load ptr, ptr %7, align 8, !tbaa !9
  %275 = load i32, ptr %12, align 4, !tbaa !5
  %276 = load i32, ptr %8, align 4, !tbaa !5
  %277 = mul nsw i32 15, %276
  %278 = add nsw i32 %275, %277
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds double, ptr %274, i64 %279
  %281 = load double, ptr %280, align 8, !tbaa !11
  %282 = call double @llvm.fmuladd.f64(double 0x3CB0F876CCDF6CD8, double %281, double %273)
  %283 = load ptr, ptr %7, align 8, !tbaa !9
  %284 = load i32, ptr %12, align 4, !tbaa !5
  %285 = load i32, ptr %8, align 4, !tbaa !5
  %286 = mul nsw i32 16, %285
  %287 = add nsw i32 %284, %286
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %283, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !11
  %291 = call double @llvm.fmuladd.f64(double 0x3FB8408293B0D513, double %290, double %282)
  %292 = load ptr, ptr %7, align 8, !tbaa !9
  %293 = load i32, ptr %12, align 4, !tbaa !5
  %294 = load i32, ptr %8, align 4, !tbaa !5
  %295 = mul nsw i32 17, %294
  %296 = add nsw i32 %293, %295
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds double, ptr %292, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !11
  %300 = call double @llvm.fmuladd.f64(double 0x3FF51C963D442E79, double %299, double %291)
  store double %300, ptr %11, align 8, !tbaa !11
  %301 = load double, ptr %11, align 8, !tbaa !11
  %302 = load ptr, ptr %9, align 8, !tbaa !9
  %303 = load i32, ptr %12, align 4, !tbaa !5
  %304 = load i32, ptr %10, align 4, !tbaa !5
  %305 = mul nsw i32 3, %304
  %306 = add nsw i32 %303, %305
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %302, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !11
  %310 = fadd double %309, %301
  store double %310, ptr %308, align 8, !tbaa !11
  %311 = load ptr, ptr %7, align 8, !tbaa !9
  %312 = load i32, ptr %12, align 4, !tbaa !5
  %313 = load i32, ptr %8, align 4, !tbaa !5
  %314 = mul nsw i32 10, %313
  %315 = add nsw i32 %312, %314
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds double, ptr %311, i64 %316
  %318 = load double, ptr %317, align 8, !tbaa !11
  %319 = load ptr, ptr %7, align 8, !tbaa !9
  %320 = load i32, ptr %12, align 4, !tbaa !5
  %321 = load i32, ptr %8, align 4, !tbaa !5
  %322 = mul nsw i32 11, %321
  %323 = add nsw i32 %320, %322
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %319, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !11
  %327 = fmul double 0x3CA0000000000002, %326
  %328 = call double @llvm.fmuladd.f64(double 0xBC90000000000000, double %318, double %327)
  %329 = load ptr, ptr %7, align 8, !tbaa !9
  %330 = load i32, ptr %12, align 4, !tbaa !5
  %331 = load i32, ptr %8, align 4, !tbaa !5
  %332 = mul nsw i32 12, %331
  %333 = add nsw i32 %330, %332
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds double, ptr %329, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !11
  %337 = call double @llvm.fmuladd.f64(double 0x3FDFFFFFFFFFFFDA, double %336, double %328)
  %338 = load ptr, ptr %7, align 8, !tbaa !9
  %339 = load i32, ptr %12, align 4, !tbaa !5
  %340 = load i32, ptr %8, align 4, !tbaa !5
  %341 = mul nsw i32 13, %340
  %342 = add nsw i32 %339, %341
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds double, ptr %338, i64 %343
  %345 = load double, ptr %344, align 8, !tbaa !11
  %346 = call double @llvm.fmuladd.f64(double 0x3FDFFFFFFFFFFFE1, double %345, double %337)
  %347 = load ptr, ptr %7, align 8, !tbaa !9
  %348 = load i32, ptr %12, align 4, !tbaa !5
  %349 = load i32, ptr %8, align 4, !tbaa !5
  %350 = mul nsw i32 14, %349
  %351 = add nsw i32 %348, %350
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds double, ptr %347, i64 %352
  %354 = load double, ptr %353, align 8, !tbaa !11
  %355 = call double @llvm.fmuladd.f64(double 0x3CB0F876CCDF6CD8, double %354, double %346)
  %356 = load ptr, ptr %7, align 8, !tbaa !9
  %357 = load i32, ptr %12, align 4, !tbaa !5
  %358 = load i32, ptr %8, align 4, !tbaa !5
  %359 = mul nsw i32 15, %358
  %360 = add nsw i32 %357, %359
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %356, i64 %361
  %363 = load double, ptr %362, align 8, !tbaa !11
  %364 = call double @llvm.fmuladd.f64(double 0x3C86A09E667F3BCC, double %363, double %355)
  %365 = load ptr, ptr %7, align 8, !tbaa !9
  %366 = load i32, ptr %12, align 4, !tbaa !5
  %367 = load i32, ptr %8, align 4, !tbaa !5
  %368 = mul nsw i32 16, %367
  %369 = add nsw i32 %366, %368
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds double, ptr %365, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !11
  %373 = call double @llvm.fmuladd.f64(double 0x3FF51C963D442E74, double %372, double %364)
  %374 = load ptr, ptr %7, align 8, !tbaa !9
  %375 = load i32, ptr %12, align 4, !tbaa !5
  %376 = load i32, ptr %8, align 4, !tbaa !5
  %377 = mul nsw i32 17, %376
  %378 = add nsw i32 %375, %377
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds double, ptr %374, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !11
  %382 = call double @llvm.fmuladd.f64(double 0x3FB8408293B0D50C, double %381, double %373)
  store double %382, ptr %11, align 8, !tbaa !11
  %383 = load double, ptr %11, align 8, !tbaa !11
  %384 = load ptr, ptr %9, align 8, !tbaa !9
  %385 = load i32, ptr %12, align 4, !tbaa !5
  %386 = load i32, ptr %10, align 4, !tbaa !5
  %387 = mul nsw i32 4, %386
  %388 = add nsw i32 %385, %387
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %384, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !11
  %392 = fadd double %391, %383
  store double %392, ptr %390, align 8, !tbaa !11
  %393 = load ptr, ptr %7, align 8, !tbaa !9
  %394 = load i32, ptr %12, align 4, !tbaa !5
  %395 = load i32, ptr %8, align 4, !tbaa !5
  %396 = mul nsw i32 10, %395
  %397 = add nsw i32 %394, %396
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds double, ptr %393, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !11
  %401 = load ptr, ptr %7, align 8, !tbaa !9
  %402 = load i32, ptr %12, align 4, !tbaa !5
  %403 = load i32, ptr %8, align 4, !tbaa !5
  %404 = mul nsw i32 11, %403
  %405 = add nsw i32 %402, %404
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %401, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !11
  %409 = fmul double 0xBC90000000000000, %408
  %410 = call double @llvm.fmuladd.f64(double 0xBCB8000000000001, double %400, double %409)
  %411 = load ptr, ptr %7, align 8, !tbaa !9
  %412 = load i32, ptr %12, align 4, !tbaa !5
  %413 = load i32, ptr %8, align 4, !tbaa !5
  %414 = mul nsw i32 12, %413
  %415 = add nsw i32 %412, %414
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %411, i64 %416
  %418 = load double, ptr %417, align 8, !tbaa !11
  %419 = call double @llvm.fmuladd.f64(double 0xBFFDDB3D742C2649, double %418, double %410)
  %420 = load ptr, ptr %7, align 8, !tbaa !9
  %421 = load i32, ptr %12, align 4, !tbaa !5
  %422 = load i32, ptr %8, align 4, !tbaa !5
  %423 = mul nsw i32 13, %422
  %424 = add nsw i32 %421, %423
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %420, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !11
  %428 = call double @llvm.fmuladd.f64(double 0xBFC126145E9ECD6A, double %427, double %419)
  %429 = load ptr, ptr %7, align 8, !tbaa !9
  %430 = load i32, ptr %12, align 4, !tbaa !5
  %431 = load i32, ptr %8, align 4, !tbaa !5
  %432 = mul nsw i32 14, %431
  %433 = add nsw i32 %430, %432
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %429, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !11
  %437 = call double @llvm.fmuladd.f64(double 0x3C86A09E667F3BCC, double %436, double %428)
  %438 = load ptr, ptr %7, align 8, !tbaa !9
  %439 = load i32, ptr %12, align 4, !tbaa !5
  %440 = load i32, ptr %8, align 4, !tbaa !5
  %441 = mul nsw i32 15, %440
  %442 = add nsw i32 %439, %441
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %438, i64 %443
  %445 = load double, ptr %444, align 8, !tbaa !11
  %446 = call double @llvm.fmuladd.f64(double 0xBC96A09E667F3BCC, double %445, double %437)
  %447 = load ptr, ptr %7, align 8, !tbaa !9
  %448 = load i32, ptr %12, align 4, !tbaa !5
  %449 = load i32, ptr %8, align 4, !tbaa !5
  %450 = mul nsw i32 16, %449
  %451 = add nsw i32 %448, %450
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %447, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !11
  %455 = call double @llvm.fmuladd.f64(double 0xBFD6A09E667F3BB0, double %454, double %446)
  %456 = load ptr, ptr %7, align 8, !tbaa !9
  %457 = load i32, ptr %12, align 4, !tbaa !5
  %458 = load i32, ptr %8, align 4, !tbaa !5
  %459 = mul nsw i32 17, %458
  %460 = add nsw i32 %457, %459
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds double, ptr %456, i64 %461
  %463 = load double, ptr %462, align 8, !tbaa !11
  %464 = call double @llvm.fmuladd.f64(double 0xBFD6A09E667F3BB8, double %463, double %455)
  store double %464, ptr %11, align 8, !tbaa !11
  %465 = load double, ptr %11, align 8, !tbaa !11
  %466 = load ptr, ptr %9, align 8, !tbaa !9
  %467 = load i32, ptr %12, align 4, !tbaa !5
  %468 = load i32, ptr %10, align 4, !tbaa !5
  %469 = mul nsw i32 5, %468
  %470 = add nsw i32 %467, %469
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds double, ptr %466, i64 %471
  %473 = load double, ptr %472, align 8, !tbaa !11
  %474 = fadd double %473, %465
  store double %474, ptr %472, align 8, !tbaa !11
  %475 = load ptr, ptr %7, align 8, !tbaa !9
  %476 = load i32, ptr %12, align 4, !tbaa !5
  %477 = load i32, ptr %8, align 4, !tbaa !5
  %478 = mul nsw i32 6, %477
  %479 = add nsw i32 %476, %478
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %475, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !11
  %483 = load ptr, ptr %7, align 8, !tbaa !9
  %484 = load i32, ptr %12, align 4, !tbaa !5
  %485 = load i32, ptr %8, align 4, !tbaa !5
  %486 = mul nsw i32 7, %485
  %487 = add nsw i32 %484, %486
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds double, ptr %483, i64 %488
  %490 = load double, ptr %489, align 8, !tbaa !11
  %491 = fmul double 0x3FDFFFFFFFFFFFE9, %490
  %492 = call double @llvm.fmuladd.f64(double 0x3FDFFFFFFFFFFFE9, double %482, double %491)
  %493 = load ptr, ptr %7, align 8, !tbaa !9
  %494 = load i32, ptr %12, align 4, !tbaa !5
  %495 = load i32, ptr %8, align 4, !tbaa !5
  %496 = mul nsw i32 8, %495
  %497 = add nsw i32 %494, %496
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %493, i64 %498
  %500 = load double, ptr %499, align 8, !tbaa !11
  %501 = call double @llvm.fmuladd.f64(double 0x3CA0000000000002, double %500, double %492)
  %502 = load ptr, ptr %7, align 8, !tbaa !9
  %503 = load i32, ptr %12, align 4, !tbaa !5
  %504 = load i32, ptr %8, align 4, !tbaa !5
  %505 = mul nsw i32 9, %504
  %506 = add nsw i32 %503, %505
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds double, ptr %502, i64 %507
  %509 = load double, ptr %508, align 8, !tbaa !11
  %510 = call double @llvm.fmuladd.f64(double 0x3CA0000000000002, double %509, double %501)
  %511 = load ptr, ptr %7, align 8, !tbaa !9
  %512 = load i32, ptr %12, align 4, !tbaa !5
  %513 = load i32, ptr %8, align 4, !tbaa !5
  %514 = mul nsw i32 14, %513
  %515 = add nsw i32 %512, %514
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds double, ptr %511, i64 %516
  %518 = load double, ptr %517, align 8, !tbaa !11
  %519 = call double @llvm.fmuladd.f64(double 0x3FB8408293B0D513, double %518, double %510)
  %520 = load ptr, ptr %7, align 8, !tbaa !9
  %521 = load i32, ptr %12, align 4, !tbaa !5
  %522 = load i32, ptr %8, align 4, !tbaa !5
  %523 = mul nsw i32 15, %522
  %524 = add nsw i32 %521, %523
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %520, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = call double @llvm.fmuladd.f64(double 0x3FF51C963D442E79, double %527, double %519)
  %529 = load ptr, ptr %7, align 8, !tbaa !9
  %530 = load i32, ptr %12, align 4, !tbaa !5
  %531 = load i32, ptr %8, align 4, !tbaa !5
  %532 = mul nsw i32 17, %531
  %533 = add nsw i32 %530, %532
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds double, ptr %529, i64 %534
  %536 = load double, ptr %535, align 8, !tbaa !11
  %537 = call double @llvm.fmuladd.f64(double 0x3CB0F876CCDF6CD8, double %536, double %528)
  store double %537, ptr %11, align 8, !tbaa !11
  %538 = load double, ptr %11, align 8, !tbaa !11
  %539 = load ptr, ptr %9, align 8, !tbaa !9
  %540 = load i32, ptr %12, align 4, !tbaa !5
  %541 = load i32, ptr %10, align 4, !tbaa !5
  %542 = mul nsw i32 6, %541
  %543 = add nsw i32 %540, %542
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %539, i64 %544
  %546 = load double, ptr %545, align 8, !tbaa !11
  %547 = fadd double %546, %538
  store double %547, ptr %545, align 8, !tbaa !11
  %548 = load ptr, ptr %7, align 8, !tbaa !9
  %549 = load i32, ptr %12, align 4, !tbaa !5
  %550 = load i32, ptr %8, align 4, !tbaa !5
  %551 = mul nsw i32 6, %550
  %552 = add nsw i32 %549, %551
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %548, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !11
  %556 = load ptr, ptr %7, align 8, !tbaa !9
  %557 = load i32, ptr %12, align 4, !tbaa !5
  %558 = load i32, ptr %8, align 4, !tbaa !5
  %559 = mul nsw i32 7, %558
  %560 = add nsw i32 %557, %559
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds double, ptr %556, i64 %561
  %563 = load double, ptr %562, align 8, !tbaa !11
  %564 = fmul double 0xBFFDDB3D742C264E, %563
  %565 = call double @llvm.fmuladd.f64(double 0xBFC126145E9ECD7C, double %555, double %564)
  %566 = load ptr, ptr %7, align 8, !tbaa !9
  %567 = load i32, ptr %12, align 4, !tbaa !5
  %568 = load i32, ptr %8, align 4, !tbaa !5
  %569 = mul nsw i32 8, %568
  %570 = add nsw i32 %567, %569
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds double, ptr %566, i64 %571
  %573 = load double, ptr %572, align 8, !tbaa !11
  %574 = call double @llvm.fmuladd.f64(double 0xBCA0000000000002, double %573, double %565)
  %575 = load ptr, ptr %7, align 8, !tbaa !9
  %576 = load i32, ptr %12, align 4, !tbaa !5
  %577 = load i32, ptr %8, align 4, !tbaa !5
  %578 = mul nsw i32 9, %577
  %579 = add nsw i32 %576, %578
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds double, ptr %575, i64 %580
  %582 = load double, ptr %581, align 8, !tbaa !11
  %583 = call double @llvm.fmuladd.f64(double 0xBCC0000000000000, double %582, double %574)
  %584 = load ptr, ptr %7, align 8, !tbaa !9
  %585 = load i32, ptr %12, align 4, !tbaa !5
  %586 = load i32, ptr %8, align 4, !tbaa !5
  %587 = mul nsw i32 14, %586
  %588 = add nsw i32 %585, %587
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %584, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !11
  %592 = call double @llvm.fmuladd.f64(double 0x3FF51C963D442E74, double %591, double %583)
  %593 = load ptr, ptr %7, align 8, !tbaa !9
  %594 = load i32, ptr %12, align 4, !tbaa !5
  %595 = load i32, ptr %8, align 4, !tbaa !5
  %596 = mul nsw i32 15, %595
  %597 = add nsw i32 %594, %596
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %593, i64 %598
  %600 = load double, ptr %599, align 8, !tbaa !11
  %601 = call double @llvm.fmuladd.f64(double 0x3FB8408293B0D50C, double %600, double %592)
  %602 = load ptr, ptr %7, align 8, !tbaa !9
  %603 = load i32, ptr %12, align 4, !tbaa !5
  %604 = load i32, ptr %8, align 4, !tbaa !5
  %605 = mul nsw i32 16, %604
  %606 = add nsw i32 %603, %605
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %602, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  %610 = call double @llvm.fmuladd.f64(double 0x3CB0F876CCDF6CD8, double %609, double %601)
  %611 = load ptr, ptr %7, align 8, !tbaa !9
  %612 = load i32, ptr %12, align 4, !tbaa !5
  %613 = load i32, ptr %8, align 4, !tbaa !5
  %614 = mul nsw i32 17, %613
  %615 = add nsw i32 %612, %614
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %611, i64 %616
  %618 = load double, ptr %617, align 8, !tbaa !11
  %619 = call double @llvm.fmuladd.f64(double 0x3C86A09E667F3BCC, double %618, double %610)
  store double %619, ptr %11, align 8, !tbaa !11
  %620 = load double, ptr %11, align 8, !tbaa !11
  %621 = load ptr, ptr %9, align 8, !tbaa !9
  %622 = load i32, ptr %12, align 4, !tbaa !5
  %623 = load i32, ptr %10, align 4, !tbaa !5
  %624 = mul nsw i32 7, %623
  %625 = add nsw i32 %622, %624
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %621, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = fadd double %628, %620
  store double %629, ptr %627, align 8, !tbaa !11
  %630 = load ptr, ptr %7, align 8, !tbaa !9
  %631 = load i32, ptr %12, align 4, !tbaa !5
  %632 = load i32, ptr %8, align 4, !tbaa !5
  %633 = mul nsw i32 6, %632
  %634 = add nsw i32 %631, %633
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %630, i64 %635
  %637 = load double, ptr %636, align 8, !tbaa !11
  %638 = load ptr, ptr %7, align 8, !tbaa !9
  %639 = load i32, ptr %12, align 4, !tbaa !5
  %640 = load i32, ptr %8, align 4, !tbaa !5
  %641 = mul nsw i32 7, %640
  %642 = add nsw i32 %639, %641
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %638, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = fmul double 0xBFC126145E9ECD7C, %645
  %647 = call double @llvm.fmuladd.f64(double 0xBFFDDB3D742C264E, double %637, double %646)
  %648 = load ptr, ptr %7, align 8, !tbaa !9
  %649 = load i32, ptr %12, align 4, !tbaa !5
  %650 = load i32, ptr %8, align 4, !tbaa !5
  %651 = mul nsw i32 8, %650
  %652 = add nsw i32 %649, %651
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %648, i64 %653
  %655 = load double, ptr %654, align 8, !tbaa !11
  %656 = call double @llvm.fmuladd.f64(double 0xBCC0000000000000, double %655, double %647)
  %657 = load ptr, ptr %7, align 8, !tbaa !9
  %658 = load i32, ptr %12, align 4, !tbaa !5
  %659 = load i32, ptr %8, align 4, !tbaa !5
  %660 = mul nsw i32 9, %659
  %661 = add nsw i32 %658, %660
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds double, ptr %657, i64 %662
  %664 = load double, ptr %663, align 8, !tbaa !11
  %665 = call double @llvm.fmuladd.f64(double 0xBCA0000000000002, double %664, double %656)
  %666 = load ptr, ptr %7, align 8, !tbaa !9
  %667 = load i32, ptr %12, align 4, !tbaa !5
  %668 = load i32, ptr %8, align 4, !tbaa !5
  %669 = mul nsw i32 14, %668
  %670 = add nsw i32 %667, %669
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %666, i64 %671
  %673 = load double, ptr %672, align 8, !tbaa !11
  %674 = call double @llvm.fmuladd.f64(double 0xBFD6A09E667F3BB0, double %673, double %665)
  %675 = load ptr, ptr %7, align 8, !tbaa !9
  %676 = load i32, ptr %12, align 4, !tbaa !5
  %677 = load i32, ptr %8, align 4, !tbaa !5
  %678 = mul nsw i32 15, %677
  %679 = add nsw i32 %676, %678
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %675, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !11
  %683 = call double @llvm.fmuladd.f64(double 0xBFD6A09E667F3BB8, double %682, double %674)
  %684 = load ptr, ptr %7, align 8, !tbaa !9
  %685 = load i32, ptr %12, align 4, !tbaa !5
  %686 = load i32, ptr %8, align 4, !tbaa !5
  %687 = mul nsw i32 16, %686
  %688 = add nsw i32 %685, %687
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds double, ptr %684, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = call double @llvm.fmuladd.f64(double 0x3C86A09E667F3BCC, double %691, double %683)
  %693 = load ptr, ptr %7, align 8, !tbaa !9
  %694 = load i32, ptr %12, align 4, !tbaa !5
  %695 = load i32, ptr %8, align 4, !tbaa !5
  %696 = mul nsw i32 17, %695
  %697 = add nsw i32 %694, %696
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %693, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !11
  %701 = call double @llvm.fmuladd.f64(double 0xBC96A09E667F3BCC, double %700, double %692)
  store double %701, ptr %11, align 8, !tbaa !11
  %702 = load double, ptr %11, align 8, !tbaa !11
  %703 = load ptr, ptr %9, align 8, !tbaa !9
  %704 = load i32, ptr %12, align 4, !tbaa !5
  %705 = load i32, ptr %10, align 4, !tbaa !5
  %706 = mul nsw i32 8, %705
  %707 = add nsw i32 %704, %706
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %703, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !11
  %711 = fadd double %710, %702
  store double %711, ptr %709, align 8, !tbaa !11
  %712 = load ptr, ptr %7, align 8, !tbaa !9
  %713 = load i32, ptr %12, align 4, !tbaa !5
  %714 = load i32, ptr %8, align 4, !tbaa !5
  %715 = mul nsw i32 6, %714
  %716 = add nsw i32 %713, %715
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds double, ptr %712, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !11
  %720 = load ptr, ptr %7, align 8, !tbaa !9
  %721 = load i32, ptr %12, align 4, !tbaa !5
  %722 = load i32, ptr %8, align 4, !tbaa !5
  %723 = mul nsw i32 7, %722
  %724 = add nsw i32 %721, %723
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %720, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !11
  %728 = fmul double 0x3CA0000000000002, %727
  %729 = call double @llvm.fmuladd.f64(double 0x3CA0000000000002, double %719, double %728)
  %730 = load ptr, ptr %7, align 8, !tbaa !9
  %731 = load i32, ptr %12, align 4, !tbaa !5
  %732 = load i32, ptr %8, align 4, !tbaa !5
  %733 = mul nsw i32 8, %732
  %734 = add nsw i32 %731, %733
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds double, ptr %730, i64 %735
  %737 = load double, ptr %736, align 8, !tbaa !11
  %738 = call double @llvm.fmuladd.f64(double 0x3FDFFFFFFFFFFFE9, double %737, double %729)
  %739 = load ptr, ptr %7, align 8, !tbaa !9
  %740 = load i32, ptr %12, align 4, !tbaa !5
  %741 = load i32, ptr %8, align 4, !tbaa !5
  %742 = mul nsw i32 9, %741
  %743 = add nsw i32 %740, %742
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds double, ptr %739, i64 %744
  %746 = load double, ptr %745, align 8, !tbaa !11
  %747 = call double @llvm.fmuladd.f64(double 0x3FDFFFFFFFFFFFE9, double %746, double %738)
  %748 = load ptr, ptr %7, align 8, !tbaa !9
  %749 = load i32, ptr %12, align 4, !tbaa !5
  %750 = load i32, ptr %8, align 4, !tbaa !5
  %751 = mul nsw i32 15, %750
  %752 = add nsw i32 %749, %751
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds double, ptr %748, i64 %753
  %755 = load double, ptr %754, align 8, !tbaa !11
  %756 = call double @llvm.fmuladd.f64(double 0x3CB0F876CCDF6CD8, double %755, double %747)
  %757 = load ptr, ptr %7, align 8, !tbaa !9
  %758 = load i32, ptr %12, align 4, !tbaa !5
  %759 = load i32, ptr %8, align 4, !tbaa !5
  %760 = mul nsw i32 16, %759
  %761 = add nsw i32 %758, %760
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %757, i64 %762
  %764 = load double, ptr %763, align 8, !tbaa !11
  %765 = call double @llvm.fmuladd.f64(double 0x3FB8408293B0D513, double %764, double %756)
  %766 = load ptr, ptr %7, align 8, !tbaa !9
  %767 = load i32, ptr %12, align 4, !tbaa !5
  %768 = load i32, ptr %8, align 4, !tbaa !5
  %769 = mul nsw i32 17, %768
  %770 = add nsw i32 %767, %769
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds double, ptr %766, i64 %771
  %773 = load double, ptr %772, align 8, !tbaa !11
  %774 = call double @llvm.fmuladd.f64(double 0x3FF51C963D442E79, double %773, double %765)
  store double %774, ptr %11, align 8, !tbaa !11
  %775 = load double, ptr %11, align 8, !tbaa !11
  %776 = load ptr, ptr %9, align 8, !tbaa !9
  %777 = load i32, ptr %12, align 4, !tbaa !5
  %778 = load i32, ptr %10, align 4, !tbaa !5
  %779 = mul nsw i32 9, %778
  %780 = add nsw i32 %777, %779
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds double, ptr %776, i64 %781
  %783 = load double, ptr %782, align 8, !tbaa !11
  %784 = fadd double %783, %775
  store double %784, ptr %782, align 8, !tbaa !11
  %785 = load ptr, ptr %7, align 8, !tbaa !9
  %786 = load i32, ptr %12, align 4, !tbaa !5
  %787 = load i32, ptr %8, align 4, !tbaa !5
  %788 = mul nsw i32 6, %787
  %789 = add nsw i32 %786, %788
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds double, ptr %785, i64 %790
  %792 = load double, ptr %791, align 8, !tbaa !11
  %793 = load ptr, ptr %7, align 8, !tbaa !9
  %794 = load i32, ptr %12, align 4, !tbaa !5
  %795 = load i32, ptr %8, align 4, !tbaa !5
  %796 = mul nsw i32 7, %795
  %797 = add nsw i32 %794, %796
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %793, i64 %798
  %800 = load double, ptr %799, align 8, !tbaa !11
  %801 = fmul double 0xBCC0000000000000, %800
  %802 = call double @llvm.fmuladd.f64(double 0xBCA0000000000002, double %792, double %801)
  %803 = load ptr, ptr %7, align 8, !tbaa !9
  %804 = load i32, ptr %12, align 4, !tbaa !5
  %805 = load i32, ptr %8, align 4, !tbaa !5
  %806 = mul nsw i32 8, %805
  %807 = add nsw i32 %804, %806
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds double, ptr %803, i64 %808
  %810 = load double, ptr %809, align 8, !tbaa !11
  %811 = call double @llvm.fmuladd.f64(double 0xBFC126145E9ECD7C, double %810, double %802)
  %812 = load ptr, ptr %7, align 8, !tbaa !9
  %813 = load i32, ptr %12, align 4, !tbaa !5
  %814 = load i32, ptr %8, align 4, !tbaa !5
  %815 = mul nsw i32 9, %814
  %816 = add nsw i32 %813, %815
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds double, ptr %812, i64 %817
  %819 = load double, ptr %818, align 8, !tbaa !11
  %820 = call double @llvm.fmuladd.f64(double 0xBFFDDB3D742C264E, double %819, double %811)
  %821 = load ptr, ptr %7, align 8, !tbaa !9
  %822 = load i32, ptr %12, align 4, !tbaa !5
  %823 = load i32, ptr %8, align 4, !tbaa !5
  %824 = mul nsw i32 14, %823
  %825 = add nsw i32 %822, %824
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds double, ptr %821, i64 %826
  %828 = load double, ptr %827, align 8, !tbaa !11
  %829 = call double @llvm.fmuladd.f64(double 0x3CB0F876CCDF6CD8, double %828, double %820)
  %830 = load ptr, ptr %7, align 8, !tbaa !9
  %831 = load i32, ptr %12, align 4, !tbaa !5
  %832 = load i32, ptr %8, align 4, !tbaa !5
  %833 = mul nsw i32 15, %832
  %834 = add nsw i32 %831, %833
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %830, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !11
  %838 = call double @llvm.fmuladd.f64(double 0x3C86A09E667F3BCC, double %837, double %829)
  %839 = load ptr, ptr %7, align 8, !tbaa !9
  %840 = load i32, ptr %12, align 4, !tbaa !5
  %841 = load i32, ptr %8, align 4, !tbaa !5
  %842 = mul nsw i32 16, %841
  %843 = add nsw i32 %840, %842
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %839, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !11
  %847 = call double @llvm.fmuladd.f64(double 0x3FF51C963D442E74, double %846, double %838)
  %848 = load ptr, ptr %7, align 8, !tbaa !9
  %849 = load i32, ptr %12, align 4, !tbaa !5
  %850 = load i32, ptr %8, align 4, !tbaa !5
  %851 = mul nsw i32 17, %850
  %852 = add nsw i32 %849, %851
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds double, ptr %848, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !11
  %856 = call double @llvm.fmuladd.f64(double 0x3FB8408293B0D50C, double %855, double %847)
  store double %856, ptr %11, align 8, !tbaa !11
  %857 = load double, ptr %11, align 8, !tbaa !11
  %858 = load ptr, ptr %9, align 8, !tbaa !9
  %859 = load i32, ptr %12, align 4, !tbaa !5
  %860 = load i32, ptr %10, align 4, !tbaa !5
  %861 = mul nsw i32 10, %860
  %862 = add nsw i32 %859, %861
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %858, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !11
  %866 = fadd double %865, %857
  store double %866, ptr %864, align 8, !tbaa !11
  %867 = load ptr, ptr %7, align 8, !tbaa !9
  %868 = load i32, ptr %12, align 4, !tbaa !5
  %869 = load i32, ptr %8, align 4, !tbaa !5
  %870 = mul nsw i32 6, %869
  %871 = add nsw i32 %868, %870
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds double, ptr %867, i64 %872
  %874 = load double, ptr %873, align 8, !tbaa !11
  %875 = load ptr, ptr %7, align 8, !tbaa !9
  %876 = load i32, ptr %12, align 4, !tbaa !5
  %877 = load i32, ptr %8, align 4, !tbaa !5
  %878 = mul nsw i32 7, %877
  %879 = add nsw i32 %876, %878
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %875, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !11
  %883 = fmul double 0xBCA0000000000002, %882
  %884 = call double @llvm.fmuladd.f64(double 0xBCC0000000000000, double %874, double %883)
  %885 = load ptr, ptr %7, align 8, !tbaa !9
  %886 = load i32, ptr %12, align 4, !tbaa !5
  %887 = load i32, ptr %8, align 4, !tbaa !5
  %888 = mul nsw i32 8, %887
  %889 = add nsw i32 %886, %888
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds double, ptr %885, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !11
  %893 = call double @llvm.fmuladd.f64(double 0xBFFDDB3D742C264E, double %892, double %884)
  %894 = load ptr, ptr %7, align 8, !tbaa !9
  %895 = load i32, ptr %12, align 4, !tbaa !5
  %896 = load i32, ptr %8, align 4, !tbaa !5
  %897 = mul nsw i32 9, %896
  %898 = add nsw i32 %895, %897
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds double, ptr %894, i64 %899
  %901 = load double, ptr %900, align 8, !tbaa !11
  %902 = call double @llvm.fmuladd.f64(double 0xBFC126145E9ECD7C, double %901, double %893)
  %903 = load ptr, ptr %7, align 8, !tbaa !9
  %904 = load i32, ptr %12, align 4, !tbaa !5
  %905 = load i32, ptr %8, align 4, !tbaa !5
  %906 = mul nsw i32 14, %905
  %907 = add nsw i32 %904, %906
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds double, ptr %903, i64 %908
  %910 = load double, ptr %909, align 8, !tbaa !11
  %911 = call double @llvm.fmuladd.f64(double 0x3C86A09E667F3BCC, double %910, double %902)
  %912 = load ptr, ptr %7, align 8, !tbaa !9
  %913 = load i32, ptr %12, align 4, !tbaa !5
  %914 = load i32, ptr %8, align 4, !tbaa !5
  %915 = mul nsw i32 15, %914
  %916 = add nsw i32 %913, %915
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %912, i64 %917
  %919 = load double, ptr %918, align 8, !tbaa !11
  %920 = call double @llvm.fmuladd.f64(double 0xBC96A09E667F3BCC, double %919, double %911)
  %921 = load ptr, ptr %7, align 8, !tbaa !9
  %922 = load i32, ptr %12, align 4, !tbaa !5
  %923 = load i32, ptr %8, align 4, !tbaa !5
  %924 = mul nsw i32 16, %923
  %925 = add nsw i32 %922, %924
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %921, i64 %926
  %928 = load double, ptr %927, align 8, !tbaa !11
  %929 = call double @llvm.fmuladd.f64(double 0xBFD6A09E667F3BB0, double %928, double %920)
  %930 = load ptr, ptr %7, align 8, !tbaa !9
  %931 = load i32, ptr %12, align 4, !tbaa !5
  %932 = load i32, ptr %8, align 4, !tbaa !5
  %933 = mul nsw i32 17, %932
  %934 = add nsw i32 %931, %933
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %930, i64 %935
  %937 = load double, ptr %936, align 8, !tbaa !11
  %938 = call double @llvm.fmuladd.f64(double 0xBFD6A09E667F3BB8, double %937, double %929)
  store double %938, ptr %11, align 8, !tbaa !11
  %939 = load double, ptr %11, align 8, !tbaa !11
  %940 = load ptr, ptr %9, align 8, !tbaa !9
  %941 = load i32, ptr %12, align 4, !tbaa !5
  %942 = load i32, ptr %10, align 4, !tbaa !5
  %943 = mul nsw i32 11, %942
  %944 = add nsw i32 %941, %943
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds double, ptr %940, i64 %945
  %947 = load double, ptr %946, align 8, !tbaa !11
  %948 = fadd double %947, %939
  store double %948, ptr %946, align 8, !tbaa !11
  %949 = load ptr, ptr %7, align 8, !tbaa !9
  %950 = load i32, ptr %12, align 4, !tbaa !5
  %951 = load i32, ptr %8, align 4, !tbaa !5
  %952 = mul nsw i32 0, %951
  %953 = add nsw i32 %950, %952
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds double, ptr %949, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !11
  %957 = load ptr, ptr %7, align 8, !tbaa !9
  %958 = load i32, ptr %12, align 4, !tbaa !5
  %959 = load i32, ptr %8, align 4, !tbaa !5
  %960 = mul nsw i32 1, %959
  %961 = add nsw i32 %958, %960
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %957, i64 %962
  %964 = load double, ptr %963, align 8, !tbaa !11
  %965 = fmul double 0xBCE4000000000000, %964
  %966 = call double @llvm.fmuladd.f64(double 0xBFF5DB3D742C262A, double %956, double %965)
  %967 = load ptr, ptr %7, align 8, !tbaa !9
  %968 = load i32, ptr %12, align 4, !tbaa !5
  %969 = load i32, ptr %8, align 4, !tbaa !5
  %970 = mul nsw i32 2, %969
  %971 = add nsw i32 %968, %970
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds double, ptr %967, i64 %972
  %974 = load double, ptr %973, align 8, !tbaa !11
  %975 = call double @llvm.fmuladd.f64(double 0xBCE37FFFFFFFFFFF, double %974, double %966)
  %976 = load ptr, ptr %7, align 8, !tbaa !9
  %977 = load i32, ptr %12, align 4, !tbaa !5
  %978 = load i32, ptr %8, align 4, !tbaa !5
  %979 = mul nsw i32 3, %978
  %980 = add nsw i32 %977, %979
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds double, ptr %976, i64 %981
  %983 = load double, ptr %982, align 8, !tbaa !11
  %984 = call double @llvm.fmuladd.f64(double 0xBFD76CF5D0B09922, double %983, double %975)
  %985 = load ptr, ptr %7, align 8, !tbaa !9
  %986 = load i32, ptr %12, align 4, !tbaa !5
  %987 = load i32, ptr %8, align 4, !tbaa !5
  %988 = mul nsw i32 4, %987
  %989 = add nsw i32 %986, %988
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds double, ptr %985, i64 %990
  %992 = load double, ptr %991, align 8, !tbaa !11
  %993 = call double @llvm.fmuladd.f64(double 0xBCC8000000000000, double %992, double %984)
  %994 = load ptr, ptr %7, align 8, !tbaa !9
  %995 = load i32, ptr %12, align 4, !tbaa !5
  %996 = load i32, ptr %8, align 4, !tbaa !5
  %997 = mul nsw i32 5, %996
  %998 = add nsw i32 %995, %997
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds double, ptr %994, i64 %999
  %1001 = load double, ptr %1000, align 8, !tbaa !11
  %1002 = call double @llvm.fmuladd.f64(double 0xBCC6000000000000, double %1001, double %993)
  store double %1002, ptr %11, align 8, !tbaa !11
  %1003 = load double, ptr %11, align 8, !tbaa !11
  %1004 = load ptr, ptr %9, align 8, !tbaa !9
  %1005 = load i32, ptr %12, align 4, !tbaa !5
  %1006 = load i32, ptr %10, align 4, !tbaa !5
  %1007 = mul nsw i32 12, %1006
  %1008 = add nsw i32 %1005, %1007
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds double, ptr %1004, i64 %1009
  %1011 = load double, ptr %1010, align 8, !tbaa !11
  %1012 = fadd double %1011, %1003
  store double %1012, ptr %1010, align 8, !tbaa !11
  %1013 = load ptr, ptr %7, align 8, !tbaa !9
  %1014 = load i32, ptr %12, align 4, !tbaa !5
  %1015 = load i32, ptr %8, align 4, !tbaa !5
  %1016 = mul nsw i32 0, %1015
  %1017 = add nsw i32 %1014, %1016
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds double, ptr %1013, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !11
  %1021 = load ptr, ptr %7, align 8, !tbaa !9
  %1022 = load i32, ptr %12, align 4, !tbaa !5
  %1023 = load i32, ptr %8, align 4, !tbaa !5
  %1024 = mul nsw i32 1, %1023
  %1025 = add nsw i32 %1022, %1024
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1021, i64 %1026
  %1028 = load double, ptr %1027, align 8, !tbaa !11
  %1029 = fmul double 0xBFF5DB3D742C262A, %1028
  %1030 = call double @llvm.fmuladd.f64(double 0xBCE4800000000000, double %1020, double %1029)
  %1031 = load ptr, ptr %7, align 8, !tbaa !9
  %1032 = load i32, ptr %12, align 4, !tbaa !5
  %1033 = load i32, ptr %8, align 4, !tbaa !5
  %1034 = mul nsw i32 2, %1033
  %1035 = add nsw i32 %1032, %1034
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1031, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !11
  %1039 = call double @llvm.fmuladd.f64(double 0xBCE8000000000001, double %1038, double %1030)
  %1040 = load ptr, ptr %7, align 8, !tbaa !9
  %1041 = load i32, ptr %12, align 4, !tbaa !5
  %1042 = load i32, ptr %8, align 4, !tbaa !5
  %1043 = mul nsw i32 3, %1042
  %1044 = add nsw i32 %1041, %1043
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1040, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !11
  %1048 = call double @llvm.fmuladd.f64(double 0xBCC6000000000000, double %1047, double %1039)
  %1049 = load ptr, ptr %7, align 8, !tbaa !9
  %1050 = load i32, ptr %12, align 4, !tbaa !5
  %1051 = load i32, ptr %8, align 4, !tbaa !5
  %1052 = mul nsw i32 4, %1051
  %1053 = add nsw i32 %1050, %1052
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds double, ptr %1049, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !11
  %1057 = call double @llvm.fmuladd.f64(double 0xBFD76CF5D0B09923, double %1056, double %1048)
  %1058 = load ptr, ptr %7, align 8, !tbaa !9
  %1059 = load i32, ptr %12, align 4, !tbaa !5
  %1060 = load i32, ptr %8, align 4, !tbaa !5
  %1061 = mul nsw i32 5, %1060
  %1062 = add nsw i32 %1059, %1061
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds double, ptr %1058, i64 %1063
  %1065 = load double, ptr %1064, align 8, !tbaa !11
  %1066 = call double @llvm.fmuladd.f64(double 0xBCC8000000000000, double %1065, double %1057)
  store double %1066, ptr %11, align 8, !tbaa !11
  %1067 = load double, ptr %11, align 8, !tbaa !11
  %1068 = load ptr, ptr %9, align 8, !tbaa !9
  %1069 = load i32, ptr %12, align 4, !tbaa !5
  %1070 = load i32, ptr %10, align 4, !tbaa !5
  %1071 = mul nsw i32 13, %1070
  %1072 = add nsw i32 %1069, %1071
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds double, ptr %1068, i64 %1073
  %1075 = load double, ptr %1074, align 8, !tbaa !11
  %1076 = fadd double %1075, %1067
  store double %1076, ptr %1074, align 8, !tbaa !11
  %1077 = load ptr, ptr %7, align 8, !tbaa !9
  %1078 = load i32, ptr %12, align 4, !tbaa !5
  %1079 = load i32, ptr %8, align 4, !tbaa !5
  %1080 = mul nsw i32 0, %1079
  %1081 = add nsw i32 %1078, %1080
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds double, ptr %1077, i64 %1082
  %1084 = load double, ptr %1083, align 8, !tbaa !11
  %1085 = load ptr, ptr %7, align 8, !tbaa !9
  %1086 = load i32, ptr %12, align 4, !tbaa !5
  %1087 = load i32, ptr %8, align 4, !tbaa !5
  %1088 = mul nsw i32 1, %1087
  %1089 = add nsw i32 %1086, %1088
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds double, ptr %1085, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  %1093 = fmul double 0xBCE63FFFFFFFFFFF, %1092
  %1094 = call double @llvm.fmuladd.f64(double 0xBCE4800000000000, double %1084, double %1093)
  %1095 = load ptr, ptr %7, align 8, !tbaa !9
  %1096 = load i32, ptr %12, align 4, !tbaa !5
  %1097 = load i32, ptr %8, align 4, !tbaa !5
  %1098 = mul nsw i32 2, %1097
  %1099 = add nsw i32 %1096, %1098
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds double, ptr %1095, i64 %1100
  %1102 = load double, ptr %1101, align 8, !tbaa !11
  %1103 = call double @llvm.fmuladd.f64(double 0xBFF5DB3D742C262A, double %1102, double %1094)
  %1104 = load ptr, ptr %7, align 8, !tbaa !9
  %1105 = load i32, ptr %12, align 4, !tbaa !5
  %1106 = load i32, ptr %8, align 4, !tbaa !5
  %1107 = mul nsw i32 3, %1106
  %1108 = add nsw i32 %1105, %1107
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds double, ptr %1104, i64 %1109
  %1111 = load double, ptr %1110, align 8, !tbaa !11
  %1112 = call double @llvm.fmuladd.f64(double 0xBCC6000000000000, double %1111, double %1103)
  %1113 = load ptr, ptr %7, align 8, !tbaa !9
  %1114 = load i32, ptr %12, align 4, !tbaa !5
  %1115 = load i32, ptr %8, align 4, !tbaa !5
  %1116 = mul nsw i32 4, %1115
  %1117 = add nsw i32 %1114, %1116
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds double, ptr %1113, i64 %1118
  %1120 = load double, ptr %1119, align 8, !tbaa !11
  %1121 = call double @llvm.fmuladd.f64(double 0xBCC9000000000000, double %1120, double %1112)
  %1122 = load ptr, ptr %7, align 8, !tbaa !9
  %1123 = load i32, ptr %12, align 4, !tbaa !5
  %1124 = load i32, ptr %8, align 4, !tbaa !5
  %1125 = mul nsw i32 5, %1124
  %1126 = add nsw i32 %1123, %1125
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds double, ptr %1122, i64 %1127
  %1129 = load double, ptr %1128, align 8, !tbaa !11
  %1130 = call double @llvm.fmuladd.f64(double 0xBFD76CF5D0B09925, double %1129, double %1121)
  store double %1130, ptr %11, align 8, !tbaa !11
  %1131 = load double, ptr %11, align 8, !tbaa !11
  %1132 = load ptr, ptr %9, align 8, !tbaa !9
  %1133 = load i32, ptr %12, align 4, !tbaa !5
  %1134 = load i32, ptr %10, align 4, !tbaa !5
  %1135 = mul nsw i32 14, %1134
  %1136 = add nsw i32 %1133, %1135
  %1137 = sext i32 %1136 to i64
  %1138 = getelementptr inbounds double, ptr %1132, i64 %1137
  %1139 = load double, ptr %1138, align 8, !tbaa !11
  %1140 = fadd double %1139, %1131
  store double %1140, ptr %1138, align 8, !tbaa !11
  %1141 = load ptr, ptr %7, align 8, !tbaa !9
  %1142 = load i32, ptr %12, align 4, !tbaa !5
  %1143 = load i32, ptr %8, align 4, !tbaa !5
  %1144 = mul nsw i32 0, %1143
  %1145 = add nsw i32 %1142, %1144
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds double, ptr %1141, i64 %1146
  %1148 = load double, ptr %1147, align 8, !tbaa !11
  %1149 = load ptr, ptr %7, align 8, !tbaa !9
  %1150 = load i32, ptr %12, align 4, !tbaa !5
  %1151 = load i32, ptr %8, align 4, !tbaa !5
  %1152 = mul nsw i32 1, %1151
  %1153 = add nsw i32 %1150, %1152
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds double, ptr %1149, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !11
  %1157 = fmul double 0x3CC8000000000000, %1156
  %1158 = call double @llvm.fmuladd.f64(double 0x3FD76CF5D0B09922, double %1148, double %1157)
  %1159 = load ptr, ptr %7, align 8, !tbaa !9
  %1160 = load i32, ptr %12, align 4, !tbaa !5
  %1161 = load i32, ptr %8, align 4, !tbaa !5
  %1162 = mul nsw i32 2, %1161
  %1163 = add nsw i32 %1160, %1162
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds double, ptr %1159, i64 %1164
  %1166 = load double, ptr %1165, align 8, !tbaa !11
  %1167 = call double @llvm.fmuladd.f64(double 0x3CC6000000000000, double %1166, double %1158)
  %1168 = load ptr, ptr %7, align 8, !tbaa !9
  %1169 = load i32, ptr %12, align 4, !tbaa !5
  %1170 = load i32, ptr %8, align 4, !tbaa !5
  %1171 = mul nsw i32 3, %1170
  %1172 = add nsw i32 %1169, %1171
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds double, ptr %1168, i64 %1173
  %1175 = load double, ptr %1174, align 8, !tbaa !11
  %1176 = call double @llvm.fmuladd.f64(double 0x3FF5DB3D742C262A, double %1175, double %1167)
  %1177 = load ptr, ptr %7, align 8, !tbaa !9
  %1178 = load i32, ptr %12, align 4, !tbaa !5
  %1179 = load i32, ptr %8, align 4, !tbaa !5
  %1180 = mul nsw i32 4, %1179
  %1181 = add nsw i32 %1178, %1180
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds double, ptr %1177, i64 %1182
  %1184 = load double, ptr %1183, align 8, !tbaa !11
  %1185 = call double @llvm.fmuladd.f64(double 0x3CE4000000000000, double %1184, double %1176)
  %1186 = load ptr, ptr %7, align 8, !tbaa !9
  %1187 = load i32, ptr %12, align 4, !tbaa !5
  %1188 = load i32, ptr %8, align 4, !tbaa !5
  %1189 = mul nsw i32 5, %1188
  %1190 = add nsw i32 %1187, %1189
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds double, ptr %1186, i64 %1191
  %1193 = load double, ptr %1192, align 8, !tbaa !11
  %1194 = call double @llvm.fmuladd.f64(double 0x3CE37FFFFFFFFFFF, double %1193, double %1185)
  store double %1194, ptr %11, align 8, !tbaa !11
  %1195 = load double, ptr %11, align 8, !tbaa !11
  %1196 = load ptr, ptr %9, align 8, !tbaa !9
  %1197 = load i32, ptr %12, align 4, !tbaa !5
  %1198 = load i32, ptr %10, align 4, !tbaa !5
  %1199 = mul nsw i32 15, %1198
  %1200 = add nsw i32 %1197, %1199
  %1201 = sext i32 %1200 to i64
  %1202 = getelementptr inbounds double, ptr %1196, i64 %1201
  %1203 = load double, ptr %1202, align 8, !tbaa !11
  %1204 = fadd double %1203, %1195
  store double %1204, ptr %1202, align 8, !tbaa !11
  %1205 = load ptr, ptr %7, align 8, !tbaa !9
  %1206 = load i32, ptr %12, align 4, !tbaa !5
  %1207 = load i32, ptr %8, align 4, !tbaa !5
  %1208 = mul nsw i32 0, %1207
  %1209 = add nsw i32 %1206, %1208
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds double, ptr %1205, i64 %1210
  %1212 = load double, ptr %1211, align 8, !tbaa !11
  %1213 = load ptr, ptr %7, align 8, !tbaa !9
  %1214 = load i32, ptr %12, align 4, !tbaa !5
  %1215 = load i32, ptr %8, align 4, !tbaa !5
  %1216 = mul nsw i32 1, %1215
  %1217 = add nsw i32 %1214, %1216
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds double, ptr %1213, i64 %1218
  %1220 = load double, ptr %1219, align 8, !tbaa !11
  %1221 = fmul double 0x3FD76CF5D0B09923, %1220
  %1222 = call double @llvm.fmuladd.f64(double 0x3CC6000000000000, double %1212, double %1221)
  %1223 = load ptr, ptr %7, align 8, !tbaa !9
  %1224 = load i32, ptr %12, align 4, !tbaa !5
  %1225 = load i32, ptr %8, align 4, !tbaa !5
  %1226 = mul nsw i32 2, %1225
  %1227 = add nsw i32 %1224, %1226
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds double, ptr %1223, i64 %1228
  %1230 = load double, ptr %1229, align 8, !tbaa !11
  %1231 = call double @llvm.fmuladd.f64(double 0x3CC8000000000000, double %1230, double %1222)
  %1232 = load ptr, ptr %7, align 8, !tbaa !9
  %1233 = load i32, ptr %12, align 4, !tbaa !5
  %1234 = load i32, ptr %8, align 4, !tbaa !5
  %1235 = mul nsw i32 3, %1234
  %1236 = add nsw i32 %1233, %1235
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds double, ptr %1232, i64 %1237
  %1239 = load double, ptr %1238, align 8, !tbaa !11
  %1240 = call double @llvm.fmuladd.f64(double 0x3CE4800000000000, double %1239, double %1231)
  %1241 = load ptr, ptr %7, align 8, !tbaa !9
  %1242 = load i32, ptr %12, align 4, !tbaa !5
  %1243 = load i32, ptr %8, align 4, !tbaa !5
  %1244 = mul nsw i32 4, %1243
  %1245 = add nsw i32 %1242, %1244
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds double, ptr %1241, i64 %1246
  %1248 = load double, ptr %1247, align 8, !tbaa !11
  %1249 = call double @llvm.fmuladd.f64(double 0x3FF5DB3D742C262A, double %1248, double %1240)
  %1250 = load ptr, ptr %7, align 8, !tbaa !9
  %1251 = load i32, ptr %12, align 4, !tbaa !5
  %1252 = load i32, ptr %8, align 4, !tbaa !5
  %1253 = mul nsw i32 5, %1252
  %1254 = add nsw i32 %1251, %1253
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds double, ptr %1250, i64 %1255
  %1257 = load double, ptr %1256, align 8, !tbaa !11
  %1258 = call double @llvm.fmuladd.f64(double 0x3CE8000000000001, double %1257, double %1249)
  store double %1258, ptr %11, align 8, !tbaa !11
  %1259 = load double, ptr %11, align 8, !tbaa !11
  %1260 = load ptr, ptr %9, align 8, !tbaa !9
  %1261 = load i32, ptr %12, align 4, !tbaa !5
  %1262 = load i32, ptr %10, align 4, !tbaa !5
  %1263 = mul nsw i32 16, %1262
  %1264 = add nsw i32 %1261, %1263
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds double, ptr %1260, i64 %1265
  %1267 = load double, ptr %1266, align 8, !tbaa !11
  %1268 = fadd double %1267, %1259
  store double %1268, ptr %1266, align 8, !tbaa !11
  %1269 = load ptr, ptr %7, align 8, !tbaa !9
  %1270 = load i32, ptr %12, align 4, !tbaa !5
  %1271 = load i32, ptr %8, align 4, !tbaa !5
  %1272 = mul nsw i32 0, %1271
  %1273 = add nsw i32 %1270, %1272
  %1274 = sext i32 %1273 to i64
  %1275 = getelementptr inbounds double, ptr %1269, i64 %1274
  %1276 = load double, ptr %1275, align 8, !tbaa !11
  %1277 = load ptr, ptr %7, align 8, !tbaa !9
  %1278 = load i32, ptr %12, align 4, !tbaa !5
  %1279 = load i32, ptr %8, align 4, !tbaa !5
  %1280 = mul nsw i32 1, %1279
  %1281 = add nsw i32 %1278, %1280
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds double, ptr %1277, i64 %1282
  %1284 = load double, ptr %1283, align 8, !tbaa !11
  %1285 = fmul double 0x3CC9000000000000, %1284
  %1286 = call double @llvm.fmuladd.f64(double 0x3CC6000000000000, double %1276, double %1285)
  %1287 = load ptr, ptr %7, align 8, !tbaa !9
  %1288 = load i32, ptr %12, align 4, !tbaa !5
  %1289 = load i32, ptr %8, align 4, !tbaa !5
  %1290 = mul nsw i32 2, %1289
  %1291 = add nsw i32 %1288, %1290
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds double, ptr %1287, i64 %1292
  %1294 = load double, ptr %1293, align 8, !tbaa !11
  %1295 = call double @llvm.fmuladd.f64(double 0x3FD76CF5D0B09925, double %1294, double %1286)
  %1296 = load ptr, ptr %7, align 8, !tbaa !9
  %1297 = load i32, ptr %12, align 4, !tbaa !5
  %1298 = load i32, ptr %8, align 4, !tbaa !5
  %1299 = mul nsw i32 3, %1298
  %1300 = add nsw i32 %1297, %1299
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds double, ptr %1296, i64 %1301
  %1303 = load double, ptr %1302, align 8, !tbaa !11
  %1304 = call double @llvm.fmuladd.f64(double 0x3CE4800000000000, double %1303, double %1295)
  %1305 = load ptr, ptr %7, align 8, !tbaa !9
  %1306 = load i32, ptr %12, align 4, !tbaa !5
  %1307 = load i32, ptr %8, align 4, !tbaa !5
  %1308 = mul nsw i32 4, %1307
  %1309 = add nsw i32 %1306, %1308
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds double, ptr %1305, i64 %1310
  %1312 = load double, ptr %1311, align 8, !tbaa !11
  %1313 = call double @llvm.fmuladd.f64(double 0x3CE63FFFFFFFFFFF, double %1312, double %1304)
  %1314 = load ptr, ptr %7, align 8, !tbaa !9
  %1315 = load i32, ptr %12, align 4, !tbaa !5
  %1316 = load i32, ptr %8, align 4, !tbaa !5
  %1317 = mul nsw i32 5, %1316
  %1318 = add nsw i32 %1315, %1317
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds double, ptr %1314, i64 %1319
  %1321 = load double, ptr %1320, align 8, !tbaa !11
  %1322 = call double @llvm.fmuladd.f64(double 0x3FF5DB3D742C262A, double %1321, double %1313)
  store double %1322, ptr %11, align 8, !tbaa !11
  %1323 = load double, ptr %11, align 8, !tbaa !11
  %1324 = load ptr, ptr %9, align 8, !tbaa !9
  %1325 = load i32, ptr %12, align 4, !tbaa !5
  %1326 = load i32, ptr %10, align 4, !tbaa !5
  %1327 = mul nsw i32 17, %1326
  %1328 = add nsw i32 %1325, %1327
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds double, ptr %1324, i64 %1329
  %1331 = load double, ptr %1330, align 8, !tbaa !11
  %1332 = fadd double %1331, %1323
  store double %1332, ptr %1330, align 8, !tbaa !11
  br label %1333

1333:                                             ; preds = %18
  %1334 = load i32, ptr %12, align 4, !tbaa !5
  %1335 = add nsw i32 %1334, 1
  store i32 %1335, ptr %12, align 4, !tbaa !5
  br label %13, !llvm.loop !13

1336:                                             ; preds = %17
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  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 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 = { nounwind }

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

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


; 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: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable
define dso_local void @gimmik_mm_cpu_14215087943608699843_b1(i32 noundef %0, ptr noalias nocapture noundef readonly %1, i32 noundef %2, ptr noalias nocapture noundef %3, i32 noundef %4) local_unnamed_addr #1 {
  %6 = icmp sgt i32 %0, 0
  br i1 %6, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %5
  %7 = mul nsw i32 %2, 10
  %8 = mul nsw i32 %2, 11
  %9 = mul nsw i32 %2, 13
  %10 = mul nsw i32 %2, 14
  %11 = mul nsw i32 %2, 15
  %12 = mul nsw i32 %2, 17
  %13 = mul nsw i32 %2, 12
  %14 = shl nsw i32 %2, 4
  %15 = shl nsw i32 %4, 1
  %16 = mul nsw i32 %4, 3
  %17 = shl nsw i32 %4, 2
  %18 = mul nsw i32 %4, 5
  %19 = mul nsw i32 %2, 6
  %20 = mul nsw i32 %2, 7
  %21 = shl nsw i32 %2, 3
  %22 = mul nsw i32 %2, 9
  %23 = mul nsw i32 %4, 6
  %24 = mul nsw i32 %4, 7
  %25 = shl nsw i32 %4, 3
  %26 = mul nsw i32 %4, 9
  %27 = mul nsw i32 %4, 10
  %28 = mul nsw i32 %4, 11
  %29 = shl nsw i32 %2, 1
  %30 = mul nsw i32 %2, 3
  %31 = shl nsw i32 %2, 2
  %32 = mul nsw i32 %2, 5
  %33 = mul nsw i32 %4, 12
  %34 = mul nsw i32 %4, 13
  %35 = mul nsw i32 %4, 14
  %36 = mul nsw i32 %4, 15
  %37 = shl nsw i32 %4, 4
  %38 = mul nsw i32 %4, 17
  %39 = sext i32 %7 to i64
  %40 = sext i32 %8 to i64
  %41 = sext i32 %9 to i64
  %42 = sext i32 %10 to i64
  %43 = sext i32 %11 to i64
  %44 = sext i32 %12 to i64
  %45 = sext i32 %13 to i64
  %46 = sext i32 %14 to i64
  %47 = sext i32 %4 to i64
  %48 = sext i32 %15 to i64
  %49 = sext i32 %16 to i64
  %50 = sext i32 %17 to i64
  %51 = sext i32 %18 to i64
  %52 = sext i32 %19 to i64
  %53 = sext i32 %20 to i64
  %54 = sext i32 %21 to i64
  %55 = sext i32 %22 to i64
  %56 = sext i32 %23 to i64
  %57 = sext i32 %24 to i64
  %58 = sext i32 %25 to i64
  %59 = sext i32 %26 to i64
  %60 = sext i32 %27 to i64
  %61 = sext i32 %28 to i64
  %62 = sext i32 %2 to i64
  %63 = sext i32 %29 to i64
  %64 = sext i32 %30 to i64
  %65 = sext i32 %31 to i64
  %66 = sext i32 %32 to i64
  %67 = sext i32 %33 to i64
  %68 = sext i32 %34 to i64
  %69 = sext i32 %35 to i64
  %70 = sext i32 %36 to i64
  %71 = sext i32 %37 to i64
  %72 = sext i32 %38 to i64
  %wide.trip.count = zext nneg i32 %0 to i64
  %invariant.gep = getelementptr double, ptr %1, i64 %39
  %invariant.gep454 = getelementptr double, ptr %1, i64 %40
  %invariant.gep456 = getelementptr double, ptr %1, i64 %41
  %invariant.gep458 = getelementptr double, ptr %1, i64 %42
  %invariant.gep460 = getelementptr double, ptr %1, i64 %43
  %invariant.gep462 = getelementptr double, ptr %1, i64 %44
  %invariant.gep464 = getelementptr double, ptr %1, i64 %45
  %invariant.gep466 = getelementptr double, ptr %1, i64 %46
  %invariant.gep468 = getelementptr double, ptr %3, i64 %47
  %invariant.gep470 = getelementptr double, ptr %3, i64 %48
  %invariant.gep472 = getelementptr double, ptr %3, i64 %49
  %invariant.gep474 = getelementptr double, ptr %3, i64 %50
  %invariant.gep476 = getelementptr double, ptr %3, i64 %51
  %invariant.gep478 = getelementptr double, ptr %1, i64 %52
  %invariant.gep480 = getelementptr double, ptr %1, i64 %53
  %invariant.gep482 = getelementptr double, ptr %1, i64 %54
  %invariant.gep484 = getelementptr double, ptr %1, i64 %55
  %invariant.gep486 = getelementptr double, ptr %3, i64 %56
  %invariant.gep488 = getelementptr double, ptr %3, i64 %57
  %invariant.gep490 = getelementptr double, ptr %3, i64 %58
  %invariant.gep492 = getelementptr double, ptr %3, i64 %59
  %invariant.gep494 = getelementptr double, ptr %3, i64 %60
  %invariant.gep496 = getelementptr double, ptr %3, i64 %61
  %invariant.gep498 = getelementptr double, ptr %1, i64 %62
  %invariant.gep500 = getelementptr double, ptr %1, i64 %63
  %invariant.gep502 = getelementptr double, ptr %1, i64 %64
  %invariant.gep504 = getelementptr double, ptr %1, i64 %65
  %invariant.gep506 = getelementptr double, ptr %1, i64 %66
  %invariant.gep508 = getelementptr double, ptr %3, i64 %67
  %invariant.gep510 = getelementptr double, ptr %3, i64 %68
  %invariant.gep512 = getelementptr double, ptr %3, i64 %69
  %invariant.gep514 = getelementptr double, ptr %3, i64 %70
  %invariant.gep516 = getelementptr double, ptr %3, i64 %71
  %invariant.gep518 = getelementptr double, ptr %3, i64 %72
  br label %73

._crit_edge:                                      ; preds = %73, %5
  ret void

73:                                               ; preds = %.lr.ph, %73
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %73 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %74 = load double, ptr %gep, align 8, !tbaa !5
  %gep455 = getelementptr double, ptr %invariant.gep454, i64 %indvars.iv
  %75 = load double, ptr %gep455, align 8, !tbaa !5
  %76 = fmul double %75, 0xBFFDDB3D742C264E
  %77 = tail call double @llvm.fmuladd.f64(double %74, double 0xBFC126145E9ECD6D, double %76)
  %gep457 = getelementptr double, ptr %invariant.gep456, i64 %indvars.iv
  %78 = load double, ptr %gep457, align 8, !tbaa !5
  %79 = tail call double @llvm.fmuladd.f64(double %78, double 0xBCB8000000000001, double %77)
  %gep459 = getelementptr double, ptr %invariant.gep458, i64 %indvars.iv
  %80 = load double, ptr %gep459, align 8, !tbaa !5
  %81 = tail call double @llvm.fmuladd.f64(double %80, double 0x3FB8408293B0D513, double %79)
  %gep461 = getelementptr double, ptr %invariant.gep460, i64 %indvars.iv
  %82 = load double, ptr %gep461, align 8, !tbaa !5
  %83 = tail call double @llvm.fmuladd.f64(double %82, double 0x3FF51C963D442E79, double %81)
  %gep463 = getelementptr double, ptr %invariant.gep462, i64 %indvars.iv
  %84 = load double, ptr %gep463, align 8, !tbaa !5
  %85 = tail call double @llvm.fmuladd.f64(double %84, double 0x3CB0F876CCDF6CD8, double %83)
  %86 = getelementptr inbounds double, ptr %3, i64 %indvars.iv
  %87 = load double, ptr %86, align 8, !tbaa !5
  %88 = fadd double %87, %85
  store double %88, ptr %86, align 8, !tbaa !5
  %89 = fmul double %75, 0x3FDFFFFFFFFFFFE1
  %90 = tail call double @llvm.fmuladd.f64(double %74, double 0x3FDFFFFFFFFFFFDA, double %89)
  %gep465 = getelementptr double, ptr %invariant.gep464, i64 %indvars.iv
  %91 = load double, ptr %gep465, align 8, !tbaa !5
  %92 = tail call double @llvm.fmuladd.f64(double %91, double 0xBC90000000000000, double %90)
  %93 = tail call double @llvm.fmuladd.f64(double %78, double 0x3CA0000000000002, double %92)
  %94 = tail call double @llvm.fmuladd.f64(double %80, double 0x3FF51C963D442E74, double %93)
  %95 = tail call double @llvm.fmuladd.f64(double %82, double 0x3FB8408293B0D50C, double %94)
  %gep467 = getelementptr double, ptr %invariant.gep466, i64 %indvars.iv
  %96 = load double, ptr %gep467, align 8, !tbaa !5
  %97 = tail call double @llvm.fmuladd.f64(double %96, double 0x3CB0F876CCDF6CD8, double %95)
  %98 = tail call double @llvm.fmuladd.f64(double %84, double 0x3C86A09E667F3BCC, double %97)
  %gep469 = getelementptr double, ptr %invariant.gep468, i64 %indvars.iv
  %99 = load double, ptr %gep469, align 8, !tbaa !5
  %100 = fadd double %99, %98
  store double %100, ptr %gep469, align 8, !tbaa !5
  %101 = fmul double %75, 0xBFC126145E9ECD6A
  %102 = tail call double @llvm.fmuladd.f64(double %74, double 0xBFFDDB3D742C2649, double %101)
  %103 = tail call double @llvm.fmuladd.f64(double %91, double 0xBCB8000000000001, double %102)
  %104 = tail call double @llvm.fmuladd.f64(double %78, double 0xBC90000000000000, double %103)
  %105 = tail call double @llvm.fmuladd.f64(double %80, double 0xBFD6A09E667F3BB0, double %104)
  %106 = tail call double @llvm.fmuladd.f64(double %82, double 0xBFD6A09E667F3BB8, double %105)
  %107 = tail call double @llvm.fmuladd.f64(double %96, double 0x3C86A09E667F3BCC, double %106)
  %108 = tail call double @llvm.fmuladd.f64(double %84, double 0xBC96A09E667F3BCC, double %107)
  %gep471 = getelementptr double, ptr %invariant.gep470, i64 %indvars.iv
  %109 = load double, ptr %gep471, align 8, !tbaa !5
  %110 = fadd double %109, %108
  store double %110, ptr %gep471, align 8, !tbaa !5
  %111 = fmul double %91, 0xBFC126145E9ECD6D
  %112 = tail call double @llvm.fmuladd.f64(double %75, double 0xBCB8000000000001, double %111)
  %113 = tail call double @llvm.fmuladd.f64(double %78, double 0xBFFDDB3D742C264E, double %112)
  %114 = tail call double @llvm.fmuladd.f64(double %82, double 0x3CB0F876CCDF6CD8, double %113)
  %115 = tail call double @llvm.fmuladd.f64(double %96, double 0x3FB8408293B0D513, double %114)
  %116 = tail call double @llvm.fmuladd.f64(double %84, double 0x3FF51C963D442E79, double %115)
  %gep473 = getelementptr double, ptr %invariant.gep472, i64 %indvars.iv
  %117 = load double, ptr %gep473, align 8, !tbaa !5
  %118 = fadd double %117, %116
  store double %118, ptr %gep473, align 8, !tbaa !5
  %119 = fmul double %75, 0x3CA0000000000002
  %120 = tail call double @llvm.fmuladd.f64(double %74, double 0xBC90000000000000, double %119)
  %121 = tail call double @llvm.fmuladd.f64(double %91, double 0x3FDFFFFFFFFFFFDA, double %120)
  %122 = tail call double @llvm.fmuladd.f64(double %78, double 0x3FDFFFFFFFFFFFE1, double %121)
  %123 = tail call double @llvm.fmuladd.f64(double %80, double 0x3CB0F876CCDF6CD8, double %122)
  %124 = tail call double @llvm.fmuladd.f64(double %82, double 0x3C86A09E667F3BCC, double %123)
  %125 = tail call double @llvm.fmuladd.f64(double %96, double 0x3FF51C963D442E74, double %124)
  %126 = tail call double @llvm.fmuladd.f64(double %84, double 0x3FB8408293B0D50C, double %125)
  %gep475 = getelementptr double, ptr %invariant.gep474, i64 %indvars.iv
  %127 = load double, ptr %gep475, align 8, !tbaa !5
  %128 = fadd double %126, %127
  store double %128, ptr %gep475, align 8, !tbaa !5
  %129 = fmul double %75, 0xBC90000000000000
  %130 = tail call double @llvm.fmuladd.f64(double %74, double 0xBCB8000000000001, double %129)
  %131 = tail call double @llvm.fmuladd.f64(double %91, double 0xBFFDDB3D742C2649, double %130)
  %132 = tail call double @llvm.fmuladd.f64(double %78, double 0xBFC126145E9ECD6A, double %131)
  %133 = tail call double @llvm.fmuladd.f64(double %80, double 0x3C86A09E667F3BCC, double %132)
  %134 = tail call double @llvm.fmuladd.f64(double %82, double 0xBC96A09E667F3BCC, double %133)
  %135 = tail call double @llvm.fmuladd.f64(double %96, double 0xBFD6A09E667F3BB0, double %134)
  %136 = tail call double @llvm.fmuladd.f64(double %84, double 0xBFD6A09E667F3BB8, double %135)
  %gep477 = getelementptr double, ptr %invariant.gep476, i64 %indvars.iv
  %137 = load double, ptr %gep477, align 8, !tbaa !5
  %138 = fadd double %136, %137
  store double %138, ptr %gep477, align 8, !tbaa !5
  %gep479 = getelementptr double, ptr %invariant.gep478, i64 %indvars.iv
  %139 = load double, ptr %gep479, align 8, !tbaa !5
  %gep481 = getelementptr double, ptr %invariant.gep480, i64 %indvars.iv
  %140 = load double, ptr %gep481, align 8, !tbaa !5
  %141 = fmul double %140, 0x3FDFFFFFFFFFFFE9
  %142 = tail call double @llvm.fmuladd.f64(double %139, double 0x3FDFFFFFFFFFFFE9, double %141)
  %gep483 = getelementptr double, ptr %invariant.gep482, i64 %indvars.iv
  %143 = load double, ptr %gep483, align 8, !tbaa !5
  %144 = tail call double @llvm.fmuladd.f64(double %143, double 0x3CA0000000000002, double %142)
  %gep485 = getelementptr double, ptr %invariant.gep484, i64 %indvars.iv
  %145 = load double, ptr %gep485, align 8, !tbaa !5
  %146 = tail call double @llvm.fmuladd.f64(double %145, double 0x3CA0000000000002, double %144)
  %147 = tail call double @llvm.fmuladd.f64(double %80, double 0x3FB8408293B0D513, double %146)
  %148 = tail call double @llvm.fmuladd.f64(double %82, double 0x3FF51C963D442E79, double %147)
  %149 = tail call double @llvm.fmuladd.f64(double %84, double 0x3CB0F876CCDF6CD8, double %148)
  %gep487 = getelementptr double, ptr %invariant.gep486, i64 %indvars.iv
  %150 = load double, ptr %gep487, align 8, !tbaa !5
  %151 = fadd double %150, %149
  store double %151, ptr %gep487, align 8, !tbaa !5
  %152 = fmul double %140, 0xBFFDDB3D742C264E
  %153 = tail call double @llvm.fmuladd.f64(double %139, double 0xBFC126145E9ECD7C, double %152)
  %154 = tail call double @llvm.fmuladd.f64(double %143, double 0xBCA0000000000002, double %153)
  %155 = tail call double @llvm.fmuladd.f64(double %145, double 0xBCC0000000000000, double %154)
  %156 = tail call double @llvm.fmuladd.f64(double %80, double 0x3FF51C963D442E74, double %155)
  %157 = tail call double @llvm.fmuladd.f64(double %82, double 0x3FB8408293B0D50C, double %156)
  %158 = tail call double @llvm.fmuladd.f64(double %96, double 0x3CB0F876CCDF6CD8, double %157)
  %159 = tail call double @llvm.fmuladd.f64(double %84, double 0x3C86A09E667F3BCC, double %158)
  %gep489 = getelementptr double, ptr %invariant.gep488, i64 %indvars.iv
  %160 = load double, ptr %gep489, align 8, !tbaa !5
  %161 = fadd double %160, %159
  store double %161, ptr %gep489, align 8, !tbaa !5
  %162 = fmul double %140, 0xBFC126145E9ECD7C
  %163 = tail call double @llvm.fmuladd.f64(double %139, double 0xBFFDDB3D742C264E, double %162)
  %164 = tail call double @llvm.fmuladd.f64(double %143, double 0xBCC0000000000000, double %163)
  %165 = tail call double @llvm.fmuladd.f64(double %145, double 0xBCA0000000000002, double %164)
  %166 = tail call double @llvm.fmuladd.f64(double %80, double 0xBFD6A09E667F3BB0, double %165)
  %167 = tail call double @llvm.fmuladd.f64(double %82, double 0xBFD6A09E667F3BB8, double %166)
  %168 = tail call double @llvm.fmuladd.f64(double %96, double 0x3C86A09E667F3BCC, double %167)
  %169 = tail call double @llvm.fmuladd.f64(double %84, double 0xBC96A09E667F3BCC, double %168)
  %gep491 = getelementptr double, ptr %invariant.gep490, i64 %indvars.iv
  %170 = load double, ptr %gep491, align 8, !tbaa !5
  %171 = fadd double %170, %169
  store double %171, ptr %gep491, align 8, !tbaa !5
  %172 = fmul double %140, 0x3CA0000000000002
  %173 = tail call double @llvm.fmuladd.f64(double %139, double 0x3CA0000000000002, double %172)
  %174 = tail call double @llvm.fmuladd.f64(double %143, double 0x3FDFFFFFFFFFFFE9, double %173)
  %175 = tail call double @llvm.fmuladd.f64(double %145, double 0x3FDFFFFFFFFFFFE9, double %174)
  %176 = tail call double @llvm.fmuladd.f64(double %82, double 0x3CB0F876CCDF6CD8, double %175)
  %177 = tail call double @llvm.fmuladd.f64(double %96, double 0x3FB8408293B0D513, double %176)
  %178 = tail call double @llvm.fmuladd.f64(double %84, double 0x3FF51C963D442E79, double %177)
  %gep493 = getelementptr double, ptr %invariant.gep492, i64 %indvars.iv
  %179 = load double, ptr %gep493, align 8, !tbaa !5
  %180 = fadd double %178, %179
  store double %180, ptr %gep493, align 8, !tbaa !5
  %181 = fmul double %140, 0xBCC0000000000000
  %182 = tail call double @llvm.fmuladd.f64(double %139, double 0xBCA0000000000002, double %181)
  %183 = tail call double @llvm.fmuladd.f64(double %143, double 0xBFC126145E9ECD7C, double %182)
  %184 = tail call double @llvm.fmuladd.f64(double %145, double 0xBFFDDB3D742C264E, double %183)
  %185 = tail call double @llvm.fmuladd.f64(double %80, double 0x3CB0F876CCDF6CD8, double %184)
  %186 = tail call double @llvm.fmuladd.f64(double %82, double 0x3C86A09E667F3BCC, double %185)
  %187 = tail call double @llvm.fmuladd.f64(double %96, double 0x3FF51C963D442E74, double %186)
  %188 = tail call double @llvm.fmuladd.f64(double %84, double 0x3FB8408293B0D50C, double %187)
  %gep495 = getelementptr double, ptr %invariant.gep494, i64 %indvars.iv
  %189 = load double, ptr %gep495, align 8, !tbaa !5
  %190 = fadd double %188, %189
  store double %190, ptr %gep495, align 8, !tbaa !5
  %191 = fmul double %140, 0xBCA0000000000002
  %192 = tail call double @llvm.fmuladd.f64(double %139, double 0xBCC0000000000000, double %191)
  %193 = tail call double @llvm.fmuladd.f64(double %143, double 0xBFFDDB3D742C264E, double %192)
  %194 = tail call double @llvm.fmuladd.f64(double %145, double 0xBFC126145E9ECD7C, double %193)
  %195 = tail call double @llvm.fmuladd.f64(double %80, double 0x3C86A09E667F3BCC, double %194)
  %196 = tail call double @llvm.fmuladd.f64(double %82, double 0xBC96A09E667F3BCC, double %195)
  %197 = tail call double @llvm.fmuladd.f64(double %96, double 0xBFD6A09E667F3BB0, double %196)
  %198 = tail call double @llvm.fmuladd.f64(double %84, double 0xBFD6A09E667F3BB8, double %197)
  %gep497 = getelementptr double, ptr %invariant.gep496, i64 %indvars.iv
  %199 = load double, ptr %gep497, align 8, !tbaa !5
  %200 = fadd double %198, %199
  store double %200, ptr %gep497, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %1, i64 %indvars.iv
  %202 = load double, ptr %201, align 8, !tbaa !5
  %gep499 = getelementptr double, ptr %invariant.gep498, i64 %indvars.iv
  %203 = load double, ptr %gep499, align 8, !tbaa !5
  %204 = fmul double %203, 0xBCE4000000000000
  %205 = tail call double @llvm.fmuladd.f64(double %202, double 0xBFF5DB3D742C262A, double %204)
  %gep501 = getelementptr double, ptr %invariant.gep500, i64 %indvars.iv
  %206 = load double, ptr %gep501, align 8, !tbaa !5
  %207 = tail call double @llvm.fmuladd.f64(double %206, double 0xBCE37FFFFFFFFFFF, double %205)
  %gep503 = getelementptr double, ptr %invariant.gep502, i64 %indvars.iv
  %208 = load double, ptr %gep503, align 8, !tbaa !5
  %209 = tail call double @llvm.fmuladd.f64(double %208, double 0xBFD76CF5D0B09922, double %207)
  %gep505 = getelementptr double, ptr %invariant.gep504, i64 %indvars.iv
  %210 = load double, ptr %gep505, align 8, !tbaa !5
  %211 = tail call double @llvm.fmuladd.f64(double %210, double 0xBCC8000000000000, double %209)
  %gep507 = getelementptr double, ptr %invariant.gep506, i64 %indvars.iv
  %212 = load double, ptr %gep507, align 8, !tbaa !5
  %213 = tail call double @llvm.fmuladd.f64(double %212, double 0xBCC6000000000000, double %211)
  %gep509 = getelementptr double, ptr %invariant.gep508, i64 %indvars.iv
  %214 = load double, ptr %gep509, align 8, !tbaa !5
  %215 = fadd double %214, %213
  store double %215, ptr %gep509, align 8, !tbaa !5
  %216 = fmul double %203, 0xBFF5DB3D742C262A
  %217 = tail call double @llvm.fmuladd.f64(double %202, double 0xBCE4800000000000, double %216)
  %218 = tail call double @llvm.fmuladd.f64(double %206, double 0xBCE8000000000001, double %217)
  %219 = tail call double @llvm.fmuladd.f64(double %208, double 0xBCC6000000000000, double %218)
  %220 = tail call double @llvm.fmuladd.f64(double %210, double 0xBFD76CF5D0B09923, double %219)
  %221 = tail call double @llvm.fmuladd.f64(double %212, double 0xBCC8000000000000, double %220)
  %gep511 = getelementptr double, ptr %invariant.gep510, i64 %indvars.iv
  %222 = load double, ptr %gep511, align 8, !tbaa !5
  %223 = fadd double %221, %222
  store double %223, ptr %gep511, align 8, !tbaa !5
  %224 = fmul double %203, 0xBCE63FFFFFFFFFFF
  %225 = tail call double @llvm.fmuladd.f64(double %202, double 0xBCE4800000000000, double %224)
  %226 = tail call double @llvm.fmuladd.f64(double %206, double 0xBFF5DB3D742C262A, double %225)
  %227 = tail call double @llvm.fmuladd.f64(double %208, double 0xBCC6000000000000, double %226)
  %228 = tail call double @llvm.fmuladd.f64(double %210, double 0xBCC9000000000000, double %227)
  %229 = tail call double @llvm.fmuladd.f64(double %212, double 0xBFD76CF5D0B09925, double %228)
  %gep513 = getelementptr double, ptr %invariant.gep512, i64 %indvars.iv
  %230 = load double, ptr %gep513, align 8, !tbaa !5
  %231 = fadd double %229, %230
  store double %231, ptr %gep513, align 8, !tbaa !5
  %232 = fmul double %203, 0x3CC8000000000000
  %233 = tail call double @llvm.fmuladd.f64(double %202, double 0x3FD76CF5D0B09922, double %232)
  %234 = tail call double @llvm.fmuladd.f64(double %206, double 0x3CC6000000000000, double %233)
  %235 = tail call double @llvm.fmuladd.f64(double %208, double 0x3FF5DB3D742C262A, double %234)
  %236 = tail call double @llvm.fmuladd.f64(double %210, double 0x3CE4000000000000, double %235)
  %237 = tail call double @llvm.fmuladd.f64(double %212, double 0x3CE37FFFFFFFFFFF, double %236)
  %gep515 = getelementptr double, ptr %invariant.gep514, i64 %indvars.iv
  %238 = load double, ptr %gep515, align 8, !tbaa !5
  %239 = fadd double %237, %238
  store double %239, ptr %gep515, align 8, !tbaa !5
  %240 = fmul double %203, 0x3FD76CF5D0B09923
  %241 = tail call double @llvm.fmuladd.f64(double %202, double 0x3CC6000000000000, double %240)
  %242 = tail call double @llvm.fmuladd.f64(double %206, double 0x3CC8000000000000, double %241)
  %243 = tail call double @llvm.fmuladd.f64(double %208, double 0x3CE4800000000000, double %242)
  %244 = tail call double @llvm.fmuladd.f64(double %210, double 0x3FF5DB3D742C262A, double %243)
  %245 = tail call double @llvm.fmuladd.f64(double %212, double 0x3CE8000000000001, double %244)
  %gep517 = getelementptr double, ptr %invariant.gep516, i64 %indvars.iv
  %246 = load double, ptr %gep517, align 8, !tbaa !5
  %247 = fadd double %245, %246
  store double %247, ptr %gep517, align 8, !tbaa !5
  %248 = fmul double %203, 0x3CC9000000000000
  %249 = tail call double @llvm.fmuladd.f64(double %202, double 0x3CC6000000000000, double %248)
  %250 = tail call double @llvm.fmuladd.f64(double %206, double 0x3FD76CF5D0B09925, double %249)
  %251 = tail call double @llvm.fmuladd.f64(double %208, double 0x3CE4800000000000, double %250)
  %252 = tail call double @llvm.fmuladd.f64(double %210, double 0x3CE63FFFFFFFFFFF, double %251)
  %253 = tail call double @llvm.fmuladd.f64(double %212, double 0x3FF5DB3D742C262A, double %252)
  %gep519 = getelementptr double, ptr %invariant.gep518, i64 %indvars.iv
  %254 = load double, ptr %gep519, align 8, !tbaa !5
  %255 = fadd double %253, %254
  store double %255, ptr %gep519, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %73, !llvm.loop !9
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { nofree norecurse nosync nounwind memory(argmem: readwrite) 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" }

!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 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}


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