user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<notation_data>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  lea    D73(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <Getc@plt>
  mov    %eax,%ebx
  test   %eax,%eax
  je     L0
  cmp    $0x80,%eax
  jne    L81
  lea    D30(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%ebx
L105:
  mov    $0x0,%eax
  call   <Getc@plt>
  test   %eax,%eax
  jne    L74
L97:
  mov    $0x0,%eax
  call   <Getc@plt>
  test   %eax,%eax
  jne    L54
L80:
  mov    $0x0,%eax
  call   <Getc@plt>
  test   %eax,%eax
  jne    L36
L34:
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x0,%eax
  call   <Getc@plt>
  shl    $0x8,%eax
  mov    %eax,%r12d
  mov    $0x0,%eax
  call   <Getc@plt>
  add    %eax,%r12d
  mov    $0x0,%eax
  call   <Getc@plt>
  shl    $0x8,%eax
  mov    %eax,%ebp
  mov    $0x0,%eax
  call   <Getc@plt>
  add    %eax,%ebp
  lea    D72(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r12d,%edi
  call   <pdump@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D47(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  test   %ebx,%ebx
  je     L78
  mov    %ebp,%edi
  call   <pdump@plt>
L99:
  mov    $0xa,%edi
  call   <putchar@plt>
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L0:
  lea    D32(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L105
L81:
  mov    %eax,%esi
  lea    D50(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L105
L74:
  mov    %eax,%esi
  lea    D87(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L97
L54:
  mov    %eax,%esi
  lea    D16(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L80
L36:
  mov    %eax,%esi
  lea    D15(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L34
L78:
  mov    %ebp,%edi
  call   <dump@plt>
  jmp    L99
```

tool_calls: name: unpack_data
arguments: data_tag: D73
type_guessed: string
name: unpack_data
arguments: data_tag: D30
type_guessed: string
name: unpack_data
arguments: data_tag: D72
type_guessed: string
name: unpack_data
arguments: data_tag: D47
type_guessed: string
name: unpack_data
arguments: data_tag: D32
type_guessed: string
name: unpack_data
arguments: data_tag: D50
type_guessed: string
name: unpack_data
arguments: data_tag: D87
type_guessed: string
name: unpack_data
arguments: data_tag: D16
type_guessed: string
name: unpack_data
arguments: data_tag: D15
type_guessed: string

tool: D73: 		Flag - 

tool: D30: Human-readable

tool: D72: 		Name - 

tool: D47: 		Value - 

tool: D32: Normal

tool: D50: Unknown flag1(%02x)

tool: D87: Unknown flag2(%02x)

tool: D16: Unknown flag3(%02x)

tool: D15: Unknown flag4(%02x)

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