void sumGAMMAPROT(int tipCase, double *sumtable, double *x1, double *x2,
                  double *tipVector, char *tipX1, char *tipX2, int lower,
                  int n) {
  int i, l;
  double *left, *right, *sum;
  switch (tipCase) {
  case 0:
    for (i = lower; i < n; i++) {
      left = &(tipVector[20 * tipX1[i]]);
      right = &(tipVector[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[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):
<sumGAMMAPROT>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
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     116e <sumGAMMAPROT+0x5e>
jmp    114c <sumGAMMAPROT+0x3c>
mov    -0x54(%rbp),%eax
sub    $0x1,%eax
je     1509 <sumGAMMAPROT+0x3f9>
jmp    115d <sumGAMMAPROT+0x4d>
mov    -0x54(%rbp),%eax
sub    $0x2,%eax
je     189f <sumGAMMAPROT+0x78f>
jmp    1c30 <sumGAMMAPROT+0xb20>
mov    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x20(%rbp),%eax
jge    1504 <sumGAMMAPROT+0x3f4>
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%rcx
movslq -0x34(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
imul   $0x14,%ecx,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq -0x34(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
imul   $0x14,%ecx,%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    14f1 <sumGAMMAPROT+0x3e1>
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    11df <sumGAMMAPROT+0xcf>
jmp    14f6 <sumGAMMAPROT+0x3e6>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1174 <sumGAMMAPROT+0x64>
jmp    1c39 <sumGAMMAPROT+0xb29>
mov    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x20(%rbp),%eax
jge    189a <sumGAMMAPROT+0x78a>
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%rcx
movslq -0x34(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
imul   $0x14,%ecx,%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    1887 <sumGAMMAPROT+0x777>
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    1559 <sumGAMMAPROT+0x449>
jmp    188c <sumGAMMAPROT+0x77c>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    150f <sumGAMMAPROT+0x3ff>
jmp    1c39 <sumGAMMAPROT+0xb29>
mov    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x20(%rbp),%eax
jge    1c2b <sumGAMMAPROT+0xb1b>
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    1c18 <sumGAMMAPROT+0xb08>
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    18ce <sumGAMMAPROT+0x7be>
jmp    1c1d <sumGAMMAPROT+0xb0d>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    18a5 <sumGAMMAPROT+0x795>
jmp    1c39 <sumGAMMAPROT+0xb29>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <assert@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sumGAMMAPROT>:
mov    0x18(%rsp),%r11d
mov    0x10(%rsp),%eax
test   %edi,%edi
je     133e <sumGAMMAPROT+0x22e>
cmp    $0x1,%edi
je     151d <sumGAMMAPROT+0x40d>
cmp    $0x2,%edi
jne    1712 <sumGAMMAPROT+0x602>
cmp    %r11d,%eax
jge    1711 <sumGAMMAPROT+0x601>
cltq
movslq %r11d,%r8
mov    %rax,%rdi
shl    $0x7,%rdi
lea    (%rdi,%rdi,4),%rdi
add    %rdi,%rdx
add    $0x98,%rdx
add    %rdi,%rcx
add    $0x98,%rcx
add    %rdi,%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  -0x98(%rdx,%rdi,1),%xmm0
ff ff
mulsd  -0x98(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,(%rsi,%rdi,1)
movsd  -0x90(%rdx,%rdi,1),%xmm0
ff ff
mulsd  -0x90(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,0x8(%rsi,%rdi,1)
movsd  -0x88(%rdx,%rdi,1),%xmm0
ff ff
mulsd  -0x88(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,0x10(%rsi,%rdi,1)
movsd  -0x80(%rdx,%rdi,1),%xmm0
mulsd  -0x80(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x18(%rsi,%rdi,1)
movsd  -0x78(%rdx,%rdi,1),%xmm0
mulsd  -0x78(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x20(%rsi,%rdi,1)
movsd  -0x70(%rdx,%rdi,1),%xmm0
mulsd  -0x70(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x28(%rsi,%rdi,1)
movsd  -0x68(%rdx,%rdi,1),%xmm0
mulsd  -0x68(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x30(%rsi,%rdi,1)
movsd  -0x60(%rdx,%rdi,1),%xmm0
mulsd  -0x60(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x38(%rsi,%rdi,1)
movsd  -0x58(%rdx,%rdi,1),%xmm0
mulsd  -0x58(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x40(%rsi,%rdi,1)
movsd  -0x50(%rdx,%rdi,1),%xmm0
mulsd  -0x50(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x48(%rsi,%rdi,1)
movsd  -0x48(%rdx,%rdi,1),%xmm0
mulsd  -0x48(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x50(%rsi,%rdi,1)
movsd  -0x40(%rdx,%rdi,1),%xmm0
mulsd  -0x40(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x58(%rsi,%rdi,1)
movsd  -0x38(%rdx,%rdi,1),%xmm0
mulsd  -0x38(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x60(%rsi,%rdi,1)
movsd  -0x30(%rdx,%rdi,1),%xmm0
mulsd  -0x30(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x68(%rsi,%rdi,1)
movsd  -0x28(%rdx,%rdi,1),%xmm0
mulsd  -0x28(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x70(%rsi,%rdi,1)
movsd  -0x20(%rdx,%rdi,1),%xmm0
mulsd  -0x20(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x78(%rsi,%rdi,1)
movsd  -0x18(%rdx,%rdi,1),%xmm0
mulsd  -0x18(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x80(%rsi,%rdi,1)
movsd  -0x10(%rdx,%rdi,1),%xmm0
mulsd  -0x10(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x88(%rsi,%rdi,1)
movsd  -0x8(%rdx,%rdi,1),%xmm0
mulsd  -0x8(%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x90(%rsi,%rdi,1)
movsd  (%rdx,%rdi,1),%xmm0
mulsd  (%rcx,%rdi,1),%xmm0
movsd  %xmm0,0x98(%rsi,%rdi,1)
add    $0xa0,%rdi
cmp    $0x280,%rdi
jne    1180 <sumGAMMAPROT+0x70>
add    $0x1,%rax
add    $0x280,%rdx
add    $0x280,%rcx
add    $0x280,%rsi
cmp    %r8,%rax
jne    1170 <sumGAMMAPROT+0x60>
jmp    1711 <sumGAMMAPROT+0x601>
cmp    %r11d,%eax
jge    1711 <sumGAMMAPROT+0x601>
mov    0x8(%rsp),%r10
movslq %eax,%rcx
movslq %r11d,%r11
lea    (%rcx,%rcx,4),%rax
shl    $0x7,%rax
add    %rax,%rsi
nopl   (%rax)
movsbq (%r9,%rcx,1),%rax
lea    (%rax,%rax,4),%rdi
shl    $0x5,%rdi
add    %r8,%rdi
movsbq (%r10,%rcx,1),%rax
lea    (%rax,%rax,4),%rax
shl    $0x5,%rax
add    %r8,%rax
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rdi),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rsi,%rdx,1)
movsd  0x8(%rdi),%xmm0
mulsd  0x8(%rax),%xmm0
movsd  %xmm0,0x8(%rsi,%rdx,1)
movsd  0x10(%rdi),%xmm0
mulsd  0x10(%rax),%xmm0
movsd  %xmm0,0x10(%rsi,%rdx,1)
movsd  0x18(%rdi),%xmm0
mulsd  0x18(%rax),%xmm0
movsd  %xmm0,0x18(%rsi,%rdx,1)
movsd  0x20(%rdi),%xmm0
mulsd  0x20(%rax),%xmm0
movsd  %xmm0,0x20(%rsi,%rdx,1)
movsd  0x28(%rdi),%xmm0
mulsd  0x28(%rax),%xmm0
movsd  %xmm0,0x28(%rsi,%rdx,1)
movsd  0x30(%rdi),%xmm0
mulsd  0x30(%rax),%xmm0
movsd  %xmm0,0x30(%rsi,%rdx,1)
movsd  0x38(%rdi),%xmm0
mulsd  0x38(%rax),%xmm0
movsd  %xmm0,0x38(%rsi,%rdx,1)
movsd  0x40(%rdi),%xmm0
mulsd  0x40(%rax),%xmm0
movsd  %xmm0,0x40(%rsi,%rdx,1)
movsd  0x48(%rdi),%xmm0
mulsd  0x48(%rax),%xmm0
movsd  %xmm0,0x48(%rsi,%rdx,1)
movsd  0x50(%rdi),%xmm0
mulsd  0x50(%rax),%xmm0
movsd  %xmm0,0x50(%rsi,%rdx,1)
movsd  0x58(%rdi),%xmm0
mulsd  0x58(%rax),%xmm0
movsd  %xmm0,0x58(%rsi,%rdx,1)
movsd  0x60(%rdi),%xmm0
mulsd  0x60(%rax),%xmm0
movsd  %xmm0,0x60(%rsi,%rdx,1)
movsd  0x68(%rdi),%xmm0
mulsd  0x68(%rax),%xmm0
movsd  %xmm0,0x68(%rsi,%rdx,1)
movsd  0x70(%rdi),%xmm0
mulsd  0x70(%rax),%xmm0
movsd  %xmm0,0x70(%rsi,%rdx,1)
movsd  0x78(%rdi),%xmm0
mulsd  0x78(%rax),%xmm0
movsd  %xmm0,0x78(%rsi,%rdx,1)
movsd  0x80(%rdi),%xmm0
mulsd  0x80(%rax),%xmm0
movsd  %xmm0,0x80(%rsi,%rdx,1)
movsd  0x88(%rdi),%xmm0
mulsd  0x88(%rax),%xmm0
movsd  %xmm0,0x88(%rsi,%rdx,1)
movsd  0x90(%rdi),%xmm0
mulsd  0x90(%rax),%xmm0
movsd  %xmm0,0x90(%rsi,%rdx,1)
movsd  0x98(%rdi),%xmm0
mulsd  0x98(%rax),%xmm0
movsd  %xmm0,0x98(%rsi,%rdx,1)
add    $0xa0,%rdx
cmp    $0x280,%edx
jne    1390 <sumGAMMAPROT+0x280>
add    $0x1,%rcx
add    $0x280,%rsi
cmp    %r11,%rcx
jne    1360 <sumGAMMAPROT+0x250>
jmp    1711 <sumGAMMAPROT+0x601>
cmp    %r11d,%eax
jge    1711 <sumGAMMAPROT+0x601>
cltq
movslq %r11d,%r10
mov    %rax,%rdx
shl    $0x7,%rdx
lea    (%rdx,%rdx,4),%rdx
add    %rdx,%rcx
add    $0x98,%rcx
add    %rdx,%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsbq (%r9,%rax,1),%rdx
lea    (%rdx,%rdx,4),%rdi
shl    $0x5,%rdi
add    %r8,%rdi
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rdi),%xmm0
mulsd  -0x98(%rcx,%rdx,1),%xmm0
ff ff
movsd  %xmm0,(%rsi,%rdx,1)
movsd  0x8(%rdi),%xmm0
mulsd  -0x90(%rcx,%rdx,1),%xmm0
ff ff
movsd  %xmm0,0x8(%rsi,%rdx,1)
movsd  0x10(%rdi),%xmm0
mulsd  -0x88(%rcx,%rdx,1),%xmm0
ff ff
movsd  %xmm0,0x10(%rsi,%rdx,1)
movsd  0x18(%rdi),%xmm0
mulsd  -0x80(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x18(%rsi,%rdx,1)
movsd  0x20(%rdi),%xmm0
mulsd  -0x78(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x20(%rsi,%rdx,1)
movsd  0x28(%rdi),%xmm0
mulsd  -0x70(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x28(%rsi,%rdx,1)
movsd  0x30(%rdi),%xmm0
mulsd  -0x68(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x30(%rsi,%rdx,1)
movsd  0x38(%rdi),%xmm0
mulsd  -0x60(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x38(%rsi,%rdx,1)
movsd  0x40(%rdi),%xmm0
mulsd  -0x58(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x40(%rsi,%rdx,1)
movsd  0x48(%rdi),%xmm0
mulsd  -0x50(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x48(%rsi,%rdx,1)
movsd  0x50(%rdi),%xmm0
mulsd  -0x48(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x50(%rsi,%rdx,1)
movsd  0x58(%rdi),%xmm0
mulsd  -0x40(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x58(%rsi,%rdx,1)
movsd  0x60(%rdi),%xmm0
mulsd  -0x38(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x60(%rsi,%rdx,1)
movsd  0x68(%rdi),%xmm0
mulsd  -0x30(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x68(%rsi,%rdx,1)
movsd  0x70(%rdi),%xmm0
mulsd  -0x28(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x70(%rsi,%rdx,1)
movsd  0x78(%rdi),%xmm0
mulsd  -0x20(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x78(%rsi,%rdx,1)
movsd  0x80(%rdi),%xmm0
mulsd  -0x18(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x80(%rsi,%rdx,1)
movsd  0x88(%rdi),%xmm0
mulsd  -0x10(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x88(%rsi,%rdx,1)
movsd  0x90(%rdi),%xmm0
mulsd  -0x8(%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x90(%rsi,%rdx,1)
movsd  0x98(%rdi),%xmm0
mulsd  (%rcx,%rdx,1),%xmm0
movsd  %xmm0,0x98(%rsi,%rdx,1)
add    $0xa0,%rdx
cmp    $0x280,%rdx
jne    1570 <sumGAMMAPROT+0x460>
add    $0x1,%rax
add    $0x280,%rcx
add    $0x280,%rsi
cmp    %r10,%rax
jne    1550 <sumGAMMAPROT+0x440>
ret
xor    %edi,%edi
xor    %eax,%eax
jmp    1030 <assert@plt>

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

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