void print_help(const char exec[const restrict 1]) {
  printf(
      "Usage: %s [option_1 option_2 ...] NICKNAME [ALIAS_1 ALIAS_2 ...] \n"
      "NICKNAME is used as the IRC nickname value.\n"
      "If NICKNAME or any ALIAS is found in an event, the program will reply.\n"
      "\nAvailable options:\n"
      "   [--data-filename | -df] FILENAME\n"
      "      Learn content from FILENAME before connecting.\n"
      "      Default: %s.\n"
      "   [--new-data-filename | -ndf] FILENAME\n"
      "      Store new data learned in FILENAME.\n"
      "      Default: value of the --data-filename param.\n"
      "   [--irc-server-addr | -isa] IRC_SERVER_ADDR\n"
      "      Connect to this server address.\n"
      "      Default: %s.\n"
      "   [--irc-server-port | -isp] IRC_SERVER_PORT\n"
      "      Connect to this server port.\n"
      "      Default: %s.\n"
      "   [--irc-server-channel | -isc] IRC_SERVER_CHANNEL\n"
      "      Connect to this server's channel.\n"
      "      Default: %s.\n"
      "   [--irc-username | -iu] USERNAME\n"
      "      Connect using this as 'username' (shown in WHOIS).\n"
      "      Default: %s.\n"
      "   [--irc-realname | -ir] REALNAME\n"
      "      Connect using this as 'realname' (shown in WHOIS).\n"
      "      Default: %s.\n"
      "   [--reply-rate | -rr] REPLY_RATE\n"
      "      Chance to reply to an event (integer, range [0, 100]).\n"
      "      Default: %d.\n",
      exec, "./memory.txt", "irc.foonetic.net", "6667", "#theborghivemind",
      "zeroofone", "Zero of One (bot)", 8);
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xed9(%rip),%rdi
lea    0x1319(%rip),%rdx
lea    0x131f(%rip),%rcx
lea    0x1329(%rip),%r8
lea    0x1327(%rip),%r9
lea    0x1331(%rip),%r10
lea    0x1334(%rip),%rax
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
movl   $0x8,0x10(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
push   %rax
mov    %rdi,%rsi
sub    $0x8,%rsp
lea    0x1366(%rip),%r10
lea    0x1355(%rip),%r11
lea    0xed3(%rip),%rdi
lea    0x1313(%rip),%rdx
lea    0x1319(%rip),%rcx
lea    0x1323(%rip),%r8
lea    0x1321(%rip),%r9
xor    %eax,%eax
push   $0x8
push   %r10
push   %r11
call   1030 <printf@plt>
add    $0x20,%rsp
pop    %rax
ret

LLVM IR (-O0):
@.str = [1095 x i8] c"Usage: %s [option_1 option_2 ...] NICKNAME [ALIAS_1 ALIAS_2 ...] \0ANICKNAME is used as the IRC nickname value.\0AIf NICKNAME or any ALIAS is found in an event, the program will reply.\0A\0AAvailable options:\0A [--data-filename | -df] FILENAME\0A Learn content from FILENAME before connecting.\0A Default: %s.\0A [--new-data-filename | -ndf] FILENAME\0A Store new data learned in FILENAME.\0A Default: value of the --data-filename param.\0A [--irc-server-addr | -isa] IRC_SERVER_ADDR\0A Connect to this server address.\0A Default: %s.\0A [--irc-server-port | -isp] IRC_SERVER_PORT\0A Connect to this server port.\0A Default: %s.\0A [--irc-server-channel | -isc] IRC_SERVER_CHANNEL\0A Connect to this server's channel.\0A Default: %s.\0A [--irc-username | -iu] USERNAME\0A Connect using this as 'username' (shown in WHOIS).\0A Default: %s.\0A [--irc-realname | -ir] REALNAME\0A Connect using this as 'realname' (shown in WHOIS).\0A Default: %s.\0A [--reply-rate | -rr] REPLY_RATE\0A Chance to reply to an event (integer, range [0, 100]).\0A Default: %d.\0A\00"
@.str.1 = [13 x i8] c"./memory.txt\00"
@.str.2 = [17 x i8] c"irc.foonetic.net\00"
@.str.3 = [5 x i8] c"6667\00"
@.str.4 = [17 x i8] c"#theborghivemind\00"
@.str.5 = [10 x i8] c"zeroofone\00"
@.str.6 = [18 x i8] c"Zero of One (bot)\00"
define void @print_help(i8* noalias %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([1095 x i8], [1095 x i8]* @.str, i64 0, i64 0), i8* %3, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 8)
ret void
}

LLVM IR (-O2):
@.str = [1095 x i8] c"Usage: %s [option_1 option_2 ...] NICKNAME [ALIAS_1 ALIAS_2 ...] \0ANICKNAME is used as the IRC nickname value.\0AIf NICKNAME or any ALIAS is found in an event, the program will reply.\0A\0AAvailable options:\0A [--data-filename | -df] FILENAME\0A Learn content from FILENAME before connecting.\0A Default: %s.\0A [--new-data-filename | -ndf] FILENAME\0A Store new data learned in FILENAME.\0A Default: value of the --data-filename param.\0A [--irc-server-addr | -isa] IRC_SERVER_ADDR\0A Connect to this server address.\0A Default: %s.\0A [--irc-server-port | -isp] IRC_SERVER_PORT\0A Connect to this server port.\0A Default: %s.\0A [--irc-server-channel | -isc] IRC_SERVER_CHANNEL\0A Connect to this server's channel.\0A Default: %s.\0A [--irc-username | -iu] USERNAME\0A Connect using this as 'username' (shown in WHOIS).\0A Default: %s.\0A [--irc-realname | -ir] REALNAME\0A Connect using this as 'realname' (shown in WHOIS).\0A Default: %s.\0A [--reply-rate | -rr] REPLY_RATE\0A Chance to reply to an event (integer, range [0, 100]).\0A Default: %d.\0A\00"
@.str.1 = [13 x i8] c"./memory.txt\00"
@.str.2 = [17 x i8] c"irc.foonetic.net\00"
@.str.3 = [5 x i8] c"6667\00"
@.str.4 = [17 x i8] c"#theborghivemind\00"
@.str.5 = [10 x i8] c"zeroofone\00"
@.str.6 = [18 x i8] c"Zero of One (bot)\00"
define void @print_help(i8* noalias %0) {
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([1095 x i8], [1095 x i8]* @.str, i64 0, i64 0), i8* %0, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 8)
ret void
}