user: What would the C source look like for the assembly code provided here:

```asm
<MDreverse>:
  endbr64
  mov    (%rdi),%edx
  mov    0x4(%rdi),%r11d
  mov    %rdi,%rax
  mov    0x14(%rdi),%r9d
  mov    0x3c(%rax),%esi
  bswap  %edx
  movd   %edx,%xmm5
  mov    0x8(%rdi),%edx
  bswap  %r11d
  bswap  %r9d
  mov    0x34(%rax),%ecx
  bswap  %esi
  bswap  %edx
  movd   %edx,%xmm6
  mov    0xc(%rdi),%edx
  bswap  %ecx
  bswap  %edx
  movd   %edx,%xmm7
  mov    0x10(%rdi),%edx
  punpckldq %xmm7,%xmm6
  movd   %r11d,%xmm7
  bswap  %edx
  movd   %edx,%xmm3
  mov    0x18(%rdi),%edx
  punpckldq %xmm7,%xmm5
  punpcklqdq %xmm6,%xmm5
  movd   %r9d,%xmm7
  bswap  %edx
  movd   %edx,%xmm4
  mov    0x1c(%rdi),%edx
  punpckldq %xmm7,%xmm3
  bswap  %edx
  mov    %edx,%r10d
  mov    0x20(%rdi),%edx
  mov    0x24(%rdi),%edi
  movd   %r10d,%xmm6
  movups %xmm5,(%rax)
  bswap  %edx
  movd   %edx,%xmm1
  mov    0x28(%rax),%edx
  punpckldq %xmm6,%xmm4
  punpcklqdq %xmm4,%xmm3
  bswap  %edi
  bswap  %edx
  movd   %edx,%xmm2
  mov    0x2c(%rax),%edx
  movups %xmm3,0x10(%rax)
  movd   %edi,%xmm3
  bswap  %edx
  mov    %edx,%r8d
  mov    0x30(%rax),%edx
  punpckldq %xmm3,%xmm1
  movd   %r8d,%xmm4
  punpckldq %xmm4,%xmm2
  bswap  %edx
  movd   %edx,%xmm0
  mov    0x38(%rax),%edx
  punpcklqdq %xmm2,%xmm1
  movd   %esi,%xmm2
  movups %xmm1,0x20(%rax)
  bswap  %edx
  movd   %edx,%xmm1
  punpckldq %xmm2,%xmm1
  movd   %ecx,%xmm2
  punpckldq %xmm2,%xmm0
  punpcklqdq %xmm1,%xmm0
  movups %xmm0,0x30(%rax)
  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);
  };
}
```