user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<swab>:
  endbr64
  mov    %edx,%r8d
  sar    %edx
  mov    %rsi,%rax
  and    $0xe,%r8d
  je     L21
  nopw   0x0(%rax,%rax,1)
L85:
  movzbl (%rdi),%ecx
  movzbl 0x1(%rdi),%esi
  add    $0x2,%rax
  sub    $0x1,%edx
  add    $0x2,%rdi
  mov    %sil,-0x2(%rax)
  mov    %cl,-0x1(%rax)
  test   $0x7,%dl
  jne    L85
L21:
  mov    %edx,%esi
  sar    $0x3,%esi
  mov    %esi,%r9d
  sub    $0x1,%r9d
  js     L28
  lea    0xff(%rdi),%rdx
  sub    %rax,%rdx
  cmp    $0x1fe,%rdx
  jbe    L2
  cmp    $0xe,%r9d
  jbe    L2
  mov    %esi,%r8d
  sub    $0x30,%rsp
  mov    %rdi,%rdx
  mov    %rax,%rcx
  movdqa D4(%rip),%xmm15
  shr    $0x4,%r8d
  sub    $0x1,%r8d
  shl    $0x8,%r8
  lea    0x100(%rdi,%r8,1),%r8
  nopl   0x0(%rax,%rax,1)
