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

```asm
<showUsage>:
  endbr64
  push   %rbp
  lea    D173(%rip),%r9
  xor    %eax,%eax
  lea    D95(%rip),%r8
  lea    D177(%rip),%rcx
  lea    D77(%rip),%rdx
  mov    $0x1,%edi
  lea    D102(%rip),%rsi
  lea    D42(%rip),%rbp
  call   <writeVerbose@plt>
  lea    D38(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D85(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D138(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D30(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  mov    %rbp,%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D156(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  mov    %rbp,%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D59(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D154(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D52(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  mov    %rbp,%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D47(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D201(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  mov    %rbp,%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D205(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  xor    %eax,%eax
  mov    $0x1,%edi
  lea    D110(%rip),%rsi
  call   <writeVerbose@plt>
  mov    %rbp,%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D96(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D17(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  mov    %rbp,%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D91(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <writeVerbose@plt>
  lea    D70(%rip),%rsi
  xor    %eax,%eax
  pop    %rbp
  mov    $0x1,%edi
  jmp    1050 <writeVerbose@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D173
datatype: string
name: retrieve_data
arguments: tag: D95
datatype: string
name: retrieve_data
arguments: tag: D177
datatype: string
name: retrieve_data
arguments: tag: D77
datatype: string
name: retrieve_data
arguments: tag: D102
datatype: string
name: retrieve_data
arguments: tag: D42
datatype: string
name: retrieve_data
arguments: tag: D38
datatype: string
name: retrieve_data
arguments: tag: D85
datatype: string
name: retrieve_data
arguments: tag: D138
datatype: string
name: retrieve_data
arguments: tag: D30
datatype: string
name: retrieve_data
arguments: tag: D156
datatype: string
name: retrieve_data
arguments: tag: D59
datatype: string
name: retrieve_data
arguments: tag: D154
datatype: string
name: retrieve_data
arguments: tag: D52
datatype: string
name: retrieve_data
arguments: tag: D47
datatype: string
name: retrieve_data
arguments: tag: D201
datatype: string
name: retrieve_data
arguments: tag: D205
datatype: string
name: retrieve_data
arguments: tag: D110
datatype: string
name: retrieve_data
arguments: tag: D96
datatype: string
name: retrieve_data
arguments: tag: D17
datatype: string
name: retrieve_data
arguments: tag: D91
datatype: string
name: retrieve_data
arguments: tag: D70
datatype: string

tool: D173: Brute force module for IMAP sessions

tool: D95: pMonkey <pmonkey@foofus.net>

tool: D177: 2.0

tool: D77: imap.mod

tool: D102: %s (%s) %s :: %s


tool: 

tool: D38: Available module options:

tool: D85:   TAG:? (Default: gerg)

tool: D138:   AUTH:? (Authentication Type (LOGIN/PLAIN/NTLM). Default: automatic)

tool: D30:   DOMAIN:? [optional]

tool: D156: Usage example: "-M imap -m TAG:A0001 -m AUTH:PLAIN

tool: D59: The DOMAIN option should supply the specified domain appropriately,

tool: D154: regardless of authentication type. The domain can also be supplied 

tool: D52: via the username field, but the format appears to differ by auth type.

tool: D47: Example 1: NTLM authentication with DOMAIN option

tool: D201:    "medusa -M imap -m AUTH:NTLM -m DOMAIN:FOODOM -h host -u foo -p bar"

tool: D205: Example 2: NTLM authentication with domain via username

tool: D110:    "medusa -M imap -m AUTH:NTLM -h host -u foo@domain -p bar"

tool: D96: * If no domain is specified when using NTLM authentication, the server

tool: D17: supplied value will be used.

tool: D91: Example 3: LOGIN authentication with domain via username

tool: D70:    "medusa -M imap -m AUTH:LOGIN -h host -u 'domain\\foo' -p bar"

assistant: ```c
void showUsage() {
  writeVerbose(1, "%s (%s) %s :: %s\n", "imap.mod", "2.0", "pMonkey <pmonkey@foofus.net>", "Brute force module for IMAP sessions");
  writeVerbose(1, "Available module options:");
  writeVerbose(1, "  TAG:? (Default: gerg)");
  writeVerbose(1, "  AUTH:? (Authentication Type (LOGIN/PLAIN/NTLM). Default: automatic)");
  writeVerbose(1, "  DOMAIN:? [optional]");
  writeVerbose(1, "");
  writeVerbose(1, "Usage example: \"-M imap -m TAG:A0001 -m AUTH:PLAIN");
  writeVerbose(1, "");
  writeVerbose(1, "The DOMAIN option should supply the specified domain appropriately,");
  writeVerbose(1, "regardless of authentication type. The domain can also be supplied ");
  writeVerbose(1, "via the username field, but the format appears to differ by auth type.");
  writeVerbose(1, "");
  writeVerbose(1, "Example 1: NTLM authentication with DOMAIN option");
  writeVerbose(1, "   \"medusa -M imap -m AUTH:NTLM -m DOMAIN:FOODOM -h host -u foo -p bar\"");
  writeVerbose(1, "");
  writeVerbose(1, "Example 2: NTLM authentication with domain via username");
  writeVerbose(1, "   \"medusa -M imap -m AUTH:NTLM -h host -u foo@domain -p bar\"");
  writeVerbose(1, "");
  writeVerbose(1, "* If no domain is specified when using NTLM authentication, the server");
  writeVerbose(1, "supplied value will be used.");
  writeVerbose(1, "");
  writeVerbose(1, "Example 3: LOGIN authentication with domain via username");
  writeVerbose(1, "   \"medusa -M imap -m AUTH:LOGIN -h host -u 'domain\\\\foo' -p bar\"");
}
```