user: 这段汇编代码用C语言表示是什么样的?

```asm
<k_check_epi32_overflow_4>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    %rdx,-0x68(%rbp)
  mov    %rcx,-0x70(%rbp)
  mov    %r8,-0x78(%rbp)
  mov    $0xffffffff,%edi
  call   <_mm_set1_epi32@plt>
  mov    %eax,-0x44(%rbp)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi64@plt>
  mov    %eax,-0x40(%rbp)
  mov    -0x60(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi64@plt>
  mov    %eax,-0x3c(%rbp)
  mov    -0x68(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi64@plt>
  mov    %eax,-0x38(%rbp)
  mov    -0x70(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <_mm_slli_epi64@plt>
  mov    %eax,-0x34(%rbp)
  mov    $0x1,%ecx
  mov    $0x3,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <_MM_SHUFFLE@plt>
  mov    %eax,%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,-0x30(%rbp)
  mov    $0x1,%ecx
  mov    $0x3,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <_MM_SHUFFLE@plt>
  mov    %eax,%edx
  mov    -0x3c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,-0x2c(%rbp)
  mov    $0x1,%ecx
  mov    $0x3,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <_MM_SHUFFLE@plt>
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,-0x28(%rbp)
  mov    $0x1,%ecx
  mov    $0x3,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <_MM_SHUFFLE@plt>
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_shuffle_epi32@plt>
  mov    %eax,-0x24(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_unpacklo_epi64@plt>
  mov    %eax,-0x20(%rbp)
  mov    -0x24(%rbp),%edx
  mov    -0x28(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_unpacklo_epi64@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x78(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_cmpeq_epi32@plt>
  mov    %eax,-0x18(%rbp)
  mov    -0x78(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_cmpeq_epi32@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x20(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_cmpeq_epi32@plt>
  mov    %eax,-0x10(%rbp)
  mov    -0x44(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_cmpeq_epi32@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x10(%rbp),%edx
  mov    -0x18(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_cmpeq_epi32@plt>
  mov    %eax,%edi
  call   <_mm_movemask_epi8@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0xc(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_cmpeq_epi32@plt>
  mov    %eax,%edi
  call   <_mm_movemask_epi8@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  leave
  ret
```

assistant: ```c
int k_check_epi32_overflow_4(const __m128i *preg0, const __m128i *preg1, const __m128i *preg2, const __m128i *preg3, const __m128i *zero) {
  __m128i minus_one = _mm_set1_epi32(-1);
  __m128i reg0_shifted = _mm_slli_epi64(*preg0, 1);
  __m128i reg1_shifted = _mm_slli_epi64(*preg1, 1);
  __m128i reg2_shifted = _mm_slli_epi64(*preg2, 1);
  __m128i reg3_shifted = _mm_slli_epi64(*preg3, 1);
  __m128i reg0_top_dwords = _mm_shuffle_epi32(reg0_shifted, _MM_SHUFFLE(0, 0, 3, 1));
  __m128i reg1_top_dwords = _mm_shuffle_epi32(reg1_shifted, _MM_SHUFFLE(0, 0, 3, 1));
  __m128i reg2_top_dwords = _mm_shuffle_epi32(reg2_shifted, _MM_SHUFFLE(0, 0, 3, 1));
  __m128i reg3_top_dwords = _mm_shuffle_epi32(reg3_shifted, _MM_SHUFFLE(0, 0, 3, 1));
  __m128i top_dwords_01 = _mm_unpacklo_epi64(reg0_top_dwords, reg1_top_dwords);
  __m128i top_dwords_23 = _mm_unpacklo_epi64(reg2_top_dwords, reg3_top_dwords);
  __m128i valid_positve_01 = _mm_cmpeq_epi32(top_dwords_01, *zero);
  __m128i valid_positve_23 = _mm_cmpeq_epi32(top_dwords_23, *zero);
  __m128i valid_negative_01 = _mm_cmpeq_epi32(top_dwords_01, minus_one);
  __m128i valid_negative_23 = _mm_cmpeq_epi32(top_dwords_23, minus_one);
  int overflow_01 = _mm_movemask_epi8(_mm_cmpeq_epi32(valid_positve_01, valid_negative_01));
  int overflow_23 = _mm_movemask_epi8(_mm_cmpeq_epi32(valid_positve_23, valid_negative_23));
  return (overflow_01 + overflow_23);
}
```