#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*/ exit(int);
int /*<<< orphan*/ fputs(char *, int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
void usage(void) {
  fputs("usage: smtpsend [options] [host]\n"
        "options:\n"
        "\t-s senders\tNumber of parallel senders\n"
        "\t-m messages\tSend n messages per connection\n"
        "\t-b bytes\tMessage size in bytes\n"
        "\noperation modes (exactly one is required):\n"
        "\t-n messages\tSend at least n messages\n"
        "\t-t seconds\tRun for n seconds\n"
        "\nmiscellaneous:\n"
        "\t-p port\t\tPort number to connect to\n"
        "\t-F from_address\tSpecify the senders e-mail address\n"
        "\t-T to_address\tSpecify the recipients e-mail address\n"
        "\t-S subject\tSpecify subject of the message\n"
        "\t-v \t\tBe verbose (give twice to show SMTP traffic)\n",
        stderr);
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%esi
lea    0xecc(%rip),%rdi
call   1030 <fputs@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%esi
lea    0xecf(%rip),%rdi
call   1030 <fputs@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [521 x i8] c"usage: smtpsend [options] [host]\0Aoptions:\0A\09-s senders\09Number of parallel senders\0A\09-m messages\09Send n messages per connection\0A\09-b bytes\09Message size in bytes\0A\0Aoperation modes (exactly one is required):\0A\09-n messages\09Send at least n messages\0A\09-t seconds\09Run for n seconds\0A\0Amiscellaneous:\0A\09-p port\09\09Port number to connect to\0A\09-F from_address\09Specify the senders e-mail address\0A\09-T to_address\09Specify the recipients e-mail address\0A\09-S subject\09Specify subject of the message\0A\09-v \09\09Be verbose (give twice to show SMTP traffic)\0A\00"
@stderr = global i32 0
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fputs(i8* getelementptr inbounds ([521 x i8], [521 x i8]* @.str, i64 0, i64 0), i32 %1)
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@.str = [521 x i8] c"usage: smtpsend [options] [host]\0Aoptions:\0A\09-s senders\09Number of parallel senders\0A\09-m messages\09Send n messages per connection\0A\09-b bytes\09Message size in bytes\0A\0Aoperation modes (exactly one is required):\0A\09-n messages\09Send at least n messages\0A\09-t seconds\09Run for n seconds\0A\0Amiscellaneous:\0A\09-p port\09\09Port number to connect to\0A\09-F from_address\09Specify the senders e-mail address\0A\09-T to_address\09Specify the recipients e-mail address\0A\09-S subject\09Specify subject of the message\0A\09-v \09\09Be verbose (give twice to show SMTP traffic)\0A\00"
@stderr = global i32 0
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fputs(i8* getelementptr inbounds ([521 x i8], [521 x i8]* @.str, i64 0, i64 0), i32 %1)
%3 = tail call i32 @exit(i32 1)
unreachable
}