user: 请从给定的汇编指令推导出C源代码：

```asm
<MDreverse>:
  endbr64
  mov    (%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,(%rdi)
  mov    0x4(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x4(%rdi)
  mov    0x8(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x8(%rdi)
  mov    0xc(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0xc(%rdi)
  mov    0x10(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x10(%rdi)
  mov    0x14(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x14(%rdi)
  mov    0x18(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x18(%rdi)
  mov    0x1c(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x1c(%rdi)
  mov    0x20(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x20(%rdi)
  mov    0x24(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x24(%rdi)
  mov    0x28(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x28(%rdi)
  mov    0x2c(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x2c(%rdi)
  mov    0x30(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x30(%rdi)
  mov    0x34(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x34(%rdi)
  mov    0x38(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x38(%rdi)
  mov    0x3c(%rdi),%edx
  rol    $0x10,%edx
  mov    %edx,%ecx
  shr    $0x8,%ecx
  and    $0xff00ff,%ecx
  shl    $0x8,%edx
  and    $0xff00ff00,%edx
  or     %ecx,%edx
  mov    %edx,0x3c(%rdi)
  ret
```

assistant: ```c
void MDreverse(X) unsigned int *X;
{
  register unsigned int t;
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
  {
    t = (*X << 16) | (*X >> 16);
    *X++ = ((t & 0xFF00FF00) >> 8) | ((t & 0x00FF00FF) << 8);
  };
}
```