#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 describe() {
  fputs("tar: valid options:\n-b N	blocking factor N (block size = Nx512 "
        "bytes)\n-B	reblock as we read (for reading 4.2BSD "
        "pipes)\n-c	create an archive\n-d	find differences between "
        "archive and file system\n-D	don't dump the contents of "
        "directories, just the directory\n",
        stderr);
  fputs("-f F	read/write archive from file or device F (or "
        "hostname:/ForD)\n-h	don't dump symbolic links; dump the files they "
        "point to\n-i	ignore blocks of zeros in the archive, which normally "
        "mean EOF\n-k	keep existing files, don't overwrite them from the "
        "archive\n-l	stay in the local file system (like dump(8)) when "
        "creating an archive\n",
        stderr);
  fputs("-m	don't extract file modified time\n-o	write an old V7 format "
        "archive, rather than ANSI [draft 6] format\n-p	do extract all "
        "protection information\n-R	dump record number within archive with "
        "each message\n-s	list of names to extract is sorted to match "
        "the archive\n-t	list a table of contents of an archive\n",
        stderr);
  fputs("-T F	get names to extract or create from file F\n-v	verbosely list "
        "what files we process\n-x	extract files from an archive\n-z or "
        "Z	run the archive through compress(1)\n",
        stderr);
}


x86 assembly (clang, -O0):
<describe>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%esi
lea    0xedc(%rip),%rdi
call   1030 <fputs@plt>
mov    0x2eb0(%rip),%rax
mov    (%rax),%esi
lea    0xfc6(%rip),%rdi
call   1030 <fputs@plt>
mov    0x2e9b(%rip),%rax
mov    (%rax),%esi
lea    0x10f8(%rip),%rdi
call   1030 <fputs@plt>
mov    0x2e86(%rip),%rax
mov    (%rax),%esi
lea    0x1212(%rip),%rdi
call   1030 <fputs@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<describe>:
push   %rbx
mov    0x2ec8(%rip),%rbx
mov    (%rbx),%esi
lea    0xedf(%rip),%rdi
call   1030 <fputs@plt>
mov    (%rbx),%esi
lea    0xfd0(%rip),%rdi
call   1030 <fputs@plt>
mov    (%rbx),%esi
lea    0x1109(%rip),%rdi
call   1030 <fputs@plt>
mov    (%rbx),%esi
lea    0x122a(%rip),%rdi
pop    %rbx
jmp    1030 <fputs@plt>

LLVM IR (-O0):
@.str = [255 x i8] c"tar: valid options:\0A-b N\09blocking factor N (block size = Nx512 bytes)\0A-B\09reblock as we read (for reading 4.2BSD pipes)\0A-c\09create an archive\0A-d\09find differences between archive and file system\0A-D\09don't dump the contents of directories, just the directory\0A\00"
@stderr = global i32 0
@.str.1 = [327 x i8] c"-f F\09read/write archive from file or device F (or hostname:/ForD)\0A-h\09don't dump symbolic links; dump the files they point to\0A-i\09ignore blocks of zeros in the archive, which normally mean EOF\0A-k\09keep existing files, don't overwrite them from the archive\0A-l\09stay in the local file system (like dump(8)) when creating an archive\0A\00"
@.str.2 = [303 x i8] c"-m\09don't extract file modified time\0A-o\09write an old V7 format archive, rather than ANSI [draft 6] format\0A-p\09do extract all protection information\0A-R\09dump record number within archive with each message\0A-s\09list of names to extract is sorted to match the archive\0A-t\09list a table of contents of an archive\0A\00"
@.str.3 = [166 x i8] c"-T F\09get names to extract or create from file F\0A-v\09verbosely list what files we process\0A-x\09extract files from an archive\0A-z or Z\09run the archive through compress(1)\0A\00"
define void @describe() {
%1 = load i32, i32* @stderr
%2 = call i32 @fputs(i8* getelementptr inbounds ([255 x i8], [255 x i8]* @.str, i64 0, i64 0), i32 %1)
%3 = load i32, i32* @stderr
%4 = call i32 @fputs(i8* getelementptr inbounds ([327 x i8], [327 x i8]* @.str.1, i64 0, i64 0), i32 %3)
%5 = load i32, i32* @stderr
%6 = call i32 @fputs(i8* getelementptr inbounds ([303 x i8], [303 x i8]* @.str.2, i64 0, i64 0), i32 %5)
%7 = load i32, i32* @stderr
%8 = call i32 @fputs(i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.3, i64 0, i64 0), i32 %7)
ret void
}

LLVM IR (-O2):
@.str = [255 x i8] c"tar: valid options:\0A-b N\09blocking factor N (block size = Nx512 bytes)\0A-B\09reblock as we read (for reading 4.2BSD pipes)\0A-c\09create an archive\0A-d\09find differences between archive and file system\0A-D\09don't dump the contents of directories, just the directory\0A\00"
@stderr = global i32 0
@.str.1 = [327 x i8] c"-f F\09read/write archive from file or device F (or hostname:/ForD)\0A-h\09don't dump symbolic links; dump the files they point to\0A-i\09ignore blocks of zeros in the archive, which normally mean EOF\0A-k\09keep existing files, don't overwrite them from the archive\0A-l\09stay in the local file system (like dump(8)) when creating an archive\0A\00"
@.str.2 = [303 x i8] c"-m\09don't extract file modified time\0A-o\09write an old V7 format archive, rather than ANSI [draft 6] format\0A-p\09do extract all protection information\0A-R\09dump record number within archive with each message\0A-s\09list of names to extract is sorted to match the archive\0A-t\09list a table of contents of an archive\0A\00"
@.str.3 = [166 x i8] c"-T F\09get names to extract or create from file F\0A-v\09verbosely list what files we process\0A-x\09extract files from an archive\0A-z or Z\09run the archive through compress(1)\0A\00"
define void @describe() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fputs(i8* getelementptr inbounds ([255 x i8], [255 x i8]* @.str, i64 0, i64 0), i32 %1)
%3 = load i32, i32* @stderr
%4 = tail call i32 @fputs(i8* getelementptr inbounds ([327 x i8], [327 x i8]* @.str.1, i64 0, i64 0), i32 %3)
%5 = load i32, i32* @stderr
%6 = tail call i32 @fputs(i8* getelementptr inbounds ([303 x i8], [303 x i8]* @.str.2, i64 0, i64 0), i32 %5)
%7 = load i32, i32* @stderr
%8 = tail call i32 @fputs(i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.3, i64 0, i64 0), i32 %7)
ret void
}