// File: /workspace/github_cpp_makefile_star2_O1/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 $0x7d8, %rsp            # imm = 0x7D8
movl %r8d, %ebp
movl %ecx, %r14d
movl %edx, %r15d
movq %rsi, %rbx
leaq 0x38d7a(%rip), %rax     # 0xafb40
movq %rax, (%rdi)
leaq 0x8(%rdi), %rax
movq %rax, 0x290(%rsp)
leaq 0x10(%rdi), %rax
xorl %ecx, %ecx
movl %ecx, 0x10(%rdi)
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
movq %rax, 0x28(%rdi)
movq %rcx, 0x30(%rdi)
leaq 0x40(%rdi), %rax
movl %ecx, 0x40(%rdi)
movq %rcx, 0x48(%rdi)
movq %rax, 0x50(%rdi)
movq %rax, 0x58(%rdi)
movq %rdi, 0x3c8(%rsp)
movq %rcx, 0x60(%rdi)
testl %r14d, %r14d
je 0x76ede
callq 0xa070
movl $0x0, (%rax)
cmpl $0x1, %r15d
je 0x76ef8
cmpl $0x2, %r15d
je 0x76ee4
cmpl $0x5, %r15d
je 0x76ef8
callq 0xa6b0
testl %eax, %eax
jne 0x789b7
leaq 0x148(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x190d7(%rip), %rsi     # 0x8ff36
leaq 0x190e0(%rip), %rdx     # 0x8ff46
leaq 0x138(%rsp), %rdi
callq 0x2fdd8
leaq 0x178(%rsp), %rdi
movl $0xae, %esi
callq 0x2d60a
leaq 0x1b8(%rsp), %rdi
leaq 0x138(%rsp), %rsi
leaq 0x178(%rsp), %rdx
callq 0x2d562
leaq 0x13d3c(%rip), %rsi     # 0x8abe5
leaq 0x1b8(%rsp), %rdi
callq 0xaac0
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78e6d
movups (%rcx), %xmm0
movups %xmm0, (%r14)
jmp 0x78e7a
cmpl $0x2, %r15d
jne 0x76ef8
callq 0xa070
movl $0x0, (%rax)
testb %r14b, %r14b
je 0x78914
testb %bpl, %bpl
je 0x76f12
callq 0xa070
movl $0x0, (%rax)
cmpl $0x4, %r15d
jne 0x78875
cmpq $0x0, 0x8(%rbx)
je 0x78834
movl %r15d, 0x4(%rsp)
movl %r14d, 0x268(%rsp)
movl %ebp, 0x26c(%rsp)
leaq 0x530(%rsp), %rdi
movq %rbx, 0x3c0(%rsp)
movq %rbx, %rsi
xorl %edx, %edx
callq 0x30fec
leaq 0x37686(%rip), %rax     # 0xae5d8
leaq 0x798(%rsp), %r15
movq %rax, -0x268(%r15)
movl $0x0, -0x8(%r15)
leaq 0x7a8(%rsp), %rax
movq %rax, -0x10(%rax)
xorl %ecx, %ecx
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq 0x7c8(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq 0xb8(%rsp), %r12
leaq 0x18(%rsp), %r13
leaq 0x308(%rsp), %rax
movq %rax, 0x3b8(%rsp)
leaq 0x8(%rsp), %rbp
leaq 0x68(%rsp), %r14
leaq 0x530(%rsp), %rdi
callq 0x33e2a
testb %al, %al
je 0x783d4
movq %r15, %rdi
callq 0x374e6
movq %r15, %rdi
callq 0x387de
cmpl $0x6, 0x4(%rsp)
je 0x76fe9
cmpl $0x0, 0x4(%rsp)
jne 0x77000
movq %r15, %rdi
leaq 0x190e3(%rip), %rsi     # 0x900d6
callq 0xa160
testl %eax, %eax
je 0x783d4
cmpq $0x0, 0x7a0(%rsp)
je 0x76fb6
movq 0x798(%rsp), %rax
cmpb $0x23, (%rax)
je 0x76fb6
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x394d9
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x7a1e3
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7705a
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x394d9
leaq 0x1b8(%rsp), %rdi
movq %rbx, %rsi
callq 0x7a1e3
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7709f
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x394d9
leaq 0x138(%rsp), %rdi
movq %rbx, %rsi
callq 0x7a1e3
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x770e4
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x394d9
leaq 0x178(%rsp), %rdi
movq %rbx, %rsi
callq 0x7a1e3
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77129
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x394d9
leaq 0x158(%rsp), %rdi
movq %rbx, %rsi
callq 0x7a1e3
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7716e
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x394d9
leaq 0x1d8(%rsp), %rdi
movq %rbx, %rsi
callq 0x7a1e3
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x771b3
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x394d9
leaq 0x398(%rsp), %rdi
movq %rbx, %rsi
callq 0x7a1e3
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x771f8
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x394d9
leaq 0x410(%rsp), %rdi
movq %rbx, %rsi
callq 0x7a1e3
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7723d
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq %r13, 0x8(%rsp)
movq 0x798(%rsp), %rsi
movq 0x7a0(%rsp), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0x2c652
movq %rbp, %rdi
callq 0x374e6
movq %rbp, %rdi
callq 0x387de
cmpq $0x0, 0x10(%rsp)
je 0x78538
movq 0x50(%rsp), %rax
testq %rax, %rax
je 0x7851a
movq 0x48(%rsp), %rcx
xorl %edx, %edx
movsbl (%rcx,%rdx), %ebx
leal -0x20(%rbx), %esi
cmpb $0x5f, %sil
jae 0x784b2
incq %rdx
cmpq %rdx, %rax
jne 0x7728e
leaq 0x138(%rsp), %rdi
leaq 0x18e9b(%rip), %rsi     # 0x90151
callq 0xa160
testl %eax, %eax
je 0x772f3
leaq 0x138(%rsp), %rdi
leaq 0x18f30(%rip), %rsi     # 0x901fe
callq 0xa160
testl %eax, %eax
je 0x772f3
leaq 0x138(%rsp), %rdi
leaq 0x18f12(%rip), %rsi     # 0x901f8
callq 0xa160
testl %eax, %eax
jne 0x78290
cmpl $0x4, 0x4(%rsp)
jne 0x77316
leaq 0x138(%rsp), %rdi
leaq 0x18e48(%rip), %rsi     # 0x90151
callq 0xa160
testl %eax, %eax
jne 0x78290
movq $-0x1, 0x218(%rsp)
leaq 0x178(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x7dafd
testb %al, %al
leaq 0x398(%rsp), %rbx
je 0x78610
cmpq $0x0, 0x218(%rsp)
jle 0x7868b
movq $-0x1, 0x260(%rsp)
leaq 0x158(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x7dafd
testb %al, %al
je 0x7866d
movq 0x260(%rsp), %rcx
testq %rcx, %rcx
leaq 0xa8(%rsp), %r15
jle 0x7864f
movq 0x218(%rsp), %rax
cmpq %rcx, %rax
jg 0x7862e
decq %rax
movq %rax, 0x218(%rsp)
movq %rbx, %rdi
leaq 0x14ae7(%rip), %rsi     # 0x8bea5
callq 0xa160
testl %eax, %eax
je 0x773de
movq %rbx, %rdi
leaq 0x14b73(%rip), %rsi     # 0x8bf44
callq 0xa160
testl %eax, %eax
jne 0x786bd
movq %r12, 0xa8(%rsp)
movq %r15, %rdi
leaq 0x18def(%rip), %rsi     # 0x901df
leaq 0x18df3(%rip), %rdx     # 0x901ea
callq 0x2fdd8
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rcx
leaq 0x8(%rsp), %rdi
xorl %edx, %edx
callq 0xa9e0
movq %rax, %rbx
movb $0x1, %r12b
cmpq $-0x1, %rax
jne 0x7748b
leaq 0x400(%rsp), %rax
movq %rax, 0x3f0(%rsp)
leaq 0x3f0(%rsp), %rdi
leaq 0x18da8(%rip), %rsi     # 0x901eb
leaq 0x18db8(%rip), %rdx     # 0x90202
callq 0x2fdd8
movq 0x3f0(%rsp), %rsi
movq 0x3f8(%rsp), %rcx
leaq 0x8(%rsp), %rdi
xorl %edx, %edx
callq 0xa9e0
cmpq $-0x1, %rax
jne 0x7748b
leaq 0x138(%rsp), %rdi
leaq 0x18d78(%rip), %rsi     # 0x901f8
callq 0xa160
testl %eax, %eax
sete %r12b
cmpq $-0x1, %rbx
jne 0x774b6
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x774b6
movq 0x400(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x774db
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0xb8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq %r15, %rdi
leaq 0x18d0e(%rip), %rsi     # 0x90203
leaq 0x18d13(%rip), %rdx     # 0x9020f
callq 0x2fdd8
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rcx
xorl %ebx, %ebx
leaq 0x8(%rsp), %rdi
xorl %edx, %edx
callq 0xa9e0
movq %rax, %r15
movb $0x1, %bpl
cmpq $-0x1, %rax
je 0x77533
xorl %r13d, %r13d
jmp 0x77638
leaq 0x308(%rsp), %rax
movq %rax, 0x2f8(%rsp)
leaq 0x2f8(%rsp), %rdi
leaq 0x18cbe(%rip), %rsi     # 0x90210
leaq 0x18cc1(%rip), %rdx     # 0x9021a
callq 0x2fdd8
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rcx
xorl %ebx, %ebx
leaq 0x8(%rsp), %rdi
xorl %edx, %edx
callq 0xa9e0
movl $0x0, %r13d
cmpq $-0x1, %rax
jne 0x77638
leaq 0x2e8(%rsp), %rax
movq %rax, 0x2d8(%rsp)
leaq 0x2d8(%rsp), %rdi
leaq 0x18c70(%rip), %rsi     # 0x9021b
leaq 0x18c73(%rip), %rdx     # 0x90225
callq 0x2fdd8
movq 0x2d8(%rsp), %rsi
movq 0x2e0(%rsp), %rcx
xorl %r13d, %r13d
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
xorl %edx, %edx
callq 0xa9e0
cmpq $-0x1, %rax
je 0x775e6
movb $0x1, %bl
movb $0x1, %bpl
jmp 0x77638
leaq 0x3e0(%rsp), %rax
movq %rax, 0x3d0(%rsp)
leaq 0x3d0(%rsp), %rdi
leaq 0x18c21(%rip), %rsi     # 0x90226
leaq 0x18c24(%rip), %rdx     # 0x90230
callq 0x2fdd8
movq 0x3d0(%rsp), %rsi
movq 0x3d8(%rsp), %rcx
movq %rbx, %rdi
xorl %edx, %edx
callq 0xa9e0
cmpq $-0x1, %rax
setne %bpl
movb $0x1, %bl
movb $0x1, %r13b
testb %r13b, %r13b
leaq 0x18(%rsp), %r13
je 0x77667
movq 0x3d0(%rsp), %rdi
leaq 0x3e0(%rsp), %rax
cmpq %rax, %rdi
je 0x77667
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0xa5a0
testb %bl, %bl
leaq 0x8(%rsp), %rbx
je 0x77695
movq 0x2d8(%rsp), %rdi
leaq 0x2e8(%rsp), %rax
cmpq %rax, %rdi
je 0x77695
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0xa5a0
cmpq $-0x1, %r15
jne 0x776c0
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0x776c0
movq 0x308(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x776e5
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
leaq 0x198(%rsp), %rdi
leaq 0x149e1(%rip), %rsi     # 0x8c0e5
leaq 0x149de(%rip), %rdx     # 0x8c0e9
callq 0x2fdd8
cmpl $0x8, 0x4(%rsp)
ja 0x7774f
movl 0x4(%rsp), %eax
leaq 0x187de(%rip), %rcx     # 0x8ff00
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x2, %r8d
movq 0x1a0(%rsp), %rdx
leaq 0x18af1(%rip), %rcx     # 0x90231
leaq 0x198(%rsp), %rdi
xorl %esi, %esi
callq 0xa8c0
callq 0xa070
movl $0x0, (%rax)
cmpq $0x0, 0x1a0(%rsp)
je 0x7856a
movq %rax, %r15
leaq 0x198(%rsp), %rdi
leaq 0x18ae2(%rip), %rsi     # 0x9025d
callq 0xaac0
leaq 0x208(%rsp), %rax
movq %rax, 0x1f8(%rsp)
xorl %ecx, %ecx
movq %rcx, 0x200(%rsp)
movb %cl, 0x208(%rsp)
leaq 0x230(%rsp), %rax
movq %rax, 0x220(%rsp)
movq %rcx, 0x228(%rsp)
movb %cl, 0x230(%rsp)
leaq 0x250(%rsp), %rax
movq %rax, 0x240(%rsp)
movq %rcx, 0x248(%rsp)
movb %cl, 0x250(%rsp)
leaq 0x98(%rsp), %rax
movq %rax, 0x88(%rsp)
movq %rcx, 0x90(%rsp)
movb %cl, 0x98(%rsp)
cmpq %rcx, 0x10(%rsp)
leaq 0xb8(%rsp), %r12
je 0x77c13
movq %r14, %rdi
movq %rbx, %rsi
movl $0x3b, %edx
callq 0x394d9
movq %r14, %rdi
callq 0x374e6
movq %r14, %rdi
callq 0x387de
movq 0x1a0(%rsp), %rcx
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0xa5d0
movq 0xb0(%rsp), %rdx
cmpq 0x1a0(%rsp), %rdx
jne 0x7787e
testq %rdx, %rdx
je 0x77882
movq 0x198(%rsp), %rsi
movq 0xa8(%rsp), %rdi
callq 0xa5c0
testl %eax, %eax
sete %bl
jmp 0x77884
xorl %ebx, %ebx
jmp 0x77884
movb $0x1, %bl
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x778a1
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
testb %bl, %bl
je 0x778e9
leaq 0x1f8(%rsp), %rdi
movq %r14, %rsi
callq 0xa320
leaq 0x8(%rsp), %rbx
leaq 0x510(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
movl $0x3d, %edx
callq 0x394d9
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rcx
jmp 0x77bd8
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x1895a(%rip), %rsi     # 0x90259
leaq 0x18958(%rip), %rdx     # 0x9025e
callq 0x2fdd8
movq 0x30(%rsp), %rcx
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0xa5d0
movq 0xb0(%rsp), %rdx
cmpq 0x30(%rsp), %rdx
jne 0x7794f
testq %rdx, %rdx
je 0x77953
movq 0x28(%rsp), %rsi
movq 0xa8(%rsp), %rdi
callq 0xa5c0
testl %eax, %eax
sete %bl
jmp 0x77955
xorl %ebx, %ebx
jmp 0x77955
movb $0x1, %bl
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77972
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x7798e
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xa5a0
testb %bl, %bl
je 0x779d6
leaq 0x220(%rsp), %rdi
movq %r14, %rsi
callq 0xa320
leaq 0x8(%rsp), %rbx
leaq 0x4f0(%rsp), %rdi
leaq 0x220(%rsp), %rsi
movl $0x3d, %edx
callq 0x394d9
movq 0x4f0(%rsp), %rdi
leaq 0x500(%rsp), %rcx
jmp 0x77bd8
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x18873(%rip), %rsi     # 0x9025f
leaq 0x18874(%rip), %rdx     # 0x90267
callq 0x2fdd8
movq 0x30(%rsp), %rcx
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0xa5d0
movq 0xb0(%rsp), %rdx
cmpq 0x30(%rsp), %rdx
jne 0x77a3c
testq %rdx, %rdx
je 0x77a40
movq 0x28(%rsp), %rsi
movq 0xa8(%rsp), %rdi
callq 0xa5c0
testl %eax, %eax
sete %bl
jmp 0x77a42
xorl %ebx, %ebx
jmp 0x77a42
movb $0x1, %bl
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77a5f
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x77a7b
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xa5a0
testb %bl, %bl
je 0x77ac3
leaq 0x240(%rsp), %rdi
movq %r14, %rsi
callq 0xa320
leaq 0x8(%rsp), %rbx
leaq 0x4d0(%rsp), %rdi
leaq 0x240(%rsp), %rsi
movl $0x3d, %edx
callq 0x394d9
movq 0x4d0(%rsp), %rdi
leaq 0x4e0(%rsp), %rcx
jmp 0x77bd8
cmpl $0x3, 0x4(%rsp)
jne 0x77b42
leaq 0x2a8(%rsp), %rax
movq %rax, 0x298(%rsp)
leaq 0x298(%rsp), %rdi
leaq 0x13cba(%rip), %rsi     # 0x8b7a3
leaq 0x13cbd(%rip), %rdx     # 0x8b7ad
callq 0x2fdd8
movq 0x2a0(%rsp), %rcx
leaq 0xa8(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0xa5d0
movq 0xb0(%rsp), %rdx
cmpq 0x2a0(%rsp), %rdx
jne 0x77b46
testq %rdx, %rdx
je 0x77b4a
movq 0x298(%rsp), %rsi
movq 0xa8(%rsp), %rdi
callq 0xa5c0
testl %eax, %eax
sete %bl
jmp 0x77b4c
xorl %ebx, %ebx
jmp 0x77b69
xorl %ebx, %ebx
jmp 0x77b4c
movb $0x1, %bl
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77b69
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
cmpl $0x3, 0x4(%rsp)
jne 0x77b95
movq 0x298(%rsp), %rdi
leaq 0x2a8(%rsp), %rax
cmpq %rax, %rdi
je 0x77b95
movq 0x2a8(%rsp), %rsi
incq %rsi
callq 0xa5a0
testb %bl, %bl
leaq 0x8(%rsp), %rbx
je 0x77beb
leaq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0xa320
leaq 0x4b0(%rsp), %rdi
leaq 0x88(%rsp), %rsi
movl $0x3d, %edx
callq 0x394d9
movq 0x4b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rcx
movq %rcx, %rax
cmpq %rcx, %rdi
je 0x77beb
movq (%rax), %rsi
incq %rsi
callq 0xa5a0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x77c07
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xa5a0
cmpq $0x0, 0x10(%rsp)
jne 0x77811
movq %r12, 0xa8(%rsp)
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x14d9b(%rip), %rsi     # 0x8c9c8
leaq 0x14d95(%rip), %rdx     # 0x8c9c9
callq 0x2fdd8
leaq 0x1f8(%rsp), %rdi
movq %rbx, %rsi
callq 0x37380
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77c66
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq %r12, 0xa8(%rsp)
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x14d48(%rip), %rsi     # 0x8c9c8
leaq 0x14d42(%rip), %rdx     # 0x8c9c9
callq 0x2fdd8
leaq 0x1f8(%rsp), %rdi
movq %rbx, %rsi
callq 0x3740f
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77cb9
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
cmpq $0x0, 0x200(%rsp)
je 0x77d92
movl 0x4(%rsp), %eax
cmpl $0x3, %eax
je 0x77dc4
cmpl $0x1, %eax
jne 0x77f2c
movq %r12, 0xa8(%rsp)
leaq 0xa8(%rsp), %rdi
leaq 0x14d60(%rip), %rsi     # 0x8ca55
leaq 0x14d5a(%rip), %rdx     # 0x8ca56
callq 0x2fdd8
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rcx
leaq 0x1f8(%rsp), %rdi
xorl %edx, %edx
callq 0xa9e0
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77d40
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
cmpq $-0x1, %rbx
je 0x77f2c
leaq 0x490(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
movl $0x3a, %edx
callq 0x394d9
movq 0x490(%rsp), %rdi
leaq 0x4a0(%rsp), %rax
cmpq %rax, %rdi
je 0x77f2c
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x77f2c
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x77db7
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x798(%rsp), %r15
jmp 0x781fc
cmpq $0x0, 0x90(%rsp)
je 0x77e25
leaq 0xa8(%rsp), %rdi
leaq 0x1377b(%rip), %rsi     # 0x8b559
leaq 0x88(%rsp), %rdx
callq 0x2bfaf
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
leaq 0x1f8(%rsp), %rdi
callq 0xa190
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77e25
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x78(%rsp), %rax
movq %rax, 0x68(%rsp)
movq %r14, %rdi
leaq 0x1842f(%rip), %rsi     # 0x90268
leaq 0x1842d(%rip), %rdx     # 0x9026d
callq 0x2fdd8
movq 0x70(%rsp), %rcx
leaq 0xa8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
xorl %edx, %edx
callq 0xa5d0
movq 0xb0(%rsp), %rdx
cmpq 0x70(%rsp), %rdx
jne 0x77ed8
testq %rdx, %rdx
je 0x77edc
movq 0x68(%rsp), %rsi
movq 0xa8(%rsp), %rdi
callq 0xa5c0
testl %eax, %eax
sete %bl
jmp 0x77ede
movl $0x5, %r8d
movq 0x1a0(%rsp), %rdx
leaq 0x1839e(%rip), %rcx     # 0x9023e
jmp 0x77740
orb 0x268(%rsp), %r12b
leaq 0x14231(%rip), %rcx     # 0x8c0e5
leaq 0x18379(%rip), %rax     # 0x90234
cmovneq %rax, %rcx
movq 0x1a0(%rsp), %rdx
movzbl %r12b, %eax
leaq (%rax,%rax,4), %r8
addq $0x4, %r8
jmp 0x77740
xorl %ebx, %ebx
jmp 0x77ede
movb $0x1, %bl
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x77efb
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x77f17
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xa5a0
testb %bl, %bl
je 0x77f2c
movl $0x5, %edx
leaq 0x48(%rsp), %rdi
xorl %esi, %esi
callq 0xa100
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x77f51
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xa5a0
movl $0x0, (%r15)
cmpq $0x0, 0x200(%rsp)
movl 0x4(%rsp), %ebx
je 0x78791
leaq 0x88(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x7a1e3
movq %r14, %rdi
leaq 0x220(%rsp), %rsi
callq 0x7a1e3
leaq 0x28(%rsp), %rdi
leaq 0x240(%rsp), %rsi
callq 0x7a1e3
cmpl $0x4, %ebx
jne 0x77fc8
leaq 0x88(%rsp), %rdi
xorl %esi, %esi
callq 0x7a22c
movzbl 0x26c(%rsp), %esi
leaq 0x48(%rsp), %rdi
callq 0x7a22c
movl $0x0, (%r15)
cmpq $0x0, 0x90(%rsp)
je 0x786ef
movl %ebp, %r14d
movl 0x790(%rsp), %ebx
movq 0x218(%rsp), %r15
movq 0x260(%rsp), %r12
leaq 0x398(%rsp), %rdi
leaq 0x13e9e(%rip), %rsi     # 0x8bea5
callq 0xa160
movl %eax, %r13d
leaq 0x328(%rsp), %rax
movq %rax, 0x318(%rsp)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
addq %rsi, %rdx
leaq 0x318(%rsp), %rdi
callq 0x2c652
leaq 0x388(%rsp), %rax
movq %rax, 0x378(%rsp)
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
addq %rsi, %rdx
leaq 0x378(%rsp), %rbp
movq %rbp, %rdi
callq 0x2c652
xorl %r9d, %r9d
testl %r13d, %r13d
sete %r9b
movzbl %r14b, %eax
leaq 0xa8(%rsp), %rdi
movq %rbx, %rsi
leaq 0x48(%rsp), %rdx
movq %r15, %rcx
movq %r12, %r8
pushq %rbp
leaq 0x320(%rsp), %r10
pushq %r10
pushq $0x0
pushq %rax
callq 0x76274
addq $0x20, %rsp
movq 0x378(%rsp), %rdi
leaq 0x388(%rsp), %rax
cmpq %rax, %rdi
leaq 0x18(%rsp), %r13
leaq 0xb8(%rsp), %r12
leaq 0x798(%rsp), %r15
leaq 0x68(%rsp), %r14
je 0x780e0
movq 0x388(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x318(%rsp), %rdi
leaq 0x328(%rsp), %rax
cmpq %rax, %rdi
je 0x78105
movq 0x328(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x290(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x7db1e
cmpb $0x0, 0x30(%rax)
jne 0x78130
movq %rax, %rdi
leaq 0xa8(%rsp), %rsi
callq 0x7e3f4
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x78155
movq 0x128(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x7817a
movq 0x108(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x7819f
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x781bb
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x781d7
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x781fc
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0x78221
movq 0x250(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x78246
movq 0x230(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x7826b
movq 0x208(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x78290
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x782a7
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x782cc
movq 0x420(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x398(%rsp), %rdi
leaq 0x3a8(%rsp), %rax
cmpq %rax, %rdi
leaq 0x8(%rsp), %rbp
je 0x782f6
movq 0x3a8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x7831b
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x78340
movq 0x168(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x78365
movq 0x188(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x7838a
movq 0x148(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x783af
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x76fb6
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x76fb6
leaq 0x361fd(%rip), %rax     # 0xae5d8
movq %rax, 0x530(%rsp)
movq 0x7b8(%rsp), %rdi
leaq 0x7c8(%rsp), %rax
cmpq %rax, %rdi
je 0x78408
movq 0x7c8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x798(%rsp), %rdi
leaq 0x7a8(%rsp), %rax
cmpq %rax, %rdi
je 0x7842d
movq 0x7a8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x3625c(%rip), %rax     # 0xae690
leaq 0x750(%rsp), %rbx
movq %rax, -0x220(%rbx)
movq %rbx, %rdi
callq 0x43b9a
leaq 0x3629e(%rip), %rax     # 0xae6f0
movq %rax, -0x218(%rbx)
leaq 0x638(%rsp), %rbx
leaq 0x362b0(%rip), %rax     # 0xae718
movq %rax, (%rbx)
leaq 0x548(%rsp), %r14
movq %r14, %rdi
callq 0xa4b0
leaq 0x362be(%rip), %rax     # 0xae740
movq %rax, -0x10(%r14)
leaq 0x362db(%rip), %rax     # 0xae768
movq %rax, (%rbx)
movq $0x0, -0x8(%r14)
movq %rbx, %rdi
callq 0xa1c0
addq $0x7d8, %rsp            # imm = 0x7D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x198(%rsp), %rdi
movl %ebx, %esi
callq 0x2d60a
leaq 0x17c47(%rip), %rsi     # 0x9011c
leaq 0xa8(%rsp), %rdi
leaq 0x198(%rsp), %rdx
callq 0x2c037
movb $0x1, %bpl
leaq 0xa8(%rsp), %rsi
movq %r14, %rdi
callq 0xa930
xorl %ebp, %ebp
movq 0x37ae2(%rip), %rsi     # 0xaffe8
movq 0x37a53(%rip), %rdx     # 0xaff60
movq %r14, %rdi
callq 0xa9b0
jmp 0x7a08e
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x17bd3(%rip), %rsi     # 0x90101
movq %rax, %rdi
callq 0xa230
jmp 0x78554
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x17b92(%rip), %rsi     # 0x900de
movq %rax, %rdi
callq 0xa230
movq 0x37a8d(%rip), %rsi     # 0xaffe8
movq 0x379fe(%rip), %rdx     # 0xaff60
movq %r14, %rdi
callq 0xa9b0
callq 0xa6b0
testl %eax, %eax
jne 0x7882f
leaq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
movq %rax, (%rdi)
leaq 0x179a5(%rip), %rsi     # 0x8ff36
leaq 0x179ae(%rip), %rdx     # 0x8ff46
callq 0x2fdd8
leaq 0x68(%rsp), %rdi
movl $0x11a, %esi            # imm = 0x11A
callq 0x2d60a
leaq 0x240(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x2d562
leaq 0x12618(%rip), %rsi     # 0x8abe5
leaq 0x240(%rsp), %rdi
callq 0xaac0
leaq 0x230(%rsp), %rcx
movq %rcx, 0x220(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x789c1
movups (%rcx), %xmm0
leaq 0x230(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x789d4
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x17b31(%rip), %rsi     # 0x90155
movq %rax, %rdi
callq 0xa230
jmp 0x786a7
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x17b5f(%rip), %rsi     # 0x901a1
movq %rax, %rdi
callq 0xa230
jmp 0x786d9
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x17b2a(%rip), %rsi     # 0x9018d
movq %rax, %rdi
callq 0xa230
jmp 0x786d9
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x17afb(%rip), %rsi     # 0x9017c
movq %rax, %rdi
callq 0xa230
jmp 0x786d9
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x17ac8(%rip), %rsi     # 0x90167
movq %rax, %rdi
callq 0xa230
movq 0x3793a(%rip), %rsi     # 0xaffe8
movq 0x378ab(%rip), %rdx     # 0xaff60
movq %r14, %rdi
callq 0xa9b0
movl $0x10, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x17af2(%rip), %rsi     # 0x901c3
movq %rax, %rdi
callq 0xa230
movq 0x37908(%rip), %rsi     # 0xaffe8
movq 0x37879(%rip), %rdx     # 0xaff60
movq %r14, %rdi
callq 0xa9b0
callq 0xa6b0
testl %eax, %eax
jne 0x7886b
leaq 0x348(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x17827(%rip), %rsi     # 0x8ff36
leaq 0x17830(%rip), %rdx     # 0x8ff46
leaq 0x338(%rsp), %rdi
callq 0x2fdd8
leaq 0x470(%rsp), %rdi
movl $0x156, %esi            # imm = 0x156
callq 0x2d60a
leaq 0x358(%rsp), %rdi
leaq 0x338(%rsp), %rsi
leaq 0x470(%rsp), %rdx
callq 0x2d562
leaq 0x1248c(%rip), %rsi     # 0x8abe5
leaq 0x358(%rsp), %rdi
callq 0xaac0
leaq 0x2c8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78a57
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x78a6a
callq 0xa6b0
testl %eax, %eax
jne 0x78870
leaq 0x280(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x17785(%rip), %rsi     # 0x8ff36
leaq 0x1778e(%rip), %rdx     # 0x8ff46
leaq 0x270(%rsp), %rdi
callq 0x2fdd8
leaq 0x2b8(%rsp), %rdi
movl $0x14b, %esi            # imm = 0x14B
callq 0x2d60a
leaq 0x28(%rsp), %rdi
leaq 0x270(%rsp), %rsi
leaq 0x2b8(%rsp), %rdx
callq 0x2d562
leaq 0x123ed(%rip), %rsi     # 0x8abe5
leaq 0x28(%rsp), %rdi
callq 0xaac0
leaq 0x78(%rsp), %rcx
movq %rcx, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78aeb
movups (%rcx), %xmm0
leaq 0x78(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x78af8
jmp 0x789b7
movl $0x10, %edi
callq 0xa2c0
movq %rax, %rbx
leaq 0x1787a(%rip), %rsi     # 0x900c2
movq %rax, %rdi
callq 0xa230
movq 0x37791(%rip), %rsi     # 0xaffe8
movq 0x37702(%rip), %rdx     # 0xaff60
movq %rbx, %rdi
callq 0xa9b0
jmp 0x7a08e
jmp 0x789b7
jmp 0x789b7
callq 0xa6b0
testl %eax, %eax
jne 0x789b3
leaq 0x148(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x176a1(%rip), %rsi     # 0x8ff36
leaq 0x176aa(%rip), %rdx     # 0x8ff46
leaq 0x138(%rsp), %rdi
callq 0x2fdd8
leaq 0x178(%rsp), %rdi
movl $0xb1, %esi
callq 0x2d60a
leaq 0x1b8(%rsp), %rdi
leaq 0x138(%rsp), %rsi
leaq 0x178(%rsp), %rdx
callq 0x2d562
leaq 0x12306(%rip), %rsi     # 0x8abe5
leaq 0x1b8(%rsp), %rdi
callq 0xaac0
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78bff
movups (%rcx), %xmm0
movups %xmm0, (%r14)
jmp 0x78c0c
callq 0xa6b0
testl %eax, %eax
jne 0x789b5
leaq 0x148(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x17602(%rip), %rsi     # 0x8ff36
leaq 0x1760b(%rip), %rdx     # 0x8ff46
leaq 0x138(%rsp), %rdi
callq 0x2fdd8
leaq 0x178(%rsp), %rdi
movl $0xaf, %esi
callq 0x2d60a
leaq 0x1b8(%rsp), %rdi
leaq 0x138(%rsp), %rsi
leaq 0x178(%rsp), %rdx
callq 0x2d562
leaq 0x12267(%rip), %rsi     # 0x8abe5
leaq 0x1b8(%rsp), %rdi
callq 0xaac0
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78daa
movups (%rcx), %xmm0
movups %xmm0, (%r14)
jmp 0x78db7
jmp 0x789b7
jmp 0x789b7
movl $0x1, %edi
callq 0xa6c0
movq %rdx, 0x220(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x230(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x228(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x280(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x17613(%rip), %rsi     # 0x90015
leaq 0x17647(%rip), %rdx     # 0x90050
leaq 0x270(%rsp), %rdi
callq 0x2fdd8
leaq 0x13f16(%rip), %rsi     # 0x8c933
leaq 0x270(%rsp), %rdi
callq 0xaac0
leaq 0x38(%rsp), %rcx
movq %rcx, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78b77
movups (%rcx), %xmm0
leaq 0x38(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x78b84
movq %rdx, 0x2b8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c8(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x2c0(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x460(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x1757d(%rip), %rsi     # 0x90015
leaq 0x175b1(%rip), %rdx     # 0x90050
leaq 0x450(%rsp), %rdi
callq 0x2fdd8
leaq 0x13e80(%rip), %rsi     # 0x8c933
leaq 0x450(%rsp), %rdi
callq 0xaac0
leaq 0x440(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78c8b
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
jmp 0x78c9e
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x70(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x348(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x174f2(%rip), %rsi     # 0x90015
leaq 0x17526(%rip), %rdx     # 0x90050
leaq 0x338(%rsp), %rdi
callq 0x2fdd8
leaq 0x13df5(%rip), %rsi     # 0x8c933
leaq 0x338(%rsp), %rdi
callq 0xaac0
leaq 0x368(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78d1c
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x78d2f
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
movq 0x8(%rax), %rsi
leaq 0x28(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1f8(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x2d562
leaq 0x17688(%rip), %rsi     # 0x90244
leaq 0x1f8(%rsp), %rdi
callq 0xaac0
leaq 0xb8(%rsp), %rcx
movq %rcx, 0xa8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78e36
movups (%rcx), %xmm0
leaq 0xb8(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x78e49
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1e8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x173de(%rip), %rsi     # 0x90015
leaq 0x17412(%rip), %rdx     # 0x90050
leaq 0x1d8(%rsp), %rdi
callq 0x2fdd8
leaq 0x13ce1(%rip), %rsi     # 0x8c933
leaq 0x1d8(%rsp), %rdi
callq 0xaac0
leaq 0x168(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78ef9
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x78f0c
movq %rdx, 0x430(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x440(%rsp)
movq 0x8(%rax), %rsi
leaq 0x430(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x270(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x2d562
leaq 0x175a7(%rip), %rsi     # 0x90280
leaq 0x270(%rsp), %rdi
callq 0xaac0
leaq 0xb8(%rsp), %rcx
movq %rcx, 0xa8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78f7c
movups (%rcx), %xmm0
leaq 0xb8(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x78f8f
movq %rdx, 0x358(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x368(%rsp)
movq 0x8(%rax), %rsi
leaq 0x358(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x2d562
leaq 0x17507(%rip), %rsi     # 0x9026e
leaq 0x88(%rsp), %rdi
callq 0xaac0
leaq 0xb8(%rsp), %rcx
movq %rcx, 0xa8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78fb3
movups (%rcx), %xmm0
leaq 0xb8(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x78fc6
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1e8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x17233(%rip), %rsi     # 0x90015
leaq 0x17267(%rip), %rdx     # 0x90050
leaq 0x1d8(%rsp), %rdi
callq 0x2fdd8
leaq 0x13b36(%rip), %rsi     # 0x8c933
leaq 0x1d8(%rsp), %rdi
callq 0xaac0
leaq 0x168(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x78fea
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x78ffd
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
movq 0x8(%rax), %rdx
leaq 0xa8(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x3523b
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1e8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x17170(%rip), %rsi     # 0x90015
leaq 0x171a4(%rip), %rdx     # 0x90050
leaq 0x1d8(%rsp), %rdi
callq 0x2fdd8
leaq 0x13a73(%rip), %rsi     # 0x8c933
leaq 0x1d8(%rsp), %rdi
callq 0xaac0
leaq 0x168(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x7906d
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x79080
movq %rdx, 0x158(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x168(%rsp)
movq 0x8(%rax), %rsi
leaq 0x158(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xa8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x2d562
leaq 0x17169(%rip), %rsi     # 0x900ad
leaq 0xa8(%rsp), %rdi
callq 0xaac0
leaq 0x540(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x790ec
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
jmp 0x790ff
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
movq 0x8(%rax), %rdx
leaq 0xa8(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x3523b
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
movq 0x8(%rax), %rdx
leaq 0xa8(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x3523b
movq %rdx, 0x158(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x168(%rsp)
movq 0x8(%rax), %rsi
leaq 0x158(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xa8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x2d562
leaq 0x1706e(%rip), %rsi     # 0x900a3
leaq 0xa8(%rsp), %rdi
callq 0xaac0
leaq 0x540(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x79123
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
jmp 0x79136
movq %rdx, 0x158(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x168(%rsp)
movq 0x8(%rax), %rsi
leaq 0x158(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xa8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x2d562
leaq 0x16f99(%rip), %rsi     # 0x90051
leaq 0xa8(%rsp), %rdi
callq 0xaac0
leaq 0x540(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x7915a
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
jmp 0x7916d
movq %rdx, 0x530(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x540(%rsp)
movq 0x8(%rax), %rdx
leaq 0x530(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x3523b
movq %rdx, 0x530(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x540(%rsp)
movq 0x8(%rax), %rdx
leaq 0x530(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x3523b
movq %rdx, 0x530(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x540(%rsp)
movq 0x8(%rax), %rdx
leaq 0x530(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x3523b
jmp 0x7919b
jmp 0x791bd
jmp 0x791ea
jmp 0x7919b
jmp 0x791bd
movq %rax, %r12
movq 0x530(%rsp), %rdi
cmpq %rbp, %rdi
je 0x791c0
movq 0x540(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x791c0
movq %rax, %r12
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x791ed
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x791ed
jmp 0x792db
jmp 0x791ea
movq %rax, %r12
movq 0x158(%rsp), %rdi
cmpq %r13, %rdi
je 0x792de
movq 0x168(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x792de
jmp 0x793c4
jmp 0x792db
movq %rdx, %rbx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x79250
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79250
movq %rdx, %rbx
movq %rax, %r12
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x79372
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79372
movq %rdx, %rbx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x792b1
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x792b1
movq %rdx, %rbx
movq %rax, %r12
leaq 0x280(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7939e
movq 0x280(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7939e
movq %rax, %r12
movq 0x1d8(%rsp), %rdi
cmpq %r15, %rdi
je 0x793c7
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x793c7
jmp 0x79471
movq %rdx, %rbx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x7933c
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7933c
movq %rdx, %rbx
movq %rax, %r12
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x793f2
movq 0x208(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x793f2
jmp 0x793c4
movq %rdx, %rbx
movq %rax, %r12
movq 0x358(%rsp), %rdi
cmpq %r13, %rdi
je 0x7941f
movq 0x368(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7941f
movq %rdx, %rbx
movq %rax, %r12
movq 0x430(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7944b
movq 0x440(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7944b
movq %rax, %r12
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x79474
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79474
jmp 0x79528
movq %rdx, %rbx
movq %rax, %r12
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x794a9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x794a9
jmp 0x79471
movq %rdx, %rbx
movq %rax, %r12
movq 0x338(%rsp), %rdi
cmpq %r15, %rdi
je 0x794d7
movq 0x348(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x794d7
movq %rdx, %rbx
movq %rax, %r12
movq 0x450(%rsp), %rdi
cmpq %r13, %rdi
je 0x79502
movq 0x460(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79502
movq %rax, %r12
leaq 0x1c8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7952b
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7952b
jmp 0x795eb
movq %rdx, %rbx
movq %rax, %r12
movq 0x270(%rsp), %rdi
cmpq %r14, %rdi
je 0x79560
movq 0x280(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79560
jmp 0x79528
movq %rdx, %rbx
movq %rax, %r12
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x79596
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79596
movq %rdx, %rbx
movq %rax, %r12
movq 0x2b8(%rsp), %rdi
cmpq %r15, %rdi
je 0x795c1
movq 0x2c8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x795c1
movq %rax, %r12
leaq 0x188(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x795ee
movq 0x188(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x795ee
jmp 0x79821
movq %rdx, %rbx
movq %rax, %r12
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x7961a
movq 0x230(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7961a
jmp 0x795eb
movq %rdx, %rbx
movq %rax, %r12
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x79653
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79653
movq %rdx, %rbx
movq %rax, %r12
leaq 0x368(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x79683
movq 0x368(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79683
movq %rax, %r12
movq 0x138(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7a1b5
movq 0x148(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7a1b5
movq %rdx, %rbx
movq %rax, %r12
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0x796ec
movq 0x250(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x796ec
jmp 0x79821
movq %rdx, %rbx
movq %rax, %r12
leaq 0x2c8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x79710
movq 0x2c8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79710
movq %rdx, %rbx
movq %rax, %r12
leaq 0x480(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x79734
movq 0x480(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79734
jmp 0x79821
movq %rdx, %rbx
movq %rax, %r12
movq 0x2d8(%rsp), %rdi
leaq 0x2e8(%rsp), %rax
cmpq %rax, %rdi
je 0x79796
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79796
movq %rdx, %rbx
movq %rax, %r12
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x79758
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79758
movq %rdx, %rbx
movq %rax, %r12
movq 0x270(%rsp), %rdi
cmpq %r14, %rdi
je 0x79964
movq 0x280(%rsp), %rsi
jmp 0x7995c
movq %rdx, %rbx
movq %rax, %r12
movq 0x338(%rsp), %rdi
cmpq %r14, %rdi
je 0x79907
movq 0x348(%rsp), %rsi
jmp 0x798c8
movq %rdx, %rbx
movq %rax, %r12
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x79812
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79812
jmp 0x799a5
jmp 0x799cd
movq %rdx, %rbx
movq %rax, %r12
movq 0x2f8(%rsp), %rdi
cmpq 0x3b8(%rsp), %rdi
je 0x79831
movq 0x308(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79831
jmp 0x798ec
jmp 0x798d4
jmp 0x79821
movq %rax, %r12
movq %rbx, %rdi
callq 0xa440
jmp 0x7a1b5
movq %rdx, %rbx
movq %rax, %r12
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x799d3
movq 0x78(%rsp), %rsi
jmp 0x799c3
jmp 0x799cd
jmp 0x79c76
jmp 0x79c76
movq %rdx, %rbx
movq %rax, %r12
leaq 0x18(%rsp), %r13
jmp 0x79d53
jmp 0x79970
movq %rax, %r12
jmp 0x7a1b5
jmp 0x7982b
movq %rdx, %rbx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x79aba
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79aba
jmp 0x79970
jmp 0x79970
jmp 0x79970
jmp 0x79970
jmp 0x79970
movq %rdx, %rbx
movq %rax, %r12
movq 0x378(%rsp), %rdi
leaq 0x388(%rsp), %rax
cmpq %rax, %rdi
je 0x798ab
movq 0x388(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x798ab
movq %rdx, %rbx
movq %rax, %r12
movq 0x318(%rsp), %rdi
leaq 0x328(%rsp), %rax
cmpq %rax, %rdi
je 0x79907
movq 0x328(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79907
jmp 0x798d4
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79907
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79923
movq %rdx, %rbx
movq %rax, %r12
jmp 0x7993f
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79964
movq %rdx, %rbx
movq %rax, %r12
leaq 0xa8(%rsp), %rdi
callq 0x7db9a
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x79923
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x7993f
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x79964
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x18(%rsp), %r13
jmp 0x79ce4
jmp 0x79970
movq %rdx, %rbx
movq %rax, %r12
movq %r14, %rdi
callq 0xa440
jmp 0x79aba
jmp 0x799a5
jmp 0x799cd
jmp 0x79bc9
jmp 0x79ab4
jmp 0x79ab4
jmp 0x79ab4
jmp 0x79bc9
jmp 0x79bc9
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x799d3
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x799d3
movq %rdx, %rbx
movq %rax, %r12
leaq 0x18(%rsp), %r13
jmp 0x79cbf
movq %rdx, %rbx
movq %rax, %r12
movq 0x298(%rsp), %rdi
leaq 0x2a8(%rsp), %rax
cmpq %rax, %rdi
je 0x79c02
movq 0x2a8(%rsp), %rsi
jmp 0x79bf2
jmp 0x79bfc
jmp 0x79ab4
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79d53
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79dfe
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x79e23
movq 0xb8(%rsp), %rsi
jmp 0x79e1b
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79e23
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x79e48
movq 0xb8(%rsp), %rsi
jmp 0x79e40
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79e48
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x79e6d
movq 0xb8(%rsp), %rsi
jmp 0x79e65
movq %rdx, %rbx
movq %rax, %r12
leaq 0x18(%rsp), %r13
jmp 0x79d78
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79e6d
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x79e92
movq 0xb8(%rsp), %rsi
jmp 0x79e8a
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79e92
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x79eae
movq 0xb8(%rsp), %rsi
jmp 0x79ea6
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79d8f
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79eae
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x79db4
movq 0xb8(%rsp), %rsi
jmp 0x79dac
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79db4
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x79dd9
movq 0xb8(%rsp), %rsi
jmp 0x79dd1
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79dd9
movq %rdx, %rbx
movq %r12, %rcx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x79dfe
movq 0xb8(%rsp), %rsi
jmp 0x79df6
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79d78
jmp 0x79bd8
jmp 0x79bfc
movq %rdx, %rbx
movq %rax, %r12
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x79c02
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79c02
movq %rdx, %rbx
movq %rax, %r12
leaq 0x18(%rsp), %r13
jmp 0x79ca3
movq %rdx, %rbx
movq %rax, %r12
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x79c42
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x79c42
movq %rdx, %rbx
movq %rax, %r12
movb $0x1, %bpl
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x79c67
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0xa5a0
leaq 0x18(%rsp), %r13
jmp 0x79c87
movq %rax, %r12
jmp 0x7a1a8
movq %rdx, %rbx
movq %rax, %r12
jmp 0x79cbf
movq %rdx, %rbx
movq %rax, %r12
movb $0x1, %bpl
testb %bpl, %bpl
je 0x79d78
movq %r14, %rdi
callq 0xa440
jmp 0x79d78
movq %rdx, %rbx
movq %rax, %r12
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x79cbf
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x79ce4
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0x79d09
movq 0x250(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x79d2e
movq 0x230(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x79d53
movq 0x208(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x79d78
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x79d8f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x79db4
movq 0x420(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x398(%rsp), %rdi
leaq 0x3a8(%rsp), %rax
cmpq %rax, %rdi
je 0x79dd9
movq 0x3a8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x79dfe
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x79e23
movq 0x168(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x79e48
movq 0x188(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x79e6d
movq 0x148(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x79e92
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0xa5a0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x79eae
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xa5a0
cmpl $0x1, %ebx
jne 0x7a1a8
movq %r12, %rdi
callq 0xa240
movq %rax, %r14
movl $0x10, %edi
callq 0xa2c0
movq %rax, %rbx
leaq 0x163bb(%rip), %rsi     # 0x90291
leaq 0x158(%rsp), %rdi
movq 0x3c0(%rsp), %rdx
callq 0x2bfaf
leaq 0x10329(%rip), %rsi     # 0x8a21b
leaq 0x158(%rsp), %rdi
callq 0xaac0
leaq 0x188(%rsp), %rcx
movq %rcx, 0x178(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x79f2e
movups (%rcx), %xmm0
leaq 0x188(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x79f41
movq %rdx, 0x178(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x188(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x180(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1d8(%rsp), %rdi
leaq 0x530(%rsp), %rsi
movl $0x1, %edx
callq 0x7dbec
leaq 0x138(%rsp), %rdi
leaq 0x178(%rsp), %rsi
leaq 0x1d8(%rsp), %rdx
callq 0x2d562
leaq 0x1296b(%rip), %rsi     # 0x8c905
leaq 0x138(%rsp), %rdi
callq 0xaac0
leaq 0x1c8(%rsp), %rcx
movq %rcx, 0x1b8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x79fd6
movups (%rcx), %xmm0
leaq 0x1c8(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x79fe9
movq %rdx, 0x1b8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1c8(%rsp)
movq 0x8(%rax), %rdx
leaq 0x1b8(%rsp), %r15
movq %rdx, 0x8(%r15)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movq %r15, %rdi
movq %rax, %rsi
callq 0xaac0
leaq 0x58(%rsp), %rcx
movq %rcx, 0x48(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x7a042
movups (%rcx), %xmm0
leaq 0x58(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x7a04f
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
leaq 0x48(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %rbx, %rdi
callq 0xa930
xorl %ebp, %ebp
movq 0x35f69(%rip), %rsi     # 0xaffe8
movq 0x35eda(%rip), %rdx     # 0xaff60
movq %rbx, %rdi
callq 0xa9b0
movq %rax, %r12
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x7a0b5
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7a0b5
movq %rax, %r12
movb $0x1, %bpl
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x7a0e2
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7a0e2
movq %rax, %r12
movb $0x1, %bpl
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x7a10f
movq 0x148(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7a10f
movq %rax, %r12
movb $0x1, %bpl
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x7a13c
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7a13c
movq %rax, %r12
movb $0x1, %bpl
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x7a169
movq 0x188(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7a169
movq %rax, %r12
movb $0x1, %bpl
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x7a196
movq 0x168(%rsp), %rsi
incq %rsi
callq 0xa5a0
jmp 0x7a196
movq %rax, %r12
movb $0x1, %bpl
testb %bpl, %bpl
je 0x7a1a3
movq %rbx, %rdi
callq 0xa440
callq 0xa960
leaq 0x530(%rsp), %rdi
callq 0x2e31c
movq 0x3c8(%rsp), %rdi
addq $0x38, %rdi
callq 0x2c75c
movq 0x290(%rsp), %rdi
callq 0x7dd54
movq %r12, %rdi
callq 0xaa10
movq %rax, %rdi
callq 0x2c6e2