user: 这段汇编代码用C语言表示是什么样的？

```asm
<byteswap>:
  endbr64
  movq   %xmm0,%rdx
  push   %rbx
  movq   %xmm0,%r9
  movd   %xmm0,%r8d
  movzbl %dl,%eax
  movzbl %dh,%ebx
  shr    $0x10,%r9
  movq   %xmm0,%rdi
  shl    $0x8,%rax
  and    $0xff,%r9d
  sar    $0x18,%r8d
  movq   %xmm0,%rsi
  or     %rbx,%rax
  movzbl %r8b,%r8d
  shl    $0x18,%rdi
  movq   %xmm0,%rcx
  shl    $0x8,%rax
  shr    $0x38,%rdi
  pop    %rbx
  shl    $0x10,%rsi
  or     %r9,%rax
  shl    $0x8,%rcx
  shl    $0x8,%rax
  shr    $0x38,%rsi
  shr    $0x38,%rcx
  or     %r8,%rax
  shr    $0x38,%rdx
  shl    $0x8,%rax
  or     %rdi,%rax
  shl    $0x8,%rax
  or     %rsi,%rax
  shl    $0x8,%rax
  or     %rcx,%rax
  shl    $0x8,%rax
  or     %rdx,%rax
  movq   %rax,%xmm0
  ret
```

assistant: ```c
double byteswap(double x) {
  char buf[sizeof(double)];
  char t;
  memcpy(buf, &x, sizeof(double));
  if (sizeof(double) > 2 * (0) + 1)
    t = buf[0], buf[0] = buf[sizeof(double) - 1 - (0)], buf[sizeof(double) - 1 - (0)] = t;
  if (sizeof(double) > 2 * ((0) + 1) + 1)
    t = buf[(0) + 1], buf[(0) + 1] = buf[sizeof(double) - 1 - ((0) + 1)], buf[sizeof(double) - 1 - ((0) + 1)] = t;
  if (sizeof(double) > 2 * ((0) + 2) + 1)
    t = buf[(0) + 2], buf[(0) + 2] = buf[sizeof(double) - 1 - ((0) + 2)], buf[sizeof(double) - 1 - ((0) + 2)] = t;
  if (sizeof(double) > 2 * (((0) + 2) + 1) + 1)
    t = buf[((0) + 2) + 1], buf[((0) + 2) + 1] = buf[sizeof(double) - 1 - (((0) + 2) + 1)], buf[sizeof(double) - 1 - (((0) + 2) + 1)] = t;
  if (sizeof(double) > 2 * ((0) + 4) + 1)
    t = buf[(0) + 4], buf[(0) + 4] = buf[sizeof(double) - 1 - ((0) + 4)], buf[sizeof(double) - 1 - ((0) + 4)] = t;
  if (sizeof(double) > 2 * (((0) + 4) + 1) + 1)
    t = buf[((0) + 4) + 1], buf[((0) + 4) + 1] = buf[sizeof(double) - 1 - (((0) + 4) + 1)], buf[sizeof(double) - 1 - (((0) + 4) + 1)] = t;
  if (sizeof(double) > 2 * (((0) + 4) + 2) + 1)
    t = buf[((0) + 4) + 2], buf[((0) + 4) + 2] = buf[sizeof(double) - 1 - (((0) + 4) + 2)], buf[sizeof(double) - 1 - (((0) + 4) + 2)] = t;
  if (sizeof(double) > 2 * ((((0) + 4) + 2) + 1) + 1)
    t = buf[(((0) + 4) + 2) + 1], buf[(((0) + 4) + 2) + 1] = buf[sizeof(double) - 1 - ((((0) + 4) + 2) + 1)], buf[sizeof(double) - 1 - ((((0) + 4) + 2) + 1)] = t;
  if (sizeof(double) > 2 * ((0) + 8) + 1)
    t = buf[(0) + 8], buf[(0) + 8] = buf[sizeof(double) - 1 - ((0) + 8)], buf[sizeof(double) - 1 - ((0) + 8)] = t;
  if (sizeof(double) > 2 * (((0) + 8) + 1) + 1)
    t = buf[((0) + 8) + 1], buf[((0) + 8) + 1] = buf[sizeof(double) - 1 - (((0) + 8) + 1)], buf[sizeof(double) - 1 - (((0) + 8) + 1)] = t;
  if (sizeof(double) > 2 * (((0) + 8) + 2) + 1)
    t = buf[((0) + 8) + 2], buf[((0) + 8) + 2] = buf[sizeof(double) - 1 - (((0) + 8) + 2)], buf[sizeof(double) - 1 - (((0) + 8) + 2)] = t;
  if (sizeof(double) > 2 * ((((0) + 8) + 2) + 1) + 1)
    t = buf[(((0) + 8) + 2) + 1], buf[(((0) + 8) + 2) + 1] = buf[sizeof(double) - 1 - ((((0) + 8) + 2) + 1)], buf[sizeof(double) - 1 - ((((0) + 8) + 2) + 1)] = t;
  if (sizeof(double) > 2 * (((0) + 8) + 4) + 1)
    t = buf[((0) + 8) + 4], buf[((0) + 8) + 4] = buf[sizeof(double) - 1 - (((0) + 8) + 4)], buf[sizeof(double) - 1 - (((0) + 8) + 4)] = t;
  if (sizeof(double) > 2 * ((((0) + 8) + 4) + 1) + 1)
    t = buf[(((0) + 8) + 4) + 1], buf[(((0) + 8) + 4) + 1] = buf[sizeof(double) - 1 - ((((0) + 8) + 4) + 1)], buf[sizeof(double) - 1 - ((((0) + 8) + 4) + 1)] = t;
  if (sizeof(double) > 2 * ((((0) + 8) + 4) + 2) + 1)
    t = buf[(((0) + 8) + 4) + 2], buf[(((0) + 8) + 4) + 2] = buf[sizeof(double) - 1 - ((((0) + 8) + 4) + 2)], buf[sizeof(double) - 1 - ((((0) + 8) + 4) + 2)] = t;
  if (sizeof(double) > 2 * (((((0) + 8) + 4) + 2) + 1) + 1)
    t = buf[((((0) + 8) + 4) + 2) + 1], buf[((((0) + 8) + 4) + 2) + 1] = buf[sizeof(double) - 1 - (((((0) + 8) + 4) + 2) + 1)], buf[sizeof(double) - 1 - (((((0) + 8) + 4) + 2) + 1)] = t;
  memcpy(&x, buf, sizeof(double));
  return x;
}
```