user: Demonstrate the C code that generates the assembly output below:

```asm
<borch_ampf>:
  endbr64
  push   %r15
  pxor   %xmm0,%xmm0
  push   %r14
  push   %r13
  mov    %rdi,%r13
  push   %r12
  mov    %edx,%r12d
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  sub    $0x18,%rsp
  movsd  D140(%rip),%xmm2
  movss  (%rcx),%xmm1
  divss  (%r8),%xmm1
  cvtss2sd (%r9),%xmm0
  mov    0x50(%rsp),%r14
  mov    0x58(%rsp),%r15
  comisd %xmm0,%xmm2
  mov    0x60(%rsp),%rbx
  ja     L180
  movsd  D112(%rip),%xmm3
  comisd %xmm0,%xmm3
  jbe    L137
  subsd  %xmm2,%xmm0
  movsd  D129(%rip),%xmm2
  pxor   %xmm4,%xmm4
  pxor   %xmm3,%xmm3
  subsd  %xmm0,%xmm2
  mulsd  D104(%rip),%xmm0
  cvtsd2ss %xmm2,%xmm4
  movsd  D160(%rip),%xmm2
  movss  %xmm4,0x4(%rsp)
  subsd  %xmm0,%xmm2
  cvtsd2ss %xmm2,%xmm3
  movss  %xmm3,0xc(%rsp)
  jmp    L62
  xchg   %ax,%ax
L180:
  movss  D25(%rip),%xmm4
  movss  D17(%rip),%xmm5
  movss  %xmm4,0xc(%rsp)
  movss  %xmm5,0x4(%rsp)
L62:
  movaps %xmm1,%xmm0
  movss  %xmm1,0x8(%rsp)
  call   <log@plt>
  mulss  0x4(%rsp),%xmm0
  call   <exp@plt>
  movss  0x8(%rsp),%xmm1
  movss  %xmm0,0x4(%rsp)
  movaps %xmm1,%xmm0
  call   <log@plt>
  mulss  0xc(%rsp),%xmm0
  call   <exp@plt>
  movss  (%r14),%xmm1
  movss  0x4(%rsp),%xmm4
  movaps %xmm0,%xmm3
  movss  (%r15),%xmm0
  comiss %xmm0,%xmm1
  jbe    L16
  movss  %xmm0,(%r14)
L16:
  mov    0x70(%rsp),%rax
  movss  (%rax),%xmm0
  mov    0x78(%rsp),%rax
  comiss (%rax),%xmm0
  jbe    L156
  movss  %xmm0,(%r14)
L156:
  pxor   %xmm0,%xmm0
  movss  D67(%rip),%xmm1
  mov    %r12d,%edx
  cvtsi2ss %r12d,%xmm0
  mulss  0x0(%rbp),%xmm0
  shr    $0x1f,%edx
  movaps %xmm1,%xmm2
  add    %r12d,%edx
  sar    %edx
  divss  %xmm0,%xmm2
  cmp    $0x3,%r12d
  jle    L141
  movsd  D97(%rip),%xmm5
  mov    $0x1,%eax
  jmp    L179
  nopw   0x0(%rax,%rax,1)
L119:
  pxor   %xmm8,%xmm8
  subss  %xmm7,%xmm0
  subss  %xmm7,%xmm6
  cvtss2sd %xmm3,%xmm8
  subsd  %xmm5,%xmm8
  cvtss2sd %xmm0,%xmm0
  cvtss2sd %xmm6,%xmm6
  mulsd  %xmm8,%xmm0
  divsd  %xmm6,%xmm0
  pxor   %xmm6,%xmm6
  addsd  %xmm5,%xmm0
  cvtsd2ss %xmm0,%xmm6
L65:
  movss  %xmm6,0x0(%r13,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%edx
  jle    L141
L179:
  pxor   %xmm0,%xmm0
  movss  (%r14),%xmm7
  movaps %xmm1,%xmm6
  cvtsi2ss %eax,%xmm0
  mulss  %xmm2,%xmm0
  comiss %xmm0,%xmm7
  ja     L65
  movss  (%r15),%xmm6
  comiss %xmm0,%xmm6
  ja     L119
  movss  (%rbx),%xmm7
  movaps %xmm3,%xmm6
  comiss %xmm0,%xmm7
  ja     L65
  mov    0x68(%rsp),%rcx
  movss  (%rcx),%xmm6
  comiss %xmm0,%xmm6
  jbe    L182
  movaps %xmm4,%xmm8
  subss  %xmm7,%xmm0
  subss  %xmm7,%xmm6
  subss  %xmm3,%xmm8
  mulss  %xmm8,%xmm0
  divss  %xmm6,%xmm0
  movaps %xmm0,%xmm6
  addss  %xmm3,%xmm6
  movss  %xmm6,0x0(%r13,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%edx
  jg     L179
L141:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L182:
  mov    0x70(%rsp),%rsi
  movaps %xmm4,%xmm6
  movss  (%rsi),%xmm7
  comiss %xmm0,%xmm7
  ja     L65
  mov    0x78(%rsp),%rdi
  movaps %xmm1,%xmm6
  movss  (%rdi),%xmm8
  comiss %xmm0,%xmm8
  jbe    L65
  subss  %xmm7,%xmm0
  pxor   %xmm6,%xmm6
  pxor   %xmm9,%xmm9
  cvtss2sd %xmm4,%xmm9
  subss  %xmm7,%xmm8
  cvtss2sd %xmm0,%xmm6
  movapd %xmm5,%xmm0
  subsd  %xmm9,%xmm0
  cvtss2sd %xmm8,%xmm8
  mulsd  %xmm6,%xmm0
  pxor   %xmm6,%xmm6
  divsd  %xmm8,%xmm0
  addsd  %xmm9,%xmm0
  cvtsd2ss %xmm0,%xmm6
  jmp    L65
L137:
  movsd  D134(%rip),%xmm4
  comisd %xmm0,%xmm4
  ja     L175
  movsd  D58(%rip),%xmm3
  comisd %xmm0,%xmm3
  jbe    L127
  subsd  %xmm4,%xmm0
  movsd  D151(%rip),%xmm3
  pxor   %xmm5,%xmm5
  mulsd  %xmm0,%xmm3
  mulsd  D128(%rip),%xmm0
  subsd  %xmm3,%xmm2
  cvtsd2ss %xmm2,%xmm5
  movsd  D189(%rip),%xmm2
  movss  %xmm5,0x4(%rsp)
  pxor   %xmm5,%xmm5
  subsd  %xmm0,%xmm2
  cvtsd2ss %xmm2,%xmm5
  movss  %xmm5,0xc(%rsp)
  jmp    L62
  nopl   0x0(%rax)
L175:
  subsd  %xmm3,%xmm0
  movsd  D151(%rip),%xmm3
  pxor   %xmm5,%xmm5
  pxor   %xmm4,%xmm4
  movsd  D169(%rip),%xmm2
  mulsd  %xmm0,%xmm3
  mulsd  D22(%rip),%xmm0
  subsd  %xmm3,%xmm2
  cvtsd2ss %xmm2,%xmm5
  movsd  D76(%rip),%xmm2
  movss  %xmm5,0x4(%rsp)
  subsd  %xmm0,%xmm2
  cvtsd2ss %xmm2,%xmm4
  movss  %xmm4,0xc(%rsp)
  jmp    L62
L127:
  movss  D15(%rip),%xmm4
  movss  D186(%rip),%xmm5
  movss  %xmm4,0xc(%rsp)
  movss  %xmm5,0x4(%rsp)
  jmp    L62
```

