user: Demonstrate the C code that generates the assembly output below:

```asm
<ipmi_powermonitor_usage>:
  endbr64
  push   %rbx
  lea    D120(%rip),%rbx
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D115(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D54(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D147(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D158(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D168(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D116(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D129(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D56(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D159(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D7(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D23(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D186(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D128(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D98(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D143(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D83(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D133(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  lea    D140(%rip),%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  mov    %rbx,%rsi
  mov    $0x5,%edi
  call   <lprintf@plt>
  pop    %rbx
  ret
```

tool_calls: name: parse_data
arguments: label: D120
datatype: string
name: parse_data
arguments: label: D115
datatype: string
name: parse_data
arguments: label: D54
datatype: string
name: parse_data
arguments: label: D147
datatype: string
name: parse_data
arguments: label: D158
datatype: string
name: parse_data
arguments: label: D168
datatype: string
name: parse_data
arguments: label: D116
datatype: string
name: parse_data
arguments: label: D129
datatype: string
name: parse_data
arguments: label: D56
datatype: string
name: parse_data
arguments: label: D159
datatype: string
name: parse_data
arguments: label: D7
datatype: string
name: parse_data
arguments: label: D23
datatype: string
name: parse_data
arguments: label: D186
datatype: string
name: parse_data
arguments: label: D128
datatype: string
name: parse_data
arguments: label: D98
datatype: string
name: parse_data
arguments: label: D143
datatype: string
name: parse_data
arguments: label: D83
datatype: string
name: parse_data
arguments: label: D133
datatype: string
name: parse_data
arguments: label: D140
datatype: string

tool: 

tool: D115:    powermonitor

tool: D54:       Shows power tracking statistics 

tool: D147:    powermonitor clear cumulativepower

tool: D158:       Reset cumulative power reading

tool: D168:    powermonitor clear peakpower

tool: D116:       Reset peak power reading

tool: D129:    powermonitor powerconsumption

tool: D56:       Displays power consumption in <watt|btuphr>

tool: D159:    powermonitor powerconsumptionhistory <watt|btuphr>

tool: D7:       Displays power consumption history 

tool: D23:    powermonitor getpowerbudget

tool: D186:       Displays power cap in <watt|btuphr>

tool: D128:    powermonitor setpowerbudget <val><watt|btuphr|percent>

tool: D98:       Allows user to set the  power cap in <watt|BTU/hr|percentage>

tool: D143:    powermonitor enablepowercap 

tool: D83:       To enable set power cap

tool: D133:    powermonitor disablepowercap 

tool: D140:       To disable set power cap

assistant: ```c
void ipmi_powermonitor_usage(void) {
  lprintf(5, "");
  lprintf(5, "   powermonitor");
  lprintf(5, "      Shows power tracking statistics ");
  lprintf(5, "");
  lprintf(5, "   powermonitor clear cumulativepower");
  lprintf(5, "      Reset cumulative power reading");
  lprintf(5, "");
  lprintf(5, "   powermonitor clear peakpower");
  lprintf(5, "      Reset peak power reading");
  lprintf(5, "");
  lprintf(5, "   powermonitor powerconsumption");
  lprintf(5, "      Displays power consumption in <watt|btuphr>");
  lprintf(5, "");
  lprintf(5, "   powermonitor powerconsumptionhistory <watt|btuphr>");
  lprintf(5, "      Displays power consumption history ");
  lprintf(5, "");
  lprintf(5, "   powermonitor getpowerbudget");
  lprintf(5, "      Displays power cap in <watt|btuphr>");
  lprintf(5, "");
  lprintf(5, "   powermonitor setpowerbudget <val><watt|btuphr|percent>");
  lprintf(5, "      Allows user to set the  power cap in <watt|BTU/hr|percentage>");
  lprintf(5, "");
  lprintf(5, "   powermonitor enablepowercap ");
  lprintf(5, "      To enable set power cap");
  lprintf(5, "");
  lprintf(5, "   powermonitor disablepowercap ");
  lprintf(5, "      To disable set power cap");
  lprintf(5, "");
}
```