user: Demonstrate the C code that generates the assembly output below:

```asm
<bnodes_>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8,-0x38(%rbp)
  mov    %r9,-0x40(%rbp)
  subq   $0x4,-0x30(%rbp)
  subq   $0x4,-0x20(%rbp)
  subq   $0x4,-0x28(%rbp)
  subq   $0x4,-0x38(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,D201(%rip)
  mov    D201(%rip),%eax
  mov    %eax,-0x4(%rbp)
  movl   $0x1,D264(%rip)
  jmp    L2
L47:
  mov    D264(%rip),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,D263(%rip)
  mov    D263(%rip),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  js     L36
  mov    D264(%rip),%eax
  add    $0x1,%eax
  mov    %eax,D246(%rip)
L2:
  mov    D246(%rip),%eax
  cmp    %eax,-0x4(%rbp)
  jge    L47
  mov    -0x40(%rbp),%rax
  movl   $0x0,(%rax)
  mov    D201(%rip),%eax
  lea    -0x2(%rax),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    0x10(%rbp),%rax
  mov    %edx,(%rax)
  mov    D201(%rip),%eax
  sub    $0x2,%eax
  lea    (%rax,%rax,1),%edx
  mov    0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    $0x0,%eax
  jmp    L59
L36:
  nop
  mov    -0x38(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    D246(%rip),%eax
  mov    %eax,(%rdx)
  movl   $0x1,D246(%rip)
  mov    D246(%rip),%eax
  mov    %eax,D85(%rip)
L50:
  mov    D85(%rip),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,D271(%rip)
  mov    D271(%rip),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,D271(%rip)
  mov    D271(%rip),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,D271(%rip)
  mov    D271(%rip),%edx
  mov    D246(%rip),%eax
  cmp    %eax,%edx
  je     L10
  mov    D246(%rip),%eax
  add    $0x1,%eax
  mov    %eax,D271(%rip)
  mov    D271(%rip),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rax,%rdx
  mov    D271(%rip),%eax
  mov    %eax,(%rdx)
  jmp    L50
L10:
  nop
  mov    D271(%rip),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%edx
  mov    -0x40(%rbp),%rax
  mov    (%rax),%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  lea    -0x2(%rax),%edx
  mov    0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  add    %edx,%eax
  lea    -0x1(%rax),%edx
  mov    0x10(%rbp),%rax
  mov    %edx,(%rax)
  mov    $0x0,%eax
L59:
  pop    %rbp
  ret
```

assistant: ```c
int bnodes_(int *n, int *list, int *lptr, int *lend, int *nodes, int *nb, int *na, int *nt) {
  int i__1;
  static int k, n0, lp, nn, nst;
  --lend;
  --list;
  --lptr;
  --nodes;
  nn = *n;
  i__1 = nn;
  for (nst = 1; nst <= i__1; ++nst) {
    lp = lend[nst];
    if (list[lp] < 0) {
      goto L2;
    }
  }
  *nb = 0;
  *na = (nn - 2) * 3;
  *nt = (nn - 2) << 1;
  return 0;
L2:
  nodes[1] = nst;
  k = 1;
  n0 = nst;
L3:
  lp = lend[n0];
  lp = lptr[lp];
  n0 = list[lp];
  if (n0 == nst) {
    goto L4;
  }
  ++k;
  nodes[k] = n0;
  goto L3;
L4:
  *nb = k;
  *nt = (*n << 1) - *nb - 2;
  *na = *nt + *n - 1;
  return 0;
}
```