#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 const *, char const *);
int /*<<< orphan*/ stderr;
void opt_help(const char *pname) {
  static const char msg[] =
      "Global switchs:\n"
      "\t-h | --help      display this help message\n"
      "\t   | --version   display version information\n"
      "\n"
      "Training mode:\n"
      "    %1$s train [options] [input data] [model file]\n"
      "\t   | --me               force maxent mode\n"
      "\t-T | --type     STRING  type of model to train\n"
      "\t-a | --algo     STRING  training algorithm to use\n"
      "\t-p | --pattern  FILE    patterns for extracting features\n"
      "\t-m | --model    FILE    model file to preload\n"
      "\t-d | --devel    FILE    development dataset\n"
      "\t   | --rstate   FILE    optimizer state to restore\n"
      "\t   | --sstate   FILE    optimizer state to save\n"
      "\t-c | --compact          compact model after training\n"
      "\t-t | --nthread  INT     number of worker threads\n"
      "\t-j | --jobsize  INT     job size for worker threads\n"
      "\t-s | --sparse           enable sparse forward/backward\n"
      "\t-i | --maxiter  INT     maximum number of iterations\n"
      "\t-1 | --rho1     FLOAT   l1 penalty parameter\n"
      "\t-2 | --rho2     FLOAT   l2 penalty parameter\n"
      "\t-o | --objwin   INT     convergence window size\n"
      "\t-w | --stopwin  INT     stop window size\n"
      "\t-e | --stopeps  FLOAT   stop epsilon value\n"
      "\t   | --clip             (l-bfgs) clip gradient\n"
      "\t   | --histsz   INT     (l-bfgs) history size\n"
      "\t   | --maxls    INT     (l-bfgs) max linesearch iters\n"
      "\t   | --eta0     FLOAT   (sgd-l1) learning rate\n"
      "\t   | --alpha    FLOAT   (sgd-l1) exp decay parameter\n"
      "\t   | --kappa    FLOAT   (bcd)    stability parameter\n"
      "\t   | --stpmin   FLOAT   (rprop)  minimum step size\n"
      "\t   | --stpmax   FLOAT   (rprop)  maximum step size\n"
      "\t   | --stpinc   FLOAT   (rprop)  step increment factor\n"
      "\t   | --stpdec   FLOAT   (rprop)  step decrement factor\n"
      "\t   | --cutoff           (rprop)  alternate projection\n"
      "\n"
      "Labelling mode:\n"
      "    %1$s label [options] [input data] [output data]\n"
      "\t   | --me               force maxent mode\n"
      "\t-m | --model    FILE    model file to load\n"
      "\t-l | --label            output only labels\n"
      "\t-c | --check            input is already labeled\n"
      "\t-s | --score            add scores to output\n"
      "\t-p | --post             label using posteriors\n"
      "\t-n | --nbest    INT     output n-best list\n"
      "\t   | --force            use forced decoding\n"
      "\n"
      "Dumping mode\n"
      "    %1$s dump [input model] [output text]\n";
  fprintf(stderr, msg, pname);
}


