user: 下面的汇编指令对应的C源代码是什么：

```asm
<melweights>:
  endbr64
  mov    %esi,%eax
  pxor   %xmm6,%xmm6
  push   %r15
  mov    %rcx,%r15
  shr    $0x1f,%eax
  push   %r14
  mov    %r8,%r14
  add    %esi,%eax
  push   %r13
  sar    %eax
  push   %r12
  cvtsi2ss %eax,%xmm6
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x38,%rsp
  movss  %xmm0,0x2c(%rsp)
  movaps %xmm6,%xmm0
  mov    %edi,0x4(%rsp)
  mov    %rdx,0x20(%rsp)
  movss  %xmm6,(%rsp)
  call   <hz2mel@plt>
  mov    (%r14),%eax
  lea    0x0(,%rbx,4),%edi
  movaps %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  sub    $0x1,%eax
  cvtsi2ss %eax,%xmm0
  movslq %ebx,%rax
  mov    %rax,0x18(%rsp)
  divss  %xmm0,%xmm1
  movss  %xmm1,0x28(%rsp)
  call   <MALLOC@plt>
  mov    %rax,0x8(%rsp)
  test   %ebx,%ebx
  jle    L80
  mov    %rax,%rbp
  pxor   %xmm7,%xmm7
  lea    -0x1(%rbx),%eax
  xor    %ebx,%ebx
  cvtsi2ss %eax,%xmm7
  movss  %xmm7,0x10(%rsp)
  nopl   0x0(%rax)
L89:
  pxor   %xmm0,%xmm0
  add    $0x4,%rbp
  cvtsi2ss %ebx,%xmm0
  mulss  (%rsp),%xmm0
  add    $0x1,%ebx
  divss  0x10(%rsp),%xmm0
  call   <hz2mel@plt>
  movss  %xmm0,-0x4(%rbp)
  cmp    %ebx,0x4(%rsp)
  jne    L89
  mov    (%r14),%eax
  test   %eax,%eax
  jle    L80
  mov    0x18(%rsp),%rax
  mov    0x8(%rsp),%rsi
  xor    %r12d,%r12d
  mov    0x20(%rsp),%rbx
  shl    $0x2,%rax
  mov    %rax,0x10(%rsp)
  mov    0x4(%rsp),%eax
  sub    %rsi,%rbx
  lea    (%rsi,%rax,4),%rbp
  nopl   0x0(%rax,%rax,1)
L13:
  pxor   %xmm0,%xmm0
  mov    0x8(%rsp),%r13
  cvtsi2ss %r12d,%xmm0
  mulss  0x28(%rsp),%xmm0
  movss  %xmm0,(%rsp)
  nopl   0x0(%rax)
L0:
  movss  0x0(%r13),%xmm0
  subss  (%rsp),%xmm0
  cvttss2si %xmm0,%edi
  movss  D10(%rip),%xmm0
  call   <pow@plt>
  mulsd  D12(%rip),%xmm0
  call   <exp@plt>
  movss  %xmm0,(%rbx,%r13,1)
  add    $0x4,%r13
  cmp    %r13,%rbp
  jne    L0
  add    $0x1,%r12d
  add    0x10(%rsp),%rbx
  cmp    (%r14),%r12d
  jl     L13
L80:
  mov    $0xa,%edi
  movss  0x2c(%rsp),%xmm0
  xorps  D34(%rip),%xmm0
  divss  D36(%rip),%xmm0
  call   <pow@plt>
  mov    (%r14),%edx
  cvtsd2ss %xmm0,%xmm0
  test   %edx,%edx
  jle    L30
  mov    0x4(%rsp),%edi
  mov    0x18(%rsp),%r8
  xor    %esi,%esi
  mov    0x20(%rsp),%rdx
  sub    $0x1,%edi
  shl    $0x2,%r8
  movslq %edi,%rdi
  nopw   0x0(%rax,%rax,1)
L3:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L41:
  mov    %eax,%ecx
  add    $0x1,%rax
  comiss -0x4(%rdx,%rax,4),%xmm0
  ja     L41
  mov    %ecx,(%r15,%rsi,8)
  mov    %rdi,%rax
  nopl   0x0(%rax)
L74:
  mov    %eax,%ecx
  sub    $0x1,%rax
  comiss 0x4(%rdx,%rax,4),%xmm0
  ja     L74
  mov    %ecx,0x4(%r15,%rsi,8)
  add    %r8,%rdx
  add    $0x1,%rsi
  cmp    %esi,(%r14)
  jg     L3
L30:
  mov    0x8(%rsp),%rdi
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1090 <FREE@plt>
```

tool_calls: name: retrieve_data
arguments: label: D10
type_guessed: f32
name: retrieve_data
arguments: label: D12
type_guessed: byte[8]
name: retrieve_data
arguments: label: D34
type_guessed: byte[16]
name: retrieve_data
arguments: label: D36
type_guessed: f32

tool: D10: 2

tool: {"D12": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xbf]}

tool: {"D34": [0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: D36: 20

assistant: ```c
void melweights(int nfreqs, int Fs, float dB, float *wts, int *indices, int *nbands) {
  float nyqmel = hz2mel(Fs / 2);
  float step_mels = nyqmel / (*nbands - 1);
  float *binmels = (float *)MALLOC(nfreqs * sizeof(float));
  for (int i = 0; i < nfreqs; i++) {
    binmels[i] = hz2mel(((float)i * (Fs / 2)) / (nfreqs - 1));
  }
  for (int i = 0; i < *nbands; i++) {
    float f_mel_mid = i * step_mels;
    for (int j = 0; j < nfreqs; j++) {
      wts[i * nfreqs + j] = exp(-0.5 * pow(binmels[j] - f_mel_mid, 2));
    }
  }
  float lin = pow(10, -dB / 20);
  for (int i = 0; i < *nbands; i++) {
    int j = 0;
    while (wts[i * nfreqs + (j++)] < lin)
      ;
    indices[i * 2] = j - 1;
    j = nfreqs - 1;
    while (wts[i * nfreqs + (j--)] < lin)
      ;
    indices[i * 2 + 1] = j + 1;
  }
  FREE(binmels);
}
```