L1:
  movdqu (%rdx),%xmm12
  movdqu 0x10(%rdx),%xmm0
  add    $0x100,%rdx
  add    $0x100,%rcx
  movdqu -0x100(%rdx),%xmm4
  movdqu -0x80(%rdx),%xmm8
  pand   %xmm15,%xmm0
  pand   %xmm15,%xmm12
  movdqu -0xe0(%rdx),%xmm11
  movdqu -0xe0(%rdx),%xmm3
  packuswb %xmm0,%xmm12
  movdqu -0xf0(%rdx),%xmm0
  psrlw  $0x8,%xmm4
  movdqu -0xc0(%rdx),%xmm10
  pand   %xmm15,%xmm11
  psrlw  $0x8,%xmm3
  movdqu -0xc0(%rdx),%xmm2
  movdqu -0xa0(%rdx),%xmm9
  psrlw  $0x8,%xmm0
  pand   %xmm15,%xmm10
  pand   %xmm15,%xmm8
  movdqu -0xa0(%rdx),%xmm1
  packuswb %xmm0,%xmm4
  psrlw  $0x8,%xmm2
  pand   %xmm15,%xmm9
  movdqu -0xd0(%rdx),%xmm0
  psrlw  $0x8,%xmm1
  movdqu -0x70(%rdx),%xmm5
  movdqu -0x60(%rdx),%xmm6
  pand   %xmm15,%xmm0
  psrlw  $0x8,%xmm5
  psrlw  $0x8,%xmm6
  packuswb %xmm0,%xmm11
  movdqu -0xd0(%rdx),%xmm0
  movdqa %xmm6,%xmm13
  psrlw  $0x8,%xmm0
  packuswb %xmm0,%xmm3
  movdqu -0xb0(%rdx),%xmm0
  pand   %xmm15,%xmm0
  packuswb %xmm0,%xmm10
  movdqu -0xb0(%rdx),%xmm0
  psrlw  $0x8,%xmm0
  packuswb %xmm0,%xmm2
  movdqu -0x90(%rdx),%xmm0
  pand   %xmm15,%xmm0
  packuswb %xmm0,%xmm9
  movdqu -0x90(%rdx),%xmm0
  psrlw  $0x8,%xmm0
  packuswb %xmm0,%xmm1
  movdqu -0x70(%rdx),%xmm0
  pand   %xmm15,%xmm0
  packuswb %xmm0,%xmm8
  movdqu -0x80(%rdx),%xmm0
  psrlw  $0x8,%xmm0
  movdqa %xmm0,%xmm7
  packuswb %xmm5,%xmm7
  movdqu -0x50(%rdx),%xmm5
  movaps %xmm7,-0x78(%rsp)
  movdqu -0x60(%rdx),%xmm7
  pand   %xmm15,%xmm5
  pand   %xmm15,%xmm7
  packuswb %xmm5,%xmm7
  movdqu -0x50(%rdx),%xmm5
  psrlw  $0x8,%xmm5
  packuswb %xmm5,%xmm13
  movdqu -0x40(%rdx),%xmm5
  movaps %xmm13,-0x68(%rsp)
  pand   %xmm15,%xmm5
  movdqa %xmm5,%xmm6
  movdqu -0x30(%rdx),%xmm5
  pand   %xmm15,%xmm5
  packuswb %xmm5,%xmm6
  movdqu -0x40(%rdx),%xmm5
  psrlw  $0x8,%xmm5
  movdqa %xmm5,%xmm13
  movdqu -0x30(%rdx),%xmm5
  movdqa %xmm13,%xmm14
  psrlw  $0x8,%xmm5
  packuswb %xmm5,%xmm14
  movdqu -0x20(%rdx),%xmm5
  movaps %xmm14,-0x58(%rsp)
  movdqu -0x10(%rdx),%xmm0
  pand   %xmm15,%xmm5
  pand   %xmm15,%xmm0
  packuswb %xmm0,%xmm5
  movdqu -0x20(%rdx),%xmm0
  psrlw  $0x8,%xmm0
  movdqa %xmm0,%xmm14
  movdqu -0x10(%rdx),%xmm0
  psrlw  $0x8,%xmm0
  movdqa %xmm0,%xmm13
  movdqa %xmm14,%xmm0
  movdqa %xmm15,%xmm14
  packuswb %xmm13,%xmm0
  pand   %xmm12,%xmm14
  movdqa %xmm15,%xmm13
  psrlw  $0x8,%xmm12
  movaps %xmm0,-0x48(%rsp)
  pand   %xmm11,%xmm13
  movdqa %xmm12,%xmm0
  psrlw  $0x8,%xmm11
  movdqa %xmm15,%xmm12
  packuswb %xmm11,%xmm0
  movdqa %xmm15,%xmm11
  pand   %xmm9,%xmm12
  pand   %xmm10,%xmm11
  psrlw  $0x8,%xmm10
  packuswb %xmm13,%xmm14
  movaps %xmm0,-0x38(%rsp)
  packuswb %xmm12,%xmm11
  psrlw  $0x8,%xmm9
  movdqa %xmm10,%xmm12
  packuswb %xmm9,%xmm12
  movdqa %xmm15,%xmm10
  movdqa %xmm15,%xmm9
  pand   %xmm7,%xmm10
  pand   %xmm8,%xmm9
  movaps %xmm12,-0x28(%rsp)
  psrlw  $0x8,%xmm8
  psrlw  $0x8,%xmm7
  packuswb %xmm10,%xmm9
  movdqa %xmm8,%xmm10
  movdqa %xmm15,%xmm8
  packuswb %xmm7,%xmm10
  movdqa %xmm15,%xmm7
  pand   %xmm5,%xmm8
  pand   %xmm6,%xmm7
  psrlw  $0x8,%xmm6
  movaps %xmm10,-0x18(%rsp)
  movdqa %xmm15,%xmm10
  packuswb %xmm8,%xmm7
  psrlw  $0x8,%xmm5
  movdqa %xmm6,%xmm8
  packuswb %xmm5,%xmm8
  movdqa %xmm15,%xmm5
  movdqa %xmm15,%xmm6
  pand   %xmm4,%xmm5
  psrlw  $0x8,%xmm4
  pand   %xmm3,%xmm6
  movaps %xmm8,-0x8(%rsp)
  psrlw  $0x8,%xmm3
  movdqa %xmm4,%xmm12
  packuswb %xmm6,%xmm5
  movdqa -0x68(%rsp),%xmm6
  packuswb %xmm3,%xmm12
  movdqa %xmm15,%xmm3
  movdqa -0x78(%rsp),%xmm4
  pand   %xmm1,%xmm10
  pand   %xmm2,%xmm3
  psrlw  $0x8,%xmm2
  movaps %xmm12,0x8(%rsp)
  psrlw  $0x8,%xmm1
  movdqa %xmm2,%xmm13
  movdqa %xmm6,%xmm2
  packuswb %xmm1,%xmm13
  movdqa %xmm15,%xmm1
  pand   %xmm15,%xmm2
  pand   %xmm4,%xmm1
  movdqa %xmm4,%xmm0
  packuswb %xmm10,%xmm3
  packuswb %xmm2,%xmm1
  psrlw  $0x8,%xmm0
  movdqa %xmm6,%xmm2
  psrlw  $0x8,%xmm2
  movdqa %xmm0,%xmm6
  packuswb %xmm2,%xmm6
  movdqa -0x58(%rsp),%xmm2
  movdqa %xmm6,%xmm12
  movdqa %xmm2,%xmm6
  psrlw  $0x8,%xmm2
  pand   %xmm15,%xmm6
  movdqa %xmm6,%xmm4
  movdqa -0x48(%rsp),%xmm6
  movdqa %xmm6,%xmm0
  pand   %xmm15,%xmm0
  packuswb %xmm0,%xmm4
  movdqa %xmm2,%xmm0
  movdqa %xmm6,%xmm2
  psrlw  $0x8,%xmm2
  packuswb %xmm2,%xmm0
  movdqa %xmm15,%xmm2
  pand   %xmm14,%xmm2
  movdqa %xmm2,%xmm8
  movdqa %xmm15,%xmm2
  pand   %xmm11,%xmm2
  psrlw  $0x8,%xmm11
  packuswb %xmm2,%xmm8
  movdqa %xmm14,%xmm2
  psrlw  $0x8,%xmm2
  movdqa %xmm2,%xmm6
  movdqa %xmm15,%xmm2
  pand   %xmm9,%xmm2
  psrlw  $0x8,%xmm9
  packuswb %xmm11,%xmm6
  movdqa %xmm2,%xmm10
  movdqa %xmm15,%xmm2
  movdqa %xmm9,%xmm14
  movaps %xmm6,-0x58(%rsp)
  pand   %xmm7,%xmm2
  psrlw  $0x8,%xmm7
  packuswb %xmm7,%xmm14
  packuswb %xmm2,%xmm10
  movdqa %xmm15,%xmm7
  movdqa %xmm15,%xmm2
  pand   %xmm3,%xmm7
  pand   %xmm5,%xmm2
  psrlw  $0x8,%xmm5
  packuswb %xmm7,%xmm2
  psrlw  $0x8,%xmm3
  movdqa %xmm5,%xmm7
  packuswb %xmm3,%xmm7
  movdqa %xmm15,%xmm5
  movdqa -0x38(%rsp),%xmm3
  movaps %xmm7,-0x48(%rsp)
  movdqa %xmm15,%xmm7
  pand   %xmm4,%xmm5
  pand   %xmm1,%xmm7
  psrlw  $0x8,%xmm1
  packuswb %xmm5,%xmm7
  psrlw  $0x8,%xmm4
  movdqa %xmm1,%xmm5
  packuswb %xmm4,%xmm5
  movdqa %xmm3,%xmm1
  movdqa -0x28(%rsp),%xmm4
  pand   %xmm15,%xmm1
  psrlw  $0x8,%xmm3
  movaps %xmm5,0x18(%rsp)
  movdqa %xmm1,%xmm6
  movdqa %xmm4,%xmm1
  movdqa %xmm3,%xmm9
  movdqa -0x18(%rsp),%xmm3
  pand   %xmm15,%xmm1
  packuswb %xmm1,%xmm6
  movdqa %xmm4,%xmm1
  movdqa -0x8(%rsp),%xmm4
  psrlw  $0x8,%xmm1
  packuswb %xmm1,%xmm9
  movdqa %xmm3,%xmm1
  pand   %xmm15,%xmm1
  psrlw  $0x8,%xmm3
  movaps %xmm9,-0x78(%rsp)
  movdqa %xmm1,%xmm5
  movdqa %xmm4,%xmm1
  movdqa %xmm3,%xmm11
  pand   %xmm15,%xmm1
  packuswb %xmm1,%xmm5
  movdqa %xmm4,%xmm1
  movdqa 0x8(%rsp),%xmm4
  psrlw  $0x8,%xmm1
  packuswb %xmm1,%xmm11
  movdqa %xmm4,%xmm3
  movdqa %xmm15,%xmm1
  pand   %xmm13,%xmm1
  psrlw  $0x8,%xmm4
  pand   %xmm15,%xmm3
  movaps %xmm11,-0x68(%rsp)
  packuswb %xmm1,%xmm3
  movdqa %xmm13,%xmm1
  movdqa %xmm4,%xmm13
  psrlw  $0x8,%xmm1
  movdqa %xmm15,%xmm4
  movdqa %xmm15,%xmm11
  packuswb %xmm1,%xmm13
  movdqa %xmm15,%xmm1
  pand   %xmm12,%xmm4
  pand   %xmm0,%xmm1
  psrlw  $0x8,%xmm0
  pand   %xmm3,%xmm11
  packuswb %xmm1,%xmm4
  psrlw  $0x8,%xmm3
  movdqa %xmm12,%xmm1
  movdqa 0x18(%rsp),%xmm12
  psrlw  $0x8,%xmm1
  packuswb %xmm0,%xmm1
  movdqa %xmm15,%xmm0
  pand   %xmm8,%xmm0
  psrlw  $0x8,%xmm8
  movdqa %xmm0,%xmm9
  movdqa %xmm15,%xmm0
  pand   %xmm10,%xmm0
  psrlw  $0x8,%xmm10
  packuswb %xmm0,%xmm9
  movdqa %xmm8,%xmm0
  movdqa %xmm15,%xmm8
  packuswb %xmm10,%xmm0
  pand   %xmm7,%xmm8
  movaps %xmm0,-0x38(%rsp)
  movdqa %xmm15,%xmm0
  psrlw  $0x8,%xmm7
  pand   %xmm2,%xmm0
  psrlw  $0x8,%xmm2
  packuswb %xmm8,%xmm0
  movdqa %xmm15,%xmm8
  packuswb %xmm7,%xmm2
  pand   %xmm6,%xmm8
  psrlw  $0x8,%xmm6
  movdqa %xmm15,%xmm7
  pand   %xmm5,%xmm7
  psrlw  $0x8,%xmm5
  movdqa %xmm8,%xmm10
  movdqa %xmm6,%xmm8
  movdqa -0x58(%rsp),%xmm6
  packuswb %xmm7,%xmm10
  packuswb %xmm5,%xmm8
  movdqa %xmm15,%xmm5
  pand   %xmm4,%xmm5
  psrlw  $0x8,%xmm4
  movaps %xmm8,-0x28(%rsp)
  packuswb %xmm4,%xmm3
  movdqa %xmm6,%xmm4
  packuswb %xmm5,%xmm11
  pand   %xmm15,%xmm4
  movdqa %xmm4,%xmm5
  movdqa %xmm15,%xmm4
  pand   %xmm14,%xmm4
  movdqa %xmm5,%xmm7
  packuswb %xmm4,%xmm7
  movdqa %xmm6,%xmm4
  movdqa -0x48(%rsp),%xmm6
  psrlw  $0x8,%xmm4
  movdqa %xmm4,%xmm5
  movdqa %xmm14,%xmm4
  psrlw  $0x8,%xmm4
  movdqa %xmm5,%xmm14
  movdqa %xmm12,%xmm5
  packuswb %xmm4,%xmm14
  movdqa %xmm6,%xmm4
  pand   %xmm15,%xmm5
  pand   %xmm15,%xmm4
  movdqa %xmm4,%xmm8
  movdqa -0x78(%rsp),%xmm4
  packuswb %xmm5,%xmm8
  movdqa %xmm6,%xmm5
  movdqa %xmm12,%xmm6
  psrlw  $0x8,%xmm6
  psrlw  $0x8,%xmm5
  pand   %xmm15,%xmm4
  movaps %xmm8,-0x58(%rsp)
  packuswb %xmm6,%xmm5
  movdqa -0x68(%rsp),%xmm6
  movdqa %xmm4,%xmm12
  movdqa -0x78(%rsp),%xmm4
  movdqa %xmm15,%xmm8
  pand   %xmm15,%xmm6
  psrlw  $0x8,%xmm4
  pand   %xmm13,%xmm8
  packuswb %xmm6,%xmm12
  movdqa -0x68(%rsp),%xmm6
  psrlw  $0x8,%xmm13
  psrlw  $0x8,%xmm6
  packuswb %xmm6,%xmm4
  movdqa %xmm15,%xmm6
  pand   %xmm1,%xmm6
  psrlw  $0x8,%xmm1
  movaps %xmm4,-0x78(%rsp)
  movdqa -0x28(%rsp),%xmm4
  packuswb %xmm1,%xmm13
  packuswb %xmm6,%xmm8
  movdqa %xmm0,%xmm1
  movdqa -0x38(%rsp),%xmm6
  punpcklbw %xmm2,%xmm1
  punpckhbw %xmm2,%xmm0
  movdqa %xmm9,%xmm2
  punpcklbw %xmm6,%xmm2
  punpckhbw %xmm6,%xmm9
  movdqa %xmm11,%xmm6
  punpcklbw %xmm3,%xmm6
  punpckhbw %xmm3,%xmm11
  movdqa %xmm10,%xmm3
  punpcklbw %xmm4,%xmm3
  punpckhbw %xmm4,%xmm10
  movdqa -0x58(%rsp),%xmm4
  movaps %xmm3,-0x68(%rsp)
  movdqa %xmm4,%xmm3
  punpckhbw %xmm5,%xmm4
  movaps %xmm10,-0x48(%rsp)
  punpcklbw %xmm5,%xmm3
  movdqa %xmm7,%xmm5
  punpckhbw %xmm14,%xmm7
  punpcklbw %xmm14,%xmm5
  movdqa %xmm12,%xmm14
  movdqa %xmm5,%xmm10
  movdqa %xmm8,%xmm5
  punpckhbw %xmm13,%xmm8
  punpcklbw %xmm13,%xmm5
  movdqa -0x78(%rsp),%xmm13
  punpckhbw %xmm13,%xmm12
  punpcklbw %xmm13,%xmm14
  movdqa %xmm12,%xmm13
  movdqa %xmm1,%xmm12
  punpckhbw %xmm3,%xmm1
  punpcklbw %xmm3,%xmm12
  movdqa %xmm0,%xmm3
  punpckhbw %xmm4,%xmm0
  punpcklbw %xmm4,%xmm3
  movdqa %xmm2,%xmm4
  punpckhbw %xmm10,%xmm2
  punpcklbw %xmm10,%xmm4
  movdqa %xmm9,%xmm10
  punpckhbw %xmm7,%xmm9
  punpcklbw %xmm7,%xmm10
  movdqa %xmm6,%xmm7
  punpckhbw %xmm5,%xmm6
  movaps %xmm9,-0x78(%rsp)
  punpcklbw %xmm5,%xmm7
  movdqa %xmm11,%xmm5
  punpckhbw %xmm8,%xmm11
  punpcklbw %xmm8,%xmm5
  movdqa -0x68(%rsp),%xmm8
  movdqa %xmm8,%xmm9
  punpckhbw %xmm14,%xmm8
  punpcklbw %xmm14,%xmm9
  movdqa -0x48(%rsp),%xmm14
  movaps %xmm8,-0x68(%rsp)
  movdqa %xmm14,%xmm8
  punpckhbw %xmm13,%xmm14
  punpcklbw %xmm13,%xmm8
  movdqa %xmm12,%xmm13
  punpckhbw %xmm7,%xmm12
  movaps %xmm14,-0x58(%rsp)
  punpcklbw %xmm7,%xmm13
  movdqa %xmm1,%xmm7
  punpckhbw %xmm6,%xmm1
  punpcklbw %xmm6,%xmm7
  movdqa %xmm3,%xmm6
  punpckhbw %xmm5,%xmm3
  punpcklbw %xmm5,%xmm6
  movdqa %xmm0,%xmm5
  movdqa %xmm4,%xmm14
  punpcklbw %xmm11,%xmm5
  punpckhbw %xmm11,%xmm0
  punpckhbw %xmm9,%xmm4
  movdqa -0x68(%rsp),%xmm11
  punpcklbw %xmm9,%xmm14
  movdqa %xmm2,%xmm9
  punpcklbw %xmm11,%xmm9
  punpckhbw %xmm11,%xmm2
  movdqa %xmm10,%xmm11
  movaps %xmm9,-0x68(%rsp)
  punpcklbw %xmm8,%xmm11
  punpckhbw %xmm8,%xmm10
  movdqa -0x78(%rsp),%xmm9
  movdqa -0x58(%rsp),%xmm8
  movaps %xmm11,-0x48(%rsp)
  movdqa %xmm10,%xmm11
  movdqa %xmm9,%xmm10
  punpcklbw %xmm8,%xmm10
  punpckhbw %xmm8,%xmm9
  movdqa %xmm13,%xmm8
  punpcklbw %xmm14,%xmm8
  punpckhbw %xmm14,%xmm13
  movups %xmm8,-0x100(%rcx)
  movdqa %xmm12,%xmm8
  punpcklbw %xmm4,%xmm8
  movups %xmm13,-0xf0(%rcx)
  movups %xmm8,-0xe0(%rcx)
  movdqa %xmm12,%xmm8
  movdqa -0x68(%rsp),%xmm12
  punpckhbw %xmm4,%xmm8
  movdqa %xmm7,%xmm4
  punpcklbw %xmm12,%xmm4
  punpckhbw %xmm12,%xmm7
  movups %xmm8,-0xd0(%rcx)
  movups %xmm4,-0xc0(%rcx)
  movdqa %xmm1,%xmm4
  punpckhbw %xmm2,%xmm1
  punpcklbw %xmm2,%xmm4
  movdqa -0x48(%rsp),%xmm2
  movups %xmm1,-0x90(%rcx)
  movdqa %xmm6,%xmm1
  movups %xmm7,-0xb0(%rcx)
  punpcklbw %xmm2,%xmm1
  punpckhbw %xmm2,%xmm6
  movups %xmm4,-0xa0(%rcx)
  movups %xmm1,-0x80(%rcx)
  movdqa %xmm3,%xmm1
  punpckhbw %xmm11,%xmm3
  punpcklbw %xmm11,%xmm1
  movups %xmm6,-0x70(%rcx)
  movups %xmm1,-0x60(%rcx)
  movdqa %xmm5,%xmm1
  punpckhbw %xmm10,%xmm5
  punpcklbw %xmm10,%xmm1
  movups %xmm3,-0x50(%rcx)
  movups %xmm1,-0x40(%rcx)
  movdqa %xmm0,%xmm1
  punpckhbw %xmm9,%xmm0
  punpcklbw %xmm9,%xmm1
  movups %xmm5,-0x30(%rcx)
  movups %xmm1,-0x20(%rcx)
  movups %xmm0,-0x10(%rcx)
  cmp    %r8,%rdx
  jne    L1
  mov    %esi,%r8d
  and    $0xfffffff0,%r8d
  mov    %r8d,%ecx
  shl    $0x4,%rcx
  lea    (%rdi,%rcx,1),%rdx
  add    %rcx,%rax
  mov    %r9d,%ecx
  sub    %r8d,%ecx
  cmp    %r8d,%esi
  je     L63
  nopl   0x0(%rax)
