user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<header_display>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  mov    %esi,%ebp
  mov    %edx,%r12d
  test   %edi,%edi
  jne    L22
  test   %esi,%esi
  jne    L15
  lea    D106(%rip),%r9
  lea    D66(%rip),%r8
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D146(%rip),%rdx
  lea    D250(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L34:
  test   %r12d,%r12d
  lea    D28(%rip),%rbx
  lea    D104(%rip),%rax
  cmove  %rax,%rbx
  lea    D181(%rip),%r8
  lea    D22(%rip),%rbp
  mov    %rbp,%rcx
  mov    %rbx,%rdx
  lea    D161(%rip),%rsi
  lea    D195(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D116(%rip),%r8
  lea    D181(%rip),%rcx
  mov    %rbp,%rdx
  mov    %rbx,%rsi
  lea    D198(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L22:
  lea    D145(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  test   %ebp,%ebp
  jne    L15
  lea    D106(%rip),%r9
  lea    D66(%rip),%r8
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D146(%rip),%rdx
  lea    D250(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  test   %ebx,%ebx
  je     L34
  lea    D0(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L34
L15:
  lea    D245(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D106(%rip),%r9
  lea    D66(%rip),%r8
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D146(%rip),%rdx
  lea    D250(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  test   %ebx,%ebx
  jne    L77
L57:
  lea    D130(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L34
L77:
  lea    D0(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L57
```

tool_calls: name: parse_data
arguments: label: D106
data_type: string
name: parse_data
arguments: label: D66
data_type: string
name: parse_data
arguments: label: D146
data_type: string
name: parse_data
arguments: label: D250
data_type: string
name: parse_data
arguments: label: D28
data_type: string
name: parse_data
arguments: label: D104
data_type: string
name: parse_data
arguments: label: D181
data_type: string
name: parse_data
arguments: label: D22
data_type: string
name: parse_data
arguments: label: D161
data_type: string
name: parse_data
arguments: label: D195
data_type: string
name: parse_data
arguments: label: D116
data_type: string
name: parse_data
arguments: label: D198
data_type: string
name: parse_data
arguments: label: D145
data_type: string
name: parse_data
arguments: label: D0
data_type: string
name: parse_data
arguments: label: D245
data_type: string
name: parse_data
arguments: label: D130
data_type: string

tool: D106: out

tool: 

tool: D146: in

tool: D250: %-6s %10s %7s %5s %10s


tool: D28: mbytes

tool: D104: bytes

tool: D181: err

tool: D22: pkts

tool: D161: iface

tool: D195: %-6s %10s %7s %5s 

tool: D116: coll

tool: D198: %10s %7s %5s %5s


tool: D145:       

tool: D0: date  

tool: D245:          

tool: D130: time     

assistant: ```c
void header_display(int show_date, int show_time, int show_mb) {
  if (show_date) {
    printf("      ");
  }
  if (show_time) {
    printf("         ");
  }
  printf("%-6s %10s %7s %5s %10s\n", "", "in", "", "", "out");
  if (show_date) {
    printf("date  ");
  }
  if (show_time) {
    printf("time     ");
  }
  printf("%-6s %10s %7s %5s ", "iface", show_mb ? "mbytes" : "bytes", "pkts", "err");
  printf("%10s %7s %5s %5s\n", show_mb ? "mbytes" : "bytes", "pkts", "err", "coll");
}
```