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

```asm
<borch_ampf>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,%rbx
  mov    %rsi,%r14
  mov    %edx,%r12d
  mov    0x50(%rsp),%rbp
  mov    0x58(%rsp),%r13
  mov    0x60(%rsp),%r15
  movss  (%rcx),%xmm0
  divss  (%r8),%xmm0
  movss  %xmm0,0x4(%rsp)
  pxor   %xmm0,%xmm0
  cvtss2sd (%r9),%xmm0
  movsd  D94(%rip),%xmm1
  comisd %xmm0,%xmm1
  ja     L219
  movsd  D258(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L80
  subsd  D94(%rip),%xmm0
  movsd  D109(%rip),%xmm1
  subsd  %xmm0,%xmm1
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm1,%xmm3
  movss  %xmm3,0x8(%rsp)
  mulsd  D184(%rip),%xmm0
  movsd  D241(%rip),%xmm1
  subsd  %xmm0,%xmm1
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm1,%xmm3
  movss  %xmm3,0xc(%rsp)
  jmp    L196
L80:
  movsd  D247(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L64
  subsd  D258(%rip),%xmm0
  movapd %xmm0,%xmm2
  mulsd  D231(%rip),%xmm2
  movsd  D154(%rip),%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm4,%xmm4
  cvtsd2ss %xmm1,%xmm4
  movss  %xmm4,0x8(%rsp)
  mulsd  D205(%rip),%xmm0
  movsd  D86(%rip),%xmm1
  subsd  %xmm0,%xmm1
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm1,%xmm3
  movss  %xmm3,0xc(%rsp)
  jmp    L196
L64:
  movsd  D161(%rip),%xmm1
  comisd %xmm0,%xmm1
  jbe    L197
  subsd  D247(%rip),%xmm0
  movapd %xmm0,%xmm2
  mulsd  D231(%rip),%xmm2
  movsd  D94(%rip),%xmm1
  subsd  %xmm2,%xmm1
  pxor   %xmm4,%xmm4
  cvtsd2ss %xmm1,%xmm4
  movss  %xmm4,0x8(%rsp)
  mulsd  D137(%rip),%xmm0
  movsd  D159(%rip),%xmm1
  subsd  %xmm0,%xmm1
  pxor   %xmm3,%xmm3
  cvtsd2ss %xmm1,%xmm3
  movss  %xmm3,0xc(%rsp)
  jmp    L196
L219:
  movss  D117(%rip),%xmm4
  movss  %xmm4,0xc(%rsp)
  movss  D52(%rip),%xmm4
  movss  %xmm4,0x8(%rsp)
L196:
  movss  0x4(%rsp),%xmm0
  call   <log@plt>
  mulss  0x8(%rsp),%xmm0
  call   <exp@plt>
  movss  %xmm0,0x8(%rsp)
  movss  0x4(%rsp),%xmm0
  call   <log@plt>
  mulss  0xc(%rsp),%xmm0
  call   <exp@plt>
  movaps %xmm0,%xmm3
  movss  0x0(%r13),%xmm0
  movss  0x0(%rbp),%xmm1
  comiss %xmm0,%xmm1
  jbe    L57
  movss  %xmm0,0x0(%rbp)
L57:
  mov    0x70(%rsp),%rax
  movss  (%rax),%xmm0
  mov    0x78(%rsp),%rax
  comiss (%rax),%xmm0
  jbe    L8
  movss  %xmm0,0x0(%rbp)
L8:
  pxor   %xmm0,%xmm0
  cvtsi2ss %r12d,%xmm0
  mulss  (%r14),%xmm0
  movss  D2(%rip),%xmm1
  divss  %xmm0,%xmm1
  mov    %r12d,%edx
  shr    $0x1f,%edx
  add    %r12d,%edx
  sar    %edx
  cmp    $0x3,%r12d
  jle    L212
  mov    $0x1,%eax
  movss  D2(%rip),%xmm2
  movsd  D115(%rip),%xmm4
  jmp    L206
L197:
  movss  D210(%rip),%xmm4
  movss  %xmm4,0xc(%rsp)
  movss  D44(%rip),%xmm3
  movss  %xmm3,0x8(%rsp)
  jmp    L196
L90:
  movss  (%r15),%xmm6
  movaps %xmm3,%xmm5
  comiss %xmm0,%xmm6
  ja     L121
  mov    0x68(%rsp),%rcx
  movss  (%rcx),%xmm5
  comiss %xmm0,%xmm5
  jbe    L109
  subss  %xmm6,%xmm0
  movss  0x8(%rsp),%xmm7
  subss  %xmm3,%xmm7
  mulss  %xmm7,%xmm0
  subss  %xmm6,%xmm5
  divss  %xmm5,%xmm0
  movaps %xmm0,%xmm5
  addss  %xmm3,%xmm5
L121:
  movss  %xmm5,(%rbx,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%edx
  jle    L212
L206:
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  %xmm1,%xmm0
  movss  0x0(%rbp),%xmm6
  movaps %xmm2,%xmm5
  comiss %xmm0,%xmm6
  ja     L121
  movss  0x0(%r13),%xmm5
  comiss %xmm0,%xmm5
  jbe    L90
  subss  %xmm6,%xmm0
  cvtss2sd %xmm0,%xmm0
  pxor   %xmm7,%xmm7
  cvtss2sd %xmm3,%xmm7
  subsd  %xmm4,%xmm7
  mulsd  %xmm7,%xmm0
  subss  %xmm6,%xmm5
  cvtss2sd %xmm5,%xmm5
  divsd  %xmm5,%xmm0
  addsd  %xmm4,%xmm0
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm0,%xmm5
  jmp    L121
L109:
  mov    0x70(%rsp),%rsi
  movss  (%rsi),%xmm6
  movss  0x8(%rsp),%xmm7
  movaps %xmm7,%xmm5
  comiss %xmm0,%xmm6
  ja     L121
  mov    0x78(%rsp),%rdi
  movss  (%rdi),%xmm5
  comiss %xmm0,%xmm5
  jbe    L199
  cvtss2sd %xmm7,%xmm7
  subss  %xmm6,%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  D115(%rip),%xmm8
  subsd  %xmm7,%xmm8
  mulsd  %xmm8,%xmm0
  subss  %xmm6,%xmm5
  cvtss2sd %xmm5,%xmm5
  divsd  %xmm5,%xmm0
  addsd  %xmm7,%xmm0
  pxor   %xmm5,%xmm5
  cvtsd2ss %xmm0,%xmm5
  jmp    L121
L199:
  movss  D2(%rip),%xmm5
  jmp    L121
L212:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: parse_data
arguments: tag: D94
datatype: f64
name: parse_data
arguments: tag: D258
datatype: f64
name: parse_data
arguments: tag: D109
datatype: f64
name: parse_data
arguments: tag: D184
datatype: f64
name: parse_data
arguments: tag: D241
datatype: f64
name: parse_data
arguments: tag: D247
datatype: f64
name: parse_data
arguments: tag: D231
datatype: f64
name: parse_data
arguments: tag: D154
datatype: f64
name: parse_data
arguments: tag: D205
datatype: f64
name: parse_data
arguments: tag: D86
datatype: f64
name: parse_data
arguments: tag: D161
datatype: f64
name: parse_data
arguments: tag: D137
datatype: f64
name: parse_data
arguments: tag: D159
datatype: f64
name: parse_data
arguments: tag: D117
datatype: byte[4]
name: parse_data
arguments: tag: D52
datatype: byte[4]
name: parse_data
arguments: tag: D2
datatype: f32
name: parse_data
arguments: tag: D115
datatype: byte[8]
name: parse_data
arguments: tag: D210
datatype: f32
name: parse_data
arguments: tag: D44
datatype: byte[4]

tool: D94: 0.1

tool: D258: 0.2

tool: D109: 0.35

tool: D184: 0.5

tool: D241: 0.65

tool: D247: 0.3

tool: D231: 1.5

tool: D154: 0.25

tool: D205: 0.7

tool: D86: 0.6

tool: D161: 0.4

tool: D137: 0.8

tool: D159: 0.53

tool: {"D117": [0x66,0x66,0x26,0x3f]}

tool: {"D52": [0x33,0x33,0xb3,0x3e]}

tool: D2: 1

tool: {"D115": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D210: 0.45

tool: {"D44": [0xcd,0xcc,0x4c,0xbd]}

assistant: ```c
void borch_ampf(float *ampf, float *dt, int n, float *vref, float *vsite, float *pga, float *fmin, float *fmidbot, float *fmid, float *fhigh, float *fhightop, float *fmax) {
  float ma, mv, fa, fv, fac, df, freq;
  float vr;
  int i;
  vr = (*vref) / (*vsite);
  if (*pga < 0.1) {
    ma = 0.35;
    mv = 0.65;
  } else if (*pga < 0.2) {
    ma = 0.35 - (*pga - 0.1);
    mv = 0.65 - 0.5 * (*pga - 0.1);
  } else if (*pga < 0.3) {
    ma = 0.25 - 1.5 * (*pga - 0.2);
    mv = 0.60 - 0.7 * (*pga - 0.2);
  } else if (*pga < 0.4) {
    ma = 0.10 - 1.5 * (*pga - 0.3);
    mv = 0.53 - 0.8 * (*pga - 0.3);
  } else {
    ma = -0.05;
    mv = 0.45;
  }
  fa = exp(ma * log(vr));
  fv = exp(mv * log(vr));
  if (*fmin > *fmidbot)
    *fmin = *fmidbot;
  if (*fmax < *fhightop)
    *fmin = *fhightop;
  df = 1.0 / (n * (*dt));
  for (i = 1; i < n / 2; i++) {
    freq = i * df;
    if (freq < *fmin)
      fac = 1.0;
    else if (freq < *fmidbot)
      fac = 1.0 + (freq - *fmin) * (fv - 1.0) / (*fmidbot - *fmin);
    else if (freq < *fmid)
      fac = fv;
    else if (freq < *fhigh)
      fac = fv + (freq - *fmid) * (fa - fv) / (*fhigh - *fmid);
    else if (freq < *fhightop)
      fac = fa;
    else if (freq < *fmax)
      fac = fa + (freq - *fhightop) * (1.0 - fa) / (*fmax - *fhightop);
    else
      fac = 1.0;
    ampf[i] = fac;
  }
}
```