void trasp64_128_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)[2 * (j + i)];
      b = ((unsigned long long int *)data)[2 * (j + 32 + i)];
      ((unsigned long long int *)data)[2 * (j + i)] =
          (t & 0x00000000ffffffffULL) | ((b) << 32);
      ((unsigned long long int *)data)[2 * (j + 32 + i)] =
          ((t) >> 32) | (b & 0xffffffff00000000ULL);
      t = ((unsigned long long int *)data)[2 * (j + i) + 1];
      b = ((unsigned long long int *)data)[2 * (j + 32 + i) + 1];
      ((unsigned long long int *)data)[2 * (j + i) + 1] =
          (t & 0x00000000ffffffffULL) | ((b) << 32);
      ((unsigned long long int *)data)[2 * (j + 32 + i) + 1] =
          ((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)[2 * (j + i)];
      b = ((unsigned long long int *)data)[2 * (j + 16 + i)];
      ((unsigned long long int *)data)[2 * (j + i)] =
          (t & 0x0000ffff0000ffffULL) | ((b & 0x0000ffff0000ffffULL) << 16);
      ((unsigned long long int *)data)[2 * (j + 16 + i)] =
          ((t & 0xffff0000ffff0000ULL) >> 16) | (b & 0xffff0000ffff0000ULL);
      t = ((unsigned long long int *)data)[2 * (j + i) + 1];
      b = ((unsigned long long int *)data)[2 * (j + 16 + i) + 1];
      ((unsigned long long int *)data)[2 * (j + i) + 1] =
          (t & 0x0000ffff0000ffffULL) | ((b & 0x0000ffff0000ffffULL) << 16);
      ((unsigned long long int *)data)[2 * (j + 16 + i) + 1] =
          ((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)[2 * (j + i)];
      b = ((unsigned long long int *)data)[2 * (j + 8 + i)];
      ((unsigned long long int *)data)[2 * (j + i)] =
          (t & 0x00ff00ff00ff00ffULL) | ((b & 0x00ff00ff00ff00ffULL) << 8);
      ((unsigned long long int *)data)[2 * (j + 8 + i)] =
          ((t & 0xff00ff00ff00ff00ULL) >> 8) | (b & 0xff00ff00ff00ff00ULL);
      t = ((unsigned long long int *)data)[2 * (j + i) + 1];
      b = ((unsigned long long int *)data)[2 * (j + 8 + i) + 1];
      ((unsigned long long int *)data)[2 * (j + i) + 1] =
          (t & 0x00ff00ff00ff00ffULL) | ((b & 0x00ff00ff00ff00ffULL) << 8);
      ((unsigned long long int *)data)[2 * (j + 8 + i) + 1] =
          ((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)[2 * (j + i)];
      b = ((unsigned long long int *)data)[2 * (j + 4 + i)];
      ((unsigned long long int *)data)[2 * (j + i)] =
          ((t & 0x0f0f0f0f0f0f0f0fULL) << 4) | (b & 0x0f0f0f0f0f0f0f0fULL);
      ((unsigned long long int *)data)[2 * (j + 4 + i)] =
          (t & 0xf0f0f0f0f0f0f0f0ULL) | ((b & 0xf0f0f0f0f0f0f0f0ULL) >> 4);
      t = ((unsigned long long int *)data)[2 * (j + i) + 1];
      b = ((unsigned long long int *)data)[2 * (j + 4 + i) + 1];
      ((unsigned long long int *)data)[2 * (j + i) + 1] =
          ((t & 0x0f0f0f0f0f0f0f0fULL) << 4) | (b & 0x0f0f0f0f0f0f0f0fULL);
      ((unsigned long long int *)data)[2 * (j + 4 + i) + 1] =
          (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)[2 * (j + i)];
      b = ((unsigned long long int *)data)[2 * (j + 2 + i)];
      ((unsigned long long int *)data)[2 * (j + i)] =
          ((t & 0x3333333333333333ULL) << 2) | (b & 0x3333333333333333ULL);
      ((unsigned long long int *)data)[2 * (j + 2 + i)] =
          (t & 0xccccccccccccccccULL) | ((b & 0xccccccccccccccccULL) >> 2);
      t = ((unsigned long long int *)data)[2 * (j + i) + 1];
      b = ((unsigned long long int *)data)[2 * (j + 2 + i) + 1];
      ((unsigned long long int *)data)[2 * (j + i) + 1] =
          ((t & 0x3333333333333333ULL) << 2) | (b & 0x3333333333333333ULL);
      ((unsigned long long int *)data)[2 * (j + 2 + i) + 1] =
          (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)[2 * (j + i)];
      b = ((unsigned long long int *)data)[2 * (j + 1 + i)];
      ((unsigned long long int *)data)[2 * (j + i)] =
          ((t & 0x5555555555555555ULL) << 1) | (b & 0x5555555555555555ULL);
      ((unsigned long long int *)data)[2 * (j + 1 + i)] =
          (t & 0xaaaaaaaaaaaaaaaaULL) | ((b & 0xaaaaaaaaaaaaaaaaULL) >> 1);
      t = ((unsigned long long int *)data)[2 * (j + i) + 1];
      b = ((unsigned long long int *)data)[2 * (j + 1 + i) + 1];
      ((unsigned long long int *)data)[2 * (j + i) + 1] =
          ((t & 0x5555555555555555ULL) << 1) | (b & 0x5555555555555555ULL);
      ((unsigned long long int *)data)[2 * (j + 1 + i) + 1] =
          (t & 0xaaaaaaaaaaaaaaaaULL) | ((b & 0xaaaaaaaaaaaaaaaaULL) >> 1);
    }
  }
}


