// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/algorithm.c
// Function: complexity_of_supervised_algorithm
int complexity_of_supervised_algorithm(int algorithm, void* model, void* parameters, Datasetptr current_dataset)
{
 /*!Last Changed 19.08.2007 added RBF and RBFREG algorithms*/
 /*!Last Changed 11.08.2007 added NAIVEBAYES algorithm*/
 /*!Last Changed 02.04.2007 added HMM algorithm*/
 /*!Last Changed 18.12.2005*/
 Ruleset r; 
 Regressionruleset regr;
 Quantizereg_parameterptr paramqua; 
 Model_ldaclassptr mlda;
 Decisionnodeptr* forest;
 Decisionnodeptr dtrootnode;
 Regressionnodeptr rtrootnode;
 Mlpparameters mlpparams;
 Rbf_parameter rbfparams;
 Svm_modelptr msvm;
 Hmmptr* hmmarray;
 Model_divsptr mdivs;
 int vectsize, i, j, numparameters, nSV, treecount, complexity;
 switch (algorithm)
  {
   case SELECTMAX     :return 1;/*Classno*/
   case ONEFEATURE    :return 4;/*Split feature, point, left and right mean*/
   case NEARESTMEAN   :return (current_dataset->featurecount - 1) * current_dataset->classno; /*Mean vectors for each class. Discrete features are NOT converted*/
   case GAUSSIAN      :return current_dataset->multifeaturecount * current_dataset->classno; /*Mean and vector and single variance for each class. Discrete features are converted.*/
   case SELECTAVERAGE :return 1;/*Mean regression value of trainset*/
   case LINEARREG     :return current_dataset->multifeaturecount; /*Weights for each feature and b. Discrete features are converted.*/
   case QUANTIZEREG   :paramqua = (Quantizereg_parameterptr) parameters;
                       if (current_dataset->featurecount > 2)
                         return 5 + paramqua->partitioncount * paramqua->partitioncount; /*minx, binx, miny, biny, partitioncount*/
                       else
                         return 3 + paramqua->partitioncount; /*minx, binx, partitioncount*/
   case KNN           :
   case KNNREG        :return data_size((Instanceptr)model) * current_dataset->featurecount + 1;/*number of data times number of features + 1 memory space to store k. Discrete features are not converted.*/
   case GPROCESSREG   :return ((Model_gprocessregressionptr)model)->size * current_dataset->multifeaturecount;/*N data samples + weights array of size N*/
   case LDT           :
   case C45           :
   case KTREE         :dtrootnode = (Decisionnodeptr)model;
                       return decisiontree_node_count(dtrootnode) * 2 + decisiontree_leaf_count(dtrootnode);/*For each node, univariate split, for each leaf, class label*/
   case RANDOMFOREST  :
   case KFOREST       :forest = (Decisionnodeptr*) model;
                       treecount = get_parameter_i("forestsize");
                       complexity = 0;
                       for (i = 0; i < treecount; i++)
                        {
                         dtrootnode = forest[i];
                         complexity += decisiontree_node_count(dtrootnode) * 2 + decisiontree_leaf_count(dtrootnode);
                        }
                       return complexity;
                       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;
                       complexity = 0;
                       for (i = 0; i < treecount; i++)
                        {
                         dtrootnode = forest[i];
                         complexity += decisiontree_node_count(dtrootnode) * 2 + decisiontree_leaf_count(dtrootnode);
                        }
                       return complexity;
   case QDACLASS      :return current_dataset->classno * ((current_dataset->multifeaturecount - 1) * (current_dataset->multifeaturecount) / 2 + (current_dataset->multifeaturecount - 1) + 1);
   case LDACLASS      :mlda = (Model_ldaclassptr)model;
                       vectsize = (mlda->newfeaturecount - 1) * (current_dataset->multifeaturecount - 1);/*Size of eigenvectors plus*/
                       return vectsize + current_dataset->classno * mlda->newfeaturecount; /*Weight vector and bias for each class*/
   case NAIVEBAYES    :numparameters = current_dataset->classno;
                       for (i = 0; i < current_dataset->featurecount; i++)
                         switch (current_dataset->features[i].type)
                          {
                           case INTEGER:
                           case    REAL:numparameters += current_dataset->classno + 1;
                                        break;
                           case  STRING:numparameters += current_dataset->classno * current_dataset->features[i].valuecount;
                                        break;
                          }
                       return numparameters;
   case LOGISTIC      :return current_dataset->multifeaturecount * current_dataset->classno; /*Mean vectors and bias for each class. Discrete features are converted*/
   case IREP          :
   case IREP2         :
   case RIPPER        :
   case C45RULES      :
   case MULTIRIPPER   :
   case HYBRIDRIPPER  :
   case REXRIPPER     :
   case RISE          :
   case CN2           :
   case LERILS        :
   case PART          :r = *((Ruleset*) model);
                       return ruleset_complexity(r) + r.rulecount + 1; /*Complexity of conditions + classno of each rule + default class*/
   case DIVS          :mdivs = (Model_divsptr) model;
                       numparameters = mdivs->datacount; /*Classno of each ruleset*/
                       for (i = 0; i < mdivs->datacount; i++)
                         for (j = 0; j < mdivs->rulecounts[i]; j++)
                           numparameters += mdivs->conditioncounts[i][j]; /*Complexity of conditions*/
                       return numparameters;
   case RBF           :
   case RBFREG        :rbfparams = *((Rbf_parameterptr) parameters);
                       return rbfparams.input * rbfparams.hidden + rbfparams.hidden + rbfparams.output * (rbfparams.hidden + 1); /*m, s, w*/
   case MLPGENERIC    :
   case MLPGENERICREG :
   case DNC           :
   case DNCREG        :mlpparams = *((Mlpparameters*) parameters);
                       if (mlpparams.layernum != 0)
                        {
                         numparameters = (mlpparams.dimnum + 1) * mlpparams.hidden[0];
                         for (i = 0; i < mlpparams.layernum - 1; i++)
                           numparameters += (mlpparams.hidden[i] + 1) * mlpparams.hidden[i + 1]; /*weights from input to hiddens*/
                         numparameters += (mlpparams.hidden[i] + 1) * mlpparams.classnum; /*weights from last hidden to output*/
                        }
                       else
                         numparameters = (mlpparams.dimnum + 1) * mlpparams.classnum;
                       return numparameters;
   case SVMREGTREE    :
   case REGTREE       :
   case SOFTREGTREE   :rtrootnode = (Regressionnodeptr)model;
                       return complexity_of_regression_tree(rtrootnode);
   case REGRULE       :regr = *((Regressionruleset*) model);
                       return complexity_of_regression_ruleset(regr);
   case MULTILDT      :
   case OMNILDT       :
   case NBTREE        :
   case SOFTTREE      :
   case CART          :dtrootnode = (Decisionnodeptr)model;
                       return decisiontree_complexity_count(dtrootnode) + decisiontree_leaf_count(dtrootnode); /*Include class at the leaves*/
   case SVM           :nSV = 0;
                       msvm = (Svm_modelptr) model;
                       for (i = 0; i < msvm->nr_class; i++)
                         nSV += msvm->nSV[i];
                       return nSV * (current_dataset->multifeaturecount - 1);/*number of support vectors * number of features (realized)*/
   case SVMREG        :msvm = (Svm_modelptr) model;
                       nSV = msvm->l;
                       return nSV * (current_dataset->multifeaturecount - 1);/*number of support vectors * number of features (realized)*/
   case SIMPLEXSVM    :
   case SIMPLEXSVMREG :return number_of_support_vectors(model) * (current_dataset->multifeaturecount - 1);
   case HMM           :hmmarray = (Hmmptr*) model;
                       numparameters = 0;
                       for (i = 0; i < current_dataset->classno; i++)
                         numparameters += complexity_of_hmm(hmmarray[i]);
                       return numparameters;
  }
 return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x200, %rsp            # imm = 0x200
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0x1b0(%rbp)
subl $0x3e8, %eax            # imm = 0x3E8
je 0x4aad
jmp 0x4790
movl -0x1b0(%rbp), %eax
subl $0x3e9, %eax            # imm = 0x3E9
je 0x4b64
jmp 0x47a3
movl -0x1b0(%rbp), %eax
subl $0x3ea, %eax            # imm = 0x3EA
je 0x4b9c
jmp 0x47b6
movl -0x1b0(%rbp), %eax
subl $0x3eb, %eax            # imm = 0x3EB
je 0x4ac5
jmp 0x47c9
movl -0x1b0(%rbp), %eax
subl $0x3ec, %eax            # imm = 0x3EC
je 0x4db5
jmp 0x47dc
movl -0x1b0(%rbp), %eax
subl $0x3ed, %eax            # imm = 0x3ED
je 0x4b9c
jmp 0x47ef
movl -0x1b0(%rbp), %eax
addl $0xfffffc12, %eax       # imm = 0xFFFFFC12
subl $0x6, %eax
jb 0x4ef8
jmp 0x4805
movl -0x1b0(%rbp), %eax
subl $0x3f4, %eax            # imm = 0x3F4
je 0x503a
jmp 0x4818
movl -0x1b0(%rbp), %eax
subl $0x3f5, %eax            # imm = 0x3F5
je 0x4ef8
jmp 0x482b
movl -0x1b0(%rbp), %eax
addl $0xfffffc0a, %eax       # imm = 0xFFFFFC0A
subl $0x2, %eax
jb 0x517b
jmp 0x4841
movl -0x1b0(%rbp), %eax
subl $0x3f8, %eax            # imm = 0x3F8
je 0x4ede
jmp 0x4854
movl -0x1b0(%rbp), %eax
subl $0x3f9, %eax            # imm = 0x3F9
je 0x51b6
jmp 0x4867
movl -0x1b0(%rbp), %eax
subl $0x3fa, %eax            # imm = 0x3FA
je 0x5270
jmp 0x487a
movl -0x1b0(%rbp), %eax
subl $0x3fb, %eax            # imm = 0x3FB
je 0x4c86
jmp 0x488d
movl -0x1b0(%rbp), %eax
subl $0x3fc, %eax            # imm = 0x3FC
je 0x4ae2
jmp 0x48a0
movl -0x1b0(%rbp), %eax
subl $0x3fd, %eax            # imm = 0x3FD
je 0x517b
jmp 0x48b3
movl -0x1b0(%rbp), %eax
subl $0x3fe, %eax            # imm = 0x3FE
je 0x528e
jmp 0x48c6
movl -0x1b0(%rbp), %eax
subl $0x3ff, %eax            # imm = 0x3FF
je 0x503a
jmp 0x48d9
movl -0x1b0(%rbp), %eax
subl $0x400, %eax            # imm = 0x400
je 0x4d63
jmp 0x48ec
movl -0x1b0(%rbp), %eax
subl $0x401, %eax            # imm = 0x401
je 0x4e03
jmp 0x48ff
movl -0x1b0(%rbp), %eax
subl $0x402, %eax            # imm = 0x402
je 0x4ff6
jmp 0x4912
movl -0x1b0(%rbp), %eax
subl $0x403, %eax            # imm = 0x403
je 0x4bd9
jmp 0x4925
movl -0x1b0(%rbp), %eax
subl $0x404, %eax            # imm = 0x404
je 0x4ef8
jmp 0x4938
movl -0x1b0(%rbp), %eax
subl $0x405, %eax            # imm = 0x405
je 0x4f37
jmp 0x494b
movl -0x1b0(%rbp), %eax
addl $0xfffffbfa, %eax       # imm = 0xFFFFFBFA
subl $0x3, %eax
jb 0x4ef8
jmp 0x4961
movl -0x1b0(%rbp), %eax
addl $0xfffffbf7, %eax       # imm = 0xFFFFFBF7
subl $0x2, %eax
jb 0x517b
jmp 0x4977
movl -0x1b0(%rbp), %eax
subl $0x40b, %eax            # imm = 0x40B
je 0x4b9c
jmp 0x498a
movl -0x1b0(%rbp), %eax
subl $0x40c, %eax            # imm = 0x40C
je 0x4bd9
jmp 0x499d
movl -0x1b0(%rbp), %eax
subl $0x7d0, %eax            # imm = 0x7D0
je 0x4ab9
jmp 0x49b0
movl -0x1b0(%rbp), %eax
subl $0x7d1, %eax            # imm = 0x7D1
je 0x4b64
jmp 0x49c3
movl -0x1b0(%rbp), %eax
subl $0x7d2, %eax            # imm = 0x7D2
je 0x511b
jmp 0x49d6
movl -0x1b0(%rbp), %eax
subl $0x7d3, %eax            # imm = 0x7D3
je 0x503a
jmp 0x49e9
movl -0x1b0(%rbp), %eax
subl $0x7d4, %eax            # imm = 0x7D4
je 0x4afc
jmp 0x49fc
movl -0x1b0(%rbp), %eax
subl $0x7d5, %eax            # imm = 0x7D5
je 0x4b08
jmp 0x4a0f
movl -0x1b0(%rbp), %eax
subl $0x7d6, %eax            # imm = 0x7D6
je 0x4b1a
jmp 0x4a22
movl -0x1b0(%rbp), %eax
subl $0x7d7, %eax            # imm = 0x7D7
je 0x513a
jmp 0x4a35
movl -0x1b0(%rbp), %eax
subl $0x7d8, %eax            # imm = 0x7D8
je 0x5237
jmp 0x4a48
movl -0x1b0(%rbp), %eax
subl $0x7d9, %eax            # imm = 0x7D9
je 0x5270
jmp 0x4a5b
movl -0x1b0(%rbp), %eax
subl $0x7da, %eax            # imm = 0x7DA
je 0x503a
jmp 0x4a6e
movl -0x1b0(%rbp), %eax
subl $0x7db, %eax            # imm = 0x7DB
je 0x4ff6
jmp 0x4a81
movl -0x1b0(%rbp), %eax
subl $0x7dc, %eax            # imm = 0x7DC
je 0x4b83
jmp 0x4a94
movl -0x1b0(%rbp), %eax
addl $0xfffff823, %eax       # imm = 0xFFFFF823
subl $0x2, %eax
jb 0x511b
jmp 0x52fb
movl $0x1, -0x4(%rbp)
jmp 0x5302
movl $0x4, -0x4(%rbp)
jmp 0x5302
movq -0x20(%rbp), %rax
movl 0x1bc(%rax), %eax
subl $0x1, %eax
movq -0x20(%rbp), %rcx
imull 0x10(%rcx), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x20(%rbp), %rax
movl 0x1c0(%rax), %eax
movq -0x20(%rbp), %rcx
imull 0x10(%rcx), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movl $0x1, -0x4(%rbp)
jmp 0x5302
movq -0x20(%rbp), %rax
movl 0x1c0(%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x18(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x2, 0x1bc(%rax)
jle 0x4b50
movq -0x88(%rbp), %rax
movl (%rax), %eax
movq -0x88(%rbp), %rcx
imull (%rcx), %eax
addl $0x5, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x88(%rbp), %rax
movl (%rax), %eax
addl $0x3, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rdi
callq 0x449f0
movq -0x20(%rbp), %rcx
imull 0x1bc(%rcx), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq -0x20(%rbp), %rcx
imull 0x1c0(%rcx), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x28de0
shll %eax
movl %eax, -0x1b4(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x28ce0
movl %eax, %ecx
movl -0x1b4(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0xdd752(%rip), %rdi     # 0xe233d
callq 0x78f10
movl %eax, -0x1a8(%rbp)
movl $0x0, -0x1ac(%rbp)
movl $0x0, -0x198(%rbp)
movl -0x198(%rbp), %eax
cmpl -0x1a8(%rbp), %eax
jge 0x4c78
movq -0x98(%rbp), %rax
movslq -0x198(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x28de0
shll %eax
movl %eax, -0x1b8(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x28ce0
movl %eax, %ecx
movl -0x1b8(%rbp), %eax
addl %ecx, %eax
addl -0x1ac(%rbp), %eax
movl %eax, -0x1ac(%rbp)
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x4c0a
movl -0x1ac(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0xdd6b0(%rip), %rdi     # 0xe2348
callq 0x792b0
cmpl $0x0, %eax
jne 0x4cc6
movq -0x20(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x20(%rbp), %rcx
movl 0x10(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, -0x1a8(%rbp)
jmp 0x4cd3
movq -0x20(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x1a8(%rbp)
movl $0x0, -0x1ac(%rbp)
movl $0x0, -0x198(%rbp)
movl -0x198(%rbp), %eax
cmpl -0x1a8(%rbp), %eax
jge 0x4d55
movq -0x98(%rbp), %rax
movslq -0x198(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x28de0
shll %eax
movl %eax, -0x1bc(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x28ce0
movl %eax, %ecx
movl -0x1bc(%rbp), %eax
addl %ecx, %eax
addl -0x1ac(%rbp), %eax
movl %eax, -0x1ac(%rbp)
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x4ce7
movl -0x1ac(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x20(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x1c0(%rbp)
movq -0x20(%rbp), %rax
movl 0x1c0(%rax), %eax
subl $0x1, %eax
movq -0x20(%rbp), %rcx
imull 0x1c0(%rcx), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x1c0(%rbp), %eax
movq -0x20(%rbp), %rdx
movl 0x1c0(%rdx), %edx
subl $0x1, %edx
addl %edx, %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movl (%rax), %eax
subl $0x1, %eax
movq -0x20(%rbp), %rcx
movl 0x1c0(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %eax
movl %eax, -0x194(%rbp)
movl -0x194(%rbp), %eax
movq -0x20(%rbp), %rcx
movl 0x10(%rcx), %ecx
movq -0x90(%rbp), %rdx
imull (%rdx), %ecx
addl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x20(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x1a0(%rbp)
movl $0x0, -0x198(%rbp)
movl -0x198(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x1bc(%rcx), %eax
jge 0x4ed0
movq -0x20(%rbp), %rax
movslq -0x198(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
movl 0x30f08(%rax,%rcx), %eax
movl %eax, -0x1c4(%rbp)
testl %eax, %eax
je 0x4e6f
jmp 0x4e55
movl -0x1c4(%rbp), %eax
subl $0x1, %eax
je 0x4e87
jmp 0x4e62
movl -0x1c4(%rbp), %eax
subl $0x2, %eax
jne 0x4eba
jmp 0x4e6f
movq -0x20(%rbp), %rax
movl 0x10(%rax), %eax
addl $0x1, %eax
addl -0x1a0(%rbp), %eax
movl %eax, -0x1a0(%rbp)
jmp 0x4eba
movq -0x20(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x20(%rbp), %rcx
addq $0x30f08, %rcx          # imm = 0x30F08
movslq -0x198(%rbp), %rdx
imulq $0x340, %rdx, %rdx      # imm = 0x340
addq %rdx, %rcx
imull 0x18(%rcx), %eax
addl -0x1a0(%rbp), %eax
movl %eax, -0x1a0(%rbp)
jmp 0x4ebc
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x4e1a
movl -0x1a0(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x20(%rbp), %rax
movl 0x1c0(%rax), %eax
movq -0x20(%rbp), %rcx
imull 0x10(%rcx), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rsi
leaq -0x48(%rbp), %rdi
movl $0x28, %edx
callq 0x42b0
movq -0x28(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x48(%rbp), %xmm0
movups -0x38(%rbp), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xabb60
addl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x1a0(%rbp)
movl $0x0, -0x198(%rbp)
movl -0x198(%rbp), %eax
movq -0x190(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x4fe8
movl $0x0, -0x19c(%rbp)
movl -0x19c(%rbp), %eax
movq -0x190(%rbp), %rcx
movq 0x8(%rcx), %rcx
movslq -0x198(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x4fd2
movq -0x190(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x198(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x19c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
addl -0x1a0(%rbp), %eax
movl %eax, -0x1a0(%rbp)
movl -0x19c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x19c(%rbp)
jmp 0x4f78
jmp 0x4fd4
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x4f5c
movl -0x1a0(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x18(%rbp), %rsi
leaq -0x178(%rbp), %rdi
movl $0x40, %edx
callq 0x42b0
movl -0x170(%rbp), %eax
imull -0x174(%rbp), %eax
addl -0x174(%rbp), %eax
movl -0x178(%rbp), %ecx
movl -0x174(%rbp), %edx
addl $0x1, %edx
imull %edx, %ecx
addl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x18(%rbp), %rsi
leaq -0x138(%rbp), %rdi
movl $0x90, %edx
callq 0x42b0
cmpl $0x0, -0xe4(%rbp)
je 0x50f7
movl -0x134(%rbp), %eax
addl $0x1, %eax
imull -0xf0(%rbp), %eax
movl %eax, -0x1a0(%rbp)
movl $0x0, -0x198(%rbp)
movl -0x198(%rbp), %eax
movl -0xe4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x50d1
movslq -0x198(%rbp), %rax
movl -0xf0(%rbp,%rax,4), %eax
addl $0x1, %eax
movl -0x198(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
imull -0xf0(%rbp,%rcx,4), %eax
addl -0x1a0(%rbp), %eax
movl %eax, -0x1a0(%rbp)
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x507c
movslq -0x198(%rbp), %rax
movl -0xf0(%rbp,%rax,4), %eax
addl $0x1, %eax
imull -0x138(%rbp), %eax
addl -0x1a0(%rbp), %eax
movl %eax, -0x1a0(%rbp)
jmp 0x510d
movl -0x134(%rbp), %eax
addl $0x1, %eax
imull -0x138(%rbp), %eax
movl %eax, -0x1a0(%rbp)
movl -0x1a0(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rdi
callq 0xa5fe0
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rsi
leaq -0x80(%rbp), %rdi
movl $0x38, %edx
callq 0x42b0
movq -0x50(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x30(%rax)
movups -0x80(%rbp), %xmm0
movups -0x70(%rbp), %xmm1
movups -0x60(%rbp), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xa3540
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x28b80
movl %eax, -0x1c8(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x28ce0
movl %eax, %ecx
movl -0x1c8(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movl $0x0, -0x1a4(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x180(%rbp)
movl $0x0, -0x198(%rbp)
movl -0x198(%rbp), %eax
movq -0x180(%rbp), %rcx
cmpl 0x58(%rcx), %eax
jge 0x5219
movq -0x180(%rbp), %rax
movq 0x78(%rax), %rax
movslq -0x198(%rbp), %rcx
movl (%rax,%rcx,4), %eax
addl -0x1a4(%rbp), %eax
movl %eax, -0x1a4(%rbp)
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x51d5
movl -0x1a4(%rbp), %eax
movq -0x20(%rbp), %rcx
movl 0x1c0(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x180(%rbp), %rax
movl 0x5c(%rax), %eax
movl %eax, -0x1a4(%rbp)
movl -0x1a4(%rbp), %eax
movq -0x20(%rbp), %rcx
movl 0x1c0(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rdi
callq 0xcd650
movq -0x20(%rbp), %rcx
movl 0x1c0(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movq -0x10(%rbp), %rax
movq %rax, -0x188(%rbp)
movl $0x0, -0x1a0(%rbp)
movl $0x0, -0x198(%rbp)
movl -0x198(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x52f0
movq -0x188(%rbp), %rax
movslq -0x198(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x37dc0
addl -0x1a0(%rbp), %eax
movl %eax, -0x1a0(%rbp)
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x52ad
movl -0x1a0(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5302
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x200, %rsp            # imm = 0x200
popq %rbp
retq
nop