void bitrv2(int n, double *a) {
  int j0, k0, j1, k1, l, m, i, j, k, nh;
  double xr, xi, yr, yi;
  m = 4;
  for (l = n >> 2; l > 8; l >>= 2) {
    m <<= 1;
  }
  nh = n >> 1;
  if (l == 8) {
    j0 = 0;
    for (k0 = 0; k0 < m; k0 += 4) {
      k = k0;
      for (j = j0; j < j0 + k0; j += 4) {
        xr = a[j];
        xi = a[j + 1];
        yr = a[k];
        yi = a[k + 1];
        a[j] = yr;
        a[j + 1] = yi;
        a[k] = xr;
        a[k + 1] = xi;
        j1 = j + m;
        k1 = k + 2 * m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 -= m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 += 2 * m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += nh;
        k1 += 2;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= 2 * m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 += m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= 2 * m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += 2;
        k1 += nh;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 += 2 * m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 -= m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 += 2 * m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= nh;
        k1 -= 2;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= 2 * m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 += m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= 2 * m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        for (i = nh >> 1; i > (k ^= i); i >>= 1)
          ;
      }
      k1 = j0 + k0;
      j1 = k1 + 2;
      k1 += nh;
      xr = a[j1];
      xi = a[j1 + 1];
      yr = a[k1];
      yi = a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 += m;
      k1 += 2 * m;
      xr = a[j1];
      xi = a[j1 + 1];
      yr = a[k1];
      yi = a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 += m;
      k1 -= m;
      xr = a[j1];
      xi = a[j1 + 1];
      yr = a[k1];
      yi = a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 -= 2;
      k1 -= nh;
      xr = a[j1];
      xi = a[j1 + 1];
      yr = a[k1];
      yi = a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 += nh + 2;
      k1 += nh + 2;
      xr = a[j1];
      xi = a[j1 + 1];
      yr = a[k1];
      yi = a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 -= nh - m;
      k1 += 2 * m - 2;
      xr = a[j1];
      xi = a[j1 + 1];
      yr = a[k1];
      yi = a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      for (i = nh >> 1; i > (j0 ^= i); i >>= 1)
        ;
    }
  } else {
    j0 = 0;
    for (k0 = 0; k0 < m; k0 += 4) {
      k = k0;
      for (j = j0; j < j0 + k0; j += 4) {
        xr = a[j];
        xi = a[j + 1];
        yr = a[k];
        yi = a[k + 1];
        a[j] = yr;
        a[j + 1] = yi;
        a[k] = xr;
        a[k + 1] = xi;
        j1 = j + m;
        k1 = k + m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += nh;
        k1 += 2;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += 2;
        k1 += nh;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 += m;
        k1 += m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= nh;
        k1 -= 2;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        j1 -= m;
        k1 -= m;
        xr = a[j1];
        xi = a[j1 + 1];
        yr = a[k1];
        yi = a[k1 + 1];
        a[j1] = yr;
        a[j1 + 1] = yi;
        a[k1] = xr;
        a[k1 + 1] = xi;
        for (i = nh >> 1; i > (k ^= i); i >>= 1)
          ;
      }
      k1 = j0 + k0;
      j1 = k1 + 2;
      k1 += nh;
      xr = a[j1];
      xi = a[j1 + 1];
      yr = a[k1];
      yi = a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      j1 += m;
      k1 += m;
      xr = a[j1];
      xi = a[j1 + 1];
      yr = a[k1];
      yi = a[k1 + 1];
      a[j1] = yr;
      a[j1 + 1] = yi;
      a[k1] = xr;
      a[k1 + 1] = xi;
      for (i = nh >> 1; i > (j0 ^= i); i >>= 1)
        ;
    }
  }
}


