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

```asm
<main>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  lea    D63(%rip),%rdi
  call   <puts@plt>
  movsd  D36(%rip),%xmm0
  movsd  D13(%rip),%xmm6
  movapd %xmm0,%xmm5
  movsd  D46(%rip),%xmm4
  movsd  D8(%rip),%xmm3
  movsd  D11(%rip),%xmm2
  movapd %xmm0,%xmm1
  lea    D150(%rip),%rdi
  mov    $0x7,%eax
  call   <printf@plt>
  lea    D27(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%esi
  lea    D117(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D112(%rip),%rdi
  call   <puts@plt>
  pxor   %xmm4,%xmm4
  movsd  %xmm4,0x8(%rsp)
L5:
  mov    $0xc7,%ebp
  mov    D195(%rip),%rbx
L10:
  mov    D13(%rip),%rax
  movq   %rax,%xmm7
  mov    D36(%rip),%rax
  movq   %rax,%xmm6
  mov    D46(%rip),%rax
  movq   %rax,%xmm5
  mov    D8(%rip),%rax
  movq   %rax,%xmm4
  movsd  D11(%rip),%xmm3
  mov    $0x1,%edi
  movapd %xmm6,%xmm2
  movsd  0x8(%rsp),%xmm1
  movq   %rbx,%xmm0
  call   <Q_pipe@plt>
  movapd %xmm0,%xmm2
  movsd  0x8(%rsp),%xmm1
  movq   %rbx,%xmm0
  lea    D75(%rip),%rdi
  mov    $0x3,%eax
  call   <printf@plt>
  movq   %rbx,%xmm7
  addsd  D195(%rip),%xmm7
  movq   %xmm7,%rbx
  sub    $0x1,%ebp
  jne    L10
  mov    $0xa,%edi
  call   <putchar@plt>
  movsd  0x8(%rsp),%xmm3
  addsd  D128(%rip),%xmm3
  movsd  %xmm3,0x8(%rsp)
  movsd  D67(%rip),%xmm0
  comisd %xmm3,%xmm0
  jae    L5
  mov    $0x0,%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D63
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D36
type_infered: f64
name: extract_symbolic_data
arguments: data_tag: D13
type_infered: f64
name: extract_symbolic_data
arguments: data_tag: D46
type_infered: f64
name: extract_symbolic_data
arguments: data_tag: D8
type_infered: f64
name: extract_symbolic_data
arguments: data_tag: D11
type_infered: f64
name: extract_symbolic_data
arguments: data_tag: D150
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D27
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D117
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D112
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D195
type_infered: f64
name: extract_symbolic_data
arguments: data_tag: D75
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D128
type_infered: f64
name: extract_symbolic_data
arguments: data_tag: D67
type_infered: f64

tool: D63: B D S0 L N KE G

tool: D36: 1

tool: D13: 9.81

tool: D46: 0.013

tool: D8: 10

tool: D11: 0.01

tool: D150: %g %g %g %g %g %g %g


tool: D27: type

tool: D117: %d


tool: D112: HW TW Q_Box Q_Pipe

tool: D195: 0.1

tool: D75: --->%g %g %g


tool: D128: 0.001

tool: D67: 1.5

assistant: ```c
int main(int argc, char *argv[]) {
  double HW, TW, B, D, S0, L, N, KE, G;
  int type;
  B = 1.0;
  D = 1.0;
  type = 1;
  S0 = 0.01;
  L = 10.0;
  N = 0.013;
  KE = 1.0;
  G = 9.81;
  printf("B D S0 L N KE G\n");
  printf("%g %g %g %g %g %g %g\n", B, D, S0, L, N, KE, G);
  printf("type\n");
  printf("%d\n", type);
  printf("HW TW Q_Box Q_Pipe\n");
  for (TW = 0.; TW <= 1.5 * D; TW += 0.001) {
    for (HW = 0.1; HW <= 20.; HW += 0.1)
      printf("--->%g %g %g\n", HW, TW, Q_pipe(HW, TW, D, type, S0, L, N, KE, G));
    printf("\n");
  }
  return 0;
}
```