user: What is the c source code of the assembly code below?

```asm
<PrintHelp>:
  endbr64
  push   %rbx
  mov    %edi,%ebx
  lea    D41(%rip),%rdi
  call   <puts@plt>
  test   %ebx,%ebx
  je     L0
  lea    D54(%rip),%rcx
  lea    D31(%rip),%rdx
  pop    %rbx
  lea    D17(%rip),%rsi
  lea    D16(%rip),%rdi
  jmp    1070 <printf@plt>
  nopl   0x0(%rax)
L0:
  lea    D19(%rip),%rdi
  pop    %rbx
  jmp    1060 <puts@plt>
```

tool_calls: name: read_data
arguments: tag: D41
datatype: string
name: read_data
arguments: tag: D54
datatype: string
name: read_data
arguments: tag: D31
datatype: string
name: read_data
arguments: tag: D17
datatype: string
name: read_data
arguments: tag: D16
datatype: string
name: read_data
arguments: tag: D19
datatype: string

tool: D41:  SGFC V1.18  - Smart Game Format Syntax Checker & Converter
               Copyright (C) 1996-2018 by Arno Hollosi
               Email: <ahollosi@xmp.net>
 ----------------------------------------------------------

tool: D54:     -n  ... delete empty nodes
    -o  ... delete obsolete properties
    -p  ... write pass moves as '[tt]' if possible
    -r  ... restrictive checking
    -s  ... split game collection into single files
    -t  ... do not insert any soft linebreaks into text values
    -u  ... delete unknown properties
    -v  ... correct variation level and root moves
    -w  ... disable warning messages
    -yP ... delete property P (P = property id)
    -z  ... reverse ordering of variations

tool: D31:     -i  ... interactive mode (faulty game-info values only)
    -k  ... keep header in front of SGF data
    -lx ... x = 1,2,3,4: a hard linebreak is
              1 - any linebreak encountered (default)
              2 - any linebreak not preceeded by a space (MGT)
              3 - two linebreaks in a row
              4 - paragraph style (ISHI format, MFGO)
    -L  ... try to keep linebreaks at the end of nodes
    -m  ... delete markup on current move


tool: D17:  sgfc [options] infile [outfile]
 Options:
    -h  ... print this help message
    -bx ... x = 1,2,3: beginning of SGF data is detected by
              1 - sophisticated search algorithm (default)
              2 - first occurence of '(;'
              3 - first occurence of '('
    -c  ... write file even if a critical error occurs
    -dn ... n = number : disable message number -n-
    -e  ... expand compressed point lists
    -g  ... print game signature (Go GM[1] games only)


tool: D16: %s%s%s


tool: D19:  'sgfc -h' for help on options

assistant: ```c
void PrintHelp(int everything) {
  puts(" SGFC V1.18  - Smart Game Format Syntax Checker & Converter\n"
       "               Copyright (C) 1996-2018 by Arno Hollosi\n"
       "               Email: <ahollosi@xmp.net>\n"
       " ----------------------------------------------------------");
  if (everything)
    printf("%s%s%s\n",
           " sgfc [options] infile [outfile]\n"
           " Options:\n"
           "    -h  ... print this help message\n"
           "    -bx ... x = 1,2,3: beginning of SGF data is detected by\n"
           "              1 - sophisticated search algorithm (default)\n"
           "              2 - first occurence of '(;'\n"
           "              3 - first occurence of '('\n"
           "    -c  ... write file even if a critical error occurs\n"
           "    -dn ... n = number : disable message number -n-\n"
           "    -e  ... expand compressed point lists\n"
           "    -g  ... print game signature (Go GM[1] games only)\n",
           "    -i  ... interactive mode (faulty game-info values only)\n"
           "    -k  ... keep header in front of SGF data\n"
           "    -lx ... x = 1,2,3,4: a hard linebreak is\n"
           "              1 - any linebreak encountered (default)\n"
           "              2 - any linebreak not preceeded by a space (MGT)\n"
           "              3 - two linebreaks in a row\n"
           "              4 - paragraph style (ISHI format, MFGO)\n"
           "    -L  ... try to keep linebreaks at the end of nodes\n"
           "    -m  ... delete markup on current move\n",
           "    -n  ... delete empty nodes\n"
           "    -o  ... delete obsolete properties\n"
           "    -p  ... write pass moves as '[tt]' if possible\n"
           "    -r  ... restrictive checking\n"
           "    -s  ... split game collection into single files\n"
           "    -t  ... do not insert any soft linebreaks into text values\n"
           "    -u  ... delete unknown properties\n"
           "    -v  ... correct variation level and root moves\n"
           "    -w  ... disable warning messages\n"
           "    -yP ... delete property P (P = property id)\n"
           "    -z  ... reverse ordering of variations");
  else
    puts(" 'sgfc -h' for help on options");
}
```