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


x86 assembly (clang, -O0):
<sumGTRCATPROT>:
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 <sumGTRCATPROT+0x5e>
jmp    114c <sumGTRCATPROT+0x3c>
mov    -0x54(%rbp),%eax
sub    $0x1,%eax
je     1428 <sumGTRCATPROT+0x318>
jmp    115d <sumGTRCATPROT+0x4d>
mov    -0x54(%rbp),%eax
sub    $0x2,%eax
je     16d7 <sumGTRCATPROT+0x5c7>
jmp    197b <sumGTRCATPROT+0x86b>
mov    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x20(%rbp),%eax
jge    1423 <sumGTRCATPROT+0x313>
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,-0x48(%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,-0x50(%rbp)
mov    -0x10(%rbp),%rax
imul   $0x14,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x48(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x48(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x48(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x48(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x20(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x48(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x48(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x48(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x48(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x40(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x48(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x48(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x48(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x58(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x48(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x60(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x48(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x48(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x70(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x48(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x78(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x48(%rbp),%rax
movsd  0x80(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x80(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x80(%rax)
mov    -0x48(%rbp),%rax
movsd  0x88(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x88(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x88(%rax)
mov    -0x48(%rbp),%rax
movsd  0x90(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x90(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x90(%rax)
mov    -0x48(%rbp),%rax
movsd  0x98(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x98(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x98(%rax)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1174 <sumGTRCATPROT+0x64>
jmp    1984 <sumGTRCATPROT+0x874>
mov    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x20(%rbp),%eax
jge    16d2 <sumGTRCATPROT+0x5c2>
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,-0x48(%rbp)
mov    -0x20(%rbp),%rax
imul   $0x14,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x10(%rbp),%rax
imul   $0x14,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x48(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x48(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x48(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x48(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x20(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x48(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x48(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x48(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x48(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x40(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x48(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x48(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x48(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x58(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x48(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x60(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x48(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x48(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x70(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x48(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x78(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x48(%rbp),%rax
movsd  0x80(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x80(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x80(%rax)
mov    -0x48(%rbp),%rax
movsd  0x88(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x88(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x88(%rax)
mov    -0x48(%rbp),%rax
movsd  0x90(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x90(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x90(%rax)
mov    -0x48(%rbp),%rax
movsd  0x98(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x98(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x98(%rax)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    142e <sumGTRCATPROT+0x31e>
jmp    1984 <sumGTRCATPROT+0x874>
mov    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x20(%rbp),%eax
jge    1976 <sumGTRCATPROT+0x866>
mov    -0x18(%rbp),%rax
imul   $0x14,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x20(%rbp),%rax
imul   $0x14,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x10(%rbp),%rax
imul   $0x14,-0x34(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x48(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x48(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x48(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x48(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x20(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x48(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x48(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x48(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x48(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x40(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x48(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x48(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x48(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x58(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x48(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x60(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x48(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x48(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x70(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x48(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x78(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x48(%rbp),%rax
movsd  0x80(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x80(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x80(%rax)
mov    -0x48(%rbp),%rax
movsd  0x88(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x88(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x88(%rax)
mov    -0x48(%rbp),%rax
movsd  0x90(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x90(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x90(%rax)
mov    -0x48(%rbp),%rax
movsd  0x98(%rax),%xmm0
mov    -0x50(%rbp),%rax
mulsd  0x98(%rax),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x98(%rax)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    16dd <sumGTRCATPROT+0x5cd>
jmp    1984 <sumGTRCATPROT+0x874>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <assert@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sumGTRCATPROT>:
mov    0x18(%rsp),%r11d
mov    0x10(%rsp),%eax
test   %edi,%edi
je     12f6 <sumGTRCATPROT+0x1e6>
cmp    $0x1,%edi
je     14ed <sumGTRCATPROT+0x3dd>
cmp    $0x2,%edi
jne    16c9 <sumGTRCATPROT+0x5b9>
cmp    %r11d,%eax
jge    16c8 <sumGTRCATPROT+0x5b8>
movslq %eax,%r8
movslq %r11d,%rax
lea    (%r8,%r8,4),%rdi
shl    $0x5,%rdi
add    $0x98,%rdi
sub    %r8,%rax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  -0x98(%rdx,%rdi,1),%xmm0
ff ff
mulsd  -0x98(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,-0x98(%rsi,%rdi,1)
ff ff
movsd  -0x90(%rdx,%rdi,1),%xmm0
ff ff
mulsd  -0x90(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,-0x90(%rsi,%rdi,1)
ff ff
movsd  -0x88(%rdx,%rdi,1),%xmm0
ff ff
mulsd  -0x88(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,-0x88(%rsi,%rdi,1)
ff ff
movsd  -0x80(%rdx,%rdi,1),%xmm0
mulsd  -0x80(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x80(%rsi,%rdi,1)
movsd  -0x78(%rdx,%rdi,1),%xmm0
mulsd  -0x78(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x78(%rsi,%rdi,1)
movsd  -0x70(%rdx,%rdi,1),%xmm0
mulsd  -0x70(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x70(%rsi,%rdi,1)
movsd  -0x68(%rdx,%rdi,1),%xmm0
mulsd  -0x68(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x68(%rsi,%rdi,1)
movsd  -0x60(%rdx,%rdi,1),%xmm0
mulsd  -0x60(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x60(%rsi,%rdi,1)
movsd  -0x58(%rdx,%rdi,1),%xmm0
mulsd  -0x58(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x58(%rsi,%rdi,1)
movsd  -0x50(%rdx,%rdi,1),%xmm0
mulsd  -0x50(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x50(%rsi,%rdi,1)
movsd  -0x48(%rdx,%rdi,1),%xmm0
mulsd  -0x48(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x48(%rsi,%rdi,1)
movsd  -0x40(%rdx,%rdi,1),%xmm0
mulsd  -0x40(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x40(%rsi,%rdi,1)
movsd  -0x38(%rdx,%rdi,1),%xmm0
mulsd  -0x38(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x38(%rsi,%rdi,1)
movsd  -0x30(%rdx,%rdi,1),%xmm0
mulsd  -0x30(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x30(%rsi,%rdi,1)
movsd  -0x28(%rdx,%rdi,1),%xmm0
mulsd  -0x28(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x28(%rsi,%rdi,1)
movsd  -0x20(%rdx,%rdi,1),%xmm0
mulsd  -0x20(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x20(%rsi,%rdi,1)
movsd  -0x18(%rdx,%rdi,1),%xmm0
mulsd  -0x18(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x18(%rsi,%rdi,1)
movsd  -0x10(%rdx,%rdi,1),%xmm0
mulsd  -0x10(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x10(%rsi,%rdi,1)
movsd  -0x8(%rdx,%rdi,1),%xmm0
mulsd  -0x8(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x8(%rsi,%rdi,1)
movsd  (%rdx,%rdi,1),%xmm0
mulsd  (%rcx,%rdi,1),%xmm0
movsd  %xmm0,(%rsi,%rdi,1)
add    $0xa0,%rdi
add    $0xffffffffffffffff,%rax
jne    1160 <sumGTRCATPROT+0x50>
jmp    16c8 <sumGTRCATPROT+0x5b8>
cmp    %r11d,%eax
jge    16c8 <sumGTRCATPROT+0x5b8>
mov    0x8(%rsp),%r10
movslq %eax,%rcx
movslq %r11d,%rdx
lea    (%rcx,%rcx,4),%rax
shl    $0x5,%rax
add    %rax,%rsi
add    $0x98,%rsi
nopl   0x0(%rax)
movsbq (%r9,%rcx,1),%rax
lea    (%rax,%rax,4),%rdi
shl    $0x5,%rdi
movsbq (%r10,%rcx,1),%rax
lea    (%rax,%rax,4),%rax
shl    $0x5,%rax
movsd  (%r8,%rdi,1),%xmm0
mulsd  (%r8,%rax,1),%xmm0
movsd  %xmm0,-0x98(%rsi)
ff
movsd  0x8(%r8,%rdi,1),%xmm0
mulsd  0x8(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x90(%rsi)
ff
movsd  0x10(%r8,%rdi,1),%xmm0
mulsd  0x10(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x88(%rsi)
ff
movsd  0x18(%r8,%rdi,1),%xmm0
mulsd  0x18(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x80(%rsi)
movsd  0x20(%r8,%rdi,1),%xmm0
mulsd  0x20(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x78(%rsi)
movsd  0x28(%r8,%rdi,1),%xmm0
mulsd  0x28(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x70(%rsi)
movsd  0x30(%r8,%rdi,1),%xmm0
mulsd  0x30(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x68(%rsi)
movsd  0x38(%r8,%rdi,1),%xmm0
mulsd  0x38(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x60(%rsi)
movsd  0x40(%r8,%rdi,1),%xmm0
mulsd  0x40(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x58(%rsi)
movsd  0x48(%r8,%rdi,1),%xmm0
mulsd  0x48(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x50(%rsi)
movsd  0x50(%r8,%rdi,1),%xmm0
mulsd  0x50(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x48(%rsi)
movsd  0x58(%r8,%rdi,1),%xmm0
mulsd  0x58(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x40(%rsi)
movsd  0x60(%r8,%rdi,1),%xmm0
mulsd  0x60(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x38(%rsi)
movsd  0x68(%r8,%rdi,1),%xmm0
mulsd  0x68(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x30(%rsi)
movsd  0x70(%r8,%rdi,1),%xmm0
mulsd  0x70(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x28(%rsi)
movsd  0x78(%r8,%rdi,1),%xmm0
mulsd  0x78(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x20(%rsi)
movsd  0x80(%r8,%rdi,1),%xmm0
mulsd  0x80(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x18(%rsi)
movsd  0x88(%r8,%rdi,1),%xmm0
mulsd  0x88(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x10(%rsi)
movsd  0x90(%r8,%rdi,1),%xmm0
mulsd  0x90(%r8,%rax,1),%xmm0
movsd  %xmm0,-0x8(%rsi)
movsd  0x98(%r8,%rdi,1),%xmm0
mulsd  0x98(%r8,%rax,1),%xmm0
movsd  %xmm0,(%rsi)
add    $0x1,%rcx
add    $0xa0,%rsi
cmp    %rcx,%rdx
jne    1320 <sumGTRCATPROT+0x210>
jmp    16c8 <sumGTRCATPROT+0x5b8>
cmp    %r11d,%eax
jge    16c8 <sumGTRCATPROT+0x5b8>
cltq
movslq %r11d,%r10
lea    (%rax,%rax,4),%rdi
shl    $0x5,%rdi
add    $0x98,%rdi
nopw   0x0(%rax,%rax,1)
movsbq (%r9,%rax,1),%rdx
lea    (%rdx,%rdx,4),%rdx
shl    $0x5,%rdx
movsd  (%r8,%rdx,1),%xmm0
mulsd  -0x98(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,-0x98(%rsi,%rdi,1)
ff ff
movsd  0x8(%r8,%rdx,1),%xmm0
mulsd  -0x90(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,-0x90(%rsi,%rdi,1)
ff ff
movsd  0x10(%r8,%rdx,1),%xmm0
mulsd  -0x88(%rcx,%rdi,1),%xmm0
ff ff
movsd  %xmm0,-0x88(%rsi,%rdi,1)
ff ff
movsd  0x18(%r8,%rdx,1),%xmm0
mulsd  -0x80(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x80(%rsi,%rdi,1)
movsd  0x20(%r8,%rdx,1),%xmm0
mulsd  -0x78(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x78(%rsi,%rdi,1)
movsd  0x28(%r8,%rdx,1),%xmm0
mulsd  -0x70(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x70(%rsi,%rdi,1)
movsd  0x30(%r8,%rdx,1),%xmm0
mulsd  -0x68(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x68(%rsi,%rdi,1)
movsd  0x38(%r8,%rdx,1),%xmm0
mulsd  -0x60(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x60(%rsi,%rdi,1)
movsd  0x40(%r8,%rdx,1),%xmm0
mulsd  -0x58(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x58(%rsi,%rdi,1)
movsd  0x48(%r8,%rdx,1),%xmm0
mulsd  -0x50(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x50(%rsi,%rdi,1)
movsd  0x50(%r8,%rdx,1),%xmm0
mulsd  -0x48(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x48(%rsi,%rdi,1)
movsd  0x58(%r8,%rdx,1),%xmm0
mulsd  -0x40(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x40(%rsi,%rdi,1)
movsd  0x60(%r8,%rdx,1),%xmm0
mulsd  -0x38(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x38(%rsi,%rdi,1)
movsd  0x68(%r8,%rdx,1),%xmm0
mulsd  -0x30(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x30(%rsi,%rdi,1)
movsd  0x70(%r8,%rdx,1),%xmm0
mulsd  -0x28(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x28(%rsi,%rdi,1)
movsd  0x78(%r8,%rdx,1),%xmm0
mulsd  -0x20(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x20(%rsi,%rdi,1)
movsd  0x80(%r8,%rdx,1),%xmm0
mulsd  -0x18(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x18(%rsi,%rdi,1)
movsd  0x88(%r8,%rdx,1),%xmm0
mulsd  -0x10(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x10(%rsi,%rdi,1)
movsd  0x90(%r8,%rdx,1),%xmm0
mulsd  -0x8(%rcx,%rdi,1),%xmm0
movsd  %xmm0,-0x8(%rsi,%rdi,1)
movsd  0x98(%r8,%rdx,1),%xmm0
mulsd  (%rcx,%rdi,1),%xmm0
movsd  %xmm0,(%rsi,%rdi,1)
add    $0x1,%rax
add    $0xa0,%rdi
cmp    %rax,%r10
jne    1510 <sumGTRCATPROT+0x400>
ret
xor    %edi,%edi
xor    %eax,%eax
jmp    1030 <assert@plt>

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

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