void trasp64_64_88ccw(unsigned char *data) {
  int i, j;
  for (j = 0; j < 64; j += 64) {
    unsigned long long int t, b;
    for (i = 0; i < 32; i++) {
      t = ((unsigned long long int *)data)[j + i];
      b = ((unsigned long long int *)data)[j + 32 + i];
      ((unsigned long long int *)data)[j + i] =
          (t & 0x00000000ffffffffULL) | ((b) << 32);
      ((unsigned long long int *)data)[j + 32 + i] =
          ((t) >> 32) | (b & 0xffffffff00000000ULL);
    }
  }
  for (j = 0; j < 64; j += 32) {
    unsigned long long int t, b;
    for (i = 0; i < 16; i++) {
      t = ((unsigned long long int *)data)[j + i];
      b = ((unsigned long long int *)data)[j + 16 + i];
      ((unsigned long long int *)data)[j + i] =
          (t & 0x0000ffff0000ffffULL) | ((b & 0x0000ffff0000ffffULL) << 16);
      ((unsigned long long int *)data)[j + 16 + i] =
          ((t & 0xffff0000ffff0000ULL) >> 16) | (b & 0xffff0000ffff0000ULL);
    }
  }
  for (j = 0; j < 64; j += 16) {
    unsigned long long int t, b;
    for (i = 0; i < 8; i++) {
      t = ((unsigned long long int *)data)[j + i];
      b = ((unsigned long long int *)data)[j + 8 + i];
      ((unsigned long long int *)data)[j + i] =
          (t & 0x00ff00ff00ff00ffULL) | ((b & 0x00ff00ff00ff00ffULL) << 8);
      ((unsigned long long int *)data)[j + 8 + i] =
          ((t & 0xff00ff00ff00ff00ULL) >> 8) | (b & 0xff00ff00ff00ff00ULL);
    }
  }
  for (j = 0; j < 64; j += 8) {
    unsigned long long int t, b;
    for (i = 0; i < 4; i++) {
      t = ((unsigned long long int *)data)[j + i];
      b = ((unsigned long long int *)data)[j + 4 + i];
      ((unsigned long long int *)data)[j + i] =
          ((t & 0x0f0f0f0f0f0f0f0fULL) << 4) | (b & 0x0f0f0f0f0f0f0f0fULL);
      ((unsigned long long int *)data)[j + 4 + i] =
          (t & 0xf0f0f0f0f0f0f0f0ULL) | ((b & 0xf0f0f0f0f0f0f0f0ULL) >> 4);
    }
  }
  for (j = 0; j < 64; j += 4) {
    unsigned long long int t, b;
    for (i = 0; i < 2; i++) {
      t = ((unsigned long long int *)data)[j + i];
      b = ((unsigned long long int *)data)[j + 2 + i];
      ((unsigned long long int *)data)[j + i] =
          ((t & 0x3333333333333333ULL) << 2) | (b & 0x3333333333333333ULL);
      ((unsigned long long int *)data)[j + 2 + i] =
          (t & 0xccccccccccccccccULL) | ((b & 0xccccccccccccccccULL) >> 2);
    }
  }
  for (j = 0; j < 64; j += 2) {
    unsigned long long int t, b;
    for (i = 0; i < 1; i++) {
      t = ((unsigned long long int *)data)[j + i];
      b = ((unsigned long long int *)data)[j + 1 + i];
      ((unsigned long long int *)data)[j + i] =
          ((t & 0x5555555555555555ULL) << 1) | (b & 0x5555555555555555ULL);
      ((unsigned long long int *)data)[j + 1 + i] =
          (t & 0xaaaaaaaaaaaaaaaaULL) | ((b & 0xaaaaaaaaaaaaaaaaULL) >> 1);
    }
  }
}


