#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage() {
  fprintf(stderr,
          "Usage: tea [options]\n\n"
          "--version:                Show version\n"
          "--help|-h:                Help info\n"
          "--telnet:                 Share serial port over telnet\n"
          "--port:                   Listen port of telnet\n"
          "--forground:              Telnet run at forground\n"
          "--device|-d:              Serial port name or path. If no, try to "
          "open one automatically, but ignored if telnet is enabled.\n"
          "--speed|-s:               Serial port speed. Default is 115200\n"
          "--bits|-b <5|6|7|8>:      The number of data bits. Default is 8\n"
          "--stopbits|-t <1|2>:      The number of stop bit. Default is 1\n"
          "--parity|-p <odd|even>:   Parity setting. Default is none\n"
          "--flow|-f <xon>:          Flow control type. Default is none\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [685 x i8] c"Usage: tea [options]\0A\0A--version: Show version\0A--help|-h: Help info\0A--telnet: Share serial port over telnet\0A--port: Listen port of telnet\0A--forground: Telnet run at forground\0A--device|-d: Serial port name or path. If no, try to open one automatically, but ignored if telnet is enabled.\0A--speed|-s: Serial port speed. Default is 115200\0A--bits|-b <5|6|7|8>: The number of data bits. Default is 8\0A--stopbits|-t <1|2>: The number of stop bit. Default is 1\0A--parity|-p <odd|even>: Parity setting. Default is none\0A--flow|-f <xon>: Flow control type. Default is none\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([685 x i8], [685 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [685 x i8] c"Usage: tea [options]\0A\0A--version: Show version\0A--help|-h: Help info\0A--telnet: Share serial port over telnet\0A--port: Listen port of telnet\0A--forground: Telnet run at forground\0A--device|-d: Serial port name or path. If no, try to open one automatically, but ignored if telnet is enabled.\0A--speed|-s: Serial port speed. Default is 115200\0A--bits|-b <5|6|7|8>: The number of data bits. Default is 8\0A--stopbits|-t <1|2>: The number of stop bit. Default is 1\0A--parity|-p <odd|even>: Parity setting. Default is none\0A--flow|-f <xon>: Flow control type. Default is none\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([685 x i8], [685 x i8]* @.str, i64 0, i64 0))
ret void
}