#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: svm-train [options] training_set_file [model_file]\n"
         "options:\n"
         "-s svm_type : set type of SVM (default 0)\n"
         "	0 -- C-SVC\n"
         "	1 -- nu-SVC\n"
         "	2 -- one-class SVM\n"
         "	3 -- epsilon-SVR\n"
         "	4 -- nu-SVR\n"
         "-t kernel_type : set type of kernel function (default 2)\n"
         "	0 -- linear: u'*v\n"
         "	1 -- polynomial: (gamma*u'*v + coef0)^degree\n"
         "	2 -- radial basis function: exp(-gamma*|u-v|^2)\n"
         "	3 -- sigmoid: tanh(gamma*u'*v + coef0)\n"
         "-d degree : set degree in kernel function (default 3)\n"
         "-g gamma : set gamma in kernel function (default 1/k)\n"
         "-r coef0 : set coef0 in kernel function (default 0)\n"
         "-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR "
         "(default 1)\n"
         "-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR "
         "(default 0.5)\n"
         "-p epsilon : set the epsilon in loss function of epsilon-SVR "
         "(default 0.1)\n"
         "-m cachesize : set cache memory size in MB (default 100)\n"
         "-e epsilon : set tolerance of termination criterion (default 0.001)\n"
         "-h shrinking: whether to use the shrinking heuristics, 0 or 1 "
         "(default 1)\n"
         "-b probability_estimates: whether to train a SVC or SVR model for "
         "probability estimates, 0 or 1 (default 0)\n"
         "-wi weight: set the parameter C of class i to weight*C, for C-SVC "
         "(default 1)\n"
         "-v n: n-fold cross validation mode\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 = [1208 x i8] c"Usage: svm-train [options] training_set_file [model_file]\0Aoptions:\0A-s svm_type : set type of SVM (default 0)\0A\090 -- C-SVC\0A\091 -- nu-SVC\0A\092 -- one-class SVM\0A\093 -- epsilon-SVR\0A\094 -- nu-SVR\0A-t kernel_type : set type of kernel function (default 2)\0A\090 -- linear: u'*v\0A\091 -- polynomial: (gamma*u'*v + coef0)^degree\0A\092 -- radial basis function: exp(-gamma*|u-v|^2)\0A\093 -- sigmoid: tanh(gamma*u'*v + coef0)\0A-d degree : set degree in kernel function (default 3)\0A-g gamma : set gamma in kernel function (default 1/k)\0A-r coef0 : set coef0 in kernel function (default 0)\0A-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)\0A-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)\0A-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)\0A-m cachesize : set cache memory size in MB (default 100)\0A-e epsilon : set tolerance of termination criterion (default 0.001)\0A-h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)\0A-b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)\0A-wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1)\0A-v n: n-fold cross validation mode\0A\00"
define void @exit_with_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1208 x i8], [1208 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [1207 x i8] c"Usage: svm-train [options] training_set_file [model_file]\0Aoptions:\0A-s svm_type : set type of SVM (default 0)\0A\090 -- C-SVC\0A\091 -- nu-SVC\0A\092 -- one-class SVM\0A\093 -- epsilon-SVR\0A\094 -- nu-SVR\0A-t kernel_type : set type of kernel function (default 2)\0A\090 -- linear: u'*v\0A\091 -- polynomial: (gamma*u'*v + coef0)^degree\0A\092 -- radial basis function: exp(-gamma*|u-v|^2)\0A\093 -- sigmoid: tanh(gamma*u'*v + coef0)\0A-d degree : set degree in kernel function (default 3)\0A-g gamma : set gamma in kernel function (default 1/k)\0A-r coef0 : set coef0 in kernel function (default 0)\0A-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)\0A-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)\0A-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)\0A-m cachesize : set cache memory size in MB (default 100)\0A-e epsilon : set tolerance of termination criterion (default 0.001)\0A-h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)\0A-b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)\0A-wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1)\0A-v n: n-fold cross validation mode\00"
define void @exit_with_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1207 x i8], [1207 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 1)
unreachable
}