x86 assembly (clang, -O0):
<trasp64_64_88ccw>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    11cf <trasp64_64_88ccw+0xcf>
movl   $0x0,-0xc(%rbp)
cmpl   $0x20,-0xc(%rbp)
jge    11bc <trasp64_64_88ccw+0xbc>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x20,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x20(%rbp)
movabs $0xffffffff,%rdx
and    -0x18(%rbp),%rdx
mov    -0x20(%rbp),%rax
shl    $0x20,%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x18(%rbp),%rdx
shr    $0x20,%rdx
movabs $0xffffffff00000000,%rax
ff ff ff
and    -0x20(%rbp),%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x20,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1120 <trasp64_64_88ccw+0x20>
jmp    11c1 <trasp64_64_88ccw+0xc1>
mov    -0x10(%rbp),%eax
add    $0x40,%eax
mov    %eax,-0x10(%rbp)
jmp    110f <trasp64_64_88ccw+0xf>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    12aa <trasp64_64_88ccw+0x1aa>
movl   $0x0,-0xc(%rbp)
cmpl   $0x10,-0xc(%rbp)
jge    1297 <trasp64_64_88ccw+0x197>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x10,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x30(%rbp)
movabs $0xffff0000ffff,%rdx
and    -0x28(%rbp),%rdx
movabs $0xffff0000ffff,%rax
and    -0x30(%rbp),%rax
shl    $0x10,%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
movabs $0xffff0000ffff0000,%rdx
and    -0x28(%rbp),%rdx
shr    $0x10,%rdx
movabs $0xffff0000ffff0000,%rax
and    -0x30(%rbp),%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x10,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11e7 <trasp64_64_88ccw+0xe7>
jmp    129c <trasp64_64_88ccw+0x19c>
mov    -0x10(%rbp),%eax
add    $0x20,%eax
mov    %eax,-0x10(%rbp)
jmp    11d6 <trasp64_64_88ccw+0xd6>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    1385 <trasp64_64_88ccw+0x285>
movl   $0x0,-0xc(%rbp)
cmpl   $0x8,-0xc(%rbp)
jge    1372 <trasp64_64_88ccw+0x272>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x8,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x40(%rbp)
movabs $0xff00ff00ff00ff,%rdx
and    -0x38(%rbp),%rdx
movabs $0xff00ff00ff00ff,%rax
and    -0x40(%rbp),%rax
shl    $0x8,%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
movabs $0xff00ff00ff00ff00,%rdx
and    -0x38(%rbp),%rdx
shr    $0x8,%rdx
movabs $0xff00ff00ff00ff00,%rax
and    -0x40(%rbp),%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x8,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    12c2 <trasp64_64_88ccw+0x1c2>
jmp    1377 <trasp64_64_88ccw+0x277>
mov    -0x10(%rbp),%eax
add    $0x10,%eax
mov    %eax,-0x10(%rbp)
jmp    12b1 <trasp64_64_88ccw+0x1b1>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    1460 <trasp64_64_88ccw+0x360>
movl   $0x0,-0xc(%rbp)
cmpl   $0x4,-0xc(%rbp)
jge    144d <trasp64_64_88ccw+0x34d>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x48(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x4,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x50(%rbp)
movabs $0xf0f0f0f0f0f0f0f,%rdx
0f 0f 0f
and    -0x48(%rbp),%rdx
shl    $0x4,%rdx
movabs $0xf0f0f0f0f0f0f0f,%rax
0f 0f 0f
and    -0x50(%rbp),%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
movabs $0xf0f0f0f0f0f0f0f0,%rdx
f0 f0 f0
and    -0x48(%rbp),%rdx
movabs $0xf0f0f0f0f0f0f0f0,%rax
f0 f0 f0
and    -0x50(%rbp),%rax
shr    $0x4,%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x4,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    139d <trasp64_64_88ccw+0x29d>
jmp    1452 <trasp64_64_88ccw+0x352>
mov    -0x10(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x10(%rbp)
jmp    138c <trasp64_64_88ccw+0x28c>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    153b <trasp64_64_88ccw+0x43b>
movl   $0x0,-0xc(%rbp)
cmpl   $0x2,-0xc(%rbp)
jge    1528 <trasp64_64_88ccw+0x428>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x60(%rbp)
movabs $0x3333333333333333,%rdx
33 33 33
and    -0x58(%rbp),%rdx
shl    $0x2,%rdx
movabs $0x3333333333333333,%rax
33 33 33
and    -0x60(%rbp),%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
movabs $0xcccccccccccccccc,%rdx
cc cc cc
and    -0x58(%rbp),%rdx
movabs $0xcccccccccccccccc,%rax
cc cc cc
and    -0x60(%rbp),%rax
shr    $0x2,%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1478 <trasp64_64_88ccw+0x378>
jmp    152d <trasp64_64_88ccw+0x42d>
mov    -0x10(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x10(%rbp)
jmp    1467 <trasp64_64_88ccw+0x367>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    1616 <trasp64_64_88ccw+0x516>
movl   $0x0,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jge    1603 <trasp64_64_88ccw+0x503>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x68(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x70(%rbp)
movabs $0x5555555555555555,%rdx
55 55 55
and    -0x68(%rbp),%rdx
shl    $0x1,%rdx
movabs $0x5555555555555555,%rax
55 55 55
and    -0x70(%rbp),%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
movabs $0xaaaaaaaaaaaaaaaa,%rdx
aa aa aa
and    -0x68(%rbp),%rdx
movabs $0xaaaaaaaaaaaaaaaa,%rax
aa aa aa
and    -0x70(%rbp),%rax
shr    $0x1,%rax
or     %rax,%rdx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
add    -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1553 <trasp64_64_88ccw+0x453>
jmp    1608 <trasp64_64_88ccw+0x508>
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
jmp    1542 <trasp64_64_88ccw+0x442>
pop    %rbp
ret

x86 assembly (clang, -O2):
<trasp64_64_88ccw>:
mov    $0xffffffffffffffe0,%rax
movdqa 0xef1(%rip),%xmm0
movdqa 0xef9(%rip),%xmm1
nopw   0x0(%rax,%rax,1)
movdqu 0x100(%rdi,%rax,8),%xmm2
movdqu 0x110(%rdi,%rax,8),%xmm3
movdqu 0x200(%rdi,%rax,8),%xmm4
movdqu 0x210(%rdi,%rax,8),%xmm5
movdqa %xmm2,%xmm6
pand   %xmm0,%xmm6
movdqa %xmm4,%xmm7
psllq  $0x20,%xmm7
por    %xmm6,%xmm7
movdqu %xmm7,0x100(%rdi,%rax,8)
psrlq  $0x20,%xmm2
pand   %xmm1,%xmm4
por    %xmm2,%xmm4
movdqu %xmm4,0x200(%rdi,%rax,8)
movdqa %xmm3,%xmm2
pand   %xmm0,%xmm2
movdqa %xmm5,%xmm4
psllq  $0x20,%xmm4
por    %xmm2,%xmm4
movdqu %xmm4,0x110(%rdi,%rax,8)
psrlq  $0x20,%xmm3
pand   %xmm1,%xmm5
por    %xmm3,%xmm5
movdqu %xmm5,0x210(%rdi,%rax,8)
add    $0x4,%rax
jne    1120 <trasp64_64_88ccw+0x20>
movabs $0xff00ff00ff00ff00,%r8
movabs $0xff00ff00ff00ff,%r9
movdqu 0x80(%rdi),%xmm3
movdqu (%rdi),%xmm4
movdqu 0x10(%rdi),%xmm5
movdqu 0x20(%rdi),%xmm2
movdqu 0x30(%rdi),%xmm1
movdqa 0xe33(%rip),%xmm0
movdqa %xmm4,%xmm6
pand   %xmm0,%xmm6
movdqa %xmm0,%xmm7
pandn  %xmm3,%xmm7
pslld  $0x10,%xmm3
por    %xmm6,%xmm3
movdqu %xmm3,(%rdi)
psrld  $0x10,%xmm4
por    %xmm7,%xmm4
movdqu %xmm4,0x80(%rdi)
movdqu 0x90(%rdi),%xmm3
movdqa %xmm5,%xmm4
pand   %xmm0,%xmm4
movdqa %xmm0,%xmm6
pandn  %xmm3,%xmm6
pslld  $0x10,%xmm3
por    %xmm4,%xmm3
movdqu %xmm3,0x10(%rdi)
psrld  $0x10,%xmm5
por    %xmm6,%xmm5
movdqu %xmm5,0x90(%rdi)
movdqu 0xa0(%rdi),%xmm3
movdqa %xmm2,%xmm4
pand   %xmm0,%xmm4
movdqa %xmm0,%xmm5
pandn  %xmm3,%xmm5
pslld  $0x10,%xmm3
por    %xmm4,%xmm3
movdqu %xmm3,0x20(%rdi)
psrld  $0x10,%xmm2
por    %xmm5,%xmm2
movdqu %xmm2,0xa0(%rdi)
movdqu 0xb0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x30(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0xb0(%rdi)
movdqu 0x40(%rdi),%xmm1
movdqu 0xc0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x40(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0xc0(%rdi)
movdqu 0x50(%rdi),%xmm1
movdqu 0xd0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x50(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0xd0(%rdi)
movdqu 0x60(%rdi),%xmm1
movdqu 0xe0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x60(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0xe0(%rdi)
movdqu 0x70(%rdi),%xmm1
movdqu 0xf0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x70(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0xf0(%rdi)
movdqu 0x100(%rdi),%xmm1
movdqu 0x180(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x100(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0x180(%rdi)
movdqu 0x110(%rdi),%xmm1
movdqu 0x190(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x110(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0x190(%rdi)
movdqu 0x120(%rdi),%xmm1
movdqu 0x1a0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x120(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0x1a0(%rdi)
movdqu 0x130(%rdi),%xmm1
movdqu 0x1b0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x130(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0x1b0(%rdi)
movdqu 0x140(%rdi),%xmm1
movdqu 0x1c0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x140(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0x1c0(%rdi)
movdqu 0x150(%rdi),%xmm1
movdqu 0x1d0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x150(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0x1d0(%rdi)
movdqu 0x160(%rdi),%xmm1
movdqu 0x1e0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
movdqa %xmm0,%xmm4
pandn  %xmm2,%xmm4
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x160(%rdi)
psrld  $0x10,%xmm1
por    %xmm4,%xmm1
movdqu %xmm1,0x1e0(%rdi)
movdqu 0x170(%rdi),%xmm1
movdqu 0x1f0(%rdi),%xmm2
movdqa %xmm1,%xmm3
pand   %xmm0,%xmm3
pandn  %xmm2,%xmm0
pslld  $0x10,%xmm2
por    %xmm3,%xmm2
movdqu %xmm2,0x170(%rdi)
psrld  $0x10,%xmm1
por    %xmm0,%xmm1
movdqu %xmm1,0x1f0(%rdi)
mov    $0xfffffffffffffff0,%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0xc0(%rdi,%rdx,8),%rsi
mov    0x80(%rdi,%rdx,8),%rcx
mov    0x88(%rdi,%rdx,8),%r10
mov    %rcx,%r11
and    %r9,%r11
mov    %rsi,%rax
shl    $0x8,%rax
and    %r8,%rax
or     %r11,%rax
mov    %rax,0x80(%rdi,%rdx,8)
shr    $0x8,%rcx
and    %r9,%rcx
and    %r8,%rsi
or     %rcx,%rsi
mov    %rsi,0xc0(%rdi,%rdx,8)
mov    0xc8(%rdi,%rdx,8),%rax
mov    %r10,%rcx
and    %r9,%rcx
mov    %rax,%rsi
shl    $0x8,%rsi
and    %r8,%rsi
or     %rcx,%rsi
mov    %rsi,0x88(%rdi,%rdx,8)
shr    $0x8,%r10
and    %r9,%r10
and    %r8,%rax
or     %r10,%rax
mov    %rax,0xc8(%rdi,%rdx,8)
mov    0x90(%rdi,%rdx,8),%rax
mov    0xd0(%rdi,%rdx,8),%rsi
mov    %rax,%r10
and    %r9,%r10
mov    %rsi,%rcx
shl    $0x8,%rcx
and    %r8,%rcx
or     %r10,%rcx
mov    %rcx,0x90(%rdi,%rdx,8)
shr    $0x8,%rax
and    %r9,%rax
and    %r8,%rsi
or     %rax,%rsi
mov    %rsi,0xd0(%rdi,%rdx,8)
mov    0x98(%rdi,%rdx,8),%rax
mov    0xd8(%rdi,%rdx,8),%rsi
mov    %rax,%r10
and    %r9,%r10
mov    %rsi,%rcx
shl    $0x8,%rcx
and    %r8,%rcx
or     %r10,%rcx
mov    %rcx,0x98(%rdi,%rdx,8)
shr    $0x8,%rax
and    %r9,%rax
and    %r8,%rsi
or     %rax,%rsi
mov    %rsi,0xd8(%rdi,%rdx,8)
mov    0xa0(%rdi,%rdx,8),%rax
mov    0xe0(%rdi,%rdx,8),%rsi
mov    %rax,%r10
and    %r9,%r10
mov    %rsi,%rcx
shl    $0x8,%rcx
and    %r8,%rcx
or     %r10,%rcx
mov    %rcx,0xa0(%rdi,%rdx,8)
shr    $0x8,%rax
and    %r9,%rax
and    %r8,%rsi
or     %rax,%rsi
mov    %rsi,0xe0(%rdi,%rdx,8)
mov    0xa8(%rdi,%rdx,8),%rax
mov    0xe8(%rdi,%rdx,8),%rsi
mov    %rax,%r10
and    %r9,%r10
mov    %rsi,%rcx
shl    $0x8,%rcx
and    %r8,%rcx
or     %r10,%rcx
mov    %rcx,0xa8(%rdi,%rdx,8)
shr    $0x8,%rax
and    %r9,%rax
and    %r8,%rsi
or     %rax,%rsi
mov    %rsi,0xe8(%rdi,%rdx,8)
mov    0xb0(%rdi,%rdx,8),%rax
mov    0xf0(%rdi,%rdx,8),%rsi
mov    %rax,%r10
and    %r9,%r10
mov    %rsi,%rcx
shl    $0x8,%rcx
and    %r8,%rcx
or     %r10,%rcx
mov    %rcx,0xb0(%rdi,%rdx,8)
shr    $0x8,%rax
and    %r9,%rax
and    %r8,%rsi
or     %rax,%rsi
mov    %rsi,0xf0(%rdi,%rdx,8)
mov    0xb8(%rdi,%rdx,8),%rax
mov    0xf8(%rdi,%rdx,8),%rsi
mov    %rax,%r10
and    %r9,%r10
mov    %rsi,%rcx
shl    $0x8,%rcx
and    %r8,%rcx
or     %r10,%rcx
mov    %rcx,0xb8(%rdi,%rdx,8)
shr    $0x8,%rax
and    %r9,%rax
and    %r8,%rsi
or     %rax,%rsi
mov    %rsi,0xf8(%rdi,%rdx,8)
add    $0x10,%rdx
cmp    $0x30,%rdx
jb     15d0 <trasp64_64_88ccw+0x4d0>
movabs $0xf0f0f0f0f0f0f0f0,%r8
f0 f0 f0
mov    $0xfffffffffffffff8,%rcx
movabs $0xf0f0f0f0f0f0f0f,%r9
0f 0f 0f
nopl   0x0(%rax)
mov    0x60(%rdi,%rcx,8),%rsi
mov    0x40(%rdi,%rcx,8),%r11
mov    0x48(%rdi,%rcx,8),%r10
mov    %r11,%rdx
shl    $0x4,%rdx
and    %r8,%rdx
mov    %rsi,%rax
and    %r9,%rax
or     %rdx,%rax
mov    %rax,0x40(%rdi,%rcx,8)
and    %r8,%r11
shr    $0x4,%rsi
and    %r9,%rsi
or     %r11,%rsi
mov    %rsi,0x60(%rdi,%rcx,8)
mov    0x68(%rdi,%rcx,8),%rax
mov    %r10,%rdx
shl    $0x4,%rdx
and    %r8,%rdx
mov    %rax,%rsi
and    %r9,%rsi
or     %rdx,%rsi
mov    %rsi,0x48(%rdi,%rcx,8)
and    %r8,%r10
shr    $0x4,%rax
and    %r9,%rax
or     %r10,%rax
mov    %rax,0x68(%rdi,%rcx,8)
mov    0x50(%rdi,%rcx,8),%r10
mov    0x70(%rdi,%rcx,8),%rax
mov    %r10,%rsi
shl    $0x4,%rsi
and    %r8,%rsi
mov    %rax,%rdx
and    %r9,%rdx
or     %rsi,%rdx
mov    %rdx,0x50(%rdi,%rcx,8)
and    %r8,%r10
shr    $0x4,%rax
and    %r9,%rax
or     %r10,%rax
mov    %rax,0x70(%rdi,%rcx,8)
mov    0x58(%rdi,%rcx,8),%r10
mov    0x78(%rdi,%rcx,8),%rax
mov    %r10,%rsi
shl    $0x4,%rsi
and    %r8,%rsi
mov    %rax,%rdx
and    %r9,%rdx
or     %rsi,%rdx
mov    %rdx,0x58(%rdi,%rcx,8)
and    %r8,%r10
shr    $0x4,%rax
and    %r9,%rax
or     %r10,%rax
mov    %rax,0x78(%rdi,%rcx,8)
add    $0x8,%rcx
cmp    $0x38,%rcx
jb     1800 <trasp64_64_88ccw+0x700>
movabs $0xcccccccccccccccc,%r8
cc cc cc
mov    $0xfffffffffffffffc,%rcx
movabs $0x3333333333333333,%r9
33 33 33
nopl   0x0(%rax)
mov    0x30(%rdi,%rcx,8),%rdx
mov    0x20(%rdi,%rcx,8),%r11
mov    0x28(%rdi,%rcx,8),%r10
lea    0x0(,%r11,4),%rsi
and    %r8,%rsi
mov    %rdx,%rax
and    %r9,%rax
or     %rsi,%rax
mov    %rax,0x20(%rdi,%rcx,8)
and    %r8,%r11
shr    $0x2,%rdx
and    %r9,%rdx
or     %r11,%rdx
mov    %rdx,0x30(%rdi,%rcx,8)
mov    0x38(%rdi,%rcx,8),%rax
lea    0x0(,%r10,4),%rdx
and    %r8,%rdx
mov    %rax,%rsi
and    %r9,%rsi
or     %rdx,%rsi
mov    %rsi,0x28(%rdi,%rcx,8)
and    %r8,%r10
shr    $0x2,%rax
and    %r9,%rax
or     %r10,%rax
mov    %rax,0x38(%rdi,%rcx,8)
add    $0x4,%rcx
cmp    $0x3c,%rcx
jb     1900 <trasp64_64_88ccw+0x800>
xor    %eax,%eax
movdqa 0x6b2(%rip),%xmm0
movdqa 0x6ba(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
movdqu (%rdi,%rax,1),%xmm2
movdqu 0x10(%rdi,%rax,1),%xmm3
movdqa %xmm2,%xmm4
punpcklqdq %xmm3,%xmm4
punpckhqdq %xmm3,%xmm2
movdqa %xmm1,%xmm3
pandn  %xmm4,%xmm3
paddq  %xmm4,%xmm4
pand   %xmm0,%xmm4
movdqa %xmm0,%xmm5
pandn  %xmm2,%xmm5
por    %xmm4,%xmm5
psrlq  $0x1,%xmm2
pand   %xmm1,%xmm2
por    %xmm3,%xmm2
movdqa %xmm5,%xmm3
punpckhqdq %xmm2,%xmm3
punpcklqdq %xmm2,%xmm5
movdqu %xmm5,(%rdi,%rax,1)
movdqu %xmm3,0x10(%rdi,%rax,1)
add    $0x20,%rax
cmp    $0x200,%rax
jne    1990 <trasp64_64_88ccw+0x890>
ret

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

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