#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);
int /*<<< orphan*/ printf(char *);
void exit_with_help() {
  printf(
      "Usage: train [options] training_set_file [model_file]\n"
      "options:\n"
      "-s type : set type of solver (default 1)\n"
      "  for multi-class classification\n"
      "        0 -- L2-regularized logistic regression (primal)\n"
      "        1 -- L2-regularized L2-loss support vector classification "
      "(dual)\n"
      "        2 -- L2-regularized L2-loss support vector classification "
      "(primal)\n"
      "        3 -- L2-regularized L1-loss support vector classification "
      "(dual)\n"
      "        4 -- support vector classification by Crammer and Singer\n"
      "        5 -- L1-regularized L2-loss support vector classification\n"
      "        6 -- L1-regularized logistic regression\n"
      "        7 -- L2-regularized logistic regression (dual)\n"
      "  for regression\n"
      "       11 -- L2-regularized L2-loss support vector regression (primal)\n"
      "       12 -- L2-regularized L2-loss support vector regression (dual)\n"
      "       13 -- L2-regularized L1-loss support vector regression (dual)\n"
      "  for outlier detection\n"
      "       21 -- one-class support vector machine (dual)\n"
      "-c cost : set the parameter C (default 1)\n"
      "-p epsilon : set the epsilon in loss function of SVR (default 0.1)\n"
      "-n nu : set the parameter nu of one-class SVM (default 0.5)\n"
      "-e epsilon : set tolerance of termination criterion\n"
      "       -s 0 and 2\n"
      "               |f'(w)|_2 <= eps*min(pos,neg)/l*|f'(w0)|_2,\n"
      "               where f is the primal function and pos/neg are # of\n"
      "               positive/negative data (default 0.01)\n"
      "       -s 11\n"
      "               |f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.0001)\n"
      "       -s 1, 3, 4, 7, and 21\n"
      "               Dual maximal violation <= eps; similar to libsvm "
      "(default 0.1 except 0.01 for -s 21)\n"
      "      -s 5 and 6\n"
      "               |f'(w)|_1 <= eps*min(pos,neg)/l*|f'(w0)|_1,\n"
      "               where f is the primal function (default 0.01)\n"
      "       -s 12 and 13\n"
      "               |f'(alpha)|_1 <= eps |f'(alpha0)|,\n"
      "               where f is the dual function (default 0.1)\n"
      "-B bias : if bias >= 0, instance x becomes [x; bias]; if < 0, no bias "
      "term added (default -1)\n"
      "-R : not regularize the bias; must with -B 1 to have the bias; DON'T "
      "use this unless you know what it is\n"
      "       (for -s 0, 2, 5, 6, 11)\n"
      "-wi weight: weights adjust the parameter C of different classes (see "
      "README for details)\n"
      "-v n: n-fold cross validation mode\n"
      "-C : find parameters (C for -s 0, 2 and C, p for -s 11)\n"
      "-q : quiet mode (no outputs)\n");
  exit(1);
}


