user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<Thrd_motion_vectors>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8d,-0x18(%rbp)
  mov    %r9d,-0x34(%rbp)
  cmpl   $0x1,-0x34(%rbp)
  jne    L20
  cmpl   $0x0,0x10(%rbp)
  jne    L28
  cmpl   $0x0,0x28(%rbp)
  jne    L28
  mov    -0x14(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <Thrd_Get_Bits@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x4(%rbp),%ecx
  mov    -0x30(%rbp),%rax
  mov    %ecx,(%rax,%rdx,4)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x30(%rbp),%rax
  lea    0x8(%rax),%rsi
  mov    -0x18(%rbp),%eax
  cltq
  mov    -0x30(%rbp),%rdx
  mov    (%rdx,%rcx,4),%edx
  mov    %edx,(%rsi,%rax,4)
L28:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rsi
  mov    0x28(%rbp),%r9d
  mov    0x20(%rbp),%r8d
  mov    0x18(%rbp),%ecx
  mov    -0x28(%rbp),%rdx
  mov    -0x14(%rbp),%eax
  push   $0x0
  mov    0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <Thrd_motion_vector@plt>
  add    $0x10,%rsp
  mov    -0x18(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x20(%rbp),%rax
  lea    0x10(%rax),%rsi
  mov    -0x18(%rbp),%eax
  cltq
  mov    -0x20(%rbp),%rdx
  mov    (%rdx,%rcx,8),%edx
  mov    %edx,(%rsi,%rax,8)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x20(%rbp),%rax
  lea    0x10(%rax),%rsi
  mov    -0x18(%rbp),%eax
  cltq
  mov    -0x20(%rbp),%rdx
  mov    0x4(%rdx,%rcx,8),%edx
  mov    %edx,0x4(%rsi,%rax,8)
  jmp    L2
L20:
  mov    -0x14(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <Thrd_Get_Bits@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    -0xc(%rbp),%ecx
  mov    -0x30(%rbp),%rax
  mov    %ecx,(%rax,%rdx,4)
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rsi
  mov    0x28(%rbp),%r9d
  mov    0x20(%rbp),%r8d
  mov    0x18(%rbp),%ecx
  mov    -0x28(%rbp),%rdx
  mov    -0x14(%rbp),%eax
  push   $0x0
  mov    0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <Thrd_motion_vector@plt>
  add    $0x10,%rsp
  mov    -0x14(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <Thrd_Get_Bits@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x30(%rbp),%rax
  lea    0x8(%rax),%rcx
  mov    -0x18(%rbp),%eax
  cltq
  mov    -0x8(%rbp),%edx
  mov    %edx,(%rcx,%rax,4)
  mov    -0x20(%rbp),%rax
  lea    0x10(%rax),%rdx
  mov    -0x18(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    (%rdx,%rax,1),%rsi
  mov    0x28(%rbp),%r9d
  mov    0x20(%rbp),%r8d
  mov    0x18(%rbp),%ecx
  mov    -0x28(%rbp),%rdx
  mov    -0x14(%rbp),%eax
  push   $0x0
  mov    0x30(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <Thrd_motion_vector@plt>
  add    $0x10,%rsp
L2:
  nop
  leave
  ret
```

assistant: ```c
void Thrd_motion_vectors(signed int t, signed int (*PMV)[2l][2l], signed int *dmvector, signed int (*motion_vertical_field_select)[2l], signed int s, signed int motion_vector_count, signed int mv_format, signed int h_r_size, signed int v_r_size, signed int dmv, signed int mvscale) {
  if (motion_vector_count == 1) {
    if (mv_format == 0) {
      if (dmv == 0) {
        unsigned int return_value_Thrd_Get_Bits$1;
        return_value_Thrd_Get_Bits$1 = Thrd_Get_Bits(t, 1);
        motion_vertical_field_select[(signed long int)0][(signed long int)s] = (signed int)return_value_Thrd_Get_Bits$1;
        motion_vertical_field_select[(signed long int)1][(signed long int)s] = motion_vertical_field_select[(signed long int)0][(signed long int)s];
      }
    }
    Thrd_motion_vector(t, PMV[(signed long int)0][(signed long int)s], dmvector, h_r_size, v_r_size, dmv, mvscale, 0);
    PMV[(signed long int)1][(signed long int)s][(signed long int)0] = PMV[(signed long int)0][(signed long int)s][(signed long int)0];
    PMV[(signed long int)1][(signed long int)s][(signed long int)1] = PMV[(signed long int)0][(signed long int)s][(signed long int)1];
  } else {
    unsigned int return_value_Thrd_Get_Bits$2;
    return_value_Thrd_Get_Bits$2 = Thrd_Get_Bits(t, 1);
    motion_vertical_field_select[(signed long int)0][(signed long int)s] = (signed int)return_value_Thrd_Get_Bits$2;
    Thrd_motion_vector(t, PMV[(signed long int)0][(signed long int)s], dmvector, h_r_size, v_r_size, dmv, mvscale, 0);
    unsigned int return_value_Thrd_Get_Bits$3;
    return_value_Thrd_Get_Bits$3 = Thrd_Get_Bits(t, 1);
    motion_vertical_field_select[(signed long int)1][(signed long int)s] = (signed int)return_value_Thrd_Get_Bits$3;
    Thrd_motion_vector(t, PMV[(signed long int)1][(signed long int)s], dmvector, h_r_size, v_r_size, dmv, mvscale, 0);
  }
}
```