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

```asm
<update_state_gyro>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  movss  %xmm0,-0x4(%rbp)
  movss  %xmm1,-0x8(%rbp)
  movss  %xmm2,-0xc(%rbp)
  movss  %xmm3,-0x10(%rbp)
  movss  %xmm4,-0x14(%rbp)
  movss  %xmm5,-0x18(%rbp)
  movss  %xmm6,-0x1c(%rbp)
  movss  %xmm7,-0x20(%rbp)
  mov    %rdi,-0x28(%rbp)
  movss  0x50(%rbp),%xmm0
  subss  0x78(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x8(%rbp),%xmm1
  movss  0x48(%rbp),%xmm0
  subss  0x68(%rbp),%xmm0
  mulss  -0xc(%rbp),%xmm0
  addss  %xmm1,%xmm0
  addss  0x70(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  movss  %xmm0,(%rax)
  movss  0x50(%rbp),%xmm0
  subss  0x78(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x10(%rbp),%xmm1
  movss  0x48(%rbp),%xmm0
  subss  0x68(%rbp),%xmm0
  mulss  -0x14(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  addss  0x60(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  0x50(%rbp),%xmm0
  subss  0x78(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x18(%rbp),%xmm1
  movss  0x48(%rbp),%xmm0
  subss  0x68(%rbp),%xmm0
  mulss  -0x1c(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  addss  0x78(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  0x50(%rbp),%xmm0
  subss  0x78(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x20(%rbp),%xmm1
  movss  0x48(%rbp),%xmm0
  subss  0x68(%rbp),%xmm0
  mulss  0x10(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  addss  0x68(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  0x50(%rbp),%xmm0
  subss  0x78(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  0x18(%rbp),%xmm1
  movss  0x48(%rbp),%xmm0
  subss  0x68(%rbp),%xmm0
  mulss  0x20(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x10,%rax
  addss  0x58(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  0x50(%rbp),%xmm0
  subss  0x78(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  0x28(%rbp),%xmm1
  movss  0x48(%rbp),%xmm0
  subss  0x68(%rbp),%xmm0
  mulss  0x30(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x14,%rax
  addss  0x80(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  0x50(%rbp),%xmm0
  subss  0x78(%rbp),%xmm0
  mulss  0x38(%rbp),%xmm0
  movaps %xmm0,%xmm1
  addss  -0x4(%rbp),%xmm1
  movss  0x48(%rbp),%xmm0
  subss  0x68(%rbp),%xmm0
  mulss  0x40(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x18,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void update_state_gyro(float az_dyn, float g11, float g12, float g21, float g22, float g31, float g32, float g41, float g42, float g51, float g52, float g61, float g62, float g71, float g72, float gyro_pitch, float gyro_roll, float h, float pitch, float pitch_rate, float roll, float roll_rate, float v, float *out_2100921197882637313) {
  out_2100921197882637313[0] = g11 * (gyro_roll - roll_rate) + g12 * (gyro_pitch - pitch_rate) + roll;
  out_2100921197882637313[1] = g21 * (gyro_roll - roll_rate) + g22 * (gyro_pitch - pitch_rate) + pitch;
  out_2100921197882637313[2] = g31 * (gyro_roll - roll_rate) + g32 * (gyro_pitch - pitch_rate) + roll_rate;
  out_2100921197882637313[3] = g41 * (gyro_roll - roll_rate) + g42 * (gyro_pitch - pitch_rate) + pitch_rate;
  out_2100921197882637313[4] = g51 * (gyro_roll - roll_rate) + g52 * (gyro_pitch - pitch_rate) + h;
  out_2100921197882637313[5] = g61 * (gyro_roll - roll_rate) + g62 * (gyro_pitch - pitch_rate) + v;
  out_2100921197882637313[6] = az_dyn + g71 * (gyro_roll - roll_rate) + g72 * (gyro_pitch - pitch_rate);
}
```