user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  sub    $0x8,%rsp
  cmp    $0x2,%edi
  je     L9
  lea    D351(%rip),%rdi
  call   <err_quit@plt>
L9:
  lea    D40(%rip),%rdi
  call   <printf@plt>
  lea    D203(%rip),%rdi
  call   <printf@plt>
  lea    D407(%rip),%rdi
  call   <printf@plt>
  lea    D495(%rip),%rdi
  call   <printf@plt>
  lea    D109(%rip),%rdi
  call   <printf@plt>
  lea    D505(%rip),%rdi
  call   <printf@plt>
  lea    D346(%rip),%rdi
  call   <printf@plt>
  lea    D320(%rip),%rdi
  call   <printf@plt>
  lea    D252(%rip),%rdi
  call   <printf@plt>
  lea    D18(%rip),%rdi
  call   <printf@plt>
  lea    D388(%rip),%rdi
  call   <printf@plt>
  lea    D90(%rip),%rdi
  call   <printf@plt>
  lea    D507(%rip),%rdi
  call   <printf@plt>
  lea    D356(%rip),%rdi
  call   <printf@plt>
  lea    D402(%rip),%rdi
  call   <printf@plt>
  lea    D511(%rip),%rdi
  call   <printf@plt>
  lea    D385(%rip),%rdi
  call   <printf@plt>
  lea    D246(%rip),%rdi
  call   <printf@plt>
  lea    D527(%rip),%rdi
  call   <printf@plt>
  lea    D235(%rip),%rdi
  call   <printf@plt>
  lea    D91(%rip),%rdi
  call   <printf@plt>
  lea    D519(%rip),%rdi
  call   <printf@plt>
  lea    D532(%rip),%rdi
  call   <printf@plt>
  lea    D491(%rip),%rdi
  call   <printf@plt>
  lea    D264(%rip),%rdi
  call   <printf@plt>
  lea    D296(%rip),%rdi
  call   <printf@plt>
  lea    D349(%rip),%rdi
  call   <printf@plt>
  lea    D188(%rip),%rdi
  call   <printf@plt>
  lea    D211(%rip),%rdi
  call   <printf@plt>
  lea    D231(%rip),%rdi
  call   <printf@plt>
  lea    D176(%rip),%rdi
  call   <printf@plt>
  lea    D164(%rip),%rdi
  call   <printf@plt>
  lea    D294(%rip),%rdi
  call   <printf@plt>
  lea    D4(%rip),%rdi
  call   <printf@plt>
  lea    D438(%rip),%rdi
  call   <printf@plt>
  lea    D226(%rip),%rdi
  call   <printf@plt>
  lea    D237(%rip),%rdi
  call   <printf@plt>
  lea    D220(%rip),%rdi
  call   <printf@plt>
  lea    D275(%rip),%rdi
  call   <printf@plt>
  lea    D6(%rip),%rdi
  call   <printf@plt>
  lea    D110(%rip),%rdi
  call   <printf@plt>
  lea    D62(%rip),%rdi
  call   <printf@plt>
  lea    D487(%rip),%rdi
  call   <printf@plt>
  lea    D331(%rip),%rdi
  call   <printf@plt>
  lea    D353(%rip),%rdi
  call   <printf@plt>
  lea    D473(%rip),%rdi
  call   <printf@plt>
  lea    D347(%rip),%rdi
  call   <printf@plt>
  lea    D389(%rip),%rdi
  call   <printf@plt>
  lea    D452(%rip),%rdi
  call   <printf@plt>
  lea    D173(%rip),%rdi
  call   <printf@plt>
  lea    D479(%rip),%rdi
  call   <printf@plt>
  lea    D180(%rip),%rdi
  call   <printf@plt>
  lea    D181(%rip),%rdi
  call   <printf@plt>
  lea    D364(%rip),%rdi
  call   <printf@plt>
  xor    %edi,%edi
  call   <exit@plt>
  xor    %eax,%eax
  add    $0x8,%rsp
  ret
