user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  movl   $0xffffffff,-0x10(%rbp)
  movl   $0xfffffffd,-0xc(%rbp)
  jmp    L307
L348:
  shll   $0x8,-0x10(%rbp)
  cmpl   $0x100,-0x10(%rbp)
  jne    L352
  mov    -0x8(%rbp),%eax
  or     -0x10(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D263(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  cmpl   $0x11f,-0x4(%rbp)
  jg     L74
  lea    D228(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L74:
  cmpl   $0x12f,-0x4(%rbp)
  jg     L550
  lea    D277(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L550:
  cmpl   $0x13f,-0x4(%rbp)
  jg     L259
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L259:
  cmpl   $0x15f,-0x4(%rbp)
  jg     L369
  lea    D196(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L369:
  cmpl   $0x1af,-0x4(%rbp)
  jg     L40
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L40:
  cmpl   $0x1b0,-0x4(%rbp)
  jne    L110
  lea    D87(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L110:
  cmpl   $0x1b1,-0x4(%rbp)
  jne    L346
  lea    D223(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L346:
  cmpl   $0x1b2,-0x4(%rbp)
  jne    L458
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L458:
  cmpl   $0x1b3,-0x4(%rbp)
  jne    L52
  lea    D156(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L52:
  cmpl   $0x1b4,-0x4(%rbp)
  jne    L386
  lea    D111(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L386:
  cmpl   $0x1b5,-0x4(%rbp)
  jne    L349
  lea    D131(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L349:
  cmpl   $0x1b6,-0x4(%rbp)
  jne    L193
  lea    D217(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L193:
  cmpl   $0x1b7,-0x4(%rbp)
  jne    L12
  lea    D71(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L12:
  cmpl   $0x1b8,-0x4(%rbp)
  jne    L164
  lea    D161(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L164:
  cmpl   $0x1b9,-0x4(%rbp)
  jne    L439
  lea    D53(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L439:
  cmpl   $0x1ba,-0x4(%rbp)
  jne    L424
  lea    D201(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L424:
  cmpl   $0x1bb,-0x4(%rbp)
  jne    L245
  lea    D108(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L245:
  cmpl   $0x1bc,-0x4(%rbp)
  jne    L432
  lea    D267(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L432:
  cmpl   $0x1bd,-0x4(%rbp)
  jne    L71
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L71:
  cmpl   $0x1be,-0x4(%rbp)
  jne    L148
  lea    D107(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L148:
  cmpl   $0x1bf,-0x4(%rbp)
  jne    L208
  lea    D214(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L208:
  cmpl   $0x1c0,-0x4(%rbp)
  jne    L103
  lea    D218(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L103:
  cmpl   $0x1c1,-0x4(%rbp)
  jne    L23
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L23:
  cmpl   $0x1c2,-0x4(%rbp)
  jne    L155
  lea    D209(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L155:
  cmpl   $0x1c3,-0x4(%rbp)
  jne    L483
  lea    D220(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L483:
  cmpl   $0x1c5,-0x4(%rbp)
  jg     L60
  lea    D104(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L326
L60:
  cmpl   $0x1ff,-0x4(%rbp)
  jg     L326
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L326:
  mov    $0xa,%edi
  call   <putchar@plt>
L352:
  mov    -0x8(%rbp),%eax
  or     %eax,-0x10(%rbp)
  addl   $0x1,-0xc(%rbp)
L307:
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    %eax,-0x8(%rbp)
  cmpl   $0x0,-0x8(%rbp)
  jns    L348
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D263
type_infered: string
name: parse_data
arguments: data_tag: D228
type_infered: string
name: parse_data
arguments: data_tag: D277
type_infered: string
name: parse_data
arguments: data_tag: D89
type_infered: string
name: parse_data
arguments: data_tag: D196
type_infered: string
name: parse_data
arguments: data_tag: D87
type_infered: string
name: parse_data
arguments: data_tag: D223
type_infered: string
name: parse_data
arguments: data_tag: D67
type_infered: string
name: parse_data
arguments: data_tag: D156
type_infered: string
name: parse_data
arguments: data_tag: D111
type_infered: string
name: parse_data
arguments: data_tag: D131
type_infered: string
name: parse_data
arguments: data_tag: D217
type_infered: string
name: parse_data
arguments: data_tag: D71
type_infered: string
name: parse_data
arguments: data_tag: D161
type_infered: string
name: parse_data
arguments: data_tag: D53
type_infered: string
name: parse_data
arguments: data_tag: D201
type_infered: string
name: parse_data
arguments: data_tag: D108
type_infered: string
name: parse_data
arguments: data_tag: D267
type_infered: string
name: parse_data
arguments: data_tag: D133
type_infered: string
name: parse_data
arguments: data_tag: D107
type_infered: string
name: parse_data
arguments: data_tag: D214
type_infered: string
name: parse_data
arguments: data_tag: D218
type_infered: string
name: parse_data
arguments: data_tag: D41
type_infered: string
name: parse_data
arguments: data_tag: D209
type_infered: string
name: parse_data
arguments: data_tag: D220
type_infered: string
name: parse_data
arguments: data_tag: D104
type_infered: string
name: parse_data
arguments: data_tag: D30
type_infered: string

tool: D263: %08X 1%02X 

tool: D228: Video Object Start

tool: D277: Video Object Layer Start

tool: D89: Reserved

tool: D196: FGS bp start

tool: D87: Visual Object Seq Start

tool: D223: Visual Object Seq End

tool: D67: User Data

tool: D156: Group of VOP start

tool: D111: Video Session Error

tool: D131: Visual Object Start

tool: D217: Video Object Plane start

tool: D71: slice start

tool: D161: extension start

tool: D53: fgs start

tool: D201: FBA Object start

tool: D108: FBA Object Plane start

tool: D267: Mesh Object start

tool: D133: Mesh Object Plane start

tool: D107: Still Textutre Object start

tool: D214: Textutre Spatial Layer start

tool: D218: Textutre SNR Layer start

tool: D41: Textutre Tile start

tool: D209: Textutre Shape Layer start

tool: D220: stuffing start

tool: D104: reserved

tool: D30: System start

assistant: ```c
int main(void) {
  int c;
  unsigned int head = -1;
  int pos = -3;
  while ((c = getchar()) >= 0) {
    head <<= 8;
    if (head == 0x100) {
      int startcode = head | c;
      printf("%08X 1%02X ", pos, c);
      if (startcode <= 0x11F)
        printf("Video Object Start");
      else if (startcode <= 0x12F)
        printf("Video Object Layer Start");
      else if (startcode <= 0x13F)
        printf("Reserved");
      else if (startcode <= 0x15F)
        printf("FGS bp start");
      else if (startcode <= 0x1AF)
        printf("Reserved");
      else if (startcode == 0x1B0)
        printf("Visual Object Seq Start");
      else if (startcode == 0x1B1)
        printf("Visual Object Seq End");
      else if (startcode == 0x1B2)
        printf("User Data");
      else if (startcode == 0x1B3)
        printf("Group of VOP start");
      else if (startcode == 0x1B4)
        printf("Video Session Error");
      else if (startcode == 0x1B5)
        printf("Visual Object Start");
      else if (startcode == 0x1B6)
        printf("Video Object Plane start");
      else if (startcode == 0x1B7)
        printf("slice start");
      else if (startcode == 0x1B8)
        printf("extension start");
      else if (startcode == 0x1B9)
        printf("fgs start");
      else if (startcode == 0x1BA)
        printf("FBA Object start");
      else if (startcode == 0x1BB)
        printf("FBA Object Plane start");
      else if (startcode == 0x1BC)
        printf("Mesh Object start");
      else if (startcode == 0x1BD)
        printf("Mesh Object Plane start");
      else if (startcode == 0x1BE)
        printf("Still Textutre Object start");
      else if (startcode == 0x1BF)
        printf("Textutre Spatial Layer start");
      else if (startcode == 0x1C0)
        printf("Textutre SNR Layer start");
      else if (startcode == 0x1C1)
        printf("Textutre Tile start");
      else if (startcode == 0x1C2)
        printf("Textutre Shape Layer start");
      else if (startcode == 0x1C3)
        printf("stuffing start");
      else if (startcode <= 0x1C5)
        printf("reserved");
      else if (startcode <= 0x1FF)
        printf("System start");
      printf("\n");
    }
    head |= c;
    ++pos;
  }
  return 0;
}
```