user: What is the c source code of the assembly code below?

```asm
<Saturate>:
  endbr64
  movdqa D4(%rip),%xmm4
  movdqu (%rdi),%xmm1
  pxor   %xmm2,%xmm2
  movdqu 0x10(%rdi),%xmm6
  movdqa D1(%rip),%xmm3
  movdqa %xmm2,%xmm8
  movdqa %xmm2,%xmm7
  pmaxsw %xmm4,%xmm1
  pmaxsw %xmm4,%xmm6
  pminsw %xmm3,%xmm1
  pminsw %xmm3,%xmm6
  pcmpgtw %xmm1,%xmm8
  movdqa %xmm1,%xmm5
  movups %xmm1,(%rdi)
  pcmpgtw %xmm6,%xmm7
  movdqa %xmm6,%xmm0
  movups %xmm6,0x10(%rdi)
  punpcklwd %xmm8,%xmm5
  punpckhwd %xmm8,%xmm1
  punpcklwd %xmm7,%xmm0
  paddd  %xmm5,%xmm0
  movdqa %xmm1,%xmm5
  movdqa %xmm6,%xmm1
  punpckhwd %xmm7,%xmm1
  movdqa %xmm2,%xmm6
  paddd  %xmm5,%xmm1
  movdqu 0x20(%rdi),%xmm5
  pmaxsw %xmm4,%xmm5
  pminsw %xmm3,%xmm5
  pcmpgtw %xmm5,%xmm6
  movdqa %xmm5,%xmm7
  movups %xmm5,0x20(%rdi)
  punpcklwd %xmm6,%xmm7
  paddd  %xmm7,%xmm0
  movdqa %xmm5,%xmm7
  movdqu 0x30(%rdi),%xmm5
  punpckhwd %xmm6,%xmm7
  movdqa %xmm2,%xmm6
  pmaxsw %xmm4,%xmm5
  paddd  %xmm7,%xmm1
  pminsw %xmm3,%xmm5
  pcmpgtw %xmm5,%xmm6
  movdqa %xmm5,%xmm7
  movups %xmm5,0x30(%rdi)
  punpcklwd %xmm6,%xmm7
  paddd  %xmm7,%xmm0
  movdqa %xmm5,%xmm7
  movdqu 0x40(%rdi),%xmm5
  punpckhwd %xmm6,%xmm7
  movdqa %xmm2,%xmm6
  pmaxsw %xmm4,%xmm5
  paddd  %xmm7,%xmm1
  pminsw %xmm3,%xmm5
  pcmpgtw %xmm5,%xmm6
  movdqa %xmm5,%xmm7
  movups %xmm5,0x40(%rdi)
  punpcklwd %xmm6,%xmm7
  paddd  %xmm7,%xmm0
  movdqa %xmm5,%xmm7
  movdqu 0x50(%rdi),%xmm5
  punpckhwd %xmm6,%xmm7
  movdqa %xmm2,%xmm6
  pmaxsw %xmm4,%xmm5
  paddd  %xmm7,%xmm1
  pminsw %xmm3,%xmm5
  pcmpgtw %xmm5,%xmm6
  movdqa %xmm5,%xmm7
  movups %xmm5,0x50(%rdi)
  punpcklwd %xmm6,%xmm7
  paddd  %xmm7,%xmm0
  movdqa %xmm5,%xmm7
  movdqu 0x60(%rdi),%xmm5
  punpckhwd %xmm6,%xmm7
  movdqa %xmm2,%xmm6
  pmaxsw %xmm4,%xmm5
  paddd  %xmm7,%xmm1
  pminsw %xmm3,%xmm5
  pcmpgtw %xmm5,%xmm6
  movdqa %xmm5,%xmm7
  movups %xmm5,0x60(%rdi)
  punpcklwd %xmm6,%xmm7
  paddd  %xmm7,%xmm0
  movdqa %xmm5,%xmm7
  punpckhwd %xmm6,%xmm7
  movdqu 0x70(%rdi),%xmm6
  paddd  %xmm7,%xmm1
  pmaxsw %xmm6,%xmm4
  pminsw %xmm3,%xmm4
  pcmpgtw %xmm4,%xmm2
  movdqa %xmm4,%xmm3
  movups %xmm4,0x70(%rdi)
  punpcklwd %xmm2,%xmm3
  paddd  %xmm3,%xmm0
  movdqa %xmm4,%xmm3
  punpckhwd %xmm2,%xmm3
  paddd  %xmm3,%xmm1
  paddd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x8,%xmm1
  paddd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x4,%xmm1
  paddd  %xmm1,%xmm0
  movd   %xmm0,%eax
  test   $0x1,%al
  jne    L2
  pextrw $0x7,%xmm4,%eax
  xor    $0x1,%eax
  mov    %ax,0x7e(%rdi)
L2:
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D4
datatype: byte[16]
name: disassemble_data
arguments: data_label: D1
datatype: byte[16]

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

tool: {"D1": [0xff,0x07,0xff,0x07,0xff,0x07,0xff,0x07,0xff,0x07,0xff,0x07,0xff,0x07,0xff,0x07]}

assistant: ```c
void Saturate(short *Block_Ptr) {
  int i;
  int sum;
  int val;
  int j;
  {
    sum = 0;
    i = 0;
    while (i < 64) {
      j = 0;
      while (j < 8) {
        val = (int)*(Block_Ptr + i);
        if (val > 2047) {
          val = 2047;
        } else if (val < -2048) {
          val = -2048;
        }
        *(Block_Ptr + i) = (short)val;
        sum += val;
        j++;
        i++;
      }
    }
    if ((sum & 1) == 0) {
      *(Block_Ptr + 63) = (short)((int)*(Block_Ptr + 63) ^ 1);
    }
    return;
  }
}
```