user: 请从给定的汇编指令推导出C源代码:

```asm
<print_power_mode_usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D12(%rip),%rdi
  call   <printf@plt>
  lea    D112(%rip),%rdi
  call   <printf@plt>
  lea    D37(%rip),%rdi
  call   <printf@plt>
  lea    D141(%rip),%rdi
  call   <printf@plt>
  lea    D20(%rip),%rdi
  call   <printf@plt>
  lea    D61(%rip),%rdi
  call   <printf@plt>
  lea    D117(%rip),%rdi
  call   <printf@plt>
  lea    D66(%rip),%rdi
  call   <printf@plt>
  lea    D29(%rip),%rdi
  call   <printf@plt>
  lea    D110(%rip),%rdi
  call   <printf@plt>
  lea    D52(%rip),%rdi
  call   <printf@plt>
  lea    D122(%rip),%rdi
  call   <printf@plt>
  lea    D125(%rip),%rdi
  call   <printf@plt>
  lea    D99(%rip),%rdi
  call   <printf@plt>
  lea    D111(%rip),%rdi
  add    $0x8,%rsp
  jmp    1050 <printf@plt>
```

tool_calls: name: parse_data
arguments: tag: D12
type: string
name: parse_data
arguments: tag: D112
type: string
name: parse_data
arguments: tag: D37
type: string
name: parse_data
arguments: tag: D141
type: string
name: parse_data
arguments: tag: D20
type: string
name: parse_data
arguments: tag: D61
type: string
name: parse_data
arguments: tag: D117
type: string
name: parse_data
arguments: tag: D66
type: string
name: parse_data
arguments: tag: D29
type: string
name: parse_data
arguments: tag: D110
type: string
name: parse_data
arguments: tag: D52
type: string
name: parse_data
arguments: tag: D122
type: string
name: parse_data
arguments: tag: D125
type: string
name: parse_data
arguments: tag: D99
type: string
name: parse_data
arguments: tag: D111
type: string

tool: D12: 
Usage : powermode [MODE] [SLEEP_PARAM=1 CTRL MIN_SLEEP MAX_SLEEP]

tool: D112: 
                  [INACT_PARAM=2 INACTTO MIN_AWAKE MAX_AWAKE]

tool: D37: 
Options: MODE :     0 - disable power mode

tool: D141: 
                    1 - periodic DTIM power save mode

tool: D20: 
                    2 - inactivity based power save mode

tool: D61: 
   SLEEP_PARAM:

tool: D117: 
        CTRL:  0 - disable protection frame Tx before PS

tool: D66: 
               1 - enable protection frame Tx before PS

tool: D29: 
        MIN_SLEEP: Minimum sleep duration in microseconds

tool: D110: 
        MAX_SLEEP: Maximum sleep duration in miroseconds

tool: D52: 
   INACT_PARAM: (only for inactivity based power save mode)

tool: D122: 
          INACTTO: Inactivity timeout in miroseconds

tool: D125: 
        MIN_AWAKE: Minimum awake duration in microseconds

tool: D99: 
        MAX_AWAKE: Maximum awake duration in microseconds

tool: D111: 
          empty - get current power mode


assistant: ```c
void print_power_mode_usage(void) {
  printf("\nUsage : powermode [MODE] [SLEEP_PARAM=1 CTRL MIN_SLEEP MAX_SLEEP]");
  printf("\n                  [INACT_PARAM=2 INACTTO MIN_AWAKE MAX_AWAKE]");
  printf("\nOptions: MODE :     0 - disable power mode");
  printf("\n                    1 - periodic DTIM power save mode");
  printf("\n                    2 - inactivity based power save mode");
  printf("\n   SLEEP_PARAM:");
  printf("\n        CTRL:  0 - disable protection frame Tx before PS");
  printf("\n               1 - enable protection frame Tx before PS");
  printf("\n        MIN_SLEEP: Minimum sleep duration in microseconds");
  printf("\n        MAX_SLEEP: Maximum sleep duration in miroseconds");
  printf("\n   INACT_PARAM: (only for inactivity based power save mode)");
  printf("\n          INACTTO: Inactivity timeout in miroseconds");
  printf("\n        MIN_AWAKE: Minimum awake duration in microseconds");
  printf("\n        MAX_AWAKE: Maximum awake duration in microseconds");
  printf("\n          empty - get current power mode\n");
  return;
}
```