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

```asm
<notation_data>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  lea    D88(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <Getc@plt>
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  je     L72
  cmpl   $0x80,-0xc(%rbp)
  jne    L76
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,-0x10(%rbp)
  jmp    L48
L72:
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L48
L76:
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D71(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L48:
  mov    $0x0,%eax
  call   <Getc@plt>
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  je     L19
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L19:
  mov    $0x0,%eax
  call   <Getc@plt>
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  je     L61
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L61:
  mov    $0x0,%eax
  call   <Getc@plt>
  mov    %eax,-0xc(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  je     L65
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L65:
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x0,%eax
  call   <Getc@plt>
  shl    $0x8,%eax
  mov    %eax,-0x8(%rbp)
  mov    $0x0,%eax
  call   <Getc@plt>
  add    %eax,-0x8(%rbp)
  mov    $0x0,%eax
  call   <Getc@plt>
  shl    $0x8,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x0,%eax
  call   <Getc@plt>
  add    %eax,-0x4(%rbp)
  lea    D33(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <pdump@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  cmpl   $0x0,-0x10(%rbp)
  je     L25
  mov    -0x4(%rbp),%eax
  mov    %eax,%edi
  call   <pdump@plt>
  jmp    L81
L25:
  mov    -0x4(%rbp),%eax
  mov    %eax,%edi
  call   <dump@plt>
L81:
  mov    $0xa,%edi
  call   <putchar@plt>
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D88
type_infered: string
name: extract_symbolic_data
arguments: label: D78
type_infered: string
name: extract_symbolic_data
arguments: label: D12
type_infered: string
name: extract_symbolic_data
arguments: label: D71
type_infered: string
name: extract_symbolic_data
arguments: label: D59
type_infered: string
name: extract_symbolic_data
arguments: label: D70
type_infered: string
name: extract_symbolic_data
arguments: label: D67
type_infered: string
name: extract_symbolic_data
arguments: label: D33
type_infered: string
name: extract_symbolic_data
arguments: label: D42
type_infered: string

tool: D88: 		Flag - 

tool: D78: Human-readable

tool: D12: Normal

tool: D71: Unknown flag1(%02x)

tool: D59: Unknown flag2(%02x)

tool: D70: Unknown flag3(%02x)

tool: D67: Unknown flag4(%02x)

tool: D33: 		Name - 

tool: D42: 		Value - 

assistant: ```c
extern void notation_data(int len) {
  int c, nlen, vlen, human = 0;
  printf("\t\tFlag - ");
  c = Getc();
  switch (c) {
  case 0x80:
    printf("Human-readable");
    human = 1;
    break;
  case 0x0:
    printf("Normal");
    break;
  default:
    printf("Unknown flag1(%02x)", c);
    break;
  }
  c = Getc();
  if (c != 0)
    printf("Unknown flag2(%02x)", c);
  c = Getc();
  if (c != 0)
    printf("Unknown flag3(%02x)", c);
  c = Getc();
  if (c != 0)
    printf("Unknown flag4(%02x)", c);
  printf("\n");
  nlen = Getc() * 256;
  nlen += Getc();
  vlen = Getc() * 256;
  vlen += Getc();
  printf("\t\tName - ");
  pdump(nlen);
  printf("\n");
  printf("\t\tValue - ");
  if (human)
    pdump(vlen);
  else
    dump(vlen);
  printf("\n");
}
```