user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<header_display>:
  endbr64
  push   %r12
  push   %rbp
  mov    %edx,%ebp
  push   %rbx
  mov    %esi,%ebx
  test   %edi,%edi
  jne    L54
  test   %esi,%esi
  jne    L44
  lea    D65(%rip),%r8
  lea    D296(%rip),%r9
  xor    %eax,%eax
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D1(%rip),%rdx
  lea    D228(%rip),%rdi
  call   <printf@plt>
L36:
  test   %ebp,%ebp
  lea    D178(%rip),%rax
  lea    D83(%rip),%rbp
  cmove  %rax,%rbp
  lea    D156(%rip),%r12
  xor    %eax,%eax
  mov    %r12,%rcx
  lea    D283(%rip),%r8
  mov    %rbp,%rdx
  lea    D298(%rip),%rsi
  lea    D247(%rip),%rdi
  call   <printf@plt>
  pop    %rbx
  mov    %r12,%rdx
  mov    %rbp,%rsi
  lea    D280(%rip),%r8
  pop    %rbp
  lea    D283(%rip),%rcx
  xor    %eax,%eax
  lea    D230(%rip),%rdi
  pop    %r12
  jmp    1050 <printf@plt>
  nopl   0x0(%rax,%rax,1)
L44:
  lea    D55(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D65(%rip),%r8
  xor    %eax,%eax
  lea    D296(%rip),%r9
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D1(%rip),%rdx
  lea    D228(%rip),%rdi
  call   <printf@plt>
L26:
  lea    D190(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L36
  nopw   0x0(%rax,%rax,1)
L54:
  xor    %eax,%eax
  lea    D127(%rip),%rdi
  call   <printf@plt>
  test   %ebx,%ebx
  jne    L33
  lea    D65(%rip),%r8
  lea    D296(%rip),%r9
  xor    %eax,%eax
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D1(%rip),%rdx
  lea    D228(%rip),%rdi
  call   <printf@plt>
  lea    D79(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L36
  xchg   %ax,%ax
L33:
  lea    D55(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D65(%rip),%r8
  xor    %eax,%eax
  lea    D296(%rip),%r9
  mov    %r8,%rsi
  mov    %r8,%rcx
  lea    D1(%rip),%rdx
  lea    D228(%rip),%rdi
  call   <printf@plt>
  lea    D79(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L26
```

tool_calls: name: unpack_data
arguments: label: D65
type: string
name: unpack_data
arguments: label: D296
type: string
name: unpack_data
arguments: label: D1
type: string
name: unpack_data
arguments: label: D228
type: string
name: unpack_data
arguments: label: D178
type: string
name: unpack_data
arguments: label: D83
type: string
name: unpack_data
arguments: label: D156
type: string
name: unpack_data
arguments: label: D283
type: string
name: unpack_data
arguments: label: D298
type: string
name: unpack_data
arguments: label: D247
type: string
name: unpack_data
arguments: label: D280
type: string
name: unpack_data
arguments: label: D230
type: string
name: unpack_data
arguments: label: D55
type: string
name: unpack_data
arguments: label: D190
type: string
name: unpack_data
arguments: label: D127
type: string
name: unpack_data
arguments: label: D79
type: string

tool: 

tool: D296: out

tool: D1: in

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


tool: D178: bytes

tool: D83: mbytes

tool: D156: pkts

tool: D283: err

tool: D298: iface

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

tool: D280: coll

tool: D230: %10s %7s %5s %5s


tool: D55:          

tool: D190: time     

tool: D127:       

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