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

```asm
<help_menu>:
  endbr64
  push   %rbx
  lea    D119(%rip),%rdi
  mov    %rsi,%rbx
  call   <puts@plt>
  mov    (%rbx),%rdi
  call   <basename@plt>
  lea    D94(%rip),%rdi
  mov    %rax,%rsi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D63(%rip),%rdi
  call   <puts@plt>
  lea    D12(%rip),%rdi
  call   <puts@plt>
  lea    D20(%rip),%rdi
  call   <puts@plt>
  lea    D115(%rip),%rdi
  call   <puts@plt>
  lea    D27(%rip),%rdi
  call   <puts@plt>
  lea    D24(%rip),%rdi
  call   <puts@plt>
  lea    D64(%rip),%rdi
  call   <puts@plt>
  lea    D2(%rip),%rdi
  call   <puts@plt>
  lea    D51(%rip),%rdi
  call   <puts@plt>
  lea    D30(%rip),%rdi
  pop    %rbx
  jmp    1070 <puts@plt>
```

tool_calls: name: retrieve_data
arguments: data_tag: D119
type_infered: string
name: retrieve_data
arguments: data_tag: D94
type_infered: string
name: retrieve_data
arguments: data_tag: D63
type_infered: string
name: retrieve_data
arguments: data_tag: D12
type_infered: string
name: retrieve_data
arguments: data_tag: D20
type_infered: string
name: retrieve_data
arguments: data_tag: D115
type_infered: string
name: retrieve_data
arguments: data_tag: D27
type_infered: string
name: retrieve_data
arguments: data_tag: D24
type_infered: string
name: retrieve_data
arguments: data_tag: D64
type_infered: string
name: retrieve_data
arguments: data_tag: D2
type_infered: string
name: retrieve_data
arguments: data_tag: D51
type_infered: string
name: retrieve_data
arguments: data_tag: D30
type_infered: string

tool: D119: Updateloader 0.2: A upload bootloader software for GNU/linux

tool: D94: Usage: %s -t comname -b bootloader [-e|c|p [ALL|NAND|NOR|SPI]][-k|s filename][-B blocknum]


tool: D63: Options:

tool: D12: 	-b, --bootloader		Update bootloader file name

tool: D20: 	-B, --Block			The number of block

tool: D115: 	-c, --check [ALL|NAND|NOR|SPI]	Check code in Flash/Memory is aviliable 

tool: D27: 	-e, --erase [ALL|NAND|NOR|SPI]	Erase Flash/Memory

tool: D24: 	-k, --kickstart			Update kickstart file name

tool: D64: 	-p, --program			Program in Flash/Memory

tool: D2: 	-s, --stage1			Update stage1 file name

tool: D51: 	-t, --terminal			Chioce which ttyS to open

tool: D30: 	-h, --help			Help for updateloader

assistant: ```c
void help_menu(int argc, char **argv) {
  printf("Updateloader 0.2: A upload bootloader software for GNU/linux\n");
  printf("Usage: %s -t comname -b bootloader "
         "[-e|c|p [ALL|NAND|NOR|SPI]]"
         "[-k|s filename]"
         "[-B blocknum]\n",
         basename(argv[0]));
  printf("Options:\n");
  printf("\t-b, --bootloader\t\tUpdate bootloader file name\n");
  printf("\t-B, --Block\t\t\tThe number of block\n");
  printf("\t-c, --check [ALL|NAND|NOR|SPI]\t"
         "Check code in Flash/Memory is aviliable \n");
  printf("\t-e, --erase [ALL|NAND|NOR|SPI]\tErase Flash/Memory\n");
  printf("\t-k, --kickstart\t\t\tUpdate kickstart file name\n");
  printf("\t-p, --program\t\t\tProgram in Flash/Memory\n");
  printf("\t-s, --stage1\t\t\tUpdate stage1 file name\n");
  printf("\t-t, --terminal\t\t\tChioce which ttyS to open\n");
  printf("\t-h, --help\t\t\tHelp for updateloader\n");
}
```