user: Translate the below assembly code into C programming language:

```asm
<outputProgramHelp>:
  endbr64
  push   %rbp
  lea    D21(%rip),%rsi
  mov    %rdi,%rbp
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D119(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D207(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D144(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D139(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D200(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D5(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D44(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D184(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D40(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D41(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D104(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D218(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D80(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D69(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D226(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D186(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D89(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D62(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D175(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D162(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D47(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D219(%rip),%rsi
  pop    %rbp
  jmp    1050 <fprintf@plt>
```

tool_calls: name: parse_data
arguments: tag: D21
data_type: string
name: parse_data
arguments: tag: D119
data_type: string
name: parse_data
arguments: tag: D207
data_type: string
name: parse_data
arguments: tag: D144
data_type: string
name: parse_data
arguments: tag: D139
data_type: string
name: parse_data
arguments: tag: D200
data_type: string
name: parse_data
arguments: tag: D5
data_type: string
name: parse_data
arguments: tag: D44
data_type: string
name: parse_data
arguments: tag: D184
data_type: string
name: parse_data
arguments: tag: D40
data_type: string
name: parse_data
arguments: tag: D41
data_type: string
name: parse_data
arguments: tag: D104
data_type: string
name: parse_data
arguments: tag: D218
data_type: string
name: parse_data
arguments: tag: D80
data_type: string
name: parse_data
arguments: tag: D69
data_type: string
name: parse_data
arguments: tag: D226
data_type: string
name: parse_data
arguments: tag: D186
data_type: string
name: parse_data
arguments: tag: D89
data_type: string
name: parse_data
arguments: tag: D62
data_type: string
name: parse_data
arguments: tag: D175
data_type: string
name: parse_data
arguments: tag: D162
data_type: string
name: parse_data
arguments: tag: D47
data_type: string
name: parse_data
arguments: tag: D219
data_type: string

tool: D21: 
RTL-Wx Weather Data Monitoring Software



tool: D119: This program attempts to collect data from 433Mhz wireless weather sensors


tool: D207: or an Oregon Scientific weather station connected through a serial port.



tool: D144: Commands:


tool: D139:              h  - help (this message)


tool: D200:              a  - Display Action Scheduler Info


tool: D5:              c  - Process configuration file


tool: D44:              d  - Show debugging statistics


tool: D184:              e  - Show energy data (kilowatts) for last 15 mins


tool: D40:              f  - invoke file parser - to replace tags w/data


tool: D41:              i  - Show config info


tool: D104:              l  - clear log file (rtl-wx.log)


tool: D218:              m  - show historical max/min data


tool: D80:              n  - clear historical max/min data


tool: D69:              r  - reset sensor lock codes and clear timeout counts


tool: D226:              s  - Save data snapshot now


tool: D186:              t  - Toggle raw sensor message display mode


tool: D89:              u  - Initiate FTP upload


tool: D62:              v  - (not implemented) Trim CSV files (older entries removed


tool: D175:              w  - Save webcam snapshot


tool: D162:              q  - quit client (server stays running)


tool: D47:             ESC - Kill server (and quit client)


tool: D219:             <Any other key shows current data>


assistant: ```c
void outputProgramHelp(FILE *fd) {
  fprintf(fd, "\nRTL-Wx Weather Data Monitoring Software\n\n");
  fprintf(fd, "This program attempts to collect data from 433Mhz wireless weather sensors\n");
  fprintf(fd, "or an Oregon Scientific weather station connected through a serial port.\n\n");
  fprintf(fd, "Commands:\n");
  fprintf(fd, "             h  - help (this message)\n");
  fprintf(fd, "             a  - Display Action Scheduler Info\n");
  fprintf(fd, "             c  - Process configuration file\n");
  fprintf(fd, "             d  - Show debugging statistics\n");
  fprintf(fd, "             e  - Show energy data (kilowatts) for last 15 mins\n");
  fprintf(fd, "             f  - invoke file parser - to replace tags w/data\n");
  fprintf(fd, "             i  - Show config info\n");
  fprintf(fd, "             l  - clear log file (rtl-wx.log)\n");
  fprintf(fd, "             m  - show historical max/min data\n");
  fprintf(fd, "             n  - clear historical max/min data\n");
  fprintf(fd, "             r  - reset sensor lock codes and clear timeout counts\n");
  fprintf(fd, "             s  - Save data snapshot now\n");
  fprintf(fd, "             t  - Toggle raw sensor message display mode\n");
  fprintf(fd, "             u  - Initiate FTP upload\n");
  fprintf(fd, "             v  - (not implemented) Trim CSV files (older entries removed\n");
  fprintf(fd, "             w  - Save webcam snapshot\n");
  fprintf(fd, "             q  - quit client (server stays running)\n");
  fprintf(fd, "            ESC - Kill server (and quit client)\n");
  fprintf(fd, "            <Any other key shows current data>\n");
}
```