user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<q3>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  movsd  %xmm0,-0x18(%rbp)
  movsd  D182(%rip),%xmm0
  comisd -0x18(%rbp),%xmm0
  jb     L16
  movsd  D154(%rip),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  jmp    L41
L16:
  movsd  -0x18(%rbp),%xmm0
  comisd D182(%rip),%xmm0
  jbe    L50
  movsd  D78(%rip),%xmm0
  comisd -0x18(%rbp),%xmm0
  jb     L50
  movsd  -0x18(%rbp),%xmm1
  movsd  D175(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D58(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D51(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm2
  subsd  %xmm0,%xmm2
  movsd  %xmm2,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x3,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D94(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x4,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D95(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x20(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  jmp    L41
L50:
  movsd  -0x18(%rbp),%xmm0
  comisd D78(%rip),%xmm0
  jbe    L26
  movsd  D144(%rip),%xmm0
  comisd -0x18(%rbp),%xmm0
  jb     L26
  movsd  -0x18(%rbp),%xmm1
  movsd  D31(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D228(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D158(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm3
  subsd  %xmm0,%xmm3
  movsd  %xmm3,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x3,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D12(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  D90(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  jmp    L41
L26:
  movsd  -0x18(%rbp),%xmm0
  comisd D144(%rip),%xmm0
  jbe    L10
  movsd  D41(%rip),%xmm0
  comisd -0x18(%rbp),%xmm0
  jb     L10
  movsd  -0x18(%rbp),%xmm1
  movsd  D63(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D10(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D52(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x3,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D121(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x4,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D72(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  -0x20(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  jmp    L41
L10:
  movsd  D100(%rip),%xmm0
  movsd  %xmm0,-0x8(%rbp)
L41:
  movsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D182
type_infered: byte[16]
name: disassemble_data
arguments: data_label: D154
type_infered: byte[8]
name: disassemble_data
arguments: data_label: D78
type_infered: f64[2]
name: disassemble_data
arguments: data_label: D175
type_infered: f64
name: disassemble_data
arguments: data_label: D58
type_infered: f64
name: disassemble_data
arguments: data_label: D51
type_infered: f64
name: disassemble_data
arguments: data_label: D94
type_infered: f64
name: disassemble_data
arguments: data_label: D95
type_infered: f64
name: disassemble_data
arguments: data_label: D144
type_infered: f64[2]
name: disassemble_data
arguments: data_label: D31
type_infered: f64
name: disassemble_data
arguments: data_label: D228
type_infered: byte[8]
name: disassemble_data
arguments: data_label: D158
type_infered: f64
name: disassemble_data
arguments: data_label: D12
type_infered: f64
name: disassemble_data
arguments: data_label: D90
type_infered: byte[8]
name: disassemble_data
arguments: data_label: D41
type_infered: byte[8]
name: disassemble_data
arguments: data_label: D63
type_infered: f64
name: disassemble_data
arguments: data_label: D10
type_infered: f64
name: disassemble_data
arguments: data_label: D52
type_infered: f64
name: disassemble_data
arguments: data_label: D121
type_infered: f64
name: disassemble_data
arguments: data_label: D72
type_infered: f64
name: disassemble_data
arguments: data_label: D100
type_infered: byte[8]

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

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

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

tool: D175: 41.91277

tool: D58: 37.1085

tool: D51: 15.7043

tool: D94: 2.417486

tool: D95: 0.091252

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

tool: D31: 21.4593

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

tool: D158: 68.4561

tool: D12: 21.638886

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

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

tool: D63: 3262.031

tool: D10: 7698.19

tool: D52: 499.494

tool: D121: 33.1551

tool: D72: 0.810613

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

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;
}
```