#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int int64_t;
typedef int int32_t;

/* Variables and functions */
void fproduct(int64_t *output, const int64_t *in2, const int64_t *in) {
  output[0] = ((int64_t)((int32_t)in2[0])) * ((int32_t)in[0]);
  output[1] = ((int64_t)((int32_t)in2[0])) * ((int32_t)in[1]) +
              ((int64_t)((int32_t)in2[1])) * ((int32_t)in[0]);
  output[2] = 2 * ((int64_t)((int32_t)in2[1])) * ((int32_t)in[1]) +
              ((int64_t)((int32_t)in2[0])) * ((int32_t)in[2]) +
              ((int64_t)((int32_t)in2[2])) * ((int32_t)in[0]);
  output[3] = ((int64_t)((int32_t)in2[1])) * ((int32_t)in[2]) +
              ((int64_t)((int32_t)in2[2])) * ((int32_t)in[1]) +
              ((int64_t)((int32_t)in2[0])) * ((int32_t)in[3]) +
              ((int64_t)((int32_t)in2[3])) * ((int32_t)in[0]);
  output[4] = ((int64_t)((int32_t)in2[2])) * ((int32_t)in[2]) +
              2 * (((int64_t)((int32_t)in2[1])) * ((int32_t)in[3]) +
                   ((int64_t)((int32_t)in2[3])) * ((int32_t)in[1])) +
              ((int64_t)((int32_t)in2[0])) * ((int32_t)in[4]) +
              ((int64_t)((int32_t)in2[4])) * ((int32_t)in[0]);
  output[5] = ((int64_t)((int32_t)in2[2])) * ((int32_t)in[3]) +
              ((int64_t)((int32_t)in2[3])) * ((int32_t)in[2]) +
              ((int64_t)((int32_t)in2[1])) * ((int32_t)in[4]) +
              ((int64_t)((int32_t)in2[4])) * ((int32_t)in[1]) +
              ((int64_t)((int32_t)in2[0])) * ((int32_t)in[5]) +
              ((int64_t)((int32_t)in2[5])) * ((int32_t)in[0]);
  output[6] = 2 * (((int64_t)((int32_t)in2[3])) * ((int32_t)in[3]) +
                   ((int64_t)((int32_t)in2[1])) * ((int32_t)in[5]) +
                   ((int64_t)((int32_t)in2[5])) * ((int32_t)in[1])) +
              ((int64_t)((int32_t)in2[2])) * ((int32_t)in[4]) +
              ((int64_t)((int32_t)in2[4])) * ((int32_t)in[2]) +
              ((int64_t)((int32_t)in2[0])) * ((int32_t)in[6]) +
              ((int64_t)((int32_t)in2[6])) * ((int32_t)in[0]);
  output[7] = ((int64_t)((int32_t)in2[3])) * ((int32_t)in[4]) +
              ((int64_t)((int32_t)in2[4])) * ((int32_t)in[3]) +
              ((int64_t)((int32_t)in2[2])) * ((int32_t)in[5]) +
              ((int64_t)((int32_t)in2[5])) * ((int32_t)in[2]) +
              ((int64_t)((int32_t)in2[1])) * ((int32_t)in[6]) +
              ((int64_t)((int32_t)in2[6])) * ((int32_t)in[1]) +
              ((int64_t)((int32_t)in2[0])) * ((int32_t)in[7]) +
              ((int64_t)((int32_t)in2[7])) * ((int32_t)in[0]);
  output[8] = ((int64_t)((int32_t)in2[4])) * ((int32_t)in[4]) +
              2 * (((int64_t)((int32_t)in2[3])) * ((int32_t)in[5]) +
                   ((int64_t)((int32_t)in2[5])) * ((int32_t)in[3]) +
                   ((int64_t)((int32_t)in2[1])) * ((int32_t)in[7]) +
                   ((int64_t)((int32_t)in2[7])) * ((int32_t)in[1])) +
              ((int64_t)((int32_t)in2[2])) * ((int32_t)in[6]) +
              ((int64_t)((int32_t)in2[6])) * ((int32_t)in[2]) +
              ((int64_t)((int32_t)in2[0])) * ((int32_t)in[8]) +
              ((int64_t)((int32_t)in2[8])) * ((int32_t)in[0]);
  output[9] = ((int64_t)((int32_t)in2[4])) * ((int32_t)in[5]) +
              ((int64_t)((int32_t)in2[5])) * ((int32_t)in[4]) +
              ((int64_t)((int32_t)in2[3])) * ((int32_t)in[6]) +
              ((int64_t)((int32_t)in2[6])) * ((int32_t)in[3]) +
              ((int64_t)((int32_t)in2[2])) * ((int32_t)in[7]) +
              ((int64_t)((int32_t)in2[7])) * ((int32_t)in[2]) +
              ((int64_t)((int32_t)in2[1])) * ((int32_t)in[8]) +
              ((int64_t)((int32_t)in2[8])) * ((int32_t)in[1]) +
              ((int64_t)((int32_t)in2[0])) * ((int32_t)in[9]) +
              ((int64_t)((int32_t)in2[9])) * ((int32_t)in[0]);
  output[10] = 2 * (((int64_t)((int32_t)in2[5])) * ((int32_t)in[5]) +
                    ((int64_t)((int32_t)in2[3])) * ((int32_t)in[7]) +
                    ((int64_t)((int32_t)in2[7])) * ((int32_t)in[3]) +
                    ((int64_t)((int32_t)in2[1])) * ((int32_t)in[9]) +
                    ((int64_t)((int32_t)in2[9])) * ((int32_t)in[1])) +
               ((int64_t)((int32_t)in2[4])) * ((int32_t)in[6]) +
               ((int64_t)((int32_t)in2[6])) * ((int32_t)in[4]) +
               ((int64_t)((int32_t)in2[2])) * ((int32_t)in[8]) +
               ((int64_t)((int32_t)in2[8])) * ((int32_t)in[2]);
  output[11] = ((int64_t)((int32_t)in2[5])) * ((int32_t)in[6]) +
               ((int64_t)((int32_t)in2[6])) * ((int32_t)in[5]) +
               ((int64_t)((int32_t)in2[4])) * ((int32_t)in[7]) +
               ((int64_t)((int32_t)in2[7])) * ((int32_t)in[4]) +
               ((int64_t)((int32_t)in2[3])) * ((int32_t)in[8]) +
               ((int64_t)((int32_t)in2[8])) * ((int32_t)in[3]) +
               ((int64_t)((int32_t)in2[2])) * ((int32_t)in[9]) +
               ((int64_t)((int32_t)in2[9])) * ((int32_t)in[2]);
  output[12] = ((int64_t)((int32_t)in2[6])) * ((int32_t)in[6]) +
               2 * (((int64_t)((int32_t)in2[5])) * ((int32_t)in[7]) +
                    ((int64_t)((int32_t)in2[7])) * ((int32_t)in[5]) +
                    ((int64_t)((int32_t)in2[3])) * ((int32_t)in[9]) +
                    ((int64_t)((int32_t)in2[9])) * ((int32_t)in[3])) +
               ((int64_t)((int32_t)in2[4])) * ((int32_t)in[8]) +
               ((int64_t)((int32_t)in2[8])) * ((int32_t)in[4]);
  output[13] = ((int64_t)((int32_t)in2[6])) * ((int32_t)in[7]) +
               ((int64_t)((int32_t)in2[7])) * ((int32_t)in[6]) +
               ((int64_t)((int32_t)in2[5])) * ((int32_t)in[8]) +
               ((int64_t)((int32_t)in2[8])) * ((int32_t)in[5]) +
               ((int64_t)((int32_t)in2[4])) * ((int32_t)in[9]) +
               ((int64_t)((int32_t)in2[9])) * ((int32_t)in[4]);
  output[14] = 2 * (((int64_t)((int32_t)in2[7])) * ((int32_t)in[7]) +
                    ((int64_t)((int32_t)in2[5])) * ((int32_t)in[9]) +
                    ((int64_t)((int32_t)in2[9])) * ((int32_t)in[5])) +
               ((int64_t)((int32_t)in2[6])) * ((int32_t)in[8]) +
               ((int64_t)((int32_t)in2[8])) * ((int32_t)in[6]);
  output[15] = ((int64_t)((int32_t)in2[7])) * ((int32_t)in[8]) +
               ((int64_t)((int32_t)in2[8])) * ((int32_t)in[7]) +
               ((int64_t)((int32_t)in2[6])) * ((int32_t)in[9]) +
               ((int64_t)((int32_t)in2[9])) * ((int32_t)in[6]);
  output[16] = ((int64_t)((int32_t)in2[8])) * ((int32_t)in[8]) +
               2 * (((int64_t)((int32_t)in2[7])) * ((int32_t)in[9]) +
                    ((int64_t)((int32_t)in2[9])) * ((int32_t)in[7]));
  output[17] = ((int64_t)((int32_t)in2[8])) * ((int32_t)in[9]) +
               ((int64_t)((int32_t)in2[9])) * ((int32_t)in[8]);
  output[18] = 2 * ((int64_t)((int32_t)in2[9])) * ((int32_t)in[9]);
}


