user: 请从给定的汇编指令推导出C源代码:

```asm
<q3>:
  endbr64
  sub    $0x18,%rsp
  movapd %xmm0,%xmm3
  movsd  %xmm0,(%rsp)
  movsd  D100(%rip),%xmm0
  comisd %xmm3,%xmm0
  jae    L49
  comisd %xmm0,%xmm3
  jbe    L102
  movsd  D197(%rip),%xmm0
  comisd %xmm3,%xmm0
  jae    L88
L102:
  movsd  (%rsp),%xmm4
  comisd D197(%rip),%xmm4
  jbe    L51
  movsd  D238(%rip),%xmm0
  comisd %xmm4,%xmm0
  jae    L97
L51:
  movsd  (%rsp),%xmm5
  movsd  D113(%rip),%xmm0
  comisd D238(%rip),%xmm5
  jbe    L86
  movsd  D20(%rip),%xmm0
  comisd %xmm5,%xmm0
  jae    L105
  movsd  D113(%rip),%xmm0
  jmp    L86
L88:
  mov    $0x2,%edi
  movapd %xmm3,%xmm0
  call   <pow@plt>
  movsd  (%rsp),%xmm6
  movapd %xmm6,%xmm1
  mulsd  D226(%rip),%xmm1
  subsd  D71(%rip),%xmm1
  mulsd  D35(%rip),%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x8(%rsp)
  mov    $0x3,%edi
  movapd %xmm6,%xmm0
  call   <pow@plt>
  mulsd  D182(%rip),%xmm0
  movapd %xmm0,%xmm2
  addsd  0x8(%rsp),%xmm2
  movsd  %xmm2,0x8(%rsp)
  mov    $0x4,%edi
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movapd %xmm0,%xmm1
  mulsd  D223(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  subsd  %xmm1,%xmm0
  jmp    L86
L97:
  mov    $0x2,%edi
  movapd %xmm4,%xmm0
  call   <pow@plt>
  movsd  (%rsp),%xmm7
  movapd %xmm7,%xmm2
  mulsd  D6(%rip),%xmm2
  movsd  D88(%rip),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  D176(%rip),%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rsp)
  mov    $0x3,%edi
  movapd %xmm7,%xmm0
  call   <pow@plt>
  mulsd  D137(%rip),%xmm0
  addsd  (%rsp),%xmm0
  subsd  D3(%rip),%xmm0
  jmp    L86
L105:
  mov    $0x2,%edi
  movapd %xmm5,%xmm0
  call   <pow@plt>
  movsd  (%rsp),%xmm7
  movapd %xmm7,%xmm1
  mulsd  D225(%rip),%xmm1
  subsd  D149(%rip),%xmm1
  mulsd  D96(%rip),%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x8(%rsp)
  mov    $0x3,%edi
  movapd %xmm7,%xmm0
  call   <pow@plt>
  mulsd  D237(%rip),%xmm0
  movapd %xmm0,%xmm6
  addsd  0x8(%rsp),%xmm6
  movsd  %xmm6,0x8(%rsp)
  mov    $0x4,%edi
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movapd %xmm0,%xmm1
  mulsd  D28(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  subsd  %xmm1,%xmm0
  jmp    L86
L49:
  movsd  D152(%rip),%xmm0
L86:
  add    $0x18,%rsp
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D100
type: byte[8]
name: retrieve_data
arguments: tag: D197
type: f64[2]
name: retrieve_data
arguments: tag: D238
type: f64[2]
name: retrieve_data
arguments: tag: D113
type: byte[8]
name: retrieve_data
arguments: tag: D20
type: byte[8]
name: retrieve_data
arguments: tag: D226
type: f64
name: retrieve_data
arguments: tag: D71
type: f64
name: retrieve_data
arguments: tag: D35
type: f64
name: retrieve_data
arguments: tag: D182
type: f64
name: retrieve_data
arguments: tag: D223
type: f64
name: retrieve_data
arguments: tag: D6
type: f64
name: retrieve_data
arguments: tag: D88
type: byte[8]
name: retrieve_data
arguments: tag: D176
type: f64
name: retrieve_data
arguments: tag: D137
type: f64
name: retrieve_data
arguments: tag: D3
type: byte[8]
name: retrieve_data
arguments: tag: D225
type: f64
name: retrieve_data
arguments: tag: D149
type: f64
name: retrieve_data
arguments: tag: D96
type: f64
name: retrieve_data
arguments: tag: D237
type: f64
name: retrieve_data
arguments: tag: D28
type: f64
name: retrieve_data
arguments: tag: D152
type: byte[8]

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

tool: {"D197": [6.9,41.91277]}

tool: {"D238": [7.1,21.4593]}

tool: {"D113": [0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40]}

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

tool: D226: 41.91277

tool: D71: 37.1085

tool: D35: 15.7043

tool: D182: 2.417486

tool: D223: 0.091252

tool: D6: 21.4593

tool: {"D88": [0x4a,0x7b,0x83,0x2f,0x4c,0xc6,0x12,0xc0]}

tool: D176: 68.4561

tool: D137: 21.638886

tool: {"D3": [0xba,0xda,0x8a,0xfd,0x65,0x77,0x19,0x40]}

tool: D225: 3262.031

tool: D149: 7698.19

tool: D96: 499.494

tool: D237: 33.1551

tool: D28: 0.810613

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

assistant: ```c
double q3(double c) {
  double q3;
  if (c <= 2) {
    q3 = 1;
  } else if (c > 2 && c <= 6.9) {
    q3 = -37.1085 + 41.91277 * c - 15.7043 * pow(c, 2) + 2.417486 * pow(c, 3) - 0.091252 * pow(c, 4);
  } else if (c > 6.9 && c <= 7.1) {
    q3 = -4.69365 - 21.4593 * c - 68.4561 * pow(c, 2) + 21.638886 * pow(c, 3) - 1.59165 * (c, 4);
  } else if (c > 7.1 && c <= 12) {
    q3 = -7698.19 + 3262.031 * c - 499.494 * pow(c, 2) + 33.1551 * pow(c, 3) - 0.810613 * pow(c, 4);
  } else {
    q3 = 3;
  }
  return q3;
}
```