user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  push   %rbp
  lea    D79(%rip),%rdi
  lea    D167(%rip),%rbp
  push   %rbx
  sub    $0x18,%rsp
  call   <puts@plt>
  mov    D20(%rip),%rax
  movsd  D3(%rip),%xmm9
  lea    D15(%rip),%rdi
  movq   %rax,%xmm6
  movapd %xmm9,%xmm1
  movapd %xmm9,%xmm5
  mov    D169(%rip),%rax
  movapd %xmm9,%xmm0
  movq   %rax,%xmm4
  mov    D193(%rip),%rax
  movq   %rax,%xmm3
  mov    D76(%rip),%rax
  movq   %rax,%xmm2
  mov    $0x7,%eax
  call   <printf@plt>
  lea    D96(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%esi
  lea    D4(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D146(%rip),%rdi
  call   <puts@plt>
  mov    D3(%rip),%rax
  pxor   %xmm1,%xmm1
  movq   %rax,%xmm9
L16:
  mov    D28(%rip),%rax
  mov    $0xc7,%ebx
  movq   %rax,%xmm8
  nopw   0x0(%rax,%rax,1)
L19:
  movapd %xmm9,%xmm2
  movapd %xmm9,%xmm6
  mov    $0x1,%edi
  mov    D20(%rip),%rax
  movapd %xmm8,%xmm0
  movsd  %xmm1,0x8(%rsp)
  movq   %rax,%xmm7
  mov    D169(%rip),%rax
  movsd  %xmm8,(%rsp)
  movq   %rax,%xmm5
  mov    D193(%rip),%rax
  movq   %rax,%xmm4
  mov    D76(%rip),%rax
  movq   %rax,%xmm3
  call   <Q_pipe@plt>
  movsd  (%rsp),%xmm8
  movsd  0x8(%rsp),%xmm1
  mov    %rbp,%rdi
  movapd %xmm0,%xmm2
  mov    $0x3,%eax
  movapd %xmm8,%xmm0
  call   <printf@plt>
  mov    D3(%rip),%rax
  sub    $0x1,%ebx
  movsd  (%rsp),%xmm8
  addsd  D28(%rip),%xmm8
  movsd  0x8(%rsp),%xmm1
  movq   %rax,%xmm9
  jne    L19
  mov    $0xa,%edi
  movsd  %xmm1,(%rsp)
  call   <putchar@plt>
  movsd  (%rsp),%xmm1
  addsd  D90(%rip),%xmm1
  movsd  D151(%rip),%xmm7
  mov    D3(%rip),%rax
  comisd %xmm1,%xmm7
  movq   %rax,%xmm9
  jae    L16
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: label: D79
type: string
name: disassemble_data
arguments: label: D167
type: string
name: disassemble_data
arguments: label: D20
type: f64
name: disassemble_data
arguments: label: D3
type: f64
name: disassemble_data
arguments: label: D15
type: string
name: disassemble_data
arguments: label: D169
type: f64
name: disassemble_data
arguments: label: D193
type: f64
name: disassemble_data
arguments: label: D76
type: f64
name: disassemble_data
arguments: label: D96
type: string
name: disassemble_data
arguments: label: D4
type: string
name: disassemble_data
arguments: label: D146
type: string
name: disassemble_data
arguments: label: D28
type: f64
name: disassemble_data
arguments: label: D90
type: f64
name: disassemble_data
arguments: label: D151
type: f64

tool: D79: B D S0 L N KE G

tool: D167: --->%g %g %g


tool: D20: 9.81

tool: D3: 1

tool: D15: %g %g %g %g %g %g %g


tool: D169: 0.013

tool: D193: 10

tool: D76: 0.01

tool: D96: type

tool: D4: %d


tool: D146: HW TW Q_Box Q_Pipe

tool: D28: 0.1

tool: D90: 0.001

tool: D151: 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;
}
```