user: Please show me the C implementation that matches the assembly code listed below:

```asm
<funct_S0_Maj>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_or_si128@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_and_si128@plt>
  mov    %eax,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <_mm_srli_epi32@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1e,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi32@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xd,%esi
  mov    %eax,%edi
  call   <_mm_srli_epi32@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x13,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi32@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x4(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x16,%esi
  mov    %eax,%edi
  call   <_mm_srli_epi32@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    $0xa,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi32@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x4(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x14(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_and_si128@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x10(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_or_si128@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  leave
  ret
```

assistant: ```c
__m128i funct_S0_Maj(__m128i *x, __m128i *y, __m128i *z) {
  __m128i _calc_maj1 = _mm_or_si128(*y, *z);
  __m128i _calc_maj2 = _mm_and_si128(*y, *z);
  __m128i rot2 = _mm_srli_epi32(*x, 2);
  __m128i _calc = _mm_slli_epi32(*x, (32 - 2));
  __m128i rot13_22 = _mm_srli_epi32(*x, 13);
  rot2 = _mm_xor_si128(rot2, _calc);
  _calc = _mm_slli_epi32(*x, (32 - 13));
  rot2 = _mm_xor_si128(rot2, rot13_22);
  rot13_22 = _mm_srli_epi32(*x, 22);
  rot2 = _mm_xor_si128(rot2, _calc);
  _calc = _mm_slli_epi32(*x, (32 - 22));
  rot2 = _mm_xor_si128(rot2, rot13_22);
  _calc_maj1 = _mm_and_si128(_calc_maj1, *x);
  rot2 = _mm_xor_si128(rot2, _calc);
  _calc_maj1 = _mm_or_si128(_calc_maj1, _calc_maj2);
  _calc = _mm_add_epi32(_calc_maj1, rot2);
  return _calc;
}
```