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

```asm
<_libtcas_filter_MitchellNetravali>:
  endbr64
  movapd %xmm0,%xmm3
  movapd %xmm1,%xmm4
  mulsd  D143(%rip),%xmm4
  movapd %xmm2,%xmm5
  mulsd  D38(%rip),%xmm5
  pxor   %xmm0,%xmm0
  comisd %xmm3,%xmm0
  ja     L29
L4:
  movsd  D64(%rip),%xmm0
  comisd %xmm3,%xmm0
  ja     L16
  movsd  D31(%rip),%xmm0
  comisd %xmm3,%xmm0
  jbe    L32
  movq   D131(%rip),%xmm7
  movapd %xmm1,%xmm0
  xorpd  %xmm7,%xmm0
  subsd  %xmm5,%xmm0
  movsd  D38(%rip),%xmm5
  divsd  %xmm5,%xmm0
  mulsd  %xmm3,%xmm0
  movapd %xmm1,%xmm6
  mulsd  %xmm5,%xmm6
  movapd %xmm2,%xmm8
  mulsd  D83(%rip),%xmm8
  addsd  %xmm8,%xmm6
  divsd  %xmm5,%xmm6
  addsd  %xmm6,%xmm0
  mulsd  %xmm3,%xmm0
  xorpd  %xmm7,%xmm4
  movapd %xmm2,%xmm6
  mulsd  D149(%rip),%xmm6
  subsd  %xmm6,%xmm4
  divsd  %xmm5,%xmm4
  addsd  %xmm4,%xmm0
  mulsd  %xmm3,%xmm0
  mulsd  D40(%rip),%xmm1
  mulsd  D120(%rip),%xmm2
  addsd  %xmm2,%xmm1
  divsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
  ret
L29:
  xorpd  D131(%rip),%xmm3
  jmp    L4
L16:
  movapd %xmm1,%xmm2
  mulsd  D145(%rip),%xmm2
  movsd  D143(%rip),%xmm0
  subsd  %xmm2,%xmm0
  subsd  %xmm5,%xmm0
  movsd  D38(%rip),%xmm2
  divsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm0
  subsd  D10(%rip),%xmm4
  addsd  %xmm5,%xmm4
  divsd  %xmm2,%xmm4
  addsd  %xmm4,%xmm0
  mulsd  %xmm3,%xmm0
  mulsd  %xmm3,%xmm0
  movapd %xmm1,%xmm3
  addsd  %xmm1,%xmm3
  movapd %xmm2,%xmm1
  subsd  %xmm3,%xmm1
  divsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  ret
L32:
  pxor   %xmm0,%xmm0
  ret
```

tool_calls: name: parse_data
arguments: tag: D143
datatype: byte[8]
name: parse_data
arguments: tag: D38
datatype: f64
name: parse_data
arguments: tag: D64
datatype: byte[8]
name: parse_data
arguments: tag: D31
datatype: byte[8]
name: parse_data
arguments: tag: D131
datatype: byte[16]
name: parse_data
arguments: tag: D83
datatype: byte[8]
name: parse_data
arguments: tag: D149
datatype: byte[8]
name: parse_data
arguments: tag: D40
datatype: byte[8]
name: parse_data
arguments: tag: D120
datatype: byte[8]
name: parse_data
arguments: tag: D145
datatype: byte[8]
name: parse_data
arguments: tag: D10
datatype: byte[8]

tool: {"D143": [0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x40]}

tool: D38: 6

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

tool: {"D31": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

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

tool: {"D83": [0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x40]}

tool: {"D149": [0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x40]}

tool: {"D40": [0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40]}

tool: {"D120": [0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x40]}

tool: {"D145": [0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x40]}

tool: {"D10": [0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x40]}

assistant: ```c
double _libtcas_filter_MitchellNetravali(double x, double b, double c) {
  double p0, p2, p3, q0, q1, q2, q3;
  p0 = (6 - 2 * b) / 6.0;
  p2 = (-18 + 12 * b + 6 * c) / 6.0;
  p3 = (12 - 9 * b - 6 * c) / 6.0;
  q0 = (8 * b + 24 * c) / 6.0;
  q1 = (-12 * b - 48 * c) / 6.0;
  q2 = (6 * b + 30 * c) / 6.0;
  q3 = (-b - 6 * c) / 6.0;
  if (x < 0)
    x = -x;
  if (x < 1)
    return p0 + (p2 + p3 * x) * x * x;
  else if (x < 2)
    return q0 + (q1 + (q2 + q3 * x) * x) * x;
  else
    return 0;
}
```