// File: ncbi[P]amr/gff.cpp
// Function: GFF_sp::Annot::Annot(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, GFF_sp::Gff::Type, bool, bool)
Annot::Annot (const string &fName,
              Gff::Type gffType,
	            bool protMatch,
	            bool lcl)
{
  IMPLY (protMatch,    gffType == Gff::genbank 
                    || gffType == Gff::microscope 
                    || gffType == Gff::prodigal
        );
  IMPLY (gffType == Gff::microscope, protMatch);
//IMPLY (trimProject, gffType == Gff::genbank);
  IMPLY (lcl, gffType == Gff::pgap);

	if (fName. empty ())
		throw runtime_error ("Empty GFF file name");
	
  LineInput f (fName /*, 100 * 1024, 1*/);
  while (f. nextLine ())
  {
    trim (f. line);
    
    if (   (   gffType == Gff::prokka
            || gffType == Gff::bakta
           )
        && f. line == "##FASTA"
       )
      break;
    
    if (   f. line. empty () 
        || f. line [0] == '#'
       )
      continue;

    try
    {
      /*1*/       string contig     (unescape (findSplit (f. line, '\t')));
      /*2*/ const string source     (unescape (findSplit (f. line, '\t')));
      /*3*/ const string type       (unescape (findSplit (f. line, '\t')));
      /*4*/ const string startS     (unescape (findSplit (f. line, '\t')));
      /*5*/ const string stopS      (unescape (findSplit (f. line, '\t')));
      /*6*/ const string score      (unescape (findSplit (f. line, '\t')));  // real number
      /*7*/ const string strand     (unescape (findSplit (f. line, '\t')));
      /*8*/ const string phase      (unescape (findSplit (f. line, '\t')));  // frame
      /*9*/ string attributes (f. line);  
      
      trim (attributes);
      if (attributes. empty ())
      	throw runtime_error ("9 fields are expected in each line");

    #if 0
      if (trimProject)
        if (contains (contig, ":"))
          findSplit (contig, ':');  // = project_id
    #endif
      if (contig. empty ())
      	throw runtime_error ("empty sequence indentifier");
  	  for (const char c : contig)
  	  	if (! printable (c))
  	  		throw runtime_error ("Non-printable character in the sequence identifier: " + to_string (c));

      if (   type != "CDS"
          && type != "gene"
          && type != "pseudogene"
         )
        continue;
        
      if (gffType == Gff::pgap && type != "CDS")
        continue;
        
      long start = -1;
      if (! str2<long> (startS, start))
	    	throw runtime_error ("Cannot read start");
      if (start <= 0)
      	throw runtime_error ("start should be >= 1");
        
      long stop = -1;
      if (! str2<long> (stopS, stop))
 	    	throw runtime_error ("Cannot read stop");
      if (stop <= 0)
      	throw runtime_error ("stop should be >= 1");

      if (start > stop)
      	throw runtime_error ("start cannot be greater than stop");

      start--;    	
      	
      if (   strand != "+" 
          && strand != "-"
         )
      	throw runtime_error ("strand should be '+' or '-'");
             
      const bool pseudo =    contains (attributes, "pseudo=true")
                          || contains (attributes, "gene_biotype=pseudogene")
                          || type == "pseudogene";
    //if (pseudo && type == "CDS")  
      //continue;
      
      const bool partial =    contains (attributes, "partial=true")
                              // Gff::prodigal
                           || contains (attributes, "partial=01")
                           || contains (attributes, "partial=10")
                           || contains (attributes, "partial=11");
      
      string protAttr = "Name";
      switch (gffType)
      {
        case Gff::bakta:         protAttr = "ID"; break;
        case Gff::genbank:       protAttr = (protMatch || pseudo) ? "locus_tag" : "Name"; break;
        case Gff::microscope:    protAttr = "ID"; break;
        case Gff::patric:        protAttr = "ID"; break;
        case Gff::prodigal:      protAttr = "ID"; break;
        case Gff::prokka:        protAttr = "ID"; break;
        case Gff::pseudomonasdb: protAttr = "Alias"; break;  // for type = "gene", "locus" for type = "CDS"
        case Gff::rast:          protAttr = "ID"; break;
        default: break;
      }
      ASSERT (! protAttr. empty ());
      protAttr += "=";
          
      string prot_;
      string gene_;
      string product_;
      {
        string locusTag;
        while (! attributes. empty ())
        {
    	    string s (findSplit (attributes, ';'));
      	  trim (s);
    	    if (isLeft (s, protAttr))
    	    {
    	      prot_ = s;
            findSplit (prot_, '='); 
    	    }
    	    else if (isLeft (s, "gene="))
    	    {
    	      gene_ = s;
    	      findSplit (gene_, '=');
    	    }
    	    else if (isLeft (s, "product="))
    	    {
    	      product_ = s;
    	      findSplit (product_, '=');
    	    //replace (product, tmpSpace, ' ');
    	    }
    	    else if (gffType == Gff::patric && isLeft (s, "locus_tag="))
    	    {
    	      locusTag = s;
    	      findSplit (locusTag, '=');
    	    }
    	  }
    	  trimPrefix (prot_, "\"");
    	  trimSuffix (prot_, "\"");
        if (prot_. empty ())
        	continue;
        //throw runtime_error ("no attribute '" + protAttr + "': " + f. line);
        
        switch (gffType)
        {
          case Gff::genbank:       if (contains (prot_, ":"))  findSplit (prot_, ':');  break;
          case Gff::patric:        if (! locusTag. empty ())  prot_ += "|" + locusTag;  
                                   if (isLeft (contig, "accn|"))  contig. erase (0, 5);
                                   break;
          default:  break;
        }
      }
  	  QC_ASSERT (! prot_. empty ());
  	
  	        string prot    (unescape (prot_));
  	  const string gene    (unescape (gene_));
  	  const string product (unescape (product_));
  	
  	  if (gffType == Gff::pgap)
  	  {
  	    pgap_accession (prot, false);
  	    pgap_accession (contig, lcl);
  	  }
  	  QC_ASSERT (! prot. empty ());
  	  
  	  Locus locus ((size_t) f. lineNum, contig, (size_t) start, (size_t) stop, strand == "+", partial, 0, gene, product);
  	#if 0
  	  // DNA may be truncated
      if (type == "CDS" && ! pseudo && locus. size () % 3 != 0)
      {
        cout << "Locus tag: " << prot << endl;
        locus. print (cout);
        ERROR;
      }
    #endif

      prot2loci [prot] << std::move (locus);
    }
    catch (const exception &e)
    {
      throw runtime_error ("File " + fName + ", " + f. lineStr () + ": " + e. what ());
    }
  }
}

