// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/dataset.c
// Function: load_definitions
Datasetptr load_definitions(char *fname, int* datasetcount)
{
 /*!Last Changed 13.03.2007 added selected for features*/
 /*!Last Changed 06.01.2007 added store_time*/
 /*!Last Changed 02.04.2005 added sigma estimate*/
 /*!Last Changed 10.03.2004 extended to regression*/
 /*!Last Changed 02.02.2004 added safemalloc*/
 Xmldocumentptr doc;
 Xmlelementptr xmldataset, xmlclasses, xmlkernels, xmlattributes, xmlclass, xmlkernel, xmlattribute, xmlvalue;
 Datasetptr header = NULL, dataset = NULL;
 Datasetptr datasetbefore = NULL;
 int i, j, k, maxclass;
 char* st;
 doc = xml_document(fname);
 if (!doc)
   return NULL;
 *datasetcount = 0;
 if (xml_parse(doc))
  {
   xmldataset = doc->root->child;
   while (xmldataset)
    {
     (*datasetcount)++;
     dataset = (Datasetptr) safemalloc(sizeof(Dataset), "load_definitions", 20);
     dataset->active = YES;
     dataset->next = NULL;
     dataset->name = strcopy(dataset->name, xml_get_attribute_value(xmldataset, "name"));
     dataset->file = strcopy(dataset->file, xml_get_attribute_value(xmldataset, "filename"));
     dataset->directory = strcopy(dataset->directory, xml_get_attribute_value(xmldataset, "directory"));
     st = xml_get_attribute_value(xmldataset, "size");
     if (st)
       dataset->datacount = atoi(st);
     else
       dataset->datacount = 0;
     st = xml_get_attribute_value(xmldataset, "separator");
     if (st)
       dataset->separator = st[0];
     else
       dataset->separator = ' ';
     st = xml_get_attribute_value(xmldataset, "dsnname");
     if (st)
       dataset->dsnname = strcopy(dataset->dsnname, st);
     else
       dataset->dsnname = NULL;
     st = xml_get_attribute_value(xmldataset, "tablename");
     if (st)
       dataset->tablename = strcopy(dataset->tablename, st);
     else
       dataset->tablename = NULL;
     dataset->newclassdefno = -1;
     st = xml_get_attribute_value(xmldataset, "sigma");
     if (st)
       dataset->sigma = atof(st);
     else
       dataset->sigma = 0.0;
     st = xml_get_attribute_value(xmldataset, "filetype");
     if (strIcmp(st, "text") == 0)
       dataset->storetype = STORE_TEXT;
     else
       if (strIcmp(st, "database") == 0)
         dataset->storetype = STORE_DB;
       else
         if (strIcmp(st, "sequential") == 0)
           dataset->storetype = STORE_SEQUENTIAL;
         else
           if (strIcmp(st, "multilabel") == 0)
            {
             dataset->storetype = STORE_MULTILABEL;
             st = xml_get_attribute_value(xmldataset, "classcount");
             if (st)
               dataset->classno = atoi(st);
             else
               dataset->classno = 0;
             st = xml_get_attribute_value(xmldataset, "classlabelstart");
             if (st)
               dataset->classdefno = atoi(st);
             else
               dataset->classdefno = -1;
            }
           else
             if (strIcmp(st, "kernel") == 0)
              {
               dataset->storetype = STORE_KERNEL;
               xmlkernels = xml_get_child_with_name(xmldataset, "kernels");
               dataset->kernelcount = xml_number_of_children(xmlkernels);
               xmlkernel = xmlkernels->child;
               i = 0;
               while (xmlkernel)
                {
                 dataset->kernelfiles[i] = strcopy(dataset->kernelfiles[i], xml_get_attribute_value(xmlkernel, "value"));
                 xmlkernel = xmlkernel->sibling;
                 i++;
                }
              }
     printf(m1272, dataset->name);
     st = xml_get_attribute_value(xmldataset, "task");
     if (dataset->storetype != STORE_MULTILABEL)
      {
       if (strIcmp(st, "classification") == 0)
        {
         xmlclasses = xml_get_child_with_name(xmldataset, "classes");
         dataset->classno = xml_number_of_children(xmlclasses);
         if (dataset->classno > MAXCLASSES)
          {
           printf(m1419, dataset->classno);
           exit(0);
          }
         xmlclass = xmlclasses->child;
         i = 0;
         while (xmlclass)
          {
           dataset->classes[i] = strcopy(dataset->classes[i], xml_get_attribute_value(xmlclass, "value"));
           st = xml_get_attribute_value(xmlclass, "size");
           if (st)
             dataset->classcounts[i] = atoi(st);
           xmlclass = xmlclass->sibling;
           i++;
          }
         maxclass = find_max_in_list(dataset->classcounts, dataset->classno);
         dataset->baseerror = 100 * (1 - dataset->classcounts[maxclass] / (dataset->datacount + 0.0));
        }
       else
        {
         dataset->classno = 0;
         dataset->classdefno = -1;
         dataset->newclassdefno = -1;
        }
      }
     xmlattributes = xml_get_child_with_name(xmldataset, "attributes");
     dataset->allfeatures = xml_number_of_children(xmlattributes);
     if (dataset->allfeatures > MAXFEATURES)
      {
       printf(m1421, dataset->allfeatures);
       exit(0);
      }
     dataset->featurecount = xml_number_of_children_with_specific_attribute_value(xmlattributes, "available", "True");
     dataset->multifeaturecount = 0;
     xmlattribute = xmlattributes->child;
     i = 0;
     j = 0;
     while (xmlattribute)
      {
       st = xml_get_attribute_value(xmlattribute, "available");
       if (st && strIcmp(st, "True") == 0)
        {
         dataset->availability[i] = YES;
         dataset->features[j].selected = YES;
         st = xml_get_attribute_value(xmlattribute, "type");
         if (st)
          {
           dataset->features[j].type = listindex(st, featuretype, 4);
           if (dataset->features[j].type == CLASSDEF && dataset->classno == 0)
             dataset->features[j].type = REGDEF;
           switch (dataset->features[j].type)
            {
             case  INTEGER:st = xml_get_attribute_value(xmlattribute, "min");
                           if (st)
                             dataset->features[j].min.intvalue = atoi(st); 
                           else
                             dataset->features[j].min.intvalue = -INT_MAX;
                           st = xml_get_attribute_value(xmlattribute, "max");
                           if (st)
                             dataset->features[j].max.intvalue = atoi(st);
                           else
                             dataset->features[j].max.intvalue = +INT_MAX;
                           dataset->multifeaturecount++;
                           break;
             case   STRING:
             case CLASSDEF:dataset->features[j].valuecount = xml_number_of_children(xmlattribute);
                           if (dataset->features[j].valuecount > MAXVALUES)
                            {
                             printf(m1420, j + 1);
                             exit(0);
                            }
                           if (dataset->features[j].type == STRING)
                             dataset->multifeaturecount += dataset->features[j].valuecount;
                           else
                            {
                             dataset->multifeaturecount++;
                             dataset->classdefno = j;
                             dataset->newclassdefno = dataset->multifeaturecount - 1;
                            }
                           xmlvalue = xmlattribute->child;
                           k = 0;
                           while (xmlvalue)
                            {
                             dataset->features[j].strings[k] = strcopy(dataset->features[j].strings[k], xmlvalue->pcdata);
                             xmlvalue = xmlvalue->sibling;
                             k++;
                            }
                           break;
             case     REAL:
             case   REGDEF:st = xml_get_attribute_value(xmlattribute, "min");
                           if (st)
                             dataset->features[j].min.floatvalue = atof(st); 
                           else
                             dataset->features[j].min.floatvalue = -INT_MAX;
                           st = xml_get_attribute_value(xmlattribute, "max");
                           if (st)
                             dataset->features[j].max.floatvalue = atof(st);
                           else
                             dataset->features[j].max.floatvalue = +INT_MAX;
                           dataset->multifeaturecount++;
                           if (dataset->features[j].type == REGDEF)
                            {
                             dataset->classdefno = j;
                             dataset->newclassdefno = dataset->multifeaturecount - 1;
                            }
                           break;
            }
          }
         else
           dataset->features[j].type = INTEGER;
         j++;
        }
       else
         dataset->availability[i] = NO;
       xmlattribute = xmlattribute->sibling;
       i++;
      }
     if (dataset->storetype == STORE_KERNEL)
       dataset->kernel = NULL;
     if (*datasetcount == 1)
       header = dataset;
     if (datasetbefore)
       datasetbefore->next = dataset;
     datasetbefore = dataset;
     xmldataset = xmldataset->sibling;
    }
  }
 else
   printf(m1052);
 xml_free_document(doc);
 return header;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq $0x0, -0x68(%rbp)
movq $0x0, -0x70(%rbp)
movq $0x0, -0x78(%rbp)
movq -0x10(%rbp), %rdi
callq 0xe0b20
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x232bc
movq $0x0, -0x8(%rbp)
jmp 0x24007
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
movq -0x20(%rbp), %rdi
callq 0xe16c0
cmpl $0x0, %eax
je 0x23fe8
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x23fe6
movq -0x18(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movl $0x1407278, %edi        # imm = 0x1407278
leaq 0xc0d58(%rip), %rsi     # 0xe4062
movl $0x14, %edx
callq 0x52d70
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movl $0x1, (%rax)
movq -0x70(%rbp), %rax
movq $0x0, 0x1407270(%rax)
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0x28(%rbp), %rdi
leaq 0xc0d06(%rip), %rsi     # 0xe4051
callq 0xe1130
movq -0xa8(%rbp), %rdi
movq %rax, %rsi
callq 0x54ba0
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
movq 0x1b0(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x28(%rbp), %rdi
leaq 0xc5233(%rip), %rsi     # 0xe85ba
callq 0xe1130
movq -0xa0(%rbp), %rdi
movq %rax, %rsi
callq 0x54ba0
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x1b0(%rax)
movq -0x70(%rbp), %rax
movq 0x1407118(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x28(%rbp), %rdi
leaq 0xc3bba(%rip), %rsi     # 0xe6f80
callq 0xe1130
movq -0x98(%rbp), %rdi
movq %rax, %rsi
callq 0x54ba0
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x1407118(%rax)
movq -0x28(%rbp), %rdi
leaq 0xbf054(%rip), %rsi     # 0xe2447
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23423
movq -0x90(%rbp), %rdi
callq 0x41c0
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1407120(%rax)
jmp 0x23431
movq -0x70(%rbp), %rax
movl $0x0, 0x1407120(%rax)
movq -0x28(%rbp), %rdi
leaq 0xc0c37(%rip), %rsi     # 0xe4073
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23467
movq -0x90(%rbp), %rax
movb (%rax), %cl
movq -0x70(%rbp), %rax
movb %cl, 0x1a8(%rax)
jmp 0x23472
movq -0x70(%rbp), %rax
movb $0x20, 0x1a8(%rax)
movq -0x28(%rbp), %rdi
leaq 0xc0c00(%rip), %rsi     # 0xe407d
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x234ba
movq -0x70(%rbp), %rax
movq 0x1407108(%rax), %rdi
movq -0x90(%rbp), %rsi
callq 0x54ba0
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x1407108(%rax)
jmp 0x234c9
movq -0x70(%rbp), %rax
movq $0x0, 0x1407108(%rax)
movq -0x28(%rbp), %rdi
leaq 0xc0bb1(%rip), %rsi     # 0xe4085
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23511
movq -0x70(%rbp), %rax
movq 0x1407110(%rax), %rdi
movq -0x90(%rbp), %rsi
callq 0x54ba0
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x1407110(%rax)
jmp 0x23520
movq -0x70(%rbp), %rax
movq $0x0, 0x1407110(%rax)
movq -0x70(%rbp), %rax
movl $0xffffffff, 0x1407138(%rax) # imm = 0xFFFFFFFF
movq -0x28(%rbp), %rdi
leaq 0xbf008(%rip), %rsi     # 0xe2541
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23569
movq -0x90(%rbp), %rdi
callq 0x4100
movq -0x70(%rbp), %rax
movsd %xmm0, 0x1407130(%rax)
jmp 0x23578
movq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x1407130(%rax)
movq -0x28(%rbp), %rdi
leaq 0xc0b0c(%rip), %rsi     # 0xe408f
callq 0xe1130
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rdi
leaq 0xbfff9(%rip), %rsi     # 0xe3596
callq 0x54990
cmpl $0x0, %eax
jne 0x235ba
movq -0x70(%rbp), %rax
movl $0x0, 0x140713c(%rax)
jmp 0x237a2
movq -0x90(%rbp), %rdi
leaq 0xbffc5(%rip), %rsi     # 0xe358d
callq 0x54990
cmpl $0x0, %eax
jne 0x235e5
movq -0x70(%rbp), %rax
movl $0x1, 0x140713c(%rax)
jmp 0x237a0
movq -0x90(%rbp), %rdi
leaq 0xbffa8(%rip), %rsi     # 0xe359b
callq 0x54990
cmpl $0x0, %eax
jne 0x23610
movq -0x70(%rbp), %rax
movl $0x2, 0x140713c(%rax)
jmp 0x2379e
movq -0x90(%rbp), %rdi
leaq 0xbff88(%rip), %rsi     # 0xe35a6
callq 0x54990
cmpl $0x0, %eax
jne 0x236cb
movq -0x70(%rbp), %rax
movl $0x4, 0x140713c(%rax)
movq -0x28(%rbp), %rdi
leaq 0xc0a53(%rip), %rsi     # 0xe4098
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23672
movq -0x90(%rbp), %rdi
callq 0x41c0
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x10(%rax)
jmp 0x2367d
movq -0x70(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x28(%rbp), %rdi
leaq 0xc0a1b(%rip), %rsi     # 0xe40a3
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x236b8
movq -0x90(%rbp), %rdi
callq 0x41c0
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1407128(%rax)
jmp 0x236c6
movq -0x70(%rbp), %rax
movl $0xffffffff, 0x1407128(%rax) # imm = 0xFFFFFFFF
jmp 0x2379c
movq -0x90(%rbp), %rdi
leaq 0xcaabf(%rip), %rsi     # 0xee198
callq 0x54990
cmpl $0x0, %eax
jne 0x2379a
movq -0x70(%rbp), %rax
movl $0x3, 0x140713c(%rax)
movq -0x28(%rbp), %rdi
leaq 0xc09b3(%rip), %rsi     # 0xe40b3
callq 0xe1540
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0xe1420
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1407268(%rax)
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x50(%rbp)
movl $0x0, -0x7c(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x23798
movq -0x70(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movq 0x1407218(%rax,%rcx,8), %rax
movq %rax, -0xb0(%rbp)
movq -0x50(%rbp), %rdi
leaq 0xc2cf4(%rip), %rsi     # 0xe644e
callq 0xe1130
movq -0xb0(%rbp), %rdi
movq %rax, %rsi
callq 0x54ba0
movq %rax, %rdx
movq -0x70(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movq %rdx, 0x1407218(%rax,%rcx,8)
movq -0x50(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x50(%rbp)
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x23731
jmp 0x2379a
jmp 0x2379c
jmp 0x2379e
jmp 0x237a0
jmp 0x237a2
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0xc090a(%rip), %rdi     # 0xe40bb
movb $0x0, %al
callq 0x4030
movq -0x28(%rbp), %rdi
leaq 0xc090c(%rip), %rsi     # 0xe40cf
callq 0xe1130
movq %rax, -0x90(%rbp)
movq -0x70(%rbp), %rax
cmpl $0x4, 0x140713c(%rax)
je 0x23998
movq -0x90(%rbp), %rdi
leaq 0xc3618(%rip), %rsi     # 0xe6e06
callq 0x54990
cmpl $0x0, %eax
jne 0x2396f
movq -0x28(%rbp), %rdi
leaq 0xbf831(%rip), %rsi     # 0xe3038
callq 0xe1540
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0xe1420
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x70(%rbp), %rax
cmpl $0x32, 0x10(%rax)
jle 0x23848
movq -0x70(%rbp), %rax
movl 0x10(%rax), %esi
leaq 0xc0366(%rip), %rdi     # 0xe3ba0
movb $0x0, %al
callq 0x4030
xorl %edi, %edi
callq 0x40a0
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x7c(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x23901
movq -0x70(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0xb8(%rbp)
movq -0x48(%rbp), %rdi
leaq 0xc2bc9(%rip), %rsi     # 0xe644e
callq 0xe1130
movq -0xb8(%rbp), %rdi
movq %rax, %rsi
callq 0x54ba0
movq %rax, %rdx
movq -0x70(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movq %rdx, 0x18(%rax,%rcx,8)
movq -0x48(%rbp), %rdi
leaq 0xbeb93(%rip), %rsi     # 0xe2447
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x238e7
movq -0x90(%rbp), %rdi
callq 0x41c0
movl %eax, %edx
movq -0x70(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movl %edx, 0x1407140(%rax,%rcx,4)
movq -0x48(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x48(%rbp)
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x2385b
movq -0x70(%rbp), %rdi
addq $0x1407140, %rdi        # imm = 0x1407140
movq -0x70(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x50070
movl %eax, -0x88(%rbp)
movq -0x70(%rbp), %rax
movslq -0x88(%rbp), %rcx
cvtsi2sdl 0x1407140(%rax,%rcx,4), %xmm0
movq -0x70(%rbp), %rax
cvtsi2sdl 0x1407120(%rax), %xmm1
xorps %xmm2, %xmm2
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0xbe6c7(%rip), %xmm1    # 0xe2018
subsd %xmm0, %xmm1
movsd 0xbf0e3(%rip), %xmm0    # 0xe2a40
mulsd %xmm1, %xmm0
movq -0x70(%rbp), %rax
movsd %xmm0, 0x1407208(%rax)
jmp 0x23996
movq -0x70(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x70(%rbp), %rax
movl $0xffffffff, 0x1407128(%rax) # imm = 0xFFFFFFFF
movq -0x70(%rbp), %rax
movl $0xffffffff, 0x1407138(%rax) # imm = 0xFFFFFFFF
jmp 0x23998
movq -0x28(%rbp), %rdi
leaq 0xc0731(%rip), %rsi     # 0xe40d4
callq 0xe1540
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
callq 0xe1420
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1b8(%rax)
movq -0x70(%rbp), %rax
cmpl $0x61a8, 0x1b8(%rax)    # imm = 0x61A8
jle 0x239f0
movq -0x70(%rbp), %rax
movl 0x1b8(%rax), %esi
leaq 0xc036a(%rip), %rdi     # 0xe3d4c
movb $0x0, %al
callq 0x4030
xorl %edi, %edi
callq 0x40a0
movq -0x40(%rbp), %rdi
leaq 0xc06e4(%rip), %rsi     # 0xe40df
leaq 0xc06e7(%rip), %rdx     # 0xe40e9
callq 0xe1460
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1bc(%rax)
movq -0x70(%rbp), %rax
movl $0x0, 0x1c0(%rax)
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x58(%rbp)
movl $0x0, -0x7c(%rbp)
movl $0x0, -0x80(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x23f8a
movq -0x58(%rbp), %rdi
leaq 0xc068e(%rip), %rsi     # 0xe40df
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23f5d
movq -0x90(%rbp), %rdi
leaq 0xc0670(%rip), %rsi     # 0xe40e9
callq 0x54990
cmpl $0x0, %eax
jne 0x23f5d
movq -0x70(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movl $0x1, 0x1c4(%rax,%rcx,4)
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movl $0x1, 0x1c(%rax)
movq -0x58(%rbp), %rdi
leaq 0xc3b57(%rip), %rsi     # 0xe761b
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23f34
movq -0x90(%rbp), %rdi
leaq 0xe0fe4(%rip), %rsi     # 0x104ad0
movl $0x4, %edx
callq 0x54910
movl %eax, %ecx
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rdx
imulq $0x340, %rdx, %rdx      # imm = 0x340
addq %rdx, %rax
movl %ecx, (%rax)
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
cmpl $0x3, (%rax)
jne 0x23b57
movq -0x70(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x23b57
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movl $0x4, (%rax)
movq -0x70(%rbp), %rax
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
movl 0x30f08(%rax,%rcx), %eax
movq %rax, -0xc0(%rbp)
subq $0x4, %rax
ja 0x23f32
movq -0xc0(%rbp), %rax
leaq 0xbf5ac(%rip), %rcx     # 0xe3138
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x58(%rbp), %rdi
leaq 0xc054e(%rip), %rsi     # 0xe40ee
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23be1
movq -0x90(%rbp), %rdi
callq 0x41c0
movl %eax, %ecx
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rdx
imulq $0x340, %rdx, %rdx      # imm = 0x340
addq %rdx, %rax
movl %ecx, 0x8(%rax)
jmp 0x23c00
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movl $0x80000001, 0x8(%rax)  # imm = 0x80000001
movq -0x58(%rbp), %rdi
leaq 0xbef1f(%rip), %rsi     # 0xe2b2a
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23c4c
movq -0x90(%rbp), %rdi
callq 0x41c0
movl %eax, %ecx
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rdx
imulq $0x340, %rdx, %rdx      # imm = 0x340
addq %rdx, %rax
movl %ecx, 0x10(%rax)
jmp 0x23c6b
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movl $0x7fffffff, 0x10(%rax) # imm = 0x7FFFFFFF
movq -0x70(%rbp), %rax
movl 0x1c0(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x1c0(%rax)
jmp 0x23f32
movq -0x58(%rbp), %rdi
callq 0xe1420
movl %eax, %ecx
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rdx
imulq $0x340, %rdx, %rdx      # imm = 0x340
addq %rdx, %rax
movl %ecx, 0x18(%rax)
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
cmpl $0x64, 0x18(%rax)
jle 0x23ce2
movl -0x80(%rbp), %esi
addl $0x1, %esi
leaq 0xbf87b(%rip), %rdi     # 0xe354f
movb $0x0, %al
callq 0x4030
xorl %edi, %edi
callq 0x40a0
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
cmpl $0x1, (%rax)
jne 0x23d2c
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movl 0x18(%rax), %ecx
movq -0x70(%rbp), %rax
addl 0x1c0(%rax), %ecx
movl %ecx, 0x1c0(%rax)
jmp 0x23d63
movq -0x70(%rbp), %rax
movl 0x1c0(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x1c0(%rax)
movl -0x80(%rbp), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1407128(%rax)
movq -0x70(%rbp), %rax
movl 0x1c0(%rax), %ecx
subl $0x1, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1407138(%rax)
movq -0x58(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
movl $0x0, -0x84(%rbp)
cmpq $0x0, -0x60(%rbp)
je 0x23df5
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movslq -0x84(%rbp), %rcx
movq 0x20(%rax,%rcx,8), %rdi
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x54ba0
movq %rax, %rdx
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movslq -0x84(%rbp), %rcx
movq %rdx, 0x20(%rax,%rcx,8)
movq -0x60(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x60(%rbp)
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x23d79
jmp 0x23f32
movq -0x58(%rbp), %rdi
leaq 0xc02e9(%rip), %rsi     # 0xe40ee
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23e46
movq -0x90(%rbp), %rdi
callq 0x4100
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movsd %xmm0, 0x8(%rax)
jmp 0x23e6b
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movsd 0xbe1a2(%rip), %xmm0    # 0xe2008
movsd %xmm0, 0x8(%rax)
movq -0x58(%rbp), %rdi
leaq 0xbecb4(%rip), %rsi     # 0xe2b2a
callq 0xe1130
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x90(%rbp)
je 0x23eb7
movq -0x90(%rbp), %rdi
callq 0x4100
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movsd %xmm0, 0x10(%rax)
jmp 0x23edc
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movsd 0xbe139(%rip), %xmm0    # 0xe2010
movsd %xmm0, 0x10(%rax)
movq -0x70(%rbp), %rax
movl 0x1c0(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x1c0(%rax)
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
cmpl $0x4, (%rax)
jne 0x23f30
movl -0x80(%rbp), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1407128(%rax)
movq -0x70(%rbp), %rax
movl 0x1c0(%rax), %ecx
subl $0x1, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x1407138(%rax)
jmp 0x23f32
jmp 0x23f52
movq -0x70(%rbp), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movslq -0x80(%rbp), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
movl $0x0, (%rax)
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x23f70
movq -0x70(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movl $0x0, 0x1c4(%rax,%rcx,4)
movq -0x58(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x58(%rbp)
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x23a3b
movq -0x70(%rbp), %rax
cmpl $0x3, 0x140713c(%rax)
jne 0x23fa6
movq -0x70(%rbp), %rax
movq $0x0, 0x1407210(%rax)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x23fb7
movq -0x70(%rbp), %rax
movq %rax, -0x68(%rbp)
cmpq $0x0, -0x78(%rbp)
je 0x23fcd
movq -0x70(%rbp), %rcx
movq -0x78(%rbp), %rax
movq %rcx, 0x1407270(%rax)
movq -0x70(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x232e8
jmp 0x23ff6
leaq 0xc0103(%rip), %rdi     # 0xe40f2
movb $0x0, %al
callq 0x4030
movq -0x20(%rbp), %rdi
callq 0xe1680
movq -0x68(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)