// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/algorithm.c
// Function: free_model_of_supervised_algorithm
void free_model_of_supervised_algorithm(int algorithm, void* model, Datasetptr current_dataset)
{
 /*!Last Changed 19.08.2007 added RBF and RBFREG algorithms*/
 /*!Last Changed 11.08.2007 added NAIVEBAYES algorithm*/
 /*!Last Changed 05.08.2007 added QDACLASS algorithm*/
 /*!Last Changed 02.04.2007 added HMM algorithm*/
 /*!Last Changed 14.08.2005*/
 int i, j, treecount;
 Model_ldaclassptr mlda;
 Model_qdaclassptr mqda;
 Model_quantizeregptr mqua;
 Model_gaussianptr mgau;
 Model_selectmaxptr msel;
 Model_naivebayesptr mnaive;
 Model_divsptr mdivs;
 Model_riseptr mrise;
 Hmmptr* mhmm;
 Decisionnodeptr* forest;
 switch (algorithm)
  {
   case ONEFEATURE    :
   case SELECTAVERAGE :safe_free(model);
                       break;
   case SELECTMAX     :msel = (Model_selectmaxptr)model;
                       safe_free(msel->priors);
                       safe_free(msel);
                       break;
   case LOGISTIC      :free_2d((void**)((double**)model), current_dataset->classno);
                       break;
   case LINEARREG     :matrix_free(((Model_linearregressionptr) model)->w);
                       safe_free(model);
                       break;
   case NEARESTMEAN   :deallocate((Instanceptr)model);
                       break;
   case GAUSSIAN      :mgau = (Model_gaussianptr)model;
                       deallocate(mgau->mean);
                       safe_free(mgau->variance);
                       safe_free(mgau->priors);
                       safe_free(mgau);
                       break;
   case LDT           :
   case C45           :
   case MULTILDT      :
   case OMNILDT       :
   case NBTREE        :
   case SOFTTREE      :
   case CART          :
   case KTREE         :
   case C45STUMP      :
   case LDTSTUMP      :
   case MULTILDTSTUMP :
   case SOFTSTUMP     :deallocate_tree((Decisionnodeptr)model);
                       safe_free((Decisionnodeptr)model);
                       break;
   case SVMTREE       :forest = (Decisionnodeptr*) model;
                       if (get_parameter_l("multiclasstype") == ONE_VS_ONE)
                        treecount = (current_dataset->classno * (current_dataset->classno - 1))/ 2;
                       else
                         treecount = current_dataset->classno;
                       for (i = 0; i < treecount; i++)
                        {
                         deallocate_tree(forest[i]);
                         safe_free(forest[i]);
                        }
                       safe_free(forest);
                       break;
   case SVMREGTREE    :
   case REGTREE       :
   case SOFTREGTREE   :
   case REGSTUMP      :
   case SOFTREGSTUMP  :deallocate_regression_tree((Regressionnodeptr)model);
                       cvdata = NULL;
                       safe_free((Regressionnodeptr)model);
                       break;
   case REGRULE       :free_regression_ruleset(*((Regressionrulesetptr) model));
                       safe_free(model);
                       break;
   case NAIVEBAYES    :mnaive = (Model_naivebayesptr) model;
                       safe_free(mnaive->priors);
                       safe_free(mnaive->s);
                       free_2d((void **) mnaive->m, current_dataset->classno);
                       for (i = 0; i < current_dataset->classno; i++)
                        {
                         for (j = 0; j < current_dataset->featurecount; j++)
                           if (current_dataset->features[j].type == STRING)
                             safe_free(mnaive->p[i][j]);
                         safe_free(mnaive->p[i]);
                        }
                       safe_free(mnaive->p);
                       safe_free(mnaive);
                       break;
   case QDACLASS      :mqda = (Model_qdaclassptr) model;
                       safe_free(mqda->w0);
                       for (i = 0; i < current_dataset->classno; i++)
                         matrix_free(mqda->W[i]);
                       safe_free(mqda->W);
                       for (i = 0; i < current_dataset->classno; i++)
                         matrix_free(mqda->w[i]);
                       safe_free(mqda->w);
                       safe_free(mqda->priors);
                       safe_free(mqda);
                       break;
   case LDACLASS      :mlda = (Model_ldaclassptr) model;
                       safe_free(mlda->eigenvalues);
                       safe_free(mlda->w0);
                       matrix_free(mlda->eigenvectors);
                       for (i = 0; i < current_dataset->classno; i++)
                         matrix_free(mlda->w[i]);
                       safe_free(mlda->w);
                       safe_free(mlda);
                       break;
   case QUANTIZEREG   :mqua = (Model_quantizeregptr) model;
                       if (current_dataset->featurecount > 2)
                        {
                         free_2d((void**)(mqua->meanstwo), mqua->partitioncount);
                         matrix_free(mqua->eigenvectors);
                        }
                       else
                         safe_free(mqua->meansone);                      
                       safe_free(mqua);
                       break;
   case RISE          :mrise = (Model_riseptr) model;
                       free_ruleset(mrise->rules);
                       safe_free(mrise->counts);
                       for (i = 0; i < current_dataset->featurecount; i++)
                         if (current_dataset->features[i].type == STRING)
                           matrix_free(mrise->svdm[i]);
                       safe_free(mrise->svdm);
                       safe_free(mrise);
                       break;
   case IREP          :
   case IREP2         :
   case RIPPER        :
   case MULTIRIPPER   :
   case HYBRIDRIPPER  :
   case CN2           :
   case LERILS        :
   case PART          :free_ruleset(*((Ruleset*)model));
                       safe_free(model);
                       break;
   case DIVS          :mdivs = (Model_divsptr)model;
                       for (i = 0; i < mdivs->datacount; i++)
                        {
                         for (j = 0; j < mdivs->rulecounts[i]; j++)
                           safe_free(mdivs->hypotheses[i][j]);
                         safe_free(mdivs->hypotheses[i]);
                         safe_free(mdivs->conditioncounts[i]);                        
                        }
                       safe_free(mdivs->hypotheses);
                       safe_free(mdivs->conditioncounts);
                       safe_free(mdivs->classno);
                       safe_free(mdivs->rulecounts);
                       safe_free(mdivs);
                       break;
   case REXRIPPER     :free_ruleset(((Model_rexripperptr)model)->r);
                       if (((Model_rexripperptr)model)->exceptiondata)
                         deallocate(((Model_rexripperptr)model)->exceptiondata);
                       safe_free(model);
                       break;
   case C45RULES      :free_ruleset(*((Ruleset*)model));
                       safe_free(model);
                       break;
   case RBF           :
   case RBFREG        :free_rbfnetwork((Rbfnetworkptr) model);
                       break;
   case MLPGENERIC    :
   case MLPGENERICREG :
   case DNC           :
   case DNCREG        :free_mlpnnetwork((Mlpnetworkptr) model);
                       safe_free(model);
                       break;
   case GPROCESSREG   :safe_free(((Model_gprocessregressionptr) model)->weights);
                       safe_free(model);
                       break;
   case SVM           :
   case SVMREG        :free_svm_problem(((Svm_modelptr)model)->prob);
                       free_svm_model((Svm_modelptr)model);
                       break;
   case SIMPLEXSVM    :if (current_dataset->classno == 2)
                         free_svm_binary_model((Svm_binary_modelptr) model);
                       else
                         free_svm_simplex_model((Svm_simplex_modelptr) model);
                       break;
   case SIMPLEXSVMREG :free_svm_regression_model((Svm_regression_modelptr) model);
                       break;
   case HMM           :mhmm = (Hmmptr*) model;
                       for (i = 0; i < current_dataset->classno; i++)
                         free_hmm(mhmm[i]);
                       safe_free(mhmm);
                       break;
   case RANDOMFOREST  :
   case KFOREST       :forest = (Decisionnodeptr*) model;
                       treecount = get_parameter_i("forestsize");
                       for (i = 0; i < treecount; i++)
                        {
                         deallocate_tree(forest[i]);
                         safe_free(forest[i]);
                        }
                       safe_free(forest);
                       break;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl -0x4(%rbp), %eax
movl %eax, -0x7c(%rbp)
subl $0x3e8, %eax            # imm = 0x3E8
je 0x5d9f
jmp 0x5ae9
movl -0x7c(%rbp), %eax
subl $0x3ea, %eax            # imm = 0x3EA
je 0x5e40
jmp 0x5af9
movl -0x7c(%rbp), %eax
subl $0x3eb, %eax            # imm = 0x3EB
je 0x5df6
jmp 0x5b09
movl -0x7c(%rbp), %eax
subl $0x3ec, %eax            # imm = 0x3EC
je 0x60eb
jmp 0x5b19
movl -0x7c(%rbp), %eax
subl $0x3ed, %eax            # imm = 0x3ED
je 0x5e40
jmp 0x5b29
movl -0x7c(%rbp), %eax
addl $0xfffffc12, %eax       # imm = 0xFFFFFC12
subl $0x3, %eax
jb 0x627e
jmp 0x5b3c
movl -0x7c(%rbp), %eax
subl $0x3f1, %eax            # imm = 0x3F1
je 0x63cb
jmp 0x5b4c
movl -0x7c(%rbp), %eax
addl $0xfffffc0e, %eax       # imm = 0xFFFFFC0E
subl $0x2, %eax
jb 0x627e
jmp 0x5b5f
movl -0x7c(%rbp), %eax
subl $0x3f4, %eax            # imm = 0x3F4
je 0x6409
jmp 0x5b6f
movl -0x7c(%rbp), %eax
subl $0x3f5, %eax            # imm = 0x3F5
je 0x6383
jmp 0x5b7f
movl -0x7c(%rbp), %eax
addl $0xfffffc0a, %eax       # imm = 0xFFFFFC0A
subl $0x2, %eax
jb 0x5e40
jmp 0x5b92
movl -0x7c(%rbp), %eax
subl $0x3f8, %eax            # imm = 0x3F8
je 0x5dc2
jmp 0x5ba2
movl -0x7c(%rbp), %eax
subl $0x3f9, %eax            # imm = 0x3F9
je 0x643b
jmp 0x5bb2
movl -0x7c(%rbp), %eax
subl $0x3fa, %eax            # imm = 0x3FA
je 0x647a
jmp 0x5bc2
movl -0x7c(%rbp), %eax
subl $0x3fb, %eax            # imm = 0x3FB
je 0x5e57
jmp 0x5bd2
movl -0x7c(%rbp), %eax
subl $0x3fc, %eax            # imm = 0x3FC
je 0x5e04
jmp 0x5be2
movl -0x7c(%rbp), %eax
subl $0x3fd, %eax            # imm = 0x3FD
je 0x5e40
jmp 0x5bf2
movl -0x7c(%rbp), %eax
subl $0x3fe, %eax            # imm = 0x3FE
je 0x64ab
jmp 0x5c02
movl -0x7c(%rbp), %eax
subl $0x3ff, %eax            # imm = 0x3FF
je 0x6409
jmp 0x5c12
movl -0x7c(%rbp), %eax
subl $0x400, %eax            # imm = 0x400
je 0x6029
jmp 0x5c22
movl -0x7c(%rbp), %eax
subl $0x401, %eax            # imm = 0x401
je 0x5f42
jmp 0x5c32
movl -0x7c(%rbp), %eax
subl $0x402, %eax            # imm = 0x402
je 0x63fb
jmp 0x5c42
movl -0x7c(%rbp), %eax
subl $0x403, %eax            # imm = 0x403
je 0x64ed
jmp 0x5c52
movl -0x7c(%rbp), %eax
subl $0x404, %eax            # imm = 0x404
je 0x61cd
jmp 0x5c62
movl -0x7c(%rbp), %eax
subl $0x405, %eax            # imm = 0x405
je 0x62ae
jmp 0x5c72
movl -0x7c(%rbp), %eax
addl $0xfffffbfa, %eax       # imm = 0xFFFFFBFA
subl $0x3, %eax
jb 0x627e
jmp 0x5c85
movl -0x7c(%rbp), %eax
addl $0xfffffbf7, %eax       # imm = 0xFFFFFBF7
subl $0x3, %eax
jb 0x5e40
jmp 0x5c98
movl -0x7c(%rbp), %eax
subl $0x40c, %eax            # imm = 0x40C
je 0x64ed
jmp 0x5ca8
movl -0x7c(%rbp), %eax
addl $0xfffffbf3, %eax       # imm = 0xFFFFFBF3
subl $0x4, %eax
jb 0x5e40
jmp 0x5cbb
movl -0x7c(%rbp), %eax
subl $0x7d0, %eax            # imm = 0x7D0
je 0x5d91
jmp 0x5ccb
movl -0x7c(%rbp), %eax
subl $0x7d2, %eax            # imm = 0x7D2
je 0x5ee5
jmp 0x5cdb
movl -0x7c(%rbp), %eax
subl $0x7d3, %eax            # imm = 0x7D3
je 0x6409
jmp 0x5ceb
movl -0x7c(%rbp), %eax
subl $0x7d4, %eax            # imm = 0x7D4
je 0x5d91
jmp 0x5cfb
movl -0x7c(%rbp), %eax
subl $0x7d5, %eax            # imm = 0x7D5
je 0x5dd7
jmp 0x5d0b
movl -0x7c(%rbp), %eax
subl $0x7d6, %eax            # imm = 0x7D6
je 0x6176
jmp 0x5d1b
movl -0x7c(%rbp), %eax
subl $0x7d7, %eax            # imm = 0x7D7
je 0x5f0a
jmp 0x5d2b
movl -0x7c(%rbp), %eax
subl $0x7d8, %eax            # imm = 0x7D8
je 0x643b
jmp 0x5d3b
movl -0x7c(%rbp), %eax
subl $0x7d9, %eax            # imm = 0x7D9
je 0x649d
jmp 0x5d4b
movl -0x7c(%rbp), %eax
subl $0x7da, %eax            # imm = 0x7DA
je 0x6409
jmp 0x5d5b
movl -0x7c(%rbp), %eax
subl $0x7db, %eax            # imm = 0x7DB
je 0x63fb
jmp 0x5d6b
movl -0x7c(%rbp), %eax
subl $0x7dc, %eax            # imm = 0x7DC
je 0x6420
jmp 0x5d7b
movl -0x7c(%rbp), %eax
addl $0xfffff823, %eax       # imm = 0xFFFFF823
subl $0x4, %eax
jb 0x5ee5
jmp 0x6549
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x52e80
movq -0x50(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x52e20
jmp 0x6549
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq 0x10(%rax), %rsi
callq 0x59ea0
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rdi
callq 0x44510
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq (%rax), %rdi
callq 0x44510
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x52e80
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x52e80
movq -0x48(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rdi
callq 0x2a030
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq 0xdc4e2(%rip), %rdi     # 0xe2348
callq 0x792b0
cmpl $0x0, %eax
jne 0x5e91
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x18(%rbp), %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, -0x24(%rbp)
jmp 0x5e9b
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x24(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x5ed7
movq -0x78(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2a030
movq -0x78(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x52e80
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x5ea2
movq -0x78(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rdi
callq 0xa6f70
leaq 0x361f1b(%rip), %rax    # 0x367e10
movq $0x0, (%rax)
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x30(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xa48d0
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x52e80
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x52e80
movq -0x58(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x52e20
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x600e
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x1bc(%rcx), %eax
jge 0x5feb
movq -0x18(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x20(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
cmpl $0x1, (%rax)
jne 0x5fde
movq -0x58(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x52e80
jmp 0x5fe0
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x5f95
movq -0x58(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x52e80
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x5f7e
movq -0x58(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x52e80
movq -0x58(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x52e80
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x607a
movq -0x38(%rbp), %rax
movq (%rax), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rdi
movq 0x8(%rax), %rsi
callq 0x59ea0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6045
movq -0x38(%rbp), %rax
movq (%rax), %rdi
callq 0x52e80
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x60c3
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rdi
movq 0x8(%rax), %rsi
callq 0x59ea0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x608d
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x52e80
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x52e80
movq -0x38(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x52e80
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x52e80
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rdi
movq 0x20(%rax), %rsi
callq 0x59ea0
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x615b
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rdi
movq 0x8(%rax), %rsi
callq 0x59ea0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6125
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x52e80
movq -0x30(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x2, 0x1bc(%rax)
jle 0x61b2
movq -0x40(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x40(%rbp), %rax
movl 0x40(%rax), %esi
callq 0x52e20
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rdi
movq 0x38(%rax), %rsi
callq 0x59ea0
jmp 0x61bf
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x52e80
movq -0x40(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rcx
movq 0x20(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x20(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xaddb0
movq -0x68(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x52e80
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x1bc(%rcx), %eax
jge 0x6263
movq -0x18(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x1c(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
cmpl $0x1, (%rax)
jne 0x6256
movq -0x68(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rdi
movq 0x8(%rax), %rsi
callq 0x59ea0
jmp 0x6258
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x620b
movq -0x68(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x52e80
movq -0x68(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rcx
movq 0x20(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x20(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xaddb0
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x60(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x6342
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movq -0x60(%rbp), %rcx
movq 0x8(%rcx), %rcx
movslq -0x1c(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x630b
movq -0x60(%rbp), %rax
movq (%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x52e80
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x62d0
movq -0x60(%rbp), %rax
movq (%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x52e80
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x52e80
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x62bd
movq -0x60(%rbp), %rax
movq (%rax), %rdi
callq 0x52e80
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x52e80
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x52e80
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x52e80
movq -0x60(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rcx
movq 0x20(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x20(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xaddb0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x63bd
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x44510
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rcx
movq 0x20(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x20(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xaddb0
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rdi
callq 0x9d0d0
jmp 0x6549
movq -0x10(%rbp), %rdi
callq 0x63ab0
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x52e80
movq -0x10(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
addq $0x80, %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x18(%rsp)
callq 0xc5ef0
movq -0x10(%rbp), %rdi
callq 0xc5e40
jmp 0x6549
movq -0x18(%rbp), %rax
cmpl $0x2, 0x10(%rax)
jne 0x648f
movq -0x10(%rbp), %rdi
callq 0xcd5d0
jmp 0x6498
movq -0x10(%rbp), %rdi
callq 0xcda00
jmp 0x6549
movq -0x10(%rbp), %rdi
callq 0xcd610
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x64e2
movq -0x70(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x386d0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x64ba
movq -0x70(%rbp), %rdi
callq 0x52e80
jmp 0x6549
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq 0xdbe41(%rip), %rdi     # 0xe233d
callq 0x78f10
movl %eax, -0x24(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x6540
movq -0x78(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2a030
movq -0x78(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x52e80
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x650b
movq -0x78(%rbp), %rdi
callq 0x52e80
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)