#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        (multi-class classification)\n"
         "    1 -- nu-SVC        (multi-class classification)\n"
         "    2 -- one-class SVM\n"
         "    3 -- epsilon-SVR    (regression)\n"
         "    4 -- nu-SVR        (regression)\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"
         "    4 -- precomputed kernel (kernel values in training_set_file)\n"
         "-d degree : set degree in kernel function (default 3)\n"
         "-g gamma : set gamma in kernel function (default 1/num_features)\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 20)\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"
         "-C start,end,step : find best cost\n"
         "-G start,end,step : find best gamma\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 = [1521 x i8] c"Usage: svm-train [options] training_set_file [model_file]\0Aoptions:\0A-s svm_type : set type of SVM (default 0)\0A 0 -- C-SVC (multi-class classification)\0A 1 -- nu-SVC (multi-class classification)\0A 2 -- one-class SVM\0A 3 -- epsilon-SVR (regression)\0A 4 -- nu-SVR (regression)\0A-t kernel_type : set type of kernel function (default 2)\0A 0 -- linear: u'*v\0A 1 -- polynomial: (gamma*u'*v + coef0)^degree\0A 2 -- radial basis function: exp(-gamma*|u-v|^2)\0A 3 -- sigmoid: tanh(gamma*u'*v + coef0)\0A 4 -- precomputed kernel (kernel values in training_set_file)\0A-d degree : set degree in kernel function (default 3)\0A-g gamma : set gamma in kernel function (default 1/num_features)\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 20)\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-C start,end,step : find best cost\0A-G start,end,step : find best gamma\0A-q : quiet mode (no outputs)\0A\00"
define void @exit_with_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1521 x i8], [1521 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [1520 x i8] c"Usage: svm-train [options] training_set_file [model_file]\0Aoptions:\0A-s svm_type : set type of SVM (default 0)\0A 0 -- C-SVC (multi-class classification)\0A 1 -- nu-SVC (multi-class classification)\0A 2 -- one-class SVM\0A 3 -- epsilon-SVR (regression)\0A 4 -- nu-SVR (regression)\0A-t kernel_type : set type of kernel function (default 2)\0A 0 -- linear: u'*v\0A 1 -- polynomial: (gamma*u'*v + coef0)^degree\0A 2 -- radial basis function: exp(-gamma*|u-v|^2)\0A 3 -- sigmoid: tanh(gamma*u'*v + coef0)\0A 4 -- precomputed kernel (kernel values in training_set_file)\0A-d degree : set degree in kernel function (default 3)\0A-g gamma : set gamma in kernel function (default 1/num_features)\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 20)\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-C start,end,step : find best cost\0A-G start,end,step : find best gamma\0A-q : quiet mode (no outputs)\00"
define void @exit_with_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1520 x i8], [1520 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 1)
unreachable
}