#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, char const *);
void usage(const char *cmd) {
  printf("Usage: %s [options] host port\n"
         "\n"
         "Options:\n"
         "  -4                   force IPv4\n"
         "  -6                   force IPv6\n"
         "  -a                   require client authentication\n"
         "  -b                   enable brotli compression\n"
         "  -B                   benchmark mode for measuring sustained "
         "bandwidth. Run\n"
         "                       both endpoints with this option for some "
         "time, then kill\n"
         "                       the client. Server will report the ingress "
         "bandwidth.\n"
         "  -C certificate-file  certificate chain used for client "
         "authentication\n"
         "  -c certificate-file  certificate chain used for server "
         "authentication\n"
         "  -i file              a file to read from and send to the peer "
         "(default: stdin)\n"
         "  -I                   keep send side open after sending all data "
         "(client-only)\n"
         "  -k key-file          specifies the credentials for signing the "
         "certificate\n"
         "  -l log-file          file to log events (incl. traffic secrets)\n"
         "  -n                   negotiates the key exchange method (i.e. wait "
         "for HRR)\n"
         "  -N named-group       named group to be used (default: secp256r1)\n"
         "  -s session-file      file to read/write the session ticket\n"
         "  -S                   require public key exchange when resuming a "
         "session\n"
         "  -E esni-file         file that stores ESNI data generated by "
         "picotls-esni\n"
         "  -e                   when resuming a session, send first 8,192 "
         "bytes of input\n"
         "                       as early data\n"
         "  -r public-key-file   use raw public keys (RFC 7250). When set and "
         "running as a\n"
         "                       client, the argument specifies the public "
         "keys that the\n"
         "                       server is expected to use. When running as a "
         "server, the\n"
         "                       argument is ignored.\n"
         "  -u                   update the traffic key when handshake is "
         "complete\n"
         "  -v                   verify peer using the default certificates\n"
         "  -V CA-root-file      verify peer using the CA Root File\n"
         "  -y cipher-suite      cipher-suite to be used, e.g., "
         "aes128gcmsha256 (default:\n"
         "                       all)\n"
         "  -h                   print this help\n"
         "\n"
         "Supported named groups: secp256r1"
         "\n"
         "Supported signature algorithms: rsa, secp256r1"
         "\n\n",
         cmd);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xed9(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    %rdi,%rsi
lea    0xee6(%rip),%rdi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [2078 x i8] c"Usage: %s [options] host port\0A\0AOptions:\0A -4 force IPv4\0A -6 force IPv6\0A -a require client authentication\0A -b enable brotli compression\0A -B benchmark mode for measuring sustained bandwidth. Run\0A both endpoints with this option for some time, then kill\0A the client. Server will report the ingress bandwidth.\0A -C certificate-file certificate chain used for client authentication\0A -c certificate-file certificate chain used for server authentication\0A -i file a file to read from and send to the peer (default: stdin)\0A -I keep send side open after sending all data (client-only)\0A -k key-file specifies the credentials for signing the certificate\0A -l log-file file to log events (incl. traffic secrets)\0A -n negotiates the key exchange method (i.e. wait for HRR)\0A -N named-group named group to be used (default: secp256r1)\0A -s session-file file to read/write the session ticket\0A -S require public key exchange when resuming a session\0A -E esni-file file that stores ESNI data generated by picotls-esni\0A -e when resuming a session, send first 8,192 bytes of input\0A as early data\0A -r public-key-file use raw public keys (RFC 7250). When set and running as a\0A client, the argument specifies the public keys that the\0A server is expected to use. When running as a server, the\0A argument is ignored.\0A -u update the traffic key when handshake is complete\0A -v verify peer using the default certificates\0A -V CA-root-file verify peer using the CA Root File\0A -y cipher-suite cipher-suite to be used, e.g., aes128gcmsha256 (default:\0A all)\0A -h print this help\0A\0ASupported named groups: secp256r1\0ASupported signature algorithms: rsa, secp256r1\0A\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([2078 x i8], [2078 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [2078 x i8] c"Usage: %s [options] host port\0A\0AOptions:\0A -4 force IPv4\0A -6 force IPv6\0A -a require client authentication\0A -b enable brotli compression\0A -B benchmark mode for measuring sustained bandwidth. Run\0A both endpoints with this option for some time, then kill\0A the client. Server will report the ingress bandwidth.\0A -C certificate-file certificate chain used for client authentication\0A -c certificate-file certificate chain used for server authentication\0A -i file a file to read from and send to the peer (default: stdin)\0A -I keep send side open after sending all data (client-only)\0A -k key-file specifies the credentials for signing the certificate\0A -l log-file file to log events (incl. traffic secrets)\0A -n negotiates the key exchange method (i.e. wait for HRR)\0A -N named-group named group to be used (default: secp256r1)\0A -s session-file file to read/write the session ticket\0A -S require public key exchange when resuming a session\0A -E esni-file file that stores ESNI data generated by picotls-esni\0A -e when resuming a session, send first 8,192 bytes of input\0A as early data\0A -r public-key-file use raw public keys (RFC 7250). When set and running as a\0A client, the argument specifies the public keys that the\0A server is expected to use. When running as a server, the\0A argument is ignored.\0A -u update the traffic key when handshake is complete\0A -v verify peer using the default certificates\0A -V CA-root-file verify peer using the CA Root File\0A -y cipher-suite cipher-suite to be used, e.g., aes128gcmsha256 (default:\0A all)\0A -h print this help\0A\0ASupported named groups: secp256r1\0ASupported signature algorithms: rsa, secp256r1\0A\0A\00"
define void @usage(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([2078 x i8], [2078 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}