void sumGAMMAPROTMULT(int tipCase, double *sumtable, double *x1, double *x2,
                      double *tipVector, char *tipX1, char *tipX2,
                      int *modelptr, int lower, int n) {
  int i, l;
  double *left, *right, *sum;
  switch (tipCase) {
  case 0:
    for (i = lower; i < n; i++) {
      left = &(tipVector[460 * modelptr[i] + 20 * tipX1[i]]);
      right = &(tipVector[460 * modelptr[i] + 20 * tipX2[i]]);
      sum = &(sumtable[i * 80]);
      for (l = 0; l < 4; l++) {
        *sum++ = left[0] * right[0];
        *sum++ = left[1] * right[1];
        *sum++ = left[2] * right[2];
        *sum++ = left[3] * right[3];
        *sum++ = left[4] * right[4];
        *sum++ = left[5] * right[5];
        *sum++ = left[6] * right[6];
        *sum++ = left[7] * right[7];
        *sum++ = left[8] * right[8];
        *sum++ = left[9] * right[9];
        *sum++ = left[10] * right[10];
        *sum++ = left[11] * right[11];
        *sum++ = left[12] * right[12];
        *sum++ = left[13] * right[13];
        *sum++ = left[14] * right[14];
        *sum++ = left[15] * right[15];
        *sum++ = left[16] * right[16];
        *sum++ = left[17] * right[17];
        *sum++ = left[18] * right[18];
        *sum++ = left[19] * right[19];
      }
    }
    break;
  case 1:
    for (i = lower; i < n; i++) {
      left = &(tipVector[460 * modelptr[i] + 20 * tipX1[i]]);
      sum = &(sumtable[i * 80]);
      for (l = 0; l < 4; l++) {
        right = &(x2[80 * i + l * 20]);
        *sum++ = left[0] * right[0];
        *sum++ = left[1] * right[1];
        *sum++ = left[2] * right[2];
        *sum++ = left[3] * right[3];
        *sum++ = left[4] * right[4];
        *sum++ = left[5] * right[5];
        *sum++ = left[6] * right[6];
        *sum++ = left[7] * right[7];
        *sum++ = left[8] * right[8];
        *sum++ = left[9] * right[9];
        *sum++ = left[10] * right[10];
        *sum++ = left[11] * right[11];
        *sum++ = left[12] * right[12];
        *sum++ = left[13] * right[13];
        *sum++ = left[14] * right[14];
        *sum++ = left[15] * right[15];
        *sum++ = left[16] * right[16];
        *sum++ = left[17] * right[17];
        *sum++ = left[18] * right[18];
        *sum++ = left[19] * right[19];
      }
    }
    break;
  case 2:
    for (i = lower; i < n; i++) {
      sum = &sumtable[i * 80];
      for (l = 0; l < 4; l++) {
        left = &(x1[80 * i + l * 20]);
        right = &(x2[80 * i + l * 20]);
        *sum++ = left[0] * right[0];
        *sum++ = left[1] * right[1];
        *sum++ = left[2] * right[2];
        *sum++ = left[3] * right[3];
        *sum++ = left[4] * right[4];
        *sum++ = left[5] * right[5];
        *sum++ = left[6] * right[6];
        *sum++ = left[7] * right[7];
        *sum++ = left[8] * right[8];
        *sum++ = left[9] * right[9];
        *sum++ = left[10] * right[10];
        *sum++ = left[11] * right[11];
        *sum++ = left[12] * right[12];
        *sum++ = left[13] * right[13];
        *sum++ = left[14] * right[14];
        *sum++ = left[15] * right[15];
        *sum++ = left[16] * right[16];
        *sum++ = left[17] * right[17];
        *sum++ = left[18] * right[18];
        *sum++ = left[19] * right[19];
      }
    }
    break;
  default:
    assert(0);
  }
}