L45:
  movzbl (%rdx),%esi
  movzbl 0x1(%rdx),%edi
  add    $0x10,%rdx
  add    $0x10,%rax
  mov    %dil,-0x10(%rax)
  mov    %sil,-0xf(%rax)
  movzbl -0xe(%rdx),%esi
  movzbl -0xd(%rdx),%edi
  mov    %sil,-0xd(%rax)
  mov    %dil,-0xe(%rax)
  movzbl -0xc(%rdx),%esi
  movzbl -0xb(%rdx),%edi
  mov    %sil,-0xb(%rax)
  mov    %dil,-0xc(%rax)
  movzbl -0xa(%rdx),%esi
  movzbl -0x9(%rdx),%edi
  mov    %sil,-0x9(%rax)
  mov    %dil,-0xa(%rax)
  movzbl -0x8(%rdx),%esi
  movzbl -0x7(%rdx),%edi
  mov    %sil,-0x7(%rax)
  mov    %dil,-0x8(%rax)
  movzbl -0x6(%rdx),%esi
  movzbl -0x5(%rdx),%edi
  mov    %sil,-0x5(%rax)
  mov    %dil,-0x6(%rax)
  movzbl -0x4(%rdx),%esi
  movzbl -0x3(%rdx),%edi
  mov    %sil,-0x3(%rax)
  mov    %dil,-0x4(%rax)
  movzbl -0x2(%rdx),%esi
  movzbl -0x1(%rdx),%edi
  mov    %dil,-0x2(%rax)
  mov    %sil,-0x1(%rax)
  sub    $0x1,%ecx
  jns    L45
