void doStreaming(double *collideField, double *streamField, int *flagField,
                 int xlength) {
  unsigned long x, y, z;
  unsigned long idx0, idx1, idx2, idx3, idx4, idx5, idx6, idx7, idx8, idx10,
      idx11, idx12, idx13, idx14, idx15, idx16, idx17, idx18;
  for (z = 0; z <= (xlength + 1); z++) {
    for (y = 0; y <= (xlength + 1); y++) {
      for (x = 0; x <= (xlength + 1); x++) {
        const unsigned long idx =
            z * (xlength + 2) * (xlength + 2) + y * (xlength + 2) + x;
        if (flagField[idx] == 0) {
          idx0 = (z - 1) * (xlength + 2) * (xlength + 2) +
                 (y - 1) * (xlength + 2) + x;
          idx1 = (z - 1) * (xlength + 2) * (xlength + 2) + y * (xlength + 2) +
                 x - 1;
          idx2 =
              (z - 1) * (xlength + 2) * (xlength + 2) + y * (xlength + 2) + x;
          idx3 = (z - 1) * (xlength + 2) * (xlength + 2) + y * (xlength + 2) +
                 x + 1;
          idx4 = (z - 1) * (xlength + 2) * (xlength + 2) +
                 (y + 1) * (xlength + 2) + x;
          idx5 = z * (xlength + 2) * (xlength + 2) + (y - 1) * (xlength + 2) +
                 x - 1;
          idx6 =
              z * (xlength + 2) * (xlength + 2) + (y - 1) * (xlength + 2) + x;
          idx7 = z * (xlength + 2) * (xlength + 2) + (y - 1) * (xlength + 2) +
                 x + 1;
          idx8 = z * (xlength + 2) * (xlength + 2) + y * (xlength + 2) + x - 1;
          idx10 = z * (xlength + 2) * (xlength + 2) + y * (xlength + 2) + x + 1;
          idx11 = z * (xlength + 2) * (xlength + 2) + (y + 1) * (xlength + 2) +
                  x - 1;
          idx12 =
              z * (xlength + 2) * (xlength + 2) + (y + 1) * (xlength + 2) + x;
          idx13 = z * (xlength + 2) * (xlength + 2) + (y + 1) * (xlength + 2) +
                  x + 1;
          idx14 = (z + 1) * (xlength + 2) * (xlength + 2) +
                  (y - 1) * (xlength + 2) + x;
          idx15 = (z + 1) * (xlength + 2) * (xlength + 2) + y * (xlength + 2) +
                  x - 1;
          idx16 =
              (z + 1) * (xlength + 2) * (xlength + 2) + y * (xlength + 2) + x;
          idx17 = (z + 1) * (xlength + 2) * (xlength + 2) + y * (xlength + 2) +
                  x + 1;
          idx18 = (z + 1) * (xlength + 2) * (xlength + 2) +
                  (y + 1) * (xlength + 2) + x;
          streamField[19 * idx] = collideField[19 * idx0 + 18];
          streamField[19 * idx + 1] = collideField[19 * idx1 + 17];
          streamField[19 * idx + 2] = collideField[19 * idx2 + 16];
          streamField[19 * idx + 3] = collideField[19 * idx3 + 15];
          streamField[19 * idx + 4] = collideField[19 * idx4 + 14];
          streamField[19 * idx + 5] = collideField[19 * idx5 + 13];
          streamField[19 * idx + 6] = collideField[19 * idx6 + 12];
          streamField[19 * idx + 7] = collideField[19 * idx7 + 11];
          streamField[19 * idx + 8] = collideField[19 * idx8 + 10];
          streamField[19 * idx + 9] = collideField[19 * idx + 9];
          streamField[19 * idx + 10] = collideField[19 * idx10 + 8];
          streamField[19 * idx + 11] = collideField[19 * idx11 + 7];
          streamField[19 * idx + 12] = collideField[19 * idx12 + 6];
          streamField[19 * idx + 13] = collideField[19 * idx13 + 5];
          streamField[19 * idx + 14] = collideField[19 * idx14 + 4];
          streamField[19 * idx + 15] = collideField[19 * idx15 + 3];
          streamField[19 * idx + 16] = collideField[19 * idx16 + 2];
          streamField[19 * idx + 17] = collideField[19 * idx17 + 1];
          streamField[19 * idx + 18] = collideField[19 * idx18];
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<doStreaming>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
movq   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    %rcx,%rax
ja     194d <doStreaming+0x84d>
movq   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    %rcx,%rax
ja     1937 <doStreaming+0x837>
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    %rcx,%rax
ja     1921 <doStreaming+0x821>
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0x18(%rbp),%rax
mov    -0xd0(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    190b <doStreaming+0x80b>
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
sub    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x58(%rbp)
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
add    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
sub    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x68(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
sub    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
sub    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x78(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x80(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x88(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
add    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x90(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
add    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
add    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0xa0(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
sub    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0xb0(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0xc0(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   %rcx,%rax
mov    -0x30(%rbp),%rcx
add    $0x1,%rcx
mov    -0x1c(%rbp),%edx
add    $0x2,%edx
movslq %edx,%rdx
imul   %rdx,%rcx
add    %rcx,%rax
add    -0x28(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x40(%rbp),%rcx
movsd  0x90(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x48(%rbp),%rcx
movsd  0x88(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x8(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x50(%rbp),%rcx
movsd  0x80(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x10(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x58(%rbp),%rcx
movsd  0x78(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x18(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x60(%rbp),%rcx
movsd  0x70(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x20(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x68(%rbp),%rcx
movsd  0x68(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x28(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x70(%rbp),%rcx
movsd  0x60(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x30(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x78(%rbp),%rcx
movsd  0x58(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x38(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x80(%rbp),%rcx
movsd  0x50(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x40(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  0x48(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x48(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x88(%rbp),%rcx
13
movsd  0x40(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x50(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x90(%rbp),%rcx
13
movsd  0x38(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
movsd  %xmm0,0x58(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0x98(%rbp),%rcx
13
movsd  0x30(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x60(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0xa0(%rbp),%rcx
13
movsd  0x28(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x68(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0xa8(%rbp),%rcx
13
movsd  0x20(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x70(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0xb0(%rbp),%rcx
13
movsd  0x18(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x78(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0xb8(%rbp),%rcx
13
movsd  0x10(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x80(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0xc0(%rbp),%rcx
13
movsd  0x8(%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x88(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
imul   $0x13,-0xc8(%rbp),%rcx
13
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
imul   $0x13,-0xd0(%rbp),%rcx
13
movsd  %xmm0,0x90(%rax,%rcx,8)
jmp    1910 <doStreaming+0x810>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    115b <doStreaming+0x5b>
jmp    1926 <doStreaming+0x826>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    113d <doStreaming+0x3d>
jmp    193c <doStreaming+0x83c>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    111f <doStreaming+0x1f>
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<doStreaming>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
movslq %ecx,%rcx
lea    0x2(%rcx),%r11
mov    %r11,%rbp
imul   %r11,%rbp
lea    0x0(,%rbp,8),%rax
add    %rbp,%rax
lea    0x0(,%rax,2),%r8
add    %rbp,%r8
lea    (%rdi,%r8,8),%r12
add    $0xa0,%r12
imul   $0x98,%rbp,%rax
mov    %rax,-0x48(%rsp)
imul   $0x98,%rcx,%rax
add    $0x130,%rax
mov    %rax,-0x10(%rsp)
mov    $0x22,%eax
sub    %r8,%rax
lea    (%rdi,%rax,8),%rax
shl    $0x2,%rbp
mov    %rbp,-0x40(%rsp)
lea    (%rcx,%rcx,8),%rbp
lea    (%rcx,%rbp,2),%r10
mov    %r8,%r14
sub    %r10,%r14
lea    (%r8,%r10,1),%r9
lea    (%rdi,%r10,8),%rbx
sub    %r8,%r10
lea    0x8(,%rcx,4),%rbp
mov    %rbp,-0x18(%rsp)
add    $0x90,%rsi
lea    (%rdi,%r14,8),%rbp
add    $0xfffffffffffffef0,%rbp
mov    %rbp,-0x20(%rsp)
imul   $0xffffffffffffff68,%rcx,%rcx
add    %rdi,%rcx
mov    $0xffffffffffffffec,%rbp
sub    %r9,%rbp
lea    (%rdi,%rbp,8),%r13
lea    (%rdi,%r9,8),%r15
add    $0x130,%r15
lea    (%rdi,%r10,8),%r9
add    $0x1a0,%r9
xor    %r14d,%r14d
xor    %r8d,%r8d
jmp    1202 <doStreaming+0x102>
nop
mov    -0x30(%rsp),%r14
add    -0x48(%rsp),%r14
mov    -0x28(%rsp),%rdx
add    -0x40(%rsp),%rdx
mov    -0x38(%rsp),%r8
cmp    %r11,%r8
je     1395 <doStreaming+0x295>
add    $0x1,%r8
mov    %r8,-0x38(%rsp)
mov    %rdx,-0x28(%rsp)
mov    %r14,-0x30(%rsp)
xor    %ebp,%ebp
jmp    1234 <doStreaming+0x134>
nopl   0x0(%rax)
add    -0x10(%rsp),%r14
add    -0x18(%rsp),%rdx
mov    -0x8(%rsp),%rbp
cmp    %r11,%rbp
je     11e0 <doStreaming+0xe0>
add    $0x1,%rbp
mov    %rbp,-0x8(%rsp)
mov    %r14,%r8
xor    %r10d,%r10d
mov    -0x20(%rsp),%rbp
jmp    1260 <doStreaming+0x160>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r10
add    $0x98,%r8
cmp    %r10,%r11
je     1220 <doStreaming+0x120>
cmpl   $0x0,(%rdx,%r10,4)
jne    1250 <doStreaming+0x150>
movsd  0x0(%r13,%r8,1),%xmm0
movsd  %xmm0,-0x90(%rsi,%r8,1)
ff ff ff
movsd  -0x120(%rax,%r8,1),%xmm0
fe ff ff
movsd  %xmm0,-0x88(%rsi,%r8,1)
ff ff ff
movsd  -0x90(%rax,%r8,1),%xmm0
ff ff ff
movsd  %xmm0,-0x80(%rsi,%r8,1)
movsd  (%rax,%r8,1),%xmm0
movsd  %xmm0,-0x78(%rsi,%r8,1)
movsd  (%r9,%r8,1),%xmm0
movsd  %xmm0,-0x70(%rsi,%r8,1)
movsd  -0x160(%rcx,%r8,1),%xmm0
fe ff ff
movsd  %xmm0,-0x68(%rsi,%r8,1)
movsd  -0xd0(%rcx,%r8,1),%xmm0
ff ff ff
movsd  %xmm0,-0x60(%rsi,%r8,1)
movsd  -0x40(%rcx,%r8,1),%xmm0
movsd  %xmm0,-0x58(%rsi,%r8,1)
movsd  -0x48(%rdi,%r8,1),%xmm0
movsd  %xmm0,-0x50(%rsi,%r8,1)
movsd  0x48(%rdi,%r8,1),%xmm0
movsd  %xmm0,-0x48(%rsi,%r8,1)
movsd  0xd8(%rdi,%r8,1),%xmm0
movsd  %xmm0,-0x40(%rsi,%r8,1)
movsd  0xd0(%rbx,%r8,1),%xmm0
movsd  %xmm0,-0x38(%rsi,%r8,1)
movsd  0x160(%rbx,%r8,1),%xmm0
movsd  %xmm0,-0x30(%rsi,%r8,1)
movsd  0x1f0(%rbx,%r8,1),%xmm0
movsd  %xmm0,-0x28(%rsi,%r8,1)
movsd  0x0(%rbp,%r8,1),%xmm0
movsd  %xmm0,-0x20(%rsi,%r8,1)
movsd  -0x120(%r12,%r8,1),%xmm0
fe ff ff
movsd  %xmm0,-0x18(%rsi,%r8,1)
movsd  -0x90(%r12,%r8,1),%xmm0
ff ff ff
movsd  %xmm0,-0x10(%rsi,%r8,1)
movsd  (%r12,%r8,1),%xmm0
movsd  %xmm0,-0x8(%rsi,%r8,1)
movsd  (%r15,%r8,1),%xmm0
movsd  %xmm0,(%rsi,%r8,1)
jmp    1250 <doStreaming+0x150>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @doStreaming(double* nocapture %0, double* nocapture writeonly %1, i32* nocapture %2, i32 %3) {
%5 = add nsw i32 %3, 2
%6 = sext i32 %5 to i64
%7 = mul nsw i64 %6, %6
%8 = sext i32 %3 to i64
%9 = add nsw i64 %8, 2
br label %10
10: ; preds = %4, %148
%11 = phi i64 [ 0, %4 ], [ %15, %148 ]
%12 = mul i64 %7, %11
%13 = add i64 %11, -1
%14 = mul i64 %7, %13
%15 = add nuw i64 %11, 1
%16 = mul i64 %7, %15
br label %17
17: ; preds = %10, %146
%18 = phi i64 [ 0, %10 ], [ %22, %146 ]
%19 = mul i64 %18, %6
%20 = add i64 %18, -1
%21 = mul i64 %20, %6
%22 = add nuw i64 %18, 1
%23 = mul i64 %22, %6
br label %24
24: ; preds = %17, %143
%25 = phi i64 [ 0, %17 ], [ %144, %143 ]
%26 = add i64 %25, %19
%27 = add i64 %26, %12
%28 = getelementptr inbounds i32, i32* %2, i64 %27
%29 = load i32, i32* %28
%30 = icmp eq i32 %29, 0
br i1 %30, label %31, label %143
31: ; preds = %24
%32 = add i64 %25, %21
%33 = add i64 %32, %14
%34 = add i64 %26, %14
%35 = add i64 %25, %23
%36 = add i64 %35, %14
%37 = add i64 %32, %12
%38 = add i64 %35, %12
%39 = add i64 %32, %16
%40 = add i64 %26, %16
%41 = add i64 %35, %16
%42 = mul i64 %33, 19
%43 = add i64 %42, 18
%44 = getelementptr inbounds double, double* %0, i64 %43
%45 = load double, double* %44
%46 = mul i64 %27, 19
%47 = getelementptr inbounds double, double* %1, i64 %46
store double %45, double* %47
%48 = mul i64 %34, 19
%49 = add i64 %48, -2
%50 = getelementptr inbounds double, double* %0, i64 %49
%51 = load double, double* %50
%52 = add i64 %46, 1
%53 = getelementptr inbounds double, double* %1, i64 %52
store double %51, double* %53
%54 = add i64 %48, 16
%55 = getelementptr inbounds double, double* %0, i64 %54
%56 = load double, double* %55
%57 = add i64 %46, 2
%58 = getelementptr inbounds double, double* %1, i64 %57
store double %56, double* %58
%59 = add i64 %48, 34
%60 = getelementptr inbounds double, double* %0, i64 %59
%61 = load double, double* %60
%62 = add i64 %46, 3
%63 = getelementptr inbounds double, double* %1, i64 %62
store double %61, double* %63
%64 = mul i64 %36, 19
%65 = add i64 %64, 14
%66 = getelementptr inbounds double, double* %0, i64 %65
%67 = load double, double* %66
%68 = add i64 %46, 4
%69 = getelementptr inbounds double, double* %1, i64 %68
store double %67, double* %69
%70 = mul i64 %37, 19
%71 = add i64 %70, -6
%72 = getelementptr inbounds double, double* %0, i64 %71
%73 = load double, double* %72
%74 = add i64 %46, 5
%75 = getelementptr inbounds double, double* %1, i64 %74
store double %73, double* %75
%76 = add i64 %70, 12
%77 = getelementptr inbounds double, double* %0, i64 %76
%78 = load double, double* %77
%79 = add i64 %46, 6
%80 = getelementptr inbounds double, double* %1, i64 %79
store double %78, double* %80
%81 = add i64 %70, 30
%82 = getelementptr inbounds double, double* %0, i64 %81
%83 = load double, double* %82
%84 = add i64 %46, 7
%85 = getelementptr inbounds double, double* %1, i64 %84
store double %83, double* %85
%86 = add i64 %46, -9
%87 = getelementptr inbounds double, double* %0, i64 %86
%88 = load double, double* %87
%89 = add i64 %46, 8
%90 = getelementptr inbounds double, double* %1, i64 %89
store double %88, double* %90
%91 = add i64 %46, 9
%92 = getelementptr inbounds double, double* %0, i64 %91
%93 = load double, double* %92
%94 = getelementptr inbounds double, double* %1, i64 %91
store double %93, double* %94
%95 = add i64 %46, 27
%96 = getelementptr inbounds double, double* %0, i64 %95
%97 = load double, double* %96
%98 = add i64 %46, 10
%99 = getelementptr inbounds double, double* %1, i64 %98
store double %97, double* %99
%100 = mul i64 %38, 19
%101 = add i64 %100, -12
%102 = getelementptr inbounds double, double* %0, i64 %101
%103 = load double, double* %102
%104 = add i64 %46, 11
%105 = getelementptr inbounds double, double* %1, i64 %104
store double %103, double* %105
%106 = add i64 %100, 6
%107 = getelementptr inbounds double, double* %0, i64 %106
%108 = load double, double* %107
%109 = add i64 %46, 12
%110 = getelementptr inbounds double, double* %1, i64 %109
store double %108, double* %110
%111 = add i64 %100, 24
%112 = getelementptr inbounds double, double* %0, i64 %111
%113 = load double, double* %112
%114 = add i64 %46, 13
%115 = getelementptr inbounds double, double* %1, i64 %114
store double %113, double* %115
%116 = mul i64 %39, 19
%117 = add i64 %116, 4
%118 = getelementptr inbounds double, double* %0, i64 %117
%119 = load double, double* %118
%120 = add i64 %46, 14
%121 = getelementptr inbounds double, double* %1, i64 %120
store double %119, double* %121
%122 = mul i64 %40, 19
%123 = add i64 %122, -16
%124 = getelementptr inbounds double, double* %0, i64 %123
%125 = load double, double* %124
%126 = add i64 %46, 15
%127 = getelementptr inbounds double, double* %1, i64 %126
store double %125, double* %127
%128 = add i64 %122, 2
%129 = getelementptr inbounds double, double* %0, i64 %128
%130 = load double, double* %129
%131 = add i64 %46, 16
%132 = getelementptr inbounds double, double* %1, i64 %131
store double %130, double* %132
%133 = add i64 %122, 20
%134 = getelementptr inbounds double, double* %0, i64 %133
%135 = load double, double* %134
%136 = add i64 %46, 17
%137 = getelementptr inbounds double, double* %1, i64 %136
store double %135, double* %137
%138 = mul i64 %41, 19
%139 = getelementptr inbounds double, double* %0, i64 %138
%140 = load double, double* %139
%141 = add i64 %46, 18
%142 = getelementptr inbounds double, double* %1, i64 %141
store double %140, double* %142
br label %143
143: ; preds = %31, %24
%144 = add nuw i64 %25, 1
%145 = icmp eq i64 %144, %9
br i1 %145, label %146, label %24
146: ; preds = %143
%147 = icmp eq i64 %22, %9
br i1 %147, label %148, label %17
148: ; preds = %146
%149 = icmp eq i64 %15, %9
br i1 %149, label %150, label %10
150: ; preds = %148
ret void
}