#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 *, char *, char, char, int,
                           char, int, char, char, int);
int /*<<< orphan*/ stderr;
void help(char *name) {
  fprintf(
      stderr,
      "Usage: %s [OPTION]...\n\n"
      "  -%c, --"
      "always-scroll"
      "\n"
      "        Always scroll, even when the input length is less than the\n"
      "        ticker length.\n"
      "  -%c char, --"
      "blank"
      "=char\n"
      "        Fill blank space with 'char'. Defaults to '%lc'.\n"
      "  -%c N, --"
      "length"
      "=N\n"
      "        The length, in columns, of the output. Defaults to %d.\n"
      "  -%c, --"
      "reverse"
      "\n"
      "        Scroll from left to right, instead of the default (right to\n"
      "        left).\n"
      "  -%c ms, --"
      "tick"
      "=ms\n"
      "        The amount of time, in milliseconds, it takes for the\n"
      "        ticker to move by one character. Defaults to %d.\n\n"
      "Takes a string from standard input, and outputs a portion of it to\n"
      "standard output. The portion output depends on the current system\n"
      "time. When called repeatedly over time with the same input, creates\n"
      "a scrolling 'news ticker' effect.\n\n"
      "Written by Adam R. Nelson <http://github.com/ar-nelson>.\n"
      "Distributed under the BSD License.\n"
      "Post bug reports on GitHub, or send them to <adam@sector91.com>.\n"
      "(Be sure to include 'ticker' in the 'Subject' field of emails.)\n",
      name, 'a', 'b', L' ', 'l', 80, 'r', 't', 100);
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ebd(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
lea    0xed0(%rip),%rsi
mov    $0x61,%ecx
mov    $0x62,%r8d
mov    $0x20,%r9d
movl   $0x6c,(%rsp)
movl   $0x50,0x8(%rsp)
movl   $0x72,0x10(%rsp)
movl   $0x74,0x18(%rsp)
movl   $0x64,0x20(%rsp)
call   1030 <fprintf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
push   %rax
mov    %rdi,%rdx
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
sub    $0x8,%rsp
lea    0xed8(%rip),%rsi
mov    $0x61,%ecx
mov    $0x62,%r8d
mov    $0x20,%r9d
push   $0x64
push   $0x74
push   $0x72
push   $0x50
push   $0x6c
call   1030 <fprintf@plt>
add    $0x30,%rsp
pop    %rax
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [999 x i8] c"Usage: %s [OPTION]...\0A\0A -%c, --always-scroll\0A Always scroll, even when the input length is less than the\0A ticker length.\0A -%c char, --blank=char\0A Fill blank space with 'char'. Defaults to '%lc'.\0A -%c N, --length=N\0A The length, in columns, of the output. Defaults to %d.\0A -%c, --reverse\0A Scroll from left to right, instead of the default (right to\0A left).\0A -%c ms, --tick=ms\0A The amount of time, in milliseconds, it takes for the\0A ticker to move by one character. Defaults to %d.\0A\0ATakes a string from standard input, and outputs a portion of it to\0Astandard output. The portion output depends on the current system\0Atime. When called repeatedly over time with the same input, creates\0Aa scrolling 'news ticker' effect.\0A\0AWritten by Adam R. Nelson <http://github.com/ar-nelson>.\0ADistributed under the BSD License.\0APost bug reports on GitHub, or send them to <adam@sector91.com>.\0A(Be sure to include 'ticker' in the 'Subject' field of emails.)\0A\00"
define void @help(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = load i8*, i8** %2
%5 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([999 x i8], [999 x i8]* @.str, i64 0, i64 0), i8* %4, i8 signext 97, i8 signext 98, i32 32, i8 signext 108, i32 80, i8 signext 114, i8 signext 116, i32 100)
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [999 x i8] c"Usage: %s [OPTION]...\0A\0A -%c, --always-scroll\0A Always scroll, even when the input length is less than the\0A ticker length.\0A -%c char, --blank=char\0A Fill blank space with 'char'. Defaults to '%lc'.\0A -%c N, --length=N\0A The length, in columns, of the output. Defaults to %d.\0A -%c, --reverse\0A Scroll from left to right, instead of the default (right to\0A left).\0A -%c ms, --tick=ms\0A The amount of time, in milliseconds, it takes for the\0A ticker to move by one character. Defaults to %d.\0A\0ATakes a string from standard input, and outputs a portion of it to\0Astandard output. The portion output depends on the current system\0Atime. When called repeatedly over time with the same input, creates\0Aa scrolling 'news ticker' effect.\0A\0AWritten by Adam R. Nelson <http://github.com/ar-nelson>.\0ADistributed under the BSD License.\0APost bug reports on GitHub, or send them to <adam@sector91.com>.\0A(Be sure to include 'ticker' in the 'Subject' field of emails.)\0A\00"
define void @help(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([999 x i8], [999 x i8]* @.str, i64 0, i64 0), i8* %0, i8 signext 97, i8 signext 98, i32 32, i8 signext 108, i32 80, i8 signext 114, i8 signext 116, i32 100)
ret void
}