x86 assembly (clang, -O0):
<fproduct>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
imul   (%rax),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x4(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
shl    $0x1,%ecx
mov    -0x18(%rbp),%rax
imul   0x4(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x8(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x8(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
mov    -0x10(%rbp),%rdx
mov    0xc(%rdx),%edx
mov    -0x18(%rbp),%rsi
imul   0x4(%rsi),%edx
add    %edx,%eax
shl    $0x1,%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x10(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0xc(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x10(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0xc(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
shl    $0x1,%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x10(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x10(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x10(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
mov    -0x10(%rbp),%rdx
mov    0x14(%rdx),%edx
mov    -0x18(%rbp),%rsi
imul   0xc(%rsi),%edx
add    %edx,%eax
mov    -0x10(%rbp),%rdx
mov    0x4(%rdx),%edx
mov    -0x18(%rbp),%rsi
imul   0x1c(%rsi),%edx
add    %edx,%eax
mov    -0x10(%rbp),%rdx
mov    0x1c(%rdx),%edx
mov    -0x18(%rbp),%rsi
imul   0x4(%rsi),%edx
add    %edx,%eax
shl    $0x1,%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x20(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x20(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x14(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x10(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x20(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   (%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x24(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x14(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x4(%rdx),%eax
add    %eax,%ecx
shl    $0x1,%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x10(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x20(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x28(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x18(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x10(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x20(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0xc(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x8(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x2c(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x18(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
mov    -0x10(%rbp),%rdx
mov    0x1c(%rdx),%edx
mov    -0x18(%rbp),%rsi
imul   0x14(%rsi),%edx
add    %edx,%eax
mov    -0x10(%rbp),%rdx
mov    0xc(%rdx),%edx
mov    -0x18(%rbp),%rsi
imul   0x24(%rsi),%edx
add    %edx,%eax
mov    -0x10(%rbp),%rdx
mov    0x24(%rdx),%edx
mov    -0x18(%rbp),%rsi
imul   0xc(%rsi),%edx
add    %edx,%eax
shl    $0x1,%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x20(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x10(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x30(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x1c(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x20(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x10(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x34(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x1c(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x14(%rdx),%eax
add    %eax,%ecx
shl    $0x1,%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x20(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x38(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x20(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x1c(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
add    %eax,%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x18(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x3c(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x20(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x24(%rdx),%eax
mov    -0x10(%rbp),%rdx
mov    0x24(%rdx),%edx
mov    -0x18(%rbp),%rsi
imul   0x1c(%rsi),%edx
add    %edx,%eax
shl    $0x1,%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x40(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
mov    -0x18(%rbp),%rax
imul   0x24(%rax),%ecx
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%eax
mov    -0x18(%rbp),%rdx
imul   0x20(%rdx),%eax
add    %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x44(%rax)
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%ecx
shl    $0x1,%ecx
mov    -0x18(%rbp),%rax
imul   0x24(%rax),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x48(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<fproduct>:
mov    (%rdx),%eax
imul   (%rsi),%eax
mov    %eax,(%rdi)
mov    0x4(%rdx),%eax
imul   (%rsi),%eax
mov    (%rdx),%ecx
imul   0x4(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x4(%rdi)
mov    0x4(%rsi),%r8d
imul   0x4(%rdx),%r8d
mov    (%rdx),%ecx
mov    0x8(%rdx),%eax
imul   (%rsi),%eax
lea    (%rax,%r8,2),%eax
imul   0x8(%rsi),%ecx
add    %eax,%ecx
mov    %ecx,0x8(%rdi)
mov    0x8(%rdx),%r8d
imul   0x4(%rsi),%r8d
mov    (%rdx),%r9d
mov    0x4(%rdx),%eax
imul   0x8(%rsi),%eax
add    %r8d,%eax
mov    0xc(%rdx),%ecx
imul   (%rsi),%ecx
add    %eax,%ecx
imul   0xc(%rsi),%r9d
add    %ecx,%r9d
mov    %r9d,0xc(%rdi)
mov    0x8(%rdx),%r8d
imul   0x8(%rsi),%r8d
mov    0xc(%rdx),%r9d
imul   0x4(%rsi),%r9d
mov    (%rdx),%eax
mov    0x4(%rdx),%ecx
imul   0xc(%rsi),%ecx
add    %r9d,%ecx
lea    (%r8,%rcx,2),%r8d
mov    0x10(%rdx),%ecx
imul   (%rsi),%ecx
add    %r8d,%ecx
imul   0x10(%rsi),%eax
add    %ecx,%eax
mov    %eax,0x10(%rdi)
mov    0xc(%rdx),%eax
imul   0x8(%rsi),%eax
mov    0x8(%rdx),%ecx
imul   0xc(%rsi),%ecx
add    %eax,%ecx
mov    0x10(%rdx),%eax
imul   0x4(%rsi),%eax
add    %ecx,%eax
mov    (%rdx),%r8d
mov    0x4(%rdx),%ecx
imul   0x10(%rsi),%ecx
add    %eax,%ecx
mov    0x14(%rdx),%eax
imul   (%rsi),%eax
add    %ecx,%eax
imul   0x14(%rsi),%r8d
add    %eax,%r8d
mov    %r8d,0x14(%rdi)
mov    0xc(%rdx),%eax
imul   0xc(%rsi),%eax
mov    0x14(%rdx),%ecx
imul   0x4(%rsi),%ecx
add    %eax,%ecx
mov    (%rdx),%r8d
mov    0x4(%rdx),%eax
imul   0x14(%rsi),%eax
add    %ecx,%eax
mov    0x10(%rdx),%ecx
imul   0x8(%rsi),%ecx
lea    (%rcx,%rax,2),%eax
mov    0x8(%rdx),%ecx
imul   0x10(%rsi),%ecx
add    %eax,%ecx
mov    0x18(%rdx),%eax
imul   (%rsi),%eax
add    %ecx,%eax
imul   0x18(%rsi),%r8d
add    %eax,%r8d
mov    %r8d,0x18(%rdi)
mov    0x10(%rdx),%eax
imul   0xc(%rsi),%eax
mov    0xc(%rdx),%ecx
imul   0x10(%rsi),%ecx
add    %eax,%ecx
mov    0x14(%rdx),%eax
imul   0x8(%rsi),%eax
add    %ecx,%eax
mov    0x8(%rdx),%ecx
imul   0x14(%rsi),%ecx
add    %eax,%ecx
mov    0x18(%rdx),%eax
imul   0x4(%rsi),%eax
add    %ecx,%eax
mov    (%rdx),%r8d
mov    0x4(%rdx),%ecx
imul   0x18(%rsi),%ecx
add    %eax,%ecx
mov    0x1c(%rdx),%eax
imul   (%rsi),%eax
add    %ecx,%eax
imul   0x1c(%rsi),%r8d
add    %eax,%r8d
mov    %r8d,0x1c(%rdi)
mov    0x10(%rdx),%r8d
imul   0x10(%rsi),%r8d
mov    0x14(%rdx),%ecx
imul   0xc(%rsi),%ecx
mov    0xc(%rdx),%eax
imul   0x14(%rsi),%eax
add    %ecx,%eax
mov    0x1c(%rdx),%ecx
imul   0x4(%rsi),%ecx
add    %eax,%ecx
mov    (%rdx),%r9d
mov    0x4(%rdx),%eax
imul   0x1c(%rsi),%eax
add    %ecx,%eax
lea    (%r8,%rax,2),%eax
mov    0x18(%rdx),%ecx
imul   0x8(%rsi),%ecx
add    %eax,%ecx
mov    0x8(%rdx),%eax
imul   0x18(%rsi),%eax
add    %ecx,%eax
mov    0x20(%rdx),%ecx
imul   (%rsi),%ecx
add    %eax,%ecx
imul   0x20(%rsi),%r9d
add    %ecx,%r9d
mov    %r9d,0x20(%rdi)
mov    0x14(%rdx),%eax
imul   0x10(%rsi),%eax
mov    0x10(%rdx),%ecx
imul   0x14(%rsi),%ecx
add    %eax,%ecx
mov    0x18(%rdx),%eax
imul   0xc(%rsi),%eax
add    %ecx,%eax
mov    0xc(%rdx),%ecx
imul   0x18(%rsi),%ecx
add    %eax,%ecx
mov    0x1c(%rdx),%eax
imul   0x8(%rsi),%eax
add    %ecx,%eax
mov    0x8(%rdx),%ecx
imul   0x1c(%rsi),%ecx
add    %eax,%ecx
mov    0x20(%rdx),%eax
imul   0x4(%rsi),%eax
add    %ecx,%eax
mov    (%rdx),%r8d
mov    0x4(%rdx),%ecx
imul   0x20(%rsi),%ecx
add    %eax,%ecx
mov    0x24(%rdx),%eax
imul   (%rsi),%eax
add    %ecx,%eax
imul   0x24(%rsi),%r8d
add    %eax,%r8d
mov    %r8d,0x24(%rdi)
mov    0x14(%rdx),%eax
imul   0x14(%rsi),%eax
mov    0x1c(%rdx),%ecx
imul   0xc(%rsi),%ecx
add    %eax,%ecx
mov    0xc(%rdx),%eax
imul   0x1c(%rsi),%eax
add    %ecx,%eax
mov    0x24(%rdx),%ecx
imul   0x4(%rsi),%ecx
add    %eax,%ecx
mov    0x4(%rdx),%eax
mov    0x8(%rdx),%r8d
imul   0x24(%rsi),%eax
add    %ecx,%eax
mov    0x18(%rdx),%ecx
imul   0x10(%rsi),%ecx
lea    (%rcx,%rax,2),%eax
mov    0x10(%rdx),%ecx
imul   0x18(%rsi),%ecx
add    %eax,%ecx
mov    0x20(%rdx),%eax
imul   0x8(%rsi),%eax
add    %ecx,%eax
imul   0x20(%rsi),%r8d
add    %eax,%r8d
mov    %r8d,0x28(%rdi)
mov    0x18(%rdx),%eax
imul   0x14(%rsi),%eax
mov    0x14(%rdx),%ecx
imul   0x18(%rsi),%ecx
add    %eax,%ecx
mov    0x1c(%rdx),%eax
imul   0x10(%rsi),%eax
add    %ecx,%eax
mov    0x10(%rdx),%ecx
imul   0x1c(%rsi),%ecx
add    %eax,%ecx
mov    0x20(%rdx),%eax
imul   0xc(%rsi),%eax
add    %ecx,%eax
mov    0x8(%rdx),%r8d
mov    0xc(%rdx),%ecx
imul   0x20(%rsi),%ecx
add    %eax,%ecx
mov    0x24(%rdx),%eax
imul   0x8(%rsi),%eax
add    %ecx,%eax
imul   0x24(%rsi),%r8d
add    %eax,%r8d
mov    %r8d,0x2c(%rdi)
mov    0x18(%rdx),%r8d
imul   0x18(%rsi),%r8d
mov    0x1c(%rdx),%ecx
imul   0x14(%rsi),%ecx
mov    0x14(%rdx),%eax
imul   0x1c(%rsi),%eax
add    %ecx,%eax
mov    0x24(%rdx),%ecx
imul   0xc(%rsi),%ecx
add    %eax,%ecx
mov    0xc(%rdx),%eax
mov    0x10(%rdx),%r9d
imul   0x24(%rsi),%eax
add    %ecx,%eax
lea    (%r8,%rax,2),%eax
mov    0x20(%rdx),%ecx
imul   0x10(%rsi),%ecx
add    %eax,%ecx
imul   0x20(%rsi),%r9d
add    %ecx,%r9d
mov    %r9d,0x30(%rdi)
mov    0x1c(%rdx),%eax
imul   0x18(%rsi),%eax
mov    0x18(%rdx),%ecx
imul   0x1c(%rsi),%ecx
add    %eax,%ecx
mov    0x20(%rdx),%eax
imul   0x14(%rsi),%eax
add    %ecx,%eax
mov    0x10(%rdx),%r8d
mov    0x14(%rdx),%ecx
imul   0x20(%rsi),%ecx
add    %eax,%ecx
mov    0x24(%rdx),%eax
imul   0x10(%rsi),%eax
add    %ecx,%eax
imul   0x24(%rsi),%r8d
add    %eax,%r8d
mov    %r8d,0x34(%rdi)
mov    0x1c(%rdx),%eax
imul   0x1c(%rsi),%eax
mov    0x24(%rdx),%ecx
imul   0x14(%rsi),%ecx
add    %eax,%ecx
mov    0x14(%rdx),%eax
mov    0x18(%rdx),%r8d
imul   0x24(%rsi),%eax
add    %ecx,%eax
mov    0x20(%rdx),%ecx
imul   0x18(%rsi),%ecx
lea    (%rcx,%rax,2),%eax
imul   0x20(%rsi),%r8d
add    %eax,%r8d
mov    %r8d,0x38(%rdi)
mov    0x20(%rdx),%r8d
imul   0x1c(%rsi),%r8d
mov    0x18(%rdx),%r9d
mov    0x1c(%rdx),%eax
imul   0x20(%rsi),%eax
add    %r8d,%eax
mov    0x24(%rdx),%ecx
imul   0x18(%rsi),%ecx
add    %eax,%ecx
imul   0x24(%rsi),%r9d
add    %ecx,%r9d
mov    %r9d,0x3c(%rdi)
mov    0x20(%rdx),%r8d
imul   0x20(%rsi),%r8d
mov    0x24(%rdx),%ecx
imul   0x1c(%rsi),%ecx
mov    0x1c(%rdx),%eax
imul   0x24(%rsi),%eax
add    %ecx,%eax
lea    (%r8,%rax,2),%eax
mov    %eax,0x40(%rdi)
mov    0x20(%rdx),%eax
mov    0x24(%rdx),%ecx
imul   0x20(%rsi),%ecx
imul   0x24(%rsi),%eax
add    %ecx,%eax
mov    %eax,0x44(%rdi)
mov    0x24(%rsi),%eax
imul   0x24(%rdx),%eax
add    %eax,%eax
mov    %eax,0x48(%rdi)
ret

LLVM IR (-O0):
define void @fproduct(i32* %0, i32* %1, i32* %2) {
%4 = alloca i32*
%5 = alloca i32*
%6 = alloca i32*
store i32* %0, i32** %4
store i32* %1, i32** %5
store i32* %2, i32** %6
%7 = load i32*, i32** %5
%8 = getelementptr inbounds i32, i32* %7, i64 0
%9 = load i32, i32* %8
%10 = load i32*, i32** %6
%11 = getelementptr inbounds i32, i32* %10, i64 0
%12 = load i32, i32* %11
%13 = mul nsw i32 %9, %12
%14 = load i32*, i32** %4
%15 = getelementptr inbounds i32, i32* %14, i64 0
store i32 %13, i32* %15
%16 = load i32*, i32** %5
%17 = getelementptr inbounds i32, i32* %16, i64 0
%18 = load i32, i32* %17
%19 = load i32*, i32** %6
%20 = getelementptr inbounds i32, i32* %19, i64 1
%21 = load i32, i32* %20
%22 = mul nsw i32 %18, %21
%23 = load i32*, i32** %5
%24 = getelementptr inbounds i32, i32* %23, i64 1
%25 = load i32, i32* %24
%26 = load i32*, i32** %6
%27 = getelementptr inbounds i32, i32* %26, i64 0
%28 = load i32, i32* %27
%29 = mul nsw i32 %25, %28
%30 = add nsw i32 %22, %29
%31 = load i32*, i32** %4
%32 = getelementptr inbounds i32, i32* %31, i64 1
store i32 %30, i32* %32
%33 = load i32*, i32** %5
%34 = getelementptr inbounds i32, i32* %33, i64 1
%35 = load i32, i32* %34
%36 = mul nsw i32 2, %35
%37 = load i32*, i32** %6
%38 = getelementptr inbounds i32, i32* %37, i64 1
%39 = load i32, i32* %38
%40 = mul nsw i32 %36, %39
%41 = load i32*, i32** %5
%42 = getelementptr inbounds i32, i32* %41, i64 0
%43 = load i32, i32* %42
%44 = load i32*, i32** %6
%45 = getelementptr inbounds i32, i32* %44, i64 2
%46 = load i32, i32* %45
%47 = mul nsw i32 %43, %46
%48 = add nsw i32 %40, %47
%49 = load i32*, i32** %5
%50 = getelementptr inbounds i32, i32* %49, i64 2
%51 = load i32, i32* %50
%52 = load i32*, i32** %6
%53 = getelementptr inbounds i32, i32* %52, i64 0
%54 = load i32, i32* %53
%55 = mul nsw i32 %51, %54
%56 = add nsw i32 %48, %55
%57 = load i32*, i32** %4
%58 = getelementptr inbounds i32, i32* %57, i64 2
store i32 %56, i32* %58
%59 = load i32*, i32** %5
%60 = getelementptr inbounds i32, i32* %59, i64 1
%61 = load i32, i32* %60
%62 = load i32*, i32** %6
%63 = getelementptr inbounds i32, i32* %62, i64 2
%64 = load i32, i32* %63
%65 = mul nsw i32 %61, %64
%66 = load i32*, i32** %5
%67 = getelementptr inbounds i32, i32* %66, i64 2
%68 = load i32, i32* %67
%69 = load i32*, i32** %6
%70 = getelementptr inbounds i32, i32* %69, i64 1
%71 = load i32, i32* %70
%72 = mul nsw i32 %68, %71
%73 = add nsw i32 %65, %72
%74 = load i32*, i32** %5
%75 = getelementptr inbounds i32, i32* %74, i64 0
%76 = load i32, i32* %75
%77 = load i32*, i32** %6
%78 = getelementptr inbounds i32, i32* %77, i64 3
%79 = load i32, i32* %78
%80 = mul nsw i32 %76, %79
%81 = add nsw i32 %73, %80
%82 = load i32*, i32** %5
%83 = getelementptr inbounds i32, i32* %82, i64 3
%84 = load i32, i32* %83
%85 = load i32*, i32** %6
%86 = getelementptr inbounds i32, i32* %85, i64 0
%87 = load i32, i32* %86
%88 = mul nsw i32 %84, %87
%89 = add nsw i32 %81, %88
%90 = load i32*, i32** %4
%91 = getelementptr inbounds i32, i32* %90, i64 3
store i32 %89, i32* %91
%92 = load i32*, i32** %5
%93 = getelementptr inbounds i32, i32* %92, i64 2
%94 = load i32, i32* %93
%95 = load i32*, i32** %6
%96 = getelementptr inbounds i32, i32* %95, i64 2
%97 = load i32, i32* %96
%98 = mul nsw i32 %94, %97
%99 = load i32*, i32** %5
%100 = getelementptr inbounds i32, i32* %99, i64 1
%101 = load i32, i32* %100
%102 = load i32*, i32** %6
%103 = getelementptr inbounds i32, i32* %102, i64 3
%104 = load i32, i32* %103
%105 = mul nsw i32 %101, %104
%106 = load i32*, i32** %5
%107 = getelementptr inbounds i32, i32* %106, i64 3
%108 = load i32, i32* %107
%109 = load i32*, i32** %6
%110 = getelementptr inbounds i32, i32* %109, i64 1
%111 = load i32, i32* %110
%112 = mul nsw i32 %108, %111
%113 = add nsw i32 %105, %112
%114 = mul nsw i32 2, %113
%115 = add nsw i32 %98, %114
%116 = load i32*, i32** %5
%117 = getelementptr inbounds i32, i32* %116, i64 0
%118 = load i32, i32* %117
%119 = load i32*, i32** %6
%120 = getelementptr inbounds i32, i32* %119, i64 4
%121 = load i32, i32* %120
%122 = mul nsw i32 %118, %121
%123 = add nsw i32 %115, %122
%124 = load i32*, i32** %5
%125 = getelementptr inbounds i32, i32* %124, i64 4
%126 = load i32, i32* %125
%127 = load i32*, i32** %6
%128 = getelementptr inbounds i32, i32* %127, i64 0
%129 = load i32, i32* %128
%130 = mul nsw i32 %126, %129
%131 = add nsw i32 %123, %130
%132 = load i32*, i32** %4
%133 = getelementptr inbounds i32, i32* %132, i64 4
store i32 %131, i32* %133
%134 = load i32*, i32** %5
%135 = getelementptr inbounds i32, i32* %134, i64 2
%136 = load i32, i32* %135
%137 = load i32*, i32** %6
%138 = getelementptr inbounds i32, i32* %137, i64 3
%139 = load i32, i32* %138
%140 = mul nsw i32 %136, %139
%141 = load i32*, i32** %5
%142 = getelementptr inbounds i32, i32* %141, i64 3
%143 = load i32, i32* %142
%144 = load i32*, i32** %6
%145 = getelementptr inbounds i32, i32* %144, i64 2
%146 = load i32, i32* %145
%147 = mul nsw i32 %143, %146
%148 = add nsw i32 %140, %147
%149 = load i32*, i32** %5
%150 = getelementptr inbounds i32, i32* %149, i64 1
%151 = load i32, i32* %150
%152 = load i32*, i32** %6
%153 = getelementptr inbounds i32, i32* %152, i64 4
%154 = load i32, i32* %153
%155 = mul nsw i32 %151, %154
%156 = add nsw i32 %148, %155
%157 = load i32*, i32** %5
%158 = getelementptr inbounds i32, i32* %157, i64 4
%159 = load i32, i32* %158
%160 = load i32*, i32** %6
%161 = getelementptr inbounds i32, i32* %160, i64 1
%162 = load i32, i32* %161
%163 = mul nsw i32 %159, %162
%164 = add nsw i32 %156, %163
%165 = load i32*, i32** %5
%166 = getelementptr inbounds i32, i32* %165, i64 0
%167 = load i32, i32* %166
%168 = load i32*, i32** %6
%169 = getelementptr inbounds i32, i32* %168, i64 5
%170 = load i32, i32* %169
%171 = mul nsw i32 %167, %170
%172 = add nsw i32 %164, %171
%173 = load i32*, i32** %5
%174 = getelementptr inbounds i32, i32* %173, i64 5
%175 = load i32, i32* %174
%176 = load i32*, i32** %6
%177 = getelementptr inbounds i32, i32* %176, i64 0
%178 = load i32, i32* %177
%179 = mul nsw i32 %175, %178
%180 = add nsw i32 %172, %179
%181 = load i32*, i32** %4
%182 = getelementptr inbounds i32, i32* %181, i64 5
store i32 %180, i32* %182
%183 = load i32*, i32** %5
%184 = getelementptr inbounds i32, i32* %183, i64 3
%185 = load i32, i32* %184
%186 = load i32*, i32** %6
%187 = getelementptr inbounds i32, i32* %186, i64 3
%188 = load i32, i32* %187
%189 = mul nsw i32 %185, %188
%190 = load i32*, i32** %5
%191 = getelementptr inbounds i32, i32* %190, i64 1
%192 = load i32, i32* %191
%193 = load i32*, i32** %6
%194 = getelementptr inbounds i32, i32* %193, i64 5
%195 = load i32, i32* %194
%196 = mul nsw i32 %192, %195
%197 = add nsw i32 %189, %196
%198 = load i32*, i32** %5
%199 = getelementptr inbounds i32, i32* %198, i64 5
%200 = load i32, i32* %199
%201 = load i32*, i32** %6
%202 = getelementptr inbounds i32, i32* %201, i64 1
%203 = load i32, i32* %202
%204 = mul nsw i32 %200, %203
%205 = add nsw i32 %197, %204
%206 = mul nsw i32 2, %205
%207 = load i32*, i32** %5
%208 = getelementptr inbounds i32, i32* %207, i64 2
%209 = load i32, i32* %208
%210 = load i32*, i32** %6
%211 = getelementptr inbounds i32, i32* %210, i64 4
%212 = load i32, i32* %211
%213 = mul nsw i32 %209, %212
%214 = add nsw i32 %206, %213
%215 = load i32*, i32** %5
%216 = getelementptr inbounds i32, i32* %215, i64 4
%217 = load i32, i32* %216
%218 = load i32*, i32** %6
%219 = getelementptr inbounds i32, i32* %218, i64 2
%220 = load i32, i32* %219
%221 = mul nsw i32 %217, %220
%222 = add nsw i32 %214, %221
%223 = load i32*, i32** %5
%224 = getelementptr inbounds i32, i32* %223, i64 0
%225 = load i32, i32* %224
%226 = load i32*, i32** %6
%227 = getelementptr inbounds i32, i32* %226, i64 6
%228 = load i32, i32* %227
%229 = mul nsw i32 %225, %228
%230 = add nsw i32 %222, %229
%231 = load i32*, i32** %5
%232 = getelementptr inbounds i32, i32* %231, i64 6
%233 = load i32, i32* %232
%234 = load i32*, i32** %6
%235 = getelementptr inbounds i32, i32* %234, i64 0
%236 = load i32, i32* %235
%237 = mul nsw i32 %233, %236
%238 = add nsw i32 %230, %237
%239 = load i32*, i32** %4
%240 = getelementptr inbounds i32, i32* %239, i64 6
store i32 %238, i32* %240
%241 = load i32*, i32** %5
%242 = getelementptr inbounds i32, i32* %241, i64 3
%243 = load i32, i32* %242
%244 = load i32*, i32** %6
%245 = getelementptr inbounds i32, i32* %244, i64 4
%246 = load i32, i32* %245
%247 = mul nsw i32 %243, %246
%248 = load i32*, i32** %5
%249 = getelementptr inbounds i32, i32* %248, i64 4
%250 = load i32, i32* %249
%251 = load i32*, i32** %6
%252 = getelementptr inbounds i32, i32* %251, i64 3
%253 = load i32, i32* %252
%254 = mul nsw i32 %250, %253
%255 = add nsw i32 %247, %254
%256 = load i32*, i32** %5
%257 = getelementptr inbounds i32, i32* %256, i64 2
%258 = load i32, i32* %257
%259 = load i32*, i32** %6
%260 = getelementptr inbounds i32, i32* %259, i64 5
%261 = load i32, i32* %260
%262 = mul nsw i32 %258, %261
%263 = add nsw i32 %255, %262
%264 = load i32*, i32** %5
%265 = getelementptr inbounds i32, i32* %264, i64 5
%266 = load i32, i32* %265
%267 = load i32*, i32** %6
%268 = getelementptr inbounds i32, i32* %267, i64 2
%269 = load i32, i32* %268
%270 = mul nsw i32 %266, %269
%271 = add nsw i32 %263, %270
%272 = load i32*, i32** %5
%273 = getelementptr inbounds i32, i32* %272, i64 1
%274 = load i32, i32* %273
%275 = load i32*, i32** %6
%276 = getelementptr inbounds i32, i32* %275, i64 6
%277 = load i32, i32* %276
%278 = mul nsw i32 %274, %277
%279 = add nsw i32 %271, %278
%280 = load i32*, i32** %5
%281 = getelementptr inbounds i32, i32* %280, i64 6
%282 = load i32, i32* %281
%283 = load i32*, i32** %6
%284 = getelementptr inbounds i32, i32* %283, i64 1
%285 = load i32, i32* %284
%286 = mul nsw i32 %282, %285
%287 = add nsw i32 %279, %286
%288 = load i32*, i32** %5
%289 = getelementptr inbounds i32, i32* %288, i64 0
%290 = load i32, i32* %289
%291 = load i32*, i32** %6
%292 = getelementptr inbounds i32, i32* %291, i64 7
%293 = load i32, i32* %292
%294 = mul nsw i32 %290, %293
%295 = add nsw i32 %287, %294
%296 = load i32*, i32** %5
%297 = getelementptr inbounds i32, i32* %296, i64 7
%298 = load i32, i32* %297
%299 = load i32*, i32** %6
%300 = getelementptr inbounds i32, i32* %299, i64 0
%301 = load i32, i32* %300
%302 = mul nsw i32 %298, %301
%303 = add nsw i32 %295, %302
%304 = load i32*, i32** %4
%305 = getelementptr inbounds i32, i32* %304, i64 7
store i32 %303, i32* %305
%306 = load i32*, i32** %5
%307 = getelementptr inbounds i32, i32* %306, i64 4
%308 = load i32, i32* %307
%309 = load i32*, i32** %6
%310 = getelementptr inbounds i32, i32* %309, i64 4
%311 = load i32, i32* %310
%312 = mul nsw i32 %308, %311
%313 = load i32*, i32** %5
%314 = getelementptr inbounds i32, i32* %313, i64 3
%315 = load i32, i32* %314
%316 = load i32*, i32** %6
%317 = getelementptr inbounds i32, i32* %316, i64 5
%318 = load i32, i32* %317
%319 = mul nsw i32 %315, %318
%320 = load i32*, i32** %5
%321 = getelementptr inbounds i32, i32* %320, i64 5
%322 = load i32, i32* %321
%323 = load i32*, i32** %6
%324 = getelementptr inbounds i32, i32* %323, i64 3
%325 = load i32, i32* %324
%326 = mul nsw i32 %322, %325
%327 = add nsw i32 %319, %326
%328 = load i32*, i32** %5
%329 = getelementptr inbounds i32, i32* %328, i64 1
%330 = load i32, i32* %329
%331 = load i32*, i32** %6
%332 = getelementptr inbounds i32, i32* %331, i64 7
%333 = load i32, i32* %332
%334 = mul nsw i32 %330, %333
%335 = add nsw i32 %327, %334
%336 = load i32*, i32** %5
%337 = getelementptr inbounds i32, i32* %336, i64 7
%338 = load i32, i32* %337
%339 = load i32*, i32** %6
%340 = getelementptr inbounds i32, i32* %339, i64 1
%341 = load i32, i32* %340
%342 = mul nsw i32 %338, %341
%343 = add nsw i32 %335, %342
%344 = mul nsw i32 2, %343
%345 = add nsw i32 %312, %344
%346 = load i32*, i32** %5
%347 = getelementptr inbounds i32, i32* %346, i64 2
%348 = load i32, i32* %347
%349 = load i32*, i32** %6
%350 = getelementptr inbounds i32, i32* %349, i64 6
%351 = load i32, i32* %350
%352 = mul nsw i32 %348, %351
%353 = add nsw i32 %345, %352
%354 = load i32*, i32** %5
%355 = getelementptr inbounds i32, i32* %354, i64 6
%356 = load i32, i32* %355
%357 = load i32*, i32** %6
%358 = getelementptr inbounds i32, i32* %357, i64 2
%359 = load i32, i32* %358
%360 = mul nsw i32 %356, %359
%361 = add nsw i32 %353, %360
%362 = load i32*, i32** %5
%363 = getelementptr inbounds i32, i32* %362, i64 0
%364 = load i32, i32* %363
%365 = load i32*, i32** %6
%366 = getelementptr inbounds i32, i32* %365, i64 8
%367 = load i32, i32* %366
%368 = mul nsw i32 %364, %367
%369 = add nsw i32 %361, %368
%370 = load i32*, i32** %5
%371 = getelementptr inbounds i32, i32* %370, i64 8
%372 = load i32, i32* %371
%373 = load i32*, i32** %6
%374 = getelementptr inbounds i32, i32* %373, i64 0
%375 = load i32, i32* %374
%376 = mul nsw i32 %372, %375
%377 = add nsw i32 %369, %376
%378 = load i32*, i32** %4
%379 = getelementptr inbounds i32, i32* %378, i64 8
store i32 %377, i32* %379
%380 = load i32*, i32** %5
%381 = getelementptr inbounds i32, i32* %380, i64 4
%382 = load i32, i32* %381
%383 = load i32*, i32** %6
%384 = getelementptr inbounds i32, i32* %383, i64 5
%385 = load i32, i32* %384
%386 = mul nsw i32 %382, %385
%387 = load i32*, i32** %5
%388 = getelementptr inbounds i32, i32* %387, i64 5
%389 = load i32, i32* %388
%390 = load i32*, i32** %6
%391 = getelementptr inbounds i32, i32* %390, i64 4
%392 = load i32, i32* %391
%393 = mul nsw i32 %389, %392
%394 = add nsw i32 %386, %393
%395 = load i32*, i32** %5
%396 = getelementptr inbounds i32, i32* %395, i64 3
%397 = load i32, i32* %396
%398 = load i32*, i32** %6
%399 = getelementptr inbounds i32, i32* %398, i64 6
%400 = load i32, i32* %399
%401 = mul nsw i32 %397, %400
%402 = add nsw i32 %394, %401
%403 = load i32*, i32** %5
%404 = getelementptr inbounds i32, i32* %403, i64 6
%405 = load i32, i32* %404
%406 = load i32*, i32** %6
%407 = getelementptr inbounds i32, i32* %406, i64 3
%408 = load i32, i32* %407
%409 = mul nsw i32 %405, %408
%410 = add nsw i32 %402, %409
%411 = load i32*, i32** %5
%412 = getelementptr inbounds i32, i32* %411, i64 2
%413 = load i32, i32* %412
%414 = load i32*, i32** %6
%415 = getelementptr inbounds i32, i32* %414, i64 7
%416 = load i32, i32* %415
%417 = mul nsw i32 %413, %416
%418 = add nsw i32 %410, %417
%419 = load i32*, i32** %5
%420 = getelementptr inbounds i32, i32* %419, i64 7
%421 = load i32, i32* %420
%422 = load i32*, i32** %6
%423 = getelementptr inbounds i32, i32* %422, i64 2
%424 = load i32, i32* %423
%425 = mul nsw i32 %421, %424
%426 = add nsw i32 %418, %425
%427 = load i32*, i32** %5
%428 = getelementptr inbounds i32, i32* %427, i64 1
%429 = load i32, i32* %428
%430 = load i32*, i32** %6
%431 = getelementptr inbounds i32, i32* %430, i64 8
%432 = load i32, i32* %431
%433 = mul nsw i32 %429, %432
%434 = add nsw i32 %426, %433
%435 = load i32*, i32** %5
%436 = getelementptr inbounds i32, i32* %435, i64 8
%437 = load i32, i32* %436
%438 = load i32*, i32** %6
%439 = getelementptr inbounds i32, i32* %438, i64 1
%440 = load i32, i32* %439
%441 = mul nsw i32 %437, %440
%442 = add nsw i32 %434, %441
%443 = load i32*, i32** %5
%444 = getelementptr inbounds i32, i32* %443, i64 0
%445 = load i32, i32* %444
%446 = load i32*, i32** %6
%447 = getelementptr inbounds i32, i32* %446, i64 9
%448 = load i32, i32* %447
%449 = mul nsw i32 %445, %448
%450 = add nsw i32 %442, %449
%451 = load i32*, i32** %5
%452 = getelementptr inbounds i32, i32* %451, i64 9
%453 = load i32, i32* %452
%454 = load i32*, i32** %6
%455 = getelementptr inbounds i32, i32* %454, i64 0
%456 = load i32, i32* %455
%457 = mul nsw i32 %453, %456
%458 = add nsw i32 %450, %457
%459 = load i32*, i32** %4
%460 = getelementptr inbounds i32, i32* %459, i64 9
store i32 %458, i32* %460
%461 = load i32*, i32** %5
%462 = getelementptr inbounds i32, i32* %461, i64 5
%463 = load i32, i32* %462
%464 = load i32*, i32** %6
%465 = getelementptr inbounds i32, i32* %464, i64 5
%466 = load i32, i32* %465
%467 = mul nsw i32 %463, %466
%468 = load i32*, i32** %5
%469 = getelementptr inbounds i32, i32* %468, i64 3
%470 = load i32, i32* %469
%471 = load i32*, i32** %6
%472 = getelementptr inbounds i32, i32* %471, i64 7
%473 = load i32, i32* %472
%474 = mul nsw i32 %470, %473
%475 = add nsw i32 %467, %474
%476 = load i32*, i32** %5
%477 = getelementptr inbounds i32, i32* %476, i64 7
%478 = load i32, i32* %477
%479 = load i32*, i32** %6
%480 = getelementptr inbounds i32, i32* %479, i64 3
%481 = load i32, i32* %480
%482 = mul nsw i32 %478, %481
%483 = add nsw i32 %475, %482
%484 = load i32*, i32** %5
%485 = getelementptr inbounds i32, i32* %484, i64 1
%486 = load i32, i32* %485
%487 = load i32*, i32** %6
%488 = getelementptr inbounds i32, i32* %487, i64 9
%489 = load i32, i32* %488
%490 = mul nsw i32 %486, %489
%491 = add nsw i32 %483, %490
%492 = load i32*, i32** %5
%493 = getelementptr inbounds i32, i32* %492, i64 9
%494 = load i32, i32* %493
%495 = load i32*, i32** %6
%496 = getelementptr inbounds i32, i32* %495, i64 1
%497 = load i32, i32* %496
%498 = mul nsw i32 %494, %497
%499 = add nsw i32 %491, %498
%500 = mul nsw i32 2, %499
%501 = load i32*, i32** %5
%502 = getelementptr inbounds i32, i32* %501, i64 4
%503 = load i32, i32* %502
%504 = load i32*, i32** %6
%505 = getelementptr inbounds i32, i32* %504, i64 6
%506 = load i32, i32* %505
%507 = mul nsw i32 %503, %506
%508 = add nsw i32 %500, %507
%509 = load i32*, i32** %5
%510 = getelementptr inbounds i32, i32* %509, i64 6
%511 = load i32, i32* %510
%512 = load i32*, i32** %6
%513 = getelementptr inbounds i32, i32* %512, i64 4
%514 = load i32, i32* %513
%515 = mul nsw i32 %511, %514
%516 = add nsw i32 %508, %515
%517 = load i32*, i32** %5
%518 = getelementptr inbounds i32, i32* %517, i64 2
%519 = load i32, i32* %518
%520 = load i32*, i32** %6
%521 = getelementptr inbounds i32, i32* %520, i64 8
%522 = load i32, i32* %521
%523 = mul nsw i32 %519, %522
%524 = add nsw i32 %516, %523
%525 = load i32*, i32** %5
%526 = getelementptr inbounds i32, i32* %525, i64 8
%527 = load i32, i32* %526
%528 = load i32*, i32** %6
%529 = getelementptr inbounds i32, i32* %528, i64 2
%530 = load i32, i32* %529
%531 = mul nsw i32 %527, %530
%532 = add nsw i32 %524, %531
%533 = load i32*, i32** %4
%534 = getelementptr inbounds i32, i32* %533, i64 10
store i32 %532, i32* %534
%535 = load i32*, i32** %5
%536 = getelementptr inbounds i32, i32* %535, i64 5
%537 = load i32, i32* %536
%538 = load i32*, i32** %6
%539 = getelementptr inbounds i32, i32* %538, i64 6
%540 = load i32, i32* %539
%541 = mul nsw i32 %537, %540
%542 = load i32*, i32** %5
%543 = getelementptr inbounds i32, i32* %542, i64 6
%544 = load i32, i32* %543
%545 = load i32*, i32** %6
%546 = getelementptr inbounds i32, i32* %545, i64 5
%547 = load i32, i32* %546
%548 = mul nsw i32 %544, %547
%549 = add nsw i32 %541, %548
%550 = load i32*, i32** %5
%551 = getelementptr inbounds i32, i32* %550, i64 4
%552 = load i32, i32* %551
%553 = load i32*, i32** %6
%554 = getelementptr inbounds i32, i32* %553, i64 7
%555 = load i32, i32* %554
%556 = mul nsw i32 %552, %555
%557 = add nsw i32 %549, %556
%558 = load i32*, i32** %5
%559 = getelementptr inbounds i32, i32* %558, i64 7
%560 = load i32, i32* %559
%561 = load i32*, i32** %6
%562 = getelementptr inbounds i32, i32* %561, i64 4
%563 = load i32, i32* %562
%564 = mul nsw i32 %560, %563
%565 = add nsw i32 %557, %564
%566 = load i32*, i32** %5
%567 = getelementptr inbounds i32, i32* %566, i64 3
%568 = load i32, i32* %567
%569 = load i32*, i32** %6
%570 = getelementptr inbounds i32, i32* %569, i64 8
%571 = load i32, i32* %570
%572 = mul nsw i32 %568, %571
%573 = add nsw i32 %565, %572
%574 = load i32*, i32** %5
%575 = getelementptr inbounds i32, i32* %574, i64 8
%576 = load i32, i32* %575
%577 = load i32*, i32** %6
%578 = getelementptr inbounds i32, i32* %577, i64 3
%579 = load i32, i32* %578
%580 = mul nsw i32 %576, %579
%581 = add nsw i32 %573, %580
%582 = load i32*, i32** %5
%583 = getelementptr inbounds i32, i32* %582, i64 2
%584 = load i32, i32* %583
%585 = load i32*, i32** %6
%586 = getelementptr inbounds i32, i32* %585, i64 9
%587 = load i32, i32* %586
%588 = mul nsw i32 %584, %587
%589 = add nsw i32 %581, %588
%590 = load i32*, i32** %5
%591 = getelementptr inbounds i32, i32* %590, i64 9
%592 = load i32, i32* %591
%593 = load i32*, i32** %6
%594 = getelementptr inbounds i32, i32* %593, i64 2
%595 = load i32, i32* %594
%596 = mul nsw i32 %592, %595
%597 = add nsw i32 %589, %596
%598 = load i32*, i32** %4
%599 = getelementptr inbounds i32, i32* %598, i64 11
store i32 %597, i32* %599
%600 = load i32*, i32** %5
%601 = getelementptr inbounds i32, i32* %600, i64 6
%602 = load i32, i32* %601
%603 = load i32*, i32** %6
%604 = getelementptr inbounds i32, i32* %603, i64 6
%605 = load i32, i32* %604
%606 = mul nsw i32 %602, %605
%607 = load i32*, i32** %5
%608 = getelementptr inbounds i32, i32* %607, i64 5
%609 = load i32, i32* %608
%610 = load i32*, i32** %6
%611 = getelementptr inbounds i32, i32* %610, i64 7
%612 = load i32, i32* %611
%613 = mul nsw i32 %609, %612
%614 = load i32*, i32** %5
%615 = getelementptr inbounds i32, i32* %614, i64 7
%616 = load i32, i32* %615
%617 = load i32*, i32** %6
%618 = getelementptr inbounds i32, i32* %617, i64 5
%619 = load i32, i32* %618
%620 = mul nsw i32 %616, %619
%621 = add nsw i32 %613, %620
%622 = load i32*, i32** %5
%623 = getelementptr inbounds i32, i32* %622, i64 3
%624 = load i32, i32* %623
%625 = load i32*, i32** %6
%626 = getelementptr inbounds i32, i32* %625, i64 9
%627 = load i32, i32* %626
%628 = mul nsw i32 %624, %627
%629 = add nsw i32 %621, %628
%630 = load i32*, i32** %5
%631 = getelementptr inbounds i32, i32* %630, i64 9
%632 = load i32, i32* %631
%633 = load i32*, i32** %6
%634 = getelementptr inbounds i32, i32* %633, i64 3
%635 = load i32, i32* %634
%636 = mul nsw i32 %632, %635
%637 = add nsw i32 %629, %636
%638 = mul nsw i32 2, %637
%639 = add nsw i32 %606, %638
%640 = load i32*, i32** %5
%641 = getelementptr inbounds i32, i32* %640, i64 4
%642 = load i32, i32* %641
%643 = load i32*, i32** %6
%644 = getelementptr inbounds i32, i32* %643, i64 8
%645 = load i32, i32* %644
%646 = mul nsw i32 %642, %645
%647 = add nsw i32 %639, %646
%648 = load i32*, i32** %5
%649 = getelementptr inbounds i32, i32* %648, i64 8
%650 = load i32, i32* %649
%651 = load i32*, i32** %6
%652 = getelementptr inbounds i32, i32* %651, i64 4
%653 = load i32, i32* %652
%654 = mul nsw i32 %650, %653
%655 = add nsw i32 %647, %654
%656 = load i32*, i32** %4
%657 = getelementptr inbounds i32, i32* %656, i64 12
store i32 %655, i32* %657
%658 = load i32*, i32** %5
%659 = getelementptr inbounds i32, i32* %658, i64 6
%660 = load i32, i32* %659
%661 = load i32*, i32** %6
%662 = getelementptr inbounds i32, i32* %661, i64 7
%663 = load i32, i32* %662
%664 = mul nsw i32 %660, %663
%665 = load i32*, i32** %5
%666 = getelementptr inbounds i32, i32* %665, i64 7
%667 = load i32, i32* %666
%668 = load i32*, i32** %6
%669 = getelementptr inbounds i32, i32* %668, i64 6
%670 = load i32, i32* %669
%671 = mul nsw i32 %667, %670
%672 = add nsw i32 %664, %671
%673 = load i32*, i32** %5
%674 = getelementptr inbounds i32, i32* %673, i64 5
%675 = load i32, i32* %674
%676 = load i32*, i32** %6
%677 = getelementptr inbounds i32, i32* %676, i64 8
%678 = load i32, i32* %677
%679 = mul nsw i32 %675, %678
%680 = add nsw i32 %672, %679
%681 = load i32*, i32** %5
%682 = getelementptr inbounds i32, i32* %681, i64 8
%683 = load i32, i32* %682
%684 = load i32*, i32** %6
%685 = getelementptr inbounds i32, i32* %684, i64 5
%686 = load i32, i32* %685
%687 = mul nsw i32 %683, %686
%688 = add nsw i32 %680, %687
%689 = load i32*, i32** %5
%690 = getelementptr inbounds i32, i32* %689, i64 4
%691 = load i32, i32* %690
%692 = load i32*, i32** %6
%693 = getelementptr inbounds i32, i32* %692, i64 9
%694 = load i32, i32* %693
%695 = mul nsw i32 %691, %694
%696 = add nsw i32 %688, %695
%697 = load i32*, i32** %5
%698 = getelementptr inbounds i32, i32* %697, i64 9
%699 = load i32, i32* %698
%700 = load i32*, i32** %6
%701 = getelementptr inbounds i32, i32* %700, i64 4
%702 = load i32, i32* %701
%703 = mul nsw i32 %699, %702
%704 = add nsw i32 %696, %703
%705 = load i32*, i32** %4
%706 = getelementptr inbounds i32, i32* %705, i64 13
store i32 %704, i32* %706
%707 = load i32*, i32** %5
%708 = getelementptr inbounds i32, i32* %707, i64 7
%709 = load i32, i32* %708
%710 = load i32*, i32** %6
%711 = getelementptr inbounds i32, i32* %710, i64 7
%712 = load i32, i32* %711
%713 = mul nsw i32 %709, %712
%714 = load i32*, i32** %5
%715 = getelementptr inbounds i32, i32* %714, i64 5
%716 = load i32, i32* %715
%717 = load i32*, i32** %6
%718 = getelementptr inbounds i32, i32* %717, i64 9
%719 = load i32, i32* %718
%720 = mul nsw i32 %716, %719
%721 = add nsw i32 %713, %720
%722 = load i32*, i32** %5
%723 = getelementptr inbounds i32, i32* %722, i64 9
%724 = load i32, i32* %723
%725 = load i32*, i32** %6
%726 = getelementptr inbounds i32, i32* %725, i64 5
%727 = load i32, i32* %726
%728 = mul nsw i32 %724, %727
%729 = add nsw i32 %721, %728
%730 = mul nsw i32 2, %729
%731 = load i32*, i32** %5
%732 = getelementptr inbounds i32, i32* %731, i64 6
%733 = load i32, i32* %732
%734 = load i32*, i32** %6
%735 = getelementptr inbounds i32, i32* %734, i64 8
%736 = load i32, i32* %735
%737 = mul nsw i32 %733, %736
%738 = add nsw i32 %730, %737
%739 = load i32*, i32** %5
%740 = getelementptr inbounds i32, i32* %739, i64 8
%741 = load i32, i32* %740
%742 = load i32*, i32** %6
%743 = getelementptr inbounds i32, i32* %742, i64 6
%744 = load i32, i32* %743
%745 = mul nsw i32 %741, %744
%746 = add nsw i32 %738, %745
%747 = load i32*, i32** %4
%748 = getelementptr inbounds i32, i32* %747, i64 14
store i32 %746, i32* %748
%749 = load i32*, i32** %5
%750 = getelementptr inbounds i32, i32* %749, i64 7
%751 = load i32, i32* %750
%752 = load i32*, i32** %6
%753 = getelementptr inbounds i32, i32* %752, i64 8
%754 = load i32, i32* %753
%755 = mul nsw i32 %751, %754
%756 = load i32*, i32** %5
%757 = getelementptr inbounds i32, i32* %756, i64 8
%758 = load i32, i32* %757
%759 = load i32*, i32** %6
%760 = getelementptr inbounds i32, i32* %759, i64 7
%761 = load i32, i32* %760
%762 = mul nsw i32 %758, %761
%763 = add nsw i32 %755, %762
%764 = load i32*, i32** %5
%765 = getelementptr inbounds i32, i32* %764, i64 6
%766 = load i32, i32* %765
%767 = load i32*, i32** %6
%768 = getelementptr inbounds i32, i32* %767, i64 9
%769 = load i32, i32* %768
%770 = mul nsw i32 %766, %769
%771 = add nsw i32 %763, %770
%772 = load i32*, i32** %5
%773 = getelementptr inbounds i32, i32* %772, i64 9
%774 = load i32, i32* %773
%775 = load i32*, i32** %6
%776 = getelementptr inbounds i32, i32* %775, i64 6
%777 = load i32, i32* %776
%778 = mul nsw i32 %774, %777
%779 = add nsw i32 %771, %778
%780 = load i32*, i32** %4
%781 = getelementptr inbounds i32, i32* %780, i64 15
store i32 %779, i32* %781
%782 = load i32*, i32** %5
%783 = getelementptr inbounds i32, i32* %782, i64 8
%784 = load i32, i32* %783
%785 = load i32*, i32** %6
%786 = getelementptr inbounds i32, i32* %785, i64 8
%787 = load i32, i32* %786
%788 = mul nsw i32 %784, %787
%789 = load i32*, i32** %5
%790 = getelementptr inbounds i32, i32* %789, i64 7
%791 = load i32, i32* %790
%792 = load i32*, i32** %6
%793 = getelementptr inbounds i32, i32* %792, i64 9
%794 = load i32, i32* %793
%795 = mul nsw i32 %791, %794
%796 = load i32*, i32** %5
%797 = getelementptr inbounds i32, i32* %796, i64 9
%798 = load i32, i32* %797
%799 = load i32*, i32** %6
%800 = getelementptr inbounds i32, i32* %799, i64 7
%801 = load i32, i32* %800
%802 = mul nsw i32 %798, %801
%803 = add nsw i32 %795, %802
%804 = mul nsw i32 2, %803
%805 = add nsw i32 %788, %804
%806 = load i32*, i32** %4
%807 = getelementptr inbounds i32, i32* %806, i64 16
store i32 %805, i32* %807
%808 = load i32*, i32** %5
%809 = getelementptr inbounds i32, i32* %808, i64 8
%810 = load i32, i32* %809
%811 = load i32*, i32** %6
%812 = getelementptr inbounds i32, i32* %811, i64 9
%813 = load i32, i32* %812
%814 = mul nsw i32 %810, %813
%815 = load i32*, i32** %5
%816 = getelementptr inbounds i32, i32* %815, i64 9
%817 = load i32, i32* %816
%818 = load i32*, i32** %6
%819 = getelementptr inbounds i32, i32* %818, i64 8
%820 = load i32, i32* %819
%821 = mul nsw i32 %817, %820
%822 = add nsw i32 %814, %821
%823 = load i32*, i32** %4
%824 = getelementptr inbounds i32, i32* %823, i64 17
store i32 %822, i32* %824
%825 = load i32*, i32** %5
%826 = getelementptr inbounds i32, i32* %825, i64 9
%827 = load i32, i32* %826
%828 = mul nsw i32 2, %827
%829 = load i32*, i32** %6
%830 = getelementptr inbounds i32, i32* %829, i64 9
%831 = load i32, i32* %830
%832 = mul nsw i32 %828, %831
%833 = load i32*, i32** %4
%834 = getelementptr inbounds i32, i32* %833, i64 18
store i32 %832, i32* %834
ret void
}

LLVM IR (-O2):
define void @fproduct(i32* nocapture writeonly %0, i32* nocapture %1, i32* nocapture %2) {
%4 = load i32, i32* %1
%5 = load i32, i32* %2
%6 = mul nsw i32 %5, %4
store i32 %6, i32* %0
%7 = load i32, i32* %1
%8 = getelementptr inbounds i32, i32* %2, i64 1
%9 = load i32, i32* %8
%10 = mul nsw i32 %9, %7
%11 = getelementptr inbounds i32, i32* %1, i64 1
%12 = load i32, i32* %11
%13 = load i32, i32* %2
%14 = mul nsw i32 %13, %12
%15 = add nsw i32 %14, %10
%16 = getelementptr inbounds i32, i32* %0, i64 1
store i32 %15, i32* %16
%17 = load i32, i32* %11
%18 = shl nsw i32 %17, 1
%19 = load i32, i32* %8
%20 = mul nsw i32 %18, %19
%21 = load i32, i32* %1
%22 = getelementptr inbounds i32, i32* %2, i64 2
%23 = load i32, i32* %22
%24 = mul nsw i32 %23, %21
%25 = add nsw i32 %24, %20
%26 = getelementptr inbounds i32, i32* %1, i64 2
%27 = load i32, i32* %26
%28 = load i32, i32* %2
%29 = mul nsw i32 %28, %27
%30 = add nsw i32 %25, %29
%31 = getelementptr inbounds i32, i32* %0, i64 2
store i32 %30, i32* %31
%32 = load i32, i32* %11
%33 = load i32, i32* %22
%34 = mul nsw i32 %33, %32
%35 = load i32, i32* %26
%36 = load i32, i32* %8
%37 = mul nsw i32 %36, %35
%38 = add nsw i32 %37, %34
%39 = load i32, i32* %1
%40 = getelementptr inbounds i32, i32* %2, i64 3
%41 = load i32, i32* %40
%42 = mul nsw i32 %41, %39
%43 = add nsw i32 %38, %42
%44 = getelementptr inbounds i32, i32* %1, i64 3
%45 = load i32, i32* %44
%46 = load i32, i32* %2
%47 = mul nsw i32 %46, %45
%48 = add nsw i32 %43, %47
%49 = getelementptr inbounds i32, i32* %0, i64 3
store i32 %48, i32* %49
%50 = load i32, i32* %26
%51 = load i32, i32* %22
%52 = mul nsw i32 %51, %50
%53 = load i32, i32* %11
%54 = load i32, i32* %40
%55 = mul nsw i32 %54, %53
%56 = load i32, i32* %44
%57 = load i32, i32* %8
%58 = mul nsw i32 %57, %56
%59 = add nsw i32 %58, %55
%60 = shl nsw i32 %59, 1
%61 = add nsw i32 %60, %52
%62 = load i32, i32* %1
%63 = getelementptr inbounds i32, i32* %2, i64 4
%64 = load i32, i32* %63
%65 = mul nsw i32 %64, %62
%66 = add nsw i32 %61, %65
%67 = getelementptr inbounds i32, i32* %1, i64 4
%68 = load i32, i32* %67
%69 = load i32, i32* %2
%70 = mul nsw i32 %69, %68
%71 = add nsw i32 %66, %70
%72 = getelementptr inbounds i32, i32* %0, i64 4
store i32 %71, i32* %72
%73 = load i32, i32* %26
%74 = load i32, i32* %40
%75 = mul nsw i32 %74, %73
%76 = load i32, i32* %44
%77 = load i32, i32* %22
%78 = mul nsw i32 %77, %76
%79 = add nsw i32 %78, %75
%80 = load i32, i32* %11
%81 = load i32, i32* %63
%82 = mul nsw i32 %81, %80
%83 = add nsw i32 %79, %82
%84 = load i32, i32* %67
%85 = load i32, i32* %8
%86 = mul nsw i32 %85, %84
%87 = add nsw i32 %83, %86
%88 = load i32, i32* %1
%89 = getelementptr inbounds i32, i32* %2, i64 5
%90 = load i32, i32* %89
%91 = mul nsw i32 %90, %88
%92 = add nsw i32 %87, %91
%93 = getelementptr inbounds i32, i32* %1, i64 5
%94 = load i32, i32* %93
%95 = load i32, i32* %2
%96 = mul nsw i32 %95, %94
%97 = add nsw i32 %92, %96
%98 = getelementptr inbounds i32, i32* %0, i64 5
store i32 %97, i32* %98
%99 = load i32, i32* %44
%100 = load i32, i32* %40
%101 = mul nsw i32 %100, %99
%102 = load i32, i32* %11
%103 = load i32, i32* %89
%104 = mul nsw i32 %103, %102
%105 = add nsw i32 %104, %101
%106 = load i32, i32* %93
%107 = load i32, i32* %8
%108 = mul nsw i32 %107, %106
%109 = add nsw i32 %105, %108
%110 = shl nsw i32 %109, 1
%111 = load i32, i32* %26
%112 = load i32, i32* %63
%113 = mul nsw i32 %112, %111
%114 = add nsw i32 %110, %113
%115 = load i32, i32* %67
%116 = load i32, i32* %22
%117 = mul nsw i32 %116, %115
%118 = add nsw i32 %114, %117
%119 = load i32, i32* %1
%120 = getelementptr inbounds i32, i32* %2, i64 6
%121 = load i32, i32* %120
%122 = mul nsw i32 %121, %119
%123 = add nsw i32 %118, %122
%124 = getelementptr inbounds i32, i32* %1, i64 6
%125 = load i32, i32* %124
%126 = load i32, i32* %2
%127 = mul nsw i32 %126, %125
%128 = add nsw i32 %123, %127
%129 = getelementptr inbounds i32, i32* %0, i64 6
store i32 %128, i32* %129
%130 = load i32, i32* %44
%131 = load i32, i32* %63
%132 = mul nsw i32 %131, %130
%133 = load i32, i32* %67
%134 = load i32, i32* %40
%135 = mul nsw i32 %134, %133
%136 = add nsw i32 %135, %132
%137 = load i32, i32* %26
%138 = load i32, i32* %89
%139 = mul nsw i32 %138, %137
%140 = add nsw i32 %136, %139
%141 = load i32, i32* %93
%142 = load i32, i32* %22
%143 = mul nsw i32 %142, %141
%144 = add nsw i32 %140, %143
%145 = load i32, i32* %11
%146 = load i32, i32* %120
%147 = mul nsw i32 %146, %145
%148 = add nsw i32 %144, %147
%149 = load i32, i32* %124
%150 = load i32, i32* %8
%151 = mul nsw i32 %150, %149
%152 = add nsw i32 %148, %151
%153 = load i32, i32* %1
%154 = getelementptr inbounds i32, i32* %2, i64 7
%155 = load i32, i32* %154
%156 = mul nsw i32 %155, %153
%157 = add nsw i32 %152, %156
%158 = getelementptr inbounds i32, i32* %1, i64 7
%159 = load i32, i32* %158
%160 = load i32, i32* %2
%161 = mul nsw i32 %160, %159
%162 = add nsw i32 %157, %161
%163 = getelementptr inbounds i32, i32* %0, i64 7
store i32 %162, i32* %163
%164 = load i32, i32* %67
%165 = load i32, i32* %63
%166 = mul nsw i32 %165, %164
%167 = load i32, i32* %44
%168 = load i32, i32* %89
%169 = mul nsw i32 %168, %167
%170 = load i32, i32* %93
%171 = load i32, i32* %40
%172 = mul nsw i32 %171, %170
%173 = add nsw i32 %172, %169
%174 = load i32, i32* %11
%175 = load i32, i32* %154
%176 = mul nsw i32 %175, %174
%177 = add nsw i32 %173, %176
%178 = load i32, i32* %158
%179 = load i32, i32* %8
%180 = mul nsw i32 %179, %178
%181 = add nsw i32 %177, %180
%182 = shl nsw i32 %181, 1
%183 = add nsw i32 %182, %166
%184 = load i32, i32* %26
%185 = load i32, i32* %120
%186 = mul nsw i32 %185, %184
%187 = add nsw i32 %183, %186
%188 = load i32, i32* %124
%189 = load i32, i32* %22
%190 = mul nsw i32 %189, %188
%191 = add nsw i32 %187, %190
%192 = load i32, i32* %1
%193 = getelementptr inbounds i32, i32* %2, i64 8
%194 = load i32, i32* %193
%195 = mul nsw i32 %194, %192
%196 = add nsw i32 %191, %195
%197 = getelementptr inbounds i32, i32* %1, i64 8
%198 = load i32, i32* %197
%199 = load i32, i32* %2
%200 = mul nsw i32 %199, %198
%201 = add nsw i32 %196, %200
%202 = getelementptr inbounds i32, i32* %0, i64 8
store i32 %201, i32* %202
%203 = load i32, i32* %67
%204 = load i32, i32* %89
%205 = mul nsw i32 %204, %203
%206 = load i32, i32* %93
%207 = load i32, i32* %63
%208 = mul nsw i32 %207, %206
%209 = add nsw i32 %208, %205
%210 = load i32, i32* %44
%211 = load i32, i32* %120
%212 = mul nsw i32 %211, %210
%213 = add nsw i32 %209, %212
%214 = load i32, i32* %124
%215 = load i32, i32* %40
%216 = mul nsw i32 %215, %214
%217 = add nsw i32 %213, %216
%218 = load i32, i32* %26
%219 = load i32, i32* %154
%220 = mul nsw i32 %219, %218
%221 = add nsw i32 %217, %220
%222 = load i32, i32* %158
%223 = load i32, i32* %22
%224 = mul nsw i32 %223, %222
%225 = add nsw i32 %221, %224
%226 = load i32, i32* %11
%227 = load i32, i32* %193
%228 = mul nsw i32 %227, %226
%229 = add nsw i32 %225, %228
%230 = load i32, i32* %197
%231 = load i32, i32* %8
%232 = mul nsw i32 %231, %230
%233 = add nsw i32 %229, %232
%234 = load i32, i32* %1
%235 = getelementptr inbounds i32, i32* %2, i64 9
%236 = load i32, i32* %235
%237 = mul nsw i32 %236, %234
%238 = add nsw i32 %233, %237
%239 = getelementptr inbounds i32, i32* %1, i64 9
%240 = load i32, i32* %239
%241 = load i32, i32* %2
%242 = mul nsw i32 %241, %240
%243 = add nsw i32 %238, %242
%244 = getelementptr inbounds i32, i32* %0, i64 9
store i32 %243, i32* %244
%245 = load i32, i32* %93
%246 = load i32, i32* %89
%247 = mul nsw i32 %246, %245
%248 = load i32, i32* %44
%249 = load i32, i32* %154
%250 = mul nsw i32 %249, %248
%251 = add nsw i32 %250, %247
%252 = load i32, i32* %158
%253 = load i32, i32* %40
%254 = mul nsw i32 %253, %252
%255 = add nsw i32 %251, %254
%256 = load i32, i32* %11
%257 = load i32, i32* %235
%258 = mul nsw i32 %257, %256
%259 = add nsw i32 %255, %258
%260 = load i32, i32* %239
%261 = load i32, i32* %8
%262 = mul nsw i32 %261, %260
%263 = add nsw i32 %259, %262
%264 = shl nsw i32 %263, 1
%265 = load i32, i32* %67
%266 = load i32, i32* %120
%267 = mul nsw i32 %266, %265
%268 = add nsw i32 %264, %267
%269 = load i32, i32* %124
%270 = load i32, i32* %63
%271 = mul nsw i32 %270, %269
%272 = add nsw i32 %268, %271
%273 = load i32, i32* %26
%274 = load i32, i32* %193
%275 = mul nsw i32 %274, %273
%276 = add nsw i32 %272, %275
%277 = load i32, i32* %197
%278 = load i32, i32* %22
%279 = mul nsw i32 %278, %277
%280 = add nsw i32 %276, %279
%281 = getelementptr inbounds i32, i32* %0, i64 10
store i32 %280, i32* %281
%282 = load i32, i32* %93
%283 = load i32, i32* %120
%284 = mul nsw i32 %283, %282
%285 = load i32, i32* %124
%286 = load i32, i32* %89
%287 = mul nsw i32 %286, %285
%288 = add nsw i32 %287, %284
%289 = load i32, i32* %67
%290 = load i32, i32* %154
%291 = mul nsw i32 %290, %289
%292 = add nsw i32 %288, %291
%293 = load i32, i32* %158
%294 = load i32, i32* %63
%295 = mul nsw i32 %294, %293
%296 = add nsw i32 %292, %295
%297 = load i32, i32* %44
%298 = load i32, i32* %193
%299 = mul nsw i32 %298, %297
%300 = add nsw i32 %296, %299
%301 = load i32, i32* %197
%302 = load i32, i32* %40
%303 = mul nsw i32 %302, %301
%304 = add nsw i32 %300, %303
%305 = load i32, i32* %26
%306 = load i32, i32* %235
%307 = mul nsw i32 %306, %305
%308 = add nsw i32 %304, %307
%309 = load i32, i32* %239
%310 = load i32, i32* %22
%311 = mul nsw i32 %310, %309
%312 = add nsw i32 %308, %311
%313 = getelementptr inbounds i32, i32* %0, i64 11
store i32 %312, i32* %313
%314 = load i32, i32* %124
%315 = load i32, i32* %120
%316 = mul nsw i32 %315, %314
%317 = load i32, i32* %93
%318 = load i32, i32* %154
%319 = mul nsw i32 %318, %317
%320 = load i32, i32* %158
%321 = load i32, i32* %89
%322 = mul nsw i32 %321, %320
%323 = add nsw i32 %322, %319
%324 = load i32, i32* %44
%325 = load i32, i32* %235
%326 = mul nsw i32 %325, %324
%327 = add nsw i32 %323, %326
%328 = load i32, i32* %239
%329 = load i32, i32* %40
%330 = mul nsw i32 %329, %328
%331 = add nsw i32 %327, %330
%332 = shl nsw i32 %331, 1
%333 = add nsw i32 %332, %316
%334 = load i32, i32* %67
%335 = load i32, i32* %193
%336 = mul nsw i32 %335, %334
%337 = add nsw i32 %333, %336
%338 = load i32, i32* %197
%339 = load i32, i32* %63
%340 = mul nsw i32 %339, %338
%341 = add nsw i32 %337, %340
%342 = getelementptr inbounds i32, i32* %0, i64 12
store i32 %341, i32* %342
%343 = load i32, i32* %124
%344 = load i32, i32* %154
%345 = mul nsw i32 %344, %343
%346 = load i32, i32* %158
%347 = load i32, i32* %120
%348 = mul nsw i32 %347, %346
%349 = add nsw i32 %348, %345
%350 = load i32, i32* %93
%351 = load i32, i32* %193
%352 = mul nsw i32 %351, %350
%353 = add nsw i32 %349, %352
%354 = load i32, i32* %197
%355 = load i32, i32* %89
%356 = mul nsw i32 %355, %354
%357 = add nsw i32 %353, %356
%358 = load i32, i32* %67
%359 = load i32, i32* %235
%360 = mul nsw i32 %359, %358
%361 = add nsw i32 %357, %360
%362 = load i32, i32* %239
%363 = load i32, i32* %63
%364 = mul nsw i32 %363, %362
%365 = add nsw i32 %361, %364
%366 = getelementptr inbounds i32, i32* %0, i64 13
store i32 %365, i32* %366
%367 = load i32, i32* %158
%368 = load i32, i32* %154
%369 = mul nsw i32 %368, %367
%370 = load i32, i32* %93
%371 = load i32, i32* %235
%372 = mul nsw i32 %371, %370
%373 = add nsw i32 %372, %369
%374 = load i32, i32* %239
%375 = load i32, i32* %89
%376 = mul nsw i32 %375, %374
%377 = add nsw i32 %373, %376
%378 = shl nsw i32 %377, 1
%379 = load i32, i32* %124
%380 = load i32, i32* %193
%381 = mul nsw i32 %380, %379
%382 = add nsw i32 %378, %381
%383 = load i32, i32* %197
%384 = load i32, i32* %120
%385 = mul nsw i32 %384, %383
%386 = add nsw i32 %382, %385
%387 = getelementptr inbounds i32, i32* %0, i64 14
store i32 %386, i32* %387
%388 = load i32, i32* %158
%389 = load i32, i32* %193
%390 = mul nsw i32 %389, %388
%391 = load i32, i32* %197
%392 = load i32, i32* %154
%393 = mul nsw i32 %392, %391
%394 = add nsw i32 %393, %390
%395 = load i32, i32* %124
%396 = load i32, i32* %235
%397 = mul nsw i32 %396, %395
%398 = add nsw i32 %394, %397
%399 = load i32, i32* %239
%400 = load i32, i32* %120
%401 = mul nsw i32 %400, %399
%402 = add nsw i32 %398, %401
%403 = getelementptr inbounds i32, i32* %0, i64 15
store i32 %402, i32* %403
%404 = load i32, i32* %197
%405 = load i32, i32* %193
%406 = mul nsw i32 %405, %404
%407 = load i32, i32* %158
%408 = load i32, i32* %235
%409 = mul nsw i32 %408, %407
%410 = load i32, i32* %239
%411 = load i32, i32* %154
%412 = mul nsw i32 %411, %410
%413 = add nsw i32 %412, %409
%414 = shl nsw i32 %413, 1
%415 = add nsw i32 %414, %406
%416 = getelementptr inbounds i32, i32* %0, i64 16
store i32 %415, i32* %416
%417 = load i32, i32* %197
%418 = load i32, i32* %235
%419 = mul nsw i32 %418, %417
%420 = load i32, i32* %239
%421 = load i32, i32* %193
%422 = mul nsw i32 %421, %420
%423 = add nsw i32 %422, %419
%424 = getelementptr inbounds i32, i32* %0, i64 17
store i32 %423, i32* %424
%425 = load i32, i32* %239
%426 = shl nsw i32 %425, 1
%427 = load i32, i32* %235
%428 = mul nsw i32 %426, %427
%429 = getelementptr inbounds i32, i32* %0, i64 18
store i32 %428, i32* %429
ret void
}