x86 assembly (clang, -O0):
<opt_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ebd(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
lea    0xed0(%rip),%rsi
call   1030 <fprintf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<opt_help>:
mov    %rdi,%rdx
mov    0x2ec6(%rip),%rax
mov    (%rax),%edi
lea    0xedd(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@opt_help.msg = internal constant [2128 x i8] c"Global switchs:\0A\09-h | --help display this help message\0A\09 | --version display version information\0A\0ATraining mode:\0A %1$s train [options] [input data] [model file]\0A\09 | --me force maxent mode\0A\09-T | --type STRING type of model to train\0A\09-a | --algo STRING training algorithm to use\0A\09-p | --pattern FILE patterns for extracting features\0A\09-m | --model FILE model file to preload\0A\09-d | --devel FILE development dataset\0A\09 | --rstate FILE optimizer state to restore\0A\09 | --sstate FILE optimizer state to save\0A\09-c | --compact compact model after training\0A\09-t | --nthread INT number of worker threads\0A\09-j | --jobsize INT job size for worker threads\0A\09-s | --sparse enable sparse forward/backward\0A\09-i | --maxiter INT maximum number of iterations\0A\09-1 |\C2\A0--rho1 FLOAT l1 penalty parameter\0A\09-2 | --rho2 FLOAT l2 penalty parameter\0A\09-o | --objwin INT convergence window size\0A\09-w | --stopwin INT stop window size\0A\09-e | --stopeps FLOAT stop epsilon value\0A\09 | --clip (l-bfgs) clip gradient\0A\09 | --histsz INT (l-bfgs) history size\0A\09 | --maxls INT (l-bfgs) max linesearch iters\0A\09 | --eta0 FLOAT (sgd-l1) learning rate\0A\09 | --alpha FLOAT (sgd-l1) exp decay parameter\0A\09 | --kappa FLOAT (bcd) stability parameter\0A\09 | --stpmin FLOAT (rprop) minimum step size\0A\09 | --stpmax FLOAT (rprop) maximum step size\0A\09 | --stpinc FLOAT (rprop) step increment factor\0A\09 | --stpdec FLOAT (rprop) step decrement factor\0A\09 | --cutoff (rprop) alternate projection\0A\0ALabelling mode:\0A %1$s label [options] [input data] [output data]\0A\09 | --me force maxent mode\0A\09-m | --model FILE model file to load\0A\09-l | --label output only labels\0A\09-c | --check input is already labeled\0A\09-s | --score add scores to output\0A\09-p | --post label using posteriors\0A\09-n | --nbest INT output n-best list\0A\09 | --force use forced decoding\0A\0ADumping mode\0A %1$s dump [input model] [output text]\0A\00"
@stderr = global i32 0
define void @opt_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 ([2128 x i8], [2128 x i8]* @opt_help.msg, i64 0, i64 0), i8* %4)
ret void
}

LLVM IR (-O2):
@opt_help.msg = internal constant [2128 x i8] c"Global switchs:\0A\09-h | --help display this help message\0A\09 | --version display version information\0A\0ATraining mode:\0A %1$s train [options] [input data] [model file]\0A\09 | --me force maxent mode\0A\09-T | --type STRING type of model to train\0A\09-a | --algo STRING training algorithm to use\0A\09-p | --pattern FILE patterns for extracting features\0A\09-m | --model FILE model file to preload\0A\09-d | --devel FILE development dataset\0A\09 | --rstate FILE optimizer state to restore\0A\09 | --sstate FILE optimizer state to save\0A\09-c | --compact compact model after training\0A\09-t | --nthread INT number of worker threads\0A\09-j | --jobsize INT job size for worker threads\0A\09-s | --sparse enable sparse forward/backward\0A\09-i | --maxiter INT maximum number of iterations\0A\09-1 |\C2\A0--rho1 FLOAT l1 penalty parameter\0A\09-2 | --rho2 FLOAT l2 penalty parameter\0A\09-o | --objwin INT convergence window size\0A\09-w | --stopwin INT stop window size\0A\09-e | --stopeps FLOAT stop epsilon value\0A\09 | --clip (l-bfgs) clip gradient\0A\09 | --histsz INT (l-bfgs) history size\0A\09 | --maxls INT (l-bfgs) max linesearch iters\0A\09 | --eta0 FLOAT (sgd-l1) learning rate\0A\09 | --alpha FLOAT (sgd-l1) exp decay parameter\0A\09 | --kappa FLOAT (bcd) stability parameter\0A\09 | --stpmin FLOAT (rprop) minimum step size\0A\09 | --stpmax FLOAT (rprop) maximum step size\0A\09 | --stpinc FLOAT (rprop) step increment factor\0A\09 | --stpdec FLOAT (rprop) step decrement factor\0A\09 | --cutoff (rprop) alternate projection\0A\0ALabelling mode:\0A %1$s label [options] [input data] [output data]\0A\09 | --me force maxent mode\0A\09-m | --model FILE model file to load\0A\09-l | --label output only labels\0A\09-c | --check input is already labeled\0A\09-s | --score add scores to output\0A\09-p | --post label using posteriors\0A\09-n | --nbest INT output n-best list\0A\09 | --force use forced decoding\0A\0ADumping mode\0A %1$s dump [input model] [output text]\0A\00"
@stderr = global i32 0
define void @opt_help(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([2128 x i8], [2128 x i8]* @opt_help.msg, i64 0, i64 0), i8* %0)
ret void
}