// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/algorithm.c
// Function: tune_hyperparameters_of_the_supervised_algorithm
void* tune_hyperparameters_of_the_supervised_algorithm(int algorithm, Instanceptr* traindata, Instanceptr* cvdata, Instanceptr* tunedata, void* parameters)
{
 /*!Last Changed 12.03.2009*/
 Xmldocumentptr doc;
 Xmlelementptr element, child;
 void* bestmodel = NULL;
 void* model;
 int valuecount, i, classno, bestnear;
 Knn_parameterptr pknn;
 C45_parameterptr pc45;
 Multildt_parameterptr pmultildt;
 Logistic_parameterptr plogistic;
 Rbf_parameterptr prbf;
 Mlpparametersptr pmlp;
 Svm_parameterptr psvm;
 Svm_simplex_parameterptr ssvm;
 Randomforest_parameterptr prf;
 Kforest_parameterptr pkf;
 double* posteriors = NULL;
 Instanceptr test, next;
 Prediction predicted;
 double performance, bestperformance, real;
 if (in_list(algorithm, 18, KNN, KNNREG, LOGISTIC, RBF, RBFREG, MLPGENERIC, MLPGENERICREG, DNC, DNCREG, SVM, SIMPLEXSVM, SVMREG, SIMPLEXSVMREG, SVMTREE, MULTIRIPPER, HYBRIDRIPPER, RANDOMFOREST, KFOREST) || (in_list(algorithm, 4, C45, LDT, MULTILDT, OMNILDT) && (get_parameter_l("prunetype") == PREPRUNING)))
  {
   if (get_algorithm_type(algorithm) == CLASSIFICATION)
     posteriors = safemalloc(current_dataset->classno * sizeof(double), "tune_hyperparameters_of_the_supervised_algorithm", 20);   
   doc = xml_document("hyperparameters.xml");
   if (!doc)
    {
     printf(m1428);
     return NULL;
    }
   xml_parse(doc);
   if (in_list(algorithm, 2, KNN, KNNREG))
     element = xml_get_child_with_specific_attribute_value(doc->root, "name", "k");
   else
     if (in_list(algorithm, 4, C45, LDT, MULTILDT, OMNILDT))
       element = xml_get_child_with_specific_attribute_value(doc->root, "name", "pruningthreshold");
     else
       if (in_list(algorithm, 7, LOGISTIC, RBF, RBFREG, MLPGENERIC, MLPGENERICREG, DNC, DNCREG))
         element = xml_get_child_with_specific_attribute_value(doc->root, "name", "learningrate");
       else
         if (in_list(algorithm, 7, SVM, SIMPLEXSVM, SVMREG, SIMPLEXSVMREG, SVMTREE, MULTIRIPPER, HYBRIDRIPPER))
           element = xml_get_child_with_specific_attribute_value(doc->root, "name", "C");
         else
           if (in_list(algorithm, 2, RANDOMFOREST, KFOREST))
             element = xml_get_child_with_specific_attribute_value(doc->root, "name", "featuresize");
           else
            {
             printf(m1451);
             if (get_algorithm_type(algorithm) == CLASSIFICATION)
               return classification_algorithms[algorithm - SELECTMAX].train_algorithm(traindata, cvdata, parameters);
             else
               return regression_algorithms[algorithm - ONEFEATURE].train_algorithm(traindata, cvdata, parameters);
            }
   valuecount = xml_number_of_children(element);
   child = element->child;
   for (i = 0; i < valuecount; i++)
    {
     switch (algorithm){
       case KNN          :
       case KNNREG       :pknn = (Knn_parameterptr) parameters;
                          pknn->nearcount = atoi(child->pcdata);
                          break;
       case C45          :
       case LDT          :
       case SVMTREE      :pc45 = (C45_parameterptr) parameters;
                          pc45->pruningthreshold = atof(child->pcdata);
                          break;
       case MULTILDT     :
       case OMNILDT      :pmultildt = (Multildt_parameterptr) parameters;
                          pmultildt->c45param.pruningthreshold = atof(child->pcdata);
                          break;
       case LOGISTIC     :plogistic = (Logistic_parameterptr) parameters;
                          plogistic->learning_rate = atof(child->pcdata);
                          break;
       case RBF          :
       case RBFREG       :prbf = (Rbf_parameterptr) parameters;
                          prbf->eta = atof(child->pcdata);
                          break;
       case MLPGENERIC   :
       case MLPGENERICREG:
       case DNC          :
       case DNCREG       :pmlp = (Mlpparametersptr) parameters;
                          pmlp->eta = atof(child->pcdata);
                          break;
       case SVM          :
       case SVMREG       :psvm = (Svm_parameterptr) parameters;
                          psvm->C = atof(child->pcdata);
                          break;
       case SIMPLEXSVM   :
       case SIMPLEXSVMREG:ssvm = (Svm_simplex_parameterptr) parameters;
                          ssvm->C = atof(child->pcdata);
                          break;
						 case MULTIRIPPER  :
						 case HYBRIDRIPPER :set_parameter_f("svmC", child->pcdata, -INT_MAX, +INT_MAX);
							                   break;
       case RANDOMFOREST :prf = (Randomforest_parameterptr) parameters;
                          prf->featuresize = atoi(child->pcdata);
                          if (prf->featuresize >= current_dataset->featurecount - 1)
                            continue;
                          break;
       case KFOREST      :pkf = (Kforest_parameterptr) parameters;
                          pkf->featuresize = atoi(child->pcdata);
                          break;
     }
     if (get_algorithm_type(algorithm) == CLASSIFICATION)
       model = classification_algorithms[algorithm - SELECTMAX].train_algorithm(traindata, cvdata, parameters);
     else
       model = regression_algorithms[algorithm - ONEFEATURE].train_algorithm(traindata, cvdata, parameters);
     test = *tunedata;
     performance = 0.0;
     while (test)
      {
       next = test->next;
       test->next = NULL;
       if (get_algorithm_type(algorithm) == CLASSIFICATION)
         predicted = classification_algorithms[algorithm - SELECTMAX].test_algorithm(test, model, parameters, posteriors);
       else
         predicted = regression_algorithms[algorithm - ONEFEATURE].test_algorithm(test, model, parameters, NULL);
       test->next = next;
       if (get_algorithm_type(algorithm) == CLASSIFICATION)
        {
         classno = give_classno(test);
         if (classno != predicted.classno)
           performance++;
        }
       else
        {
         real = give_regressionvalue(test);
         performance += (real - predicted.regvalue) * (real - predicted.regvalue);
        }
       test = test->next;
      }
     if (i == 0 || performance < bestperformance)
      {
       bestperformance = performance;
       write_array_variables("aout", totalrun, 15, "f", atof(child->pcdata));
       if (algorithm == KNN || algorithm == KNNREG)
         bestnear = atoi(child->pcdata);
       if (i != 0)
         free_model_of_supervised_algorithm(algorithm, bestmodel, current_dataset);
       bestmodel = model;
      }
     else
       free_model_of_supervised_algorithm(algorithm, model, current_dataset);
     child = child->sibling;
    }
   if (algorithm == KNN || algorithm == KNNREG)
    {    
     pknn = (Knn_parameterptr) parameters;
     pknn->nearcount = bestnear;    
    }
   xml_free_document(doc);
   if (get_algorithm_type(algorithm) == CLASSIFICATION)
     safe_free(posteriors);
   return bestmodel;
  }
 else
  {
   if (get_algorithm_type(algorithm) == CLASSIFICATION)
     return classification_algorithms[algorithm - SELECTMAX].train_algorithm(traindata, cvdata, parameters);
   else
     return regression_algorithms[algorithm - ONEFEATURE].train_algorithm(traindata, cvdata, parameters);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
movl %edi, -0xc(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0xc0(%rbp)
movl -0xc(%rbp), %edi
movl $0x12, %esi
movl $0x3e9, %edx            # imm = 0x3E9
movl $0x7d1, %ecx            # imm = 0x7D1
movl $0x3f8, %r8d            # imm = 0x3F8
movl $0x402, %r9d            # imm = 0x402
movl $0x7db, (%rsp)          # imm = 0x7DB
movl $0x3f4, 0x8(%rsp)       # imm = 0x3F4
movl $0x7d3, 0x10(%rsp)      # imm = 0x7D3
movl $0x3ff, 0x18(%rsp)      # imm = 0x3FF
movl $0x7da, 0x20(%rsp)      # imm = 0x7DA
movl $0x3f9, 0x28(%rsp)      # imm = 0x3F9
movl $0x3fa, 0x30(%rsp)      # imm = 0x3FA
movl $0x7d8, 0x38(%rsp)      # imm = 0x7D8
movl $0x7d9, 0x40(%rsp)      # imm = 0x7D9
movl $0x3fb, 0x48(%rsp)      # imm = 0x3FB
movl $0x3f2, 0x50(%rsp)      # imm = 0x3F2
movl $0x3f3, 0x58(%rsp)      # imm = 0x3F3
movl $0x403, 0x60(%rsp)      # imm = 0x403
movl $0x40c, 0x68(%rsp)      # imm = 0x40C
movb $0x0, %al
callq 0x53e40
cmpl $0x0, %eax
jne 0x666d
movl -0xc(%rbp), %edi
movl $0x4, %esi
movl $0x3ea, %edx            # imm = 0x3EA
movl $0x3ed, %ecx            # imm = 0x3ED
movl $0x3f6, %r8d            # imm = 0x3F6
movl $0x3f7, %r9d            # imm = 0x3F7
movb $0x0, %al
callq 0x53e40
cmpl $0x0, %eax
je 0x6fcd
leaq 0xdbd3a(%rip), %rdi     # 0xe2399
callq 0x792b0
cmpl $0x0, %eax
jne 0x6fcd
movl -0xc(%rbp), %edi
callq 0x4400
cmpl $0x0, %eax
jne 0x66a4
leaq 0xff1bf(%rip), %rax     # 0x105840
movq (%rax), %rax
movslq 0x10(%rax), %rdi
shlq $0x3, %rdi
leaq 0xdbd10(%rip), %rsi     # 0xe23a3
movl $0x14, %edx
callq 0x52d70
movq %rax, -0xc0(%rbp)
leaq 0xdbd29(%rip), %rdi     # 0xe23d4
callq 0xe0b20
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x66d6
leaq 0xdbd26(%rip), %rdi     # 0xe23e8
movb $0x0, %al
callq 0x4030
movq $0x0, -0x8(%rbp)
jmp 0x7038
movq -0x38(%rbp), %rdi
callq 0xe16c0
movl -0xc(%rbp), %edi
movl $0x2, %esi
movl $0x3e9, %edx            # imm = 0x3E9
movl $0x7d1, %ecx            # imm = 0x7D1
movb $0x0, %al
callq 0x53e40
cmpl $0x0, %eax
je 0x6721
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0xdd945(%rip), %rsi     # 0xe4051
leaq 0xe6cdf(%rip), %rdx     # 0xed3f2
callq 0xe14d0
movq %rax, -0x40(%rbp)
jmp 0x6904
movl -0xc(%rbp), %edi
movl $0x4, %esi
movl $0x3ea, %edx            # imm = 0x3EA
movl $0x3ed, %ecx            # imm = 0x3ED
movl $0x3f6, %r8d            # imm = 0x3F6
movl $0x3f7, %r9d            # imm = 0x3F7
movb $0x0, %al
callq 0x53e40
cmpl $0x0, %eax
je 0x676f
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0xdd8f7(%rip), %rsi     # 0xe4051
leaq 0xdbcc1(%rip), %rdx     # 0xe2422
callq 0xe14d0
movq %rax, -0x40(%rbp)
jmp 0x6902
movl -0xc(%rbp), %edi
movl $0x7, %esi
movl $0x3f8, %edx            # imm = 0x3F8
movl $0x402, %ecx            # imm = 0x402
movl $0x7db, %r8d            # imm = 0x7DB
movl $0x3f4, %r9d            # imm = 0x3F4
movl $0x7d3, (%rsp)          # imm = 0x7D3
movl $0x3ff, 0x8(%rsp)       # imm = 0x3FF
movl $0x7da, 0x10(%rsp)      # imm = 0x7DA
movb $0x0, %al
callq 0x53e40
cmpl $0x0, %eax
je 0x67d4
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0xdd892(%rip), %rsi     # 0xe4051
leaq 0xdbc6d(%rip), %rdx     # 0xe2433
callq 0xe14d0
movq %rax, -0x40(%rbp)
jmp 0x6900
movl -0xc(%rbp), %edi
movl $0x7, %esi
movl $0x3f9, %edx            # imm = 0x3F9
movl $0x3fa, %ecx            # imm = 0x3FA
movl $0x7d8, %r8d            # imm = 0x7D8
movl $0x7d9, %r9d            # imm = 0x7D9
movl $0x3fb, (%rsp)          # imm = 0x3FB
movl $0x3f2, 0x8(%rsp)       # imm = 0x3F2
movl $0x3f3, 0x10(%rsp)      # imm = 0x3F3
movb $0x0, %al
callq 0x53e40
cmpl $0x0, %eax
je 0x6839
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0xdd82d(%rip), %rsi     # 0xe4051
leaq 0xdb8ba(%rip), %rdx     # 0xe20e5
callq 0xe14d0
movq %rax, -0x40(%rbp)
jmp 0x68fe
movl -0xc(%rbp), %edi
movl $0x2, %esi
movl $0x403, %edx            # imm = 0x403
movl $0x40c, %ecx            # imm = 0x40C
movb $0x0, %al
callq 0x53e40
cmpl $0x0, %eax
je 0x687b
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0xdd7eb(%rip), %rsi     # 0xe4051
leaq 0xdbbd3(%rip), %rdx     # 0xe2440
callq 0xe14d0
movq %rax, -0x40(%rbp)
jmp 0x68fc
leaq 0xdbbca(%rip), %rdi     # 0xe244c
movb $0x0, %al
callq 0x4030
movl -0xc(%rbp), %edi
callq 0x4400
cmpl $0x0, %eax
jne 0x68c9
movl -0xc(%rbp), %eax
subl $0x3e8, %eax            # imm = 0x3E8
movslq %eax, %rcx
leaq 0xfd8e8(%rip), %rax     # 0x104190
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq *%rax
movq %rax, -0x8(%rbp)
jmp 0x7038
movl -0xc(%rbp), %eax
subl $0x7d0, %eax            # imm = 0x7D0
movslq %eax, %rcx
leaq 0xfdf25(%rip), %rax     # 0x104800
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq *%rax
movq %rax, -0x8(%rbp)
jmp 0x7038
jmp 0x68fe
jmp 0x6900
jmp 0x6902
jmp 0x6904
movq -0x40(%rbp), %rdi
callq 0xe1420
movl %eax, -0x5c(%rbp)
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jge 0x6f7e
movl -0xc(%rbp), %eax
movl %eax, -0x194(%rbp)
subl $0x3e9, %eax            # imm = 0x3E9
je 0x6ab3
jmp 0x6945
movl -0x194(%rbp), %eax
subl $0x3ea, %eax            # imm = 0x3EA
je 0x6ad5
jmp 0x6958
movl -0x194(%rbp), %eax
subl $0x3ed, %eax            # imm = 0x3ED
je 0x6ad5
jmp 0x696b
movl -0x194(%rbp), %eax
addl $0xfffffc0e, %eax       # imm = 0xFFFFFC0E
subl $0x2, %eax
jb 0x6be8
jmp 0x6981
movl -0x194(%rbp), %eax
subl $0x3f4, %eax            # imm = 0x3F4
je 0x6b6d
jmp 0x6994
movl -0x194(%rbp), %eax
addl $0xfffffc0a, %eax       # imm = 0xFFFFFC0A
subl $0x2, %eax
jb 0x6af8
jmp 0x69aa
movl -0x194(%rbp), %eax
subl $0x3f8, %eax            # imm = 0x3F8
je 0x6b1b
jmp 0x69bd
movl -0x194(%rbp), %eax
subl $0x3f9, %eax            # imm = 0x3F9
je 0x6b96
jmp 0x69d0
movl -0x194(%rbp), %eax
subl $0x3fa, %eax            # imm = 0x3FA
je 0x6bbf
jmp 0x69e3
movl -0x194(%rbp), %eax
subl $0x3fb, %eax            # imm = 0x3FB
je 0x6ad5
jmp 0x69f6
movl -0x194(%rbp), %eax
subl $0x3ff, %eax            # imm = 0x3FF
je 0x6b6d
jmp 0x6a09
movl -0x194(%rbp), %eax
subl $0x402, %eax            # imm = 0x402
je 0x6b44
jmp 0x6a1c
movl -0x194(%rbp), %eax
subl $0x403, %eax            # imm = 0x403
je 0x6c0e
jmp 0x6a2f
movl -0x194(%rbp), %eax
subl $0x40c, %eax            # imm = 0x40C
je 0x6c5a
jmp 0x6a42
movl -0x194(%rbp), %eax
subl $0x7d1, %eax            # imm = 0x7D1
je 0x6ab3
jmp 0x6a51
movl -0x194(%rbp), %eax
subl $0x7d3, %eax            # imm = 0x7D3
je 0x6b6d
jmp 0x6a64
movl -0x194(%rbp), %eax
subl $0x7d8, %eax            # imm = 0x7D8
je 0x6b96
jmp 0x6a77
movl -0x194(%rbp), %eax
subl $0x7d9, %eax            # imm = 0x7D9
je 0x6bbf
jmp 0x6a8a
movl -0x194(%rbp), %eax
subl $0x7da, %eax            # imm = 0x7DA
je 0x6b6d
jmp 0x6a9d
movl -0x194(%rbp), %eax
subl $0x7db, %eax            # imm = 0x7DB
je 0x6b44
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x41c0
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, (%rax)
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4100
movq -0x78(%rbp), %rax
movsd %xmm0, 0x8(%rax)
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4100
movq -0x80(%rbp), %rax
movsd %xmm0, 0x8(%rax)
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4100
movq -0x88(%rbp), %rax
movsd %xmm0, 0x8(%rax)
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4100
movq -0x90(%rbp), %rax
movsd %xmm0, 0x28(%rax)
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4100
movq -0x98(%rbp), %rax
movsd %xmm0, 0x38(%rax)
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4100
movq -0xa0(%rbp), %rax
movsd %xmm0, 0x30(%rax)
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4100
movq -0xa8(%rbp), %rax
movsd %xmm0, 0x20(%rax)
jmp 0x6c7e
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0xdb8b9(%rip), %rdi     # 0xe24b0
movsd 0xdb409(%rip), %xmm0    # 0xe2008
movsd 0xdb409(%rip), %xmm1    # 0xe2010
callq 0x790b0
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x41c0
movl %eax, %ecx
movq -0xb0(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0xb0(%rbp), %rax
movl 0x4(%rax), %eax
leaq 0xfebfd(%rip), %rcx     # 0x105840
movq (%rcx), %rcx
movl 0x1bc(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jl 0x6c58
jmp 0x6f70
jmp 0x6c7e
movq -0x30(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x41c0
movl %eax, %ecx
movq -0xb8(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0xc(%rbp), %edi
callq 0x4400
cmpl $0x0, %eax
jne 0x6cbb
movl -0xc(%rbp), %eax
subl $0x3e8, %eax            # imm = 0x3E8
movslq %eax, %rcx
leaq 0xfd4f3(%rip), %rax     # 0x104190
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq *%rax
movq %rax, -0x58(%rbp)
jmp 0x6ce9
movl -0xc(%rbp), %eax
subl $0x7d0, %eax            # imm = 0x7D0
movslq %eax, %rcx
leaq 0xfdb33(%rip), %rax     # 0x104800
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq *%rax
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xc8(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x110(%rbp)
cmpq $0x0, -0xc8(%rbp)
je 0x6e9a
movq -0xc8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xd0(%rbp)
movq -0xc8(%rbp), %rax
movq $0x0, 0x10(%rax)
movl -0xc(%rbp), %edi
callq 0x4400
cmpl $0x0, %eax
jne 0x6d94
movl -0xc(%rbp), %eax
subl $0x3e8, %eax            # imm = 0x3E8
movslq %eax, %rcx
leaq 0xfd440(%rip), %rax     # 0x104190
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0xc8(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0xc0(%rbp), %r8
leaq -0x158(%rbp), %rdi
callq *%rax
leaq -0x108(%rbp), %rdi
leaq -0x158(%rbp), %rsi
movl $0x38, %edx
callq 0x42b0
jmp 0x6de4
movl -0xc(%rbp), %eax
subl $0x7d0, %eax            # imm = 0x7D0
movslq %eax, %rcx
leaq 0xfda5a(%rip), %rax     # 0x104800
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0xc8(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x30(%rbp), %rcx
leaq -0x190(%rbp), %rdi
xorl %r8d, %r8d
callq *%rax
leaq -0x108(%rbp), %rdi
leaq -0x190(%rbp), %rsi
movl $0x38, %edx
callq 0x42b0
movq -0xd0(%rbp), %rcx
movq -0xc8(%rbp), %rax
movq %rcx, 0x10(%rax)
movl -0xc(%rbp), %edi
callq 0x4400
cmpl $0x0, %eax
jne 0x6e37
movq -0xc8(%rbp), %rdi
callq 0x43530
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %eax
cmpl -0x100(%rbp), %eax
je 0x6e35
movsd 0xdb1f3(%rip), %xmm0    # 0xe2018
addsd -0x110(%rbp), %xmm0
movsd %xmm0, -0x110(%rbp)
jmp 0x6e83
movq -0xc8(%rbp), %rdi
callq 0x43580
movsd %xmm0, -0x120(%rbp)
movsd -0x120(%rbp), %xmm0
subsd -0x108(%rbp), %xmm0
movsd -0x120(%rbp), %xmm2
subsd -0x108(%rbp), %xmm2
movsd -0x110(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movq -0xc8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xc8(%rbp)
jmp 0x6d02
cmpl $0x0, -0x60(%rbp)
je 0x6eba
movsd -0x110(%rbp), %xmm1
movsd -0x118(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x6f4e
movsd -0x110(%rbp), %xmm0
movsd %xmm0, -0x118(%rbp)
leaq 0x3db11f(%rip), %rax    # 0x3e1ff0
movl (%rax), %eax
movl %eax, -0x198(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4100
movl -0x198(%rbp), %esi
leaq 0xdb5c2(%rip), %rdi     # 0xe24b5
movl $0xf, %edx
leaq 0xde31a(%rip), %rcx     # 0xe5219
movb $0x1, %al
callq 0x490c0
cmpl $0x3e9, -0xc(%rbp)      # imm = 0x3E9
je 0x6f18
cmpl $0x7d1, -0xc(%rbp)      # imm = 0x7D1
jne 0x6f28
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x41c0
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x60(%rbp)
je 0x6f44
movl -0xc(%rbp), %edi
movq -0x50(%rbp), %rsi
leaq 0xfe904(%rip), %rax     # 0x105840
movq (%rax), %rdx
callq 0x5ac0
movq -0x58(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x6f64
movl -0xc(%rbp), %edi
movq -0x58(%rbp), %rsi
leaq 0xfe8e4(%rip), %rax     # 0x105840
movq (%rax), %rdx
callq 0x5ac0
movq -0x48(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x48(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x6923
cmpl $0x3e9, -0xc(%rbp)      # imm = 0x3E9
je 0x6f90
cmpl $0x7d1, -0xc(%rbp)      # imm = 0x7D1
jne 0x6fa1
movq -0x30(%rbp), %rax
movq %rax, -0x70(%rbp)
movl -0x68(%rbp), %ecx
movq -0x70(%rbp), %rax
movl %ecx, (%rax)
movq -0x38(%rbp), %rdi
callq 0xe1680
movl -0xc(%rbp), %edi
callq 0x4400
cmpl $0x0, %eax
jne 0x6fc3
movq -0xc0(%rbp), %rdi
callq 0x52e80
movq -0x50(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7038
movl -0xc(%rbp), %edi
callq 0x4400
cmpl $0x0, %eax
jne 0x700a
movl -0xc(%rbp), %eax
subl $0x3e8, %eax            # imm = 0x3E8
movslq %eax, %rcx
leaq 0xfd1a4(%rip), %rax     # 0x104190
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq *%rax
movq %rax, -0x8(%rbp)
jmp 0x7038
movl -0xc(%rbp), %eax
subl $0x7d0, %eax            # imm = 0x7D0
movslq %eax, %rcx
leaq 0xfd7e4(%rip), %rax     # 0x104800
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq *%rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
nopw %cs:(%rax,%rax)