```

tool_calls: name: parse_data
arguments: tag: D351
datatype: string
name: parse_data
arguments: tag: D40
datatype: string
name: parse_data
arguments: tag: D203
datatype: string
name: parse_data
arguments: tag: D407
datatype: string
name: parse_data
arguments: tag: D495
datatype: string
name: parse_data
arguments: tag: D109
datatype: string
name: parse_data
arguments: tag: D505
datatype: string
name: parse_data
arguments: tag: D346
datatype: string
name: parse_data
arguments: tag: D320
datatype: string
name: parse_data
arguments: tag: D252
datatype: string
name: parse_data
arguments: tag: D18
datatype: string
name: parse_data
arguments: tag: D388
datatype: string
name: parse_data
arguments: tag: D90
datatype: string
name: parse_data
arguments: tag: D507
datatype: string
name: parse_data
arguments: tag: D356
datatype: string
name: parse_data
arguments: tag: D402
datatype: string
name: parse_data
arguments: tag: D511
datatype: string
name: parse_data
arguments: tag: D385
datatype: string
name: parse_data
arguments: tag: D246
datatype: string
name: parse_data
arguments: tag: D527
datatype: string
name: parse_data
arguments: tag: D235
datatype: string
name: parse_data
arguments: tag: D91
datatype: string
name: parse_data
arguments: tag: D519
datatype: string
name: parse_data
arguments: tag: D532
datatype: string
name: parse_data
arguments: tag: D491
datatype: string
name: parse_data
arguments: tag: D264
datatype: string
name: parse_data
arguments: tag: D296
datatype: string
name: parse_data
arguments: tag: D349
datatype: string
name: parse_data
arguments: tag: D188
datatype: string
name: parse_data
arguments: tag: D211
datatype: string
name: parse_data
arguments: tag: D231
datatype: string
name: parse_data
arguments: tag: D176
datatype: string
name: parse_data
arguments: tag: D164
datatype: string
name: parse_data
arguments: tag: D294
datatype: string
name: parse_data
arguments: tag: D4
datatype: string
name: parse_data
arguments: tag: D438
datatype: string
name: parse_data
arguments: tag: D226
datatype: string
name: parse_data
arguments: tag: D237
datatype: string
name: parse_data
arguments: tag: D220
datatype: string
name: parse_data
arguments: tag: D275
datatype: string
name: parse_data
arguments: tag: D6
datatype: string
name: parse_data
arguments: tag: D110
datatype: string
name: parse_data
arguments: tag: D62
datatype: string
name: parse_data
arguments: tag: D487
datatype: string
name: parse_data
arguments: tag: D331
datatype: string
name: parse_data
arguments: tag: D353
datatype: string
name: parse_data
arguments: tag: D473
datatype: string
name: parse_data
arguments: tag: D347
datatype: string
name: parse_data
arguments: tag: D389
datatype: string
name: parse_data
arguments: tag: D452
datatype: string
name: parse_data
arguments: tag: D173
datatype: string
name: parse_data
arguments: tag: D479
datatype: string
name: parse_data
arguments: tag: D180
datatype: string
name: parse_data
arguments: tag: D181
datatype: string
name: parse_data
arguments: tag: D364
datatype: string

tool: D351: usage: a.out <dirname>

tool: D40: no symbol for ARG_MAX


tool: D203: no symbol for _SC_ARG_MAX


tool: D407: no symbol for ATEXIT_MAX


tool: D495: no symbol for _SC_ATEXIT_MAX


tool: D109: no symbol for CHARCLASS_NAME_MAX


tool: D505: no symbol for _SC_CHARCLASS_NAME_MAX


tool: D346: no symbol for CHILD_MAX


tool: D320: no symbol for _SC_CHILD_MAX


tool: D252: no symbol for CLOCKTICKSPERSECOND


tool: D18: no symbol for _SC_CLK_TCK


tool: D388: no symbol for COLL_WEIGHTS_MAX


tool: D90: no symbol for _SC_COLL_WEIGHTS_MAX


tool: D507: no symbol for HOST_NAME_MAX


tool: D356: no symbol for _SC_HOST_NAME_MAX


tool: D402: no symbol for IOV_MAX


tool: D511: no symbol for _SC_IOV_MAX


tool: D385: no symbol for LINE_MAX


tool: D246: no symbol for _SC_LINE_MAX


tool: D527: no symbol for LOGIN_NAME_MAX


tool: D235: no symbol for _SC_LOGIN_NAME_MAX


tool: D91: no symbol for NGROUPS_MAX


tool: D519: no symbol for _SC_NGROUPS_MAX


tool: D532: no symbol for OPEN_MAX


tool: D491: no symbol for _SC_OPEN_MAX


tool: D264: no symbol for PAGESIZE


tool: D296: no symbol for _SC_PAGESIZE


tool: D349: no symbol for PAGE_SIZE


tool: D188: no symbol for _SC_PAGE_SIZE


tool: D211: no symbol for RE_DUP_MAX


tool: D231: no symbol for _SC_RE_DUP_MAX


tool: D176: no symbol for STREAM_MAX


tool: D164: no symbol for _SC_STREAM_MAX


tool: D294: no symbol for SYMLOOP_MAX


tool: D4: no symbol for _SC_SYMLOOP_MAX


tool: D438: no symbol for TTY_NAME_MAX


tool: D226: no symbol for _SC_TTY_NAME_MAX


tool: D237: no symbol for TZNAME_MAX


tool: D220: no symbol for _SC_TZNAME_MAX


tool: D275: no symbol for MAX_CANON


tool: D6: no symbol for _PC_MAX_CANON


tool: D110: no symbol for MAX_INPUT


tool: D62: no symbol for _PC_MAX_INPUT


tool: D487: no symbol for FILESIZEBITS


tool: D331: no symbol for _PC_FILESIZEBITS


tool: D353: no symbol for LINK_MAX


tool: D473: no symbol for _PC_LINK_MAX


tool: D347: no symbol for NAME_MAX


tool: D389: no symbol for _PC_NAME_MAX


tool: D452: no symbol for PATH_MAX


tool: D173: no symbol for _PC_PATH_MAX


tool: D479: no symbol for PIPE_BUF


tool: D180: no symbol for _PC_PIPE_BUF


tool: D181: no symbol for SYMLINK_MAX


tool: D364: no symbol for _PC_SYMLINK_MAX


assistant: ```c
int main(int argc, char *argv[]) {
  if (argc != 2)
    err_quit("usage: a.out <dirname>");
  printf("no symbol for ARG_MAX\n");
  printf("no symbol for _SC_ARG_MAX\n");
  printf("no symbol for ATEXIT_MAX\n");
  printf("no symbol for _SC_ATEXIT_MAX\n");
  printf("no symbol for CHARCLASS_NAME_MAX\n");
  printf("no symbol for _SC_CHARCLASS_NAME_MAX\n");
  printf("no symbol for CHILD_MAX\n");
  printf("no symbol for _SC_CHILD_MAX\n");
  printf("no symbol for CLOCKTICKSPERSECOND\n");
  printf("no symbol for _SC_CLK_TCK\n");
  printf("no symbol for COLL_WEIGHTS_MAX\n");
  printf("no symbol for _SC_COLL_WEIGHTS_MAX\n");
  printf("no symbol for HOST_NAME_MAX\n");
  printf("no symbol for _SC_HOST_NAME_MAX\n");
  printf("no symbol for IOV_MAX\n");
  printf("no symbol for _SC_IOV_MAX\n");
  printf("no symbol for LINE_MAX\n");
  printf("no symbol for _SC_LINE_MAX\n");
  printf("no symbol for LOGIN_NAME_MAX\n");
  printf("no symbol for _SC_LOGIN_NAME_MAX\n");
  printf("no symbol for NGROUPS_MAX\n");
  printf("no symbol for _SC_NGROUPS_MAX\n");
  printf("no symbol for OPEN_MAX\n");
  printf("no symbol for _SC_OPEN_MAX\n");
  printf("no symbol for PAGESIZE\n");
  printf("no symbol for _SC_PAGESIZE\n");
  printf("no symbol for PAGE_SIZE\n");
  printf("no symbol for _SC_PAGE_SIZE\n");
  printf("no symbol for RE_DUP_MAX\n");
  printf("no symbol for _SC_RE_DUP_MAX\n");
  printf("no symbol for STREAM_MAX\n");
  printf("no symbol for _SC_STREAM_MAX\n");
  printf("no symbol for SYMLOOP_MAX\n");
  printf("no symbol for _SC_SYMLOOP_MAX\n");
  printf("no symbol for TTY_NAME_MAX\n");
  printf("no symbol for _SC_TTY_NAME_MAX\n");
  printf("no symbol for TZNAME_MAX\n");
  printf("no symbol for _SC_TZNAME_MAX\n");
  printf("no symbol for MAX_CANON\n");
  printf("no symbol for _PC_MAX_CANON\n");
  printf("no symbol for MAX_INPUT\n");
  printf("no symbol for _PC_MAX_INPUT\n");
  printf("no symbol for FILESIZEBITS\n");
  printf("no symbol for _PC_FILESIZEBITS\n");
  printf("no symbol for LINK_MAX\n");
  printf("no symbol for _PC_LINK_MAX\n");
  printf("no symbol for NAME_MAX\n");
  printf("no symbol for _PC_NAME_MAX\n");
  printf("no symbol for PATH_MAX\n");
  printf("no symbol for _PC_PATH_MAX\n");
  printf("no symbol for PIPE_BUF\n");
  printf("no symbol for _PC_PIPE_BUF\n");
  printf("no symbol for SYMLINK_MAX\n");
  printf("no symbol for _PC_SYMLINK_MAX\n");
  exit(0);
}
```