user: Please show me the C implementation that matches the assembly code listed below:

```asm
<header_display>:
  endbr64
  push   %r12
  push   %rbp
  mov    %edx,%ebp
  push   %rbx
  mov    %esi,%ebx
  test   %edi,%edi
  jne    L26
  test   %esi,%esi
  jne    L51
  lea    D153(%rip),%r8
  lea    D138(%rip),%r9
  xor    %eax,%eax
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D51(%rip),%rdx
  lea    D52(%rip),%rdi
  call   <printf@plt>
L22:
  test   %ebp,%ebp
  lea    D113(%rip),%rax
  lea    D193(%rip),%rbp
  cmove  %rax,%rbp
  lea    D22(%rip),%r12
  xor    %eax,%eax
  mov    %r12,%rcx
  lea    D57(%rip),%r8
  mov    %rbp,%rdx
  lea    D175(%rip),%rsi
  lea    D159(%rip),%rdi
  call   <printf@plt>
  pop    %rbx
  mov    %r12,%rdx
  mov    %rbp,%rsi
  lea    D70(%rip),%r8
  pop    %rbp
  lea    D57(%rip),%rcx
  xor    %eax,%eax
  lea    D27(%rip),%rdi
  pop    %r12
  jmp    1050 <printf@plt>
  nopl   0x0(%rax,%rax,1)
L51:
  lea    D203(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D153(%rip),%r8
  xor    %eax,%eax
  lea    D138(%rip),%r9
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D51(%rip),%rdx
  lea    D52(%rip),%rdi
  call   <printf@plt>
L41:
  lea    D32(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L22
  nopw   0x0(%rax,%rax,1)
L26:
  xor    %eax,%eax
  lea    D270(%rip),%rdi
  call   <printf@plt>
  test   %ebx,%ebx
  jne    L44
  lea    D153(%rip),%r8
  lea    D138(%rip),%r9
  xor    %eax,%eax
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D51(%rip),%rdx
  lea    D52(%rip),%rdi
  call   <printf@plt>
  lea    D285(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L22
  xchg   %ax,%ax
L44:
  lea    D203(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D153(%rip),%r8
  xor    %eax,%eax
  lea    D138(%rip),%r9
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D51(%rip),%rdx
  lea    D52(%rip),%rdi
  call   <printf@plt>
  lea    D285(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L41
```

tool_calls: name: retrieve_data
arguments: label: D153
type_guessed: string
name: retrieve_data
arguments: label: D138
type_guessed: string
name: retrieve_data
arguments: label: D51
type_guessed: string
name: retrieve_data
arguments: label: D52
type_guessed: string
name: retrieve_data
arguments: label: D113
type_guessed: string
name: retrieve_data
arguments: label: D193
type_guessed: string
name: retrieve_data
arguments: label: D22
type_guessed: string
name: retrieve_data
arguments: label: D57
type_guessed: string
name: retrieve_data
arguments: label: D175
type_guessed: string
name: retrieve_data
arguments: label: D159
type_guessed: string
name: retrieve_data
arguments: label: D70
type_guessed: string
name: retrieve_data
arguments: label: D27
type_guessed: string
name: retrieve_data
arguments: label: D203
type_guessed: string
name: retrieve_data
arguments: label: D32
type_guessed: string
name: retrieve_data
arguments: label: D270
type_guessed: string
name: retrieve_data
arguments: label: D285
type_guessed: string

tool: 

tool: D138: out

tool: D51: in

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


tool: D113: bytes

tool: D193: mbytes

tool: D22: pkts

tool: D57: err

tool: D175: iface

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

tool: D70: coll

tool: D27: %10s %7s %5s %5s


tool: D203:          

tool: D32: time     

tool: D270:       

tool: D285: date  

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");
}
```