#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 2)\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"
      "-c cost : set the parameter C (default 1)\n"
      "-p epsilon : set the epsilon in loss function of SVR (default 0.1)\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.001)\n"
      "	-s 1, 3, 4, and 7\n"
      "		Dual maximal violation <= eps; similar to libsvm (default "
      "0.1)\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"
      "-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 parameter C (only for -s 0 and 2)\n"
      "-n nr_thread : parallel version with [nr_thread] threads (default 1; "
      "only for -s 0, 2, 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 = [1844 x i8] c"Usage: train [options] training_set_file [model_file]\0Aoptions:\0A-s type : set type of solver (default 2)\0A for multi-class classification\0A\09 0 -- L2-regularized logistic regression (primal)\0A\09 1 -- L2-regularized L2-loss support vector classification (dual)\0A\09 2 -- L2-regularized L2-loss support vector classification (primal)\0A\09 3 -- L2-regularized L1-loss support vector classification (dual)\0A\09 4 -- support vector classification by Crammer and Singer\0A\09 5 -- L1-regularized L2-loss support vector classification\0A\09 6 -- L1-regularized logistic regression\0A\09 7 -- L2-regularized logistic regression (dual)\0A for regression\0A\0911 -- L2-regularized L2-loss support vector regression (primal)\0A\0912 -- L2-regularized L2-loss support vector regression (dual)\0A\0913 -- L2-regularized L1-loss support vector regression (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-e epsilon : set tolerance of termination criterion\0A\09-s 0 and 2\0A\09\09|f'(w)|_2 <= eps*min(pos,neg)/l*|f'(w0)|_2,\0A\09\09where f is the primal function and pos/neg are # of\0A\09\09positive/negative data (default 0.01)\0A\09-s 11\0A\09\09|f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.001)\0A\09-s 1, 3, 4, and 7\0A\09\09Dual maximal violation <= eps; similar to libsvm (default 0.1)\0A\09-s 5 and 6\0A\09\09|f'(w)|_1 <= eps*min(pos,neg)/l*|f'(w0)|_1,\0A\09\09where f is the primal function (default 0.01)\0A\09-s 12 and 13\0A\09\09|f'(alpha)|_1 <= eps |f'(alpha0)|,\0A\09\09where 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-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 parameter C (only for -s 0 and 2)\0A-n nr_thread : parallel version with [nr_thread] threads (default 1; only for -s 0, 2, 11)\0A-q : quiet mode (no outputs)\0A\00"
define void @exit_with_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1844 x i8], [1844 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [1843 x i8] c"Usage: train [options] training_set_file [model_file]\0Aoptions:\0A-s type : set type of solver (default 2)\0A for multi-class classification\0A\09 0 -- L2-regularized logistic regression (primal)\0A\09 1 -- L2-regularized L2-loss support vector classification (dual)\0A\09 2 -- L2-regularized L2-loss support vector classification (primal)\0A\09 3 -- L2-regularized L1-loss support vector classification (dual)\0A\09 4 -- support vector classification by Crammer and Singer\0A\09 5 -- L1-regularized L2-loss support vector classification\0A\09 6 -- L1-regularized logistic regression\0A\09 7 -- L2-regularized logistic regression (dual)\0A for regression\0A\0911 -- L2-regularized L2-loss support vector regression (primal)\0A\0912 -- L2-regularized L2-loss support vector regression (dual)\0A\0913 -- L2-regularized L1-loss support vector regression (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-e epsilon : set tolerance of termination criterion\0A\09-s 0 and 2\0A\09\09|f'(w)|_2 <= eps*min(pos,neg)/l*|f'(w0)|_2,\0A\09\09where f is the primal function and pos/neg are # of\0A\09\09positive/negative data (default 0.01)\0A\09-s 11\0A\09\09|f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.001)\0A\09-s 1, 3, 4, and 7\0A\09\09Dual maximal violation <= eps; similar to libsvm (default 0.1)\0A\09-s 5 and 6\0A\09\09|f'(w)|_1 <= eps*min(pos,neg)/l*|f'(w0)|_1,\0A\09\09where f is the primal function (default 0.01)\0A\09-s 12 and 13\0A\09\09|f'(alpha)|_1 <= eps |f'(alpha0)|,\0A\09\09where 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-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 parameter C (only for -s 0 and 2)\0A-n nr_thread : parallel version with [nr_thread] threads (default 1; only for -s 0, 2, 11)\0A-q : quiet mode (no outputs)\00"
define void @exit_with_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1843 x i8], [1843 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 1)
unreachable
}