user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %rbp
  lea    D32(%rip),%rdi
  lea    D169(%rip),%rbp
  push   %rbx
  sub    $0x18,%rsp
  call   <puts@plt>
  mov    D41(%rip),%rax
  movsd  D157(%rip),%xmm9
  lea    D208(%rip),%rdi
  movq   %rax,%xmm6
  movapd %xmm9,%xmm1
  movapd %xmm9,%xmm5
  mov    D30(%rip),%rax
  movapd %xmm9,%xmm0
  movq   %rax,%xmm4
  mov    D59(%rip),%rax
  movq   %rax,%xmm3
  mov    D47(%rip),%rax
  movq   %rax,%xmm2
  mov    $0x7,%eax
  call   <printf@plt>
  lea    D103(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%esi
  lea    D183(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D120(%rip),%rdi
  call   <puts@plt>
  mov    D157(%rip),%rax
  pxor   %xmm1,%xmm1
  movq   %rax,%xmm9
L3:
  mov    D165(%rip),%rax
  mov    $0xc7,%ebx
  movq   %rax,%xmm8
  nopw   0x0(%rax,%rax,1)
L7:
  movapd %xmm9,%xmm2
  movapd %xmm9,%xmm6
  mov    $0x1,%edi
  mov    D41(%rip),%rax
  movapd %xmm8,%xmm0
  movsd  %xmm1,0x8(%rsp)
  movq   %rax,%xmm7
  mov    D30(%rip),%rax
  movsd  %xmm8,(%rsp)
  movq   %rax,%xmm5
  mov    D59(%rip),%rax
  movq   %rax,%xmm4
  mov    D47(%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    D157(%rip),%rax
  sub    $0x1,%ebx
  movsd  (%rsp),%xmm8
  addsd  D165(%rip),%xmm8
  movsd  0x8(%rsp),%xmm1
  movq   %rax,%xmm9
  jne    L7
  mov    $0xa,%edi
  movsd  %xmm1,(%rsp)
  call   <putchar@plt>
  movsd  (%rsp),%xmm1
  addsd  D37(%rip),%xmm1
  movsd  D178(%rip),%xmm7
  mov    D157(%rip),%rax
  comisd %xmm1,%xmm7
  movq   %rax,%xmm9
  jae    L3
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: data_label: D32
type: string
name: parse_data
arguments: data_label: D169
type: string
name: parse_data
arguments: data_label: D41
type: f64
name: parse_data
arguments: data_label: D157
type: f64
name: parse_data
arguments: data_label: D208
type: string
name: parse_data
arguments: data_label: D30
type: f64
name: parse_data
arguments: data_label: D59
type: f64
name: parse_data
arguments: data_label: D47
type: f64
name: parse_data
arguments: data_label: D103
type: string
name: parse_data
arguments: data_label: D183
type: string
name: parse_data
arguments: data_label: D120
type: string
name: parse_data
arguments: data_label: D165
type: f64
name: parse_data
arguments: data_label: D37
type: f64
name: parse_data
arguments: data_label: D178
type: f64

tool: D32: B D S0 L N KE G

tool: D169: --->%g %g %g


tool: D41: 9.81

tool: D157: 1

tool: D208: %g %g %g %g %g %g %g


tool: D30: 0.013

tool: D59: 10

tool: D47: 0.01

tool: D103: type

tool: D183: %d


tool: D120: HW TW Q_Box Q_Pipe

tool: D165: 0.1

tool: D37: 0.001

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