x86 assembly (clang, -O0):
<sumGAMMAPROTMULT>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x4(%rbp),%eax
mov    %eax,-0x54(%rbp)
test   %eax,%eax
je     1172 <sumGAMMAPROTMULT+0x62>
jmp    1150 <sumGAMMAPROTMULT+0x40>
mov    -0x54(%rbp),%eax
sub    $0x1,%eax
je     152f <sumGAMMAPROTMULT+0x41f>
jmp    1161 <sumGAMMAPROTMULT+0x51>
mov    -0x54(%rbp),%eax
sub    $0x2,%eax
je     18d6 <sumGAMMAPROTMULT+0x7c6>
jmp    1c67 <sumGAMMAPROTMULT+0xb57>
mov    0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x28(%rbp),%eax
jge    152a <sumGAMMAPROTMULT+0x41a>
mov    -0x28(%rbp),%rax
mov    0x18(%rbp),%rcx
movslq -0x34(%rbp),%rdx
imul   $0x1cc,(%rcx,%rdx,4),%ecx
mov    -0x30(%rbp),%rdx
movslq -0x34(%rbp),%rsi
movsbl (%rdx,%rsi,1),%edx
imul   $0x14,%edx,%edx
add    %edx,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    0x18(%rbp),%rcx
movslq -0x34(%rbp),%rdx
imul   $0x1cc,(%rcx,%rdx,4),%ecx
mov    0x10(%rbp),%rdx
movslq -0x34(%rbp),%rsi
movsbl (%rdx,%rsi,1),%edx
imul   $0x14,%edx,%edx
add    %edx,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x10(%rbp),%rax
imul   $0x50,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movl   $0x0,-0x38(%rbp)
cmpl   $0x4,-0x38(%rbp)
jge    1517 <sumGAMMAPROTMULT+0x407>
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x20(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x40(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x58(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x60(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x70(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x78(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x80(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x80(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x88(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x88(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x90(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x90(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x98(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x98(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1205 <sumGAMMAPROTMULT+0xf5>
jmp    151c <sumGAMMAPROTMULT+0x40c>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1178 <sumGAMMAPROTMULT+0x68>
jmp    1c70 <sumGAMMAPROTMULT+0xb60>
mov    0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x28(%rbp),%eax
jge    18d1 <sumGAMMAPROTMULT+0x7c1>
mov    -0x28(%rbp),%rax
mov    0x18(%rbp),%rcx
movslq -0x34(%rbp),%rdx
imul   $0x1cc,(%rcx,%rdx,4),%ecx
mov    -0x30(%rbp),%rdx
movslq -0x34(%rbp),%rsi
movsbl (%rdx,%rsi,1),%edx
imul   $0x14,%edx,%edx
add    %edx,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
imul   $0x50,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movl   $0x0,-0x38(%rbp)
cmpl   $0x4,-0x38(%rbp)
jge    18be <sumGAMMAPROTMULT+0x7ae>
mov    -0x20(%rbp),%rax
imul   $0x50,-0x34(%rbp),%ecx
imul   $0x14,-0x38(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x20(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x40(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x58(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x60(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x70(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x78(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x80(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x80(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x88(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x88(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x90(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x90(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x98(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x98(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1590 <sumGAMMAPROTMULT+0x480>
jmp    18c3 <sumGAMMAPROTMULT+0x7b3>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1535 <sumGAMMAPROTMULT+0x425>
jmp    1c70 <sumGAMMAPROTMULT+0xb60>
mov    0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x28(%rbp),%eax
jge    1c62 <sumGAMMAPROTMULT+0xb52>
mov    -0x10(%rbp),%rax
imul   $0x50,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movl   $0x0,-0x38(%rbp)
cmpl   $0x4,-0x38(%rbp)
jge    1c4f <sumGAMMAPROTMULT+0xb3f>
mov    -0x18(%rbp),%rax
imul   $0x50,-0x34(%rbp),%ecx
imul   $0x14,-0x38(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x20(%rbp),%rax
imul   $0x50,-0x34(%rbp),%ecx
imul   $0x14,-0x38(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x20(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x40(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x58(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x60(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x70(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x78(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x80(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x80(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x88(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x88(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x90(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x90(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  0x98(%rax),%xmm0
mov    -0x48(%rbp),%rax
mulsd  0x98(%rax),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1905 <sumGAMMAPROTMULT+0x7f5>
jmp    1c54 <sumGAMMAPROTMULT+0xb44>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    18dc <sumGAMMAPROTMULT+0x7cc>
jmp    1c70 <sumGAMMAPROTMULT+0xb60>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <assert@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sumGAMMAPROTMULT>:
push   %r14
push   %rbx
mov    0x30(%rsp),%ebx
mov    0x28(%rsp),%eax
mov    0x20(%rsp),%r14
test   %edi,%edi
je     133e <sumGAMMAPROTMULT+0x22e>
cmp    $0x1,%edi
je     152d <sumGAMMAPROTMULT+0x41d>
cmp    $0x2,%edi
jne    1725 <sumGAMMAPROTMULT+0x615>
cmp    %ebx,%eax
jge    1721 <sumGAMMAPROTMULT+0x611>
movslq %eax,%rdi
movslq %ebx,%r8
mov    %rdi,%rax
shl    $0x7,%rax
lea    (%rax,%rax,4),%rax
add    %rax,%rdx
add    $0x98,%rdx
add    %rax,%rcx
add    $0x98,%rcx
add    %rax,%rsi
nopw   0x0(%rax,%rax,1)
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  -0x98(%rdx,%rbx,1),%xmm0
ff ff
mulsd  -0x98(%rcx,%rbx,1),%xmm0
ff ff
movsd  %xmm0,(%rsi,%rbx,1)
movsd  -0x90(%rdx,%rbx,1),%xmm0
ff ff
mulsd  -0x90(%rcx,%rbx,1),%xmm0
ff ff
movsd  %xmm0,0x8(%rsi,%rbx,1)
movsd  -0x88(%rdx,%rbx,1),%xmm0
ff ff
mulsd  -0x88(%rcx,%rbx,1),%xmm0
ff ff
movsd  %xmm0,0x10(%rsi,%rbx,1)
movsd  -0x80(%rdx,%rbx,1),%xmm0
mulsd  -0x80(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x18(%rsi,%rbx,1)
movsd  -0x78(%rdx,%rbx,1),%xmm0
mulsd  -0x78(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x20(%rsi,%rbx,1)
movsd  -0x70(%rdx,%rbx,1),%xmm0
mulsd  -0x70(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x28(%rsi,%rbx,1)
movsd  -0x68(%rdx,%rbx,1),%xmm0
mulsd  -0x68(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x30(%rsi,%rbx,1)
movsd  -0x60(%rdx,%rbx,1),%xmm0
mulsd  -0x60(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x38(%rsi,%rbx,1)
movsd  -0x58(%rdx,%rbx,1),%xmm0
mulsd  -0x58(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x40(%rsi,%rbx,1)
movsd  -0x50(%rdx,%rbx,1),%xmm0
mulsd  -0x50(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x48(%rsi,%rbx,1)
movsd  -0x48(%rdx,%rbx,1),%xmm0
mulsd  -0x48(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x50(%rsi,%rbx,1)
movsd  -0x40(%rdx,%rbx,1),%xmm0
mulsd  -0x40(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x58(%rsi,%rbx,1)
movsd  -0x38(%rdx,%rbx,1),%xmm0
mulsd  -0x38(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x60(%rsi,%rbx,1)
movsd  -0x30(%rdx,%rbx,1),%xmm0
mulsd  -0x30(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x68(%rsi,%rbx,1)
movsd  -0x28(%rdx,%rbx,1),%xmm0
mulsd  -0x28(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x70(%rsi,%rbx,1)
movsd  -0x20(%rdx,%rbx,1),%xmm0
mulsd  -0x20(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x78(%rsi,%rbx,1)
movsd  -0x18(%rdx,%rbx,1),%xmm0
mulsd  -0x18(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x80(%rsi,%rbx,1)
movsd  -0x10(%rdx,%rbx,1),%xmm0
mulsd  -0x10(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x88(%rsi,%rbx,1)
movsd  -0x8(%rdx,%rbx,1),%xmm0
mulsd  -0x8(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x90(%rsi,%rbx,1)
movsd  (%rdx,%rbx,1),%xmm0
mulsd  (%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x98(%rsi,%rbx,1)
add    $0xa0,%rbx
cmp    $0x280,%rbx
jne    1180 <sumGAMMAPROTMULT+0x70>
add    $0x1,%rdi
add    $0x280,%rdx
add    $0x280,%rcx
add    $0x280,%rsi
cmp    %r8,%rdi
jne    1170 <sumGAMMAPROTMULT+0x60>
jmp    1721 <sumGAMMAPROTMULT+0x611>
cmp    %ebx,%eax
jge    1721 <sumGAMMAPROTMULT+0x611>
mov    0x18(%rsp),%r10
movslq %eax,%rdx
movslq %ebx,%r11
lea    (%rdx,%rdx,4),%rax
shl    $0x7,%rax
add    %rax,%rsi
nopl   0x0(%rax)
movslq (%r14,%rdx,4),%rax
imul   $0x1cc,%rax,%rax
movsbq (%r9,%rdx,1),%rcx
lea    (%rcx,%rcx,4),%rcx
lea    (%rax,%rcx,4),%rcx
lea    (%r8,%rcx,8),%rcx
movsbq (%r10,%rdx,1),%rdi
lea    (%rdi,%rdi,4),%rdi
cltq
lea    (%rax,%rdi,4),%rax
lea    (%r8,%rax,8),%rdi
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  (%rcx),%xmm0
mulsd  (%rdi),%xmm0
movsd  %xmm0,(%rsi,%rbx,1)
movsd  0x8(%rcx),%xmm0
mulsd  0x8(%rdi),%xmm0
movsd  %xmm0,0x8(%rsi,%rbx,1)
movsd  0x10(%rcx),%xmm0
mulsd  0x10(%rdi),%xmm0
movsd  %xmm0,0x10(%rsi,%rbx,1)
movsd  0x18(%rcx),%xmm0
mulsd  0x18(%rdi),%xmm0
movsd  %xmm0,0x18(%rsi,%rbx,1)
movsd  0x20(%rcx),%xmm0
mulsd  0x20(%rdi),%xmm0
movsd  %xmm0,0x20(%rsi,%rbx,1)
movsd  0x28(%rcx),%xmm0
mulsd  0x28(%rdi),%xmm0
movsd  %xmm0,0x28(%rsi,%rbx,1)
movsd  0x30(%rcx),%xmm0
mulsd  0x30(%rdi),%xmm0
movsd  %xmm0,0x30(%rsi,%rbx,1)
movsd  0x38(%rcx),%xmm0
mulsd  0x38(%rdi),%xmm0
movsd  %xmm0,0x38(%rsi,%rbx,1)
movsd  0x40(%rcx),%xmm0
mulsd  0x40(%rdi),%xmm0
movsd  %xmm0,0x40(%rsi,%rbx,1)
movsd  0x48(%rcx),%xmm0
mulsd  0x48(%rdi),%xmm0
movsd  %xmm0,0x48(%rsi,%rbx,1)
movsd  0x50(%rcx),%xmm0
mulsd  0x50(%rdi),%xmm0
movsd  %xmm0,0x50(%rsi,%rbx,1)
movsd  0x58(%rcx),%xmm0
mulsd  0x58(%rdi),%xmm0
movsd  %xmm0,0x58(%rsi,%rbx,1)
movsd  0x60(%rcx),%xmm0
mulsd  0x60(%rdi),%xmm0
movsd  %xmm0,0x60(%rsi,%rbx,1)
movsd  0x68(%rcx),%xmm0
mulsd  0x68(%rdi),%xmm0
movsd  %xmm0,0x68(%rsi,%rbx,1)
movsd  0x70(%rcx),%xmm0
mulsd  0x70(%rdi),%xmm0
movsd  %xmm0,0x70(%rsi,%rbx,1)
movsd  0x78(%rcx),%xmm0
mulsd  0x78(%rdi),%xmm0
movsd  %xmm0,0x78(%rsi,%rbx,1)
movsd  0x80(%rcx),%xmm0
mulsd  0x80(%rdi),%xmm0
movsd  %xmm0,0x80(%rsi,%rbx,1)
movsd  0x88(%rcx),%xmm0
mulsd  0x88(%rdi),%xmm0
movsd  %xmm0,0x88(%rsi,%rbx,1)
movsd  0x90(%rcx),%xmm0
mulsd  0x90(%rdi),%xmm0
movsd  %xmm0,0x90(%rsi,%rbx,1)
movsd  0x98(%rcx),%xmm0
mulsd  0x98(%rdi),%xmm0
movsd  %xmm0,0x98(%rsi,%rbx,1)
add    $0xa0,%rbx
cmp    $0x280,%ebx
jne    13a0 <sumGAMMAPROTMULT+0x290>
add    $0x1,%rdx
add    $0x280,%rsi
cmp    %r11,%rdx
jne    1360 <sumGAMMAPROTMULT+0x250>
jmp    1721 <sumGAMMAPROTMULT+0x611>
cmp    %ebx,%eax
jge    1721 <sumGAMMAPROTMULT+0x611>
movslq %eax,%rdx
movslq %ebx,%r10
mov    %rdx,%rax
shl    $0x7,%rax
lea    (%rax,%rax,4),%rax
add    %rax,%rcx
add    $0x98,%rcx
add    %rax,%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq (%r14,%rdx,4),%rax
imul   $0x1cc,%rax,%rax
movsbq (%r9,%rdx,1),%rdi
lea    (%rdi,%rdi,4),%rdi
lea    (%rax,%rdi,4),%rax
lea    (%r8,%rax,8),%rdi
xor    %ebx,%ebx
xchg   %ax,%ax
movsd  (%rdi),%xmm0
mulsd  -0x98(%rcx,%rbx,1),%xmm0
ff ff
movsd  %xmm0,(%rsi,%rbx,1)
movsd  0x8(%rdi),%xmm0
mulsd  -0x90(%rcx,%rbx,1),%xmm0
ff ff
movsd  %xmm0,0x8(%rsi,%rbx,1)
movsd  0x10(%rdi),%xmm0
mulsd  -0x88(%rcx,%rbx,1),%xmm0
ff ff
movsd  %xmm0,0x10(%rsi,%rbx,1)
movsd  0x18(%rdi),%xmm0
mulsd  -0x80(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x18(%rsi,%rbx,1)
movsd  0x20(%rdi),%xmm0
mulsd  -0x78(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x20(%rsi,%rbx,1)
movsd  0x28(%rdi),%xmm0
mulsd  -0x70(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x28(%rsi,%rbx,1)
movsd  0x30(%rdi),%xmm0
mulsd  -0x68(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x30(%rsi,%rbx,1)
movsd  0x38(%rdi),%xmm0
mulsd  -0x60(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x38(%rsi,%rbx,1)
movsd  0x40(%rdi),%xmm0
mulsd  -0x58(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x40(%rsi,%rbx,1)
movsd  0x48(%rdi),%xmm0
mulsd  -0x50(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x48(%rsi,%rbx,1)
movsd  0x50(%rdi),%xmm0
mulsd  -0x48(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x50(%rsi,%rbx,1)
movsd  0x58(%rdi),%xmm0
mulsd  -0x40(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x58(%rsi,%rbx,1)
movsd  0x60(%rdi),%xmm0
mulsd  -0x38(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x60(%rsi,%rbx,1)
movsd  0x68(%rdi),%xmm0
mulsd  -0x30(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x68(%rsi,%rbx,1)
movsd  0x70(%rdi),%xmm0
mulsd  -0x28(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x70(%rsi,%rbx,1)
movsd  0x78(%rdi),%xmm0
mulsd  -0x20(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x78(%rsi,%rbx,1)
movsd  0x80(%rdi),%xmm0
mulsd  -0x18(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x80(%rsi,%rbx,1)
movsd  0x88(%rdi),%xmm0
mulsd  -0x10(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x88(%rsi,%rbx,1)
movsd  0x90(%rdi),%xmm0
mulsd  -0x8(%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x90(%rsi,%rbx,1)
movsd  0x98(%rdi),%xmm0
mulsd  (%rcx,%rbx,1),%xmm0
movsd  %xmm0,0x98(%rsi,%rbx,1)
add    $0xa0,%rbx
cmp    $0x280,%rbx
jne    1580 <sumGAMMAPROTMULT+0x470>
add    $0x1,%rdx
add    $0x280,%rcx
add    $0x280,%rsi
cmp    %r10,%rdx
jne    1560 <sumGAMMAPROTMULT+0x450>
pop    %rbx
pop    %r14
ret
xor    %edi,%edi
xor    %eax,%eax
pop    %rbx
pop    %r14
jmp    1030 <assert@plt>

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

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