#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"
      "	0 -- L2-regularized logistic regression\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 -- multi-class support vector classification by Crammer and Singer\n"
      "	5 -- L1-regularized L2-loss support vector classification\n"
      "	6 -- L1-regularized logistic regression\n"
      "-c cost : set the parameter C (default 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 1, 3, and 4\n"
      "		Dual maximal violation <= eps; similar to libsvm (default "
      "0.1)\n"
      "	-s 5 and 6\n"
      "		|f'(w)|_inf <= eps*min(pos,neg)/l*|f'(w0)|_inf,\n"
      "		where f is the primal function (default 0.01)\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"
      "-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 = [1200 x i8] c"Usage: train [options] training_set_file [model_file]\0Aoptions:\0A-s type : set type of solver (default 1)\0A\090 -- L2-regularized logistic regression\0A\091 -- L2-regularized L2-loss support vector classification (dual)\0A\092 -- L2-regularized L2-loss support vector classification (primal)\0A\093 -- L2-regularized L1-loss support vector classification (dual)\0A\094 -- multi-class support vector classification by Crammer and Singer\0A\095 -- L1-regularized L2-loss support vector classification\0A\096 -- L1-regularized logistic regression\0A-c cost : set the parameter C (default 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 1, 3, and 4\0A\09\09Dual maximal violation <= eps; similar to libsvm (default 0.1)\0A\09-s 5 and 6\0A\09\09|f'(w)|_inf <= eps*min(pos,neg)/l*|f'(w0)|_inf,\0A\09\09where f is the primal function (default 0.01)\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-q : quiet mode (no outputs)\0A\00"
define void @exit_with_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1200 x i8], [1200 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [1199 x i8] c"Usage: train [options] training_set_file [model_file]\0Aoptions:\0A-s type : set type of solver (default 1)\0A\090 -- L2-regularized logistic regression\0A\091 -- L2-regularized L2-loss support vector classification (dual)\0A\092 -- L2-regularized L2-loss support vector classification (primal)\0A\093 -- L2-regularized L1-loss support vector classification (dual)\0A\094 -- multi-class support vector classification by Crammer and Singer\0A\095 -- L1-regularized L2-loss support vector classification\0A\096 -- L1-regularized logistic regression\0A-c cost : set the parameter C (default 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 1, 3, and 4\0A\09\09Dual maximal violation <= eps; similar to libsvm (default 0.1)\0A\09-s 5 and 6\0A\09\09|f'(w)|_inf <= eps*min(pos,neg)/l*|f'(w0)|_inf,\0A\09\09where f is the primal function (default 0.01)\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-q : quiet mode (no outputs)\00"
define void @exit_with_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1199 x i8], [1199 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 1)
unreachable
}