user: What would the C source look like for the assembly code provided here:

```asm
<print_sys_cfg_rates_ext_usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D36(%rip),%rdi
  call   <printf@plt>
  lea    D35(%rip),%rdi
  call   <printf@plt>
  lea    D127(%rip),%rdi
  call   <printf@plt>
  lea    D8(%rip),%rdi
  call   <printf@plt>
  lea    D49(%rip),%rdi
  call   <printf@plt>
  lea    D21(%rip),%rdi
  call   <printf@plt>
  lea    D33(%rip),%rdi
  call   <printf@plt>
  lea    D100(%rip),%rdi
  call   <printf@plt>
  lea    D73(%rip),%rdi
  call   <printf@plt>
  lea    D70(%rip),%rdi
  call   <printf@plt>
  lea    D12(%rip),%rdi
  call   <printf@plt>
  lea    D40(%rip),%rdi
  call   <printf@plt>
  lea    D65(%rip),%rdi
  call   <printf@plt>
  lea    D50(%rip),%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D36
datatype: string
name: disassemble_data
arguments: data_label: D35
datatype: string
name: disassemble_data
arguments: data_label: D127
datatype: string
name: disassemble_data
arguments: data_label: D8
datatype: string
name: disassemble_data
arguments: data_label: D49
datatype: string
name: disassemble_data
arguments: data_label: D21
datatype: string
name: disassemble_data
arguments: data_label: D33
datatype: string
name: disassemble_data
arguments: data_label: D100
datatype: string
name: disassemble_data
arguments: data_label: D73
datatype: string
name: disassemble_data
arguments: data_label: D70
datatype: string
name: disassemble_data
arguments: data_label: D12
datatype: string
name: disassemble_data
arguments: data_label: D40
datatype: string
name: disassemble_data
arguments: data_label: D65
datatype: string
name: disassemble_data
arguments: data_label: D50
datatype: string

tool: D36: 
Usage : sys_cfg_rates_ext [rates RATES] [mbrate RATE]


tool: D35: 
If 'Rate' provided, a 'set' is performed else a 'get' is performed

tool: D127: 
RATES is provided as a set of data rates, in unit of 500 kilobits

tool: D8: 
A rate with MSB bit is basic rate, i.e 0x82 is basic rate.


tool: D49: 
Following is the list of supported rates in units of 500 Kbps:

tool: D21: 
Decimal: (2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108)

tool: D33: 
Hex: (0x02, 0x04, 0x0b, 0x16, 0x0C, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6c)

tool: D100: 
Basic rates: (0x82, 0x84, 0x8b, 0x96, 0x8C, 0x92, 0x98, 0xA4, 0xB0, 0xC8, 0xE0, 0xEc)


tool: D73: 
Rates 2, 4, 11 and 22 (in units of 500 Kbps) must be present in either of basic or

tool: D70: 
non-basic rates. If OFDM rates are enabled then 12, 24 and 48 (in units of 500 Kbps)

tool: D12: 
must be present in either basic or non-basic rates

tool: D40: 
Each rate must be separated by a space.

tool: D65: 
rates followed by RATES for setting operational rates.

tool: D50: 
mbrate followed by RATE for setting multicast and broadcast rate.

assistant: ```c
void print_sys_cfg_rates_ext_usage(void) {
  printf("\nUsage : sys_cfg_rates_ext [rates RATES] [mbrate RATE]\n");
  printf("\nIf 'Rate' provided, a 'set' is performed else a 'get' is performed");
  printf("\nRATES is provided as a set of data rates, in unit of 500 kilobits");
  printf("\nA rate with MSB bit is basic rate, i.e 0x82 is basic rate.\n");
  printf("\nFollowing is the list of supported rates in units of 500 Kbps:");
  printf("\nDecimal: (2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108)");
  printf("\nHex: (0x02, 0x04, 0x0b, 0x16, 0x0C, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6c)");
  printf("\nBasic rates: (0x82, 0x84, 0x8b, 0x96, 0x8C, 0x92, 0x98, 0xA4, 0xB0, 0xC8, 0xE0, 0xEc)\n");
  printf("\nRates 2, 4, 11 and 22 (in units of 500 Kbps) must be present in either of basic or");
  printf("\nnon-basic rates. If OFDM rates are enabled then 12, 24 and 48 (in units of 500 Kbps)");
  printf("\nmust be present in either basic or non-basic rates");
  printf("\nEach rate must be separated by a space.");
  printf("\nrates followed by RATES for setting operational rates.");
  printf("\nmbrate followed by RATE for setting multicast and broadcast rate.");
  return;
}
```