// File: /workspace/github_c_makefile_star2_O2/olcaytaner[P]Isell/algorithm.c
// Function: generate_test_code
void generate_test_code(FILE* testcodefile, int algorithm, void* model, void* parameters, int language, Datasetptr current_dataset)
{
 /*!Last Changed 21.08.2007 added RBF and RBFREG*/
 /*!Last Changed 07.08.2007 added QDACLASS*/
 /*!Last Changed 15.05.2006*/
 indentation = 0;
 switch (algorithm)
  {
   case SELECTMAX    :generate_test_code_selectmax(testcodefile, language, current_dataset, (Model_selectmaxptr) model);
                      break;
   case ONEFEATURE   :generate_test_code_onefeature(testcodefile, language, current_dataset, (Model_onefeatureptr) model);
                      break;
   case SELECTAVERAGE:generate_test_code_selectaverage(testcodefile, language, current_dataset, (double*) model);
                      break;
   case GAUSSIAN     :generate_test_code_gaussian(testcodefile, language, current_dataset, (Model_gaussianptr) model);
                      break;
   case NEARESTMEAN  :generate_test_code_nearestmean(testcodefile, language, current_dataset, (Instanceptr) model);
                      break;
   case LINEARREG    :generate_test_code_linearreg(testcodefile, language, current_dataset, (Model_linearregressionptr) model);
                      break;                      
   case QUANTIZEREG  :generate_test_code_quantizereg(testcodefile, language, current_dataset, (Model_quantizeregptr) model);
                      break;                      
   case KNN          :generate_test_code_knn(testcodefile, language, current_dataset, ((Knn_parameterptr) parameters)->nearcount, (Instanceptr) model);
                      break;
   case KNNREG       :generate_test_code_knnreg(testcodefile, language, current_dataset, ((Knn_parameterptr) parameters)->nearcount, (Instanceptr) model);
                      break;
   case C45          :generate_test_code_c45(testcodefile, language, current_dataset, (Decisionnodeptr) model);
                      break;
   case LDT          :generate_test_code_ldt(testcodefile, language, current_dataset, (Decisionnodeptr) model);
                      break;
   case SVMTREE      :generate_test_code_svmtree(testcodefile, language, current_dataset, (Decisionnodeptr) model);
                      break;
   case SVMREGTREE   :
   case REGTREE      :generate_test_code_regtree(testcodefile, language, current_dataset, (Regressionnodeptr) model);
                      break;
   case IREP         :generate_test_code_ripper(testcodefile, language, current_dataset, "Irep", (Rulesetptr) model);
                      break;
   case IREP2        :generate_test_code_ripper(testcodefile, language, current_dataset, "Irep2", (Rulesetptr) model);
                      break;
   case RIPPER       :generate_test_code_ripper(testcodefile, language, current_dataset, "Ripper", (Rulesetptr) model);
                      break;
   case CN2          :generate_test_code_ripper(testcodefile, language, current_dataset, "Cn2", (Rulesetptr) model);
                      break;
   case LERILS       :generate_test_code_ripper(testcodefile, language, current_dataset, "Lerils", (Rulesetptr) model);
                      break;
   case PART         :generate_test_code_ripper(testcodefile, language, current_dataset, "Part", (Rulesetptr) model);
                      break;
   case RISE         :generate_test_code_rise(testcodefile, language, current_dataset, (Rulesetptr) model);
                      break;
   case MULTIRIPPER  :generate_test_code_multiripper(testcodefile, language, current_dataset, "Multiripper", (Rulesetptr) model);
                      break;
   case C45RULES     :generate_test_code_c45rules(testcodefile, language, current_dataset, (Rulesetptr) model);
                      break;
   case LDACLASS     :generate_test_code_ldaclass(testcodefile, language, current_dataset, (Model_ldaclassptr) model);
                      break;
   case NAIVEBAYES   :generate_test_code_naivebayes(testcodefile, language, current_dataset, (Model_naivebayesptr) model);
                      break;
   case QDACLASS     :generate_test_code_qdaclass(testcodefile, language, current_dataset, (Model_qdaclassptr) model);
                      break;
   case LOGISTIC     :generate_test_code_logistic(testcodefile, language, current_dataset, (double**) model);
                      break;
   case RBF          :generate_test_code_rbf(testcodefile, language, current_dataset, (Rbfnetworkptr) model);
                      break;
   case RBFREG       :generate_test_code_rbfreg(testcodefile, language, current_dataset, (Rbfnetworkptr) model);
                      break;
   case MLPGENERIC   :
   case DNC          :generate_test_code_mlpgeneric(testcodefile, language, current_dataset, (Mlpnetworkptr) model);
                      break;
   case MLPGENERICREG:
   case DNCREG       :generate_test_code_mlpgenericreg(testcodefile, language, current_dataset, (Mlpnetworkptr) model);
                      break;
   case MULTILDT     :generate_test_code_multildt(testcodefile, language, current_dataset, (Decisionnodeptr) model, "multildt");
                      break;
   case NBTREE       :generate_test_code_multildt(testcodefile, language, current_dataset, (Decisionnodeptr) model, "nodeboundedtree");
                      break;
   case SVM          :generate_test_code_svm(testcodefile, language, current_dataset, "Svm", (Svm_modelptr) model);
                      break;
   case SVMREG       :generate_test_code_svmreg(testcodefile, language, current_dataset, "Svmreg", (Svm_modelptr) model);
                      break;
  }
}

