#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*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *);
void help(void) {
  printf("\n::xls2dsv::\n\n");
  printf("[description]\n"
         "  xls2dsv parses the contents of excel (.xls) files and saves\n"
         "  them as delimiter-separated values (DSV). It currently\n"
         "  supports BIFF8 (97 - 2007) excel files as input, and can\n"
         "  output pure ASCII (no extended ASCII ), UTF-16BE or UTF-8\n"
         "  encoded files. It also supports user defined parameters for\n"
         "  the DSV output. It outputs one file for every worksheet on\n"
         "  the excel file (workbook), naming them as follows,\n"
         "  \"[input filename - suffix]_[worksheet name].[suffix]\"\n\n");
  printf("[options]\n\n"
         "1) -help, displays this message\n\n"
         "2) encoding, choose one of the following\n"
         "   a) -utf8, for UTF-8\n"
         "   b) -utf16, for UTF-16BE, no BOM prepended\n"
         "   c) -ascii='r', to replace characters beyond U+007F\n"
         "         with 'r' ASCII character (ex. -ascii=?, -ascii=x3f)\n"
         "\n"
         "3) delimiter, choose one of the following\n"
         "   a) -csv, to output comma-delimited files, using quotation\n"
         "         marks ('\"', 0x22) as text delimiter\n"
         "   b) -tsv, to output tab-delimited files\n"
         "   c) -dsv='D','T','E', to explicitly specify the delimiter 'D',\n"
         "         the text delimiter 'C', and the first letter of file\n"
         "         extension to use 'E' (ex. -dsv=?,!,q, -dsv=x3f,x22,q);\n"
         "         note that ',' or x63 and x09 are reserved delimiters,\n"
         "         and 'c' and 't' are reserved file extensions\n"
         "\n"
         "4) compact, choose one of the following\n"
         "   a) -compact=0, to preserve the original dimension\n"
         "   b) -compact=1, to discard empty rows and columns\n"
         "         after non-empty ones\n"
         "   c) -compact=2, to discard empty rows and columns\n"
         "         before and after non-empty ones\n"
         "   d) -compact=3, to discard all empty cells\n"
         "\n"
         "5) -crlf, inserts CR+LF as newline; otherwise LF only\n\n"
         "6) -enclose, encloses all values with the\n"
         "      delimiter-collision-avoidance character\n\n"
         "7) [source file or directory]\n\n"
         "8) [destination directory]\n\n");
  printf("[default]\n"
         "encoding:   -utf8\n"
         "delimiter:  -csv\n"
         "compact:    -compact=0\n\n");
  printf(
      "[sample usage]\n\n"
      "a) \"./xls2dsv\"\n"
      "    will convert all excel files in the working directory into\n"
      "    comma-delimited, UTF-8-encoded files, preserving the original\n"
      "    dimension of the excel files, and saving each individual\n"
      "    worksheets of every file with .csv file extension\n\n"
      "b) \".xls2dsv -ascii=$ -dsv=?,x3d,q input.xls output -compact=3\"\n"
      "    will convert the \"input.xls\" file into question-mark-delimited, "
      "pure-\n"
      "    ascii-encoded (replacing non-ASCII characters with '$' sign) "
      "files,\n"
      "    ignoring all empty cells and enclosing all values containing the\n"
      "    delimiter character '?', the new line character '\\n', and the "
      "text\n"
      "    delimiter character '\"' with the text delimiter character '\"',\n"
      "    and saving all worksheets of the file into existing \"output\"\n"
      "    directory with \".qsv\" file extension\n\n"
      "c) \"./xls2dsv input\"\n"
      "    will have the same effect as a) except that input files will\n"
      "    come from the \"input\" directory and all output will be saved\n"
      "    into the same \"input\" directory\n");
  printf("\n");
  exit(0);
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
lea    0xed8(%rip),%rdi
call   1030 <printf@plt>
lea    0x10b2(%rip),%rdi
call   1030 <printf@plt>
lea    0x15ac(%rip),%rdi
call   1030 <printf@plt>
lea    0x15e6(%rip),%rdi
call   1030 <printf@plt>
lea    0x108c(%rip),%rdi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<help>:
push   %rax
lea    0xec8(%rip),%rdi
call   1040 <puts@plt>
lea    0xeca(%rip),%rdi
call   1040 <puts@plt>
lea    0x10a3(%rip),%rdi
call   1040 <puts@plt>
lea    0x159c(%rip),%rdi
call   1040 <puts@plt>
lea    0x15d5(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %edi,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [15 x i8] c"\0A::xls2dsv::\0A\0A\00"
@.str.1 = [486 x i8] c"[description]\0A xls2dsv parses the contents of excel (.xls) files and saves\0A them as delimiter-separated values (DSV). It currently\0A supports BIFF8 (97 - 2007) excel files as input, and can\0A output pure ASCII (no extended ASCII ), UTF-16BE or UTF-8\0A encoded files. It also supports user defined parameters for\0A the DSV output. It outputs one file for every worksheet on\0A the excel file (workbook), naming them as follows,\0A \22[input filename - suffix]_[worksheet name].[suffix]\22\0A\0A\00"
@.str.2 = [1286 x i8] c"[options]\0A\0A1) -help, displays this message\0A\0A2) encoding, choose one of the following\0A a) -utf8, for UTF-8\0A b) -utf16, for UTF-16BE, no BOM prepended\0A c) -ascii='r', to replace characters beyond U+007F\0A with 'r' ASCII character (ex. -ascii=?, -ascii=x3f)\0A\0A3) delimiter, choose one of the following\0A a) -csv, to output comma-delimited files, using quotation\0A marks ('\22', 0x22) as text delimiter\0A b) -tsv, to output tab-delimited files\0A c) -dsv='D','T','E', to explicitly specify the delimiter 'D',\0A the text delimiter 'C', and the first letter of file\0A extension to use 'E' (ex. -dsv=?,!,q, -dsv=x3f,x22,q);\0A note that ',' or x63 and x09 are reserved delimiters,\0A and 'c' and 't' are reserved file extensions\0A\0A4) compact, choose one of the following\0A a) -compact=0, to preserve the original dimension\0A b) -compact=1, to discard empty rows and columns\0A after non-empty ones\0A c) -compact=2, to discard empty rows and columns\0A before and after non-empty ones\0A d) -compact=3, to discard all empty cells\0A\0A5) -crlf, inserts CR+LF as newline; otherwise LF only\0A\0A6) -enclose, encloses all values with the\0A delimiter-collision-avoidance character\0A\0A7) [source file or directory]\0A\0A8) [destination directory]\0A\0A\00"
@.str.3 = [70 x i8] c"[default]\0Aencoding: -utf8\0Adelimiter: -csv\0Acompact: -compact=0\0A\0A\00"
@.str.4 = [988 x i8] c"[sample usage]\0A\0Aa) \22./xls2dsv\22\0A will convert all excel files in the working directory into\0A comma-delimited, UTF-8-encoded files, preserving the original\0A dimension of the excel files, and saving each individual\0A worksheets of every file with .csv file extension\0A\0Ab) \22.xls2dsv -ascii=$ -dsv=?,x3d,q input.xls output -compact=3\22\0A will convert the \22input.xls\22 file into question-mark-delimited, pure-\0A ascii-encoded (replacing non-ASCII characters with '$' sign) files,\0A ignoring all empty cells and enclosing all values containing the\0A delimiter character '?', the new line character '\\n', and the text\0A delimiter character '\22' with the text delimiter character '\22',\0A and saving all worksheets of the file into existing \22output\22\0A directory with \22.qsv\22 file extension\0A\0Ac) \22./xls2dsv input\22\0A will have the same effect as a) except that input files will\0A come from the \22input\22 directory and all output will be saved\0A into the same \22input\22 directory\0A\00"
@.str.5 = [2 x i8] c"\0A\00"
define void @help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([486 x i8], [486 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([1286 x i8], [1286 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([988 x i8], [988 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@str = [14 x i8] c"\0A::xls2dsv::\0A\00"
@str.6 = [485 x i8] c"[description]\0A xls2dsv parses the contents of excel (.xls) files and saves\0A them as delimiter-separated values (DSV). It currently\0A supports BIFF8 (97 - 2007) excel files as input, and can\0A output pure ASCII (no extended ASCII ), UTF-16BE or UTF-8\0A encoded files. It also supports user defined parameters for\0A the DSV output. It outputs one file for every worksheet on\0A the excel file (workbook), naming them as follows,\0A \22[input filename - suffix]_[worksheet name].[suffix]\22\0A\00"
@str.7 = [1285 x i8] c"[options]\0A\0A1) -help, displays this message\0A\0A2) encoding, choose one of the following\0A a) -utf8, for UTF-8\0A b) -utf16, for UTF-16BE, no BOM prepended\0A c) -ascii='r', to replace characters beyond U+007F\0A with 'r' ASCII character (ex. -ascii=?, -ascii=x3f)\0A\0A3) delimiter, choose one of the following\0A a) -csv, to output comma-delimited files, using quotation\0A marks ('\22', 0x22) as text delimiter\0A b) -tsv, to output tab-delimited files\0A c) -dsv='D','T','E', to explicitly specify the delimiter 'D',\0A the text delimiter 'C', and the first letter of file\0A extension to use 'E' (ex. -dsv=?,!,q, -dsv=x3f,x22,q);\0A note that ',' or x63 and x09 are reserved delimiters,\0A and 'c' and 't' are reserved file extensions\0A\0A4) compact, choose one of the following\0A a) -compact=0, to preserve the original dimension\0A b) -compact=1, to discard empty rows and columns\0A after non-empty ones\0A c) -compact=2, to discard empty rows and columns\0A before and after non-empty ones\0A d) -compact=3, to discard all empty cells\0A\0A5) -crlf, inserts CR+LF as newline; otherwise LF only\0A\0A6) -enclose, encloses all values with the\0A delimiter-collision-avoidance character\0A\0A7) [source file or directory]\0A\0A8) [destination directory]\0A\00"
@str.8 = [69 x i8] c"[default]\0Aencoding: -utf8\0Adelimiter: -csv\0Acompact: -compact=0\0A\00"
@str.9 = [987 x i8] c"[sample usage]\0A\0Aa) \22./xls2dsv\22\0A will convert all excel files in the working directory into\0A comma-delimited, UTF-8-encoded files, preserving the original\0A dimension of the excel files, and saving each individual\0A worksheets of every file with .csv file extension\0A\0Ab) \22.xls2dsv -ascii=$ -dsv=?,x3d,q input.xls output -compact=3\22\0A will convert the \22input.xls\22 file into question-mark-delimited, pure-\0A ascii-encoded (replacing non-ASCII characters with '$' sign) files,\0A ignoring all empty cells and enclosing all values containing the\0A delimiter character '?', the new line character '\\n', and the text\0A delimiter character '\22' with the text delimiter character '\22',\0A and saving all worksheets of the file into existing \22output\22\0A directory with \22.qsv\22 file extension\0A\0Ac) \22./xls2dsv input\22\0A will have the same effect as a) except that input files will\0A come from the \22input\22 directory and all output will be saved\0A into the same \22input\22 directory\00"
define void @help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([485 x i8], [485 x i8]* @str.6, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1285 x i8], [1285 x i8]* @str.7, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.8, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([987 x i8], [987 x i8]* @str.9, i64 0, i64 0))
%6 = tail call i32 @putchar(i32 10)
%7 = tail call i32 @exit(i32 0)
unreachable
}