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

```asm
<PhonemeUU>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  movss  %xmm0,-0x24(%rbp)
  mov    %rdi,-0x30(%rbp)
  movl   $0x0,-0x1c(%rbp)
  jmp    L2
L7:
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x1c(%rbp)
L2:
  cmpl   $0x17,-0x1c(%rbp)
  jle    L7
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  D19(%rip),%xmm0
  movss  %xmm0,-0x14(%rbp)
  mov    -0x30(%rbp),%rax
  lea    0x8(%rax),%rbx
  movss  -0x14(%rbp),%xmm1
  movss  -0x18(%rbp),%xmm0
  mov    -0x24(%rbp),%eax
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <ModulatedBuzz@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  lea    0xc(%rax),%rdx
  mov    -0x30(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,(%rdx)
  movss  -0x24(%rbp),%xmm0
  movss  D38(%rip),%xmm1
  subss  %xmm1,%xmm0
  movd   %xmm0,%eax
  mov    -0x30(%rbp),%rdx
  lea    0x18(%rdx),%rbx
  movss  -0x14(%rbp),%xmm1
  movss  -0x18(%rbp),%xmm0
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <ModulatedBuzz@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  lea    0x1c(%rax),%rdx
  mov    -0x30(%rbp),%rax
  movss  0x18(%rax),%xmm0
  movss  %xmm0,(%rdx)
  movss  -0x24(%rbp),%xmm0
  movss  D40(%rip),%xmm1
  subss  %xmm1,%xmm0
  movd   %xmm0,%eax
  mov    -0x30(%rbp),%rdx
  lea    0x28(%rdx),%rbx
  movss  -0x14(%rbp),%xmm1
  movss  -0x18(%rbp),%xmm0
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <ModulatedBuzz@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  lea    0x2c(%rax),%rdx
  mov    -0x30(%rbp),%rax
  movss  0x28(%rax),%xmm0
  movss  %xmm0,(%rdx)
  movss  -0x24(%rbp),%xmm0
  movss  D3(%rip),%xmm1
  subss  %xmm1,%xmm0
  movd   %xmm0,%eax
  mov    -0x30(%rbp),%rdx
  lea    0x38(%rdx),%rbx
  movss  -0x14(%rbp),%xmm1
  movss  -0x18(%rbp),%xmm0
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  call   <ModulatedBuzz@plt>
  movd   %xmm0,%eax
  mov    %eax,(%rbx)
  mov    -0x30(%rbp),%rax
  lea    0x3c(%rax),%rdx
  mov    -0x30(%rbp),%rax
  movss  0x38(%rax),%xmm0
  movss  %xmm0,(%rdx)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D38
data_type: byte[4]
name: disassemble_data
arguments: data_label: D19
data_type: byte[4]
name: disassemble_data
arguments: data_label: D40
data_type: byte[4]
name: disassemble_data
arguments: data_label: D3
data_type: byte[4]

tool: {"D38": [0x8f,0xc2,0x75,0x3d]}

tool: {"D19": [0x00,0x00,0xf0,0x41]}

tool: {"D40": [0x8f,0xc2,0xf5,0x3d]}

tool: {"D3": [0xec,0x51,0x38,0x3e]}

assistant: ```c
void PhonemeUU(float t, float *frame) {
  int c;
  for (c = 0; c < 24; ++c) {
    frame[c] = 0.0f;
  }
  const float kDuration = 0.06f;
  const float kModulationHz = 30.0f;
  frame[2] = ModulatedBuzz(t, kDuration, kModulationHz);
  frame[3] = frame[2];
  frame[6] = ModulatedBuzz(t - 0.06f, kDuration, kModulationHz);
  frame[7] = frame[6];
  frame[10] = ModulatedBuzz(t - 0.12f, kDuration, kModulationHz);
  frame[11] = frame[10];
  frame[14] = ModulatedBuzz(t - 0.18f, kDuration, kModulationHz);
  frame[15] = frame[14];
}
```