// File: /workspace/github_cpp_makefile_star2_O2/ncbi[P]amr/gff_check.cpp
// Function: (anonymous namespace)::ThisApplication::body() const
void body () const final
  {
    const string    gffName        = getArg ("gff");
    const Gff::Type type           = Gff::name2type (getArg ("gfftype"));
    const string    protFName      = getArg ("prot");
    const string    dnaFName       = getArg ("dna");
    const string    protMatchFName = getArg ("gff_prot_match");
    const string    dnaMatchFName  = getArg ("gff_dna_match");
    const bool      lcl            = getFlag ("lcl"); 
    
    if (lcl && type != Gff::pgap)
      throw runtime_error ("-lcl requires type pgap");
    
    
    if (isRight (gffName, noFile))
    	return;
    

    const Annot annot (gffName, type, ! protMatchFName. empty (), lcl);
    
    
    if (! protFName. empty ())
    {
	    StringVector gffIds;  gffIds. reserve (10000);  // PAR
    	{
	    	OFStream outF;
	    	if (! protMatchFName. empty ())
	    		outF. open ("", protMatchFName, "");
	    	StringVector fastaIds;  fastaIds. reserve (gffIds. capacity ());
			  LineInput f (protFName /*, 100 * 1024, 1*/);
    		Istringstream iss;
    		string line_orig;
     		string fastaId;
			  while (f. nextLine ())
			  {
          trimTrailing (f. line);
			    if (f. line. empty ())
			      continue;
		    	if (f. line [0] != '>')
		    	  continue;
	    		line_orig = f. line;
	    		iss. reset (f. line. substr (1));
	    		fastaId. clear ();
    		  iss >> fastaId;
    		  QC_ASSERT (! fastaId. empty ());
	    		ASSERT (! contains (fastaId, ' '));
    			fastaIds << fastaId;
    		  // gffId
    			string gffId (fastaId);
	    		if (! protMatchFName. empty ())
	    		  switch (type)
	    		  {
	    		    case Gff::genbank:
      	    		{
      	    			const size_t pos = f. line. find (locus_tagS);
      	    			if (pos == string::npos)
      	    				throw runtime_error (__FILE__ ": " + strQuote (locus_tagS) + " is not found in: " + line_orig);
      	    			gffId = f. line. substr (pos + locus_tagS. size ());
      	    			const size_t end = gffId. find (']');
      	    			if (end == string::npos)
      	    				throw runtime_error (__FILE__ ": ']' is not found after " + strQuote (locus_tagS) + " in: " + line_orig);
      	    		  gffId. erase (end);
      	    		}
      	    		break;
      	    	case Gff::microscope:
      	    	  {
      	    	    string s (std::move (gffId));
      	    	    findSplit (s, '|');
      	    	    gffId = findSplit (s, '|');
      	    	    const string idS ("ID:");
      	    	    if (! isLeft (gffId, idS))
      	    	      throw runtime_error (__FILE__ ": 'ID:' is not found in: " + line_orig);
      	    	    gffId. erase (0, idS. size ());
      	    	  }      	    	  
      	    	  break;
	    		    case Gff::prodigal:
      	    		{
      	    			const size_t pos = f. line. find (prodigal_ID);
      	    			if (pos == string::npos)
      	    				throw runtime_error (__FILE__ ": " + strQuote (prodigal_ID) + " is not found in: " + line_orig);
      	    			gffId = f. line. substr (pos + prodigal_ID. size ());
      	    			const size_t end = gffId. find (';');
      	    			if (end == string::npos)
      	    				throw runtime_error (__FILE__ ": ';' is not found after " + strQuote (prodigal_ID) + " in: " + line_orig);
      	    		  gffId. erase (end);
      	    		}
      	    		break;
      	      default: break;
      	    }
	    	  //
	    		if (contains (gffId, ' '))
	    			throw runtime_error (__FILE__ ": " + strQuote (gffId) + " contains space");
	    		if (gffId. empty ())
	    			throw runtime_error (__FILE__ ": No protein identifier in: " + line_orig);
    			gffIds << gffId;
    			if (outF. is_open ())
    				outF << fastaId << '\t' << gffId << endl;
			  }
			  const size_t n = fastaIds. size ();
			  fastaIds. sort ();
			  fastaIds. uniq ();
			  if (fastaIds. size () != n)
			  	throw runtime_error (__FILE__ ": Duplicate FASTA ids");
			  gffIds. sort ();
			  {
  			  const string* s_prev = nullptr;
  			  for (const string& s : gffIds)
  			  {
  			    if (s_prev && *s_prev == s)
    			  	throw runtime_error (__FILE__ ": GFF identifier " + strQuote (s) + " is not unique");
  			    s_prev = & s;
  			  }
  			}
			  ASSERT (gffIds. size () == fastaIds. size ());
			}
			if (verbose ())
			  cout << "# Proteins in GFF: " << annot. prot2loci. size () << endl;
		  for (const string& seqid : gffIds)
		  	if (! contains (annot. prot2loci, seqid))
		  		throw runtime_error (__FILE__ ": Protein FASTA id " + strQuote (seqid) + " is not in the GFF file");
    #if 0
		  for (const auto& it : annot. prot2loci)
		    if (! gffIds. containsFast (it. first))
		  		throw runtime_error (__FILE__ ": GFF protein id " + strQuote (it. first) + " is not in the protein FASTA file");  // pseudogene ??
		#endif
    }   


    if (! dnaFName. empty ())
    {
    	StringVector contigIds;  contigIds. reserve (10000);  // PAR
    	StringVector gffIds;  gffIds. reserve (10000);  // PAR
    	{
      	OFStream outF;
      	if (! dnaMatchFName. empty ())
      		outF. open ("", dnaMatchFName, "");
			  LineInput f (dnaFName /*, 100 * 1024, 1*/);
    		Istringstream iss;
    		string contigId;
			  while (f. nextLine ())
	    	{
          trimTrailing (f. line);
			    if (f. line. empty ())
			      continue;
		    	if (f. line [0] != '>')
		    	  continue;
	    		iss. reset (f. line. substr (1));
	    		contigId. clear ();
    		  iss >> contigId;
	    		ASSERT (! contains (contigId, ' '));
    		  // gffId
    			string gffId (contigId);
	    		if (! dnaMatchFName. empty ())
	    		  switch (type)
	    		  {
	    		    case Gff::pseudomonasdb:
      	    		{
      	    			const size_t pos = gffId. rfind ('|');
      	    			if (pos != string::npos)
      	    				gffId. erase (0, pos + 1);
      	    		}
      	    		break;
      	      default: break;
      	    }
      	  //
	    		if (gffId. empty ())
	    			throw runtime_error (__FILE__ ": No contig identifier in:\n" + f. line);
	    		if (lcl && ! isLeft (gffId, "lcl|"))
	    			throw runtime_error (__FILE__ ": Contig identifier does not start with " + strQuote ("lcl|") + ":\n" + f. line);
    			gffIds << gffId;
    			contigIds << contigId;
    			if (outF. is_open ())
    				outF << contigId << '\t' << gffId << endl;
	    	}
			}
			ASSERT (contigIds. size () == gffIds. size ());
		  gffIds. sort ();
		  {
			  const string* s_prev = nullptr;
			  for (const string& s : gffIds)
			  {
			    if (s_prev && *s_prev == s)
  			  	throw runtime_error (__FILE__ ": DNA GFF identifier " + strQuote (s) + " is not unique");
			    s_prev = & s;
			  }
			}
		  contigIds. sort ();
		  {
			  const string* s_prev = nullptr;
			  for (const string& s : contigIds)
			  {
			    if (s_prev && *s_prev == s)
  			  	throw runtime_error (__FILE__ ": DNA contig identifier " + strQuote (s) + " is not unique");
			    s_prev = & s;
			  }
			}
			for (const auto& it : annot. prot2loci)
			  for (const Locus& cds : it. second)
			    if (! gffIds. contains (cds. contig))
  		  		throw runtime_error (__FILE__ ": GFF contig id " + strQuote (cds. contig) + " is not in the DNA FASTA file");
    }   
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x8e8, %rsp            # imm = 0x8E8
movq %rdi, %rbx
leaq 0x34b1c(%rip), %rsi     # 0x4006d
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rdx
callq 0xd508
leaq 0x218(%rsp), %rdi
leaq 0x238(%rsp), %rdx
movq %rbx, %rsi
callq 0x24318
leaq 0x238(%rsp), %rdi
callq 0xaae8
leaq 0x34afa(%rip), %rsi     # 0x4008c
leaq 0x660(%rsp), %rdi
leaq 0x4e0(%rsp), %rdx
callq 0xd508
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rdx
movq %rbx, %rsi
callq 0x24318
leaq 0x238(%rsp), %rdi
callq 0x3b4de
movl %eax, 0x4c(%rsp)
leaq 0x238(%rsp), %rdi
callq 0xaae8
leaq 0x660(%rsp), %rdi
callq 0xaae8
leaq 0x34ac1(%rip), %rsi     # 0x400b2
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rdx
callq 0xd508
leaq 0x1f8(%rsp), %rdi
leaq 0x238(%rsp), %rdx
movq %rbx, %rsi
callq 0x24318
leaq 0x238(%rsp), %rdi
callq 0xaae8
leaq 0x34a98(%rip), %rsi     # 0x400ca
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rdx
callq 0xd508
leaq 0x1d8(%rsp), %rdi
leaq 0x238(%rsp), %rdx
movq %rbx, %rsi
callq 0x24318
leaq 0x238(%rsp), %rdi
callq 0xaae8
leaq 0x34aa0(%rip), %rsi     # 0x40113
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rdx
callq 0xd508
leaq 0x198(%rsp), %rdi
leaq 0x238(%rsp), %rdx
movq %rbx, %rsi
callq 0x24318
leaq 0x238(%rsp), %rdi
callq 0xaae8
leaq 0x34b9b(%rip), %rsi     # 0x4024f
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rdx
callq 0xd508
leaq 0x1b8(%rsp), %rdi
leaq 0x238(%rsp), %rdx
movq %rbx, %rsi
callq 0x24318
leaq 0x238(%rsp), %rdi
callq 0xaae8
leaq 0x349d9(%rip), %rsi     # 0x400ce
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rdx
callq 0xd508
leaq 0x238(%rsp), %rsi
movq %rbx, %rdi
callq 0x24424
movl %eax, %ebx
leaq 0x238(%rsp), %rdi
callq 0xaae8
cmpl $0x4, 0x4c(%rsp)
sete %al
movb %bl, 0x6(%rsp)
xorb $0x1, %bl
orb %al, %bl
je 0xc8dd
leaq 0x552e1(%rip), %rsi     # 0x60a28
leaq 0x218(%rsp), %rdi
callq 0x111d7
testb %al, %al
jne 0xc1c9
xorl %ecx, %ecx
cmpq $0x0, 0x1a0(%rsp)
setne %cl
movzbl 0x6(%rsp), %r8d
leaq 0x860(%rsp), %rdi
leaq 0x218(%rsp), %rsi
movl 0x4c(%rsp), %edx
callq 0x3b66e
cmpq $0x0, 0x200(%rsp)
je 0xbd9e
xorps %xmm0, %xmm0
leaq 0xb0(%rsp), %rdi
movups %xmm0, 0x9(%rdi)
movaps %xmm0, (%rdi)
movl $0x2710, %esi           # imm = 0x2710
callq 0xdb58
leaq 0x660(%rsp), %rdi
callq 0xdbec
cmpq $0x0, 0x1a0(%rsp)
je 0xb843
leaq 0x3760c(%rip), %rsi     # 0x42ddf
leaq 0x238(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0xd508
leaq 0x375f0(%rip), %rsi     # 0x42ddf
leaq 0x4e0(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0xd508
leaq 0x660(%rsp), %rdi
leaq 0x238(%rsp), %rsi
leaq 0x198(%rsp), %rdx
leaq 0x4e0(%rsp), %rcx
callq 0x1d3ae
leaq 0x4e0(%rsp), %rdi
callq 0xaae8
leaq 0x238(%rsp), %rdi
callq 0xaae8
xorps %xmm0, %xmm0
leaq 0xd0(%rsp), %rdi
movups %xmm0, 0x9(%rdi)
movaps %xmm0, (%rdi)
movq 0xc0(%rsp), %rsi
subq 0xb0(%rsp), %rsi
sarq $0x5, %rsi
callq 0xdb58
leaq 0x238(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
xorl %edx, %edx
callq 0xdc44
leaq 0x4e0(%rsp), %rdi
callq 0xdc9a
leaq 0x108(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
leaq 0x128(%rsp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %cl, (%rax)
movb %cl, (%rdx)
leaq 0x4a0(%rsp), %r14
leaq 0x238(%rsp), %r12
leaq 0x50(%rsp), %r15
leaq 0x118(%rsp), %r13
pushq $0x20
popq %rbp
movq %r12, %rdi
callq 0xf700
testb %al, %al
je 0xbc27
movq %r14, %rdi
callq 0x112d7
cmpq $0x0, 0x4a8(%rsp)
je 0xb8da
movq 0x4a0(%rsp), %rax
cmpb $0x3e, (%rax)
jne 0xb8da
leaq 0xf8(%rsp), %rdi
movq %r14, %rsi
callq 0xa330
movq %r15, %rdi
movq %r14, %rsi
pushq $0x1
popq %rdx
pushq $-0x1
popq %rcx
callq 0xa580
leaq 0x4e0(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xdcec
movq %r15, %rdi
callq 0xaae8
andq $0x0, 0x120(%rsp)
movq 0x118(%rsp), %rax
movb $0x0, (%rax)
movq %rbx, %rdi
movq %r13, %rsi
callq 0xa6c0
callq 0xa060
andl $0x0, (%rax)
cmpq $0x0, 0x120(%rsp)
je 0xc4a8
movq %r13, %rdi
movl %ebp, %esi
callq 0xddd7
testb %al, %al
jne 0xc57a
leaq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xdde8
movq %r15, %rdi
movq %r13, %rsi
callq 0xa740
cmpq $0x0, 0x1a0(%rsp)
je 0xbbad
movl 0x4c(%rsp), %eax
cmpl $0x1, %eax
je 0xba76
cmpl $0x2, %eax
je 0xba48
cmpl $0x5, %eax
jne 0xbbad
movq %r14, %rdi
leaq 0x5502b(%rip), %rsi     # 0x60a08
xorl %edx, %edx
callq 0xaab0
cmpq $-0x1, %rax
je 0xc912
addq 0x5501b(%rip), %rax     # 0x60a10
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
pushq $-0x1
popq %rcx
callq 0xa580
movq %r15, %rdi
movq %rbx, %rsi
callq 0xa690
movq %rbx, %rdi
callq 0xaae8
movq %r15, %rdi
pushq $0x3b
popq %rsi
xorl %edx, %edx
callq 0xa6f0
cmpq $-0x1, %rax
je 0xc9a7
movq %r15, %rdi
movq %rax, %rsi
pushq $-0x1
popq %rdx
callq 0xa0f0
jmp 0xbbad
leaq 0x18(%rsp), %rcx
movq %rcx, 0x8(%rsp)
movq 0x50(%rsp), %rax
leaq 0x60(%rsp), %rdx
cmpq %rdx, %rax
je 0xbaeb
movq %rax, 0x8(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0xbaf1
movq %r14, %rdi
leaq 0x54f68(%rip), %rsi     # 0x609e8
xorl %edx, %edx
callq 0xaab0
cmpq $-0x1, %rax
je 0xca3c
addq 0x54f58(%rip), %rax     # 0x609f0
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
pushq $-0x1
popq %rcx
callq 0xa580
movq %r15, %rdi
movq %rbx, %rsi
callq 0xa690
movq %rbx, %rdi
callq 0xaae8
movq %r15, %rdi
pushq $0x5d
popq %rsi
xorl %edx, %edx
callq 0xa6f0
cmpq $-0x1, %rax
je 0xcad1
movq %r15, %rdi
movq %rax, %rsi
pushq $-0x1
popq %rdx
callq 0xa0f0
jmp 0xbbad
movups (%rdx), %xmm0
movups %xmm0, (%rcx)
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %rdx, 0x50(%rsp)
andq $0x0, 0x58(%rsp)
movb $0x0, 0x60(%rsp)
leaq 0x8c8(%rsp), %rbp
movq %rbp, %rdi
leaq 0x8(%rsp), %rbx
movq %rbx, %rsi
pushq $0x7c
popq %r12
movl %r12d, %edx
callq 0x125dd
movq %rbp, %rdi
callq 0xaae8
leaq 0x28(%rsp), %rbp
movq %rbp, %rdi
movq %rbx, %rsi
movl %r12d, %edx
callq 0x125dd
movq %r15, %rdi
movq %rbp, %rsi
callq 0xa690
movq %rbp, %rdi
callq 0xaae8
movq %rbp, %rdi
leaq 0x34974(%rip), %rsi     # 0x404d6
leaq 0x70(%rsp), %rdx
callq 0xd508
movq %rbp, %rsi
pushq $0x20
popq %rbp
movq %r15, %rdi
callq 0xde26
leaq 0x238(%rsp), %r12
testb %al, %al
je 0xcb63
movq 0x30(%rsp), %rdx
movq %r15, %rdi
xorl %esi, %esi
callq 0xa0f0
leaq 0x28(%rsp), %rdi
callq 0xaae8
leaq 0x8(%rsp), %rdi
callq 0xaae8
movq %r15, %rdi
movl %ebp, %esi
callq 0xddd7
testb %al, %al
jne 0xc64c
cmpq $0x0, 0x58(%rsp)
je 0xc6c2
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0xdde8
leaq 0x6d0(%rsp), %rdi
callq 0xa100
testb %al, %al
je 0xbc1a
leaq 0x660(%rsp), %rdi
movq %r13, %rsi
callq 0xa4d0
movq %rax, %rdi
pushq $0x9
popq %rsi
callq 0xa620
movq %rax, %rdi
movq %r15, %rsi
callq 0xa4d0
movq %rax, %rdi
callq 0xa2d0
movq %r15, %rdi
callq 0xaae8
jmp 0xb8da
leaq 0xd0(%rsp), %rdi
movq 0x8(%rdi), %rbx
subq (%rdi), %rbx
callq 0xdedc
leaq 0xd0(%rsp), %rdi
callq 0xdef2
movq 0xd8(%rsp), %rax
subq 0xd0(%rsp), %rax
cmpq %rbx, %rax
jne 0xcbb1
leaq 0xb0(%rsp), %rdi
callq 0xdedc
movq 0xb0(%rsp), %rax
movq 0xb8(%rsp), %r14
xorl %edi, %edi
cmpq %r14, %rax
je 0xbca6
movq %rax, %rbx
testq %rdi, %rdi
je 0xbc9d
movq %rbx, %rsi
callq 0xdeff
testb %al, %al
jne 0xc328
leaq 0x20(%rbx), %rax
movq %rbx, %rdi
jmp 0xbc80
callq 0xa060
andl $0x0, (%rax)
movq 0xb8(%rsp), %rax
subq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rcx
subq 0xd0(%rsp), %rcx
cmpq %rcx, %rax
jne 0xcbe1
leaq 0x118(%rsp), %rdi
callq 0xaae8
leaq 0xf8(%rsp), %rdi
callq 0xaae8
leaq 0x4e0(%rsp), %rdi
callq 0xdf28
leaq 0x238(%rsp), %rdi
callq 0xdf46
leaq 0xd0(%rsp), %rdi
callq 0xdf76
leaq 0x660(%rsp), %rdi
callq 0xdf98
xorl %edi, %edi
callq 0x15dcf
testb %al, %al
je 0xbd5b
movq 0x54259(%rip), %rdi     # 0x5ff90
leaq 0x3489a(%rip), %rsi     # 0x405d8
callq 0xa530
movq 0x890(%rsp), %rsi
movq %rax, %rdi
callq 0xa3e0
movq %rax, %rdi
callq 0xa2d0
movq 0xb0(%rsp), %rbx
movq 0xb8(%rsp), %r15
leaq 0x868(%rsp), %r14
cmpq %r15, %rbx
je 0xbd91
movq %r14, %rdi
movq %rbx, %rsi
callq 0xdfb8
testb %al, %al
je 0xc2a2
addq $0x20, %rbx
jmp 0xbd73
leaq 0xb0(%rsp), %rdi
callq 0xdf76
cmpq $0x0, 0x1e0(%rsp)
je 0xc1bc
xorps %xmm0, %xmm0
leaq 0xb0(%rsp), %rdi
movups %xmm0, 0x9(%rdi)
movaps %xmm0, (%rdi)
movl $0x2710, %esi           # imm = 0x2710
callq 0xdb58
leaq 0xd0(%rsp), %rdi
xorps %xmm0, %xmm0
movups %xmm0, 0x9(%rdi)
movaps %xmm0, (%rdi)
movl $0x2710, %esi           # imm = 0x2710
callq 0xdb58
leaq 0x660(%rsp), %rdi
callq 0xdbec
cmpq $0x0, 0x1c0(%rsp)
je 0xbe74
leaq 0x36fdb(%rip), %rsi     # 0x42ddf
leaq 0x238(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0xd508
leaq 0x36fbf(%rip), %rsi     # 0x42ddf
leaq 0x4e0(%rsp), %rdi
leaq 0x118(%rsp), %rdx
callq 0xd508
leaq 0x660(%rsp), %rdi
leaq 0x238(%rsp), %rsi
leaq 0x1b8(%rsp), %rdx
leaq 0x4e0(%rsp), %rcx
callq 0x1d3ae
leaq 0x4e0(%rsp), %rdi
callq 0xaae8
leaq 0x238(%rsp), %rdi
callq 0xaae8
leaq 0x238(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
xorl %edx, %edx
callq 0xdc44
leaq 0x4e0(%rsp), %rdi
callq 0xdc9a
leaq 0x108(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x4a0(%rsp), %r14
leaq 0x238(%rsp), %r12
leaq 0x118(%rsp), %r13
leaq 0xf8(%rsp), %rbx
leaq 0x50(%rsp), %r15
movq %r12, %rdi
callq 0xf700
testb %al, %al
je 0xc05c
movq %r14, %rdi
callq 0x112d7
cmpq $0x0, 0x4a8(%rsp)
je 0xbed1
movq 0x4a0(%rsp), %rax
cmpb $0x3e, (%rax)
jne 0xbed1
movq %r13, %rdi
movq %r14, %rsi
pushq $0x1
popq %rdx
pushq $-0x1
popq %rcx
callq 0xa580
leaq 0x4e0(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
callq 0xdcec
movq %r13, %rdi
callq 0xaae8
andq $0x0, 0x100(%rsp)
movq 0xf8(%rsp), %rax
movb $0x0, (%rax)
movq %rbp, %rdi
movq %rbx, %rsi
callq 0xa6c0
callq 0xa060
andl $0x0, (%rax)
movq %rbx, %rdi
pushq $0x20
popq %rsi
callq 0xddd7
testb %al, %al
jne 0xc713
movq %r13, %rdi
movq %rbx, %rsi
callq 0xa740
cmpl $0x7, 0x4c(%rsp)
jne 0xbfa8
cmpq $0x0, 0x1c0(%rsp)
je 0xbfa8
movq %r13, %rdi
pushq $0x7c
popq %rsi
pushq $-0x1
popq %rdx
callq 0xaaa0
cmpq $-0x1, %rax
je 0xbfa8
incq %rax
movq %r13, %rdi
xorl %esi, %esi
movq %rax, %rdx
callq 0xa0f0
cmpq $0x0, 0x120(%rsp)
je 0xc7ea
cmpb $0x0, 0x6(%rsp)
je 0xbff0
movq %r15, %rdi
leaq 0x346a1(%rip), %rsi     # 0x40669
leaq 0x8(%rsp), %rdx
callq 0xd508
movq %r13, %rdi
movq %r15, %rsi
callq 0xde26
movl %eax, %ebp
movq %r15, %rdi
callq 0xaae8
testb %bpl, %bpl
je 0xc836
leaq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0xdde8
leaq 0xb0(%rsp), %rdi
movq %rbx, %rsi
callq 0xdde8
leaq 0x6d0(%rsp), %rdi
callq 0xa100
testb %al, %al
je 0xc04f
leaq 0x660(%rsp), %rdi
movq %rbx, %rsi
callq 0xa4d0
movq %rax, %rdi
pushq $0x9
popq %rsi
callq 0xa620
movq %rax, %rdi
movq %r13, %rsi
callq 0xa4d0
movq %rax, %rdi
callq 0xa2d0
movq %r13, %rdi
callq 0xaae8
jmp 0xbed1
leaq 0xf8(%rsp), %rdi
callq 0xaae8
leaq 0x4e0(%rsp), %rdi
callq 0xdf28
leaq 0x238(%rsp), %rdi
callq 0xdf46
leaq 0x660(%rsp), %rdi
callq 0xdf98
callq 0xa060
andl $0x0, (%rax)
movq 0xb8(%rsp), %rax
subq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rcx
subq 0xd0(%rsp), %rcx
cmpq %rcx, %rax
jne 0xccb5
leaq 0xd0(%rsp), %rdi
callq 0xdedc
movq 0xd0(%rsp), %rax
movq 0xd8(%rsp), %r14
xorl %edi, %edi
cmpq %r14, %rax
je 0xc106
movq %rax, %rbx
testq %rdi, %rdi
je 0xc0fd
movq %rbx, %rsi
callq 0xdeff
testb %al, %al
jne 0xc39c
leaq 0x20(%rbx), %rax
movq %rbx, %rdi
jmp 0xc0e0
leaq 0xb0(%rsp), %rdi
callq 0xdedc
movq 0xb0(%rsp), %rax
movq 0xb8(%rsp), %r14
xorl %edi, %edi
cmpq %r14, %rax
je 0xc14b
movq %rax, %rbx
testq %rdi, %rdi
je 0xc142
movq %rbx, %rsi
callq 0xdeff
testb %al, %al
jne 0xc422
leaq 0x20(%rbx), %rax
movq %rbx, %rdi
jmp 0xc125
leaq 0x870(%rsp), %r13
movq 0x10(%r13), %r14
leaq 0xd0(%rsp), %rbx
cmpq %r13, %r14
je 0xc1a2
movq 0x58(%r14), %r15
leaq 0x48(%r14), %rbp
cmpq %rbp, %r15
je 0xc195
leaq 0x28(%r15), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0xdfce
testb %al, %al
je 0xc21c
movq %r15, %rdi
callq 0xa600
movq %rax, %r15
jmp 0xc16c
movq %r14, %rdi
callq 0xa600
movq %rax, %r14
jmp 0xc15f
leaq 0xd0(%rsp), %rdi
callq 0xdf76
leaq 0xb0(%rsp), %rdi
callq 0xdf76
leaq 0x860(%rsp), %rdi
callq 0xdfe0
leaq 0x1b8(%rsp), %rdi
callq 0xaae8
leaq 0x198(%rsp), %rdi
callq 0xaae8
leaq 0x1d8(%rsp), %rdi
callq 0xaae8
leaq 0x1f8(%rsp), %rdi
callq 0xaae8
leaq 0x218(%rsp), %rdi
callq 0xaae8
addq $0x8e8, %rsp            # imm = 0x8E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x4e0(%rsp), %rdi
pushq $0x22
popq %rdx
movq %r12, %rsi
callq 0x120dd
leaq 0x344d2(%rip), %rsi     # 0x40713
leaq 0x660(%rsp), %rdi
leaq 0x4e0(%rsp), %rdx
callq 0xd78f
leaq 0x344d4(%rip), %rdx     # 0x40731
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0xd770
movb $0x1, %bpl
leaq 0x238(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x53d5a(%rip), %rsi     # 0x5ffe8
movq 0x53cd3(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x4e0(%rsp), %rdi
pushq $0x22
popq %rdx
movq %rbx, %rsi
callq 0x120dd
leaq 0x34325(%rip), %rsi     # 0x405ec
leaq 0x660(%rsp), %rdi
leaq 0x4e0(%rsp), %rdx
callq 0xd78f
leaq 0x3432a(%rip), %rdx     # 0x4060d
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0xd770
movb $0x1, %bpl
leaq 0x238(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x53cd4(%rip), %rsi     # 0x5ffe8
movq 0x53c4d(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x28(%rsp), %rdi
pushq $0x22
popq %rdx
movq %rbx, %rsi
callq 0x120dd
leaq 0x3423b(%rip), %rsi     # 0x40585
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0xd78f
leaq 0x34244(%rip), %rdx     # 0x405a4
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xd770
movb $0x1, %bpl
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x53c60(%rip), %rsi     # 0x5ffe8
movq 0x53bd9(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x4e0(%rsp), %rdi
pushq $0x22
popq %rdx
movq %rbx, %rsi
callq 0x120dd
leaq 0x34309(%rip), %rsi     # 0x406ca
leaq 0x660(%rsp), %rdi
leaq 0x4e0(%rsp), %rdx
callq 0xd78f
leaq 0x341c7(%rip), %rdx     # 0x405a4
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0xd770
movb $0x1, %bpl
leaq 0x238(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x53bda(%rip), %rsi     # 0x5ffe8
movq 0x53b53(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x4e0(%rsp), %rdi
pushq $0x22
popq %rdx
movq %rbx, %rsi
callq 0x120dd
leaq 0x342a6(%rip), %rsi     # 0x406ed
leaq 0x660(%rsp), %rdi
leaq 0x4e0(%rsp), %rdx
callq 0xd78f
leaq 0x34141(%rip), %rdx     # 0x405a4
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0xd770
movb $0x1, %bpl
leaq 0x238(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x53b54(%rip), %rsi     # 0x5ffe8
movq 0x53acd(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
callq 0xa660
testl %eax, %eax
jne 0xcd92
leaq 0x33f56(%rip), %rsi     # 0x40412
leaq 0x90(%rsp), %rdi
leaq 0x5(%rsp), %rdx
callq 0xd508
leaq 0x138(%rsp), %rdi
pushq $0x7b
popq %rsi
callq 0xdd7e
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x138(%rsp), %rdx
callq 0xdd17
leaq 0x33f2a(%rip), %rdx     # 0x40429
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xd770
leaq 0x33f1a(%rip), %rsi     # 0x4042f
leaq 0x178(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xd508
leaq 0x348de(%rip), %rdx     # 0x40e0c
leaq 0x158(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0xd770
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x158(%rsp), %rdx
callq 0xdd17
leaq 0x33f10(%rip), %rdx     # 0x40471
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xd770
leaq 0x50(%rsp), %rdi
callq 0x10228
callq 0xa660
testl %eax, %eax
jne 0xcd92
leaq 0x33e84(%rip), %rsi     # 0x40412
leaq 0x90(%rsp), %rdi
leaq 0x5(%rsp), %rdx
callq 0xd508
leaq 0x138(%rsp), %rdi
pushq $0x7c
popq %rsi
callq 0xdd7e
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x138(%rsp), %rdx
callq 0xdd17
leaq 0x33e58(%rip), %rdx     # 0x40429
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xd770
leaq 0x33e48(%rip), %rsi     # 0x4042f
leaq 0x178(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xd508
leaq 0x3480c(%rip), %rdx     # 0x40e0c
leaq 0x158(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0xd770
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x158(%rsp), %rdx
callq 0xdd17
leaq 0x33e52(%rip), %rdx     # 0x40485
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xd770
leaq 0x50(%rsp), %rdi
callq 0x10228
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
pushq $0x22
popq %rdx
callq 0x120dd
leaq 0x33e2f(%rip), %rsi     # 0x4049f
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0xd78f
leaq 0x33ea2(%rip), %rdx     # 0x40528
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xd770
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x5393a(%rip), %rsi     # 0x5ffe8
movq 0x538b3(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x33e64(%rip), %rsi     # 0x40538
leaq 0x8(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0xde65
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x538e9(%rip), %rsi     # 0x5ffe8
movq 0x53862(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
callq 0xa660
testl %eax, %eax
jne 0xcd92
leaq 0x33ceb(%rip), %rsi     # 0x40412
leaq 0x70(%rsp), %rdi
leaq 0x178(%rsp), %rdx
callq 0xd508
leaq 0x90(%rsp), %rdi
movl $0xe4, %esi
callq 0xdd7e
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0xdd17
leaq 0x33cc0(%rip), %rdx     # 0x40429
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xd770
leaq 0x33cb0(%rip), %rsi     # 0x4042f
leaq 0x158(%rsp), %rdi
leaq 0x5(%rsp), %rdx
callq 0xd508
leaq 0x34674(%rip), %rdx     # 0x40e0c
leaq 0x138(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0xd770
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x138(%rsp), %rdx
callq 0xdd17
leaq 0x33e5a(%rip), %rdx     # 0x40625
leaq 0x118(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xd770
leaq 0x118(%rsp), %rdi
callq 0x10228
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r15
leaq 0x33e44(%rip), %rsi     # 0x40640
leaq 0x50(%rsp), %rdi
movq %r14, %rdx
callq 0xde65
movb $0x1, %bpl
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x537c6(%rip), %rsi     # 0x5ffe8
movq 0x5373f(%rip), %rdx     # 0x5ff68
movq %r15, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r15
leaq 0x33e21(%rip), %rsi     # 0x40669
leaq 0x90(%rsp), %rdi
leaq 0x138(%rsp), %rdx
callq 0xd508
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rsi
pushq $0x22
popq %rdx
callq 0x120dd
leaq 0x33df5(%rip), %rsi     # 0x4066e
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0xd78f
leaq 0x3457d(%rip), %rdx     # 0x40e0c
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xd770
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r14, %rdx
callq 0xde07
movb $0x1, %bpl
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x5371f(%rip), %rsi     # 0x5ffe8
movq 0x53698(%rip), %rdx     # 0x5ff68
movq %r15, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x33b0b(%rip), %rsi     # 0x403fa
movq %rax, %rdi
callq 0xa250
movq 0x536ea(%rip), %rsi     # 0x5ffe8
movq 0x53663(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x540e4(%rip), %rsi     # 0x60a08
leaq 0x90(%rsp), %rdi
pushq $0x22
popq %rdx
callq 0x120dd
leaq 0x33b64(%rip), %rsi     # 0x4049f
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0xd78f
leaq 0x33b9a(%rip), %rdx     # 0x404ee
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xd770
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0xde07
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x53655(%rip), %rsi     # 0x5ffe8
movq 0x535ce(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x5404f(%rip), %rsi     # 0x60a08
leaq 0x90(%rsp), %rdi
pushq $0x22
popq %rdx
callq 0x120dd
leaq 0x33b31(%rip), %rsi     # 0x40501
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0xd78f
leaq 0x33b12(%rip), %rdx     # 0x404fb
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xd770
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0xde07
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x535c0(%rip), %rsi     # 0x5ffe8
movq 0x53539(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x53f9a(%rip), %rsi     # 0x609e8
leaq 0x90(%rsp), %rdi
pushq $0x22
popq %rdx
callq 0x120dd
leaq 0x33a3a(%rip), %rsi     # 0x4049f
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0xd78f
leaq 0x33a70(%rip), %rdx     # 0x404ee
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xd770
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0xde07
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x5352b(%rip), %rsi     # 0x5ffe8
movq 0x534a4(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x53f05(%rip), %rsi     # 0x609e8
leaq 0x90(%rsp), %rdi
pushq $0x22
popq %rdx
callq 0x120dd
leaq 0x339b5(%rip), %rsi     # 0x404af
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0xd78f
leaq 0x339e8(%rip), %rdx     # 0x404fb
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xd770
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0xde07
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x53496(%rip), %rsi     # 0x5ffe8
movq 0x5340f(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x33965(%rip), %rsi     # 0x404da
leaq 0x70(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0xde65
movb $0x1, %bpl
leaq 0x70(%rsp), %rsi
movq %r14, %rdi
callq 0xa8d0
xorl %ebp, %ebp
movq 0x53448(%rip), %rsi     # 0x5ffe8
movq 0x533c1(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
jmp 0xcbe1
pushq $0x10
popq %rdi
callq 0xa2e0
movq %rax, %r14
leaq 0x3399f(%rip), %rsi     # 0x40562
movq %rax, %rdi
callq 0xa250
movq 0x53416(%rip), %rsi     # 0x5ffe8
movq 0x5338f(%rip), %rdx     # 0x5ff68
movq %r14, %rdi
callq 0xa960
callq 0xa660
testl %eax, %eax
jne 0xcd92
leaq 0x3381d(%rip), %rsi     # 0x40412
leaq 0x90(%rsp), %rdi
leaq 0x5(%rsp), %rdx
callq 0xd508
leaq 0x138(%rsp), %rdi
movl $0xc0, %esi
callq 0xdd7e
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x138(%rsp), %rdx
callq 0xdd17
leaq 0x337ef(%rip), %rdx     # 0x40429
leaq 0x28(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xd770
leaq 0x337df(%rip), %rsi     # 0x4042f
leaq 0x178(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xd508
leaq 0x341a3(%rip), %rdx     # 0x40e0c
leaq 0x158(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0xd770
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x158(%rsp), %rdx
callq 0xdd17
leaq 0x33917(%rip), %rdx     # 0x405b3
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xd770
leaq 0x50(%rsp), %rdi
callq 0x10228
callq 0xa660
testl %eax, %eax
jne 0xcd92
leaq 0x33749(%rip), %rsi     # 0x40412
leaq 0x118(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0xd508
leaq 0x50(%rsp), %rdi
movl $0xfe, %esi
callq 0xdd7e
leaq 0xf8(%rsp), %rdi
leaq 0x118(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xdd17
leaq 0x3371e(%rip), %rdx     # 0x40429
leaq 0x4e0(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0xd770
leaq 0x33708(%rip), %rsi     # 0x4042f
leaq 0x28(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0xd508
leaq 0x340cc(%rip), %rdx     # 0x40e0c
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xd770
leaq 0x660(%rsp), %rdi
leaq 0x4e0(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0xdd17
leaq 0x33934(%rip), %rdx     # 0x406a4
leaq 0x238(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0xd770
leaq 0x238(%rsp), %rdi
callq 0x10228
pushq $0x1
popq %rdi
callq 0xa670
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0xaae8
jmp 0xcdaf
movq %rax, %rbx
leaq 0x660(%rsp), %rdi
callq 0xaae8
jmp 0xcdc5
jmp 0xce26
jmp 0xce35
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xaae8
jmp 0xcdd9
jmp 0xce6f
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xaae8
jmp 0xcded
jmp 0xcea9
movq %rax, %rbx
leaq 0x4e0(%rsp), %rdi
callq 0xaae8
jmp 0xce47
jmp 0xcf34
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0xaae8
jmp 0xce16
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xaae8
jmp 0xce5e
jmp 0xce26
jmp 0xce35
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xaae8
jmp 0xce38
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xaae8
jmp 0xce72
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0xaae8
jmp 0xce84
jmp 0xcf88
movq %rax, %rbx
leaq 0x138(%rsp), %rdi
callq 0xaae8
jmp 0xce98
jmp 0xce6f
movq %rax, %rbx
leaq 0x158(%rsp), %rdi
callq 0xaae8
jmp 0xceac
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xaae8
jmp 0xceeb
jmp 0xcfe1
movq %rax, %rbx
leaq 0x158(%rsp), %rdi
callq 0xaae8
jmp 0xcf26
jmp 0xcea9
movq %rax, %rbx
leaq 0x178(%rsp), %rdi
callq 0xaae8
jmp 0xcf37
jmp 0xcec7
jmp 0xced6
jmp 0xcec7
jmp 0xced6
jmp 0xcec7
jmp 0xced6
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xaae8
jmp 0xcedc
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x28(%rsp), %rdi
callq 0xaae8
jmp 0xcf4f
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0xaae8
jmp 0xd497
jmp 0xd100
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xaae8
jmp 0xcf17
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x8(%rsp), %rdi
callq 0xaae8
jmp 0xcf6b
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xaae8
jmp 0xcf7a
jmp 0xcf34
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xaae8
jmp 0xcf8b
jmp 0xcf49
jmp 0xcf49
jmp 0xcf49
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x70(%rsp), %rdi
callq 0xaae8
jmp 0xcfa3
jmp 0xd494
jmp 0xd3f3
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x28(%rsp), %rdi
callq 0xaae8
jmp 0xcfbb
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xaae8
jmp 0xcfcd
jmp 0xcf88
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xaae8
jmp 0xcfe4
jmp 0xcf9d
jmp 0xcf9d
jmp 0xcf9d
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x90(%rsp), %rdi
jmp 0xd323
jmp 0xd36b
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x70(%rsp), %rdi
callq 0xaae8
jmp 0xd0c0
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xaae8
jmp 0xd0d0
jmp 0xcfe1
movq %rax, %rbx
leaq 0x138(%rsp), %rdi
callq 0xaae8
jmp 0xd103
movq %rax, %rbx
leaq 0x4e0(%rsp), %rdi
callq 0xaae8
jmp 0xd00b
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0xaae8
jmp 0xd3e1
jmp 0xd091
movq %rax, %rbx
leaq 0x4e0(%rsp), %rdi
callq 0xaae8
jmp 0xd034
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0xaae8
jmp 0xd437
movq %rax, %rbx
jmp 0xd437
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xaae8
testb %bpl, %bpl
jne 0xd068
jmp 0xd1ae
movq %rax, %rbx
movq %r14, %rdi
callq 0xa430
jmp 0xd1ae
jmp 0xd331
jmp 0xd331
jmp 0xd331
jmp 0xd331
movq %rax, %rbx
jmp 0xd3d4
movq %rax, %rbx
jmp 0xd3e1
jmp 0xd494
jmp 0xd39d
movq %rax, %rbx
jmp 0xd41d
jmp 0xd0ad
movq %rax, %rbx
jmp 0xd42a
jmp 0xd39d
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x90(%rsp), %rdi
jmp 0xd2cb
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
jmp 0xd3b0
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xaae8
jmp 0xd0ef
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x28(%rsp), %rdi
callq 0xaae8
jmp 0xd18d
jmp 0xd100
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
jmp 0xd396
jmp 0xd114
jmp 0xd114
movq %rax, %rbx
jmp 0xd1b8
jmp 0xd38e
jmp 0xd38e
jmp 0xd38e
jmp 0xd38e
jmp 0xd2b1
movq %rax, %rbx
movq %r14, %rdi
callq 0xa430
jmp 0xd4be
jmp 0xd446
jmp 0xd458
jmp 0xd446
jmp 0xd458
jmp 0xd2da
jmp 0xd3b7
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xaae8
jmp 0xd178
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x8(%rsp), %rdi
callq 0xaae8
jmp 0xd307
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x70(%rsp), %rdi
jmp 0xd323
jmp 0xd3f3
jmp 0xd3f3
jmp 0xd494
jmp 0xd3a5
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xaae8
leaq 0x8(%rsp), %rdi
callq 0xaae8
jmp 0xd391
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0xaae8
jmp 0xd4be
jmp 0xd2b1
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
jmp 0xd4c6
movq %rax, %rbx
jmp 0xd4cb
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
jmp 0xd4d3
movq %rax, %rbx
jmp 0xd4d8
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
jmp 0xd4e0
movq %rax, %rbx
jmp 0xd4e5
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
jmp 0xd4ed
jmp 0xd25d
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0xaae8
jmp 0xd250
movq %rax, %rbx
leaq 0x660(%rsp), %rdi
jmp 0xd4ed
movq %rax, %rbx
jmp 0xd4f2
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
jmp 0xd4fa
movq %rax, %rbx
jmp 0xd4ff
jmp 0xd3f3
jmp 0xd39d
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0xaae8
jmp 0xd29f
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x660(%rsp), %rdi
callq 0xaae8
jmp 0xd344
movq %rax, %rbx
jmp 0xd4be
jmp 0xd46d
jmp 0xd46d
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xaae8
testb %bpl, %bpl
jne 0xd2dd
jmp 0xd3a8
movq %rax, %rbx
movq %r15, %rdi
callq 0xa430
jmp 0xd3a8
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xaae8
jmp 0xd3a8
jmp 0xd3a5
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x28(%rsp), %rdi
callq 0xaae8
testb %bpl, %bpl
jne 0xd36e
jmp 0xd3f6
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xaae8
testb %bpl, %bpl
jne 0xd334
jmp 0xd391
jmp 0xd331
movq %rax, %rbx
movq %r14, %rdi
callq 0xa430
jmp 0xd391
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x4e0(%rsp), %rdi
callq 0xaae8
testb %bpl, %bpl
jne 0xd381
jmp 0xd4a4
jmp 0xd487
jmp 0xd487
jmp 0xd3a5
jmp 0xd3b7
jmp 0xd3b7
movq %rax, %rbx
movq %r14, %rdi
callq 0xa430
jmp 0xd3f6
jmp 0xd3f3
jmp 0xd38e
jmp 0xd3f3
movq %rax, %rbx
movq %r14, %rdi
callq 0xa430
jmp 0xd4a4
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xaae8
jmp 0xd3f6
movq %rax, %rbx
jmp 0xd4a4
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0xaae8
jmp 0xd3ba
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0xaae8
leaq 0x4e0(%rsp), %rdi
callq 0xdf28
leaq 0x238(%rsp), %rdi
callq 0xdf46
leaq 0x660(%rsp), %rdi
callq 0xdf98
jmp 0xd497
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0xaae8
leaq 0xf8(%rsp), %rdi
callq 0xaae8
leaq 0x4e0(%rsp), %rdi
callq 0xdf28
leaq 0x238(%rsp), %rdi
callq 0xdf46
leaq 0xd0(%rsp), %rdi
callq 0xdf76
leaq 0x660(%rsp), %rdi
callq 0xdf98
jmp 0xd4a4
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0xaae8
jmp 0xd45e
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x660(%rsp), %rdi
callq 0xaae8
jmp 0xd473
movq %rax, %rbx
movb $0x1, %bpl
leaq 0x4e0(%rsp), %rdi
callq 0xaae8
testb %bpl, %bpl
jne 0xd48a
jmp 0xd497
movq %rax, %rbx
movq %r14, %rdi
callq 0xa430
jmp 0xd497
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0xdf76
leaq 0xb0(%rsp), %rdi
callq 0xdf76
leaq 0x860(%rsp), %rdi
callq 0xdfe0
leaq 0x1b8(%rsp), %rdi
callq 0xaae8
leaq 0x198(%rsp), %rdi
callq 0xaae8
leaq 0x1d8(%rsp), %rdi
callq 0xaae8
leaq 0x1f8(%rsp), %rdi
callq 0xaae8
leaq 0x218(%rsp), %rdi
callq 0xaae8
movq %rbx, %rdi
callq 0xa9b0
nop