#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ out_version(int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
void help(void) {
  out_version(0);
  fprintf(
      stderr,
      " using: gocr [options] pnm_file_name  # use - for stdin\n"
      " options (see gocr manual pages for more details):\n"
      " -h, --help\n"
      " -i name   - input image file (pnm,pgm,pbm,ppm,pcx,...)\n"
      " -o name   - output file  (redirection of stdout)\n"
      " -e name   - logging file (redirection of stderr)\n"
      " -x name   - progress output to fifo (see manual)\n"
      " -p name   - database path including final slash (default is ./db/)\n");
  fprintf(stderr,
          " -f fmt    - output format (ISO8859_1 TeX HTML XML UTF8 ASCII)\n"
          " -l num    - threshold grey level 0<160<=255 (0 = autodetect)\n"
          " -d num    - dust_size (remove small clusters, -1 = autodetect)\n"
          " -s num    - spacewidth/dots (0 = autodetect)\n"
          " -v num    - verbose (see manual page)\n"
          " -c string - list of chars (debugging, see manual)\n"
          " -C string - char filter (ex. hexdigits: "
          "0-9A-Fx"
          ", only ASCII)\n"
          " -m num    - operation modes (bitpattern, see manual)\n");
  fprintf(stderr,
          " -a num    - value of certainty (in percent, 0..100, default=95)\n"
          " -u string - output this string for every unrecognized character\n");
  fprintf(stderr,
          " examples:\n"
          "\tgocr -m 4 text1.pbm                   # do layout analyzis\n"
          "\tgocr -m 130 -p ./database/ text1.pbm  # extend database\n"
          "\tdjpeg -pnm -gray text.jpg | gocr -    # use jpeg-file via pipe\n"
          "\n");
  fprintf(stderr, " webpage: http://jocr.sourceforge.net/\n");
  exit(0);
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
xor    %edi,%edi
call   1040 <out_version@plt>
mov    0x2e9e(%rip),%rax
mov    (%rax),%edi
lea    0xeb5(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2e89(%rip),%rax
mov    (%rax),%edi
lea    0x102a(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2e74(%rip),%rax
mov    (%rax),%edi
lea    0x11cf(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2e5f(%rip),%rax
mov    (%rax),%edi
lea    0x123d(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2e4a(%rip),%rax
mov    (%rax),%edi
lea    0x12ea(%rip),%rsi
call   1030 <fprintf@plt>
xor    %edi,%edi
call   1050 <exit@plt>

x86 assembly (clang, -O2):
<help>:
push   %rbx
xor    %edi,%edi
call   1040 <out_version@plt>
mov    0x2ea1(%rip),%rbx
mov    (%rbx),%edi
lea    0xeb8(%rip),%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
lea    0x1034(%rip),%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
lea    0x11e0(%rip),%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
lea    0x1255(%rip),%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
lea    0x1309(%rip),%rsi
call   1030 <fprintf@plt>
xor    %edi,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [394 x i8] c" using: gocr [options] pnm_file_name # use - for stdin\0A options (see gocr manual pages for more details):\0A -h, --help\0A -i name - input image file (pnm,pgm,pbm,ppm,pcx,...)\0A -o name - output file (redirection of stdout)\0A -e name - logging file (redirection of stderr)\0A -x name - progress output to fifo (see manual)\0A -p name - database path including final slash (default is ./db/)\0A\00"
@.str.1 = [442 x i8] c" -f fmt - output format (ISO8859_1 TeX HTML XML UTF8 ASCII)\0A -l num - threshold grey level 0<160<=255 (0 = autodetect)\0A -d num - dust_size (remove small clusters, -1 = autodetect)\0A -s num - spacewidth/dots (0 = autodetect)\0A -v num - verbose (see manual page)\0A -c string - list of chars (debugging, see manual)\0A -C string - char filter (ex. hexdigits: 0-9A-Fx, only ASCII)\0A -m num - operation modes (bitpattern, see manual)\0A\00"
@.str.2 = [131 x i8] c" -a num - value of certainty (in percent, 0..100, default=95)\0A -u string - output this string for every unrecognized character\0A\00"
@.str.3 = [194 x i8] c" examples:\0A\09gocr -m 4 text1.pbm # do layout analyzis\0A\09gocr -m 130 -p ./database/ text1.pbm # extend database\0A\09djpeg -pnm -gray text.jpg | gocr - # use jpeg-file via pipe\0A\0A\00"
@.str.4 = [40 x i8] c" webpage: http://jocr.sourceforge.net/\0A\00"
define void @help() {
%1 = call i32 @out_version(i32 0)
%2 = load i32, i32* @stderr
%3 = call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([394 x i8], [394 x i8]* @.str, i64 0, i64 0))
%4 = load i32, i32* @stderr
%5 = call i32 @fprintf(i32 %4, i8* getelementptr inbounds ([442 x i8], [442 x i8]* @.str.1, i64 0, i64 0))
%6 = load i32, i32* @stderr
%7 = call i32 @fprintf(i32 %6, i8* getelementptr inbounds ([131 x i8], [131 x i8]* @.str.2, i64 0, i64 0))
%8 = load i32, i32* @stderr
%9 = call i32 @fprintf(i32 %8, i8* getelementptr inbounds ([194 x i8], [194 x i8]* @.str.3, i64 0, i64 0))
%10 = load i32, i32* @stderr
%11 = call i32 @fprintf(i32 %10, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.4, i64 0, i64 0))
%12 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [394 x i8] c" using: gocr [options] pnm_file_name # use - for stdin\0A options (see gocr manual pages for more details):\0A -h, --help\0A -i name - input image file (pnm,pgm,pbm,ppm,pcx,...)\0A -o name - output file (redirection of stdout)\0A -e name - logging file (redirection of stderr)\0A -x name - progress output to fifo (see manual)\0A -p name - database path including final slash (default is ./db/)\0A\00"
@.str.1 = [442 x i8] c" -f fmt - output format (ISO8859_1 TeX HTML XML UTF8 ASCII)\0A -l num - threshold grey level 0<160<=255 (0 = autodetect)\0A -d num - dust_size (remove small clusters, -1 = autodetect)\0A -s num - spacewidth/dots (0 = autodetect)\0A -v num - verbose (see manual page)\0A -c string - list of chars (debugging, see manual)\0A -C string - char filter (ex. hexdigits: 0-9A-Fx, only ASCII)\0A -m num - operation modes (bitpattern, see manual)\0A\00"
@.str.2 = [131 x i8] c" -a num - value of certainty (in percent, 0..100, default=95)\0A -u string - output this string for every unrecognized character\0A\00"
@.str.3 = [194 x i8] c" examples:\0A\09gocr -m 4 text1.pbm # do layout analyzis\0A\09gocr -m 130 -p ./database/ text1.pbm # extend database\0A\09djpeg -pnm -gray text.jpg | gocr - # use jpeg-file via pipe\0A\0A\00"
@.str.4 = [40 x i8] c" webpage: http://jocr.sourceforge.net/\0A\00"
define void @help() {
%1 = tail call i32 @out_version(i32 0)
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([394 x i8], [394 x i8]* @.str, i64 0, i64 0))
%4 = load i32, i32* @stderr
%5 = tail call i32 @fprintf(i32 %4, i8* getelementptr inbounds ([442 x i8], [442 x i8]* @.str.1, i64 0, i64 0))
%6 = load i32, i32* @stderr
%7 = tail call i32 @fprintf(i32 %6, i8* getelementptr inbounds ([131 x i8], [131 x i8]* @.str.2, i64 0, i64 0))
%8 = load i32, i32* @stderr
%9 = tail call i32 @fprintf(i32 %8, i8* getelementptr inbounds ([194 x i8], [194 x i8]* @.str.3, i64 0, i64 0))
%10 = load i32, i32* @stderr
%11 = tail call i32 @fprintf(i32 %10, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.4, i64 0, i64 0))
%12 = tail call i32 @exit(i32 0)
unreachable
}