#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*/ _log_stderr(char *, ...);
void mcp_show_usage(void) {
  do {
    _log_stderr(
        "Usage: mcperf [-?hV] [-v verbosity level] [-o output file]"
        "\x0d\x0a"
        "              [-s server] [-p port] [-H] [-t timeout] [-l linger]"
        "\x0d\x0a"
        "              [-b send-buffer] [-B recv-buffer] [-D]"
        "\x0d\x0a"
        "              [-m method] [-e expiry] [-q] [-P prefix]"
        "\x0d\x0a"
        "              [-c client] [-n num-conns] [-N num-calls]"
        "\x0d\x0a"
        "              [-r conn-rate] [-R call-rate] [-z sizes]"
        "\x0d\x0a"
        ""
        "\x0d\x0a"
        "Options:"
        "\x0d\x0a"
        "  -h, --help            : this help"
        "\x0d\x0a"
        "  -V, --version         : show version and exit"
        "\x0d\x0a"
        "  -v, --verbosity=N     : set logging level (default: %d, min: %d, "
        "max: %d)"
        "\x0d\x0a"
        "  -o, --output=S        : set logging file (default: %s)"
        "\x0d\x0a"
        "  -s, --server=S        : set the hostname of the server (default: %s)"
        "\x0d\x0a"
        "  -p, --port=N          : set the port number of the server (default: "
        "%d)"
        "\x0d\x0a"
        "  -H, --print-histogram : print response time histogram"
        "\x0d\x0a"
        "  ...",
        5, 0, 11, "stderr", "localhost", 11211);
  } while (0);
  do {
    _log_stderr("  -t, --timeout=X       : set the connection and response "
                "timeout in sec (default: %s sec)"
                "\x0d\x0a"
                "  -l, --linger=N        : set the linger timeout in sec, when "
                "closing TCP connections (default: %s)"
                "\x0d\x0a"
                "  -b, --send-buffer=N   : set socket send buffer size "
                "(default: %d bytes)"
                "\x0d\x0a"
                "  -B, --recv-buffer=N   : set socket recv buffer size "
                "(default: %d bytes)"
                "\x0d\x0a"
                "  -D, --disable-nodelay : disable tcp nodelay"
                "\x0d\x0a"
                "  ...",
                "0.0", "off", 4096, 16384);
  } while (0);
  do {
    _log_stderr("  -m, --method=M        : set the method to use when issuing "
                "memcached request (default: %s)"
                "\x0d\x0a"
                "  -e, --expiry=N        : set the expiry value in sec for "
                "generated requests (default: %s sec)"
                "\x0d\x0a"
                "  -q, --use-noreply     : set noreply for generated requests"
                "\x0d\x0a"
                "  -P, --prefix=S        : set the prefix of generated keys "
                "(default: %s)"
                "\x0d\x0a"
                "  ...",
                "set", "0", "mcp:");
  } while (0);
  do {
    _log_stderr("  -c, --client=I/N      : set mcperf instance to be I out of "
                "total N instances (default: %d/%d)"
                "\x0d\x0a"
                "  -n, --num-conns=N     : set the number of connections to "
                "create (default: %d)"
                "\x0d\x0a"
                "  -N, --num-calls=N     : set the number of calls to create "
                "on each connection (default: %d)"
                "\x0d\x0a"
                "  -r, --conn-rate=R     : set the connection creation rate "
                "(default: %s conns/sec) "
                "\x0d\x0a"
                "  -R, --call-rate=R     : set the call creation rate "
                "(default: %s calls/sec)"
                "\x0d\x0a"
                "  -z, --sizes=R         : set the distribution for item sizes "
                "(default: %s bytes)"
                "\x0d\x0a"
                "  ...",
                0, 1, 1, 1, "0", "0", "d1");
  } while (0);
  do {
    _log_stderr("Where:"
                "\x0d\x0a"
                "  N is an integer"
                "\x0d\x0a"
                "  X is a real"
                "\x0d\x0a"
                "  S is a string"
                "\x0d\x0a"
                "  M is a method string and is either a 'get', 'gets', "
                "'delete', 'cas', 'set', 'add', 'replace'"
                "\x0d\x0a"
                "  'append', 'prepend', 'incr', 'decr'"
                "\x0d\x0a"
                "  R is the rate written as [D]R1[,R2] where:"
                "\x0d\x0a"
                "  D is the distribution type and is either deterministic 'd', "
                "uniform 'u', or exponential 'e' and if:"
                "\x0d\x0a"
                "  D is ommited or set to 'd', a deterministic interval "
                "specified by parameter R1 is used"
                "\x0d\x0a"
                "  D is set to 'e', an exponential distibution with mean "
                "interval of R1 is used"
                "\x0d\x0a"
                "  D is set to 'u', a uniform distribution over interval [R1, "
                "R2) is used"
                "\x0d\x0a"
                "  R is 0, the next request or connection is created after the "
                "previous one completes"
                "\x0d\x0a"
                "  ");
  } while (0);
}


