user: Demonstrate the C code that generates the assembly output below:

```asm
<filedes>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <pstreamInqFiletype@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x9,-0x4(%rbp)
  ja     L141
  mov    -0x4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D81(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D81(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D202(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L130
  lea    D152(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L130
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L130
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L130
  lea    D172(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L130
  lea    D141(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L130
  lea    D109(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <pstreamInqByteorder@plt>
  test   %eax,%eax
  je     L89
  cmp    $0x1,%eax
  je     L126
  jmp    L25
L89:
  lea    D167(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L23
L126:
  lea    D49(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L23
L25:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <pstreamInqByteorder@plt>
  mov    %eax,%esi
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L23:
  jmp    L130
  lea    D181(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <pstreamInqByteorder@plt>
  test   %eax,%eax
  je     L75
  cmp    $0x1,%eax
  je     L169
  jmp    L97
L75:
  lea    D167(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L208
L169:
  lea    D49(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L208
L97:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <pstreamInqByteorder@plt>
  mov    %eax,%esi
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L208:
  jmp    L130
  lea    D130(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <pstreamInqByteorder@plt>
  test   %eax,%eax
  je     L209
  cmp    $0x1,%eax
  je     L101
  jmp    L87
L209:
  lea    D167(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L237
L101:
  lea    D49(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L237
L87:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <pstreamInqByteorder@plt>
  mov    %eax,%esi
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L237:
  jmp    L130
L141:
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D201(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L130:
  mov    $0xa,%edi
  call   <putchar@plt>
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D202
data_type: string
name: extract_symbolic_data
arguments: tag: D152
data_type: string
name: extract_symbolic_data
arguments: tag: D97
data_type: string
name: extract_symbolic_data
arguments: tag: D64
data_type: string
name: extract_symbolic_data
arguments: tag: D172
data_type: string
name: extract_symbolic_data
arguments: tag: D141
data_type: string
name: extract_symbolic_data
arguments: tag: D109
data_type: string
name: extract_symbolic_data
arguments: tag: D167
data_type: string
name: extract_symbolic_data
arguments: tag: D49
data_type: string
name: extract_symbolic_data
arguments: tag: D79
data_type: string
name: extract_symbolic_data
arguments: tag: D181
data_type: string
name: extract_symbolic_data
arguments: tag: D130
data_type: string
name: extract_symbolic_data
arguments: tag: D201
data_type: string

tool: D202:   GRIB data

tool: D152:   GRIB2 data

tool: D97:   netCDF data

tool: D64:   netCDF2 data

tool: D172:   netCDF4 data

tool: D141:   netCDF4 classic data

tool: D109:   SERVICE data

tool: D167:   byteorder is BIGENDIAN

tool: D49:   byteorder is LITTLEENDIAN

tool: D79:   byteorder %d undefined


tool: D181:   EXTRA data

tool: D130:   IEG data

tool: D201:   unsupported filetype %d


assistant: ```c
void filedes(int streamID) {
  int filetype;
  printf("\n");
  filetype = pstreamInqFiletype(streamID);
  switch (filetype) {
  case 1:
    printf("  GRIB data\n");
    break;
  case 2:
    printf("  GRIB2 data\n");
    break;
  case 3:
    printf("  netCDF data\n");
    break;
  case 4:
    printf("  netCDF2 data\n");
    break;
  case 5:
    printf("  netCDF4 data\n");
    break;
  case 6:
    printf("  netCDF4 classic data\n");
    break;
  case 7:
    printf("  SERVICE data\n");
    switch (pstreamInqByteorder(streamID)) {
    case 0:
      printf("  byteorder is BIGENDIAN\n");
      break;
    case 1:
      printf("  byteorder is LITTLEENDIAN\n");
      break;
    default:
      printf("  byteorder %d undefined\n", pstreamInqByteorder(streamID));
      break;
    }
    break;
  case 8:
    printf("  EXTRA data\n");
    switch (pstreamInqByteorder(streamID)) {
    case 0:
      printf("  byteorder is BIGENDIAN\n");
      break;
    case 1:
      printf("  byteorder is LITTLEENDIAN\n");
      break;
    default:
      printf("  byteorder %d undefined\n", pstreamInqByteorder(streamID));
      break;
    }
    break;
  case 9:
    printf("  IEG data\n");
    switch (pstreamInqByteorder(streamID)) {
    case 0:
      printf("  byteorder is BIGENDIAN\n");
      break;
    case 1:
      printf("  byteorder is LITTLEENDIAN\n");
      break;
    default:
      printf("  byteorder %d undefined\n", pstreamInqByteorder(streamID));
      break;
    }
    break;
  default:
    printf("  unsupported filetype %d\n", filetype);
    break;
  }
  printf("\n");
}
```