tool_calls: name: disassemble_data
arguments: tag: D140
data_type: f64
name: disassemble_data
arguments: tag: D112
data_type: f64
name: disassemble_data
arguments: tag: D129
data_type: f64
name: disassemble_data
arguments: tag: D104
data_type: f64
name: disassemble_data
arguments: tag: D160
data_type: f64
name: disassemble_data
arguments: tag: D25
data_type: byte[4]
name: disassemble_data
arguments: tag: D17
data_type: byte[4]
name: disassemble_data
arguments: tag: D67
data_type: f32
name: disassemble_data
arguments: tag: D97
data_type: byte[8]
name: disassemble_data
arguments: tag: D134
data_type: f64
name: disassemble_data
arguments: tag: D58
data_type: f64
name: disassemble_data
arguments: tag: D151
data_type: f64
name: disassemble_data
arguments: tag: D128
data_type: f64
name: disassemble_data
arguments: tag: D189
data_type: f64
name: disassemble_data
arguments: tag: D169
data_type: f64
name: disassemble_data
arguments: tag: D22
data_type: f64
name: disassemble_data
arguments: tag: D76
data_type: f64
name: disassemble_data
arguments: tag: D15
data_type: f32
name: disassemble_data
arguments: tag: D186
data_type: byte[4]

tool: D140: 0.1

tool: D112: 0.2

tool: D129: 0.35

tool: D104: 0.5

tool: D160: 0.65

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

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

tool: D67: 1

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

tool: D134: 0.3

tool: D58: 0.4

tool: D151: 1.5

tool: D128: 0.8

tool: D189: 0.53

tool: D169: 0.25

tool: D22: 0.7

tool: D76: 0.6

tool: D15: 0.45

tool: {"D186": [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;
  }
}
```