L63:
  add    $0x30,%rsp
  ret
  nopl   (%rax)
L2:
  mov    %r9d,%edx
  add    $0x1,%rdx
  shl    $0x4,%rdx
  add    %rax,%rdx
  cs nopw 0x0(%rax,%rax,1)
L41:
  movzbl (%rdi),%ecx
  movzbl 0x1(%rdi),%esi
  add    $0x10,%rdi
  add    $0x10,%rax
  mov    %sil,-0x10(%rax)
  mov    %cl,-0xf(%rax)
  movzbl -0xe(%rdi),%ecx
  movzbl -0xd(%rdi),%esi
  mov    %cl,-0xd(%rax)
  mov    %sil,-0xe(%rax)
  movzbl -0xc(%rdi),%ecx
  movzbl -0xb(%rdi),%esi
  mov    %cl,-0xb(%rax)
  mov    %sil,-0xc(%rax)
  movzbl -0xa(%rdi),%ecx
  movzbl -0x9(%rdi),%esi
  mov    %cl,-0x9(%rax)
  mov    %sil,-0xa(%rax)
  movzbl -0x8(%rdi),%ecx
  movzbl -0x7(%rdi),%esi
  mov    %cl,-0x7(%rax)
  mov    %sil,-0x8(%rax)
  movzbl -0x6(%rdi),%ecx
  movzbl -0x5(%rdi),%esi
  mov    %cl,-0x5(%rax)
  mov    %sil,-0x6(%rax)
  movzbl -0x4(%rdi),%ecx
  movzbl -0x3(%rdi),%esi
  mov    %cl,-0x3(%rax)
  mov    %sil,-0x4(%rax)
  movzbl -0x2(%rdi),%ecx
  movzbl -0x1(%rdi),%esi
  mov    %sil,-0x2(%rax)
  mov    %cl,-0x1(%rax)
  cmp    %rax,%rdx
  jne    L41
  ret
  nopl   0x0(%rax)
L28:
  ret
```

tool_calls: name: disassemble_data
arguments: label: D4
datatype: byte[16]

tool: {"D4": [0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]}

assistant: ```c
void swab(from, to, n) register char *from, *to;
register int n;
{
  register unsigned long temp;
  n >>= 1;
  n++;
  while ((--n) & 07)
    temp = *from++, *to++ = *from++, *to++ = temp;
  n >>= 3;
  while (--n >= 0) {
    temp = *from++, *to++ = *from++, *to++ = temp;
    temp = *from++, *to++ = *from++, *to++ = temp;
    temp = *from++, *to++ = *from++, *to++ = temp;
    temp = *from++, *to++ = *from++, *to++ = temp;
    temp = *from++, *to++ = *from++, *to++ = temp;
    temp = *from++, *to++ = *from++, *to++ = temp;
    temp = *from++, *to++ = *from++, *to++ = temp;
    temp = *from++, *to++ = *from++, *to++ = temp;
  }
}
```