x86 assembly (clang, -O0):
<exit_with_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<exit_with_help>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [2277 x i8] c"Usage: train [options] training_set_file [model_file]\0Aoptions:\0A-s type : set type of solver (default 1)\0A for multi-class classification\0A 0 -- L2-regularized logistic regression (primal)\0A 1 -- L2-regularized L2-loss support vector classification (dual)\0A 2 -- L2-regularized L2-loss support vector classification (primal)\0A 3 -- L2-regularized L1-loss support vector classification (dual)\0A 4 -- support vector classification by Crammer and Singer\0A 5 -- L1-regularized L2-loss support vector classification\0A 6 -- L1-regularized logistic regression\0A 7 -- L2-regularized logistic regression (dual)\0A for regression\0A 11 -- L2-regularized L2-loss support vector regression (primal)\0A 12 -- L2-regularized L2-loss support vector regression (dual)\0A 13 -- L2-regularized L1-loss support vector regression (dual)\0A for outlier detection\0A 21 -- one-class support vector machine (dual)\0A-c cost : set the parameter C (default 1)\0A-p epsilon : set the epsilon in loss function of SVR (default 0.1)\0A-n nu : set the parameter nu of one-class SVM (default 0.5)\0A-e epsilon : set tolerance of termination criterion\0A -s 0 and 2\0A |f'(w)|_2 <= eps*min(pos,neg)/l*|f'(w0)|_2,\0A where f is the primal function and pos/neg are # of\0A positive/negative data (default 0.01)\0A -s 11\0A |f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.0001)\0A -s 1, 3, 4, 7, and 21\0A Dual maximal violation <= eps; similar to libsvm (default 0.1 except 0.01 for -s 21)\0A -s 5 and 6\0A |f'(w)|_1 <= eps*min(pos,neg)/l*|f'(w0)|_1,\0A where f is the primal function (default 0.01)\0A -s 12 and 13\0A |f'(alpha)|_1 <= eps |f'(alpha0)|,\0A where f is the dual function (default 0.1)\0A-B bias : if bias >= 0, instance x becomes [x; bias]; if < 0, no bias term added (default -1)\0A-R : not regularize the bias; must with -B 1 to have the bias; DON'T use this unless you know what it is\0A (for -s 0, 2, 5, 6, 11)\0A-wi weight: weights adjust the parameter C of different classes (see README for details)\0A-v n: n-fold cross validation mode\0A-C : find parameters (C for -s 0, 2 and C, p for -s 11)\0A-q : quiet mode (no outputs)\0A\00"
define void @exit_with_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([2277 x i8], [2277 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [2276 x i8] c"Usage: train [options] training_set_file [model_file]\0Aoptions:\0A-s type : set type of solver (default 1)\0A for multi-class classification\0A 0 -- L2-regularized logistic regression (primal)\0A 1 -- L2-regularized L2-loss support vector classification (dual)\0A 2 -- L2-regularized L2-loss support vector classification (primal)\0A 3 -- L2-regularized L1-loss support vector classification (dual)\0A 4 -- support vector classification by Crammer and Singer\0A 5 -- L1-regularized L2-loss support vector classification\0A 6 -- L1-regularized logistic regression\0A 7 -- L2-regularized logistic regression (dual)\0A for regression\0A 11 -- L2-regularized L2-loss support vector regression (primal)\0A 12 -- L2-regularized L2-loss support vector regression (dual)\0A 13 -- L2-regularized L1-loss support vector regression (dual)\0A for outlier detection\0A 21 -- one-class support vector machine (dual)\0A-c cost : set the parameter C (default 1)\0A-p epsilon : set the epsilon in loss function of SVR (default 0.1)\0A-n nu : set the parameter nu of one-class SVM (default 0.5)\0A-e epsilon : set tolerance of termination criterion\0A -s 0 and 2\0A |f'(w)|_2 <= eps*min(pos,neg)/l*|f'(w0)|_2,\0A where f is the primal function and pos/neg are # of\0A positive/negative data (default 0.01)\0A -s 11\0A |f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.0001)\0A -s 1, 3, 4, 7, and 21\0A Dual maximal violation <= eps; similar to libsvm (default 0.1 except 0.01 for -s 21)\0A -s 5 and 6\0A |f'(w)|_1 <= eps*min(pos,neg)/l*|f'(w0)|_1,\0A where f is the primal function (default 0.01)\0A -s 12 and 13\0A |f'(alpha)|_1 <= eps |f'(alpha0)|,\0A where f is the dual function (default 0.1)\0A-B bias : if bias >= 0, instance x becomes [x; bias]; if < 0, no bias term added (default -1)\0A-R : not regularize the bias; must with -B 1 to have the bias; DON'T use this unless you know what it is\0A (for -s 0, 2, 5, 6, 11)\0A-wi weight: weights adjust the parameter C of different classes (see README for details)\0A-v n: n-fold cross validation mode\0A-C : find parameters (C for -s 0, 2 and C, p for -s 11)\0A-q : quiet mode (no outputs)\00"
define void @exit_with_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2276 x i8], [2276 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 1)
unreachable
}