user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<blake2_round_sidm>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  push   $0xd
  push   $0xc
  push   $0xf
  push   $0xe
  push   $0x9
  push   $0x8
  push   $0xb
  push   $0xa
  push   $0x5
  push   $0x4
  mov    $0x7,%r9d
  mov    $0x6,%r8d
  mov    $0x1,%ecx
  mov    $0x0,%edx
  mov    $0x3,%esi
  mov    $0x2,%edi
  call   <_mm_setr_epi8@plt>
  add    $0x50,%rsp
  mov    %eax,-0x1c(%rbp)
  push   $0xc
  push   $0xf
  push   $0xe
  push   $0xd
  push   $0x8
  push   $0xb
  push   $0xa
  push   $0x9
  push   $0x4
  push   $0x7
  mov    $0x6,%r9d
  mov    $0x5,%r8d
  mov    $0x0,%ecx
  mov    $0x3,%edx
  mov    $0x2,%esi
  mov    $0x1,%edi
  call   <_mm_setr_epi8@plt>
  add    $0x50,%rsp
  mov    %eax,-0x18(%rbp)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rcx
  lea    0xc(%rcx),%rbx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  mov    -0x1c(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi8@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rcx
  lea    0x8(%rcx),%rbx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  lea    0x4(%rax),%rbx
  mov    -0x14(%rbp),%eax
  mov    $0xc,%esi
  mov    %eax,%edi
  call   <_mm_srli_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x14(%rbp),%eax
  mov    $0x14,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi32@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0x4(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x30(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rcx
  lea    0xc(%rcx),%rbx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  mov    -0x18(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi8@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rcx
  lea    0x8(%rcx),%rbx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  lea    0x4(%rax),%rbx
  mov    -0x14(%rbp),%eax
  mov    $0x7,%esi
  mov    %eax,%edi
  call   <_mm_srli_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x14(%rbp),%eax
  mov    $0x19,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi32@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0x4(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0x4(%rdx),%rbx
  mov    $0x39,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0x8(%rdx),%rbx
  mov    $0x4e,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  mov    $0x93,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rcx
  lea    0xc(%rcx),%rbx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  mov    -0x1c(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi8@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rcx
  lea    0x8(%rcx),%rbx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  lea    0x4(%rax),%rbx
  mov    -0x14(%rbp),%eax
  mov    $0xc,%esi
  mov    %eax,%edi
  call   <_mm_srli_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x14(%rbp),%eax
  mov    $0x14,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi32@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0x4(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x30(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    -0x28(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x28(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rcx
  lea    0xc(%rcx),%rbx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  mov    -0x18(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi8@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rcx
  lea    0x8(%rcx),%rbx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_add_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%edx
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  lea    0x4(%rax),%rbx
  mov    -0x14(%rbp),%eax
  mov    $0x7,%esi
  mov    %eax,%edi
  call   <_mm_srli_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x14(%rbp),%eax
  mov    $0x19,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi32@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0x4(%rdx),%rbx
  mov    -0x14(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0x4(%rdx),%rbx
  mov    $0x93,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0x8(%rdx),%rbx
  mov    $0x4e,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,(%rbx)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x28(%rbp),%rdx
  lea    0xc(%rdx),%rbx
  mov    $0x39,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,(%rbx)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void blake2_round_sidm(__m128i *state, __m128i *Message) {
  __m128i _calc;
  __m128i const _rotate_16 = _mm_setr_epi8(2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 13);
  __m128i const _rotate_8_r = _mm_setr_epi8(1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12);
  state[0] = _mm_add_epi32(state[0], state[1]);
  state[0] = _mm_add_epi32(state[0], Message[0]);
  state[3] = _mm_xor_si128(state[3], state[0]);
  state[3] = _mm_shuffle_epi8(state[3], _rotate_16);
  state[2] = _mm_add_epi32(state[2], state[3]);
  _calc = _mm_xor_si128(state[1], state[2]);
  state[1] = _mm_srli_epi32(_calc, (12));
  _calc = _mm_slli_epi32(_calc, (32 - 12));
  state[1] = _mm_xor_si128(state[1], _calc);
  state[0] = _mm_add_epi32(state[0], state[1]);
  state[0] = _mm_add_epi32(state[0], Message[1]);
  state[3] = _mm_xor_si128(state[3], state[0]);
  state[3] = _mm_shuffle_epi8(state[3], _rotate_8_r);
  state[2] = _mm_add_epi32(state[2], state[3]);
  _calc = _mm_xor_si128(state[1], state[2]);
  state[1] = _mm_srli_epi32(_calc, (7));
  _calc = _mm_slli_epi32(_calc, (32 - 7));
  state[1] = _mm_xor_si128(state[1], _calc);
  state[1] = _mm_shuffle_epi32(state[1], 0x39);
  state[2] = _mm_shuffle_epi32(state[2], 0x4e);
  state[3] = _mm_shuffle_epi32(state[3], 0x93);
  state[0] = _mm_add_epi32(state[0], state[1]);
  state[0] = _mm_add_epi32(state[0], Message[2]);
  state[3] = _mm_xor_si128(state[3], state[0]);
  state[3] = _mm_shuffle_epi8(state[3], _rotate_16);
  state[2] = _mm_add_epi32(state[2], state[3]);
  _calc = _mm_xor_si128(state[1], state[2]);
  state[1] = _mm_srli_epi32(_calc, (12));
  _calc = _mm_slli_epi32(_calc, (32 - 12));
  state[1] = _mm_xor_si128(state[1], _calc);
  state[0] = _mm_add_epi32(state[0], state[1]);
  state[0] = _mm_add_epi32(state[0], Message[3]);
  state[3] = _mm_xor_si128(state[3], state[0]);
  state[3] = _mm_shuffle_epi8(state[3], _rotate_8_r);
  state[2] = _mm_add_epi32(state[2], state[3]);
  _calc = _mm_xor_si128(state[1], state[2]);
  state[1] = _mm_srli_epi32(_calc, (7));
  _calc = _mm_slli_epi32(_calc, (32 - 7));
  state[1] = _mm_xor_si128(state[1], _calc);
  state[1] = _mm_shuffle_epi32(state[1], 0x93);
  state[2] = _mm_shuffle_epi32(state[2], 0x4e);
  state[3] = _mm_shuffle_epi32(state[3], 0x39);
}
```