// Assembly:
subq $0x1398, %rsp           # imm = 0x1398
movb %r8b, %al
movq %rdi, 0x1390(%rsp)
movq %rsi, 0x1388(%rsp)
movl %edx, 0x1384(%rsp)
andb $0x1, %cl
movb %cl, 0x1383(%rsp)
andb $0x1, %al
movb %al, 0x1382(%rsp)
movq 0x1390(%rsp), %rdi
movq %rdi, 0x228(%rsp)
callq 0x2aad0
movq 0x228(%rsp), %rdi
leaq 0x58fa8(%rip), %rax     # 0x105b40
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x8, %rdi
movq %rdi, 0x220(%rsp)
callq 0xb3640
movq 0x228(%rsp), %rdi
addq $0x38, %rdi
movq %rdi, 0x230(%rsp)
callq 0x2a8d0
testb $0x1, 0x1383(%rsp)
je 0xacea1
callq 0xc090
movl $0x0, (%rax)
cmpl $0x1, 0x1384(%rsp)
je 0xace9f
cmpl $0x2, 0x1384(%rsp)
je 0xace9f
cmpl $0x5, 0x1384(%rsp)
je 0xace9f
callq 0xc8c0
cmpl $0x0, %eax
jne 0xace95
leaq 0x12df(%rsp), %rdi
movq %rdi, 0x218(%rsp)
callq 0xcd00
movq 0x218(%rsp), %rdx
leaq 0x243c0(%rip), %rsi     # 0xd0ffe
leaq 0x12e0(%rsp), %rdi
callq 0x29fd0
jmp 0xacc4d
leaq 0x12a8(%rsp), %rdi
movl $0xae, %esi
callq 0x2ded0
jmp 0xacc61
leaq 0x1300(%rsp), %rdi
leaq 0x12e0(%rsp), %rsi
leaq 0x12a8(%rsp), %rdx
callq 0x2dde0
jmp 0xacc80
leaq 0x1ef1a(%rip), %rdx     # 0xcbba1
leaq 0x1320(%rsp), %rdi
leaq 0x1300(%rsp), %rsi
callq 0x2a2f0
jmp 0xacc9e
leaq 0x1267(%rsp), %rdi
movq %rdi, 0x210(%rsp)
callq 0xcd00
movq 0x210(%rsp), %rdx
leaq 0x2441b(%rip), %rsi     # 0xd10dd
leaq 0x1268(%rsp), %rdi
callq 0x29fd0
jmp 0xaccd1
leaq 0x20d3e(%rip), %rdx     # 0xcda16
leaq 0x1288(%rsp), %rdi
leaq 0x1268(%rsp), %rsi
callq 0x2a2f0
jmp 0xaccef
leaq 0x1340(%rsp), %rdi
leaq 0x1320(%rsp), %rsi
leaq 0x1288(%rsp), %rdx
callq 0x2dde0
jmp 0xacd0e
leaq 0x24404(%rip), %rdx     # 0xd1119
leaq 0x1360(%rsp), %rdi
leaq 0x1340(%rsp), %rsi
callq 0x2a2f0
jmp 0xacd2c
leaq 0x1360(%rsp), %rdi
callq 0x3e9b0
jmp 0xacd3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xace83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xace76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xace69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xace5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xace42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xace35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xace28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xace1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x1360(%rsp), %rdi
callq 0xce98
leaq 0x1340(%rsp), %rdi
callq 0xce98
leaq 0x1288(%rsp), %rdi
callq 0xce98
leaq 0x1268(%rsp), %rdi
callq 0xce98
leaq 0x1267(%rsp), %rdi
callq 0xc7a0
leaq 0x1320(%rsp), %rdi
callq 0xce98
leaq 0x1300(%rsp), %rdi
callq 0xce98
leaq 0x12a8(%rsp), %rdi
callq 0xce98
leaq 0x12e0(%rsp), %rdi
callq 0xce98
leaq 0x12df(%rsp), %rdi
callq 0xc7a0
jmp 0xb0109
movl $0x1, %edi
callq 0xc8d0
jmp 0xacea1
cmpl $0x2, 0x1384(%rsp)
jne 0xad15d
callq 0xc090
movl $0x0, (%rax)
testb $0x1, 0x1383(%rsp)
jne 0xad15b
callq 0xc8c0
cmpl $0x0, %eax
jne 0xad151
leaq 0x11bf(%rsp), %rdi
movq %rdi, 0x208(%rsp)
callq 0xcd00
movq 0x208(%rsp), %rdx
leaq 0x24104(%rip), %rsi     # 0xd0ffe
leaq 0x11c0(%rsp), %rdi
callq 0x29fd0
jmp 0xacf09
leaq 0x1198(%rsp), %rdi
movl $0xaf, %esi
callq 0x2ded0
jmp 0xacf1d
leaq 0x11e0(%rsp), %rdi
leaq 0x11c0(%rsp), %rsi
leaq 0x1198(%rsp), %rdx
callq 0x2dde0
jmp 0xacf3c
leaq 0x1ec5e(%rip), %rdx     # 0xcbba1
leaq 0x1200(%rsp), %rdi
leaq 0x11e0(%rsp), %rsi
callq 0x2a2f0
jmp 0xacf5a
leaq 0x1157(%rsp), %rdi
movq %rdi, 0x200(%rsp)
callq 0xcd00
movq 0x200(%rsp), %rdx
leaq 0x2415f(%rip), %rsi     # 0xd10dd
leaq 0x1158(%rsp), %rdi
callq 0x29fd0
jmp 0xacf8d
leaq 0x20a82(%rip), %rdx     # 0xcda16
leaq 0x1178(%rsp), %rdi
leaq 0x1158(%rsp), %rsi
callq 0x2a2f0
jmp 0xacfab
leaq 0x1220(%rsp), %rdi
leaq 0x1200(%rsp), %rsi
leaq 0x1178(%rsp), %rdx
callq 0x2dde0
jmp 0xacfca
leaq 0x2419a(%rip), %rdx     # 0xd116b
leaq 0x1240(%rsp), %rdi
leaq 0x1220(%rsp), %rsi
callq 0x2a2f0
jmp 0xacfe8
leaq 0x1240(%rsp), %rdi
callq 0x3e9b0
jmp 0xacff7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad13f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad132
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad125
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad118
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad0fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad0f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad0e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad0d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x1240(%rsp), %rdi
callq 0xce98
leaq 0x1220(%rsp), %rdi
callq 0xce98
leaq 0x1178(%rsp), %rdi
callq 0xce98
leaq 0x1158(%rsp), %rdi
callq 0xce98
leaq 0x1157(%rsp), %rdi
callq 0xc7a0
leaq 0x1200(%rsp), %rdi
callq 0xce98
leaq 0x11e0(%rsp), %rdi
callq 0xce98
leaq 0x1198(%rsp), %rdi
callq 0xce98
leaq 0x11c0(%rsp), %rdi
callq 0xce98
leaq 0x11bf(%rsp), %rdi
callq 0xc7a0
jmp 0xb0109
movl $0x1, %edi
callq 0xc8d0
jmp 0xad15d
testb $0x1, 0x1382(%rsp)
je 0xad419
callq 0xc090
movl $0x0, (%rax)
cmpl $0x4, 0x1384(%rsp)
je 0xad417
callq 0xc8c0
cmpl $0x0, %eax
jne 0xad40d
leaq 0x10af(%rsp), %rdi
movq %rdi, 0x1f8(%rsp)
callq 0xcd00
movq 0x1f8(%rsp), %rdx
leaq 0x23e48(%rip), %rsi     # 0xd0ffe
leaq 0x10b0(%rsp), %rdi
callq 0x29fd0
jmp 0xad1c5
leaq 0x1088(%rsp), %rdi
movl $0xb1, %esi
callq 0x2ded0
jmp 0xad1d9
leaq 0x10d0(%rsp), %rdi
leaq 0x10b0(%rsp), %rsi
leaq 0x1088(%rsp), %rdx
callq 0x2dde0
jmp 0xad1f8
leaq 0x1e9a2(%rip), %rdx     # 0xcbba1
leaq 0x10f0(%rsp), %rdi
leaq 0x10d0(%rsp), %rsi
callq 0x2a2f0
jmp 0xad216
leaq 0x1047(%rsp), %rdi
movq %rdi, 0x1f0(%rsp)
callq 0xcd00
movq 0x1f0(%rsp), %rdx
leaq 0x23ea3(%rip), %rsi     # 0xd10dd
leaq 0x1048(%rsp), %rdi
callq 0x29fd0
jmp 0xad249
leaq 0x207c6(%rip), %rdx     # 0xcda16
leaq 0x1068(%rsp), %rdi
leaq 0x1048(%rsp), %rsi
callq 0x2a2f0
jmp 0xad267
leaq 0x1110(%rsp), %rdi
leaq 0x10f0(%rsp), %rsi
leaq 0x1068(%rsp), %rdx
callq 0x2dde0
jmp 0xad286
leaq 0x23ee8(%rip), %rdx     # 0xd1175
leaq 0x1130(%rsp), %rdi
leaq 0x1110(%rsp), %rsi
callq 0x2a2f0
jmp 0xad2a4
leaq 0x1130(%rsp), %rdi
callq 0x3e9b0
jmp 0xad2b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad3fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad3ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad3e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad3d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad3ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad3ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad3a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xad393
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x1130(%rsp), %rdi
callq 0xce98
leaq 0x1110(%rsp), %rdi
callq 0xce98
leaq 0x1068(%rsp), %rdi
callq 0xce98
leaq 0x1048(%rsp), %rdi
callq 0xce98
leaq 0x1047(%rsp), %rdi
callq 0xc7a0
leaq 0x10f0(%rsp), %rdi
callq 0xce98
leaq 0x10d0(%rsp), %rdi
callq 0xce98
leaq 0x1088(%rsp), %rdi
callq 0xce98
leaq 0x10b0(%rsp), %rdi
callq 0xce98
leaq 0x10af(%rsp), %rdi
callq 0xc7a0
jmp 0xb0109
movl $0x1, %edi
callq 0xc8d0
jmp 0xad419
movq 0x1388(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xad42f
jmp 0xad4b4
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x1e8(%rsp)
leaq 0x23d3c(%rip), %rsi     # 0xd118a
callq 0xc2e0
jmp 0xad455
movq 0x1e8(%rsp), %rdi
movq 0x58b8c(%rip), %rsi     # 0x105ff0
movq 0x58b05(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq 0x1e8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xb0109
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xb0109
movq 0x1388(%rsp), %rsi
leaq 0xd98(%rsp), %rdi
xorl %edx, %edx
callq 0x2f200
jmp 0xad4cd
jmp 0xad4cf
leaq 0xd98(%rsp), %rdi
callq 0x3d390
movb %al, 0x1e7(%rsp)
jmp 0xad4e5
movb 0x1e7(%rsp), %al
testb $0x1, %al
jne 0xad4f5
jmp 0xb00e7
leaq 0x1000(%rsp), %rdi
callq 0x73800
jmp 0xad504
cmpl $0x6, 0x1384(%rsp)
je 0xad518
cmpl $0x0, 0x1384(%rsp)
jne 0xad560
leaq 0x1000(%rsp), %rdi
leaq 0x23c77(%rip), %rsi     # 0xd119e
callq 0x2e1b0
movb %al, 0x1e6(%rsp)
jmp 0xad535
movb 0x1e6(%rsp), %al
testb $0x1, %al
jne 0xad542
jmp 0xad560
jmp 0xb00e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xb00fc
leaq 0xd98(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
callq 0xcc10
testb $0x1, %al
jne 0xad5a3
leaq 0x1000(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xce50
movq %rax, 0x1d8(%rsp)
jmp 0xad593
movq 0x1d8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0xad5a8
jmp 0xad4cf
leaq 0x1000(%rsp), %rsi
leaq 0xd58(%rsp), %rdi
movl $0x9, %edx
callq 0x42f40
jmp 0xad5c4
leaq 0xd78(%rsp), %rdi
leaq 0xd58(%rsp), %rsi
callq 0xb0150
jmp 0xad5db
leaq 0xd58(%rsp), %rdi
callq 0xce98
leaq 0x1000(%rsp), %rsi
leaq 0xd18(%rsp), %rdi
movl $0x9, %edx
callq 0x42f40
jmp 0xad604
leaq 0xd38(%rsp), %rdi
leaq 0xd18(%rsp), %rsi
callq 0xb0150
jmp 0xad61b
leaq 0xd18(%rsp), %rdi
callq 0xce98
leaq 0x1000(%rsp), %rsi
leaq 0xcd8(%rsp), %rdi
movl $0x9, %edx
callq 0x42f40
jmp 0xad644
leaq 0xcf8(%rsp), %rdi
leaq 0xcd8(%rsp), %rsi
callq 0xb0150
jmp 0xad65b
leaq 0xcd8(%rsp), %rdi
callq 0xce98
leaq 0x1000(%rsp), %rsi
leaq 0xc98(%rsp), %rdi
movl $0x9, %edx
callq 0x42f40
jmp 0xad684
leaq 0xcb8(%rsp), %rdi
leaq 0xc98(%rsp), %rsi
callq 0xb0150
jmp 0xad69b
leaq 0xc98(%rsp), %rdi
callq 0xce98
leaq 0x1000(%rsp), %rsi
leaq 0xc58(%rsp), %rdi
movl $0x9, %edx
callq 0x42f40
jmp 0xad6c4
leaq 0xc78(%rsp), %rdi
leaq 0xc58(%rsp), %rsi
callq 0xb0150
jmp 0xad6db
leaq 0xc58(%rsp), %rdi
callq 0xce98
leaq 0x1000(%rsp), %rsi
leaq 0xc18(%rsp), %rdi
movl $0x9, %edx
callq 0x42f40
jmp 0xad704
leaq 0xc38(%rsp), %rdi
leaq 0xc18(%rsp), %rsi
callq 0xb0150
jmp 0xad71b
leaq 0xc18(%rsp), %rdi
callq 0xce98
leaq 0x1000(%rsp), %rsi
leaq 0xbd8(%rsp), %rdi
movl $0x9, %edx
callq 0x42f40
jmp 0xad744
leaq 0xbf8(%rsp), %rdi
leaq 0xbd8(%rsp), %rsi
callq 0xb0150
jmp 0xad75b
leaq 0xbd8(%rsp), %rdi
callq 0xce98
leaq 0x1000(%rsp), %rsi
leaq 0xb98(%rsp), %rdi
movl $0x9, %edx
callq 0x42f40
jmp 0xad784
leaq 0xbb8(%rsp), %rdi
leaq 0xb98(%rsp), %rsi
callq 0xb0150
jmp 0xad79b
leaq 0xb98(%rsp), %rdi
callq 0xce98
leaq 0x1000(%rsp), %rsi
leaq 0xb78(%rsp), %rdi
callq 0xc320
jmp 0xad7bf
leaq 0xb78(%rsp), %rdi
callq 0x73800
jmp 0xad7ce
leaq 0xb78(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xad7e4
jmp 0xada7a
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x1d0(%rsp)
leaq 0x239a3(%rip), %rsi     # 0xd11a6
callq 0xc2e0
jmp 0xad80a
movq 0x1d0(%rsp), %rdi
movq 0x587d7(%rip), %rsi     # 0x105ff0
movq 0x58750(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xd58(%rsp), %rdi
callq 0xce98
jmp 0xafe9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xd18(%rsp), %rdi
callq 0xce98
jmp 0xafe8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xcd8(%rsp), %rdi
callq 0xce98
jmp 0xafe81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xc98(%rsp), %rdi
callq 0xce98
jmp 0xafe74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xc58(%rsp), %rdi
callq 0xce98
jmp 0xafe67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xc18(%rsp), %rdi
callq 0xce98
jmp 0xafe5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xbd8(%rsp), %rdi
callq 0xce98
jmp 0xafe4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xb98(%rsp), %rdi
callq 0xce98
jmp 0xafe40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe26
movq 0x1d0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xafe26
leaq 0xd78(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xada8d
jmp 0xadaf9
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x1c8(%rsp)
leaq 0x2371d(%rip), %rsi     # 0xd11c9
callq 0xc2e0
jmp 0xadab3
movq 0x1c8(%rsp), %rdi
movq 0x5852e(%rip), %rsi     # 0x105ff0
movq 0x584a7(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq 0x1c8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xafe26
leaq 0xd78(%rsp), %rax
movq %rax, 0xb70(%rsp)
movq 0xb70(%rsp), %rdi
callq 0xc640
movq %rax, 0xb68(%rsp)
movq 0xb70(%rsp), %rdi
callq 0xc450
movq %rax, 0xb60(%rsp)
leaq 0xb68(%rsp), %rdi
leaq 0xb60(%rsp), %rsi
callq 0x73890
testb $0x1, %al
jne 0xadb51
jmp 0xadca8
leaq 0xb68(%rsp), %rdi
callq 0x738d0
movb (%rax), %al
movb %al, 0xb5f(%rsp)
movsbl 0xb5f(%rsp), %edi
callq 0x73820
movb %al, 0x1c7(%rsp)
jmp 0xadb7d
movb 0x1c7(%rsp), %al
testb $0x1, %al
jne 0xadc94
jmp 0xadb8e
movb $0x1, 0xb17(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq %rax, 0x1b8(%rsp)
movsbl 0xb5f(%rsp), %esi
leaq 0xb18(%rsp), %rdi
callq 0x2ded0
jmp 0xadbbf
leaq 0x2361e(%rip), %rsi     # 0xd11e4
leaq 0xb38(%rsp), %rdi
leaq 0xb18(%rsp), %rdx
callq 0x2a340
jmp 0xadbdd
movq 0x1b8(%rsp), %rdi
leaq 0xb38(%rsp), %rsi
callq 0xcbb0
jmp 0xadbf4
movq 0x1b8(%rsp), %rdi
movb $0x0, 0xb17(%rsp)
movq 0x583e5(%rip), %rsi     # 0x105ff0
movq 0x5835e(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xadc76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xadc69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0xb38(%rsp), %rdi
callq 0xce98
leaq 0xb18(%rsp), %rdi
callq 0xce98
testb $0x1, 0xb17(%rsp)
jne 0xadc82
jmp 0xadc8f
movq 0x1b8(%rsp), %rdi
callq 0xc580
jmp 0xafe26
jmp 0xadc96
leaq 0xb68(%rsp), %rdi
callq 0x73900
jmp 0xadb33
leaq 0x2356a(%rip), %rsi     # 0xd1219
leaq 0xcf8(%rsp), %rdi
callq 0x73380
movb %al, 0x1b7(%rsp)
jmp 0xadcc5
movb 0x1b7(%rsp), %al
testb $0x1, %al
jne 0xadcd2
jmp 0xadd36
leaq 0x235ed(%rip), %rsi     # 0xd12c6
leaq 0xcf8(%rsp), %rdi
callq 0x73380
movb %al, 0x1b6(%rsp)
jmp 0xadcef
movb 0x1b6(%rsp), %al
testb $0x1, %al
jne 0xadcfc
jmp 0xadd36
leaq 0x235bd(%rip), %rsi     # 0xd12c0
leaq 0xcf8(%rsp), %rdi
callq 0x73380
movb %al, 0x1b5(%rsp)
jmp 0xadd19
movb 0x1b5(%rsp), %al
testb $0x1, %al
jne 0xadd26
jmp 0xadd36
movl $0x2, 0xb10(%rsp)
jmp 0xafcd8
cmpl $0x4, 0x1384(%rsp)
jne 0xadd7a
leaq 0x234d2(%rip), %rsi     # 0xd1219
leaq 0xcf8(%rsp), %rdi
callq 0x73380
movb %al, 0x1b4(%rsp)
jmp 0xadd5d
movb 0x1b4(%rsp), %al
testb $0x1, %al
jne 0xadd6a
jmp 0xadd7a
movl $0x2, 0xb10(%rsp)
jmp 0xafcd8
movq $-0x1, 0xb08(%rsp)
leaq 0xcb8(%rsp), %rdi
leaq 0xb08(%rsp), %rsi
callq 0xb3650
movb %al, 0x1b3(%rsp)
jmp 0xadda4
movb 0x1b3(%rsp), %al
testb $0x1, %al
jne 0xade1d
jmp 0xaddb1
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x1a8(%rsp)
leaq 0x2344d(%rip), %rsi     # 0xd121d
callq 0xc2e0
jmp 0xaddd7
movq 0x1a8(%rsp), %rdi
movq 0x5820a(%rip), %rsi     # 0x105ff0
movq 0x58183(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq 0x1a8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xafe26
cmpq $0x0, 0xb08(%rsp)
jg 0xade94
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x1a0(%rsp)
leaq 0x233e8(%rip), %rsi     # 0xd122f
callq 0xc2e0
jmp 0xade4e
movq 0x1a0(%rsp), %rdi
movq 0x58193(%rip), %rsi     # 0x105ff0
movq 0x5810c(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq 0x1a0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xafe26
movq $-0x1, 0xb00(%rsp)
leaq 0xc78(%rsp), %rdi
leaq 0xb00(%rsp), %rsi
callq 0xb3650
movb %al, 0x19f(%rsp)
jmp 0xadebe
movb 0x19f(%rsp), %al
testb $0x1, %al
jne 0xadf37
jmp 0xadecb
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x190(%rsp)
leaq 0x2335a(%rip), %rsi     # 0xd1244
callq 0xc2e0
jmp 0xadef1
movq 0x190(%rsp), %rdi
movq 0x580f0(%rip), %rsi     # 0x105ff0
movq 0x58069(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq 0x190(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xafe26
cmpq $0x0, 0xb00(%rsp)
jg 0xadfae
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x188(%rsp)
leaq 0x232f4(%rip), %rsi     # 0xd1255
callq 0xc2e0
jmp 0xadf68
movq 0x188(%rsp), %rdi
movq 0x58079(%rip), %rsi     # 0x105ff0
movq 0x57ff2(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq 0x188(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xafe26
movq 0xb08(%rsp), %rax
cmpq 0xb00(%rsp), %rax
jle 0xae02c
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x180(%rsp)
leaq 0x2328a(%rip), %rsi     # 0xd1269
callq 0xc2e0
jmp 0xadfe6
movq 0x180(%rsp), %rdi
movq 0x57ffb(%rip), %rsi     # 0x105ff0
movq 0x57f74(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq 0x180(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xafe26
movq 0xb08(%rsp), %rax
decq %rax
movq %rax, 0xb08(%rsp)
leaq 0x1ee1b(%rip), %rsi     # 0xcce61
leaq 0xbf8(%rsp), %rdi
callq 0x73380
movb %al, 0x17f(%rsp)
jmp 0xae05c
movb 0x17f(%rsp), %al
testb $0x1, %al
jne 0xae06c
jmp 0xae102
leaq 0x1ee8d(%rip), %rsi     # 0xccf00
leaq 0xbf8(%rsp), %rdi
callq 0x73380
movb %al, 0x17e(%rsp)
jmp 0xae089
movb 0x17e(%rsp), %al
testb $0x1, %al
jne 0xae096
jmp 0xae102
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x170(%rsp)
leaq 0x231d6(%rip), %rsi     # 0xd128b
callq 0xc2e0
jmp 0xae0bc
movq 0x170(%rsp), %rdi
movq 0x57f25(%rip), %rsi     # 0x105ff0
movq 0x57e9e(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq 0x170(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
callq 0xc580
jmp 0xafe26
leaq 0xad7(%rsp), %rdi
movq %rdi, 0x168(%rsp)
callq 0xcd00
movq 0x168(%rsp), %rdx
movb $0x0, 0xaae(%rsp)
movb $0x0, 0xaad(%rsp)
leaq 0x23171(%rip), %rsi     # 0xd12a7
leaq 0xad8(%rsp), %rdi
callq 0x29fd0
jmp 0xae145
leaq 0xb78(%rsp), %rdi
leaq 0xad8(%rsp), %rsi
callq 0x2f5d0
movb %al, 0x167(%rsp)
jmp 0xae163
movb 0x167(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x166(%rsp)
jne 0xae223
jmp 0xae17e
leaq 0xaaf(%rsp), %rdi
movq %rdi, 0x158(%rsp)
callq 0xcd00
movq 0x158(%rsp), %rdx
movb $0x1, 0xaae(%rsp)
leaq 0x23109(%rip), %rsi     # 0xd12b3
leaq 0xab0(%rsp), %rdi
callq 0x29fd0
jmp 0xae1b9
movb $0x1, 0xaad(%rsp)
leaq 0xb78(%rsp), %rdi
leaq 0xab0(%rsp), %rsi
callq 0x2f5d0
movb %al, 0x157(%rsp)
jmp 0xae1df
movb 0x157(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x166(%rsp)
jne 0xae223
jmp 0xae1f6
leaq 0x230c3(%rip), %rsi     # 0xd12c0
leaq 0xcf8(%rsp), %rdi
callq 0x2e1b0
movb %al, 0x156(%rsp)
jmp 0xae213
movb 0x156(%rsp), %al
movb %al, 0x166(%rsp)
jmp 0xae223
movb 0x166(%rsp), %al
movb %al, 0x155(%rsp)
testb $0x1, 0xaad(%rsp)
jne 0xae23d
jmp 0xae24a
leaq 0xab0(%rsp), %rdi
callq 0xce98
testb $0x1, 0xaae(%rsp)
jne 0xae256
jmp 0xae263
leaq 0xaaf(%rsp), %rdi
callq 0xc7a0
leaq 0xad8(%rsp), %rdi
callq 0xce98
leaq 0xad7(%rsp), %rdi
callq 0xc7a0
movb 0x155(%rsp), %al
andb $0x1, %al
movb %al, 0xaff(%rsp)
leaq 0xa87(%rsp), %rdi
movq %rdi, 0x148(%rsp)
callq 0xcd00
movq 0x148(%rsp), %rdx
movb $0x0, 0xa5e(%rsp)
movb $0x0, 0xa5d(%rsp)
movb $0x0, 0xa36(%rsp)
movb $0x0, 0xa35(%rsp)
movb $0x0, 0xa0e(%rsp)
movb $0x0, 0xa0d(%rsp)
leaq 0x22fea(%rip), %rsi     # 0xd12cb
leaq 0xa88(%rsp), %rdi
callq 0x29fd0
jmp 0xae2f0
leaq 0xb78(%rsp), %rdi
leaq 0xa88(%rsp), %rsi
callq 0x2f5d0
movb %al, 0x147(%rsp)
jmp 0xae30e
movb 0x147(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x146(%rsp)
jne 0xae48e
jmp 0xae329
leaq 0xa5f(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0xcd00
movq 0x138(%rsp), %rdx
movb $0x1, 0xa5e(%rsp)
leaq 0x22f83(%rip), %rsi     # 0xd12d8
leaq 0xa60(%rsp), %rdi
callq 0x29fd0
jmp 0xae364
movb $0x1, 0xa5d(%rsp)
leaq 0xb78(%rsp), %rdi
leaq 0xa60(%rsp), %rsi
callq 0x2f5d0
movb %al, 0x137(%rsp)
jmp 0xae38a
movb 0x137(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x146(%rsp)
jne 0xae48e
jmp 0xae3a5
leaq 0xa37(%rsp), %rdi
movq %rdi, 0x128(%rsp)
callq 0xcd00
movq 0x128(%rsp), %rdx
movb $0x1, 0xa36(%rsp)
leaq 0x22f12(%rip), %rsi     # 0xd12e3
leaq 0xa38(%rsp), %rdi
callq 0x29fd0
jmp 0xae3e0
movb $0x1, 0xa35(%rsp)
leaq 0xb78(%rsp), %rdi
leaq 0xa38(%rsp), %rsi
callq 0x2f5d0
movb %al, 0x127(%rsp)
jmp 0xae406
movb 0x127(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x146(%rsp)
jne 0xae48e
jmp 0xae41d
leaq 0xa0f(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0xcd00
movq 0x118(%rsp), %rdx
movb $0x1, 0xa0e(%rsp)
leaq 0x22ea5(%rip), %rsi     # 0xd12ee
leaq 0xa10(%rsp), %rdi
callq 0x29fd0
jmp 0xae458
movb $0x1, 0xa0d(%rsp)
leaq 0xb78(%rsp), %rdi
leaq 0xa10(%rsp), %rsi
callq 0x2f5d0
movb %al, 0x117(%rsp)
jmp 0xae47e
movb 0x117(%rsp), %al
movb %al, 0x146(%rsp)
jmp 0xae48e
movb 0x146(%rsp), %al
movb %al, 0x116(%rsp)
testb $0x1, 0xa0d(%rsp)
jne 0xae4a8
jmp 0xae4b5
leaq 0xa10(%rsp), %rdi
callq 0xce98
testb $0x1, 0xa0e(%rsp)
jne 0xae4c1
jmp 0xae4ce
leaq 0xa0f(%rsp), %rdi
callq 0xc7a0
testb $0x1, 0xa35(%rsp)
jne 0xae4da
jmp 0xae4e7
leaq 0xa38(%rsp), %rdi
callq 0xce98
testb $0x1, 0xa36(%rsp)
jne 0xae4f3
jmp 0xae500
leaq 0xa37(%rsp), %rdi
callq 0xc7a0
testb $0x1, 0xa5d(%rsp)
jne 0xae50c
jmp 0xae519
leaq 0xa60(%rsp), %rdi
callq 0xce98
testb $0x1, 0xa5e(%rsp)
jne 0xae525
jmp 0xae532
leaq 0xa5f(%rsp), %rdi
callq 0xc7a0
leaq 0xa88(%rsp), %rdi
callq 0xce98
leaq 0xa87(%rsp), %rdi
callq 0xc7a0
movb 0x116(%rsp), %al
andb $0x1, %al
movb %al, 0xaac(%rsp)
leaq 0x9e7(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0xcd00
movq 0x108(%rsp), %rdx
leaq 0x1eb21(%rip), %rsi     # 0xcd0a1
leaq 0x9e8(%rsp), %rdi
callq 0x29fd0
jmp 0xae58f
leaq 0x9e7(%rsp), %rdi
callq 0xc7a0
movl 0x1384(%rsp), %eax
movq %rax, 0x100(%rsp)
subq $0x8, %rax
ja 0xae934
movq 0x100(%rsp), %rax
leaq 0x22a04(%rip), %rcx     # 0xd0fc8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae669
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae65c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae641
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
testb $0x1, 0xaad(%rsp)
jne 0xae632
jmp 0xae63f
leaq 0xab0(%rsp), %rdi
callq 0xce98
jmp 0xae641
testb $0x1, 0xaae(%rsp)
jne 0xae64d
jmp 0xae65a
leaq 0xaaf(%rsp), %rdi
callq 0xc7a0
jmp 0xae65c
leaq 0xad8(%rsp), %rdi
callq 0xce98
leaq 0xad7(%rsp), %rdi
callq 0xc7a0
jmp 0xafe26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae7e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae7da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae7bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae7a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae789
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae76e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xae753
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
testb $0x1, 0xa0d(%rsp)
jne 0xae744
jmp 0xae751
leaq 0xa10(%rsp), %rdi
callq 0xce98
jmp 0xae753
testb $0x1, 0xa0e(%rsp)
jne 0xae75f
jmp 0xae76c
leaq 0xa0f(%rsp), %rdi
callq 0xc7a0
jmp 0xae76e
testb $0x1, 0xa35(%rsp)
jne 0xae77a
jmp 0xae787
leaq 0xa38(%rsp), %rdi
callq 0xce98
jmp 0xae789
testb $0x1, 0xa36(%rsp)
jne 0xae795
jmp 0xae7a2
leaq 0xa37(%rsp), %rdi
callq 0xc7a0
jmp 0xae7a4
testb $0x1, 0xa5d(%rsp)
jne 0xae7b0
jmp 0xae7bd
leaq 0xa60(%rsp), %rdi
callq 0xce98
jmp 0xae7bf
testb $0x1, 0xa5e(%rsp)
jne 0xae7cb
jmp 0xae7d8
leaq 0xa5f(%rsp), %rdi
callq 0xc7a0
jmp 0xae7da
leaq 0xa88(%rsp), %rdi
callq 0xce98
leaq 0xa87(%rsp), %rdi
callq 0xc7a0
jmp 0xafe26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x9e7(%rsp), %rdi
callq 0xc7a0
jmp 0xafe26
leaq 0x22ad3(%rip), %rsi     # 0xd12f9
leaq 0x9e8(%rsp), %rdi
callq 0xca00
jmp 0xae835
jmp 0xae936
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafe19
movb $0x1, %al
testb $0x1, 0x1383(%rsp)
movb %al, 0xff(%rsp)
jne 0xae874
movb 0xaff(%rsp), %al
movb %al, 0xff(%rsp)
movb 0xff(%rsp), %cl
leaq 0x22a7a(%rip), %rax     # 0xd12fc
leaq 0x1e818(%rip), %rsi     # 0xcd0a1
testb $0x1, %cl
cmovneq %rax, %rsi
leaq 0x9e8(%rsp), %rdi
callq 0xca00
jmp 0xae89f
jmp 0xae936
leaq 0x22a4e(%rip), %rsi     # 0xd12f9
leaq 0x9e8(%rsp), %rdi
callq 0xca00
jmp 0xae8ba
jmp 0xae936
leaq 0x22a36(%rip), %rsi     # 0xd12f9
leaq 0x9e8(%rsp), %rdi
callq 0xca00
jmp 0xae8d2
jmp 0xae936
leaq 0x22a1e(%rip), %rsi     # 0xd12f9
leaq 0x9e8(%rsp), %rdi
callq 0xca00
jmp 0xae8ea
jmp 0xae936
leaq 0x22a06(%rip), %rsi     # 0xd12f9
leaq 0x9e8(%rsp), %rdi
callq 0xca00
jmp 0xae902
jmp 0xae936
leaq 0x229fb(%rip), %rsi     # 0xd1306
leaq 0x9e8(%rsp), %rdi
callq 0xca00
jmp 0xae91a
jmp 0xae936
leaq 0x229d6(%rip), %rsi     # 0xd12f9
leaq 0x9e8(%rsp), %rdi
callq 0xca00
jmp 0xae932
jmp 0xae936
jmp 0xae936
callq 0xc090
movl $0x0, (%rax)
leaq 0x9e8(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xae957
jmp 0xaebea
callq 0xc8c0
cmpl $0x0, %eax
jne 0xaebe0
leaq 0x93f(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0xcd00
movq 0xf0(%rsp), %rdx
leaq 0x22675(%rip), %rsi     # 0xd0ffe
leaq 0x940(%rsp), %rdi
callq 0x29fd0
jmp 0xae998
leaq 0x918(%rsp), %rdi
movl $0x11a, %esi            # imm = 0x11A
callq 0x2ded0
jmp 0xae9ac
leaq 0x960(%rsp), %rdi
leaq 0x940(%rsp), %rsi
leaq 0x918(%rsp), %rdx
callq 0x2dde0
jmp 0xae9cb
leaq 0x1d1cf(%rip), %rdx     # 0xcbba1
leaq 0x980(%rsp), %rdi
leaq 0x960(%rsp), %rsi
callq 0x2a2f0
jmp 0xae9e9
leaq 0x8d7(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0xcd00
movq 0xe8(%rsp), %rdx
leaq 0x226d0(%rip), %rsi     # 0xd10dd
leaq 0x8d8(%rsp), %rdi
callq 0x29fd0
jmp 0xaea1c
leaq 0x1eff3(%rip), %rdx     # 0xcda16
leaq 0x8f8(%rsp), %rdi
leaq 0x8d8(%rsp), %rsi
callq 0x2a2f0
jmp 0xaea3a
leaq 0x9a0(%rsp), %rdi
leaq 0x980(%rsp), %rsi
leaq 0x8f8(%rsp), %rdx
callq 0x2dde0
jmp 0xaea59
leaq 0x228ac(%rip), %rdx     # 0xd130c
leaq 0x9c0(%rsp), %rdi
leaq 0x9a0(%rsp), %rsi
callq 0x2a2f0
jmp 0xaea77
leaq 0x9c0(%rsp), %rdi
callq 0x3e9b0
jmp 0xaea86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaebce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaebc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaebb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaeba7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaeb8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaeb80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaeb73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaeb66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x9c0(%rsp), %rdi
callq 0xce98
leaq 0x9a0(%rsp), %rdi
callq 0xce98
leaq 0x8f8(%rsp), %rdi
callq 0xce98
leaq 0x8d8(%rsp), %rdi
callq 0xce98
leaq 0x8d7(%rsp), %rdi
callq 0xc7a0
leaq 0x980(%rsp), %rdi
callq 0xce98
leaq 0x960(%rsp), %rdi
callq 0xce98
leaq 0x918(%rsp), %rdi
callq 0xce98
leaq 0x940(%rsp), %rdi
callq 0xce98
leaq 0x93f(%rsp), %rdi
callq 0xc7a0
jmp 0xafe19
movl $0x1, %edi
callq 0xc8d0
leaq 0x22734(%rip), %rsi     # 0xd1325
leaq 0x9e8(%rsp), %rdi
callq 0xc6e0
jmp 0xaec00
leaq 0x8b0(%rsp), %rdi
callq 0xca10
leaq 0x890(%rsp), %rdi
callq 0xca10
leaq 0x870(%rsp), %rdi
callq 0xca10
leaq 0x850(%rsp), %rdi
callq 0xca10
leaq 0xb78(%rsp), %rdi
callq 0xcc10
xorb $-0x1, %al
testb $0x1, %al
jne 0xaec4c
jmp 0xaf0dd
leaq 0x830(%rsp), %rdi
leaq 0xb78(%rsp), %rsi
movl $0x3b, %edx
callq 0x42f40
jmp 0xaec68
leaq 0x830(%rsp), %rdi
callq 0x73800
jmp 0xaec77
leaq 0x830(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
callq 0x2f2f0
movb %al, 0xe7(%rsp)
jmp 0xaec95
movb 0xe7(%rsp), %al
testb $0x1, %al
jne 0xaeca2
jmp 0xaed19
leaq 0x8b0(%rsp), %rdi
leaq 0x830(%rsp), %rsi
callq 0xc080
jmp 0xaecb9
leaq 0x810(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
movl $0x3d, %edx
callq 0x42f40
jmp 0xaecd5
leaq 0x810(%rsp), %rdi
callq 0xce98
jmp 0xaf0b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf639
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf0cb
leaq 0x7ef(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0xcd00
movq 0xd8(%rsp), %rdx
leaq 0x225e4(%rip), %rsi     # 0xd1321
leaq 0x7f0(%rsp), %rdi
callq 0x29fd0
jmp 0xaed4c
leaq 0x830(%rsp), %rdi
leaq 0x7f0(%rsp), %rsi
callq 0x2f2f0
movb %al, 0xd7(%rsp)
jmp 0xaed6a
leaq 0x7f0(%rsp), %rdi
callq 0xce98
leaq 0x7ef(%rsp), %rdi
callq 0xc7a0
movb 0xd7(%rsp), %al
testb $0x1, %al
jne 0xaed94
jmp 0xaee22
leaq 0x890(%rsp), %rdi
leaq 0x830(%rsp), %rsi
callq 0xc080
jmp 0xaedab
leaq 0x7c8(%rsp), %rdi
leaq 0x890(%rsp), %rsi
movl $0x3d, %edx
callq 0x42f40
jmp 0xaedc7
leaq 0x7c8(%rsp), %rdi
callq 0xce98
jmp 0xaf0b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaee10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x7f0(%rsp), %rdi
callq 0xce98
leaq 0x7ef(%rsp), %rdi
callq 0xc7a0
jmp 0xaf0cb
leaq 0x7a7(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0xcd00
movq 0xc8(%rsp), %rdx
leaq 0x224e1(%rip), %rsi     # 0xd1327
leaq 0x7a8(%rsp), %rdi
callq 0x29fd0
jmp 0xaee55
leaq 0x830(%rsp), %rdi
leaq 0x7a8(%rsp), %rsi
callq 0x2f2f0
movb %al, 0xc7(%rsp)
jmp 0xaee73
leaq 0x7a8(%rsp), %rdi
callq 0xce98
leaq 0x7a7(%rsp), %rdi
callq 0xc7a0
movb 0xc7(%rsp), %al
testb $0x1, %al
jne 0xaee9d
jmp 0xaef2b
leaq 0x870(%rsp), %rdi
leaq 0x830(%rsp), %rsi
callq 0xc080
jmp 0xaeeb4
leaq 0x780(%rsp), %rdi
leaq 0x870(%rsp), %rsi
movl $0x3d, %edx
callq 0x42f40
jmp 0xaeed0
leaq 0x780(%rsp), %rdi
callq 0xce98
jmp 0xaf0b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaef19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x7a8(%rsp), %rdi
callq 0xce98
leaq 0x7a7(%rsp), %rdi
callq 0xc7a0
jmp 0xaf0cb
movl 0x1384(%rsp), %ecx
movb $0x0, 0x75e(%rsp)
movb $0x0, 0x75d(%rsp)
xorl %eax, %eax
cmpl $0x3, %ecx
movb %al, 0xc6(%rsp)
jne 0xaefc1
leaq 0x75f(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0xcd00
movq 0xb8(%rsp), %rdx
movb $0x1, 0x75e(%rsp)
leaq 0x1d7e3(%rip), %rsi     # 0xcc75f
leaq 0x760(%rsp), %rdi
callq 0x29fd0
jmp 0xaef8b
movb $0x1, 0x75d(%rsp)
leaq 0x830(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x2f2f0
movb %al, 0xb7(%rsp)
jmp 0xaefb1
movb 0xb7(%rsp), %al
movb %al, 0xc6(%rsp)
jmp 0xaefc1
movb 0xc6(%rsp), %al
movb %al, 0xb6(%rsp)
testb $0x1, 0x75d(%rsp)
jne 0xaefdb
jmp 0xaefe8
leaq 0x760(%rsp), %rdi
callq 0xce98
testb $0x1, 0x75e(%rsp)
jne 0xaeff4
jmp 0xaf001
leaq 0x75f(%rsp), %rdi
callq 0xc7a0
movb 0xb6(%rsp), %al
testb $0x1, %al
jne 0xaf011
jmp 0xaf0b3
leaq 0x850(%rsp), %rdi
leaq 0x830(%rsp), %rsi
callq 0xc080
jmp 0xaf028
leaq 0x738(%rsp), %rdi
leaq 0x850(%rsp), %rsi
movl $0x3d, %edx
callq 0x42f40
jmp 0xaf044
leaq 0x738(%rsp), %rdi
callq 0xce98
jmp 0xaf0b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf098
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
testb $0x1, 0x75d(%rsp)
jne 0xaf089
jmp 0xaf096
leaq 0x760(%rsp), %rdi
callq 0xce98
jmp 0xaf098
testb $0x1, 0x75e(%rsp)
jne 0xaf0a4
jmp 0xaf0b1
leaq 0x75f(%rsp), %rdi
callq 0xc7a0
jmp 0xaf0cb
jmp 0xaf0b5
jmp 0xaf0b7
jmp 0xaf0b9
leaq 0x830(%rsp), %rdi
callq 0xce98
jmp 0xaec34
leaq 0x830(%rsp), %rdi
callq 0xce98
jmp 0xaf639
leaq 0x717(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0xcd00
movq 0xa8(%rsp), %rdx
leaq 0x1e9aa(%rip), %rsi     # 0xcdaab
leaq 0x718(%rsp), %rdi
callq 0x29fd0
jmp 0xaf110
leaq 0x8b0(%rsp), %rdi
leaq 0x718(%rsp), %rsi
callq 0x40570
jmp 0xaf127
leaq 0x718(%rsp), %rdi
callq 0xce98
leaq 0x717(%rsp), %rdi
callq 0xc7a0
leaq 0x6ef(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0xcd00
movq 0xa0(%rsp), %rdx
leaq 0x1e946(%rip), %rsi     # 0xcdaab
leaq 0x6f0(%rsp), %rdi
callq 0x29fd0
jmp 0xaf174
leaq 0x8b0(%rsp), %rdi
leaq 0x6f0(%rsp), %rsi
callq 0x405d0
jmp 0xaf18b
leaq 0x6f0(%rsp), %rdi
callq 0xce98
leaq 0x6ef(%rsp), %rdi
callq 0xc7a0
leaq 0x8b0(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xaf1bb
jmp 0xaf25d
movl $0x2, 0xb10(%rsp)
jmp 0xaf4d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf202
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x718(%rsp), %rdi
callq 0xce98
leaq 0x717(%rsp), %rdi
callq 0xc7a0
jmp 0xaf639
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf24b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x6f0(%rsp), %rdi
callq 0xce98
leaq 0x6ef(%rsp), %rdi
callq 0xc7a0
jmp 0xaf639
movl 0x1384(%rsp), %eax
movl %eax, 0x9c(%rsp)
subl $0x1, %eax
je 0xaf287
jmp 0xaf272
movl 0x9c(%rsp), %eax
subl $0x3, %eax
je 0xaf378
jmp 0xaf4ca
leaq 0x6c7(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0xcd00
movq 0x90(%rsp), %rdx
leaq 0x1e88d(%rip), %rsi     # 0xcdb38
leaq 0x6c8(%rsp), %rdi
callq 0x29fd0
jmp 0xaf2ba
leaq 0x8b0(%rsp), %rdi
leaq 0x6c8(%rsp), %rsi
callq 0x2f5d0
movb %al, 0x8f(%rsp)
jmp 0xaf2d8
leaq 0x6c8(%rsp), %rdi
callq 0xce98
leaq 0x6c7(%rsp), %rdi
callq 0xc7a0
movb 0x8f(%rsp), %al
testb $0x1, %al
jne 0xaf2ff
jmp 0xaf373
leaq 0x6a0(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
movl $0x3a, %edx
callq 0x42f40
jmp 0xaf31b
leaq 0x6a0(%rsp), %rdi
callq 0xce98
jmp 0xaf373
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf361
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x6c8(%rsp), %rdi
callq 0xce98
leaq 0x6c7(%rsp), %rdi
callq 0xc7a0
jmp 0xaf639
jmp 0xaf4cc
leaq 0x850(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xaf3f3
leaq 0x1d185(%rip), %rsi     # 0xcc515
leaq 0x680(%rsp), %rdi
leaq 0x850(%rsp), %rdx
callq 0x2a1c0
jmp 0xaf3a7
leaq 0x8b0(%rsp), %rdi
leaq 0x680(%rsp), %rsi
callq 0xc960
jmp 0xaf3be
leaq 0x680(%rsp), %rdi
callq 0xce98
jmp 0xaf3f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x680(%rsp), %rdi
callq 0xce98
jmp 0xaf639
leaq 0x65f(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0xcd00
movq 0x80(%rsp), %rdx
leaq 0x21f19(%rip), %rsi     # 0xd1330
leaq 0x660(%rsp), %rdi
callq 0x29fd0
jmp 0xaf426
leaq 0xd78(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0x2f2f0
movb %al, 0x7f(%rsp)
jmp 0xaf441
leaq 0x660(%rsp), %rdi
callq 0xce98
leaq 0x65f(%rsp), %rdi
callq 0xc7a0
movb 0x7f(%rsp), %al
testb $0x1, %al
jne 0xaf465
jmp 0xaf4c8
xorl %eax, %eax
movl %eax, %esi
leaq 0xd78(%rsp), %rdi
movl $0x5, %edx
callq 0xc150
jmp 0xaf47d
jmp 0xaf4c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf4b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x660(%rsp), %rdi
callq 0xce98
leaq 0x65f(%rsp), %rdi
callq 0xc7a0
jmp 0xaf639
jmp 0xaf4cc
jmp 0xaf4cc
movl $0x0, 0xb10(%rsp)
leaq 0x850(%rsp), %rdi
callq 0xce98
movl 0xb10(%rsp), %eax
testl %eax, %eax
jne 0xafca4
jmp 0xaf4f5
callq 0xc090
movl $0x0, (%rax)
leaq 0x8b0(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xaf516
jmp 0xaf7af
callq 0xc8c0
cmpl $0x0, %eax
jne 0xaf7a5
leaq 0x5b7(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0xcd00
movq 0x70(%rsp), %rdx
leaq 0x21abc(%rip), %rsi     # 0xd0ffe
leaq 0x5b8(%rsp), %rdi
callq 0x29fd0
jmp 0xaf551
leaq 0x590(%rsp), %rdi
movl $0x14b, %esi            # imm = 0x14B
callq 0x2ded0
jmp 0xaf565
leaq 0x5d8(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
leaq 0x590(%rsp), %rdx
callq 0x2dde0
jmp 0xaf584
leaq 0x1c616(%rip), %rdx     # 0xcbba1
leaq 0x5f8(%rsp), %rdi
leaq 0x5d8(%rsp), %rsi
callq 0x2a2f0
jmp 0xaf5a2
leaq 0x54f(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0xcd00
movq 0x68(%rsp), %rdx
leaq 0x21b1d(%rip), %rsi     # 0xd10dd
leaq 0x550(%rsp), %rdi
callq 0x29fd0
jmp 0xaf5cf
leaq 0x1e440(%rip), %rdx     # 0xcda16
leaq 0x570(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x2a2f0
jmp 0xaf5ed
leaq 0x618(%rsp), %rdi
leaq 0x5f8(%rsp), %rsi
leaq 0x570(%rsp), %rdx
callq 0x2dde0
jmp 0xaf60c
leaq 0x21d23(%rip), %rdx     # 0xd1336
leaq 0x638(%rsp), %rdi
leaq 0x618(%rsp), %rsi
callq 0x2a2f0
jmp 0xaf62a
leaq 0x638(%rsp), %rdi
callq 0x3e9b0
jmp 0xaf639
leaq 0x850(%rsp), %rdi
callq 0xce98
jmp 0xafdf2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf793
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf786
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf779
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf76c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf752
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf745
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf738
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xaf72b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x638(%rsp), %rdi
callq 0xce98
leaq 0x618(%rsp), %rdi
callq 0xce98
leaq 0x570(%rsp), %rdi
callq 0xce98
leaq 0x550(%rsp), %rdi
callq 0xce98
leaq 0x54f(%rsp), %rdi
callq 0xc7a0
leaq 0x5f8(%rsp), %rdi
callq 0xce98
leaq 0x5d8(%rsp), %rdi
callq 0xce98
leaq 0x590(%rsp), %rdi
callq 0xce98
leaq 0x5b8(%rsp), %rdi
callq 0xce98
leaq 0x5b7(%rsp), %rdi
callq 0xc7a0
jmp 0xafdf2
movl $0x1, %edi
callq 0xc8d0
leaq 0x528(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0xb0150
jmp 0xaf7c6
leaq 0x508(%rsp), %rdi
leaq 0x890(%rsp), %rsi
callq 0xb0150
jmp 0xaf7dd
leaq 0x4e8(%rsp), %rdi
leaq 0x870(%rsp), %rsi
callq 0xb0150
jmp 0xaf7f4
cmpl $0x4, 0x1384(%rsp)
jne 0xaf893
leaq 0x528(%rsp), %rdi
xorl %esi, %esi
callq 0xb01d0
jmp 0xaf813
movzbl 0x1382(%rsp), %esi
andl $0x1, %esi
leaq 0xd78(%rsp), %rdi
callq 0xb01d0
jmp 0xaf82d
jmp 0xaf893
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafdf2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafde5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafdd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafdcb
callq 0xc090
movl $0x0, (%rax)
leaq 0x528(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xaf8b4
jmp 0xafb3b
callq 0xc8c0
cmpl $0x0, %eax
jne 0xafb31
leaq 0x447(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xcd00
movq 0x60(%rsp), %rdx
leaq 0x2171e(%rip), %rsi     # 0xd0ffe
leaq 0x448(%rsp), %rdi
callq 0x29fd0
jmp 0xaf8ef
leaq 0x420(%rsp), %rdi
movl $0x156, %esi            # imm = 0x156
callq 0x2ded0
jmp 0xaf903
leaq 0x468(%rsp), %rdi
leaq 0x448(%rsp), %rsi
leaq 0x420(%rsp), %rdx
callq 0x2dde0
jmp 0xaf922
leaq 0x1c278(%rip), %rdx     # 0xcbba1
leaq 0x488(%rsp), %rdi
leaq 0x468(%rsp), %rsi
callq 0x2a2f0
jmp 0xaf940
leaq 0x3df(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0xcd00
movq 0x58(%rsp), %rdx
leaq 0x2177f(%rip), %rsi     # 0xd10dd
leaq 0x3e0(%rsp), %rdi
callq 0x29fd0
jmp 0xaf96d
leaq 0x1e0a2(%rip), %rdx     # 0xcda16
leaq 0x400(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0x2a2f0
jmp 0xaf98b
leaq 0x4a8(%rsp), %rdi
leaq 0x488(%rsp), %rsi
leaq 0x400(%rsp), %rdx
callq 0x2dde0
jmp 0xaf9aa
leaq 0x21997(%rip), %rdx     # 0xd1348
leaq 0x4c8(%rsp), %rdi
leaq 0x4a8(%rsp), %rsi
callq 0x2a2f0
jmp 0xaf9c8
leaq 0x4c8(%rsp), %rdi
callq 0x3e9b0
jmp 0xaf9d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafb1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafb12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafb05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafaf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafade
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafad1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafac4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafab7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x4c8(%rsp), %rdi
callq 0xce98
leaq 0x4a8(%rsp), %rdi
callq 0xce98
leaq 0x400(%rsp), %rdi
callq 0xce98
leaq 0x3e0(%rsp), %rdi
callq 0xce98
leaq 0x3df(%rsp), %rdi
callq 0xc7a0
leaq 0x488(%rsp), %rdi
callq 0xce98
leaq 0x468(%rsp), %rdi
callq 0xce98
leaq 0x420(%rsp), %rdi
callq 0xce98
leaq 0x448(%rsp), %rdi
callq 0xce98
leaq 0x447(%rsp), %rdi
callq 0xc7a0
jmp 0xafdcb
movl $0x1, %edi
callq 0xc8d0
movl 0xff8(%rsp), %eax
movq %rax, 0x38(%rsp)
movq 0xb08(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0xb00(%rsp), %rax
movq %rax, 0x48(%rsp)
leaq 0x1d2f9(%rip), %rsi     # 0xcce61
leaq 0xbf8(%rsp), %rdi
callq 0x2e1b0
movb %al, 0x57(%rsp)
jmp 0xafb7b
movb 0xaac(%rsp), %al
movb %al, 0x37(%rsp)
leaq 0x328(%rsp), %rdi
leaq 0x508(%rsp), %rsi
callq 0xc320
jmp 0xafb9d
leaq 0x308(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
callq 0xc320
jmp 0xafbb4
movq 0x48(%rsp), %r8
movq 0x40(%rsp), %rcx
movq 0x38(%rsp), %rsi
movb 0x57(%rsp), %al
movb 0x37(%rsp), %dil
movq %rsp, %rdx
leaq 0x308(%rsp), %r9
movq %r9, 0x18(%rdx)
leaq 0x328(%rsp), %r9
movq %r9, 0x10(%rdx)
movzbl %dil, %edi
andl $0x1, %edi
movl %edi, (%rdx)
movq $0x0, 0x8(%rdx)
movzbl %al, %r9d
andl $0x1, %r9d
leaq 0x348(%rsp), %rdi
leaq 0xd78(%rsp), %rdx
callq 0xabcd0
jmp 0xafc17
leaq 0x308(%rsp), %rdi
callq 0xce98
leaq 0x328(%rsp), %rdi
callq 0xce98
movq 0x228(%rsp), %rdi
addq $0x8, %rdi
leaq 0x528(%rsp), %rsi
callq 0xb36b0
movq %rax, 0x28(%rsp)
jmp 0xafc51
movq 0x28(%rsp), %rdi
leaq 0x348(%rsp), %rsi
callq 0xb37a0
jmp 0xafc65
leaq 0x348(%rsp), %rdi
callq 0xb37e0
leaq 0x4e8(%rsp), %rdi
callq 0xce98
leaq 0x508(%rsp), %rdi
callq 0xce98
leaq 0x528(%rsp), %rdi
callq 0xce98
movl $0x0, 0xb10(%rsp)
leaq 0x870(%rsp), %rdi
callq 0xce98
leaq 0x890(%rsp), %rdi
callq 0xce98
leaq 0x8b0(%rsp), %rdi
callq 0xce98
leaq 0x9e8(%rsp), %rdi
callq 0xce98
leaq 0xb78(%rsp), %rdi
callq 0xce98
leaq 0xbb8(%rsp), %rdi
callq 0xce98
leaq 0xbf8(%rsp), %rdi
callq 0xce98
leaq 0xc38(%rsp), %rdi
callq 0xce98
leaq 0xc78(%rsp), %rdi
callq 0xce98
leaq 0xcb8(%rsp), %rdi
callq 0xce98
leaq 0xcf8(%rsp), %rdi
callq 0xce98
leaq 0xd38(%rsp), %rdi
callq 0xce98
leaq 0xd78(%rsp), %rdi
callq 0xce98
movl 0xb10(%rsp), %eax
testl %eax, %eax
je 0xafd5f
jmp 0xafd5a
jmp 0xad4cf
jmp 0xb00e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xafd9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x308(%rsp), %rdi
callq 0xce98
leaq 0x328(%rsp), %rdi
callq 0xce98
jmp 0xafdcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x348(%rsp), %rdi
callq 0xb37e0
leaq 0x4e8(%rsp), %rdi
callq 0xce98
leaq 0x508(%rsp), %rdi
callq 0xce98
leaq 0x528(%rsp), %rdi
callq 0xce98
leaq 0x870(%rsp), %rdi
callq 0xce98
leaq 0x890(%rsp), %rdi
callq 0xce98
leaq 0x8b0(%rsp), %rdi
callq 0xce98
leaq 0x9e8(%rsp), %rdi
callq 0xce98
leaq 0xb78(%rsp), %rdi
callq 0xce98
leaq 0xbb8(%rsp), %rdi
callq 0xce98
leaq 0xbf8(%rsp), %rdi
callq 0xce98
leaq 0xc38(%rsp), %rdi
callq 0xce98
leaq 0xc78(%rsp), %rdi
callq 0xce98
leaq 0xcb8(%rsp), %rdi
callq 0xce98
leaq 0xcf8(%rsp), %rdi
callq 0xce98
leaq 0xd38(%rsp), %rdi
callq 0xce98
leaq 0xd78(%rsp), %rdi
callq 0xce98
movl 0x12cc(%rsp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xb00fc
movq 0x12d0(%rsp), %rdi
callq 0xc2f0
movq %rax, 0x300(%rsp)
movb $0x1, 0x23f(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq %rax, 0x20(%rsp)
movq 0x1388(%rsp), %rdx
leaq 0x2146f(%rip), %rsi     # 0xd1359
leaq 0x260(%rsp), %rdi
callq 0x2a1c0
jmp 0xafef9
leaq 0x1b306(%rip), %rdx     # 0xcb206
leaq 0x280(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x2a2f0
jmp 0xaff17
leaq 0x240(%rsp), %rdi
leaq 0xd98(%rsp), %rsi
movl $0x1, %edx
callq 0xb3820
jmp 0xaff33
leaq 0x2a0(%rsp), %rdi
leaq 0x280(%rsp), %rsi
leaq 0x240(%rsp), %rdx
callq 0x2dde0
jmp 0xaff52
leaq 0x1da8f(%rip), %rdx     # 0xcd9e8
leaq 0x2c0(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
callq 0x2a2f0
jmp 0xaff70
movq 0x300(%rsp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rdx
leaq 0x2e0(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x2a2f0
jmp 0xaff9b
movq 0x20(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0xcbb0
jmp 0xaffaf
movq 0x20(%rsp), %rdi
movb $0x0, 0x23f(%rsp)
movq 0x5602d(%rip), %rsi     # 0x105ff0
movq 0x55fa6(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb0145
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xb00c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xb00b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xb00a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xb009c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xb008f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
jmp 0xb0082
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x12d0(%rsp)
movl %eax, 0x12cc(%rsp)
leaq 0x2e0(%rsp), %rdi
callq 0xce98
leaq 0x2c0(%rsp), %rdi
callq 0xce98
leaq 0x2a0(%rsp), %rdi
callq 0xce98
leaq 0x240(%rsp), %rdi
callq 0xce98
leaq 0x280(%rsp), %rdi
callq 0xce98
leaq 0x260(%rsp), %rdi
callq 0xce98
testb $0x1, 0x23f(%rsp)
jne 0xb00cf
jmp 0xb00d9
movq 0x20(%rsp), %rdi
callq 0xc580
callq 0xcbe0
jmp 0xb00e0
jmp 0xb00fc
jmp 0xad4cf
leaq 0xd98(%rsp), %rdi
callq 0x2f490
addq $0x1398, %rsp           # imm = 0x1398
retq
leaq 0xd98(%rsp), %rdi
callq 0x2f490
movq 0x230(%rsp), %rdi
callq 0x2a910
movq 0x220(%rsp), %rdi
callq 0xb38c0
movq 0x228(%rsp), %rdi
callq 0x2ab40
movq 0x12d0(%rsp), %rdi
callq 0xccf0
movq %rax, %rdi
callq 0x2ad70
nopw %cs:(%rax,%rax)