#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *);
void usage(FILE *fp, int rc) {
  fprintf(fp, "Usage: tip [-?heonxrwcqt125678] [-s speed] [-w file] "
              "[-p tcpport] [-l device] [device]\n\n"
              "\t-h?\tthis help\n"
              "\t-q\tquiet mode (no helpful messages)\n"
              "\t-1\t1 stop bits (default)\n"
              "\t-2\t2 stop bits\n"
              "\t-5\t5 data bits\n"
              "\t-6\t6 data bits\n"
              "\t-7\t7 data bits\n"
              "\t-8\t8 data bits (default)\n"
              "\t-e\teven parity\n"
              "\t-o\todd parity\n"
              "\t-n\tno parity (default)\n"
              "\t-c\tuse clocal mode (no disconnect)\n"
              "\t-t\ttranslate 5 bit codes to ascii\n"
              "\t-x\tuse software flow (xon/xoff)\n"
              "\t-r\tuse hardware flow (rts/cts)\n"
              "\t-f\tpass xon/xoff flow control to remote\n"
              "\t-s\tbaud rate (default 9600)\n"
              "\t-w\tcapture remote output to local file\n"
              "\t-p\tbind to tcpport instead of using stdin/stdout\n"
              "\t-l\tdevice to use\n"
              "\t-d\tdownload file name\n");
  exit(rc);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xec6(%rip),%rsi
call   1030 <fprintf@plt>
mov    -0xc(%rbp),%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rbx
mov    %esi,%ebx
mov    %rdi,%rcx
lea    0xed3(%rip),%rdi
mov    $0x288,%esi
mov    $0x1,%edx
call   1040 <fwrite@plt>
mov    %ebx,%edi
call   1030 <exit@plt>

LLVM IR (-O0):
@.str = [649 x i8] c"Usage: tip [-?heonxrwcqt125678] [-s speed] [-w file] [-p tcpport] [-l device] [device]\0A\0A\09-h?\09this help\0A\09-q\09quiet mode (no helpful messages)\0A\09-1\091 stop bits (default)\0A\09-2\092 stop bits\0A\09-5\095 data bits\0A\09-6\096 data bits\0A\09-7\097 data bits\0A\09-8\098 data bits (default)\0A\09-e\09even parity\0A\09-o\09odd parity\0A\09-n\09no parity (default)\0A\09-c\09use clocal mode (no disconnect)\0A\09-t\09translate 5 bit codes to ascii\0A\09-x\09use software flow (xon/xoff)\0A\09-r\09use hardware flow (rts/cts)\0A\09-f\09pass xon/xoff flow control to remote\0A\09-s\09baud rate (default 9600)\0A\09-w\09capture remote output to local file\0A\09-p\09bind to tcpport instead of using stdin/stdout\0A\09-l\09device to use\0A\09-d\09download file name\0A\00"
define void @usage(i32* %0, i32 %1) {
%3 = alloca i32*
%4 = alloca i32
store i32* %0, i32** %3
store i32 %1, i32* %4
%5 = load i32*, i32** %3
%6 = call i32 @fprintf(i32* %5, i8* getelementptr inbounds ([649 x i8], [649 x i8]* @.str, i64 0, i64 0))
%7 = load i32, i32* %4
%8 = call i32 @exit(i32 %7)
unreachable
}

LLVM IR (-O2):
@.str = [649 x i8] c"Usage: tip [-?heonxrwcqt125678] [-s speed] [-w file] [-p tcpport] [-l device] [device]\0A\0A\09-h?\09this help\0A\09-q\09quiet mode (no helpful messages)\0A\09-1\091 stop bits (default)\0A\09-2\092 stop bits\0A\09-5\095 data bits\0A\09-6\096 data bits\0A\09-7\097 data bits\0A\09-8\098 data bits (default)\0A\09-e\09even parity\0A\09-o\09odd parity\0A\09-n\09no parity (default)\0A\09-c\09use clocal mode (no disconnect)\0A\09-t\09translate 5 bit codes to ascii\0A\09-x\09use software flow (xon/xoff)\0A\09-r\09use hardware flow (rts/cts)\0A\09-f\09pass xon/xoff flow control to remote\0A\09-s\09baud rate (default 9600)\0A\09-w\09capture remote output to local file\0A\09-p\09bind to tcpport instead of using stdin/stdout\0A\09-l\09device to use\0A\09-d\09download file name\0A\00"
define void @usage(i32* nocapture %0, i32 %1) {
%3 = tail call i64 @fwrite(i8* getelementptr inbounds ([649 x i8], [649 x i8]* @.str, i64 0, i64 0), i64 648, i64 1, i32* %0)
%4 = tail call i32 @exit(i32 %1)
unreachable
}