x86 assembly (clang, -O0):
<mcp_show_usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
jmp    111d <mcp_show_usage+0xd>
lea    0xedc(%rip),%rdi
mov    $0x5,%esi
xor    %edx,%edx
mov    $0xb,%ecx
lea    0x11e2(%rip),%r8
lea    0x11e2(%rip),%r9
movl   $0x2bcb,(%rsp)
mov    $0x0,%al
call   1030 <_log_stderr@plt>
jmp    1151 <mcp_show_usage+0x41>
lea    0x11d2(%rip),%rdi
lea    0x1357(%rip),%rsi
lea    0x1354(%rip),%rdx
mov    $0x1000,%ecx
mov    $0x4000,%r8d
mov    $0x0,%al
call   1030 <_log_stderr@plt>
jmp    117d <mcp_show_usage+0x6d>
lea    0x133a(%rip),%rdi
lea    0x147f(%rip),%rsi
lea    0x1326(%rip),%rdx
lea    0x1475(%rip),%rcx
mov    $0x0,%al
call   1030 <_log_stderr@plt>
jmp    11a5 <mcp_show_usage+0x95>
lea    0x1467(%rip),%rdi
xor    %esi,%esi
mov    $0x1,%r8d
lea    0x12fd(%rip),%r10
lea    0x165d(%rip),%rax
mov    %r8d,%edx
mov    %r8d,%ecx
mov    %r10,%r9
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
mov    $0x0,%al
call   1030 <_log_stderr@plt>
jmp    11e0 <mcp_show_usage+0xd0>
lea    0x163b(%rip),%rdi
mov    $0x0,%al
call   1030 <_log_stderr@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mcp_show_usage>:
push   %rbx
sub    $0x8,%rsp
lea    0xee4(%rip),%rdi
lea    0x11f6(%rip),%r8
lea    0x11f6(%rip),%r9
mov    $0x5,%esi
xor    %edx,%edx
mov    $0xb,%ecx
xor    %eax,%eax
push   $0x2bcb
call   1030 <_log_stderr@plt>
add    $0x10,%rsp
lea    0x11dd(%rip),%rdi
lea    0x1362(%rip),%rsi
lea    0x135f(%rip),%rdx
mov    $0x1000,%ecx
mov    $0x4000,%r8d
xor    %eax,%eax
call   1030 <_log_stderr@plt>
lea    0x134a(%rip),%rdi
lea    0x148f(%rip),%rsi
lea    0x1336(%rip),%rbx
lea    0x1485(%rip),%rcx
mov    %rbx,%rdx
xor    %eax,%eax
call   1030 <_log_stderr@plt>
lea    0x1685(%rip),%r10
lea    0x1472(%rip),%rdi
xor    %esi,%esi
mov    $0x1,%edx
mov    $0x1,%ecx
mov    $0x1,%r8d
mov    %rbx,%r9
xor    %eax,%eax
push   %r10
push   %rbx
call   1030 <_log_stderr@plt>
add    $0x10,%rsp
lea    0x1657(%rip),%rdi
xor    %eax,%eax
pop    %rbx
jmp    1030 <_log_stderr@plt>