x86 assembly (clang, -O0):
<trasp64_128_88ccw>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    1277 <trasp64_128_88ccw+0x177>
movl   $0x0,-0xc(%rbp)
cmpl   $0x20,-0xc(%rbp)
jge    1264 <trasp64_128_88ccw+0x164>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1120 <trasp64_128_88ccw+0x20>
jmp    1269 <trasp64_128_88ccw+0x169>
mov    -0x10(%rbp),%eax
add    $0x40,%eax
mov    %eax,-0x10(%rbp)
jmp    110f <trasp64_128_88ccw+0xf>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    140e <trasp64_128_88ccw+0x30e>
movl   $0x0,-0xc(%rbp)
cmpl   $0x10,-0xc(%rbp)
jge    13fb <trasp64_128_88ccw+0x2fb>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    128f <trasp64_128_88ccw+0x18f>
jmp    1400 <trasp64_128_88ccw+0x300>
mov    -0x10(%rbp),%eax
add    $0x20,%eax
mov    %eax,-0x10(%rbp)
jmp    127e <trasp64_128_88ccw+0x17e>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    15a5 <trasp64_128_88ccw+0x4a5>
movl   $0x0,-0xc(%rbp)
cmpl   $0x8,-0xc(%rbp)
jge    1592 <trasp64_128_88ccw+0x492>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1426 <trasp64_128_88ccw+0x326>
jmp    1597 <trasp64_128_88ccw+0x497>
mov    -0x10(%rbp),%eax
add    $0x10,%eax
mov    %eax,-0x10(%rbp)
jmp    1415 <trasp64_128_88ccw+0x315>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    173c <trasp64_128_88ccw+0x63c>
movl   $0x0,-0xc(%rbp)
cmpl   $0x4,-0xc(%rbp)
jge    1729 <trasp64_128_88ccw+0x629>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    15bd <trasp64_128_88ccw+0x4bd>
jmp    172e <trasp64_128_88ccw+0x62e>
mov    -0x10(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x10(%rbp)
jmp    15ac <trasp64_128_88ccw+0x4ac>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    18d3 <trasp64_128_88ccw+0x7d3>
movl   $0x0,-0xc(%rbp)
cmpl   $0x2,-0xc(%rbp)
jge    18c0 <trasp64_128_88ccw+0x7c0>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1754 <trasp64_128_88ccw+0x654>
jmp    18c5 <trasp64_128_88ccw+0x7c5>
mov    -0x10(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x10(%rbp)
jmp    1743 <trasp64_128_88ccw+0x643>
movl   $0x0,-0x10(%rbp)
cmpl   $0x40,-0x10(%rbp)
jge    1a6a <trasp64_128_88ccw+0x96a>
movl   $0x0,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jge    1a57 <trasp64_128_88ccw+0x957>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%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
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    -0xc(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%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
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    18eb <trasp64_128_88ccw+0x7eb>
jmp    1a5c <trasp64_128_88ccw+0x95c>
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
jmp    18da <trasp64_128_88ccw+0x7da>
pop    %rbp
ret

x86 assembly (clang, -O2):
<trasp64_128_88ccw>:
push   %r14
push   %rbx
mov    $0xfffffffffffffe00,%rax
movabs $0xffffffff00000000,%r8
ff ff ff
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0x204(%rdi,%rax,1),%edx
mov    0x20c(%rdi,%rax,1),%esi
mov    0x400(%rdi,%rax,1),%rcx
mov    %ecx,0x204(%rdi,%rax,1)
and    %r8,%rcx
or     %rdx,%rcx
mov    %rcx,0x400(%rdi,%rax,1)
mov    0x408(%rdi,%rax,1),%rcx
mov    %ecx,0x20c(%rdi,%rax,1)
and    %r8,%rcx
or     %rsi,%rcx
mov    %rcx,0x408(%rdi,%rax,1)
add    $0x10,%rax
jne    1120 <trasp64_128_88ccw+0x20>
movabs $0xffff0000ffff0000,%r8
mov    $0xffffffffffffff00,%rdx
movabs $0xffff0000ffff,%r9
nopl   0x0(%rax)
mov    0x200(%rdi,%rdx,1),%rsi
mov    0x100(%rdi,%rdx,1),%rcx
mov    0x108(%rdi,%rdx,1),%r10
mov    %rcx,%r11
and    %r9,%r11
mov    %rsi,%rax
shl    $0x10,%rax
and    %r8,%rax
or     %r11,%rax
mov    %rax,0x100(%rdi,%rdx,1)
shr    $0x10,%rcx
and    %r9,%rcx
and    %r8,%rsi
or     %rcx,%rsi
mov    %rsi,0x200(%rdi,%rdx,1)
mov    0x208(%rdi,%rdx,1),%rax
mov    %r10,%rcx
and    %r9,%rcx
mov    %rax,%rsi
shl    $0x10,%rsi
and    %r8,%rsi
or     %rcx,%rsi
mov    %rsi,0x108(%rdi,%rdx,1)
shr    $0x10,%r10
and    %r9,%r10
and    %r8,%rax
or     %r10,%rax
mov    %rax,0x208(%rdi,%rdx,1)
add    $0x10,%rdx
jne    1190 <trasp64_128_88ccw+0x90>
mov    $0xffffffffffffff00,%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x400(%rdi,%rdx,1),%rsi
mov    0x300(%rdi,%rdx,1),%rcx
mov    0x308(%rdi,%rdx,1),%r10
mov    %rcx,%r11
and    %r9,%r11
mov    %rsi,%rax
shl    $0x10,%rax
and    %r8,%rax
or     %r11,%rax
mov    %rax,0x300(%rdi,%rdx,1)
shr    $0x10,%rcx
and    %r9,%rcx
and    %r8,%rsi
or     %rcx,%rsi
mov    %rsi,0x400(%rdi,%rdx,1)
mov    0x408(%rdi,%rdx,1),%rax
mov    %r10,%rcx
and    %r9,%rcx
mov    %rax,%rsi
shl    $0x10,%rsi
and    %r8,%rsi
or     %rcx,%rsi
mov    %rsi,0x308(%rdi,%rdx,1)
shr    $0x10,%r10
and    %r9,%r10
and    %r8,%rax
or     %r10,%rax
mov    %rax,0x408(%rdi,%rdx,1)
add    $0x10,%rdx
jne    1230 <trasp64_128_88ccw+0x130>
movabs $0xff00ff00ff00ff00,%r9
movabs $0xff00ff00ff00ff,%r10
lea    0x88(%rdi),%r11
xor    %r8d,%r8d
nopl   0x0(%rax,%rax,1)
mov    $0xffffffffffffff80,%rsi
nopw   0x0(%rax,%rax,1)
mov    0x78(%r11,%rsi,1),%rax
mov    -0x8(%r11,%rsi,1),%rdx
mov    (%r11,%rsi,1),%r14
mov    %rdx,%rbx
and    %r10,%rbx
mov    %rax,%rcx
shl    $0x8,%rcx
and    %r9,%rcx
or     %rbx,%rcx
mov    %rcx,-0x8(%r11,%rsi,1)
shr    $0x8,%rdx
and    %r10,%rdx
and    %r9,%rax
or     %rdx,%rax
mov    %rax,0x78(%r11,%rsi,1)
mov    0x80(%r11,%rsi,1),%rax
mov    %r14,%rcx
and    %r10,%rcx
mov    %rax,%rdx
shl    $0x8,%rdx
and    %r9,%rdx
or     %rcx,%rdx
mov    %rdx,(%r11,%rsi,1)
shr    $0x8,%r14
and    %r10,%r14
and    %r9,%rax
or     %r14,%rax
mov    %rax,0x80(%r11,%rsi,1)
add    $0x10,%rsi
jne    12f0 <trasp64_128_88ccw+0x1f0>
lea    0x10(%r8),%rax
add    $0x100,%r11
cmp    $0x30,%r8
mov    %rax,%r8
jb     12e0 <trasp64_128_88ccw+0x1e0>
movabs $0xf0f0f0f0f0f0f0f0,%r9
f0 f0 f0
movabs $0xf0f0f0f0f0f0f0f,%r10
0f 0f 0f
lea    0x78(%rdi),%rdx
mov    $0xfffffffffffffff8,%r8
nopl   0x0(%rax)
mov    -0x38(%rdx),%rsi
mov    -0x78(%rdx),%rcx
mov    -0x70(%rdx),%r11
mov    %rcx,%rax
shl    $0x4,%rax
and    %r9,%rax
mov    %rsi,%rbx
and    %r10,%rbx
or     %rax,%rbx
mov    %rbx,-0x78(%rdx)
and    %r9,%rcx
shr    $0x4,%rsi
and    %r10,%rsi
or     %rcx,%rsi
mov    %rsi,-0x38(%rdx)
mov    -0x30(%rdx),%rax
mov    %r11,%rcx
shl    $0x4,%rcx
and    %r9,%rcx
mov    %rax,%rsi
and    %r10,%rsi
or     %rcx,%rsi
mov    %rsi,-0x70(%rdx)
and    %r9,%r11
shr    $0x4,%rax
and    %r10,%rax
or     %r11,%rax
mov    %rax,-0x30(%rdx)
mov    -0x68(%rdx),%rax
mov    -0x28(%rdx),%rbx
mov    %rax,%rsi
shl    $0x4,%rsi
and    %r9,%rsi
mov    %rbx,%rcx
and    %r10,%rcx
or     %rsi,%rcx
mov    %rcx,-0x68(%rdx)
and    %r9,%rax
shr    $0x4,%rbx
and    %r10,%rbx
or     %rax,%rbx
mov    %rbx,-0x28(%rdx)
mov    -0x60(%rdx),%rax
mov    -0x20(%rdx),%rbx
mov    %rax,%rsi
shl    $0x4,%rsi
and    %r9,%rsi
mov    %rbx,%rcx
and    %r10,%rcx
or     %rsi,%rcx
mov    %rcx,-0x60(%rdx)
and    %r9,%rax
shr    $0x4,%rbx
and    %r10,%rbx
or     %rax,%rbx
mov    %rbx,-0x20(%rdx)
mov    -0x58(%rdx),%rax
mov    -0x18(%rdx),%rbx
mov    %rax,%rsi
shl    $0x4,%rsi
and    %r9,%rsi
mov    %rbx,%rcx
and    %r10,%rcx
or     %rsi,%rcx
mov    %rcx,-0x58(%rdx)
and    %r9,%rax
shr    $0x4,%rbx
and    %r10,%rbx
or     %rax,%rbx
mov    %rbx,-0x18(%rdx)
mov    -0x50(%rdx),%rax
mov    -0x10(%rdx),%rbx
mov    %rax,%rsi
shl    $0x4,%rsi
and    %r9,%rsi
mov    %rbx,%rcx
and    %r10,%rcx
or     %rsi,%rcx
mov    %rcx,-0x50(%rdx)
and    %r9,%rax
shr    $0x4,%rbx
and    %r10,%rbx
or     %rax,%rbx
mov    %rbx,-0x10(%rdx)
mov    -0x48(%rdx),%rax
mov    -0x8(%rdx),%rbx
mov    %rax,%rsi
shl    $0x4,%rsi
and    %r9,%rsi
mov    %rbx,%rcx
and    %r10,%rcx
or     %rsi,%rcx
mov    %rcx,-0x48(%rdx)
and    %r9,%rax
shr    $0x4,%rbx
and    %r10,%rbx
or     %rax,%rbx
mov    %rbx,-0x8(%rdx)
mov    -0x40(%rdx),%rax
mov    (%rdx),%rbx
mov    %rax,%rsi
shl    $0x4,%rsi
and    %r9,%rsi
mov    %rbx,%rcx
and    %r10,%rcx
or     %rsi,%rcx
mov    %rcx,-0x40(%rdx)
and    %r9,%rax
shr    $0x4,%rbx
and    %r10,%rbx
or     %rax,%rbx
mov    %rbx,(%rdx)
sub    $0xffffffffffffff80,%rdx
add    $0x8,%r8
cmp    $0x38,%r8
jb     13a0 <trasp64_128_88ccw+0x2a0>
movabs $0xcccccccccccccccc,%r8
cc cc cc
movabs $0x3333333333333333,%r9
33 33 33
lea    0x38(%rdi),%rdx
mov    $0xfffffffffffffffc,%r10
nop
mov    -0x18(%rdx),%rax
mov    -0x38(%rdx),%rcx
mov    -0x30(%rdx),%r11
lea    0x0(,%rcx,4),%rsi
and    %r8,%rsi
mov    %rax,%rbx
and    %r9,%rbx
or     %rsi,%rbx
mov    %rbx,-0x38(%rdx)
and    %r8,%rcx
shr    $0x2,%rax
and    %r9,%rax
or     %rcx,%rax
mov    %rax,-0x18(%rdx)
mov    -0x10(%rdx),%rax
lea    0x0(,%r11,4),%rcx
and    %r8,%rcx
mov    %rax,%rsi
and    %r9,%rsi
or     %rcx,%rsi
mov    %rsi,-0x30(%rdx)
and    %r8,%r11
shr    $0x2,%rax
and    %r9,%rax
or     %r11,%rax
mov    %rax,-0x10(%rdx)
mov    -0x28(%rdx),%rax
mov    -0x8(%rdx),%rbx
lea    0x0(,%rax,4),%rsi
and    %r8,%rsi
mov    %rbx,%rcx
and    %r9,%rcx
or     %rsi,%rcx
mov    %rcx,-0x28(%rdx)
and    %r8,%rax
shr    $0x2,%rbx
and    %r9,%rbx
or     %rax,%rbx
mov    %rbx,-0x8(%rdx)
mov    -0x20(%rdx),%rax
mov    (%rdx),%rbx
lea    0x0(,%rax,4),%rsi
and    %r8,%rsi
mov    %rbx,%rcx
and    %r9,%rcx
or     %rsi,%rcx
mov    %rcx,-0x20(%rdx)
and    %r8,%rax
shr    $0x2,%rbx
and    %r9,%rbx
or     %rax,%rbx
mov    %rbx,(%rdx)
add    $0x40,%rdx
add    $0x4,%r10
cmp    $0x3c,%r10
jb     1550 <trasp64_128_88ccw+0x450>
movabs $0xaaaaaaaaaaaaaaaa,%r8
aa aa aa
movabs $0x5555555555555555,%r9
55 55 55
add    $0x18,%rdi
mov    $0xfffffffffffffffe,%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x8(%rdi),%rsi
mov    -0x18(%rdi),%rax
mov    -0x10(%rdi),%r10
lea    (%rax,%rax,1),%rcx
and    %r8,%rcx
mov    %rsi,%rbx
and    %r9,%rbx
or     %rcx,%rbx
mov    %rbx,-0x18(%rdi)
and    %r8,%rax
shr    %rsi
and    %r9,%rsi
or     %rax,%rsi
mov    %rsi,-0x8(%rdi)
mov    (%rdi),%rax
lea    (%r10,%r10,1),%rcx
and    %r8,%rcx
mov    %rax,%rsi
and    %r9,%rsi
or     %rcx,%rsi
mov    %rsi,-0x10(%rdi)
and    %r8,%r10
shr    %rax
and    %r9,%rax
or     %r10,%rax
mov    %rax,(%rdi)
add    $0x2,%rdx
add    $0x20,%rdi
cmp    $0x3e,%rdx
jb     1650 <trasp64_128_88ccw+0x550>
pop    %rbx
pop    %r14
ret

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

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