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

```asm
<mct_decode_real>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %rdi,-0x68(%rbp)
  mov    %rsi,-0x70(%rbp)
  mov    %rdx,-0x78(%rbp)
  mov    %ecx,-0x7c(%rbp)
  mov    D12(%rip),%eax
  movd   %eax,%xmm0
  call   <_mm_set1_ps@plt>
  mov    %eax,-0x50(%rbp)
  mov    D59(%rip),%eax
  movd   %eax,%xmm0
  call   <_mm_set1_ps@plt>
  mov    %eax,-0x4c(%rbp)
  mov    D3(%rip),%eax
  movd   %eax,%xmm0
  call   <_mm_set1_ps@plt>
  mov    %eax,-0x48(%rbp)
  mov    D46(%rip),%eax
  movd   %eax,%xmm0
  call   <_mm_set1_ps@plt>
  mov    %eax,-0x44(%rbp)
  movl   $0x0,-0x54(%rbp)
  jmp    L2
L12:
  mov    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <_mm_load_ps@plt>
  mov    %eax,-0x28(%rbp)
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <_mm_load_ps@plt>
  mov    %eax,-0x24(%rbp)
  mov    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <_mm_load_ps@plt>
  mov    %eax,-0x20(%rbp)
  mov    -0x50(%rbp),%edx
  mov    -0x20(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_mul_ps@plt>
  mov    %eax,%edx
  mov    -0x28(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_ps@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x48(%rbp),%edx
  mov    -0x20(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_mul_ps@plt>
  mov    %eax,%ebx
  mov    -0x4c(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_mul_ps@plt>
  mov    %eax,%edx
  mov    -0x28(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_sub_ps@plt>
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <_mm_sub_ps@plt>
  mov    %eax,-0x18(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_mul_ps@plt>
  mov    %eax,%edx
  mov    -0x28(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_ps@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x68(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <_mm_store_ps@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x70(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <_mm_store_ps@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x78(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <_mm_store_ps@plt>
  addq   $0x10,-0x68(%rbp)
  addq   $0x10,-0x70(%rbp)
  addq   $0x10,-0x78(%rbp)
  mov    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <_mm_load_ps@plt>
  mov    %eax,-0x28(%rbp)
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <_mm_load_ps@plt>
  mov    %eax,-0x24(%rbp)
  mov    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <_mm_load_ps@plt>
  mov    %eax,-0x20(%rbp)
  mov    -0x50(%rbp),%edx
  mov    -0x20(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_mul_ps@plt>
  mov    %eax,%edx
  mov    -0x28(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_ps@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x48(%rbp),%edx
  mov    -0x20(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_mul_ps@plt>
  mov    %eax,%ebx
  mov    -0x4c(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_mul_ps@plt>
  mov    %eax,%edx
  mov    -0x28(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_sub_ps@plt>
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <_mm_sub_ps@plt>
  mov    %eax,-0x18(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_mul_ps@plt>
  mov    %eax,%edx
  mov    -0x28(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_ps@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x68(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <_mm_store_ps@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x70(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <_mm_store_ps@plt>
  mov    -0x14(%rbp),%edx
  mov    -0x78(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <_mm_store_ps@plt>
  addq   $0x10,-0x68(%rbp)
  addq   $0x10,-0x70(%rbp)
  addq   $0x10,-0x78(%rbp)
  addl   $0x1,-0x54(%rbp)
L2:
  mov    -0x7c(%rbp),%eax
  sar    $0x3,%eax
  cmp    %eax,-0x54(%rbp)
  jl     L12
  andl   $0x7,-0x7c(%rbp)
  movl   $0x0,-0x54(%rbp)
  jmp    L29
L34:
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x40(%rbp)
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x3c(%rbp)
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x38(%rbp)
  movss  -0x38(%rbp),%xmm1
  movss  D12(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  -0x40(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x34(%rbp)
  movss  -0x3c(%rbp),%xmm1
  movss  D59(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  -0x40(%rbp),%xmm0
  subss  %xmm1,%xmm0
  movss  -0x38(%rbp),%xmm2
  movss  D3(%rip),%xmm1
  mulss  %xmm2,%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x30(%rbp)
  movss  -0x3c(%rbp),%xmm1
  movss  D46(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  -0x40(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x2c(%rbp)
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movss  -0x34(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movss  -0x30(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  movss  -0x2c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x54(%rbp)
L29:
  mov    -0x54(%rbp),%eax
  cmp    -0x7c(%rbp),%eax
  jl     L34
  nop
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D12
type_guessed: byte[4]
name: parse_data
arguments: label: D59
type_guessed: byte[4]
name: parse_data
arguments: label: D3
type_guessed: byte[4]
name: parse_data
arguments: label: D46
type_guessed: byte[4]

tool: {"D12": [0xbc,0x74,0xb3,0x3f]}

tool: {"D59": [0xcf,0x31,0xb0,0x3e]}

tool: {"D3": [0xe1,0xd1,0x36,0x3f]}

tool: {"D46": [0xe5,0xd0,0xe2,0x3f]}

assistant: ```c
void mct_decode_real(float *__restrict__ c0, float *__restrict__ c1, float *__restrict__ c2, int n) {
  int i;
  __m128 vrv, vgu, vgv, vbu;
  vrv = _mm_set1_ps(1.402f);
  vgu = _mm_set1_ps(0.34413f);
  vgv = _mm_set1_ps(0.71414f);
  vbu = _mm_set1_ps(1.772f);
  for (i = 0; i < (n >> 3); ++i) {
    __m128 vy, vu, vv;
    __m128 vr, vg, vb;
    vy = _mm_load_ps(c0);
    vu = _mm_load_ps(c1);
    vv = _mm_load_ps(c2);
    vr = _mm_add_ps(vy, _mm_mul_ps(vv, vrv));
    vg = _mm_sub_ps(_mm_sub_ps(vy, _mm_mul_ps(vu, vgu)), _mm_mul_ps(vv, vgv));
    vb = _mm_add_ps(vy, _mm_mul_ps(vu, vbu));
    _mm_store_ps(c0, vr);
    _mm_store_ps(c1, vg);
    _mm_store_ps(c2, vb);
    c0 += 4;
    c1 += 4;
    c2 += 4;
    vy = _mm_load_ps(c0);
    vu = _mm_load_ps(c1);
    vv = _mm_load_ps(c2);
    vr = _mm_add_ps(vy, _mm_mul_ps(vv, vrv));
    vg = _mm_sub_ps(_mm_sub_ps(vy, _mm_mul_ps(vu, vgu)), _mm_mul_ps(vv, vgv));
    vb = _mm_add_ps(vy, _mm_mul_ps(vu, vbu));
    _mm_store_ps(c0, vr);
    _mm_store_ps(c1, vg);
    _mm_store_ps(c2, vb);
    c0 += 4;
    c1 += 4;
    c2 += 4;
  }
  n &= 7;
  for (i = 0; i < n; ++i) {
    float y = c0[i];
    float u = c1[i];
    float v = c2[i];
    float r = y + (v * 1.402f);
    float g = y - (u * 0.34413f) - (v * (0.71414f));
    float b = y + (u * 1.772f);
    c0[i] = r;
    c1[i] = g;
    c2[i] = b;
  }
}
```