LLVM IR (-O0):
@.str = [793 x i8] c"Usage: mcperf [-?hV] [-v verbosity level] [-o output file]\0D\0A [-s server] [-p port] [-H] [-t timeout] [-l linger]\0D\0A [-b send-buffer] [-B recv-buffer] [-D]\0D\0A [-m method] [-e expiry] [-q] [-P prefix]\0D\0A [-c client] [-n num-conns] [-N num-calls]\0D\0A [-r conn-rate] [-R call-rate] [-z sizes]\0D\0A\0D\0AOptions:\0D\0A -h, --help : this help\0D\0A -V, --version : show version and exit\0D\0A -v, --verbosity=N : set logging level (default: %d, min: %d, max: %d)\0D\0A -o, --output=S : set logging file (default: %s)\0D\0A -s, --server=S : set the hostname of the server (default: %s)\0D\0A -p, --port=N : set the port number of the server (default: %d)\0D\0A -H, --print-histogram : print response time histogram\0D\0A ...\00"
@.str.1 = [7 x i8] c"stderr\00"
@.str.2 = [10 x i8] c"localhost\00"
@.str.3 = [396 x i8] c" -t, --timeout=X : set the connection and response timeout in sec (default: %s sec)\0D\0A -l, --linger=N : set the linger timeout in sec, when closing TCP connections (default: %s)\0D\0A -b, --send-buffer=N : set socket send buffer size (default: %d bytes)\0D\0A -B, --recv-buffer=N : set socket recv buffer size (default: %d bytes)\0D\0A -D, --disable-nodelay : disable tcp nodelay\0D\0A ...\00"
@.str.4 = [4 x i8] c"0.0\00"
@.str.5 = [4 x i8] c"off\00"
@.str.6 = [332 x i8] c" -m, --method=M : set the method to use when issuing memcached request (default: %s)\0D\0A -e, --expiry=N : set the expiry value in sec for generated requests (default: %s sec)\0D\0A -q, --use-noreply : set noreply for generated requests\0D\0A -P, --prefix=S : set the prefix of generated keys (default: %s)\0D\0A ...\00"
@.str.7 = [4 x i8] c"set\00"
@.str.8 = [2 x i8] c"0\00"
@.str.9 = [5 x i8] c"mcp:\00"
@.str.10 = [524 x i8] c" -c, --client=I/N : set mcperf instance to be I out of total N instances (default: %d/%d)\0D\0A -n, --num-conns=N : set the number of connections to create (default: %d)\0D\0A -N, --num-calls=N : set the number of calls to create on each connection (default: %d)\0D\0A -r, --conn-rate=R : set the connection creation rate (default: %s conns/sec) \0D\0A -R, --call-rate=R : set the call creation rate (default: %s calls/sec)\0D\0A -z, --sizes=R : set the distribution for item sizes (default: %s bytes)\0D\0A ...\00"
@.str.11 = [3 x i8] c"d1\00"
@.str.12 = [676 x i8] c"Where:\0D\0A N is an integer\0D\0A X is a real\0D\0A S is a string\0D\0A M is a method string and is either a 'get', 'gets', 'delete', 'cas', 'set', 'add', 'replace'\0D\0A 'append', 'prepend', 'incr', 'decr'\0D\0A R is the rate written as [D]R1[,R2] where:\0D\0A D is the distribution type and is either deterministic 'd', uniform 'u', or exponential 'e' and if:\0D\0A D is ommited or set to 'd', a deterministic interval specified by parameter R1 is used\0D\0A D is set to 'e', an exponential distibution with mean interval of R1 is used\0D\0A D is set to 'u', a uniform distribution over interval [R1, R2) is used\0D\0A R is 0, the next request or connection is created after the previous one completes\0D\0A \00"
define void @mcp_show_usage() {
br label %1
1: ; preds = %0
%2 = call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([793 x i8], [793 x i8]* @.str, i64 0, i64 0), i32 5, i32 0, i32 11, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i32 11211)
br label %3
3: ; preds = %1
br label %4
4: ; preds = %3
%5 = call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([396 x i8], [396 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 4096, i32 16384)
br label %6
6: ; preds = %4
br label %7
7: ; preds = %6
%8 = call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([332 x i8], [332 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0))
br label %9
9: ; preds = %7
br label %10
10: ; preds = %9
%11 = call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([524 x i8], [524 x i8]* @.str.10, i64 0, i64 0), i32 0, i32 1, i32 1, i32 1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
br label %12
12: ; preds = %10
br label %13
13: ; preds = %12
%14 = call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([676 x i8], [676 x i8]* @.str.12, i64 0, i64 0))
br label %15
15: ; preds = %13
ret void
}

