// File: /workspace/github_cpp_makefile_star2_O2/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x748, %rsp            # imm = 0x748
movl %r8d, 0x24(%rsp)
leaq 0x377c5(%rip), %rax     # 0x83b50
movq %rax, (%rdi)
leaq 0x10(%rdi), %rax
andl $0x0, 0x10(%rdi)
andq $0x0, 0x18(%rdi)
movq %rax, 0x20(%rdi)
movq %rax, 0x28(%rdi)
andq $0x0, 0x30(%rdi)
movl %edx, %ebp
andl $0x0, 0x40(%rdi)
movq %rsi, %rbx
andq $0x0, 0x48(%rdi)
leaq 0x8(%rdi), %rax
movq %rax, 0x1b8(%rsp)
leaq 0x40(%rdi), %rax
movq %rax, 0x50(%rdi)
movq %rax, 0x58(%rdi)
movq %rdi, 0x2d8(%rsp)
andq $0x0, 0x60(%rdi)
movl %ecx, 0xf4(%rsp)
testl %ecx, %ecx
je 0x4c4ef
callq 0xb060
andl $0x0, (%rax)
cmpl $0x5, %ebp
ja 0x4c403
pushq $0x26
popq %rax
btl %ebp, %eax
jb 0x4c4f8
callq 0xb6c0
testl %eax, %eax
jne 0x4d699
leaq 0x12acb(%rip), %rsi     # 0x5eee2
leaq 0x68(%rsp), %rdi
leaq 0x2b0(%rsp), %rdx
callq 0x1b7b6
leaq 0xd0(%rsp), %rdi
movl $0xae, %esi
callq 0x1caa3
leaq 0x118(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x1ca3c
leaq 0xd787(%rip), %rdx      # 0x59be3
leaq 0x88(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x1b92d
leaq 0x12b49(%rip), %rsi     # 0x5efc1
leaq 0x1e0(%rsp), %rdi
leaq 0x340(%rsp), %rdx
callq 0x1b7b6
leaq 0xf4aa(%rip), %rdx      # 0x5b93e
leaq 0xb0(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1b92d
leaq 0x200(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
callq 0x1ca3c
leaq 0x12b30(%rip), %rdx     # 0x5effd
leaq 0x420(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x1b92d
leaq 0x420(%rsp), %rdi
callq 0x224fc
cmpl $0x2, %ebp
je 0x4d4af
cmpb $0x0, 0x24(%rsp)
je 0x4c510
callq 0xb060
andl $0x0, (%rax)
cmpl $0x4, %ebp
jne 0x4d5a3
cmpq $0x0, 0x8(%rbx)
je 0x4d47a
movl %ebp, 0x10(%rsp)
leaq 0x420(%rsp), %rdi
movq %rbx, 0x2d0(%rsp)
movq %rbx, %rsi
xorl %edx, %edx
callq 0x1d20a
leaq 0x200(%rsp), %rbp
leaq 0x88(%rsp), %r15
leaq 0x158(%rsp), %r14
leaq 0x420(%rsp), %rdi
callq 0x219d4
testb %al, %al
je 0x4d006
leaq 0x688(%rsp), %rdi
callq 0x3c32f
cmpl $0x6, 0x10(%rsp)
je 0x4c581
cmpl $0x0, 0x10(%rsp)
jne 0x4c59d
leaq 0x688(%rsp), %rdi
leaq 0x12af2(%rip), %rsi     # 0x5f082
callq 0x1cba2
testb %al, %al
jne 0x4d006
cmpq $0x0, 0x690(%rsp)
je 0x4c551
movq 0x688(%rsp), %rax
cmpb $0x23, (%rax)
je 0x4c551
movq %rbp, %rdi
leaq 0x688(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x248b1
movq %r15, %rdi
movq %rbp, %rsi
callq 0x4df84
movq %rbp, %rdi
callq 0xbb68
movq %rbp, %rdi
leaq 0x688(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x248b1
leaq 0x118(%rsp), %rdi
movq %rbp, %rsi
callq 0x4df84
movq %rbp, %rdi
callq 0xbb68
movq %rbp, %rdi
leaq 0x688(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x248b1
leaq 0x68(%rsp), %rdi
movq %rbp, %rsi
callq 0x4df84
movq %rbp, %rdi
callq 0xbb68
movq %rbp, %rdi
leaq 0x688(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x248b1
leaq 0xd0(%rsp), %rdi
movq %rbp, %rsi
callq 0x4df84
movq %rbp, %rdi
callq 0xbb68
movq %rbp, %rdi
leaq 0x688(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x248b1
leaq 0xb0(%rsp), %rdi
movq %rbp, %rsi
callq 0x4df84
movq %rbp, %rdi
callq 0xbb68
movq %rbp, %rdi
leaq 0x688(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x248b1
leaq 0x1e0(%rsp), %rdi
movq %rbp, %rsi
callq 0x4df84
movq %rbp, %rdi
callq 0xbb68
movq %rbp, %rdi
leaq 0x688(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x248b1
leaq 0x2b0(%rsp), %rdi
movq %rbp, %rsi
callq 0x4df84
movq %rbp, %rdi
callq 0xbb68
movq %rbp, %rdi
leaq 0x688(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x248b1
leaq 0x340(%rsp), %rdi
movq %rbp, %rsi
callq 0x4df84
movq %rbp, %rdi
callq 0xbb68
leaq 0x1c0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x688(%rsp), %rsi
callq 0xb7b0
movq %rbx, %rdi
callq 0x3c32f
cmpq $0x0, 0x1c8(%rsp)
je 0x4d0a7
movq 0x90(%rsp), %rax
testq %rax, %rax
je 0x4d08b
movq 0x88(%rsp), %rcx
xorl %edx, %edx
cmpq %rdx, %rax
je 0x4c769
movsbl (%rcx,%rdx), %ebx
leal -0x20(%rbx), %esi
incq %rdx
cmpb $0x5f, %sil
jb 0x4c74f
jmp 0x4d025
leaq 0x68(%rsp), %rdi
leaq 0x12988(%rip), %rsi     # 0x5f0fd
callq 0x3c1d9
testb %al, %al
je 0x4c7ac
leaq 0x68(%rsp), %rdi
leaq 0x12a20(%rip), %rsi     # 0x5f1aa
callq 0x3c1d9
testb %al, %al
je 0x4c7ac
leaq 0x68(%rsp), %rdi
leaq 0x12a05(%rip), %rsi     # 0x5f1a4
callq 0x3c1d9
testb %al, %al
jne 0x4cf6e
cmpl $0x4, 0x10(%rsp)
jne 0x4c7cc
leaq 0x68(%rsp), %rdi
leaq 0x1293e(%rip), %rsi     # 0x5f0fd
callq 0x3c1d9
testb %al, %al
jne 0x4cf6e
orq $-0x1, 0x18(%rsp)
leaq 0xd0(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x4feb0
testb %al, %al
je 0x4d0f3
cmpq $0x0, 0x18(%rsp)
jle 0x4d0d7
orq $-0x1, 0xa8(%rsp)
leaq 0xb0(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x4feb0
testb %al, %al
je 0x4d123
movq 0xa8(%rsp), %rcx
testq %rcx, %rcx
jle 0x4d247
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jg 0x4d228
decq %rax
movq %rax, 0x18(%rsp)
leaq 0x2b0(%rsp), %rdi
leaq 0xe64f(%rip), %rsi      # 0x5aea3
callq 0x3c1d9
testb %al, %al
je 0x4c879
leaq 0x2b0(%rsp), %rdi
leaq 0xe6d6(%rip), %rsi      # 0x5af42
callq 0x3c1d9
testb %al, %al
jne 0x4d43e
movq %rbp, %rdi
leaq 0x12908(%rip), %rsi     # 0x5f18b
leaq 0x28(%rsp), %rdx
callq 0x1b7b6
leaq 0x1c0(%rsp), %rdi
movq %rbp, %rsi
callq 0x1d40b
movb $0x1, %r12b
testb %al, %al
jne 0x4c8fb
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x128e1(%rip), %rsi     # 0x5f197
leaq 0x178(%rsp), %rdx
callq 0x1b7b6
leaq 0x1c0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1d40b
movb $0x1, %r12b
testb %al, %al
jne 0x4c8ee
leaq 0x68(%rsp), %rdi
leaq 0x128be(%rip), %rsi     # 0x5f1a4
callq 0x1cba2
movl %eax, %r12d
leaq 0xf8(%rsp), %rdi
callq 0xbb68
movq %rbp, %rdi
callq 0xbb68
movq %rbp, %rdi
leaq 0x128a2(%rip), %rsi     # 0x5f1af
leaq 0x198(%rsp), %rdx
callq 0x1b7b6
leaq 0x1c0(%rsp), %rdi
movq %rbp, %rsi
callq 0x1d40b
movb $0x1, 0xf(%rsp)
testb %al, %al
jne 0x4c9ee
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x12873(%rip), %rsi     # 0x5f1bc
movq %r14, %rdx
callq 0x1b7b6
leaq 0x1c0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1d40b
movb $0x1, 0xf(%rsp)
testb %al, %al
jne 0x4c9e1
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1284e(%rip), %rsi     # 0x5f1c7
leaq 0x48(%rsp), %rdx
callq 0x1b7b6
leaq 0x1c0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1d40b
movb $0x1, 0xf(%rsp)
testb %al, %al
jne 0x4c9d7
leaq 0x178(%rsp), %rbx
movq %rbx, %rdi
leaq 0x12824(%rip), %rsi     # 0x5f1d2
leaq 0x138(%rsp), %rdx
callq 0x1b7b6
leaq 0x1c0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1d40b
movb %al, 0xf(%rsp)
movq %rbx, %rdi
callq 0xbb68
leaq 0x28(%rsp), %rdi
callq 0xbb68
leaq 0xf8(%rsp), %rdi
callq 0xbb68
movq %rbp, %rdi
callq 0xbb68
leaq 0xf8(%rsp), %rdi
leaq 0xe6de(%rip), %rsi      # 0x5b0e3
movq %rbp, %rdx
callq 0x1b7b6
cmpl $0x8, 0x10(%rsp)
ja 0x4ca3a
movl 0x10(%rsp), %eax
movl $0x16d, %ecx            # imm = 0x16D
btl %eax, %ecx
leaq 0x127b6(%rip), %rsi     # 0x5f1dd
jae 0x4cd49
leaq 0xf8(%rsp), %rdi
callq 0xbad0
callq 0xb060
andl $0x0, (%rax)
cmpq $0x0, 0x100(%rsp)
je 0x4d142
movq %rax, %r13
leaq 0xf8(%rsp), %rdi
leaq 0x127a6(%rip), %rsi     # 0x5f209
callq 0xbac0
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
andq $0x0, 0x30(%rsp)
leaq 0x188(%rsp), %rax
movq %rax, 0x178(%rsp)
andq $0x0, 0x180(%rsp)
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
andq $0x0, 0x1a0(%rsp)
xorl %ecx, %ecx
movb %cl, 0x38(%rsp)
movb %cl, 0x188(%rsp)
movb %cl, 0x1a8(%rsp)
leaq 0x210(%rsp), %rax
movq %rax, 0x200(%rsp)
andq $0x0, 0x208(%rsp)
movb %cl, 0x210(%rsp)
cmpq $0x0, 0x1c8(%rsp)
je 0x4cc77
movq %r14, %rdi
leaq 0x1c0(%rsp), %rsi
pushq $0x3b
popq %rdx
callq 0x248b1
movq %r14, %rdi
callq 0x3c32f
movq %r14, %rdi
leaq 0xf8(%rsp), %rsi
callq 0x1d2b2
testb %al, %al
je 0x4cb46
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0xb350
leaq 0x728(%rsp), %rbx
movq %rbx, %rdi
leaq 0x28(%rsp), %rsi
pushq $0x3d
popq %rdx
callq 0x248b1
jmp 0x4cc03
leaq 0x48(%rsp), %r12
movq %r12, %rdi
leaq 0x126b0(%rip), %rsi     # 0x5f205
leaq 0x138(%rsp), %rdx
callq 0x1b7b6
movq %r14, %rdi
movq %r12, %rsi
callq 0x1d2b2
movl %eax, %ebx
movq %r12, %rdi
callq 0xbb68
testb %bl, %bl
je 0x4cba8
leaq 0x178(%rsp), %rdi
movq %r14, %rsi
callq 0xb350
leaq 0x708(%rsp), %rbx
movq %rbx, %rdi
leaq 0x178(%rsp), %rsi
pushq $0x3d
popq %rdx
callq 0x248b1
jmp 0x4cc03
movq %r12, %rdi
leaq 0x12659(%rip), %rsi     # 0x5f20b
leaq 0x138(%rsp), %rdx
callq 0x1b7b6
movq %r14, %rdi
movq %r12, %rsi
callq 0x1d2b2
movl %eax, %ebx
movq %r12, %rdi
callq 0xbb68
testb %bl, %bl
je 0x4cc18
leaq 0x198(%rsp), %rdi
movq %r14, %rsi
callq 0xb350
leaq 0x6e8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x198(%rsp), %rsi
pushq $0x3d
popq %rdx
callq 0x248b1
movq %rbx, %rdi
callq 0xbb68
movq %r14, %rdi
callq 0xbb68
jmp 0x4cade
cmpl $0x3, 0x10(%rsp)
jne 0x4cc0b
leaq 0x48(%rsp), %r12
movq %r12, %rdi
leaq 0xdb73(%rip), %rsi      # 0x5a7a1
leaq 0x138(%rsp), %rdx
callq 0x1b7b6
movq %r14, %rdi
movq %r12, %rsi
callq 0x1d2b2
movl %eax, %ebx
movq %r12, %rdi
callq 0xbb68
testb %bl, %bl
je 0x4cc0b
movq %rbp, %rdi
movq %r14, %rsi
callq 0xb350
leaq 0x6c8(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
pushq $0x3d
popq %rdx
callq 0x248b1
jmp 0x4cc03
movq %r14, %rdi
leaq 0xed52(%rip), %rsi      # 0x5b9d3
leaq 0x48(%rsp), %rdx
callq 0x1b7b6
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0x234f5
movq %r14, %rdi
callq 0xbb68
movq %r14, %rdi
leaq 0xed29(%rip), %rsi      # 0x5b9d3
leaq 0x48(%rsp), %rdx
callq 0x1b7b6
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0x23521
movq %r14, %rdi
callq 0xbb68
cmpq $0x0, 0x30(%rsp)
je 0x4cd41
movl 0x10(%rsp), %eax
cmpl $0x3, %eax
je 0x4cd6b
cmpl $0x1, %eax
jne 0x4cdd7
movq %r14, %rdi
leaq 0xed6f(%rip), %rsi      # 0x5ba60
leaq 0x48(%rsp), %rdx
callq 0x1b7b6
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0x1d40b
movl %eax, %ebx
movq %r14, %rdi
callq 0xbb68
testb %bl, %bl
je 0x4cdd7
leaq 0x400(%rsp), %rdi
leaq 0x28(%rsp), %rsi
pushq $0x3a
popq %rdx
callq 0x248b1
leaq 0x400(%rsp), %rdi
callq 0xbb68
jmp 0x4cdd7
movq %rbp, %rdi
jmp 0x4cf38
movl 0x10(%rsp), %eax
cmpl $0x1, %eax
je 0x4cfe0
cmpl $0x7, %eax
jne 0x4ca3a
leaq 0x12484(%rip), %rsi     # 0x5f1ea
jmp 0x4ca2d
cmpq $0x0, 0x208(%rsp)
je 0x4cd9d
movq %r14, %rdi
leaq 0xd7d7(%rip), %rsi      # 0x5a557
movq %rbp, %rdx
callq 0x1b8b7
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0xbb00
movq %r14, %rdi
callq 0xbb68
movq %r14, %rdi
leaq 0x1246d(%rip), %rsi     # 0x5f214
leaq 0x48(%rsp), %rdx
callq 0x1b7b6
movq %r15, %rdi
movq %r14, %rsi
callq 0x1d2b2
movl %eax, %ebx
movq %r14, %rdi
callq 0xbb68
testb %bl, %bl
je 0x4cdd7
movq %r15, %rdi
xorl %esi, %esi
pushq $0x5
popq %rdx
callq 0xb100
movq %rbp, %rdi
callq 0xbb68
andl $0x0, (%r13)
cmpq $0x0, 0x30(%rsp)
je 0x4d352
movq %r13, %rbx
movq %r14, %rdi
leaq 0x28(%rsp), %rsi
callq 0x4df84
leaq 0x3e0(%rsp), %r13
leaq 0x48(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x4df84
leaq 0x138(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0x4df84
cmpl $0x4, 0x10(%rsp)
jne 0x4ce4d
movq %r14, %rdi
xorl %esi, %esi
callq 0x4dfb6
movzbl 0x24(%rsp), %esi
movq %r15, %rdi
callq 0x4dfb6
andl $0x0, (%rbx)
cmpq $0x0, 0x160(%rsp)
je 0x4d266
movl 0x680(%rsp), %r15d
movq 0x18(%rsp), %r12
movq 0xa8(%rsp), %rbx
leaq 0x2b0(%rsp), %rdi
leaq 0xe020(%rip), %rsi      # 0x5aea3
callq 0x1cba2
movl %eax, %ebp
leaq 0x3a0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xb7b0
movq %r13, %rdi
leaq 0x138(%rsp), %rsi
callq 0xb7b0
movzbl 0xf(%rsp), %eax
movzbl %bpl, %r9d
leaq 0x200(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x88(%rsp), %r15
movq %r15, %rdx
movq %r12, %rcx
movq %rbx, %r8
pushq %r13
leaq 0x3a8(%rsp), %rbx
pushq %rbx
pushq $0x0
pushq %rax
callq 0x4bca4
addq $0x20, %rsp
movq %r13, %rdi
callq 0xbb68
movq %rbx, %rdi
callq 0xbb68
movq 0x1b8(%rsp), %rdi
movq %r14, %rsi
callq 0x4fed2
movq %rax, %rdi
movq %rbp, %rsi
callq 0x4ff38
movq %rbp, %rdi
callq 0x4ff50
leaq 0x138(%rsp), %rdi
callq 0xbb68
leaq 0x48(%rsp), %rdi
callq 0xbb68
movq %r14, %rdi
callq 0xbb68
leaq 0x198(%rsp), %rdi
callq 0xbb68
leaq 0x178(%rsp), %rdi
callq 0xbb68
leaq 0x28(%rsp), %rdi
callq 0xbb68
leaq 0xf8(%rsp), %rdi
callq 0xbb68
leaq 0x1c0(%rsp), %rdi
callq 0xbb68
leaq 0x340(%rsp), %rdi
callq 0xbb68
leaq 0x2b0(%rsp), %rdi
callq 0xbb68
leaq 0x1e0(%rsp), %rdi
callq 0xbb68
leaq 0xb0(%rsp), %rdi
callq 0xbb68
leaq 0xd0(%rsp), %rdi
callq 0xbb68
leaq 0x68(%rsp), %rdi
callq 0xbb68
leaq 0x118(%rsp), %rdi
callq 0xbb68
movq %r15, %rdi
callq 0xbb68
jmp 0x4c551
cmpb $0x0, 0xf4(%rsp)
leaq 0xe0f4(%rip), %rsi      # 0x5b0e3
leaq 0x121ea(%rip), %rax     # 0x5f1e0
cmovneq %rax, %rsi
testb %r12b, %r12b
cmovneq %rax, %rsi
jmp 0x4ca2d
leaq 0x420(%rsp), %rdi
callq 0x1d368
addq $0x748, %rsp            # imm = 0x748
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0xf8(%rsp), %rdi
movl %ebx, %esi
callq 0x1caa3
leaq 0x12082(%rip), %rsi     # 0x5f0c8
leaq 0x200(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0x1b94c
movb $0x1, %bpl
leaq 0x200(%rsp), %rsi
movq %r14, %rdi
callq 0xb940
xorl %ebp, %ebp
movq 0x36f71(%rip), %rsi     # 0x83fe8
movq 0x36ee2(%rip), %rdx     # 0x83f60
movq %r14, %rdi
callq 0xb9d0
jmp 0x4debc
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0x12010(%rip), %rsi     # 0x5f0ad
movq %rax, %rdi
callq 0xb260
jmp 0x4d0c1
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0x11fd1(%rip), %rsi     # 0x5f08a
movq %rax, %rdi
callq 0xb260
movq 0x36f20(%rip), %rsi     # 0x83fe8
movq 0x36e91(%rip), %rdx     # 0x83f60
movq %r14, %rdi
callq 0xb9d0
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0x1202a(%rip), %rsi     # 0x5f113
movq %rax, %rdi
callq 0xb260
jmp 0x4d10d
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0x11ffc(%rip), %rsi     # 0x5f101
movq %rax, %rdi
callq 0xb260
movq 0x36ed4(%rip), %rsi     # 0x83fe8
movq 0x36e45(%rip), %rdx     # 0x83f60
movq %r14, %rdi
callq 0xb9d0
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0x11ff3(%rip), %rsi     # 0x5f128
movq %rax, %rdi
callq 0xb260
jmp 0x4d458
callq 0xb6c0
testl %eax, %eax
jne 0x4d46e
leaq 0x11d8c(%rip), %rsi     # 0x5eee2
leaq 0x158(%rsp), %rdi
leaq 0x300(%rsp), %rdx
callq 0x1b7b6
leaq 0x48(%rsp), %rdi
movl $0x11a, %esi            # imm = 0x11A
callq 0x1caa3
leaq 0x198(%rsp), %rdi
leaq 0x158(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x1ca3c
leaq 0xca48(%rip), %rdx      # 0x59be3
leaq 0x178(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0x1b92d
leaq 0x11e0a(%rip), %rsi     # 0x5efc1
leaq 0x290(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x1b7b6
leaq 0xe76b(%rip), %rdx      # 0x5b93e
leaq 0x138(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0x1b92d
leaq 0x28(%rsp), %rdi
leaq 0x178(%rsp), %rsi
leaq 0x138(%rsp), %rdx
callq 0x1ca3c
leaq 0x11fe7(%rip), %rdx     # 0x5f1f0
leaq 0x200(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1b92d
leaq 0x200(%rsp), %rdi
callq 0x224fc
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0x11f13(%rip), %rsi     # 0x5f14d
movq %rax, %rdi
callq 0xb260
jmp 0x4d458
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0x11ee0(%rip), %rsi     # 0x5f139
movq %rax, %rdi
callq 0xb260
jmp 0x4d458
callq 0xb6c0
testl %eax, %eax
jne 0x4d470
leaq 0x11c68(%rip), %rsi     # 0x5eee2
leaq 0x320(%rsp), %rdi
leaq 0x17(%rsp), %rdx
callq 0x1b7b6
leaq 0x380(%rsp), %rdi
movl $0x156, %esi            # imm = 0x156
callq 0x1caa3
leaq 0x2e0(%rsp), %rdi
leaq 0x320(%rsp), %rsi
leaq 0x380(%rsp), %rdx
callq 0x1ca3c
leaq 0xc921(%rip), %rdx      # 0x59be3
leaq 0x300(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x1b92d
leaq 0x11ce3(%rip), %rsi     # 0x5efc1
leaq 0x3c0(%rsp), %rdi
leaq 0x16(%rsp), %rdx
callq 0x1b7b6
leaq 0xe647(%rip), %rdx      # 0x5b93e
leaq 0x360(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
callq 0x1b92d
leaq 0x290(%rsp), %rdi
leaq 0x300(%rsp), %rsi
leaq 0x360(%rsp), %rdx
callq 0x1ca3c
leaq 0x11efc(%rip), %rdx     # 0x5f22c
leaq 0x200(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0x1b92d
leaq 0x200(%rsp), %rdi
callq 0x224fc
callq 0xb6c0
testl %eax, %eax
jne 0x4d472
leaq 0x11b7c(%rip), %rsi     # 0x5eee2
leaq 0x290(%rsp), %rdi
leaq 0x380(%rsp), %rdx
callq 0x1b7b6
leaq 0x300(%rsp), %rdi
movl $0x14b, %esi            # imm = 0x14B
callq 0x1caa3
leaq 0x138(%rsp), %rdi
leaq 0x290(%rsp), %rsi
leaq 0x300(%rsp), %rdx
callq 0x1ca3c
leaq 0xc832(%rip), %rdx      # 0x59be3
leaq 0x48(%rsp), %rdi
leaq 0x138(%rsp), %rsi
callq 0x1b92d
leaq 0x11bf7(%rip), %rsi     # 0x5efc1
leaq 0x320(%rsp), %rdi
leaq 0x360(%rsp), %rdx
callq 0x1b7b6
leaq 0xe558(%rip), %rdx      # 0x5b93e
leaq 0x2e0(%rsp), %rdi
leaq 0x320(%rsp), %rsi
callq 0x1b92d
leaq 0x158(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x2e0(%rsp), %rdx
callq 0x1ca3c
leaq 0x11dfe(%rip), %rdx     # 0x5f21a
leaq 0x200(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x1b92d
leaq 0x200(%rsp), %rdi
callq 0x224fc
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %r14
leaq 0x11d1f(%rip), %rsi     # 0x5f16f
movq %rax, %rdi
callq 0xb260
movq 0x36b89(%rip), %rsi     # 0x83fe8
movq 0x36afa(%rip), %rdx     # 0x83f60
movq %r14, %rdi
callq 0xb9d0
jmp 0x4d472
jmp 0x4d472
pushq $0x1
popq %rdi
callq 0xb6d0
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %rbx
leaq 0x11be2(%rip), %rsi     # 0x5f06e
movq %rax, %rdi
callq 0xb260
movq 0x36b4d(%rip), %rsi     # 0x83fe8
movq 0x36abe(%rip), %rdx     # 0x83f60
movq %rbx, %rdi
callq 0xb9d0
jmp 0x4debc
callq 0xb060
andl $0x0, (%rax)
callq 0xb6c0
testl %eax, %eax
jne 0x4d68f
leaq 0x11a17(%rip), %rsi     # 0x5eee2
leaq 0x68(%rsp), %rdi
leaq 0x2b0(%rsp), %rdx
callq 0x1b7b6
leaq 0xd0(%rsp), %rdi
movl $0xaf, %esi
callq 0x1caa3
leaq 0x118(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x1ca3c
leaq 0xc6d3(%rip), %rdx      # 0x59be3
leaq 0x88(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x1b92d
leaq 0x11a95(%rip), %rsi     # 0x5efc1
leaq 0x1e0(%rsp), %rdi
leaq 0x340(%rsp), %rdx
callq 0x1b7b6
leaq 0xe3f6(%rip), %rdx      # 0x5b93e
leaq 0xb0(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1b92d
leaq 0x200(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
callq 0x1ca3c
leaq 0x11ace(%rip), %rdx     # 0x5f04f
leaq 0x420(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x1b92d
leaq 0x420(%rsp), %rdi
callq 0x224fc
callq 0xb6c0
testl %eax, %eax
jne 0x4d694
leaq 0x1192b(%rip), %rsi     # 0x5eee2
leaq 0x68(%rsp), %rdi
leaq 0x2b0(%rsp), %rdx
callq 0x1b7b6
leaq 0xd0(%rsp), %rdi
movl $0xb1, %esi
callq 0x1caa3
leaq 0x118(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x1ca3c
leaq 0xc5e7(%rip), %rdx      # 0x59be3
leaq 0x88(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x1b92d
leaq 0x119a9(%rip), %rsi     # 0x5efc1
leaq 0x1e0(%rsp), %rdi
leaq 0x340(%rsp), %rdx
callq 0x1b7b6
leaq 0xe30a(%rip), %rdx      # 0x5b93e
leaq 0xb0(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1b92d
leaq 0x200(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
callq 0x1ca3c
leaq 0x119ec(%rip), %rdx     # 0x5f059
leaq 0x420(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x1b92d
leaq 0x420(%rsp), %rdi
callq 0x224fc
jmp 0x4d472
jmp 0x4d472
jmp 0x4d472
movq %rax, %r12
leaq 0x420(%rsp), %rdi
callq 0xbb68
jmp 0x4d6b3
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0xbb68
jmp 0x4d6c5
movq %rax, %r12
leaq 0xb0(%rsp), %rdi
callq 0xbb68
jmp 0x4d71f
movq %rax, %r12
leaq 0x420(%rsp), %rdi
callq 0xbb68
jmp 0x4d6e9
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0xbb68
jmp 0x4d731
movq %rax, %r12
leaq 0x420(%rsp), %rdi
callq 0xbb68
jmp 0x4d70d
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0xbb68
jmp 0x4d743
movq %rax, %r12
leaq 0x1e0(%rsp), %rdi
callq 0xbb68
jmp 0x4d755
movq %rax, %r12
leaq 0xb0(%rsp), %rdi
callq 0xbb68
jmp 0x4d76a
movq %rax, %r12
leaq 0xb0(%rsp), %rdi
callq 0xbb68
jmp 0x4d77f
movq %rax, %r12
leaq 0x88(%rsp), %rdi
callq 0xbb68
jmp 0x4d7eb
movq %rax, %r12
leaq 0x1e0(%rsp), %rdi
callq 0xbb68
jmp 0x4d824
movq %rax, %r12
leaq 0x1e0(%rsp), %rdi
callq 0xbb68
jmp 0x4d836
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0xbb68
jmp 0x4d7ac
movq %rdx, %rbx
movq %rax, %r12
leaq 0x158(%rsp), %rdi
callq 0xbb68
jmp 0x4d84b
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0xbb68
jmp 0x4d7d9
movq %rdx, %rbx
movq %rax, %r12
leaq 0x290(%rsp), %rdi
callq 0xbb68
jmp 0x4d860
movq %rax, %r12
leaq 0x118(%rsp), %rdi
callq 0xbb68
jmp 0x4d872
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0xbb68
jmp 0x4d815
movq %rdx, %rbx
movq %rax, %r12
leaq 0x28(%rsp), %rdi
callq 0xbb68
jmp 0x4d887
movq %rax, %r12
leaq 0x88(%rsp), %rdi
callq 0xbb68
jmp 0x4d899
movq %rax, %r12
leaq 0x88(%rsp), %rdi
callq 0xbb68
jmp 0x4d8ab
movq %rdx, %rbx
movq %rax, %r12
leaq 0x2e0(%rsp), %rdi
callq 0xbb68
jmp 0x4d8c0
movq %rdx, %rbx
movq %rax, %r12
leaq 0x360(%rsp), %rdi
callq 0xbb68
jmp 0x4d8d5
movq %rax, %r12
leaq 0xd0(%rsp), %rdi
callq 0xbb68
jmp 0x4d8e7
movq %rdx, %rbx
movq %rax, %r12
leaq 0x138(%rsp), %rdi
callq 0xbb68
jmp 0x4d8ef
movq %rax, %r12
leaq 0x118(%rsp), %rdi
callq 0xbb68
jmp 0x4d901
movq %rax, %r12
leaq 0x118(%rsp), %rdi
callq 0xbb68
jmp 0x4d906
movq %rdx, %rbx
movq %rax, %r12
leaq 0x320(%rsp), %rdi
callq 0xbb68
jmp 0x4d91b
movq %rdx, %rbx
movq %rax, %r12
leaq 0x3c0(%rsp), %rdi
callq 0xbb68
jmp 0x4d92d
movq %rax, %r12
jmp 0x4d95b
movq %rdx, %rbx
movq %rax, %r12
leaq 0x290(%rsp), %rdi
callq 0xbb68
jmp 0x4d947
movq %rax, %r12
jmp 0x4d906
movq %rax, %r12
leaq 0xd0(%rsp), %rdi
callq 0xbb68
jmp 0x4d95b
movq %rdx, %rbx
movq %rax, %r12
leaq 0x48(%rsp), %rdi
callq 0xbb68
jmp 0x4d970
movq %rdx, %rbx
movq %rax, %r12
leaq 0x300(%rsp), %rdi
callq 0xbb68
jmp 0x4d985
jmp 0x4da90
movq %rdx, %rbx
movq %rax, %r12
leaq 0x178(%rsp), %rdi
callq 0xbb68
jmp 0x4d99a
jmp 0x4d958
movq %rax, %r12
leaq 0x68(%rsp), %rdi
callq 0xbb68
jmp 0x4df56
movq %rdx, %rbx
movq %rax, %r12
leaq 0x138(%rsp), %rdi
callq 0xbb68
jmp 0x4d9b9
movq %rdx, %rbx
movq %rax, %r12
leaq 0x2e0(%rsp), %rdi
callq 0xbb68
jmp 0x4d9ce
movq %rdx, %rbx
movq %rax, %r12
leaq 0x198(%rsp), %rdi
callq 0xbb68
jmp 0x4d9e3
jmp 0x4da90
jmp 0x4da90
movq %rdx, %rbx
movq %rax, %r12
leaq 0x300(%rsp), %rdi
callq 0xbb68
jmp 0x4d9f5
movq %rdx, %rbx
movq %rax, %r12
leaq 0x380(%rsp), %rdi
callq 0xbb68
jmp 0x4da08
movq %rdx, %rbx
movq %rax, %r12
leaq 0x48(%rsp), %rdi
callq 0xbb68
jmp 0x4da1b
movq %rdx, %rbx
movq %rax, %r12
leaq 0x290(%rsp), %rdi
jmp 0x4dd26
movq %rdx, %rbx
movq %rax, %r12
leaq 0x320(%rsp), %rdi
jmp 0x4dae0
movq %rdx, %rbx
movq %rax, %r12
leaq 0x158(%rsp), %rdi
jmp 0x4dd4a
movq %rdx, %rbx
movq %rax, %r12
leaq 0x28(%rsp), %rdi
callq 0xbb68
jmp 0x4da7a
jmp 0x4db20
jmp 0x4dd03
jmp 0x4da90
movq %rax, %r12
movq %rbx, %rdi
callq 0xb470
jmp 0x4df56
jmp 0x4db01
jmp 0x4dae9
jmp 0x4dd03
jmp 0x4db20
jmp 0x4dd03
jmp 0x4dd03
movq %rdx, %rbx
movq %rax, %r12
leaq 0xf8(%rsp), %rdi
callq 0xbb68
jmp 0x4daa8
jmp 0x4dc92
jmp 0x4db0e
movq %rax, %r12
jmp 0x4df56
jmp 0x4db0e
jmp 0x4db0e
jmp 0x4db0e
jmp 0x4db0e
jmp 0x4db0e
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dab0
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4dd57
movq %rdx, %rbx
movq %rax, %r12
leaq 0x3e0(%rsp), %rdi
callq 0xbb68
jmp 0x4dad8
movq %rdx, %rbx
movq %rax, %r12
leaq 0x3a0(%rsp), %rdi
callq 0xbb68
jmp 0x4db61
jmp 0x4dae9
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4db61
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4db6e
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4db78
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd2b
jmp 0x4db0e
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dcf9
jmp 0x4db20
jmp 0x4dd03
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd11
jmp 0x4dd03
jmp 0x4dc87
jmp 0x4dc87
jmp 0x4dc87
jmp 0x4dc87
jmp 0x4dc87
jmp 0x4dc87
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0x4ff50
leaq 0x138(%rsp), %rdi
callq 0xbb68
leaq 0x48(%rsp), %rdi
callq 0xbb68
leaq 0x158(%rsp), %rdi
jmp 0x4dd26
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4ddb4
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4ddbc
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4ddc1
jmp 0x4dc87
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4ddc9
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd69
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4ddce
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4dd71
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd76
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4dd7e
jmp 0x4dc87
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd83
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4dd8b
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd90
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4dd98
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd9d
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4dda5
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4ddaa
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
jmp 0x4ddaf
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd5c
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd4f
jmp 0x4dcdf
jmp 0x4dd0b
jmp 0x4dd0b
jmp 0x4dcdf
movq %rax, %r12
jmp 0x4df49
movq %rdx, %rbx
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0xbb68
jmp 0x4dccb
movq %rdx, %rbx
movq %rax, %r12
movb $0x1, %bpl
leaq 0xf8(%rsp), %rdi
callq 0xbb68
testb %bpl, %bpl
jne 0x4dcf9
jmp 0x4dd5c
movq %rdx, %rbx
movq %rax, %r12
leaq 0x48(%rsp), %rdi
callq 0xbb68
jmp 0x4dd11
jmp 0x4dd0b
movq %rdx, %rbx
movq %rax, %r12
movq %r14, %rdi
callq 0xb470
jmp 0x4dd5c
movq %rdx, %rbx
movq %rax, %r12
jmp 0x4dd1e
movq %rdx, %rbx
movq %rax, %r12
leaq 0x158(%rsp), %rdi
callq 0xbb68
leaq 0x200(%rsp), %rdi
callq 0xbb68
leaq 0x198(%rsp), %rdi
callq 0xbb68
leaq 0x178(%rsp), %rdi
callq 0xbb68
leaq 0x28(%rsp), %rdi
callq 0xbb68
leaq 0xf8(%rsp), %rdi
callq 0xbb68
leaq 0x1c0(%rsp), %rdi
callq 0xbb68
leaq 0x340(%rsp), %rdi
callq 0xbb68
leaq 0x2b0(%rsp), %rdi
callq 0xbb68
leaq 0x1e0(%rsp), %rdi
callq 0xbb68
leaq 0xb0(%rsp), %rdi
callq 0xbb68
leaq 0xd0(%rsp), %rdi
callq 0xbb68
leaq 0x68(%rsp), %rdi
callq 0xbb68
leaq 0x118(%rsp), %rdi
callq 0xbb68
leaq 0x88(%rsp), %rdi
callq 0xbb68
cmpl $0x1, %ebx
jne 0x4df49
movq %r12, %rdi
callq 0xb270
movq %rax, %r14
pushq $0x10
popq %rdi
callq 0xb300
movq %rax, %rbx
leaq 0x11449(%rip), %rsi     # 0x5f23d
leaq 0xd0(%rsp), %rdi
movq 0x2d0(%rsp), %rdx
callq 0x1b8b7
leaq 0xb40e(%rip), %rdx      # 0x5921e
leaq 0x68(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x1b92d
leaq 0xb0(%rsp), %rdi
leaq 0x420(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0x4ff74
leaq 0x118(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
callq 0x1ca3c
leaq 0xdab5(%rip), %rdx      # 0x5b910
leaq 0x88(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x1b92d
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
leaq 0x200(%rsp), %rdi
leaq 0x88(%rsp), %rsi
movq %rax, %rdx
callq 0x1b92d
movb $0x1, %bpl
leaq 0x200(%rsp), %rsi
movq %rbx, %rdi
callq 0xb940
xorl %ebp, %ebp
movq 0x3613b(%rip), %rsi     # 0x83fe8
movq 0x360ac(%rip), %rdx     # 0x83f60
movq %rbx, %rdi
callq 0xb9d0
movq %rax, %r12
leaq 0x200(%rsp), %rdi
callq 0xbb68
jmp 0x4ded4
movq %rax, %r12
movb $0x1, %bpl
leaq 0x88(%rsp), %rdi
callq 0xbb68
jmp 0x4dee9
movq %rax, %r12
movb $0x1, %bpl
leaq 0x118(%rsp), %rdi
callq 0xbb68
jmp 0x4defe
movq %rax, %r12
movb $0x1, %bpl
leaq 0xb0(%rsp), %rdi
callq 0xbb68
jmp 0x4df13
movq %rax, %r12
movb $0x1, %bpl
leaq 0x68(%rsp), %rdi
callq 0xbb68
jmp 0x4df25
movq %rax, %r12
movb $0x1, %bpl
leaq 0xd0(%rsp), %rdi
callq 0xbb68
testb %bpl, %bpl
jne 0x4df3c
jmp 0x4df44
movq %rax, %r12
movq %rbx, %rdi
callq 0xb470
callq 0xb970
leaq 0x420(%rsp), %rdi
callq 0x1d368
movq 0x2d8(%rsp), %rdi
addq $0x38, %rdi
callq 0x1be2a
movq 0x1b8(%rsp), %rdi
callq 0x5003e
movq %r12, %rdi
callq 0xba30
movq %rax, %rdi
callq 0x1bdcd