#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*/ fputs(char *, int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
void printusage() {
  fputs(
      "Usage: pcat [OPTION]... [FILE]...\n"
      "Read FILE(s) in parallel and write whole lines to standard output.\n\n"
      "pcat allows you to combine the output from multiple concurrent "
      "processes\n"
      "while keeping whole lines intact: each output line is guaranteed to be\n"
      "an entire line from exactly one input.  The relative order of lines "
      "from\n"
      "any particular file is preserved (i.e., lines from the same file stay "
      "in \n"
      "order), but lines from each FILE will be mixed together arbitrarily.\n"
      "To ensure each output line comes from only one input, pcat will add a\n"
      "final newline to any file that ends without one.\n"
      "  -h,  --help                display this help and exit\n"
      "  -c,  --continue-on-error   continue processing other FILEs if one has "
      "an error\n\n"
      "With no FILE, or when FILE is -, read standard input (like cat(1)).\n\n",
      stderr);
}


x86 assembly (clang, -O0):
<printusage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%esi
lea    0xedc(%rip),%rdi
call   1030 <fputs@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<printusage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%esi
lea    0xee0(%rip),%rdi
jmp    1030 <fputs@plt>

LLVM IR (-O0):
@.str = [789 x i8] c"Usage: pcat [OPTION]... [FILE]...\0ARead FILE(s) in parallel and write whole lines to standard output.\0A\0Apcat allows you to combine the output from multiple concurrent processes\0Awhile keeping whole lines intact: each output line is guaranteed to be\0Aan entire line from exactly one input. The relative order of lines from\0Aany particular file is preserved (i.e., lines from the same file stay in \0Aorder), but lines from each FILE will be mixed together arbitrarily.\0ATo ensure each output line comes from only one input, pcat will add a\0Afinal newline to any file that ends without one.\0A -h, --help display this help and exit\0A -c, --continue-on-error continue processing other FILEs if one has an error\0A\0AWith no FILE, or when FILE is -, read standard input (like cat(1)).\0A\0A\00"
@stderr = global i32 0
define void @printusage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fputs(i8* getelementptr inbounds ([789 x i8], [789 x i8]* @.str, i64 0, i64 0), i32 %1)
ret void
}

LLVM IR (-O2):
@.str = [789 x i8] c"Usage: pcat [OPTION]... [FILE]...\0ARead FILE(s) in parallel and write whole lines to standard output.\0A\0Apcat allows you to combine the output from multiple concurrent processes\0Awhile keeping whole lines intact: each output line is guaranteed to be\0Aan entire line from exactly one input. The relative order of lines from\0Aany particular file is preserved (i.e., lines from the same file stay in \0Aorder), but lines from each FILE will be mixed together arbitrarily.\0ATo ensure each output line comes from only one input, pcat will add a\0Afinal newline to any file that ends without one.\0A -h, --help display this help and exit\0A -c, --continue-on-error continue processing other FILEs if one has an error\0A\0AWith no FILE, or when FILE is -, read standard input (like cat(1)).\0A\0A\00"
@stderr = global i32 0
define void @printusage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fputs(i8* getelementptr inbounds ([789 x i8], [789 x i8]* @.str, i64 0, i64 0), i32 %1)
ret void
}