LLVM IR (-O2):
@.str = [793 x i8] c"Usage: mcperf [-?hV] [-v verbosity level] [-o output file]\0D\0A [-s server] [-p port] [-H] [-t timeout] [-l linger]\0D\0A [-b send-buffer] [-B recv-buffer] [-D]\0D\0A [-m method] [-e expiry] [-q] [-P prefix]\0D\0A [-c client] [-n num-conns] [-N num-calls]\0D\0A [-r conn-rate] [-R call-rate] [-z sizes]\0D\0A\0D\0AOptions:\0D\0A -h, --help : this help\0D\0A -V, --version : show version and exit\0D\0A -v, --verbosity=N : set logging level (default: %d, min: %d, max: %d)\0D\0A -o, --output=S : set logging file (default: %s)\0D\0A -s, --server=S : set the hostname of the server (default: %s)\0D\0A -p, --port=N : set the port number of the server (default: %d)\0D\0A -H, --print-histogram : print response time histogram\0D\0A ...\00"
@.str.1 = [7 x i8] c"stderr\00"
@.str.2 = [10 x i8] c"localhost\00"
@.str.3 = [396 x i8] c" -t, --timeout=X : set the connection and response timeout in sec (default: %s sec)\0D\0A -l, --linger=N : set the linger timeout in sec, when closing TCP connections (default: %s)\0D\0A -b, --send-buffer=N : set socket send buffer size (default: %d bytes)\0D\0A -B, --recv-buffer=N : set socket recv buffer size (default: %d bytes)\0D\0A -D, --disable-nodelay : disable tcp nodelay\0D\0A ...\00"
@.str.4 = [4 x i8] c"0.0\00"
@.str.5 = [4 x i8] c"off\00"
@.str.6 = [332 x i8] c" -m, --method=M : set the method to use when issuing memcached request (default: %s)\0D\0A -e, --expiry=N : set the expiry value in sec for generated requests (default: %s sec)\0D\0A -q, --use-noreply : set noreply for generated requests\0D\0A -P, --prefix=S : set the prefix of generated keys (default: %s)\0D\0A ...\00"
@.str.7 = [4 x i8] c"set\00"
@.str.8 = [2 x i8] c"0\00"
@.str.9 = [5 x i8] c"mcp:\00"
@.str.10 = [524 x i8] c" -c, --client=I/N : set mcperf instance to be I out of total N instances (default: %d/%d)\0D\0A -n, --num-conns=N : set the number of connections to create (default: %d)\0D\0A -N, --num-calls=N : set the number of calls to create on each connection (default: %d)\0D\0A -r, --conn-rate=R : set the connection creation rate (default: %s conns/sec) \0D\0A -R, --call-rate=R : set the call creation rate (default: %s calls/sec)\0D\0A -z, --sizes=R : set the distribution for item sizes (default: %s bytes)\0D\0A ...\00"
@.str.11 = [3 x i8] c"d1\00"
@.str.12 = [676 x i8] c"Where:\0D\0A N is an integer\0D\0A X is a real\0D\0A S is a string\0D\0A M is a method string and is either a 'get', 'gets', 'delete', 'cas', 'set', 'add', 'replace'\0D\0A 'append', 'prepend', 'incr', 'decr'\0D\0A R is the rate written as [D]R1[,R2] where:\0D\0A D is the distribution type and is either deterministic 'd', uniform 'u', or exponential 'e' and if:\0D\0A D is ommited or set to 'd', a deterministic interval specified by parameter R1 is used\0D\0A D is set to 'e', an exponential distibution with mean interval of R1 is used\0D\0A D is set to 'u', a uniform distribution over interval [R1, R2) is used\0D\0A R is 0, the next request or connection is created after the previous one completes\0D\0A \00"
define void @mcp_show_usage() {
%1 = tail call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([793 x i8], [793 x i8]* @.str, i64 0, i64 0), i32 5, i32 0, i32 11, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i32 11211)
%2 = tail call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([396 x i8], [396 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 4096, i32 16384)
%3 = tail call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([332 x i8], [332 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0))
%4 = tail call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([524 x i8], [524 x i8]* @.str.10, i64 0, i64 0), i32 0, i32 1, i32 1, i32 1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
%5 = tail call i32 (i8*, ...) @_log_stderr(i8* getelementptr inbounds ([676 x i8], [676 x i8]* @.str.12, i64 0, i64 0))
ret void
}