#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 0)\n"
      "	0 -- L2-regularized L2-loss support vector classification (primal)\n"
      "	1 -- L2-regularized L2-loss support vector regression (primal)\n"
      "	2 -- L2-regularized L1-loss support vector regression (dual)\n"
      "	3 -- L2-regularized L2-loss rankSVM (direct count)\n"
      "	4 -- L2-regularized L2-loss rankSVM (y red-black tree)\n"
      "	5 -- L2-regularized L2-loss rankSVM (wx red-black tree)\n"
      "	6 -- L2-regularized L2-loss rankSVM (selection tree)\n"
      "	7 -- L2-regularized L2-loss rankSVM (y AVL tree)\n"
      "	8 -- L2-regularized L2-loss rankSVM (y AA tree)\n"
      "	9 -- PRSVM+\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\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, 4, 5, 6, 7, 8, and 9\n"
      "		|f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.001)\n"
      "	-s 2\n"
      "		Dual maximal violation <= eps; similar to libsvm (default "
      "0.1)\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 = [1114 x i8] c"Usage: train [options] training_set_file [model_file]\0Aoptions:\0A-s type : set type of solver (default 0)\0A\090 -- L2-regularized L2-loss support vector classification (primal)\0A\091 -- L2-regularized L2-loss support vector regression (primal)\0A\092 -- L2-regularized L1-loss support vector regression (dual)\0A\093 -- L2-regularized L2-loss rankSVM (direct count)\0A\094 -- L2-regularized L2-loss rankSVM (y red-black tree)\0A\095 -- L2-regularized L2-loss rankSVM (wx red-black tree)\0A\096 -- L2-regularized L2-loss rankSVM (selection tree)\0A\097 -- L2-regularized L2-loss rankSVM (y AVL tree)\0A\098 -- L2-regularized L2-loss rankSVM (y AA tree)\0A\099 -- PRSVM+\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\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, 4, 5, 6, 7, 8, and 9\0A\09\09|f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.001)\0A\09-s 2\0A\09\09Dual maximal violation <= eps; similar to libsvm (default 0.1)\0A-q : quiet mode (no outputs)\0A\00"
define void @exit_with_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1114 x i8], [1114 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [1113 x i8] c"Usage: train [options] training_set_file [model_file]\0Aoptions:\0A-s type : set type of solver (default 0)\0A\090 -- L2-regularized L2-loss support vector classification (primal)\0A\091 -- L2-regularized L2-loss support vector regression (primal)\0A\092 -- L2-regularized L1-loss support vector regression (dual)\0A\093 -- L2-regularized L2-loss rankSVM (direct count)\0A\094 -- L2-regularized L2-loss rankSVM (y red-black tree)\0A\095 -- L2-regularized L2-loss rankSVM (wx red-black tree)\0A\096 -- L2-regularized L2-loss rankSVM (selection tree)\0A\097 -- L2-regularized L2-loss rankSVM (y AVL tree)\0A\098 -- L2-regularized L2-loss rankSVM (y AA tree)\0A\099 -- PRSVM+\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\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, 4, 5, 6, 7, 8, and 9\0A\09\09|f'(w)|_2 <= eps*|f'(w0)|_2 (default 0.001)\0A\09-s 2\0A\09\09Dual maximal violation <= eps; similar to libsvm (default 0.1)\0A-q : quiet mode (no outputs)\00"
define void @exit_with_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1113 x i8], [1113 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 1)
unreachable
}