#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*/ copyright_notice();
int /*<<< orphan*/ print_struct_help();
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ wait_any_key();
void print_help() {
  printf("\nSVM-struct learning module: %s, %s, %s\n", "Multi-Class SVM",
         "V2.20", "14.08.08");
  printf("   includes SVM-struct %s for learning complex outputs, %s\n",
         "V3.10", "14.08.08");
  printf("   includes SVM-light %s quadratic optimizer, %s\n", "V6.20",
         "14.08.08");
  copyright_notice();
  printf("   usage: svm_struct_learn [options] example_file model_file\n\n");
  printf("Arguments:\n");
  printf("         example_file-> file with training data\n");
  printf("         model_file  -> file to store learned decision rule in\n");
  printf("General Options:\n");
  printf("         -?          -> this help\n");
  printf("         -v [0..3]   -> verbosity level (default 1)\n");
  printf("         -y [0..3]   -> verbosity level for svm_light (default 0)\n");
  printf("Learning Options:\n");
  printf("         -c float    -> C: trade-off between training error\n");
  printf("                        and margin (default 0.01)\n");
  printf("         -p [1,2]    -> L-norm to use for slack variables. Use 1 for "
         "L1-norm,\n");
  printf("                        use 2 for squared slacks. (default 1)\n");
  printf("         -o [1,2]    -> Rescaling method to use for loss.\n");
  printf("                        1: slack rescaling\n");
  printf("                        2: margin rescaling\n");
  printf("                        (default %d)\n", 2);
  printf("         -l [0..]    -> Loss function to use.\n");
  printf("                        0: zero/one loss\n");
  printf(
      "                        ?: see below in application specific options\n");
  printf("                        (default %d)\n", 0);
  printf("Optimization Options (see [2][5]):\n");
  printf("         -w [0,..,9] -> choice of structural learning algorithm "
         "(default %d):\n",
         (int)4);
  printf("                        0: n-slack algorithm described in [2]\n");
  printf("                        1: n-slack algorithm with shrinking "
         "heuristic\n");
  printf("                        2: 1-slack algorithm (primal) described in "
         "[5]\n");
  printf(
      "                        3: 1-slack algorithm (dual) described in [5]\n");
  printf("                        4: 1-slack algorithm (dual) with constraint "
         "cache [5]\n");
  printf("                        9: custom algorithm in "
         "svm_struct_learn_custom.c\n");
  printf("         -e float    -> epsilon: allow that tolerance for "
         "termination\n");
  printf("                        criterion (default %f)\n", 0.1);
  printf("         -k [1..]    -> number of new constraints to accumulate "
         "before\n");
  printf("                        recomputing the QP solution (default 100) "
         "(-w 0 and 1 only)\n");
  printf("         -f [5..]    -> number of constraints to cache for each "
         "example\n");
  printf("                        (default 5) (used with -w 4)\n");
  printf("         -b [1..100] -> percentage of training set for which to "
         "refresh cache\n");
  printf("                        when no epsilon violated constraint can be "
         "constructed\n");
  printf("                        from current cache (default 100%%) (used "
         "with -w 4)\n");
  printf("SVM-light Options for Solving QP Subproblems (see [3]):\n");
  printf("         -n [2..q]   -> number of new variables entering the working "
         "set\n");
  printf("                        in each svm-light iteration (default n = q). "
         "\n");
  printf("                        Set n < q to prevent zig-zagging.\n");
  printf("         -m [5..]    -> size of svm-light cache for kernel "
         "evaluations in MB\n");
  printf("                        (default 40) (used only for -w 1 with "
         "kernels)\n");
  printf("         -h [5..]    -> number of svm-light iterations a variable "
         "needs to be\n");
  printf("                        optimal before considered for shrinking "
         "(default 100)\n");
  printf("         -# int      -> terminate svm-light QP subproblem "
         "optimization, if no\n");
  printf("                        progress after this number of iterations.\n");
  printf("                        (default 100000)\n");
  printf("Kernel Options:\n");
  printf("         -t int      -> type of kernel function:\n");
  printf("                        0: linear (default)\n");
  printf("                        1: polynomial (s a*b+c)^d\n");
  printf("                        2: radial basis function exp(-gamma "
         "||a-b||^2)\n");
  printf("                        3: sigmoid tanh(s a*b + c)\n");
  printf("                        4: user defined kernel from kernel.h\n");
  printf("         -d int      -> parameter d in polynomial kernel\n");
  printf("         -g float    -> parameter gamma in rbf kernel\n");
  printf("         -s float    -> parameter s in sigmoid/poly kernel\n");
  printf("         -r float    -> parameter c in sigmoid/poly kernel\n");
  printf("         -u string   -> parameter of user defined kernel\n");
  printf("Output Options:\n");
  printf(
      "         -a string   -> write all alphas to this file after learning\n");
  printf(
      "                        (in the same order as in the training set)\n");
  printf("Application-Specific Options:\n");
  print_struct_help();
  wait_any_key();
  printf("\nMore details in:\n");
  printf("[1] T. Joachims, Learning to Align Sequences: A Maximum Margin "
         "Aproach.\n");
  printf("    Technical Report, September, 2003.\n");
  printf("[2] I. Tsochantaridis, T. Joachims, T. Hofmann, and Y. Altun, Large "
         "Margin\n");
  printf("    Methods for Structured and Interdependent Output Variables, "
         "Journal\n");
  printf("    of Machine Learning Research (JMLR), Vol. 6(Sep):1453-1484, "
         "2005.\n");
  printf("[3] T. Joachims, Making Large-Scale SVM Learning Practical. Advances "
         "in\n");
  printf("    Kernel Methods - Support Vector Learning, B. Schölkopf and C. "
         "Burges and\n");
  printf("    A. Smola (ed.), MIT Press, 1999.\n");
  printf("[4] T. Joachims, Learning to Classify Text Using Support Vector\n");
  printf(
      "    Machines: Methods, Theory, and Algorithms. Dissertation, Kluwer,\n");
  printf("    2002.\n");
  printf("[5] T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of "
         "Structural\n");
  printf("    SVMs, Machine Learning Journal, to appear.\n");
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xebd(%rip),%rdi
lea    0xedf(%rip),%rsi
lea    0xee8(%rip),%rdx
lea    0xee7(%rip),%rcx
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xee2(%rip),%rdi
lea    0xf17(%rip),%rsi
lea    0xecb(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xf08(%rip),%rdi
lea    0xf33(%rip),%rsi
lea    0xeaf(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
mov    $0x0,%al
call   1030 <copyright_notice@plt>
lea    0xf1d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xf4e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xf4c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xf6f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xfa1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xfa5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xfba(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xfe1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1016(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x101b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x104a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x106f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x10b0(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x10e1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x110e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x112c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x114b(%rip),%rdi
mov    $0x2,%esi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x115e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x117f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x119b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x110e(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x11c3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x11d9(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1215(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1246(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x127f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x12b9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x12f1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1332(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x136e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x13a7(%rip),%rdi
movsd  0xc9b(%rip),%xmm0
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x13c1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x13fb(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1442(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x147d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x14a5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x14e6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1528(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1567(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1592(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x15ce(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1607(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1634(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1674(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x16ae(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x16ef(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1730(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1771(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x17a6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x17c2(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x17c5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x17e9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1808(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x182d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1867(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x188d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x18bd(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x18e9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1912(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1940(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x196e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x199a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x199d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x19d5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1a0b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    $0x0,%al
call   1040 <print_struct_help@plt>
mov    $0x0,%al
call   1050 <wait_any_key@plt>
lea    0x1a0e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1a13(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1a4e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1a68(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1aa6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1ae1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1b1a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1b55(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1b96(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1bae(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1be1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1c19(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1c16(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1c57(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
push   %rbx
lea    0xeb0(%rip),%rdi
lea    0xed2(%rip),%rsi
lea    0xedb(%rip),%rdx
lea    0xeda(%rip),%rbx
mov    %rbx,%rcx
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xed2(%rip),%rdi
lea    0xf07(%rip),%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xefc(%rip),%rdi
lea    0xf27(%rip),%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1070 <printf@plt>
xor    %eax,%eax
call   1030 <copyright_notice@plt>
lea    0x1007(%rip),%rdi
call   1040 <puts@plt>
lea    0x1039(%rip),%rdi
call   1040 <puts@plt>
lea    0x1038(%rip),%rdi
call   1040 <puts@plt>
lea    0x105c(%rip),%rdi
call   1040 <puts@plt>
lea    0x108f(%rip),%rdi
call   1040 <puts@plt>
lea    0x1094(%rip),%rdi
call   1040 <puts@plt>
lea    0x10aa(%rip),%rdi
call   1040 <puts@plt>
lea    0x10d2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1108(%rip),%rdi
call   1040 <puts@plt>
lea    0x110e(%rip),%rdi
call   1040 <puts@plt>
lea    0x113e(%rip),%rdi
call   1040 <puts@plt>
lea    0x1164(%rip),%rdi
call   1040 <puts@plt>
lea    0x11a6(%rip),%rdi
call   1040 <puts@plt>
lea    0x11d8(%rip),%rdi
call   1040 <puts@plt>
lea    0x1206(%rip),%rdi
call   1040 <puts@plt>
lea    0x1225(%rip),%rdi
call   1040 <puts@plt>
lea    0xe55(%rip),%rbx
mov    %rbx,%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x122f(%rip),%rdi
call   1040 <puts@plt>
lea    0x1251(%rip),%rdi
call   1040 <puts@plt>
lea    0x126e(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x129b(%rip),%rdi
call   1040 <puts@plt>
lea    0xe29(%rip),%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x129f(%rip),%rdi
call   1040 <puts@plt>
lea    0x12d1(%rip),%rdi
call   1040 <puts@plt>
lea    0x130b(%rip),%rdi
call   1040 <puts@plt>
lea    0x1346(%rip),%rdi
call   1040 <puts@plt>
lea    0x137f(%rip),%rdi
call   1040 <puts@plt>
lea    0x13c1(%rip),%rdi
call   1040 <puts@plt>
lea    0x13fe(%rip),%rdi
call   1040 <puts@plt>
lea    0xe11(%rip),%rdi
movsd  0xcca(%rip),%xmm0
mov    $0x1,%al
call   1070 <printf@plt>
lea    0x1422(%rip),%rdi
call   1040 <puts@plt>
lea    0x145d(%rip),%rdi
call   1040 <puts@plt>
lea    0x14a5(%rip),%rdi
call   1040 <puts@plt>
lea    0x14e1(%rip),%rdi
call   1040 <puts@plt>
lea    0x150a(%rip),%rdi
call   1040 <puts@plt>
lea    0x154c(%rip),%rdi
call   1040 <puts@plt>
lea    0xde3(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x1581(%rip),%rdi
call   1040 <puts@plt>
lea    0x15ad(%rip),%rdi
call   1040 <puts@plt>
lea    0x15ea(%rip),%rdi
call   1040 <puts@plt>
lea    0x1624(%rip),%rdi
call   1040 <puts@plt>
lea    0x1652(%rip),%rdi
call   1040 <puts@plt>
lea    0x1693(%rip),%rdi
call   1040 <puts@plt>
lea    0x16ce(%rip),%rdi
call   1040 <puts@plt>
lea    0x1710(%rip),%rdi
call   1040 <puts@plt>
lea    0x1752(%rip),%rdi
call   1040 <puts@plt>
lea    0x1794(%rip),%rdi
call   1040 <puts@plt>
lea    0x17ca(%rip),%rdi
call   1040 <puts@plt>
lea    0x17e7(%rip),%rdi
call   1040 <puts@plt>
lea    0x17eb(%rip),%rdi
call   1040 <puts@plt>
lea    0x1810(%rip),%rdi
call   1040 <puts@plt>
lea    0x1830(%rip),%rdi
call   1040 <puts@plt>
lea    0x1856(%rip),%rdi
call   1040 <puts@plt>
lea    0x1891(%rip),%rdi
call   1040 <puts@plt>
lea    0x18b8(%rip),%rdi
call   1040 <puts@plt>
lea    0x18e9(%rip),%rdi
call   1040 <puts@plt>
lea    0x1916(%rip),%rdi
call   1040 <puts@plt>
lea    0x1940(%rip),%rdi
call   1040 <puts@plt>
lea    0x196f(%rip),%rdi
call   1040 <puts@plt>
lea    0x199e(%rip),%rdi
call   1040 <puts@plt>
lea    0x19cb(%rip),%rdi
call   1040 <puts@plt>
lea    0x19cf(%rip),%rdi
call   1040 <puts@plt>
lea    0x1a08(%rip),%rdi
call   1040 <puts@plt>
lea    0x1a3f(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
call   1050 <print_struct_help@plt>
xor    %eax,%eax
call   1060 <wait_any_key@plt>
lea    0x1a43(%rip),%rdi
call   1040 <puts@plt>
lea    0x1a49(%rip),%rdi
call   1040 <puts@plt>
lea    0x1a85(%rip),%rdi
call   1040 <puts@plt>
lea    0x1aa0(%rip),%rdi
call   1040 <puts@plt>
lea    0x1adf(%rip),%rdi
call   1040 <puts@plt>
lea    0x1b1b(%rip),%rdi
call   1040 <puts@plt>
lea    0x1b55(%rip),%rdi
call   1040 <puts@plt>
lea    0x1b91(%rip),%rdi
call   1040 <puts@plt>
lea    0x1bd3(%rip),%rdi
call   1040 <puts@plt>
lea    0x1bec(%rip),%rdi
call   1040 <puts@plt>
lea    0x1c20(%rip),%rdi
call   1040 <puts@plt>
lea    0x1c59(%rip),%rdi
call   1040 <puts@plt>
lea    0x1c57(%rip),%rdi
call   1040 <puts@plt>
lea    0x1c99(%rip),%rdi
pop    %rbx
jmp    1040 <puts@plt>

LLVM IR (-O0):
@.str = [41 x i8] c"\0ASVM-struct learning module: %s, %s, %s\0A\00"
@.str.1 = [16 x i8] c"Multi-Class SVM\00"
@.str.2 = [6 x i8] c"V2.20\00"
@.str.3 = [9 x i8] c"14.08.08\00"
@.str.4 = [60 x i8] c" includes SVM-struct %s for learning complex outputs, %s\0A\00"
@.str.5 = [6 x i8] c"V3.10\00"
@.str.6 = [50 x i8] c" includes SVM-light %s quadratic optimizer, %s\0A\00"
@.str.7 = [6 x i8] c"V6.20\00"
@.str.8 = [63 x i8] c" usage: svm_struct_learn [options] example_file model_file\0A\0A\00"
@.str.9 = [12 x i8] c"Arguments:\0A\00"
@.str.10 = [49 x i8] c" example_file-> file with training data\0A\00"
@.str.11 = [64 x i8] c" model_file -> file to store learned decision rule in\0A\00"
@.str.12 = [18 x i8] c"General Options:\0A\00"
@.str.13 = [35 x i8] c" -? -> this help\0A\00"
@.str.14 = [53 x i8] c" -v [0..3] -> verbosity level (default 1)\0A\00"
@.str.15 = [67 x i8] c" -y [0..3] -> verbosity level for svm_light (default 0)\0A\00"
@.str.16 = [19 x i8] c"Learning Options:\0A\00"
@.str.17 = [61 x i8] c" -c float -> C: trade-off between training error\0A\00"
@.str.18 = [51 x i8] c" and margin (default 0.01)\0A\00"
@.str.19 = [79 x i8] c" -p [1,2] -> L-norm to use for slack variables. Use 1 for L1-norm,\0A\00"
@.str.20 = [63 x i8] c" use 2 for squared slacks. (default 1)\0A\00"
@.str.21 = [59 x i8] c" -o [1,2] -> Rescaling method to use for loss.\0A\00"
@.str.22 = [44 x i8] c" 1: slack rescaling\0A\00"
@.str.23 = [45 x i8] c" 2: margin rescaling\0A\00"
@.str.24 = [38 x i8] c" (default %d)\0A\00"
@.str.25 = [47 x i8] c" -l [0..] -> Loss function to use.\0A\00"
@.str.26 = [42 x i8] c" 0: zero/one loss\0A\00"
@.str.27 = [70 x i8] c" ?: see below in application specific options\0A\00"
@.str.28 = [36 x i8] c"Optimization Options (see [2][5]):\0A\00"
@.str.29 = [79 x i8] c" -w [0,..,9] -> choice of structural learning algorithm (default %d):\0A\00"
@.str.30 = [63 x i8] c" 0: n-slack algorithm described in [2]\0A\00"
@.str.31 = [71 x i8] c" 1: n-slack algorithm with shrinking heuristic\0A\00"
@.str.32 = [72 x i8] c" 2: 1-slack algorithm (primal) described in [5]\0A\00"
@.str.33 = [70 x i8] c" 3: 1-slack algorithm (dual) described in [5]\0A\00"
@.str.34 = [79 x i8] c" 4: 1-slack algorithm (dual) with constraint cache [5]\0A\00"
@.str.35 = [74 x i8] c" 9: custom algorithm in svm_struct_learn_custom.c\0A\00"
@.str.36 = [71 x i8] c" -e float -> epsilon: allow that tolerance for termination\0A\00"
@.str.37 = [48 x i8] c" criterion (default %f)\0A\00"
@.str.38 = [72 x i8] c" -k [1..] -> number of new constraints to accumulate before\0A\00"
@.str.39 = [85 x i8] c" recomputing the QP solution (default 100) (-w 0 and 1 only)\0A\00"
@.str.40 = [73 x i8] c" -f [5..] -> number of constraints to cache for each example\0A\00"
@.str.41 = [54 x i8] c" (default 5) (used with -w 4)\0A\00"
@.str.42 = [79 x i8] c" -b [1..100] -> percentage of training set for which to refresh cache\0A\00"
@.str.43 = [80 x i8] c" when no epsilon violated constraint can be constructed\0A\00"
@.str.44 = [77 x i8] c" from current cache (default 100%%) (used with -w 4)\0A\00"
@.str.45 = [57 x i8] c"SVM-light Options for Solving QP Subproblems (see [3]):\0A\00"
@.str.46 = [74 x i8] c" -n [2..q] -> number of new variables entering the working set\0A\00"
@.str.47 = [71 x i8] c" in each svm-light iteration (default n = q). \0A\00"
@.str.48 = [59 x i8] c" Set n < q to prevent zig-zagging.\0A\00"
@.str.49 = [78 x i8] c" -m [5..] -> size of svm-light cache for kernel evaluations in MB\0A\00"
@.str.50 = [72 x i8] c" (default 40) (used only for -w 1 with kernels)\0A\00"
@.str.51 = [79 x i8] c" -h [5..] -> number of svm-light iterations a variable needs to be\0A\00"
@.str.52 = [79 x i8] c" optimal before considered for shrinking (default 100)\0A\00"
@.str.53 = [79 x i8] c" -# int -> terminate svm-light QP subproblem optimization, if no\0A\00"
@.str.54 = [67 x i8] c" progress after this number of iterations.\0A\00"
@.str.55 = [42 x i8] c" (default 100000)\0A\00"
@.str.56 = [17 x i8] c"Kernel Options:\0A\00"
@.str.57 = [50 x i8] c" -t int -> type of kernel function:\0A\00"
@.str.58 = [45 x i8] c" 0: linear (default)\0A\00"
@.str.59 = [51 x i8] c" 1: polynomial (s a*b+c)^d\0A\00"
@.str.60 = [72 x i8] c" 2: radial basis function exp(-gamma ||a-b||^2)\0A\00"
@.str.61 = [52 x i8] c" 3: sigmoid tanh(s a*b + c)\0A\00"
@.str.62 = [62 x i8] c" 4: user defined kernel from kernel.h\0A\00"
@.str.63 = [58 x i8] c" -d int -> parameter d in polynomial kernel\0A\00"
@.str.64 = [55 x i8] c" -g float -> parameter gamma in rbf kernel\0A\00"
@.str.65 = [60 x i8] c" -s float -> parameter s in sigmoid/poly kernel\0A\00"
@.str.66 = [60 x i8] c" -r float -> parameter c in sigmoid/poly kernel\0A\00"
@.str.67 = [58 x i8] c" -u string -> parameter of user defined kernel\0A\00"
@.str.68 = [17 x i8] c"Output Options:\0A\00"
@.str.69 = [70 x i8] c" -a string -> write all alphas to this file after learning\0A\00"
@.str.70 = [68 x i8] c" (in the same order as in the training set)\0A\00"
@.str.71 = [31 x i8] c"Application-Specific Options:\0A\00"
@.str.72 = [19 x i8] c"\0AMore details in:\0A\00"
@.str.73 = [73 x i8] c"[1] T. Joachims, Learning to Align Sequences: A Maximum Margin Aproach.\0A\00"
@.str.74 = [40 x i8] c" Technical Report, September, 2003.\0A\00"
@.str.75 = [76 x i8] c"[2] I. Tsochantaridis, T. Joachims, T. Hofmann, and Y. Altun, Large Margin\0A\00"
@.str.76 = [73 x i8] c" Methods for Structured and Interdependent Output Variables, Journal\0A\00"
@.str.77 = [71 x i8] c" of Machine Learning Research (JMLR), Vol. 6(Sep):1453-1484, 2005.\0A\00"
@.str.78 = [73 x i8] c"[3] T. Joachims, Making Large-Scale SVM Learning Practical. Advances in\0A\00"
@.str.79 = [79 x i8] c" Kernel Methods - Support Vector Learning, B. Sch\C3\B6lkopf and C. Burges and\0A\00"
@.str.80 = [38 x i8] c" A. Smola (ed.), MIT Press, 1999.\0A\00"
@.str.81 = [65 x i8] c"[4] T. Joachims, Learning to Classify Text Using Support Vector\0A\00"
@.str.82 = [70 x i8] c" Machines: Methods, Theory, and Algorithms. Dissertation, Kluwer,\0A\00"
@.str.83 = [11 x i8] c" 2002.\0A\00"
@.str.84 = [79 x i8] c"[5] T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of Structural\0A\00"
@.str.85 = [48 x i8] c" SVMs, Machine Learning Journal, to appear.\0A\00"
define void @print_help() {
%1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%4 = call i32 (...) @copyright_notice()
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.8, i64 0, i64 0))
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.9, i64 0, i64 0))
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.10, i64 0, i64 0))
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.11, i64 0, i64 0))
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0))
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.13, i64 0, i64 0))
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.14, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.15, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0))
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.17, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.18, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.19, i64 0, i64 0))
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.20, i64 0, i64 0))
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.21, i64 0, i64 0))
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.22, i64 0, i64 0))
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.23, i64 0, i64 0))
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.24, i64 0, i64 0), i32 2)
%22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.25, i64 0, i64 0))
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.26, i64 0, i64 0))
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.27, i64 0, i64 0))
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.24, i64 0, i64 0), i32 0)
%26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.28, i64 0, i64 0))
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.29, i64 0, i64 0), i32 4)
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.30, i64 0, i64 0))
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.31, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.32, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.33, i64 0, i64 0))
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.34, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.35, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.36, i64 0, i64 0))
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.37, i64 0, i64 0), double 1.000000e-01)
%36 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.38, i64 0, i64 0))
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([85 x i8], [85 x i8]* @.str.39, i64 0, i64 0))
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.40, i64 0, i64 0))
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.41, i64 0, i64 0))
%40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.42, i64 0, i64 0))
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.43, i64 0, i64 0))
%42 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.44, i64 0, i64 0))
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.45, i64 0, i64 0))
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.46, i64 0, i64 0))
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.47, i64 0, i64 0))
%46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.48, i64 0, i64 0))
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.49, i64 0, i64 0))
%48 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.50, i64 0, i64 0))
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.51, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.52, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.53, i64 0, i64 0))
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.54, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.55, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.56, i64 0, i64 0))
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.57, i64 0, i64 0))
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.58, i64 0, i64 0))
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.59, i64 0, i64 0))
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.60, i64 0, i64 0))
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.61, i64 0, i64 0))
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.62, i64 0, i64 0))
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.63, i64 0, i64 0))
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.64, i64 0, i64 0))
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.65, i64 0, i64 0))
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.66, i64 0, i64 0))
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.67, i64 0, i64 0))
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.68, i64 0, i64 0))
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.69, i64 0, i64 0))
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.70, i64 0, i64 0))
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.71, i64 0, i64 0))
%70 = call i32 (...) @print_struct_help()
%71 = call i32 (...) @wait_any_key()
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.72, i64 0, i64 0))
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.73, i64 0, i64 0))
%74 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.74, i64 0, i64 0))
%75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.75, i64 0, i64 0))
%76 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.76, i64 0, i64 0))
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.77, i64 0, i64 0))
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.78, i64 0, i64 0))
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.79, i64 0, i64 0))
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.80, i64 0, i64 0))
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.81, i64 0, i64 0))
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.82, i64 0, i64 0))
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.83, i64 0, i64 0))
%84 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.84, i64 0, i64 0))
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.85, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [41 x i8] c"\0ASVM-struct learning module: %s, %s, %s\0A\00"
@.str.1 = [16 x i8] c"Multi-Class SVM\00"
@.str.2 = [6 x i8] c"V2.20\00"
@.str.3 = [9 x i8] c"14.08.08\00"
@.str.4 = [60 x i8] c" includes SVM-struct %s for learning complex outputs, %s\0A\00"
@.str.5 = [6 x i8] c"V3.10\00"
@.str.6 = [50 x i8] c" includes SVM-light %s quadratic optimizer, %s\0A\00"
@.str.7 = [6 x i8] c"V6.20\00"
@.str.24 = [38 x i8] c" (default %d)\0A\00"
@.str.29 = [79 x i8] c" -w [0,..,9] -> choice of structural learning algorithm (default %d):\0A\00"
@.str.37 = [48 x i8] c" criterion (default %f)\0A\00"
@.str.44 = [77 x i8] c" from current cache (default 100%%) (used with -w 4)\0A\00"
@str = [62 x i8] c" usage: svm_struct_learn [options] example_file model_file\0A\00"
@str.86 = [11 x i8] c"Arguments:\00"
@str.87 = [48 x i8] c" example_file-> file with training data\00"
@str.88 = [63 x i8] c" model_file -> file to store learned decision rule in\00"
@str.89 = [17 x i8] c"General Options:\00"
@str.90 = [34 x i8] c" -? -> this help\00"
@str.91 = [52 x i8] c" -v [0..3] -> verbosity level (default 1)\00"
@str.92 = [66 x i8] c" -y [0..3] -> verbosity level for svm_light (default 0)\00"
@str.93 = [18 x i8] c"Learning Options:\00"
@str.94 = [60 x i8] c" -c float -> C: trade-off between training error\00"
@str.95 = [50 x i8] c" and margin (default 0.01)\00"
@str.96 = [78 x i8] c" -p [1,2] -> L-norm to use for slack variables. Use 1 for L1-norm,\00"
@str.97 = [62 x i8] c" use 2 for squared slacks. (default 1)\00"
@str.98 = [58 x i8] c" -o [1,2] -> Rescaling method to use for loss.\00"
@str.99 = [43 x i8] c" 1: slack rescaling\00"
@str.100 = [44 x i8] c" 2: margin rescaling\00"
@str.101 = [46 x i8] c" -l [0..] -> Loss function to use.\00"
@str.102 = [41 x i8] c" 0: zero/one loss\00"
@str.103 = [69 x i8] c" ?: see below in application specific options\00"
@str.104 = [35 x i8] c"Optimization Options (see [2][5]):\00"
@str.105 = [62 x i8] c" 0: n-slack algorithm described in [2]\00"
@str.106 = [70 x i8] c" 1: n-slack algorithm with shrinking heuristic\00"
@str.107 = [71 x i8] c" 2: 1-slack algorithm (primal) described in [5]\00"
@str.108 = [69 x i8] c" 3: 1-slack algorithm (dual) described in [5]\00"
@str.109 = [78 x i8] c" 4: 1-slack algorithm (dual) with constraint cache [5]\00"
@str.110 = [73 x i8] c" 9: custom algorithm in svm_struct_learn_custom.c\00"
@str.111 = [70 x i8] c" -e float -> epsilon: allow that tolerance for termination\00"
@str.112 = [71 x i8] c" -k [1..] -> number of new constraints to accumulate before\00"
@str.113 = [84 x i8] c" recomputing the QP solution (default 100) (-w 0 and 1 only)\00"
@str.114 = [72 x i8] c" -f [5..] -> number of constraints to cache for each example\00"
@str.115 = [53 x i8] c" (default 5) (used with -w 4)\00"
@str.116 = [78 x i8] c" -b [1..100] -> percentage of training set for which to refresh cache\00"
@str.117 = [79 x i8] c" when no epsilon violated constraint can be constructed\00"
@str.118 = [56 x i8] c"SVM-light Options for Solving QP Subproblems (see [3]):\00"
@str.119 = [73 x i8] c" -n [2..q] -> number of new variables entering the working set\00"
@str.120 = [70 x i8] c" in each svm-light iteration (default n = q). \00"
@str.121 = [58 x i8] c" Set n < q to prevent zig-zagging.\00"
@str.122 = [77 x i8] c" -m [5..] -> size of svm-light cache for kernel evaluations in MB\00"
@str.123 = [71 x i8] c" (default 40) (used only for -w 1 with kernels)\00"
@str.124 = [78 x i8] c" -h [5..] -> number of svm-light iterations a variable needs to be\00"
@str.125 = [78 x i8] c" optimal before considered for shrinking (default 100)\00"
@str.126 = [78 x i8] c" -# int -> terminate svm-light QP subproblem optimization, if no\00"
@str.127 = [66 x i8] c" progress after this number of iterations.\00"
@str.128 = [41 x i8] c" (default 100000)\00"
@str.129 = [16 x i8] c"Kernel Options:\00"
@str.130 = [49 x i8] c" -t int -> type of kernel function:\00"
@str.131 = [44 x i8] c" 0: linear (default)\00"
@str.132 = [50 x i8] c" 1: polynomial (s a*b+c)^d\00"
@str.133 = [71 x i8] c" 2: radial basis function exp(-gamma ||a-b||^2)\00"
@str.134 = [51 x i8] c" 3: sigmoid tanh(s a*b + c)\00"
@str.135 = [61 x i8] c" 4: user defined kernel from kernel.h\00"
@str.136 = [57 x i8] c" -d int -> parameter d in polynomial kernel\00"
@str.137 = [54 x i8] c" -g float -> parameter gamma in rbf kernel\00"
@str.138 = [59 x i8] c" -s float -> parameter s in sigmoid/poly kernel\00"
@str.139 = [59 x i8] c" -r float -> parameter c in sigmoid/poly kernel\00"
@str.140 = [57 x i8] c" -u string -> parameter of user defined kernel\00"
@str.141 = [16 x i8] c"Output Options:\00"
@str.142 = [69 x i8] c" -a string -> write all alphas to this file after learning\00"
@str.143 = [67 x i8] c" (in the same order as in the training set)\00"
@str.144 = [30 x i8] c"Application-Specific Options:\00"
@str.145 = [18 x i8] c"\0AMore details in:\00"
@str.146 = [72 x i8] c"[1] T. Joachims, Learning to Align Sequences: A Maximum Margin Aproach.\00"
@str.147 = [39 x i8] c" Technical Report, September, 2003.\00"
@str.148 = [75 x i8] c"[2] I. Tsochantaridis, T. Joachims, T. Hofmann, and Y. Altun, Large Margin\00"
@str.149 = [72 x i8] c" Methods for Structured and Interdependent Output Variables, Journal\00"
@str.150 = [70 x i8] c" of Machine Learning Research (JMLR), Vol. 6(Sep):1453-1484, 2005.\00"
@str.151 = [72 x i8] c"[3] T. Joachims, Making Large-Scale SVM Learning Practical. Advances in\00"
@str.152 = [78 x i8] c" Kernel Methods - Support Vector Learning, B. Sch\C3\B6lkopf and C. Burges and\00"
@str.153 = [37 x i8] c" A. Smola (ed.), MIT Press, 1999.\00"
@str.154 = [64 x i8] c"[4] T. Joachims, Learning to Classify Text Using Support Vector\00"
@str.155 = [69 x i8] c" Machines: Methods, Theory, and Algorithms. Dissertation, Kluwer,\00"
@str.156 = [10 x i8] c" 2002.\00"
@str.157 = [78 x i8] c"[5] T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of Structural\00"
@str.158 = [47 x i8] c" SVMs, Machine Learning Journal, to appear.\00"
define void @print_help() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0))
%4 = tail call i32 (...) @copyright_notice()
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @str, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.86, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @str.87, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @str.88, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.89, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.90, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @str.91, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @str.92, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.93, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.94, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @str.95, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.96, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @str.97, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @str.98, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.99, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.100, i64 0, i64 0))
%21 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @.str.24, i64 0, i64 0), i32 2)
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @str.101, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @str.102, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.103, i64 0, i64 0))
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @.str.24, i64 0, i64 0), i32 0)
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.104, i64 0, i64 0))
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @.str.29, i64 0, i64 0), i32 4)
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @str.105, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.106, i64 0, i64 0))
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.107, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.108, i64 0, i64 0))
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.109, i64 0, i64 0))
%33 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.110, i64 0, i64 0))
%34 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.111, i64 0, i64 0))
%35 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.37, i64 0, i64 0), double 1.000000e-01)
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.112, i64 0, i64 0))
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([84 x i8], [84 x i8]* @str.113, i64 0, i64 0))
%38 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.114, i64 0, i64 0))
%39 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.115, i64 0, i64 0))
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.116, i64 0, i64 0))
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.117, i64 0, i64 0))
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @.str.44, i64 0, i64 0))
%43 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @str.118, i64 0, i64 0))
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.119, i64 0, i64 0))
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.120, i64 0, i64 0))
%46 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @str.121, i64 0, i64 0))
%47 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @str.122, i64 0, i64 0))
%48 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.123, i64 0, i64 0))
%49 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.124, i64 0, i64 0))
%50 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.125, i64 0, i64 0))
%51 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.126, i64 0, i64 0))
%52 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @str.127, i64 0, i64 0))
%53 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @str.128, i64 0, i64 0))
%54 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.129, i64 0, i64 0))
%55 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @str.130, i64 0, i64 0))
%56 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.131, i64 0, i64 0))
%57 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @str.132, i64 0, i64 0))
%58 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.133, i64 0, i64 0))
%59 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.134, i64 0, i64 0))
%60 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.135, i64 0, i64 0))
%61 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.136, i64 0, i64 0))
%62 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str.137, i64 0, i64 0))
%63 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.138, i64 0, i64 0))
%64 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.139, i64 0, i64 0))
%65 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.140, i64 0, i64 0))
%66 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.141, i64 0, i64 0))
%67 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.142, i64 0, i64 0))
%68 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([67 x i8], [67 x i8]* @str.143, i64 0, i64 0))
%69 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.144, i64 0, i64 0))
%70 = tail call i32 (...) @print_struct_help()
%71 = tail call i32 (...) @wait_any_key()
%72 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.145, i64 0, i64 0))
%73 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.146, i64 0, i64 0))
%74 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.147, i64 0, i64 0))
%75 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([75 x i8], [75 x i8]* @str.148, i64 0, i64 0))
%76 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.149, i64 0, i64 0))
%77 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.150, i64 0, i64 0))
%78 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.151, i64 0, i64 0))
%79 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.152, i64 0, i64 0))
%80 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.153, i64 0, i64 0))
%81 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str.154, i64 0, i64 0))
%82 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.155, i64 0, i64 0))
%83 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @str.156, i64 0, i64 0))
%84 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.157, i64 0, i64 0))
%85 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.158, i64 0, i64 0))
ret void
}