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

```asm
<netrom_inp_dump>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  cmpb   $0xff,(%rdi)
  je     L66
L48:
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L28
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L66:
  mov    %esi,%ebx
  mov    %rdi,%r14
  lea    D1(%rip),%rsi
  mov    $0x7,%edi
  call   <lprintf@plt>
  lea    -0xa(%rbx),%eax
  mov    %eax,0x1c(%rsp)
  cmp    $0x1,%eax
  jle    L48
  lea    0x2e(%rsp),%rax
  mov    $0x1,%r15d
  lea    0x27(%rsp),%r12
  mov    %rax,0x8(%rsp)
  nopw   0x0(%rax,%rax,1)
L106:
  mov    0x8(%rsp),%rdi
  movslq %r15d,%rsi
  lea    0xa(%r15),%r13d
  add    %r14,%rsi
  call   <pax25@plt>
  lea    0x7(%r15),%eax
  lea    0x9(%r15),%r11d
  movslq %r13d,%rsi
  cltq
  movslq %r11d,%r11
  mov    %ebx,%edi
  movb   $0x0,0x27(%rsp)
  movzbl (%r14,%rax,1),%eax
  movzbl (%r14,%r11,1),%ebp
  mov    %eax,0x14(%rsp)
  lea    0x8(%r15),%eax
  lea    (%r14,%rsi,1),%r15
  cltq
  movzbl (%r14,%rax,1),%eax
  shl    $0x8,%eax
  add    %ebp,%eax
  mov    %eax,0x18(%rsp)
  movzbl (%r15),%eax
  sub    %eax,%edi
  mov    %eax,%edx
  cmp    %edi,%r13d
  jl     L62
  jmp    L64
L7:
  movzbl (%r15),%eax
  mov    %ebx,%edi
  add    %eax,%r13d
  movslq %r13d,%rsi
  lea    (%r14,%rsi,1),%r15
  movzbl (%r15),%eax
  sub    %eax,%edi
  mov    %eax,%edx
  cmp    %r13d,%edi
  jle    L64
L62:
  test   %dl,%dl
  je     L64
  cmpb   $0x0,0x1(%r14,%rsi,1)
  jne    L7
  sub    $0x2,%eax
  mov    $0x6,%edx
  lea    0x2(%r14,%rsi,1),%rsi
  mov    %r12,%rdi
  cmp    %edx,%eax
  cmovle %eax,%edx
  mov    %edx,%ebp
  call   <memcpy@plt>
  movslq %ebp,%rdx
  movb   $0x0,0x27(%rsp,%rdx,1)
  jmp    L7
  nop
L64:
  mov    0x18(%rsp),%r9d
  mov    0x14(%rsp),%r8d
  xor    %eax,%eax
  mov    %r12,%rcx
  mov    0x8(%rsp),%rdx
  lea    D18(%rip),%rsi
  mov    $0x5,%edi
  lea    0x1(%r13),%r15d
  call   <lprintf@plt>
  cmp    0x1c(%rsp),%r15d
  jl     L106
  jmp    L48
L28:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: tag: D1
datatype: string
name: parse_data
arguments: tag: D18
datatype: string

tool: D1: INP Route Information Frame:


tool: D18:         %12s  %-6s   %6u %6u


assistant: ```c
void netrom_inp_dump(unsigned char *data, int length) {
  char node[10];
  char alias[7];
  int hops;
  int tt;
  int alen;
  int i;
  if (data[0] == 0xff) {
    lprintf(7, "INP Route Information Frame:\n");
    i = 1;
    while (i < length - 10) {
      pax25(node, data + i);
      i += 7;
      hops = data[i++];
      tt = data[i++] * 256;
      tt += data[i++];
      alias[0] = 0;
      while (i < length - data[i] && data[i]) {
        if (data[i + 1] == 0x00) {
          alen = data[i] - 2;
          alen = alen < 7 ? alen : 6;
          memcpy(alias, data + i + 2, alen);
          alias[alen] = 0;
        }
        i += data[i];
      }
      i++;
      lprintf(5, "        %12s  %-6s   %6u %6u\n", node, alias, hops, tt);
    }
  }
}
```