// Assembly:
movq %rdx, %rax
leaq 0x3a5721(%rip), %rdx    # 0x3aa1e8
andl $0x0, (%rdx)
leal -0x3e8(%rsi), %edx
cmpl $0x20, %edx
ja 0x4af3
leaq 0x905f8(%rip), %rsi     # 0x950d4
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x79029
addl $0xfffff830, %esi       # imm = 0xFFFFF830
cmpl $0xd, %esi
ja 0x4c8a
leaq 0x9064f(%rip), %rdx     # 0x95158
movslq (%rdx,%rsi,4), %rsi
addq %rdx, %rsi
jmpq *%rsi
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x7710a
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x79407
leaq 0x90bcd(%rip), %rcx     # 0x95702
jmp 0x4c67
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x776bd
leaq 0x9513a(%rip), %r10     # 0x99c89
jmp 0x4b8e
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x76ffd
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x75ca5
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x76ef0
leaq 0x90b79(%rip), %rcx     # 0x956fb
jmp 0x4c67
leaq 0x90b90(%rip), %r10     # 0x9571e
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
movq %r10, %r8
jmp 0x797ba
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x7744c
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x75b20
leaq 0x90b33(%rip), %rcx     # 0x956f5
jmp 0x4c67
leaq 0x90b44(%rip), %rcx     # 0x95712
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %r8
jmp 0x772d4
movl (%rcx), %ecx
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %r8
jmp 0x76891
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x7602a
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x78746
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x76e84
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x781bc
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x77bb4
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x77844
leaq 0x90aa9(%rip), %rcx     # 0x956f0
jmp 0x4c67
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x77e71
leaq 0x90aa8(%rip), %rcx     # 0x95706
jmp 0x4c67
leaq 0x90aa6(%rip), %rcx     # 0x9570d
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %r8
jmp 0x77224
leaq 0x90aab(%rip), %rcx     # 0x95727
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %r8
jmp 0x798f1
retq
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x763fd
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x75c50
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x75b73
movl (%rcx), %ecx
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %r8
jmp 0x76bb9
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x7620c
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %rcx
jmp 0x78c03
leaq 0x90a43(%rip), %rcx     # 0x9572b
movl %r8d, %esi
movq %r9, %rdx
movq %rax, %r8
jmp 0x7a1c0