x86 assembly (clang, -O0):
<bitrv2>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x4,-0x28(%rbp)
mov    -0x4(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x8,-0x24(%rbp)
jle    113c <bitrv2+0x3c>
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x24(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x24(%rbp)
jmp    111b <bitrv2+0x1b>
mov    -0x4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x8,-0x24(%rbp)
jne    21f8 <bitrv2+0x10f8>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    21f3 <bitrv2+0x10f3>
mov    -0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    1d4b <bitrv2+0xc4b>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x28(%rbp),%ecx
shl    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x38(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x2c(%rbp),%ecx
xor    -0x34(%rbp),%ecx
mov    %ecx,-0x34(%rbp)
cmp    %ecx,%eax
jle    1d38 <bitrv2+0xc38>
jmp    1d2a <bitrv2+0xc2a>
mov    -0x2c(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1d11 <bitrv2+0xc11>
jmp    1d3d <bitrv2+0xc3d>
mov    -0x30(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x30(%rbp)
jmp    1175 <bitrv2+0x75>
mov    -0x14(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x38(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x38(%rbp),%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0x2,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x38(%rbp),%eax
add    $0x2,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%ecx
sub    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
shl    $0x1,%eax
sub    $0x2,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x2c(%rbp),%ecx
xor    -0x14(%rbp),%ecx
mov    %ecx,-0x14(%rbp)
cmp    %ecx,%eax
jle    21e0 <bitrv2+0x10e0>
jmp    21d2 <bitrv2+0x10d2>
mov    -0x2c(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    21b9 <bitrv2+0x10b9>
jmp    21e5 <bitrv2+0x10e5>
mov    -0x18(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x18(%rbp)
jmp    115d <bitrv2+0x5d>
jmp    29d7 <bitrv2+0x18d7>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    29d2 <bitrv2+0x18d2>
mov    -0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    281a <bitrv2+0x171a>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x34(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x38(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0x20(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x2c(%rbp),%ecx
xor    -0x34(%rbp),%ecx
mov    %ecx,-0x34(%rbp)
cmp    %ecx,%eax
jle    2807 <bitrv2+0x1707>
jmp    27f9 <bitrv2+0x16f9>
mov    -0x2c(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    27e0 <bitrv2+0x16e0>
jmp    280c <bitrv2+0x170c>
mov    -0x30(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x30(%rbp)
jmp    221e <bitrv2+0x111e>
mov    -0x14(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x38(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x28(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x2c(%rbp),%ecx
xor    -0x14(%rbp),%ecx
mov    %ecx,-0x14(%rbp)
cmp    %ecx,%eax
jle    29bf <bitrv2+0x18bf>
jmp    29b1 <bitrv2+0x18b1>
mov    -0x2c(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    2998 <bitrv2+0x1898>
jmp    29c4 <bitrv2+0x18c4>
mov    -0x18(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x18(%rbp)
jmp    2206 <bitrv2+0x1106>
jmp    29d7 <bitrv2+0x18d7>
pop    %rbp
ret

x86 assembly (clang, -O2):
<bitrv2>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    $0x4,%r9d
mov    %edi,-0x24(%rsp)
mov    %edi,%eax
cs nopw 0x0(%rax,%rax,1)
mov    %r9d,%r12d
mov    %eax,%ecx
sar    $0x2,%eax
lea    (%r12,%r12,1),%r9d
cmp    $0x23,%ecx
jg     1120 <bitrv2+0x20>
mov    -0x24(%rsp),%ecx
mov    %ecx,%r10d
sar    %r10d
cmp    $0x8,%eax
jne    15e2 <bitrv2+0x4e2>
test   %r12d,%r12d
jle    1819 <bitrv2+0x719>
sarl   $0x2,-0x24(%rsp)
mov    %r12d,%eax
mov    %rax,-0x8(%rsp)
movslq %r10d,%rax
mov    %rax,-0x10(%rsp)
xor    %r8d,%r8d
xor    %ecx,%ecx
movabs $0x200000000,%r13
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    (%r8,%rcx,1),%eax
cltq
mov    %rax,-0x18(%rsp)
mov    %rcx,-0x20(%rsp)
test   %ecx,%ecx
je     14a9 <bitrv2+0x3a9>
movslq %r8d,%r15
mov    -0x20(%rsp),%rax
mov    %eax,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups (%rsi,%r15,8),%xmm0
movslq %ebp,%rax
movups (%rsi,%rax,8),%xmm1
movups %xmm1,(%rsi,%r15,8)
movups %xmm0,(%rsi,%rax,8)
mov    -0x8(%rsp),%rdx
lea    (%r15,%rdx,1),%rcx
add    %r9d,%eax
movups (%rsi,%rcx,8),%xmm0
cltq
movsd  (%rsi,%rax,8),%xmm1
movsd  0x8(%rsi,%rax,8),%xmm2
movsd  %xmm1,(%rsi,%rcx,8)
movsd  %xmm2,0x8(%rsi,%rcx,8)
movups %xmm0,(%rsi,%rax,8)
add    %rdx,%rcx
sub    %r12d,%eax
movups (%rsi,%rcx,8),%xmm0
movslq %eax,%rbx
movsd  (%rsi,%rbx,8),%xmm1
movsd  0x8(%rsi,%rbx,8),%xmm2
movsd  %xmm1,(%rsi,%rcx,8)
movsd  %xmm2,0x8(%rsi,%rcx,8)
movups %xmm0,(%rsi,%rbx,8)
add    %rdx,%rcx
lea    (%rbx,%r9,1),%eax
movups (%rsi,%rcx,8),%xmm0
cltq
movsd  (%rsi,%rax,8),%xmm1
movsd  0x8(%rsi,%rax,8),%xmm2
movsd  %xmm1,(%rsi,%rcx,8)
movsd  %xmm2,0x8(%rsi,%rcx,8)
movups %xmm0,(%rsi,%rax,8)
add    -0x10(%rsp),%rcx
movups (%rsi,%rcx,8),%xmm0
movsd  0x10(%rsi,%rax,8),%xmm1
movsd  0x18(%rsi,%rax,8),%xmm2
movsd  %xmm1,(%rsi,%rcx,8)
movsd  %xmm2,0x8(%rsi,%rcx,8)
movups %xmm0,0x10(%rsi,%rax,8)
mov    %rcx,%r14
sub    %rdx,%r14
lea    0x2(%rbx),%eax
movups (%rsi,%r14,8),%xmm0
cltq
movsd  (%rsi,%rax,8),%xmm1
movsd  0x8(%rsi,%rax,8),%xmm2
movsd  %xmm1,(%rsi,%r14,8)
movsd  %xmm2,0x8(%rsi,%r14,8)
movups %xmm0,(%rsi,%rax,8)
mov    %r14,%rax
sub    %rdx,%rax
add    %r12d,%ebx
add    $0x2,%ebx
movups (%rsi,%rax,8),%xmm0
movslq %ebx,%rbx
movsd  (%rsi,%rbx,8),%xmm1
movsd  0x8(%rsi,%rbx,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rbx,8)
mov    %rax,%rdi
sub    %rdx,%rdi
mov    %ebx,%edx
sub    %r9d,%edx
movups (%rsi,%rdi,8),%xmm0
movslq %edx,%rdx
movsd  (%rsi,%rdx,8),%xmm1
movsd  0x8(%rsi,%rdx,8),%xmm2
movsd  %xmm1,(%rsi,%rdi,8)
movsd  %xmm2,0x8(%rsi,%rdi,8)
movups %xmm0,(%rsi,%rdx,8)
add    %r10d,%edx
movups 0x10(%rsi,%rdi,8),%xmm0
movslq %edx,%rdx
movups (%rsi,%rdx,8),%xmm1
movups %xmm1,0x10(%rsi,%rdi,8)
movups %xmm0,(%rsi,%rdx,8)
add    %r10d,%ebx
shl    $0x20,%rax
lea    (%rax,%r13,1),%rdx
sar    $0x1d,%rdx
movsd  (%rsi,%rdx,1),%xmm0
mov    %r10,%r11
movabs $0x300000000,%r10
add    %r10,%rax
sar    $0x1d,%rax
movsd  (%rsi,%rax,1),%xmm1
movslq %ebx,%rdi
movsd  (%rsi,%rdi,8),%xmm2
movsd  0x8(%rsi,%rdi,8),%xmm3
movsd  %xmm2,(%rsi,%rdx,1)
movsd  %xmm3,(%rsi,%rax,1)
movsd  %xmm0,(%rsi,%rdi,8)
movsd  %xmm1,0x8(%rsi,%rdi,8)
sub    %r12d,%edi
shl    $0x20,%r14
lea    (%r14,%r13,1),%rax
sar    $0x1d,%rax
movsd  (%rsi,%rax,1),%xmm0
add    %r10,%r14
sar    $0x1d,%r14
movsd  (%rsi,%r14,1),%xmm1
mov    %r9,%rbx
movslq %edi,%r9
movsd  (%rsi,%r9,8),%xmm2
movsd  0x8(%rsi,%r9,8),%xmm3
movsd  %xmm2,(%rsi,%rax,1)
movsd  %xmm3,(%rsi,%r14,1)
movsd  %xmm0,(%rsi,%r9,8)
movsd  %xmm1,0x8(%rsi,%r9,8)
lea    0x2(%rcx),%eax
lea    (%r9,%rbx,1),%edx
cltq
movsd  (%rsi,%rax,8),%xmm0
shl    $0x20,%rcx
add    %r10,%rcx
mov    %r11,%r10
sar    $0x1d,%rcx
movsd  (%rsi,%rcx,1),%xmm1
movslq %edx,%rdx
movsd  (%rsi,%rdx,8),%xmm2
movsd  0x8(%rsi,%rdx,8),%xmm3
movsd  %xmm2,(%rsi,%rax,8)
movsd  %xmm3,(%rsi,%rcx,1)
movsd  %xmm0,(%rsi,%rdx,8)
movsd  %xmm1,0x8(%rsi,%rdx,8)
sub    %r10d,%eax
cltq
movups (%rsi,%rax,8),%xmm0
movsd  -0x10(%rsi,%rdx,8),%xmm1
movsd  -0x8(%rsi,%rdx,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,-0x10(%rsi,%rdx,8)
sub    %r12d,%eax
lea    -0x2(%r9),%ecx
cltq
movups (%rsi,%rax,8),%xmm0
movslq %ecx,%rcx
movsd  (%rsi,%rcx,8),%xmm1
movsd  0x8(%rsi,%rcx,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rcx,8)
sub    %r12d,%eax
lea    (%r9,%r12,1),%ecx
add    $0xfffffffe,%ecx
mov    %rbx,%r9
cltq
movups (%rsi,%rax,8),%xmm0
movslq %ecx,%rcx
movsd  (%rsi,%rcx,8),%xmm1
movsd  0x8(%rsi,%rcx,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rcx,8)
sub    %r12d,%eax
sub    %r9d,%ecx
cltq
movups (%rsi,%rax,8),%xmm0
movslq %ecx,%rcx
movsd  (%rsi,%rcx,8),%xmm1
movsd  0x8(%rsi,%rcx,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rcx,8)
mov    -0x24(%rsp),%eax
mov    %eax,%ecx
nop
xor    %eax,%ebp
sar    %ecx
cmp    %ebp,%eax
mov    %ecx,%eax
jg     1490 <bitrv2+0x390>
add    $0x4,%r15
cmp    -0x18(%rsp),%r15
jl     11b0 <bitrv2+0xb0>
mov    -0x18(%rsp),%rdx
lea    (%rdx,%r12,1),%eax
lea    (%rdx,%r10,1),%ecx
movups 0x10(%rsi,%rdx,8),%xmm0
movslq %ecx,%rcx
movsd  (%rsi,%rcx,8),%xmm1
movsd  0x8(%rsi,%rcx,8),%xmm2
movsd  %xmm1,0x10(%rsi,%rdx,8)
movsd  %xmm2,0x18(%rsi,%rdx,8)
movups %xmm0,(%rsi,%rcx,8)
add    %r12d,%edx
add    $0x2,%edx
add    %r9d,%ecx
movslq %edx,%rdx
movups (%rsi,%rdx,8),%xmm0
movslq %ecx,%rcx
movsd  (%rsi,%rcx,8),%xmm1
movsd  0x8(%rsi,%rcx,8),%xmm2
movsd  %xmm1,(%rsi,%rdx,8)
movsd  %xmm2,0x8(%rsi,%rdx,8)
movups %xmm0,(%rsi,%rcx,8)
add    %r12d,%eax
add    $0x2,%eax
sub    %r12d,%ecx
cltq
movups (%rsi,%rax,8),%xmm0
movslq %ecx,%rcx
movsd  (%rsi,%rcx,8),%xmm1
movsd  0x8(%rsi,%rcx,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rcx,8)
mov    %ecx,%edx
sub    %r10d,%edx
movups -0x10(%rsi,%rax,8),%xmm0
movslq %edx,%rdx
movups (%rsi,%rdx,8),%xmm1
movups %xmm1,-0x10(%rsi,%rax,8)
movups %xmm0,(%rsi,%rdx,8)
lea    (%rax,%r10,1),%edx
lea    0x2(%rcx),%edi
movslq %edx,%rdx
movsd  (%rsi,%rdx,8),%xmm0
movsd  0x8(%rsi,%rdx,8),%xmm1
movslq %edi,%rdi
movsd  (%rsi,%rdi,8),%xmm2
lea    0x3(%rcx),%ebp
movslq %ebp,%rbp
movsd  (%rsi,%rbp,8),%xmm3
movsd  %xmm2,(%rsi,%rdx,8)
movsd  %xmm3,0x8(%rsi,%rdx,8)
movsd  %xmm0,(%rsi,%rdi,8)
movsd  %xmm1,(%rsi,%rbp,8)
add    %r12d,%eax
add    %r9d,%ecx
cltq
movups (%rsi,%rax,8),%xmm0
movslq %ecx,%rcx
movsd  (%rsi,%rcx,8),%xmm1
movsd  0x8(%rsi,%rcx,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rcx,8)
mov    -0x24(%rsp),%eax
mov    %eax,%ecx
nopl   0x0(%rax,%rax,1)
xor    %eax,%r8d
sar    %ecx
cmp    %r8d,%eax
mov    %ecx,%eax
jg     15c0 <bitrv2+0x4c0>
mov    -0x20(%rsp),%rcx
add    $0x4,%ecx
cmp    %r12d,%ecx
jl     1180 <bitrv2+0x80>
jmp    1819 <bitrv2+0x719>
test   %r12d,%r12d
jle    1819 <bitrv2+0x719>
movabs $0x300000000,%r8
sarl   $0x2,-0x24(%rsp)
mov    %r12d,%r14d
movslq %r10d,%r15
xor    %r13d,%r13d
xor    %r9d,%r9d
cs nopw 0x0(%rax,%rax,1)
lea    (%r9,%r13,1),%eax
movslq %eax,%r11
test   %r9d,%r9d
je     1797 <bitrv2+0x697>
movslq %r13d,%rcx
mov    %r9d,%edx
cs nopw 0x0(%rax,%rax,1)
movups (%rsi,%rcx,8),%xmm0
movslq %edx,%rdi
movups (%rsi,%rdi,8),%xmm1
movups %xmm1,(%rsi,%rcx,8)
movups %xmm0,(%rsi,%rdi,8)
lea    (%rcx,%r14,1),%rax
lea    (%rdi,%r12,1),%ebp
movups (%rsi,%rax,8),%xmm0
movslq %ebp,%rbp
movsd  (%rsi,%rbp,8),%xmm1
movsd  0x8(%rsi,%rbp,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rbp,8)
add    %r15,%rax
add    %r12d,%edi
add    $0x2,%edi
movups (%rsi,%rax,8),%xmm0
movsd  0x10(%rsi,%rbp,8),%xmm1
movsd  0x18(%rsi,%rbp,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,0x10(%rsi,%rbp,8)
mov    %rax,%rbx
sub    %r14,%rbx
sub    %r12d,%edi
movups (%rsi,%rbx,8),%xmm0
movslq %edi,%rdi
movsd  (%rsi,%rdi,8),%xmm1
movsd  0x8(%rsi,%rdi,8),%xmm2
movsd  %xmm1,(%rsi,%rbx,8)
movsd  %xmm2,0x8(%rsi,%rbx,8)
movups %xmm0,(%rsi,%rdi,8)
add    %r10d,%edi
movups 0x10(%rsi,%rbx,8),%xmm0
movslq %edi,%rdi
movups (%rsi,%rdi,8),%xmm1
movups %xmm1,0x10(%rsi,%rbx,8)
movups %xmm0,(%rsi,%rdi,8)
lea    0x2(%rax),%edi
lea    (%r15,%rbp,1),%ebx
add    $0x2,%ebx
movslq %edi,%rdi
movsd  (%rsi,%rdi,8),%xmm0
shl    $0x20,%rax
add    %r8,%rax
sar    $0x1d,%rax
movsd  (%rsi,%rax,1),%xmm1
movslq %ebx,%rbx
movsd  (%rsi,%rbx,8),%xmm2
movsd  0x8(%rsi,%rbx,8),%xmm3
movsd  %xmm2,(%rsi,%rdi,8)
movsd  %xmm3,(%rsi,%rax,1)
movsd  %xmm0,(%rsi,%rbx,8)
movsd  %xmm1,0x8(%rsi,%rbx,8)
sub    %r15d,%edi
add    %r10d,%ebp
movslq %edi,%rax
movups (%rsi,%rax,8),%xmm0
movslq %ebp,%rdi
movsd  (%rsi,%rdi,8),%xmm1
movsd  0x8(%rsi,%rdi,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rdi,8)
sub    %r12d,%eax
sub    %r12d,%edi
cltq
movups (%rsi,%rax,8),%xmm0
movslq %edi,%rdi
movsd  (%rsi,%rdi,8),%xmm1
movsd  0x8(%rsi,%rdi,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,0x8(%rsi,%rax,8)
movups %xmm0,(%rsi,%rdi,8)
mov    -0x24(%rsp),%eax
mov    %eax,%edi
cs nopw 0x0(%rax,%rax,1)
nop
xor    %eax,%edx
sar    %edi
cmp    %edx,%eax
mov    %edi,%eax
jg     1780 <bitrv2+0x680>
add    $0x4,%rcx
cmp    %r11,%rcx
jl     1630 <bitrv2+0x530>
lea    (%r11,%r10,1),%eax
movups 0x10(%rsi,%r11,8),%xmm0
cltq
movsd  (%rsi,%rax,8),%xmm1
movsd  0x8(%rsi,%rax,8),%xmm2
movsd  %xmm1,0x10(%rsi,%r11,8)
movsd  %xmm2,0x18(%rsi,%r11,8)
movups %xmm0,(%rsi,%rax,8)
lea    (%r11,%r12,1),%ecx
add    $0x2,%ecx
add    %r12d,%eax
movslq %ecx,%rcx
movups (%rsi,%rcx,8),%xmm0
cltq
movsd  (%rsi,%rax,8),%xmm1
movsd  0x8(%rsi,%rax,8),%xmm2
movsd  %xmm1,(%rsi,%rcx,8)
movsd  %xmm2,0x8(%rsi,%rcx,8)
movups %xmm0,(%rsi,%rax,8)
mov    -0x24(%rsp),%eax
mov    %eax,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %eax,%r13d
sar    %ecx
cmp    %r13d,%eax
mov    %ecx,%eax
jg     1800 <bitrv2+0x700>
add    $0x4,%r9d
cmp    %r12d,%r9d
jl     1610 <bitrv2+0x510>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @bitrv2(i32 %0, double* %1) {
%3 = alloca i32
%4 = alloca double*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
store i32 %0, i32* %3
store double* %1, double** %4
store i32 4, i32* %10
%19 = load i32, i32* %3
%20 = ashr i32 %19, 2
store i32 %20, i32* %9
br label %21
21: ; preds = %27, %2
%22 = load i32, i32* %9
%23 = icmp sgt i32 %22, 8
br i1 %23, label %24, label %30
24: ; preds = %21
%25 = load i32, i32* %10
%26 = shl i32 %25, 1
store i32 %26, i32* %10
br label %27
27: ; preds = %24
%28 = load i32, i32* %9
%29 = ashr i32 %28, 2
store i32 %29, i32* %9
br label %21
30: ; preds = %21
%31 = load i32, i32* %3
%32 = ashr i32 %31, 1
store i32 %32, i32* %14
%33 = load i32, i32* %9
%34 = icmp eq i32 %33, 8
br i1 %34, label %35, label %1191
35: ; preds = %30
store i32 0, i32* %5
store i32 0, i32* %6
br label %36
36: ; preds = %1187, %35
%37 = load i32, i32* %6
%38 = load i32, i32* %10
%39 = icmp slt i32 %37, %38
br i1 %39, label %40, label %1190
40: ; preds = %36
%41 = load i32, i32* %6
store i32 %41, i32* %13
%42 = load i32, i32* %5
store i32 %42, i32* %12
br label %43
43: ; preds = %862, %40
%44 = load i32, i32* %12
%45 = load i32, i32* %5
%46 = load i32, i32* %6
%47 = add nsw i32 %45, %46
%48 = icmp slt i32 %44, %47
br i1 %48, label %49, label %865
49: ; preds = %43
%50 = load double*, double** %4
%51 = load i32, i32* %12
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds double, double* %50, i64 %52
%54 = load double, double* %53
store double %54, double* %15
%55 = load double*, double** %4
%56 = load i32, i32* %12
%57 = add nsw i32 %56, 1
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds double, double* %55, i64 %58
%60 = load double, double* %59
store double %60, double* %16
%61 = load double*, double** %4
%62 = load i32, i32* %13
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds double, double* %61, i64 %63
%65 = load double, double* %64
store double %65, double* %17
%66 = load double*, double** %4
%67 = load i32, i32* %13
%68 = add nsw i32 %67, 1
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds double, double* %66, i64 %69
%71 = load double, double* %70
store double %71, double* %18
%72 = load double, double* %17
%73 = load double*, double** %4
%74 = load i32, i32* %12
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds double, double* %73, i64 %75
store double %72, double* %76
%77 = load double, double* %18
%78 = load double*, double** %4
%79 = load i32, i32* %12
%80 = add nsw i32 %79, 1
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds double, double* %78, i64 %81
store double %77, double* %82
%83 = load double, double* %15
%84 = load double*, double** %4
%85 = load i32, i32* %13
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds double, double* %84, i64 %86
store double %83, double* %87
%88 = load double, double* %16
%89 = load double*, double** %4
%90 = load i32, i32* %13
%91 = add nsw i32 %90, 1
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds double, double* %89, i64 %92
store double %88, double* %93
%94 = load i32, i32* %12
%95 = load i32, i32* %10
%96 = add nsw i32 %94, %95
store i32 %96, i32* %7
%97 = load i32, i32* %13
%98 = load i32, i32* %10
%99 = mul nsw i32 2, %98
%100 = add nsw i32 %97, %99
store i32 %100, i32* %8
%101 = load double*, double** %4
%102 = load i32, i32* %7
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds double, double* %101, i64 %103
%105 = load double, double* %104
store double %105, double* %15
%106 = load double*, double** %4
%107 = load i32, i32* %7
%108 = add nsw i32 %107, 1
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds double, double* %106, i64 %109
%111 = load double, double* %110
store double %111, double* %16
%112 = load double*, double** %4
%113 = load i32, i32* %8
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds double, double* %112, i64 %114
%116 = load double, double* %115
store double %116, double* %17
%117 = load double*, double** %4
%118 = load i32, i32* %8
%119 = add nsw i32 %118, 1
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds double, double* %117, i64 %120
%122 = load double, double* %121
store double %122, double* %18
%123 = load double, double* %17
%124 = load double*, double** %4
%125 = load i32, i32* %7
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds double, double* %124, i64 %126
store double %123, double* %127
%128 = load double, double* %18
%129 = load double*, double** %4
%130 = load i32, i32* %7
%131 = add nsw i32 %130, 1
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds double, double* %129, i64 %132
store double %128, double* %133
%134 = load double, double* %15
%135 = load double*, double** %4
%136 = load i32, i32* %8
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds double, double* %135, i64 %137
store double %134, double* %138
%139 = load double, double* %16
%140 = load double*, double** %4
%141 = load i32, i32* %8
%142 = add nsw i32 %141, 1
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds double, double* %140, i64 %143
store double %139, double* %144
%145 = load i32, i32* %10
%146 = load i32, i32* %7
%147 = add nsw i32 %146, %145
store i32 %147, i32* %7
%148 = load i32, i32* %10
%149 = load i32, i32* %8
%150 = sub nsw i32 %149, %148
store i32 %150, i32* %8
%151 = load double*, double** %4
%152 = load i32, i32* %7
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds double, double* %151, i64 %153
%155 = load double, double* %154
store double %155, double* %15
%156 = load double*, double** %4
%157 = load i32, i32* %7
%158 = add nsw i32 %157, 1
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds double, double* %156, i64 %159
%161 = load double, double* %160
store double %161, double* %16
%162 = load double*, double** %4
%163 = load i32, i32* %8
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds double, double* %162, i64 %164
%166 = load double, double* %165
store double %166, double* %17
%167 = load double*, double** %4
%168 = load i32, i32* %8
%169 = add nsw i32 %168, 1
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds double, double* %167, i64 %170
%172 = load double, double* %171
store double %172, double* %18
%173 = load double, double* %17
%174 = load double*, double** %4
%175 = load i32, i32* %7
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds double, double* %174, i64 %176
store double %173, double* %177
%178 = load double, double* %18
%179 = load double*, double** %4
%180 = load i32, i32* %7
%181 = add nsw i32 %180, 1
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds double, double* %179, i64 %182
store double %178, double* %183
%184 = load double, double* %15
%185 = load double*, double** %4
%186 = load i32, i32* %8
%187 = sext i32 %186 to i64
%188 = getelementptr inbounds double, double* %185, i64 %187
store double %184, double* %188
%189 = load double, double* %16
%190 = load double*, double** %4
%191 = load i32, i32* %8
%192 = add nsw i32 %191, 1
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds double, double* %190, i64 %193
store double %189, double* %194
%195 = load i32, i32* %10
%196 = load i32, i32* %7
%197 = add nsw i32 %196, %195
store i32 %197, i32* %7
%198 = load i32, i32* %10
%199 = mul nsw i32 2, %198
%200 = load i32, i32* %8
%201 = add nsw i32 %200, %199
store i32 %201, i32* %8
%202 = load double*, double** %4
%203 = load i32, i32* %7
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds double, double* %202, i64 %204
%206 = load double, double* %205
store double %206, double* %15
%207 = load double*, double** %4
%208 = load i32, i32* %7
%209 = add nsw i32 %208, 1
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds double, double* %207, i64 %210
%212 = load double, double* %211
store double %212, double* %16
%213 = load double*, double** %4
%214 = load i32, i32* %8
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds double, double* %213, i64 %215
%217 = load double, double* %216
store double %217, double* %17
%218 = load double*, double** %4
%219 = load i32, i32* %8
%220 = add nsw i32 %219, 1
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds double, double* %218, i64 %221
%223 = load double, double* %222
store double %223, double* %18
%224 = load double, double* %17
%225 = load double*, double** %4
%226 = load i32, i32* %7
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds double, double* %225, i64 %227
store double %224, double* %228
%229 = load double, double* %18
%230 = load double*, double** %4
%231 = load i32, i32* %7
%232 = add nsw i32 %231, 1
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds double, double* %230, i64 %233
store double %229, double* %234
%235 = load double, double* %15
%236 = load double*, double** %4
%237 = load i32, i32* %8
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds double, double* %236, i64 %238
store double %235, double* %239
%240 = load double, double* %16
%241 = load double*, double** %4
%242 = load i32, i32* %8
%243 = add nsw i32 %242, 1
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds double, double* %241, i64 %244
store double %240, double* %245
%246 = load i32, i32* %14
%247 = load i32, i32* %7
%248 = add nsw i32 %247, %246
store i32 %248, i32* %7
%249 = load i32, i32* %8
%250 = add nsw i32 %249, 2
store i32 %250, i32* %8
%251 = load double*, double** %4
%252 = load i32, i32* %7
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds double, double* %251, i64 %253
%255 = load double, double* %254
store double %255, double* %15
%256 = load double*, double** %4
%257 = load i32, i32* %7
%258 = add nsw i32 %257, 1
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds double, double* %256, i64 %259
%261 = load double, double* %260
store double %261, double* %16
%262 = load double*, double** %4
%263 = load i32, i32* %8
%264 = sext i32 %263 to i64
%265 = getelementptr inbounds double, double* %262, i64 %264
%266 = load double, double* %265
store double %266, double* %17
%267 = load double*, double** %4
%268 = load i32, i32* %8
%269 = add nsw i32 %268, 1
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds double, double* %267, i64 %270
%272 = load double, double* %271
store double %272, double* %18
%273 = load double, double* %17
%274 = load double*, double** %4
%275 = load i32, i32* %7
%276 = sext i32 %275 to i64
%277 = getelementptr inbounds double, double* %274, i64 %276
store double %273, double* %277
%278 = load double, double* %18
%279 = load double*, double** %4
%280 = load i32, i32* %7
%281 = add nsw i32 %280, 1
%282 = sext i32 %281 to i64
%283 = getelementptr inbounds double, double* %279, i64 %282
store double %278, double* %283
%284 = load double, double* %15
%285 = load double*, double** %4
%286 = load i32, i32* %8
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds double, double* %285, i64 %287
store double %284, double* %288
%289 = load double, double* %16
%290 = load double*, double** %4
%291 = load i32, i32* %8
%292 = add nsw i32 %291, 1
%293 = sext i32 %292 to i64
%294 = getelementptr inbounds double, double* %290, i64 %293
store double %289, double* %294
%295 = load i32, i32* %10
%296 = load i32, i32* %7
%297 = sub nsw i32 %296, %295
store i32 %297, i32* %7
%298 = load i32, i32* %10
%299 = mul nsw i32 2, %298
%300 = load i32, i32* %8
%301 = sub nsw i32 %300, %299
store i32 %301, i32* %8
%302 = load double*, double** %4
%303 = load i32, i32* %7
%304 = sext i32 %303 to i64
%305 = getelementptr inbounds double, double* %302, i64 %304
%306 = load double, double* %305
store double %306, double* %15
%307 = load double*, double** %4
%308 = load i32, i32* %7
%309 = add nsw i32 %308, 1
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds double, double* %307, i64 %310
%312 = load double, double* %311
store double %312, double* %16
%313 = load double*, double** %4
%314 = load i32, i32* %8
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds double, double* %313, i64 %315
%317 = load double, double* %316
store double %317, double* %17
%318 = load double*, double** %4
%319 = load i32, i32* %8
%320 = add nsw i32 %319, 1
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds double, double* %318, i64 %321
%323 = load double, double* %322
store double %323, double* %18
%324 = load double, double* %17
%325 = load double*, double** %4
%326 = load i32, i32* %7
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds double, double* %325, i64 %327
store double %324, double* %328
%329 = load double, double* %18
%330 = load double*, double** %4
%331 = load i32, i32* %7
%332 = add nsw i32 %331, 1
%333 = sext i32 %332 to i64
%334 = getelementptr inbounds double, double* %330, i64 %333
store double %329, double* %334
%335 = load double, double* %15
%336 = load double*, double** %4
%337 = load i32, i32* %8
%338 = sext i32 %337 to i64
%339 = getelementptr inbounds double, double* %336, i64 %338
store double %335, double* %339
%340 = load double, double* %16
%341 = load double*, double** %4
%342 = load i32, i32* %8
%343 = add nsw i32 %342, 1
%344 = sext i32 %343 to i64
%345 = getelementptr inbounds double, double* %341, i64 %344
store double %340, double* %345
%346 = load i32, i32* %10
%347 = load i32, i32* %7
%348 = sub nsw i32 %347, %346
store i32 %348, i32* %7
%349 = load i32, i32* %10
%350 = load i32, i32* %8
%351 = add nsw i32 %350, %349
store i32 %351, i32* %8
%352 = load double*, double** %4
%353 = load i32, i32* %7
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds double, double* %352, i64 %354
%356 = load double, double* %355
store double %356, double* %15
%357 = load double*, double** %4
%358 = load i32, i32* %7
%359 = add nsw i32 %358, 1
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds double, double* %357, i64 %360
%362 = load double, double* %361
store double %362, double* %16
%363 = load double*, double** %4
%364 = load i32, i32* %8
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds double, double* %363, i64 %365
%367 = load double, double* %366
store double %367, double* %17
%368 = load double*, double** %4
%369 = load i32, i32* %8
%370 = add nsw i32 %369, 1
%371 = sext i32 %370 to i64
%372 = getelementptr inbounds double, double* %368, i64 %371
%373 = load double, double* %372
store double %373, double* %18
%374 = load double, double* %17
%375 = load double*, double** %4
%376 = load i32, i32* %7
%377 = sext i32 %376 to i64
%378 = getelementptr inbounds double, double* %375, i64 %377
store double %374, double* %378
%379 = load double, double* %18
%380 = load double*, double** %4
%381 = load i32, i32* %7
%382 = add nsw i32 %381, 1
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds double, double* %380, i64 %383
store double %379, double* %384
%385 = load double, double* %15
%386 = load double*, double** %4
%387 = load i32, i32* %8
%388 = sext i32 %387 to i64
%389 = getelementptr inbounds double, double* %386, i64 %388
store double %385, double* %389
%390 = load double, double* %16
%391 = load double*, double** %4
%392 = load i32, i32* %8
%393 = add nsw i32 %392, 1
%394 = sext i32 %393 to i64
%395 = getelementptr inbounds double, double* %391, i64 %394
store double %390, double* %395
%396 = load i32, i32* %10
%397 = load i32, i32* %7
%398 = sub nsw i32 %397, %396
store i32 %398, i32* %7
%399 = load i32, i32* %10
%400 = mul nsw i32 2, %399
%401 = load i32, i32* %8
%402 = sub nsw i32 %401, %400
store i32 %402, i32* %8
%403 = load double*, double** %4
%404 = load i32, i32* %7
%405 = sext i32 %404 to i64
%406 = getelementptr inbounds double, double* %403, i64 %405
%407 = load double, double* %406
store double %407, double* %15
%408 = load double*, double** %4
%409 = load i32, i32* %7
%410 = add nsw i32 %409, 1
%411 = sext i32 %410 to i64
%412 = getelementptr inbounds double, double* %408, i64 %411
%413 = load double, double* %412
store double %413, double* %16
%414 = load double*, double** %4
%415 = load i32, i32* %8
%416 = sext i32 %415 to i64
%417 = getelementptr inbounds double, double* %414, i64 %416
%418 = load double, double* %417
store double %418, double* %17
%419 = load double*, double** %4
%420 = load i32, i32* %8
%421 = add nsw i32 %420, 1
%422 = sext i32 %421 to i64
%423 = getelementptr inbounds double, double* %419, i64 %422
%424 = load double, double* %423
store double %424, double* %18
%425 = load double, double* %17
%426 = load double*, double** %4
%427 = load i32, i32* %7
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds double, double* %426, i64 %428
store double %425, double* %429
%430 = load double, double* %18
%431 = load double*, double** %4
%432 = load i32, i32* %7
%433 = add nsw i32 %432, 1
%434 = sext i32 %433 to i64
%435 = getelementptr inbounds double, double* %431, i64 %434
store double %430, double* %435
%436 = load double, double* %15
%437 = load double*, double** %4
%438 = load i32, i32* %8
%439 = sext i32 %438 to i64
%440 = getelementptr inbounds double, double* %437, i64 %439
store double %436, double* %440
%441 = load double, double* %16
%442 = load double*, double** %4
%443 = load i32, i32* %8
%444 = add nsw i32 %443, 1
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds double, double* %442, i64 %445
store double %441, double* %446
%447 = load i32, i32* %7
%448 = add nsw i32 %447, 2
store i32 %448, i32* %7
%449 = load i32, i32* %14
%450 = load i32, i32* %8
%451 = add nsw i32 %450, %449
store i32 %451, i32* %8
%452 = load double*, double** %4
%453 = load i32, i32* %7
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds double, double* %452, i64 %454
%456 = load double, double* %455
store double %456, double* %15
%457 = load double*, double** %4
%458 = load i32, i32* %7
%459 = add nsw i32 %458, 1
%460 = sext i32 %459 to i64
%461 = getelementptr inbounds double, double* %457, i64 %460
%462 = load double, double* %461
store double %462, double* %16
%463 = load double*, double** %4
%464 = load i32, i32* %8
%465 = sext i32 %464 to i64
%466 = getelementptr inbounds double, double* %463, i64 %465
%467 = load double, double* %466
store double %467, double* %17
%468 = load double*, double** %4
%469 = load i32, i32* %8
%470 = add nsw i32 %469, 1
%471 = sext i32 %470 to i64
%472 = getelementptr inbounds double, double* %468, i64 %471
%473 = load double, double* %472
store double %473, double* %18
%474 = load double, double* %17
%475 = load double*, double** %4
%476 = load i32, i32* %7
%477 = sext i32 %476 to i64
%478 = getelementptr inbounds double, double* %475, i64 %477
store double %474, double* %478
%479 = load double, double* %18
%480 = load double*, double** %4
%481 = load i32, i32* %7
%482 = add nsw i32 %481, 1
%483 = sext i32 %482 to i64
%484 = getelementptr inbounds double, double* %480, i64 %483
store double %479, double* %484
%485 = load double, double* %15
%486 = load double*, double** %4
%487 = load i32, i32* %8
%488 = sext i32 %487 to i64
%489 = getelementptr inbounds double, double* %486, i64 %488
store double %485, double* %489
%490 = load double, double* %16
%491 = load double*, double** %4
%492 = load i32, i32* %8
%493 = add nsw i32 %492, 1
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds double, double* %491, i64 %494
store double %490, double* %495
%496 = load i32, i32* %10
%497 = load i32, i32* %7
%498 = add nsw i32 %497, %496
store i32 %498, i32* %7
%499 = load i32, i32* %10
%500 = mul nsw i32 2, %499
%501 = load i32, i32* %8
%502 = add nsw i32 %501, %500
store i32 %502, i32* %8
%503 = load double*, double** %4
%504 = load i32, i32* %7
%505 = sext i32 %504 to i64
%506 = getelementptr inbounds double, double* %503, i64 %505
%507 = load double, double* %506
store double %507, double* %15
%508 = load double*, double** %4
%509 = load i32, i32* %7
%510 = add nsw i32 %509, 1
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds double, double* %508, i64 %511
%513 = load double, double* %512
store double %513, double* %16
%514 = load double*, double** %4
%515 = load i32, i32* %8
%516 = sext i32 %515 to i64
%517 = getelementptr inbounds double, double* %514, i64 %516
%518 = load double, double* %517
store double %518, double* %17
%519 = load double*, double** %4
%520 = load i32, i32* %8
%521 = add nsw i32 %520, 1
%522 = sext i32 %521 to i64
%523 = getelementptr inbounds double, double* %519, i64 %522
%524 = load double, double* %523
store double %524, double* %18
%525 = load double, double* %17
%526 = load double*, double** %4
%527 = load i32, i32* %7
%528 = sext i32 %527 to i64
%529 = getelementptr inbounds double, double* %526, i64 %528
store double %525, double* %529
%530 = load double, double* %18
%531 = load double*, double** %4
%532 = load i32, i32* %7
%533 = add nsw i32 %532, 1
%534 = sext i32 %533 to i64
%535 = getelementptr inbounds double, double* %531, i64 %534
store double %530, double* %535
%536 = load double, double* %15
%537 = load double*, double** %4
%538 = load i32, i32* %8
%539 = sext i32 %538 to i64
%540 = getelementptr inbounds double, double* %537, i64 %539
store double %536, double* %540
%541 = load double, double* %16
%542 = load double*, double** %4
%543 = load i32, i32* %8
%544 = add nsw i32 %543, 1
%545 = sext i32 %544 to i64
%546 = getelementptr inbounds double, double* %542, i64 %545
store double %541, double* %546
%547 = load i32, i32* %10
%548 = load i32, i32* %7
%549 = add nsw i32 %548, %547
store i32 %549, i32* %7
%550 = load i32, i32* %10
%551 = load i32, i32* %8
%552 = sub nsw i32 %551, %550
store i32 %552, i32* %8
%553 = load double*, double** %4
%554 = load i32, i32* %7
%555 = sext i32 %554 to i64
%556 = getelementptr inbounds double, double* %553, i64 %555
%557 = load double, double* %556
store double %557, double* %15
%558 = load double*, double** %4
%559 = load i32, i32* %7
%560 = add nsw i32 %559, 1
%561 = sext i32 %560 to i64
%562 = getelementptr inbounds double, double* %558, i64 %561
%563 = load double, double* %562
store double %563, double* %16
%564 = load double*, double** %4
%565 = load i32, i32* %8
%566 = sext i32 %565 to i64
%567 = getelementptr inbounds double, double* %564, i64 %566
%568 = load double, double* %567
store double %568, double* %17
%569 = load double*, double** %4
%570 = load i32, i32* %8
%571 = add nsw i32 %570, 1
%572 = sext i32 %571 to i64
%573 = getelementptr inbounds double, double* %569, i64 %572
%574 = load double, double* %573
store double %574, double* %18
%575 = load double, double* %17
%576 = load double*, double** %4
%577 = load i32, i32* %7
%578 = sext i32 %577 to i64
%579 = getelementptr inbounds double, double* %576, i64 %578
store double %575, double* %579
%580 = load double, double* %18
%581 = load double*, double** %4
%582 = load i32, i32* %7
%583 = add nsw i32 %582, 1
%584 = sext i32 %583 to i64
%585 = getelementptr inbounds double, double* %581, i64 %584
store double %580, double* %585
%586 = load double, double* %15
%587 = load double*, double** %4
%588 = load i32, i32* %8
%589 = sext i32 %588 to i64
%590 = getelementptr inbounds double, double* %587, i64 %589
store double %586, double* %590
%591 = load double, double* %16
%592 = load double*, double** %4
%593 = load i32, i32* %8
%594 = add nsw i32 %593, 1
%595 = sext i32 %594 to i64
%596 = getelementptr inbounds double, double* %592, i64 %595
store double %591, double* %596
%597 = load i32, i32* %10
%598 = load i32, i32* %7
%599 = add nsw i32 %598, %597
store i32 %599, i32* %7
%600 = load i32, i32* %10
%601 = mul nsw i32 2, %600
%602 = load i32, i32* %8
%603 = add nsw i32 %602, %601
store i32 %603, i32* %8
%604 = load double*, double** %4
%605 = load i32, i32* %7
%606 = sext i32 %605 to i64
%607 = getelementptr inbounds double, double* %604, i64 %606
%608 = load double, double* %607
store double %608, double* %15
%609 = load double*, double** %4
%610 = load i32, i32* %7
%611 = add nsw i32 %610, 1
%612 = sext i32 %611 to i64
%613 = getelementptr inbounds double, double* %609, i64 %612
%614 = load double, double* %613
store double %614, double* %16
%615 = load double*, double** %4
%616 = load i32, i32* %8
%617 = sext i32 %616 to i64
%618 = getelementptr inbounds double, double* %615, i64 %617
%619 = load double, double* %618
store double %619, double* %17
%620 = load double*, double** %4
%621 = load i32, i32* %8
%622 = add nsw i32 %621, 1
%623 = sext i32 %622 to i64
%624 = getelementptr inbounds double, double* %620, i64 %623
%625 = load double, double* %624
store double %625, double* %18
%626 = load double, double* %17
%627 = load double*, double** %4
%628 = load i32, i32* %7
%629 = sext i32 %628 to i64
%630 = getelementptr inbounds double, double* %627, i64 %629
store double %626, double* %630
%631 = load double, double* %18
%632 = load double*, double** %4
%633 = load i32, i32* %7
%634 = add nsw i32 %633, 1
%635 = sext i32 %634 to i64
%636 = getelementptr inbounds double, double* %632, i64 %635
store double %631, double* %636
%637 = load double, double* %15
%638 = load double*, double** %4
%639 = load i32, i32* %8
%640 = sext i32 %639 to i64
%641 = getelementptr inbounds double, double* %638, i64 %640
store double %637, double* %641
%642 = load double, double* %16
%643 = load double*, double** %4
%644 = load i32, i32* %8
%645 = add nsw i32 %644, 1
%646 = sext i32 %645 to i64
%647 = getelementptr inbounds double, double* %643, i64 %646
store double %642, double* %647
%648 = load i32, i32* %14
%649 = load i32, i32* %7
%650 = sub nsw i32 %649, %648
store i32 %650, i32* %7
%651 = load i32, i32* %8
%652 = sub nsw i32 %651, 2
store i32 %652, i32* %8
%653 = load double*, double** %4
%654 = load i32, i32* %7
%655 = sext i32 %654 to i64
%656 = getelementptr inbounds double, double* %653, i64 %655
%657 = load double, double* %656
store double %657, double* %15
%658 = load double*, double** %4
%659 = load i32, i32* %7
%660 = add nsw i32 %659, 1
%661 = sext i32 %660 to i64
%662 = getelementptr inbounds double, double* %658, i64 %661
%663 = load double, double* %662
store double %663, double* %16
%664 = load double*, double** %4
%665 = load i32, i32* %8
%666 = sext i32 %665 to i64
%667 = getelementptr inbounds double, double* %664, i64 %666
%668 = load double, double* %667
store double %668, double* %17
%669 = load double*, double** %4
%670 = load i32, i32* %8
%671 = add nsw i32 %670, 1
%672 = sext i32 %671 to i64
%673 = getelementptr inbounds double, double* %669, i64 %672
%674 = load double, double* %673
store double %674, double* %18
%675 = load double, double* %17
%676 = load double*, double** %4
%677 = load i32, i32* %7
%678 = sext i32 %677 to i64
%679 = getelementptr inbounds double, double* %676, i64 %678
store double %675, double* %679
%680 = load double, double* %18
%681 = load double*, double** %4
%682 = load i32, i32* %7
%683 = add nsw i32 %682, 1
%684 = sext i32 %683 to i64
%685 = getelementptr inbounds double, double* %681, i64 %684
store double %680, double* %685
%686 = load double, double* %15
%687 = load double*, double** %4
%688 = load i32, i32* %8
%689 = sext i32 %688 to i64
%690 = getelementptr inbounds double, double* %687, i64 %689
store double %686, double* %690
%691 = load double, double* %16
%692 = load double*, double** %4
%693 = load i32, i32* %8
%694 = add nsw i32 %693, 1
%695 = sext i32 %694 to i64
%696 = getelementptr inbounds double, double* %692, i64 %695
store double %691, double* %696
%697 = load i32, i32* %10
%698 = load i32, i32* %7
%699 = sub nsw i32 %698, %697
store i32 %699, i32* %7
%700 = load i32, i32* %10
%701 = mul nsw i32 2, %700
%702 = load i32, i32* %8
%703 = sub nsw i32 %702, %701
store i32 %703, i32* %8
%704 = load double*, double** %4
%705 = load i32, i32* %7
%706 = sext i32 %705 to i64
%707 = getelementptr inbounds double, double* %704, i64 %706
%708 = load double, double* %707
store double %708, double* %15
%709 = load double*, double** %4
%710 = load i32, i32* %7
%711 = add nsw i32 %710, 1
%712 = sext i32 %711 to i64
%713 = getelementptr inbounds double, double* %709, i64 %712
%714 = load double, double* %713
store double %714, double* %16
%715 = load double*, double** %4
%716 = load i32, i32* %8
%717 = sext i32 %716 to i64
%718 = getelementptr inbounds double, double* %715, i64 %717
%719 = load double, double* %718
store double %719, double* %17
%720 = load double*, double** %4
%721 = load i32, i32* %8
%722 = add nsw i32 %721, 1
%723 = sext i32 %722 to i64
%724 = getelementptr inbounds double, double* %720, i64 %723
%725 = load double, double* %724
store double %725, double* %18
%726 = load double, double* %17
%727 = load double*, double** %4
%728 = load i32, i32* %7
%729 = sext i32 %728 to i64
%730 = getelementptr inbounds double, double* %727, i64 %729
store double %726, double* %730
%731 = load double, double* %18
%732 = load double*, double** %4
%733 = load i32, i32* %7
%734 = add nsw i32 %733, 1
%735 = sext i32 %734 to i64
%736 = getelementptr inbounds double, double* %732, i64 %735
store double %731, double* %736
%737 = load double, double* %15
%738 = load double*, double** %4
%739 = load i32, i32* %8
%740 = sext i32 %739 to i64
%741 = getelementptr inbounds double, double* %738, i64 %740
store double %737, double* %741
%742 = load double, double* %16
%743 = load double*, double** %4
%744 = load i32, i32* %8
%745 = add nsw i32 %744, 1
%746 = sext i32 %745 to i64
%747 = getelementptr inbounds double, double* %743, i64 %746
store double %742, double* %747
%748 = load i32, i32* %10
%749 = load i32, i32* %7
%750 = sub nsw i32 %749, %748
store i32 %750, i32* %7
%751 = load i32, i32* %10
%752 = load i32, i32* %8
%753 = add nsw i32 %752, %751
store i32 %753, i32* %8
%754 = load double*, double** %4
%755 = load i32, i32* %7
%756 = sext i32 %755 to i64
%757 = getelementptr inbounds double, double* %754, i64 %756
%758 = load double, double* %757
store double %758, double* %15
%759 = load double*, double** %4
%760 = load i32, i32* %7
%761 = add nsw i32 %760, 1
%762 = sext i32 %761 to i64
%763 = getelementptr inbounds double, double* %759, i64 %762
%764 = load double, double* %763
store double %764, double* %16
%765 = load double*, double** %4
%766 = load i32, i32* %8
%767 = sext i32 %766 to i64
%768 = getelementptr inbounds double, double* %765, i64 %767
%769 = load double, double* %768
store double %769, double* %17
%770 = load double*, double** %4
%771 = load i32, i32* %8
%772 = add nsw i32 %771, 1
%773 = sext i32 %772 to i64
%774 = getelementptr inbounds double, double* %770, i64 %773
%775 = load double, double* %774
store double %775, double* %18
%776 = load double, double* %17
%777 = load double*, double** %4
%778 = load i32, i32* %7
%779 = sext i32 %778 to i64
%780 = getelementptr inbounds double, double* %777, i64 %779
store double %776, double* %780
%781 = load double, double* %18
%782 = load double*, double** %4
%783 = load i32, i32* %7
%784 = add nsw i32 %783, 1
%785 = sext i32 %784 to i64
%786 = getelementptr inbounds double, double* %782, i64 %785
store double %781, double* %786
%787 = load double, double* %15
%788 = load double*, double** %4
%789 = load i32, i32* %8
%790 = sext i32 %789 to i64
%791 = getelementptr inbounds double, double* %788, i64 %790
store double %787, double* %791
%792 = load double, double* %16
%793 = load double*, double** %4
%794 = load i32, i32* %8
%795 = add nsw i32 %794, 1
%796 = sext i32 %795 to i64
%797 = getelementptr inbounds double, double* %793, i64 %796
store double %792, double* %797
%798 = load i32, i32* %10
%799 = load i32, i32* %7
%800 = sub nsw i32 %799, %798
store i32 %800, i32* %7
%801 = load i32, i32* %10
%802 = mul nsw i32 2, %801
%803 = load i32, i32* %8
%804 = sub nsw i32 %803, %802
store i32 %804, i32* %8
%805 = load double*, double** %4
%806 = load i32, i32* %7
%807 = sext i32 %806 to i64
%808 = getelementptr inbounds double, double* %805, i64 %807
%809 = load double, double* %808
store double %809, double* %15
%810 = load double*, double** %4
%811 = load i32, i32* %7
%812 = add nsw i32 %811, 1
%813 = sext i32 %812 to i64
%814 = getelementptr inbounds double, double* %810, i64 %813
%815 = load double, double* %814
store double %815, double* %16
%816 = load double*, double** %4
%817 = load i32, i32* %8
%818 = sext i32 %817 to i64
%819 = getelementptr inbounds double, double* %816, i64 %818
%820 = load double, double* %819
store double %820, double* %17
%821 = load double*, double** %4
%822 = load i32, i32* %8
%823 = add nsw i32 %822, 1
%824 = sext i32 %823 to i64
%825 = getelementptr inbounds double, double* %821, i64 %824
%826 = load double, double* %825
store double %826, double* %18
%827 = load double, double* %17
%828 = load double*, double** %4
%829 = load i32, i32* %7
%830 = sext i32 %829 to i64
%831 = getelementptr inbounds double, double* %828, i64 %830
store double %827, double* %831
%832 = load double, double* %18
%833 = load double*, double** %4
%834 = load i32, i32* %7
%835 = add nsw i32 %834, 1
%836 = sext i32 %835 to i64
%837 = getelementptr inbounds double, double* %833, i64 %836
store double %832, double* %837
%838 = load double, double* %15
%839 = load double*, double** %4
%840 = load i32, i32* %8
%841 = sext i32 %840 to i64
%842 = getelementptr inbounds double, double* %839, i64 %841
store double %838, double* %842
%843 = load double, double* %16
%844 = load double*, double** %4
%845 = load i32, i32* %8
%846 = add nsw i32 %845, 1
%847 = sext i32 %846 to i64
%848 = getelementptr inbounds double, double* %844, i64 %847
store double %843, double* %848
%849 = load i32, i32* %14
%850 = ashr i32 %849, 1
store i32 %850, i32* %11
br label %851
851: ; preds = %858, %49
%852 = load i32, i32* %11
%853 = load i32, i32* %11
%854 = load i32, i32* %13
%855 = xor i32 %854, %853
store i32 %855, i32* %13
%856 = icmp sgt i32 %852, %855
br i1 %856, label %857, label %861
857: ; preds = %851
br label %858
858: ; preds = %857
%859 = load i32, i32* %11
%860 = ashr i32 %859, 1
store i32 %860, i32* %11
br label %851
861: ; preds = %851
br label %862
862: ; preds = %861
%863 = load i32, i32* %12
%864 = add nsw i32 %863, 4
store i32 %864, i32* %12
br label %43
865: ; preds = %43
%866 = load i32, i32* %5
%867 = load i32, i32* %6
%868 = add nsw i32 %866, %867
store i32 %868, i32* %8
%869 = load i32, i32* %8
%870 = add nsw i32 %869, 2
store i32 %870, i32* %7
%871 = load i32, i32* %14
%872 = load i32, i32* %8
%873 = add nsw i32 %872, %871
store i32 %873, i32* %8
%874 = load double*, double** %4
%875 = load i32, i32* %7
%876 = sext i32 %875 to i64
%877 = getelementptr inbounds double, double* %874, i64 %876
%878 = load double, double* %877
store double %878, double* %15
%879 = load double*, double** %4
%880 = load i32, i32* %7
%881 = add nsw i32 %880, 1
%882 = sext i32 %881 to i64
%883 = getelementptr inbounds double, double* %879, i64 %882
%884 = load double, double* %883
store double %884, double* %16
%885 = load double*, double** %4
%886 = load i32, i32* %8
%887 = sext i32 %886 to i64
%888 = getelementptr inbounds double, double* %885, i64 %887
%889 = load double, double* %888
store double %889, double* %17
%890 = load double*, double** %4
%891 = load i32, i32* %8
%892 = add nsw i32 %891, 1
%893 = sext i32 %892 to i64
%894 = getelementptr inbounds double, double* %890, i64 %893
%895 = load double, double* %894
store double %895, double* %18
%896 = load double, double* %17
%897 = load double*, double** %4
%898 = load i32, i32* %7
%899 = sext i32 %898 to i64
%900 = getelementptr inbounds double, double* %897, i64 %899
store double %896, double* %900
%901 = load double, double* %18
%902 = load double*, double** %4
%903 = load i32, i32* %7
%904 = add nsw i32 %903, 1
%905 = sext i32 %904 to i64
%906 = getelementptr inbounds double, double* %902, i64 %905
store double %901, double* %906
%907 = load double, double* %15
%908 = load double*, double** %4
%909 = load i32, i32* %8
%910 = sext i32 %909 to i64
%911 = getelementptr inbounds double, double* %908, i64 %910
store double %907, double* %911
%912 = load double, double* %16
%913 = load double*, double** %4
%914 = load i32, i32* %8
%915 = add nsw i32 %914, 1
%916 = sext i32 %915 to i64
%917 = getelementptr inbounds double, double* %913, i64 %916
store double %912, double* %917
%918 = load i32, i32* %10
%919 = load i32, i32* %7
%920 = add nsw i32 %919, %918
store i32 %920, i32* %7
%921 = load i32, i32* %10
%922 = mul nsw i32 2, %921
%923 = load i32, i32* %8
%924 = add nsw i32 %923, %922
store i32 %924, i32* %8
%925 = load double*, double** %4
%926 = load i32, i32* %7
%927 = sext i32 %926 to i64
%928 = getelementptr inbounds double, double* %925, i64 %927
%929 = load double, double* %928
store double %929, double* %15
%930 = load double*, double** %4
%931 = load i32, i32* %7
%932 = add nsw i32 %931, 1
%933 = sext i32 %932 to i64
%934 = getelementptr inbounds double, double* %930, i64 %933
%935 = load double, double* %934
store double %935, double* %16
%936 = load double*, double** %4
%937 = load i32, i32* %8
%938 = sext i32 %937 to i64
%939 = getelementptr inbounds double, double* %936, i64 %938
%940 = load double, double* %939
store double %940, double* %17
%941 = load double*, double** %4
%942 = load i32, i32* %8
%943 = add nsw i32 %942, 1
%944 = sext i32 %943 to i64
%945 = getelementptr inbounds double, double* %941, i64 %944
%946 = load double, double* %945
store double %946, double* %18
%947 = load double, double* %17
%948 = load double*, double** %4
%949 = load i32, i32* %7
%950 = sext i32 %949 to i64
%951 = getelementptr inbounds double, double* %948, i64 %950
store double %947, double* %951
%952 = load double, double* %18
%953 = load double*, double** %4
%954 = load i32, i32* %7
%955 = add nsw i32 %954, 1
%956 = sext i32 %955 to i64
%957 = getelementptr inbounds double, double* %953, i64 %956
store double %952, double* %957
%958 = load double, double* %15
%959 = load double*, double** %4
%960 = load i32, i32* %8
%961 = sext i32 %960 to i64
%962 = getelementptr inbounds double, double* %959, i64 %961
store double %958, double* %962
%963 = load double, double* %16
%964 = load double*, double** %4
%965 = load i32, i32* %8
%966 = add nsw i32 %965, 1
%967 = sext i32 %966 to i64
%968 = getelementptr inbounds double, double* %964, i64 %967
store double %963, double* %968
%969 = load i32, i32* %10
%970 = load i32, i32* %7
%971 = add nsw i32 %970, %969
store i32 %971, i32* %7
%972 = load i32, i32* %10
%973 = load i32, i32* %8
%974 = sub nsw i32 %973, %972
store i32 %974, i32* %8
%975 = load double*, double** %4
%976 = load i32, i32* %7
%977 = sext i32 %976 to i64
%978 = getelementptr inbounds double, double* %975, i64 %977
%979 = load double, double* %978
store double %979, double* %15
%980 = load double*, double** %4
%981 = load i32, i32* %7
%982 = add nsw i32 %981, 1
%983 = sext i32 %982 to i64
%984 = getelementptr inbounds double, double* %980, i64 %983
%985 = load double, double* %984
store double %985, double* %16
%986 = load double*, double** %4
%987 = load i32, i32* %8
%988 = sext i32 %987 to i64
%989 = getelementptr inbounds double, double* %986, i64 %988
%990 = load double, double* %989
store double %990, double* %17
%991 = load double*, double** %4
%992 = load i32, i32* %8
%993 = add nsw i32 %992, 1
%994 = sext i32 %993 to i64
%995 = getelementptr inbounds double, double* %991, i64 %994
%996 = load double, double* %995
store double %996, double* %18
%997 = load double, double* %17
%998 = load double*, double** %4
%999 = load i32, i32* %7
%1000 = sext i32 %999 to i64
%1001 = getelementptr inbounds double, double* %998, i64 %1000
store double %997, double* %1001
%1002 = load double, double* %18
%1003 = load double*, double** %4
%1004 = load i32, i32* %7
%1005 = add nsw i32 %1004, 1
%1006 = sext i32 %1005 to i64
%1007 = getelementptr inbounds double, double* %1003, i64 %1006
store double %1002, double* %1007
%1008 = load double, double* %15
%1009 = load double*, double** %4
%1010 = load i32, i32* %8
%1011 = sext i32 %1010 to i64
%1012 = getelementptr inbounds double, double* %1009, i64 %1011
store double %1008, double* %1012
%1013 = load double, double* %16
%1014 = load double*, double** %4
%1015 = load i32, i32* %8
%1016 = add nsw i32 %1015, 1
%1017 = sext i32 %1016 to i64
%1018 = getelementptr inbounds double, double* %1014, i64 %1017
store double %1013, double* %1018
%1019 = load i32, i32* %7
%1020 = sub nsw i32 %1019, 2
store i32 %1020, i32* %7
%1021 = load i32, i32* %14
%1022 = load i32, i32* %8
%1023 = sub nsw i32 %1022, %1021
store i32 %1023, i32* %8
%1024 = load double*, double** %4
%1025 = load i32, i32* %7
%1026 = sext i32 %1025 to i64
%1027 = getelementptr inbounds double, double* %1024, i64 %1026
%1028 = load double, double* %1027
store double %1028, double* %15
%1029 = load double*, double** %4
%1030 = load i32, i32* %7
%1031 = add nsw i32 %1030, 1
%1032 = sext i32 %1031 to i64
%1033 = getelementptr inbounds double, double* %1029, i64 %1032
%1034 = load double, double* %1033
store double %1034, double* %16
%1035 = load double*, double** %4
%1036 = load i32, i32* %8
%1037 = sext i32 %1036 to i64
%1038 = getelementptr inbounds double, double* %1035, i64 %1037
%1039 = load double, double* %1038
store double %1039, double* %17
%1040 = load double*, double** %4
%1041 = load i32, i32* %8
%1042 = add nsw i32 %1041, 1
%1043 = sext i32 %1042 to i64
%1044 = getelementptr inbounds double, double* %1040, i64 %1043
%1045 = load double, double* %1044
store double %1045, double* %18
%1046 = load double, double* %17
%1047 = load double*, double** %4
%1048 = load i32, i32* %7
%1049 = sext i32 %1048 to i64
%1050 = getelementptr inbounds double, double* %1047, i64 %1049
store double %1046, double* %1050
%1051 = load double, double* %18
%1052 = load double*, double** %4
%1053 = load i32, i32* %7
%1054 = add nsw i32 %1053, 1
%1055 = sext i32 %1054 to i64
%1056 = getelementptr inbounds double, double* %1052, i64 %1055
store double %1051, double* %1056
%1057 = load double, double* %15
%1058 = load double*, double** %4
%1059 = load i32, i32* %8
%1060 = sext i32 %1059 to i64
%1061 = getelementptr inbounds double, double* %1058, i64 %1060
store double %1057, double* %1061
%1062 = load double, double* %16
%1063 = load double*, double** %4
%1064 = load i32, i32* %8
%1065 = add nsw i32 %1064, 1
%1066 = sext i32 %1065 to i64
%1067 = getelementptr inbounds double, double* %1063, i64 %1066
store double %1062, double* %1067
%1068 = load i32, i32* %14
%1069 = add nsw i32 %1068, 2
%1070 = load i32, i32* %7
%1071 = add nsw i32 %1070, %1069
store i32 %1071, i32* %7
%1072 = load i32, i32* %14
%1073 = add nsw i32 %1072, 2
%1074 = load i32, i32* %8
%1075 = add nsw i32 %1074, %1073
store i32 %1075, i32* %8
%1076 = load double*, double** %4
%1077 = load i32, i32* %7
%1078 = sext i32 %1077 to i64
%1079 = getelementptr inbounds double, double* %1076, i64 %1078
%1080 = load double, double* %1079
store double %1080, double* %15
%1081 = load double*, double** %4
%1082 = load i32, i32* %7
%1083 = add nsw i32 %1082, 1
%1084 = sext i32 %1083 to i64
%1085 = getelementptr inbounds double, double* %1081, i64 %1084
%1086 = load double, double* %1085
store double %1086, double* %16
%1087 = load double*, double** %4
%1088 = load i32, i32* %8
%1089 = sext i32 %1088 to i64
%1090 = getelementptr inbounds double, double* %1087, i64 %1089
%1091 = load double, double* %1090
store double %1091, double* %17
%1092 = load double*, double** %4
%1093 = load i32, i32* %8
%1094 = add nsw i32 %1093, 1
%1095 = sext i32 %1094 to i64
%1096 = getelementptr inbounds double, double* %1092, i64 %1095
%1097 = load double, double* %1096
store double %1097, double* %18
%1098 = load double, double* %17
%1099 = load double*, double** %4
%1100 = load i32, i32* %7
%1101 = sext i32 %1100 to i64
%1102 = getelementptr inbounds double, double* %1099, i64 %1101
store double %1098, double* %1102
%1103 = load double, double* %18
%1104 = load double*, double** %4
%1105 = load i32, i32* %7
%1106 = add nsw i32 %1105, 1
%1107 = sext i32 %1106 to i64
%1108 = getelementptr inbounds double, double* %1104, i64 %1107
store double %1103, double* %1108
%1109 = load double, double* %15
%1110 = load double*, double** %4
%1111 = load i32, i32* %8
%1112 = sext i32 %1111 to i64
%1113 = getelementptr inbounds double, double* %1110, i64 %1112
store double %1109, double* %1113
%1114 = load double, double* %16
%1115 = load double*, double** %4
%1116 = load i32, i32* %8
%1117 = add nsw i32 %1116, 1
%1118 = sext i32 %1117 to i64
%1119 = getelementptr inbounds double, double* %1115, i64 %1118
store double %1114, double* %1119
%1120 = load i32, i32* %14
%1121 = load i32, i32* %10
%1122 = sub nsw i32 %1120, %1121
%1123 = load i32, i32* %7
%1124 = sub nsw i32 %1123, %1122
store i32 %1124, i32* %7
%1125 = load i32, i32* %10
%1126 = mul nsw i32 2, %1125
%1127 = sub nsw i32 %1126, 2
%1128 = load i32, i32* %8
%1129 = add nsw i32 %1128, %1127
store i32 %1129, i32* %8
%1130 = load double*, double** %4
%1131 = load i32, i32* %7
%1132 = sext i32 %1131 to i64
%1133 = getelementptr inbounds double, double* %1130, i64 %1132
%1134 = load double, double* %1133
store double %1134, double* %15
%1135 = load double*, double** %4
%1136 = load i32, i32* %7
%1137 = add nsw i32 %1136, 1
%1138 = sext i32 %1137 to i64
%1139 = getelementptr inbounds double, double* %1135, i64 %1138
%1140 = load double, double* %1139
store double %1140, double* %16
%1141 = load double*, double** %4
%1142 = load i32, i32* %8
%1143 = sext i32 %1142 to i64
%1144 = getelementptr inbounds double, double* %1141, i64 %1143
%1145 = load double, double* %1144
store double %1145, double* %17
%1146 = load double*, double** %4
%1147 = load i32, i32* %8
%1148 = add nsw i32 %1147, 1
%1149 = sext i32 %1148 to i64
%1150 = getelementptr inbounds double, double* %1146, i64 %1149
%1151 = load double, double* %1150
store double %1151, double* %18
%1152 = load double, double* %17
%1153 = load double*, double** %4
%1154 = load i32, i32* %7
%1155 = sext i32 %1154 to i64
%1156 = getelementptr inbounds double, double* %1153, i64 %1155
store double %1152, double* %1156
%1157 = load double, double* %18
%1158 = load double*, double** %4
%1159 = load i32, i32* %7
%1160 = add nsw i32 %1159, 1
%1161 = sext i32 %1160 to i64
%1162 = getelementptr inbounds double, double* %1158, i64 %1161
store double %1157, double* %1162
%1163 = load double, double* %15
%1164 = load double*, double** %4
%1165 = load i32, i32* %8
%1166 = sext i32 %1165 to i64
%1167 = getelementptr inbounds double, double* %1164, i64 %1166
store double %1163, double* %1167
%1168 = load double, double* %16
%1169 = load double*, double** %4
%1170 = load i32, i32* %8
%1171 = add nsw i32 %1170, 1
%1172 = sext i32 %1171 to i64
%1173 = getelementptr inbounds double, double* %1169, i64 %1172
store double %1168, double* %1173
%1174 = load i32, i32* %14
%1175 = ashr i32 %1174, 1
store i32 %1175, i32* %11
br label %1176
1176: ; preds = %1183, %865
%1177 = load i32, i32* %11
%1178 = load i32, i32* %11
%1179 = load i32, i32* %5
%1180 = xor i32 %1179, %1178
store i32 %1180, i32* %5
%1181 = icmp sgt i32 %1177, %1180
br i1 %1181, label %1182, label %1186
1182: ; preds = %1176
br label %1183
1183: ; preds = %1182
%1184 = load i32, i32* %11
%1185 = ashr i32 %1184, 1
store i32 %1185, i32* %11
br label %1176
1186: ; preds = %1176
br label %1187
1187: ; preds = %1186
%1188 = load i32, i32* %6
%1189 = add nsw i32 %1188, 4
store i32 %1189, i32* %6
br label %36
1190: ; preds = %36
br label %1733
1191: ; preds = %30
store i32 0, i32* %5
store i32 0, i32* %6
br label %1192
1192: ; preds = %1729, %1191
%1193 = load i32, i32* %6
%1194 = load i32, i32* %10
%1195 = icmp slt i32 %1193, %1194
br i1 %1195, label %1196, label %1732
1196: ; preds = %1192
%1197 = load i32, i32* %6
store i32 %1197, i32* %13
%1198 = load i32, i32* %5
store i32 %1198, i32* %12
br label %1199
1199: ; preds = %1610, %1196
%1200 = load i32, i32* %12
%1201 = load i32, i32* %5
%1202 = load i32, i32* %6
%1203 = add nsw i32 %1201, %1202
%1204 = icmp slt i32 %1200, %1203
br i1 %1204, label %1205, label %1613
1205: ; preds = %1199
%1206 = load double*, double** %4
%1207 = load i32, i32* %12
%1208 = sext i32 %1207 to i64
%1209 = getelementptr inbounds double, double* %1206, i64 %1208
%1210 = load double, double* %1209
store double %1210, double* %15
%1211 = load double*, double** %4
%1212 = load i32, i32* %12
%1213 = add nsw i32 %1212, 1
%1214 = sext i32 %1213 to i64
%1215 = getelementptr inbounds double, double* %1211, i64 %1214
%1216 = load double, double* %1215
store double %1216, double* %16
%1217 = load double*, double** %4
%1218 = load i32, i32* %13
%1219 = sext i32 %1218 to i64
%1220 = getelementptr inbounds double, double* %1217, i64 %1219
%1221 = load double, double* %1220
store double %1221, double* %17
%1222 = load double*, double** %4
%1223 = load i32, i32* %13
%1224 = add nsw i32 %1223, 1
%1225 = sext i32 %1224 to i64
%1226 = getelementptr inbounds double, double* %1222, i64 %1225
%1227 = load double, double* %1226
store double %1227, double* %18
%1228 = load double, double* %17
%1229 = load double*, double** %4
%1230 = load i32, i32* %12
%1231 = sext i32 %1230 to i64
%1232 = getelementptr inbounds double, double* %1229, i64 %1231
store double %1228, double* %1232
%1233 = load double, double* %18
%1234 = load double*, double** %4
%1235 = load i32, i32* %12
%1236 = add nsw i32 %1235, 1
%1237 = sext i32 %1236 to i64
%1238 = getelementptr inbounds double, double* %1234, i64 %1237
store double %1233, double* %1238
%1239 = load double, double* %15
%1240 = load double*, double** %4
%1241 = load i32, i32* %13
%1242 = sext i32 %1241 to i64
%1243 = getelementptr inbounds double, double* %1240, i64 %1242
store double %1239, double* %1243
%1244 = load double, double* %16
%1245 = load double*, double** %4
%1246 = load i32, i32* %13
%1247 = add nsw i32 %1246, 1
%1248 = sext i32 %1247 to i64
%1249 = getelementptr inbounds double, double* %1245, i64 %1248
store double %1244, double* %1249
%1250 = load i32, i32* %12
%1251 = load i32, i32* %10
%1252 = add nsw i32 %1250, %1251
store i32 %1252, i32* %7
%1253 = load i32, i32* %13
%1254 = load i32, i32* %10
%1255 = add nsw i32 %1253, %1254
store i32 %1255, i32* %8
%1256 = load double*, double** %4
%1257 = load i32, i32* %7
%1258 = sext i32 %1257 to i64
%1259 = getelementptr inbounds double, double* %1256, i64 %1258
%1260 = load double, double* %1259
store double %1260, double* %15
%1261 = load double*, double** %4
%1262 = load i32, i32* %7
%1263 = add nsw i32 %1262, 1
%1264 = sext i32 %1263 to i64
%1265 = getelementptr inbounds double, double* %1261, i64 %1264
%1266 = load double, double* %1265
store double %1266, double* %16
%1267 = load double*, double** %4
%1268 = load i32, i32* %8
%1269 = sext i32 %1268 to i64
%1270 = getelementptr inbounds double, double* %1267, i64 %1269
%1271 = load double, double* %1270
store double %1271, double* %17
%1272 = load double*, double** %4
%1273 = load i32, i32* %8
%1274 = add nsw i32 %1273, 1
%1275 = sext i32 %1274 to i64
%1276 = getelementptr inbounds double, double* %1272, i64 %1275
%1277 = load double, double* %1276
store double %1277, double* %18
%1278 = load double, double* %17
%1279 = load double*, double** %4
%1280 = load i32, i32* %7
%1281 = sext i32 %1280 to i64
%1282 = getelementptr inbounds double, double* %1279, i64 %1281
store double %1278, double* %1282
%1283 = load double, double* %18
%1284 = load double*, double** %4
%1285 = load i32, i32* %7
%1286 = add nsw i32 %1285, 1
%1287 = sext i32 %1286 to i64
%1288 = getelementptr inbounds double, double* %1284, i64 %1287
store double %1283, double* %1288
%1289 = load double, double* %15
%1290 = load double*, double** %4
%1291 = load i32, i32* %8
%1292 = sext i32 %1291 to i64
%1293 = getelementptr inbounds double, double* %1290, i64 %1292
store double %1289, double* %1293
%1294 = load double, double* %16
%1295 = load double*, double** %4
%1296 = load i32, i32* %8
%1297 = add nsw i32 %1296, 1
%1298 = sext i32 %1297 to i64
%1299 = getelementptr inbounds double, double* %1295, i64 %1298
store double %1294, double* %1299
%1300 = load i32, i32* %14
%1301 = load i32, i32* %7
%1302 = add nsw i32 %1301, %1300
store i32 %1302, i32* %7
%1303 = load i32, i32* %8
%1304 = add nsw i32 %1303, 2
store i32 %1304, i32* %8
%1305 = load double*, double** %4
%1306 = load i32, i32* %7
%1307 = sext i32 %1306 to i64
%1308 = getelementptr inbounds double, double* %1305, i64 %1307
%1309 = load double, double* %1308
store double %1309, double* %15
%1310 = load double*, double** %4
%1311 = load i32, i32* %7
%1312 = add nsw i32 %1311, 1
%1313 = sext i32 %1312 to i64
%1314 = getelementptr inbounds double, double* %1310, i64 %1313
%1315 = load double, double* %1314
store double %1315, double* %16
%1316 = load double*, double** %4
%1317 = load i32, i32* %8
%1318 = sext i32 %1317 to i64
%1319 = getelementptr inbounds double, double* %1316, i64 %1318
%1320 = load double, double* %1319
store double %1320, double* %17
%1321 = load double*, double** %4
%1322 = load i32, i32* %8
%1323 = add nsw i32 %1322, 1
%1324 = sext i32 %1323 to i64
%1325 = getelementptr inbounds double, double* %1321, i64 %1324
%1326 = load double, double* %1325
store double %1326, double* %18
%1327 = load double, double* %17
%1328 = load double*, double** %4
%1329 = load i32, i32* %7
%1330 = sext i32 %1329 to i64
%1331 = getelementptr inbounds double, double* %1328, i64 %1330
store double %1327, double* %1331
%1332 = load double, double* %18
%1333 = load double*, double** %4
%1334 = load i32, i32* %7
%1335 = add nsw i32 %1334, 1
%1336 = sext i32 %1335 to i64
%1337 = getelementptr inbounds double, double* %1333, i64 %1336
store double %1332, double* %1337
%1338 = load double, double* %15
%1339 = load double*, double** %4
%1340 = load i32, i32* %8
%1341 = sext i32 %1340 to i64
%1342 = getelementptr inbounds double, double* %1339, i64 %1341
store double %1338, double* %1342
%1343 = load double, double* %16
%1344 = load double*, double** %4
%1345 = load i32, i32* %8
%1346 = add nsw i32 %1345, 1
%1347 = sext i32 %1346 to i64
%1348 = getelementptr inbounds double, double* %1344, i64 %1347
store double %1343, double* %1348
%1349 = load i32, i32* %10
%1350 = load i32, i32* %7
%1351 = sub nsw i32 %1350, %1349
store i32 %1351, i32* %7
%1352 = load i32, i32* %10
%1353 = load i32, i32* %8
%1354 = sub nsw i32 %1353, %1352
store i32 %1354, i32* %8
%1355 = load double*, double** %4
%1356 = load i32, i32* %7
%1357 = sext i32 %1356 to i64
%1358 = getelementptr inbounds double, double* %1355, i64 %1357
%1359 = load double, double* %1358
store double %1359, double* %15
%1360 = load double*, double** %4
%1361 = load i32, i32* %7
%1362 = add nsw i32 %1361, 1
%1363 = sext i32 %1362 to i64
%1364 = getelementptr inbounds double, double* %1360, i64 %1363
%1365 = load double, double* %1364
store double %1365, double* %16
%1366 = load double*, double** %4
%1367 = load i32, i32* %8
%1368 = sext i32 %1367 to i64
%1369 = getelementptr inbounds double, double* %1366, i64 %1368
%1370 = load double, double* %1369
store double %1370, double* %17
%1371 = load double*, double** %4
%1372 = load i32, i32* %8
%1373 = add nsw i32 %1372, 1
%1374 = sext i32 %1373 to i64
%1375 = getelementptr inbounds double, double* %1371, i64 %1374
%1376 = load double, double* %1375
store double %1376, double* %18
%1377 = load double, double* %17
%1378 = load double*, double** %4
%1379 = load i32, i32* %7
%1380 = sext i32 %1379 to i64
%1381 = getelementptr inbounds double, double* %1378, i64 %1380
store double %1377, double* %1381
%1382 = load double, double* %18
%1383 = load double*, double** %4
%1384 = load i32, i32* %7
%1385 = add nsw i32 %1384, 1
%1386 = sext i32 %1385 to i64
%1387 = getelementptr inbounds double, double* %1383, i64 %1386
store double %1382, double* %1387
%1388 = load double, double* %15
%1389 = load double*, double** %4
%1390 = load i32, i32* %8
%1391 = sext i32 %1390 to i64
%1392 = getelementptr inbounds double, double* %1389, i64 %1391
store double %1388, double* %1392
%1393 = load double, double* %16
%1394 = load double*, double** %4
%1395 = load i32, i32* %8
%1396 = add nsw i32 %1395, 1
%1397 = sext i32 %1396 to i64
%1398 = getelementptr inbounds double, double* %1394, i64 %1397
store double %1393, double* %1398
%1399 = load i32, i32* %7
%1400 = add nsw i32 %1399, 2
store i32 %1400, i32* %7
%1401 = load i32, i32* %14
%1402 = load i32, i32* %8
%1403 = add nsw i32 %1402, %1401
store i32 %1403, i32* %8
%1404 = load double*, double** %4
%1405 = load i32, i32* %7
%1406 = sext i32 %1405 to i64
%1407 = getelementptr inbounds double, double* %1404, i64 %1406
%1408 = load double, double* %1407
store double %1408, double* %15
%1409 = load double*, double** %4
%1410 = load i32, i32* %7
%1411 = add nsw i32 %1410, 1
%1412 = sext i32 %1411 to i64
%1413 = getelementptr inbounds double, double* %1409, i64 %1412
%1414 = load double, double* %1413
store double %1414, double* %16
%1415 = load double*, double** %4
%1416 = load i32, i32* %8
%1417 = sext i32 %1416 to i64
%1418 = getelementptr inbounds double, double* %1415, i64 %1417
%1419 = load double, double* %1418
store double %1419, double* %17
%1420 = load double*, double** %4
%1421 = load i32, i32* %8
%1422 = add nsw i32 %1421, 1
%1423 = sext i32 %1422 to i64
%1424 = getelementptr inbounds double, double* %1420, i64 %1423
%1425 = load double, double* %1424
store double %1425, double* %18
%1426 = load double, double* %17
%1427 = load double*, double** %4
%1428 = load i32, i32* %7
%1429 = sext i32 %1428 to i64
%1430 = getelementptr inbounds double, double* %1427, i64 %1429
store double %1426, double* %1430
%1431 = load double, double* %18
%1432 = load double*, double** %4
%1433 = load i32, i32* %7
%1434 = add nsw i32 %1433, 1
%1435 = sext i32 %1434 to i64
%1436 = getelementptr inbounds double, double* %1432, i64 %1435
store double %1431, double* %1436
%1437 = load double, double* %15
%1438 = load double*, double** %4
%1439 = load i32, i32* %8
%1440 = sext i32 %1439 to i64
%1441 = getelementptr inbounds double, double* %1438, i64 %1440
store double %1437, double* %1441
%1442 = load double, double* %16
%1443 = load double*, double** %4
%1444 = load i32, i32* %8
%1445 = add nsw i32 %1444, 1
%1446 = sext i32 %1445 to i64
%1447 = getelementptr inbounds double, double* %1443, i64 %1446
store double %1442, double* %1447
%1448 = load i32, i32* %10
%1449 = load i32, i32* %7
%1450 = add nsw i32 %1449, %1448
store i32 %1450, i32* %7
%1451 = load i32, i32* %10
%1452 = load i32, i32* %8
%1453 = add nsw i32 %1452, %1451
store i32 %1453, i32* %8
%1454 = load double*, double** %4
%1455 = load i32, i32* %7
%1456 = sext i32 %1455 to i64
%1457 = getelementptr inbounds double, double* %1454, i64 %1456
%1458 = load double, double* %1457
store double %1458, double* %15
%1459 = load double*, double** %4
%1460 = load i32, i32* %7
%1461 = add nsw i32 %1460, 1
%1462 = sext i32 %1461 to i64
%1463 = getelementptr inbounds double, double* %1459, i64 %1462
%1464 = load double, double* %1463
store double %1464, double* %16
%1465 = load double*, double** %4
%1466 = load i32, i32* %8
%1467 = sext i32 %1466 to i64
%1468 = getelementptr inbounds double, double* %1465, i64 %1467
%1469 = load double, double* %1468
store double %1469, double* %17
%1470 = load double*, double** %4
%1471 = load i32, i32* %8
%1472 = add nsw i32 %1471, 1
%1473 = sext i32 %1472 to i64
%1474 = getelementptr inbounds double, double* %1470, i64 %1473
%1475 = load double, double* %1474
store double %1475, double* %18
%1476 = load double, double* %17
%1477 = load double*, double** %4
%1478 = load i32, i32* %7
%1479 = sext i32 %1478 to i64
%1480 = getelementptr inbounds double, double* %1477, i64 %1479
store double %1476, double* %1480
%1481 = load double, double* %18
%1482 = load double*, double** %4
%1483 = load i32, i32* %7
%1484 = add nsw i32 %1483, 1
%1485 = sext i32 %1484 to i64
%1486 = getelementptr inbounds double, double* %1482, i64 %1485
store double %1481, double* %1486
%1487 = load double, double* %15
%1488 = load double*, double** %4
%1489 = load i32, i32* %8
%1490 = sext i32 %1489 to i64
%1491 = getelementptr inbounds double, double* %1488, i64 %1490
store double %1487, double* %1491
%1492 = load double, double* %16
%1493 = load double*, double** %4
%1494 = load i32, i32* %8
%1495 = add nsw i32 %1494, 1
%1496 = sext i32 %1495 to i64
%1497 = getelementptr inbounds double, double* %1493, i64 %1496
store double %1492, double* %1497
%1498 = load i32, i32* %14
%1499 = load i32, i32* %7
%1500 = sub nsw i32 %1499, %1498
store i32 %1500, i32* %7
%1501 = load i32, i32* %8
%1502 = sub nsw i32 %1501, 2
store i32 %1502, i32* %8
%1503 = load double*, double** %4
%1504 = load i32, i32* %7
%1505 = sext i32 %1504 to i64
%1506 = getelementptr inbounds double, double* %1503, i64 %1505
%1507 = load double, double* %1506
store double %1507, double* %15
%1508 = load double*, double** %4
%1509 = load i32, i32* %7
%1510 = add nsw i32 %1509, 1
%1511 = sext i32 %1510 to i64
%1512 = getelementptr inbounds double, double* %1508, i64 %1511
%1513 = load double, double* %1512
store double %1513, double* %16
%1514 = load double*, double** %4
%1515 = load i32, i32* %8
%1516 = sext i32 %1515 to i64
%1517 = getelementptr inbounds double, double* %1514, i64 %1516
%1518 = load double, double* %1517
store double %1518, double* %17
%1519 = load double*, double** %4
%1520 = load i32, i32* %8
%1521 = add nsw i32 %1520, 1
%1522 = sext i32 %1521 to i64
%1523 = getelementptr inbounds double, double* %1519, i64 %1522
%1524 = load double, double* %1523
store double %1524, double* %18
%1525 = load double, double* %17
%1526 = load double*, double** %4
%1527 = load i32, i32* %7
%1528 = sext i32 %1527 to i64
%1529 = getelementptr inbounds double, double* %1526, i64 %1528
store double %1525, double* %1529
%1530 = load double, double* %18
%1531 = load double*, double** %4
%1532 = load i32, i32* %7
%1533 = add nsw i32 %1532, 1
%1534 = sext i32 %1533 to i64
%1535 = getelementptr inbounds double, double* %1531, i64 %1534
store double %1530, double* %1535
%1536 = load double, double* %15
%1537 = load double*, double** %4
%1538 = load i32, i32* %8
%1539 = sext i32 %1538 to i64
%1540 = getelementptr inbounds double, double* %1537, i64 %1539
store double %1536, double* %1540
%1541 = load double, double* %16
%1542 = load double*, double** %4
%1543 = load i32, i32* %8
%1544 = add nsw i32 %1543, 1
%1545 = sext i32 %1544 to i64
%1546 = getelementptr inbounds double, double* %1542, i64 %1545
store double %1541, double* %1546
%1547 = load i32, i32* %10
%1548 = load i32, i32* %7
%1549 = sub nsw i32 %1548, %1547
store i32 %1549, i32* %7
%1550 = load i32, i32* %10
%1551 = load i32, i32* %8
%1552 = sub nsw i32 %1551, %1550
store i32 %1552, i32* %8
%1553 = load double*, double** %4
%1554 = load i32, i32* %7
%1555 = sext i32 %1554 to i64
%1556 = getelementptr inbounds double, double* %1553, i64 %1555
%1557 = load double, double* %1556
store double %1557, double* %15
%1558 = load double*, double** %4
%1559 = load i32, i32* %7
%1560 = add nsw i32 %1559, 1
%1561 = sext i32 %1560 to i64
%1562 = getelementptr inbounds double, double* %1558, i64 %1561
%1563 = load double, double* %1562
store double %1563, double* %16
%1564 = load double*, double** %4
%1565 = load i32, i32* %8
%1566 = sext i32 %1565 to i64
%1567 = getelementptr inbounds double, double* %1564, i64 %1566
%1568 = load double, double* %1567
store double %1568, double* %17
%1569 = load double*, double** %4
%1570 = load i32, i32* %8
%1571 = add nsw i32 %1570, 1
%1572 = sext i32 %1571 to i64
%1573 = getelementptr inbounds double, double* %1569, i64 %1572
%1574 = load double, double* %1573
store double %1574, double* %18
%1575 = load double, double* %17
%1576 = load double*, double** %4
%1577 = load i32, i32* %7
%1578 = sext i32 %1577 to i64
%1579 = getelementptr inbounds double, double* %1576, i64 %1578
store double %1575, double* %1579
%1580 = load double, double* %18
%1581 = load double*, double** %4
%1582 = load i32, i32* %7
%1583 = add nsw i32 %1582, 1
%1584 = sext i32 %1583 to i64
%1585 = getelementptr inbounds double, double* %1581, i64 %1584
store double %1580, double* %1585
%1586 = load double, double* %15
%1587 = load double*, double** %4
%1588 = load i32, i32* %8
%1589 = sext i32 %1588 to i64
%1590 = getelementptr inbounds double, double* %1587, i64 %1589
store double %1586, double* %1590
%1591 = load double, double* %16
%1592 = load double*, double** %4
%1593 = load i32, i32* %8
%1594 = add nsw i32 %1593, 1
%1595 = sext i32 %1594 to i64
%1596 = getelementptr inbounds double, double* %1592, i64 %1595
store double %1591, double* %1596
%1597 = load i32, i32* %14
%1598 = ashr i32 %1597, 1
store i32 %1598, i32* %11
br label %1599
1599: ; preds = %1606, %1205
%1600 = load i32, i32* %11
%1601 = load i32, i32* %11
%1602 = load i32, i32* %13
%1603 = xor i32 %1602, %1601
store i32 %1603, i32* %13
%1604 = icmp sgt i32 %1600, %1603
br i1 %1604, label %1605, label %1609
1605: ; preds = %1599
br label %1606
1606: ; preds = %1605
%1607 = load i32, i32* %11
%1608 = ashr i32 %1607, 1
store i32 %1608, i32* %11
br label %1599
1609: ; preds = %1599
br label %1610
1610: ; preds = %1609
%1611 = load i32, i32* %12
%1612 = add nsw i32 %1611, 4
store i32 %1612, i32* %12
br label %1199
1613: ; preds = %1199
%1614 = load i32, i32* %5
%1615 = load i32, i32* %6
%1616 = add nsw i32 %1614, %1615
store i32 %1616, i32* %8
%1617 = load i32, i32* %8
%1618 = add nsw i32 %1617, 2
store i32 %1618, i32* %7
%1619 = load i32, i32* %14
%1620 = load i32, i32* %8
%1621 = add nsw i32 %1620, %1619
store i32 %1621, i32* %8
%1622 = load double*, double** %4
%1623 = load i32, i32* %7
%1624 = sext i32 %1623 to i64
%1625 = getelementptr inbounds double, double* %1622, i64 %1624
%1626 = load double, double* %1625
store double %1626, double* %15
%1627 = load double*, double** %4
%1628 = load i32, i32* %7
%1629 = add nsw i32 %1628, 1
%1630 = sext i32 %1629 to i64
%1631 = getelementptr inbounds double, double* %1627, i64 %1630
%1632 = load double, double* %1631
store double %1632, double* %16
%1633 = load double*, double** %4
%1634 = load i32, i32* %8
%1635 = sext i32 %1634 to i64
%1636 = getelementptr inbounds double, double* %1633, i64 %1635
%1637 = load double, double* %1636
store double %1637, double* %17
%1638 = load double*, double** %4
%1639 = load i32, i32* %8
%1640 = add nsw i32 %1639, 1
%1641 = sext i32 %1640 to i64
%1642 = getelementptr inbounds double, double* %1638, i64 %1641
%1643 = load double, double* %1642
store double %1643, double* %18
%1644 = load double, double* %17
%1645 = load double*, double** %4
%1646 = load i32, i32* %7
%1647 = sext i32 %1646 to i64
%1648 = getelementptr inbounds double, double* %1645, i64 %1647
store double %1644, double* %1648
%1649 = load double, double* %18
%1650 = load double*, double** %4
%1651 = load i32, i32* %7
%1652 = add nsw i32 %1651, 1
%1653 = sext i32 %1652 to i64
%1654 = getelementptr inbounds double, double* %1650, i64 %1653
store double %1649, double* %1654
%1655 = load double, double* %15
%1656 = load double*, double** %4
%1657 = load i32, i32* %8
%1658 = sext i32 %1657 to i64
%1659 = getelementptr inbounds double, double* %1656, i64 %1658
store double %1655, double* %1659
%1660 = load double, double* %16
%1661 = load double*, double** %4
%1662 = load i32, i32* %8
%1663 = add nsw i32 %1662, 1
%1664 = sext i32 %1663 to i64
%1665 = getelementptr inbounds double, double* %1661, i64 %1664
store double %1660, double* %1665
%1666 = load i32, i32* %10
%1667 = load i32, i32* %7
%1668 = add nsw i32 %1667, %1666
store i32 %1668, i32* %7
%1669 = load i32, i32* %10
%1670 = load i32, i32* %8
%1671 = add nsw i32 %1670, %1669
store i32 %1671, i32* %8
%1672 = load double*, double** %4
%1673 = load i32, i32* %7
%1674 = sext i32 %1673 to i64
%1675 = getelementptr inbounds double, double* %1672, i64 %1674
%1676 = load double, double* %1675
store double %1676, double* %15
%1677 = load double*, double** %4
%1678 = load i32, i32* %7
%1679 = add nsw i32 %1678, 1
%1680 = sext i32 %1679 to i64
%1681 = getelementptr inbounds double, double* %1677, i64 %1680
%1682 = load double, double* %1681
store double %1682, double* %16
%1683 = load double*, double** %4
%1684 = load i32, i32* %8
%1685 = sext i32 %1684 to i64
%1686 = getelementptr inbounds double, double* %1683, i64 %1685
%1687 = load double, double* %1686
store double %1687, double* %17
%1688 = load double*, double** %4
%1689 = load i32, i32* %8
%1690 = add nsw i32 %1689, 1
%1691 = sext i32 %1690 to i64
%1692 = getelementptr inbounds double, double* %1688, i64 %1691
%1693 = load double, double* %1692
store double %1693, double* %18
%1694 = load double, double* %17
%1695 = load double*, double** %4
%1696 = load i32, i32* %7
%1697 = sext i32 %1696 to i64
%1698 = getelementptr inbounds double, double* %1695, i64 %1697
store double %1694, double* %1698
%1699 = load double, double* %18
%1700 = load double*, double** %4
%1701 = load i32, i32* %7
%1702 = add nsw i32 %1701, 1
%1703 = sext i32 %1702 to i64
%1704 = getelementptr inbounds double, double* %1700, i64 %1703
store double %1699, double* %1704
%1705 = load double, double* %15
%1706 = load double*, double** %4
%1707 = load i32, i32* %8
%1708 = sext i32 %1707 to i64
%1709 = getelementptr inbounds double, double* %1706, i64 %1708
store double %1705, double* %1709
%1710 = load double, double* %16
%1711 = load double*, double** %4
%1712 = load i32, i32* %8
%1713 = add nsw i32 %1712, 1
%1714 = sext i32 %1713 to i64
%1715 = getelementptr inbounds double, double* %1711, i64 %1714
store double %1710, double* %1715
%1716 = load i32, i32* %14
%1717 = ashr i32 %1716, 1
store i32 %1717, i32* %11
br label %1718
1718: ; preds = %1725, %1613
%1719 = load i32, i32* %11
%1720 = load i32, i32* %11
%1721 = load i32, i32* %5
%1722 = xor i32 %1721, %1720
store i32 %1722, i32* %5
%1723 = icmp sgt i32 %1719, %1722
br i1 %1723, label %1724, label %1728
1724: ; preds = %1718
br label %1725
1725: ; preds = %1724
%1726 = load i32, i32* %11
%1727 = ashr i32 %1726, 1
store i32 %1727, i32* %11
br label %1718
1728: ; preds = %1718
br label %1729
1729: ; preds = %1728
%1730 = load i32, i32* %6
%1731 = add nsw i32 %1730, 4
store i32 %1731, i32* %6
br label %1192
1732: ; preds = %1192
br label %1733
1733: ; preds = %1732, %1190
ret void
}

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