// File: ncbi[P]amr/fasta_check.cpp
// Function: (anonymous namespace)::ThisApplication::body() const
void body () const final
  {
    const string fName     = getArg ("in");
    const bool aa          = getFlag ("aa");
    const bool hyphen      = getFlag ("hyphen");
    const bool ambig       = getFlag ("ambig");
    const size_t ambig_max = str2<size_t> (getArg ("ambig_max"));
    const bool stop_codon  = getFlag ("stop_codon");
    const string lenFName  = getArg ("len");
    const string outFName  = getArg ("out");
    
    QC_IMPLY (stop_codon, aa);
    

    unique_ptr<OFStream> lenF;
    if (! lenFName. empty ())
      lenF. reset (new OFStream (lenFName));
    unique_ptr<OFStream> outF;
    if (! outFName. empty ())
      outF. reset (new OFStream (outFName));
    size_t lines = 0;
    StringVector ids;  ids. reserve (100000);  // PAR
    size_t seqSize_max = 0;
    size_t seqSize_sum = 0;
  //string errorS;
    // One sequence
    size_t xs = 0;
    string header;
    string seq;
    
    auto processSeq = [&] () 
  	  {
  	    if (! lines)
  	      return;
 	  		ASSERT (! header. empty ());
 	  		ASSERT (! ids. empty ());
 	  		const string id (ids. back ());
  	    if (aa && ! stop_codon)
  	    {  	    
    	    while (! seq. empty () && seq. back () == '*')
   	  		  if (outF)
   	  		    seq. erase (seq. size () - 1);
   	  		  else
    		      throw runtime_error (id + ": '*' at the sequence end");
    		}
  	    if (seq. empty ())
 	  		  throw runtime_error (id + ": Empty sequence");
 	  		bool skip = false;
  	    if (! ambig && xs > ambig_max)
  	    {
 	  		  if (outF)
 	  		    skip = true;
 	  		  else
  		      throw runtime_error (id + ": Too many ambiguities");
  		  }
  		  if (skip)
  		    { LOG ("Skipping " + id); }
  		  else
  		  {
     	  	if (lenF. get ())
     	  	  *lenF << id << '\t' << seq. size () << endl;
  	      if (outF)
  	        *outF << header << endl << seq << endl;
   	  	  maximize (seqSize_max, seq. size ());
   	  	  seqSize_sum += seq. size ();
   	  	}
    	  xs = 0;
    	  header. clear ();
    	  seq. clear ();
 	    };
    
    size_t nuc = 0;   
    {
      LineInput f (fName); 
      string id;
      while (f. nextLine ())
      {
        trimTrailing (f. line);
        if (f. line. empty ())
        	continue;
      	const string errorS ("File " + fName + ", " + f. lineStr (false) + ": ");
      	if (f. line [0] == '>')
      	{
      		size_t pos = 1;
      		while (pos < f. line. size () && ! isspace (f. line [pos]))
      		  pos++;
      		id = f. line. substr (1, pos - 1);
      		if (id. empty ())
      			throw runtime_error (errorS + "Empty sequence identifier");
        #if 0
      		if (id. size () > 1000)  // PAR
      			throw runtime_error (errorS + "Too long sequence identifier");
        #endif
      	  for (const char c : id)
      	  	if (! printable (c))
      	  		throw runtime_error (errorS + "Non-printable character in the sequence identifier: " + to_string ((int) c));
      	  // BLAST: PD-4548
      	  if (! aa)
      	  {
        	  if (id. front () == '?')
       	  		throw runtime_error (errorS + "Sequence identifier starts with '?'");
       	  	for (const char c : {',', ';', '.', '~'})
          	  if (id. back () == c)
         	  		throw runtime_error (errorS + "Sequence identifier ends with " + strQuote (string (1, c)));
        	  if (contains (id, "\\t"))
       	  		throw runtime_error (errorS + "Sequence identifier contains '\\t'");
        	  if (contains (id, ",,"))
       	  		throw runtime_error (errorS + "Sequence identifier contains ',,'");
       	  }
     	    processSeq ();
      	  header = f. line;
      	  ids << id;
      	}
      	else 
      	{
      		if (! lines)
      			throw runtime_error (errorS + "FASTA should start with '>'");
      	  for (const char c : f. line)
      	  {
      	    bool skip = false;
      	  	if (c == '-')
      	  		if (hyphen)
      	  			;
      	  		else
      	  		{
      	  		  if (outF)
      	  		    skip = true;
      	  		  else
  	    	  		  throw runtime_error (errorS + "Hyphen in the sequence");  	    	  		  
  	    	    }
  	    	  else
  	    	  {
  	    	  	const char c1 = toLower (c);
  	    	  	if (aa)
  	    	  	{
  		    	  	if (! charInSet (c1, "acdefghiklmnpqrstvwyxbzjuoacdefghiklmnpqrstvwyxbzjuo*"))
  		    	  		throw runtime_error (errorS + "Wrong amino acid character: (code = " + to_string ((int) c) + ") '" + c + "'");
  		    	    if (charInSet (c1, "acgt"))
  		    	    	nuc++;
  		    	    if (charInSet (c1, "xbzjuo"))
  		    	      xs++;
  		    	  }
  	    	  	else
  	    	  	{
  		    	  	if (! charInSet (c1, "acgtbdhkmnrsvwyacgtbdhkmnrsvwy"))
  		    	  		throw runtime_error (errorS + "Wrong nucleotide character: (code = " + to_string ((int) c) + ") '" + c + "'");
  		    	    if (charInSet (c1, "bdhkmnrsvwy"))
  		    	      xs++;
  		    	  }
  		    	}
  		    	if (! skip)
  		    	  seq += c;
  		    }
      	}
      	lines++;
  	  }
  	}
    processSeq ();	// Last sequence
	  if (! lines)
	  	throw runtime_error ("Empty file"); 
  	if (aa && (double) nuc / (double) seqSize_sum > 0.9)  // PAR
  		throw runtime_error ("Protein sequences looks like a nucleotide sequences");
  		
	  ids. sort ();
	  const size_t index = ids. findDuplicate ();
	  if (index != no_index)
	  	throw runtime_error ("Duplicate identifier: " + ids [index]);
	  	
	  cout << ids. size () << endl
	       << seqSize_max << endl
	       << seqSize_sum << endl;
  }

// Assembly:
subq $0xeb8, %rsp            # imm = 0xEB8
movq %rdi, 0xeb0(%rsp)
movq 0xeb0(%rsp), %rax
movq %rax, 0x1f8(%rsp)
leaq 0xe6f(%rsp), %rdi
movq %rdi, 0x200(%rsp)
callq 0xbc50
movq 0x200(%rsp), %rdx
leaq 0x7d3e9(%rip), %rsi     # 0x8a0cc
leaq 0xe70(%rsp), %rdi
callq 0x10120
jmp 0xccf2
movq 0x1f8(%rsp), %rsi
leaq 0xe90(%rsp), %rdi
leaq 0xe70(%rsp), %rdx
callq 0x41ad0
jmp 0xcd11
leaq 0xe70(%rsp), %rdi
callq 0xbde8
leaq 0xe6f(%rsp), %rdi
callq 0xb740
leaq 0xe37(%rsp), %rdi
movq %rdi, 0x1f0(%rsp)
callq 0xbc50
movq 0x1f0(%rsp), %rdx
leaq 0x7d38b(%rip), %rsi     # 0x8a0da
leaq 0xe38(%rsp), %rdi
callq 0x10120
jmp 0xcd5e
movq 0x1f8(%rsp), %rdi
leaq 0xe38(%rsp), %rsi
callq 0x41c60
movb %al, 0x1ef(%rsp)
jmp 0xcd7c
leaq 0xe38(%rsp), %rdi
callq 0xbde8
leaq 0xe37(%rsp), %rdi
callq 0xb740
movb 0x1ef(%rsp), %al
andb $0x1, %al
movb %al, 0xe5b(%rsp)
leaq 0xe0f(%rsp), %rdi
movq %rdi, 0x1e0(%rsp)
callq 0xbc50
movq 0x1e0(%rsp), %rdx
leaq 0x7d33d(%rip), %rsi     # 0x8a107
leaq 0xe10(%rsp), %rdi
callq 0x10120
jmp 0xcdd9
movq 0x1f8(%rsp), %rdi
leaq 0xe10(%rsp), %rsi
callq 0x41c60
movb %al, 0x1df(%rsp)
jmp 0xcdf7
leaq 0xe10(%rsp), %rdi
callq 0xbde8
leaq 0xe0f(%rsp), %rdi
callq 0xb740
movb 0x1df(%rsp), %al
andb $0x1, %al
movb %al, 0xe36(%rsp)
leaq 0xde7(%rsp), %rdi
movq %rdi, 0x1d0(%rsp)
callq 0xbc50
movq 0x1d0(%rsp), %rdx
leaq 0x7d2dd(%rip), %rsi     # 0x8a122
leaq 0xde8(%rsp), %rdi
callq 0x10120
jmp 0xce54
movq 0x1f8(%rsp), %rdi
leaq 0xde8(%rsp), %rsi
callq 0x41c60
movb %al, 0x1cf(%rsp)
jmp 0xce72
leaq 0xde8(%rsp), %rdi
callq 0xbde8
leaq 0xde7(%rsp), %rdi
callq 0xb740
movb 0x1cf(%rsp), %al
andb $0x1, %al
movb %al, 0xe0e(%rsp)
leaq 0xd97(%rsp), %rdi
movq %rdi, 0x1c0(%rsp)
callq 0xbc50
movq 0x1c0(%rsp), %rdx
leaq 0x7d289(%rip), %rsi     # 0x8a149
leaq 0xd98(%rsp), %rdi
callq 0x10120
jmp 0xcecf
movq 0x1f8(%rsp), %rsi
leaq 0xdb8(%rsp), %rdi
leaq 0xd98(%rsp), %rdx
callq 0x41ad0
jmp 0xceee
leaq 0xdb8(%rsp), %rdi
callq 0x119c0
movq %rax, 0x1b8(%rsp)
jmp 0xcf05
leaq 0xdb8(%rsp), %rdi
callq 0xbde8
leaq 0xd98(%rsp), %rdi
callq 0xbde8
leaq 0xd97(%rsp), %rdi
callq 0xb740
movq 0x1b8(%rsp), %rax
movq %rax, 0xdd8(%rsp)
leaq 0xd6f(%rsp), %rdi
movq %rdi, 0x1b0(%rsp)
callq 0xbc50
movq 0x1b0(%rsp), %rdx
leaq 0x7d224(%rip), %rsi     # 0x8a184
leaq 0xd70(%rsp), %rdi
callq 0x10120
jmp 0xcf6f
movq 0x1f8(%rsp), %rdi
leaq 0xd70(%rsp), %rsi
callq 0x41c60
movb %al, 0x1af(%rsp)
jmp 0xcf8d
leaq 0xd70(%rsp), %rdi
callq 0xbde8
leaq 0xd6f(%rsp), %rdi
callq 0xb740
movb 0x1af(%rsp), %al
andb $0x1, %al
movb %al, 0xd96(%rsp)
leaq 0xd27(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0xbc50
movq 0x1a0(%rsp), %rdx
leaq 0x7d1ea(%rip), %rsi     # 0x8a1c5
leaq 0xd28(%rsp), %rdi
callq 0x10120
jmp 0xcfea
movq 0x1f8(%rsp), %rsi
leaq 0xd48(%rsp), %rdi
leaq 0xd28(%rsp), %rdx
callq 0x41ad0
jmp 0xd009
leaq 0xd28(%rsp), %rdi
callq 0xbde8
leaq 0xd27(%rsp), %rdi
callq 0xb740
leaq 0xcdf(%rsp), %rdi
movq %rdi, 0x198(%rsp)
callq 0xbc50
movq 0x198(%rsp), %rdx
leaq 0x7fa48(%rip), %rsi     # 0x8ca8f
leaq 0xce0(%rsp), %rdi
callq 0x10120
jmp 0xd056
movq 0x1f8(%rsp), %rsi
leaq 0xd00(%rsp), %rdi
leaq 0xce0(%rsp), %rdx
callq 0x41ad0
jmp 0xd075
leaq 0xce0(%rsp), %rdi
callq 0xbde8
leaq 0xcdf(%rsp), %rdi
callq 0xb740
testb $0x1, 0xd96(%rsp)
je 0xd5b6
callq 0xb090
movl $0x0, (%rax)
testb $0x1, 0xe5b(%rsp)
jne 0xd5b4
callq 0xb860
cmpl $0x0, %eax
jne 0xd5aa
leaq 0xc37(%rsp), %rdi
movq %rdi, 0x190(%rsp)
callq 0xbc50
movq 0x190(%rsp), %rdx
leaq 0x7d24c(%rip), %rsi     # 0x8a334
leaq 0xc38(%rsp), %rdi
callq 0x10120
jmp 0xd0f7
leaq 0xc10(%rsp), %rdi
movl $0x4e, %esi
callq 0x11d30
jmp 0xd10b
leaq 0xc58(%rsp), %rdi
leaq 0xc38(%rsp), %rsi
leaq 0xc10(%rsp), %rdx
callq 0x11c40
jmp 0xd12a
leaq 0x7d21c(%rip), %rdx     # 0x8a34d
leaq 0xc78(%rsp), %rdi
leaq 0xc58(%rsp), %rsi
callq 0x11bf0
jmp 0xd148
leaq 0xbcf(%rsp), %rdi
movq %rdi, 0x188(%rsp)
callq 0xbc50
movq 0x188(%rsp), %rdx
leaq 0x7d1e7(%rip), %rsi     # 0x8a353
leaq 0xbd0(%rsp), %rdi
callq 0x10120
jmp 0xd17b
leaq 0x7dc92(%rip), %rdx     # 0x8ae14
leaq 0xbf0(%rsp), %rdi
leaq 0xbd0(%rsp), %rsi
callq 0x11bf0
jmp 0xd199
leaq 0xc98(%rsp), %rdi
leaq 0xc78(%rsp), %rsi
leaq 0xbf0(%rsp), %rdx
callq 0x11c40
jmp 0xd1b8
leaq 0x7cf1b(%rip), %rdx     # 0x8a0da
leaq 0xcb8(%rsp), %rdi
leaq 0xc98(%rsp), %rsi
callq 0x11bf0
jmp 0xd1d6
leaq 0xcb8(%rsp), %rdi
callq 0x17e80
jmp 0xd1e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd21c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xe70(%rsp), %rdi
callq 0xbde8
leaq 0xe6f(%rsp), %rdi
callq 0xb740
jmp 0xf518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd265
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xe38(%rsp), %rdi
callq 0xbde8
leaq 0xe37(%rsp), %rdi
callq 0xb740
jmp 0xf50b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd2ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xe10(%rsp), %rdi
callq 0xbde8
leaq 0xe0f(%rsp), %rdi
callq 0xb740
jmp 0xf50b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd2f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xde8(%rsp), %rdi
callq 0xbde8
leaq 0xde7(%rsp), %rdi
callq 0xb740
jmp 0xf50b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd363
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xdb8(%rsp), %rdi
callq 0xbde8
leaq 0xd98(%rsp), %rdi
callq 0xbde8
leaq 0xd97(%rsp), %rdi
callq 0xb740
jmp 0xf50b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd3ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xd70(%rsp), %rdi
callq 0xbde8
leaq 0xd6f(%rsp), %rdi
callq 0xb740
jmp 0xf50b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd3f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xd28(%rsp), %rdi
callq 0xbde8
leaq 0xd27(%rsp), %rdi
callq 0xb740
jmp 0xf50b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd43e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xce0(%rsp), %rdi
callq 0xbde8
leaq 0xcdf(%rsp), %rdi
callq 0xb740
jmp 0xf4fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd598
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd58b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd57e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd571
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd557
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd54a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd53d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xd530
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0xcb8(%rsp), %rdi
callq 0xbde8
leaq 0xc98(%rsp), %rdi
callq 0xbde8
leaq 0xbf0(%rsp), %rdi
callq 0xbde8
leaq 0xbd0(%rsp), %rdi
callq 0xbde8
leaq 0xbcf(%rsp), %rdi
callq 0xb740
leaq 0xc78(%rsp), %rdi
callq 0xbde8
leaq 0xc58(%rsp), %rdi
callq 0xbde8
leaq 0xc10(%rsp), %rdi
callq 0xbde8
leaq 0xc38(%rsp), %rdi
callq 0xbde8
leaq 0xc37(%rsp), %rdi
callq 0xb740
jmp 0xf4f1
movl $0x1, %edi
callq 0xb870
jmp 0xd5b6
leaq 0xbc0(%rsp), %rdi
callq 0x11e70
leaq 0xd48(%rsp), %rdi
callq 0xbb70
testb $0x1, %al
jne 0xd65e
movl $0x200, %edi            # imm = 0x200
callq 0xb6a0
movq %rax, 0x180(%rsp)
jmp 0xd5ec
movq 0x180(%rsp), %rdi
leaq 0xd48(%rsp), %rsi
callq 0x11ed0
jmp 0xd603
movq 0x180(%rsp), %rsi
leaq 0xbc0(%rsp), %rdi
callq 0x11ea0
jmp 0xd65e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xf4e4
movq 0x180(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
movl $0x200, %esi            # imm = 0x200
callq 0xb6b0
jmp 0xf4e4
leaq 0xbb8(%rsp), %rdi
callq 0x11e70
leaq 0xd00(%rsp), %rdi
callq 0xbb70
testb $0x1, %al
jne 0xd706
movl $0x200, %edi            # imm = 0x200
callq 0xb6a0
movq %rax, 0x178(%rsp)
jmp 0xd694
movq 0x178(%rsp), %rdi
leaq 0xd00(%rsp), %rsi
callq 0x11ed0
jmp 0xd6ab
movq 0x178(%rsp), %rsi
leaq 0xbb8(%rsp), %rdi
callq 0x11ea0
jmp 0xd706
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xf4d7
movq 0x178(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
movl $0x200, %esi            # imm = 0x200
callq 0xb6b0
jmp 0xf4d7
movq $0x0, 0xbb0(%rsp)
leaq 0xb90(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x11f90
movq 0x170(%rsp), %rdi
movl $0x186a0, %esi          # imm = 0x186A0
callq 0x11fa0
jmp 0xd73b
movq $0x0, 0xb88(%rsp)
movq $0x0, 0xb80(%rsp)
movq $0x0, 0xb78(%rsp)
leaq 0xb58(%rsp), %rdi
movq %rdi, 0x160(%rsp)
callq 0xb990
leaq 0xb38(%rsp), %rdi
movq %rdi, 0x168(%rsp)
callq 0xb990
movq 0x160(%rsp), %rcx
movq 0x168(%rsp), %rax
leaq 0xbb0(%rsp), %rdx
movq %rdx, 0xad0(%rsp)
movq %rcx, 0xad8(%rsp)
leaq 0xb90(%rsp), %rcx
movq %rcx, 0xae0(%rsp)
leaq 0xe5b(%rsp), %rcx
movq %rcx, 0xae8(%rsp)
leaq 0xd96(%rsp), %rcx
movq %rcx, 0xaf0(%rsp)
movq %rax, 0xaf8(%rsp)
leaq 0xbb8(%rsp), %rax
movq %rax, 0xb00(%rsp)
leaq 0xe0e(%rsp), %rax
movq %rax, 0xb08(%rsp)
leaq 0xb78(%rsp), %rax
movq %rax, 0xb10(%rsp)
leaq 0xdd8(%rsp), %rax
movq %rax, 0xb18(%rsp)
leaq 0xbc0(%rsp), %rax
movq %rax, 0xb20(%rsp)
leaq 0xb88(%rsp), %rax
movq %rax, 0xb28(%rsp)
leaq 0xb80(%rsp), %rax
movq %rax, 0xb30(%rsp)
movq $0x0, 0xac8(%rsp)
leaq 0x820(%rsp), %rdi
leaq 0xe90(%rsp), %rsi
xorl %edx, %edx
callq 0x120b0
jmp 0xd87e
leaq 0x800(%rsp), %rdi
callq 0xb990
leaq 0x820(%rsp), %rdi
callq 0x16860
movb %al, 0x15f(%rsp)
jmp 0xd8a1
movb 0x15f(%rsp), %al
testb $0x1, %al
jne 0xd8b1
jmp 0xf107
leaq 0xa88(%rsp), %rdi
callq 0x19bc0
jmp 0xd8c0
leaq 0x820(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
callq 0xbb70
testb $0x1, %al
jne 0xd8da
jmp 0xd927
jmp 0xd88b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xf4ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xf4b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xf17f
leaq 0x7ca67(%rip), %rsi     # 0x8a395
leaq 0x780(%rsp), %rdi
leaq 0xe90(%rsp), %rdx
callq 0x12120
jmp 0xd945
leaq 0x7ca4f(%rip), %rdx     # 0x8a39b
leaq 0x7a0(%rsp), %rdi
leaq 0x780(%rsp), %rsi
callq 0x11bf0
jmp 0xd963
leaq 0x760(%rsp), %rdi
leaq 0x820(%rsp), %rsi
xorl %edx, %edx
callq 0x12250
jmp 0xd97c
leaq 0x7c0(%rsp), %rdi
leaq 0x7a0(%rsp), %rsi
leaq 0x760(%rsp), %rdx
callq 0x11c40
jmp 0xd99b
leaq 0x7d444(%rip), %rdx     # 0x8ade6
leaq 0x7e0(%rsp), %rdi
leaq 0x7c0(%rsp), %rsi
callq 0x11bf0
jmp 0xd9b9
leaq 0x7c0(%rsp), %rdi
callq 0xbde8
leaq 0x760(%rsp), %rdi
callq 0xbde8
leaq 0x7a0(%rsp), %rdi
callq 0xbde8
leaq 0x780(%rsp), %rdi
callq 0xbde8
leaq 0xa88(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xbda0
movq %rax, 0x150(%rsp)
jmp 0xda08
movq 0x150(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x3e, %eax
jne 0xe586
movq $0x1, 0x758(%rsp)
movq 0x758(%rsp), %rax
movq %rax, 0x140(%rsp)
leaq 0x820(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
callq 0xb500
movq 0x140(%rsp), %rcx
movq %rax, %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, 0x14f(%rsp)
jae 0xdaa3
leaq 0xa88(%rsp), %rdi
movq 0x758(%rsp), %rsi
callq 0xbda0
movq %rax, 0x138(%rsp)
jmp 0xda84
movq 0x138(%rsp), %rax
movsbl (%rax), %edi
callq 0xb0c0
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, 0x14f(%rsp)
movb 0x14f(%rsp), %al
testb $0x1, %al
jne 0xdab3
jmp 0xdb74
movq 0x758(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x758(%rsp)
jmp 0xda28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xdb49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xdb3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xdb2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x7c0(%rsp), %rdi
callq 0xbde8
leaq 0x760(%rsp), %rdi
callq 0xbde8
leaq 0x7a0(%rsp), %rdi
callq 0xbde8
leaq 0x780(%rsp), %rdi
callq 0xbde8
jmp 0xf17f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xf0f8
leaq 0xa88(%rsp), %rsi
movq 0x758(%rsp), %rcx
decq %rcx
leaq 0x738(%rsp), %rdi
movl $0x1, %edx
callq 0xb6e0
jmp 0xdb9b
leaq 0x800(%rsp), %rdi
leaq 0x738(%rsp), %rsi
callq 0xb890
leaq 0x738(%rsp), %rdi
callq 0xbde8
leaq 0x800(%rsp), %rdi
callq 0xbb70
testb $0x1, %al
jne 0xdbd3
jmp 0xdc9f
movb $0x1, 0x717(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0x130(%rsp)
leaq 0x7c7aa(%rip), %rdx     # 0x8a39e
leaq 0x718(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xdc0b
movq 0x130(%rsp), %rdi
leaq 0x718(%rsp), %rsi
callq 0xbb10
jmp 0xdc22
movq 0x130(%rsp), %rdi
movb $0x0, 0x717(%rsp)
movq 0xa73af(%rip), %rsi     # 0xb4fe8
movq 0xa7330(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xdc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x718(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x717(%rsp)
jne 0xdc8d
jmp 0xdc9a
movq 0x130(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
leaq 0x800(%rsp), %rax
movq %rax, 0x708(%rsp)
movq 0x708(%rsp), %rdi
callq 0xb600
movq %rax, 0x700(%rsp)
movq 0x708(%rsp), %rdi
callq 0xb430
movq %rax, 0x6f8(%rsp)
leaq 0x700(%rsp), %rdi
leaq 0x6f8(%rsp), %rsi
callq 0x12380
testb $0x1, %al
jne 0xdcf7
jmp 0xde90
leaq 0x700(%rsp), %rdi
callq 0x123c0
movb (%rax), %al
movb %al, 0x6f7(%rsp)
movsbl 0x6f7(%rsp), %edi
callq 0x123d0
movb %al, 0x12f(%rsp)
jmp 0xdd23
movb 0x12f(%rsp), %al
testb $0x1, %al
jne 0xde7c
jmp 0xdd34
movb $0x1, 0x68f(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0x120(%rsp)
leaq 0x7c663(%rip), %rdx     # 0x8a3b8
leaq 0x6b0(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xdd6c
movsbl 0x6f7(%rsp), %esi
leaq 0x690(%rsp), %rdi
callq 0x11d30
jmp 0xdd83
leaq 0x6d0(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
leaq 0x690(%rsp), %rdx
callq 0x11c40
jmp 0xdda2
movq 0x120(%rsp), %rdi
leaq 0x6d0(%rsp), %rsi
callq 0xbb10
jmp 0xddb9
movq 0x120(%rsp), %rdi
movb $0x0, 0x68f(%rsp)
movq 0xa7218(%rip), %rsi     # 0xb4fe8
movq 0xa7199(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xde5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xde51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xde44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0xbde8
leaq 0x690(%rsp), %rdi
callq 0xbde8
leaq 0x6b0(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x68f(%rsp)
jne 0xde6a
jmp 0xde77
movq 0x120(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
jmp 0xde7e
leaq 0x700(%rsp), %rdi
callq 0x123f0
jmp 0xdcd9
testb $0x1, 0xe5b(%rsp)
jne 0xe544
leaq 0x800(%rsp), %rdi
callq 0xb190
movsbl (%rax), %eax
cmpl $0x3f, %eax
jne 0xdf83
movb $0x1, 0x667(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0x118(%rsp)
leaq 0x7c515(%rip), %rdx     # 0x8a3ed
leaq 0x668(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xdeef
movq 0x118(%rsp), %rdi
leaq 0x668(%rsp), %rsi
callq 0xbb10
jmp 0xdf06
movq 0x118(%rsp), %rdi
movb $0x0, 0x667(%rsp)
movq 0xa70cb(%rip), %rsi     # 0xb4fe8
movq 0xa704c(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xdf65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x668(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x667(%rsp)
jne 0xdf71
jmp 0xdf7e
movq 0x118(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
movb $0x2c, 0x644(%rsp)
movb $0x3b, 0x645(%rsp)
movb $0x2e, 0x646(%rsp)
movb $0x7e, 0x647(%rsp)
leaq 0x644(%rsp), %rax
movq %rax, 0x648(%rsp)
movq $0x4, 0x650(%rsp)
leaq 0x648(%rsp), %rax
movq %rax, 0x658(%rsp)
movq 0x658(%rsp), %rdi
callq 0x12410
movq %rax, 0x638(%rsp)
movq 0x658(%rsp), %rdi
callq 0x12420
movq %rax, 0x630(%rsp)
movq 0x638(%rsp), %rax
cmpq 0x630(%rsp), %rax
je 0xe222
movq 0x638(%rsp), %rax
movb (%rax), %al
movb %al, 0x62f(%rsp)
leaq 0x800(%rsp), %rdi
callq 0xb520
movsbl (%rax), %eax
movsbl 0x62f(%rsp), %ecx
cmpl %ecx, %eax
jne 0xe207
movb $0x1, 0x5a6(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0x110(%rsp)
leaq 0x7c3b0(%rip), %rdx     # 0x8a411
leaq 0x5e8(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xe078
movsbl 0x62f(%rsp), %eax
movl %eax, 0x104(%rsp)
leaq 0x5a7(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0xbc50
movl 0x104(%rsp), %edx
movq 0x108(%rsp), %rcx
leaq 0x5a8(%rsp), %rdi
movl $0x1, %esi
callq 0x12460
jmp 0xe0bf
leaq 0x5c8(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
movl $0x22, %edx
callq 0x1b9c0
jmp 0xe0db
leaq 0x608(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
leaq 0x5c8(%rsp), %rdx
callq 0x11c40
jmp 0xe0fa
movq 0x110(%rsp), %rdi
leaq 0x608(%rsp), %rsi
callq 0xbb10
jmp 0xe111
movq 0x110(%rsp), %rdi
movb $0x0, 0x5a6(%rsp)
movq 0xa6ec0(%rip), %rsi     # 0xb4fe8
movq 0xa6e41(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe1e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe1cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe1c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe1b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x608(%rsp), %rdi
callq 0xbde8
leaq 0x5c8(%rsp), %rdi
callq 0xbde8
leaq 0x5a8(%rsp), %rdi
callq 0xbde8
leaq 0x5a7(%rsp), %rdi
callq 0xb740
leaq 0x5e8(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x5a6(%rsp)
jne 0xe1f5
jmp 0xe202
movq 0x110(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
jmp 0xe209
movq 0x638(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x638(%rsp)
jmp 0xdff9
leaq 0x57f(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0xbc50
movq 0xf8(%rsp), %rdx
leaq 0x7c1ea(%rip), %rsi     # 0x8a430
leaq 0x580(%rsp), %rdi
callq 0x10120
jmp 0xe255
leaq 0x800(%rsp), %rdi
leaq 0x580(%rsp), %rsi
callq 0x124e0
movb %al, 0xf7(%rsp)
jmp 0xe273
leaq 0x580(%rsp), %rdi
callq 0xbde8
leaq 0x57f(%rsp), %rdi
callq 0xb740
movb 0xf7(%rsp), %al
testb $0x1, %al
jne 0xe29d
jmp 0xe3b2
movb $0x1, 0x557(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0xe8(%rsp)
leaq 0x7c175(%rip), %rdx     # 0x8a433
leaq 0x558(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xe2d5
movq 0xe8(%rsp), %rdi
leaq 0x558(%rsp), %rsi
callq 0xbb10
jmp 0xe2ec
movq 0xe8(%rsp), %rdi
movb $0x0, 0x557(%rsp)
movq 0xa6ce5(%rip), %rsi     # 0xb4fe8
movq 0xa6c66(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe34b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x580(%rsp), %rdi
callq 0xbde8
leaq 0x57f(%rsp), %rdi
callq 0xb740
jmp 0xf0f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe394
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x558(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x557(%rsp)
jne 0xe3a0
jmp 0xe3ad
movq 0xe8(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
leaq 0x52f(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0xbc50
movq 0xe0(%rsp), %rdx
leaq 0x7c07f(%rip), %rsi     # 0x8a455
leaq 0x530(%rsp), %rdi
callq 0x10120
jmp 0xe3e5
leaq 0x800(%rsp), %rdi
leaq 0x530(%rsp), %rsi
callq 0x124e0
movb %al, 0xdf(%rsp)
jmp 0xe403
leaq 0x530(%rsp), %rdi
callq 0xbde8
leaq 0x52f(%rsp), %rdi
callq 0xb740
movb 0xdf(%rsp), %al
testb $0x1, %al
jne 0xe42d
jmp 0xe542
movb $0x1, 0x507(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0xd0(%rsp)
leaq 0x7c00a(%rip), %rdx     # 0x8a458
leaq 0x508(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xe465
movq 0xd0(%rsp), %rdi
leaq 0x508(%rsp), %rsi
callq 0xbb10
jmp 0xe47c
movq 0xd0(%rsp), %rdi
movb $0x0, 0x507(%rsp)
movq 0xa6b55(%rip), %rsi     # 0xb4fe8
movq 0xa6ad6(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe4db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x530(%rsp), %rdi
callq 0xbde8
leaq 0x52f(%rsp), %rdi
callq 0xb740
jmp 0xf0f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x508(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x507(%rsp)
jne 0xe530
jmp 0xe53d
movq 0xd0(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
jmp 0xe544
leaq 0xad0(%rsp), %rdi
callq 0xf530
jmp 0xe553
leaq 0xa88(%rsp), %rsi
leaq 0xb58(%rsp), %rdi
callq 0xb080
jmp 0xe56a
leaq 0xb90(%rsp), %rdi
leaq 0x800(%rsp), %rsi
callq 0x12510
jmp 0xe581
jmp 0xf0d2
cmpq $0x0, 0xbb0(%rsp)
jne 0xe661
movb $0x1, 0x4df(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0xc8(%rsp)
leaq 0x7bec4(%rip), %rdx     # 0x8a47a
leaq 0x4e0(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xe5cd
movq 0xc8(%rsp), %rdi
leaq 0x4e0(%rsp), %rsi
callq 0xbb10
jmp 0xe5e4
movq 0xc8(%rsp), %rdi
movb $0x0, 0x4df(%rsp)
movq 0xa69ed(%rip), %rsi     # 0xb4fe8
movq 0xa696e(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe643
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x4e0(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x4df(%rsp)
jne 0xe64f
jmp 0xe65c
movq 0xc8(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
leaq 0x820(%rsp), %rax
addq $0x268, %rax            # imm = 0x268
movq %rax, 0x4d0(%rsp)
movq 0x4d0(%rsp), %rdi
callq 0xb600
movq %rax, 0x4c8(%rsp)
movq 0x4d0(%rsp), %rdi
callq 0xb430
movq %rax, 0x4c0(%rsp)
leaq 0x4c8(%rsp), %rdi
leaq 0x4c0(%rsp), %rsi
callq 0x12380
testb $0x1, %al
jne 0xe6bf
jmp 0xf0d0
leaq 0x4c8(%rsp), %rdi
callq 0x123c0
movb (%rax), %al
movb %al, 0x4bf(%rsp)
movb $0x0, 0x4be(%rsp)
movsbl 0x4bf(%rsp), %eax
cmpl $0x2d, %eax
jne 0xe7f0
testb $0x1, 0xe36(%rsp)
je 0xe6fd
jmp 0xe7eb
leaq 0xbb8(%rsp), %rdi
callq 0x12550
testb $0x1, %al
jne 0xe710
jmp 0xe71d
movb $0x1, 0x4be(%rsp)
jmp 0xe7e9
movb $0x1, 0x497(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0xc0(%rsp)
leaq 0x7bd58(%rip), %rdx     # 0x8a496
leaq 0x498(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xe755
movq 0xc0(%rsp), %rdi
leaq 0x498(%rsp), %rsi
callq 0xbb10
jmp 0xe76c
movq 0xc0(%rsp), %rdi
movb $0x0, 0x497(%rsp)
movq 0xa6865(%rip), %rsi     # 0xb4fe8
movq 0xa67e6(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe7cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x498(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x497(%rsp)
jne 0xe7d7
jmp 0xe7e4
movq 0xc0(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
jmp 0xe7eb
jmp 0xf099
movsbl 0x4bf(%rsp), %edi
callq 0x12570
movb %al, 0xbf(%rsp)
jmp 0xe806
movb 0xbf(%rsp), %al
movb %al, 0x496(%rsp)
testb $0x1, 0xe5b(%rsp)
je 0xecee
movb 0x496(%rsp), %al
movb %al, 0xaf(%rsp)
leaq 0x46f(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0xbc50
movq 0xb0(%rsp), %rdx
leaq 0x7bc59(%rip), %rsi     # 0x8a4ad
leaq 0x470(%rsp), %rdi
callq 0x10120
jmp 0xe863
movb 0xaf(%rsp), %al
movsbl %al, %edi
leaq 0x470(%rsp), %rsi
callq 0x12590
movb %al, 0xae(%rsp)
jmp 0xe883
movb 0xae(%rsp), %al
xorb $-0x1, %al
movb %al, 0xad(%rsp)
leaq 0x470(%rsp), %rdi
callq 0xbde8
leaq 0x46f(%rsp), %rdi
callq 0xb740
movb 0xad(%rsp), %al
testb $0x1, %al
jne 0xe8bd
jmp 0xeb1b
movb $0x1, 0x3a7(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0xa0(%rsp)
leaq 0x7bc05(%rip), %rdx     # 0x8a4e3
leaq 0x3c8(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xe8f5
movsbl 0x4bf(%rsp), %esi
leaq 0x3a8(%rsp), %rdi
callq 0x11d30
jmp 0xe90c
leaq 0x3e8(%rsp), %rdi
leaq 0x3c8(%rsp), %rsi
leaq 0x3a8(%rsp), %rdx
callq 0x11c40
jmp 0xe92b
leaq 0x7bbd6(%rip), %rdx     # 0x8a508
leaq 0x408(%rsp), %rdi
leaq 0x3e8(%rsp), %rsi
callq 0x11bf0
jmp 0xe949
movsbl 0x4bf(%rsp), %edx
leaq 0x428(%rsp), %rdi
leaq 0x408(%rsp), %rsi
callq 0x125d0
jmp 0xe968
leaq 0x7bb9b(%rip), %rdx     # 0x8a50a
leaq 0x448(%rsp), %rdi
leaq 0x428(%rsp), %rsi
callq 0x11bf0
jmp 0xe986
movq 0xa0(%rsp), %rdi
leaq 0x448(%rsp), %rsi
callq 0xbb10
jmp 0xe99d
movq 0xa0(%rsp), %rdi
movb $0x0, 0x3a7(%rsp)
movq 0xa6634(%rip), %rsi     # 0xb4fe8
movq 0xa65b5(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xe9fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x470(%rsp), %rdi
callq 0xbde8
leaq 0x46f(%rsp), %rdi
callq 0xb740
jmp 0xf0f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xeafd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xeaf0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xeae3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xead6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xeac9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xeabc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x448(%rsp), %rdi
callq 0xbde8
leaq 0x428(%rsp), %rdi
callq 0xbde8
leaq 0x408(%rsp), %rdi
callq 0xbde8
leaq 0x3e8(%rsp), %rdi
callq 0xbde8
leaq 0x3a8(%rsp), %rdi
callq 0xbde8
leaq 0x3c8(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x3a7(%rsp)
jne 0xeb09
jmp 0xeb16
movq 0xa0(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
movb 0x496(%rsp), %al
movb %al, 0x97(%rsp)
leaq 0x37f(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0xbc50
movq 0x98(%rsp), %rdx
leaq 0x7b9bf(%rip), %rsi     # 0x8a50c
leaq 0x380(%rsp), %rdi
callq 0x10120
jmp 0xeb5c
movb 0x97(%rsp), %al
movsbl %al, %edi
leaq 0x380(%rsp), %rsi
callq 0x12590
movb %al, 0x96(%rsp)
jmp 0xeb7c
leaq 0x380(%rsp), %rdi
callq 0xbde8
leaq 0x37f(%rsp), %rdi
callq 0xb740
movb 0x96(%rsp), %al
testb $0x1, %al
jne 0xeba3
jmp 0xec02
movq 0xac8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xac8(%rsp)
jmp 0xec02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xebf0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x380(%rsp), %rdi
callq 0xbde8
leaq 0x37f(%rsp), %rdi
callq 0xb740
jmp 0xf0f8
movb 0x496(%rsp), %al
movb %al, 0x87(%rsp)
leaq 0x357(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0xbc50
movq 0x88(%rsp), %rdx
leaq 0x7b8dd(%rip), %rsi     # 0x8a511
leaq 0x358(%rsp), %rdi
callq 0x10120
jmp 0xec43
movb 0x87(%rsp), %al
movsbl %al, %edi
leaq 0x358(%rsp), %rsi
callq 0x12590
movb %al, 0x86(%rsp)
jmp 0xec63
leaq 0x358(%rsp), %rdi
callq 0xbde8
leaq 0x357(%rsp), %rdi
callq 0xb740
movb 0x86(%rsp), %al
testb $0x1, %al
jne 0xec8a
jmp 0xece9
movq 0xb78(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb78(%rsp)
jmp 0xece9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xecd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x358(%rsp), %rdi
callq 0xbde8
leaq 0x357(%rsp), %rdi
callq 0xb740
jmp 0xf0f8
jmp 0xf097
movb 0x496(%rsp), %al
movb %al, 0x77(%rsp)
leaq 0x32f(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0xbc50
movq 0x78(%rsp), %rdx
leaq 0x7b801(%rip), %rsi     # 0x8a518
leaq 0x330(%rsp), %rdi
callq 0x10120
jmp 0xed26
movb 0x77(%rsp), %al
movsbl %al, %edi
leaq 0x330(%rsp), %rsi
callq 0x12590
movb %al, 0x76(%rsp)
jmp 0xed40
movb 0x76(%rsp), %al
xorb $-0x1, %al
movb %al, 0x75(%rsp)
leaq 0x330(%rsp), %rdi
callq 0xbde8
leaq 0x32f(%rsp), %rdi
callq 0xb740
movb 0x75(%rsp), %al
testb $0x1, %al
jne 0xed71
jmp 0xefc3
movb $0x1, 0x267(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0x68(%rsp)
leaq 0x7b7a8(%rip), %rdx     # 0x8a537
leaq 0x288(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x122f0
jmp 0xeda6
movsbl 0x4bf(%rsp), %esi
leaq 0x268(%rsp), %rdi
callq 0x11d30
jmp 0xedbd
leaq 0x2a8(%rsp), %rdi
leaq 0x288(%rsp), %rsi
leaq 0x268(%rsp), %rdx
callq 0x11c40
jmp 0xeddc
leaq 0x7b725(%rip), %rdx     # 0x8a508
leaq 0x2c8(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x11bf0
jmp 0xedfa
movsbl 0x4bf(%rsp), %edx
leaq 0x2e8(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
callq 0x125d0
jmp 0xee19
leaq 0x7b6ea(%rip), %rdx     # 0x8a50a
leaq 0x308(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
callq 0x11bf0
jmp 0xee37
movq 0x68(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0xbb10
jmp 0xee4b
movq 0x68(%rsp), %rdi
movb $0x0, 0x267(%rsp)
movq 0xa6189(%rip), %rsi     # 0xb4fe8
movq 0xa610a(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xeea7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x330(%rsp), %rdi
callq 0xbde8
leaq 0x32f(%rsp), %rdi
callq 0xb740
jmp 0xf0f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xefa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xef9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xef8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xef81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xef74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xef67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x308(%rsp), %rdi
callq 0xbde8
leaq 0x2e8(%rsp), %rdi
callq 0xbde8
leaq 0x2c8(%rsp), %rdi
callq 0xbde8
leaq 0x2a8(%rsp), %rdi
callq 0xbde8
leaq 0x268(%rsp), %rdi
callq 0xbde8
leaq 0x288(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x267(%rsp)
jne 0xefb4
jmp 0xefbe
movq 0x68(%rsp), %rdi
callq 0xb540
jmp 0xf0f8
movb 0x496(%rsp), %al
movb %al, 0x5f(%rsp)
leaq 0x23f(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xbc50
movq 0x60(%rsp), %rdx
leaq 0x7b53f(%rip), %rsi     # 0x8a52b
leaq 0x240(%rsp), %rdi
callq 0x10120
jmp 0xeffb
movb 0x5f(%rsp), %al
movsbl %al, %edi
leaq 0x240(%rsp), %rsi
callq 0x12590
movb %al, 0x5e(%rsp)
jmp 0xf015
leaq 0x240(%rsp), %rdi
callq 0xbde8
leaq 0x23f(%rsp), %rdi
callq 0xb740
movb 0x5e(%rsp), %al
testb $0x1, %al
jne 0xf039
jmp 0xf095
movq 0xb78(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb78(%rsp)
jmp 0xf095
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xf086
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x240(%rsp), %rdi
callq 0xbde8
leaq 0x23f(%rsp), %rdi
callq 0xb740
jmp 0xf0f8
jmp 0xf097
jmp 0xf099
testb $0x1, 0x4be(%rsp)
jne 0xf0bc
movsbl 0x4bf(%rsp), %esi
leaq 0xb38(%rsp), %rdi
callq 0xb490
jmp 0xf0ba
jmp 0xf0bc
jmp 0xf0be
leaq 0x4c8(%rsp), %rdi
callq 0x123f0
jmp 0xe6a1
jmp 0xf0d2
movq 0xbb0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xbb0(%rsp)
leaq 0x7e0(%rsp), %rdi
callq 0xbde8
jmp 0xd88b
leaq 0x7e0(%rsp), %rdi
callq 0xbde8
jmp 0xf17f
leaq 0x800(%rsp), %rdi
callq 0xbde8
leaq 0x820(%rsp), %rdi
callq 0x12620
leaq 0xad0(%rsp), %rdi
callq 0xf530
jmp 0xf130
cmpq $0x0, 0xbb0(%rsp)
jne 0xf1c1
movl $0x10, %edi
callq 0xb390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x50(%rsp)
leaq 0x7b401(%rip), %rsi     # 0x8a55c
callq 0xb2d0
jmp 0xf162
movq 0x50(%rsp), %rdi
movq 0xa5e7a(%rip), %rsi     # 0xb4fe8
movq 0xa5dfb(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
leaq 0x800(%rsp), %rdi
callq 0xbde8
leaq 0x820(%rsp), %rdi
callq 0x12620
jmp 0xf4b0
movq 0x50(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
callq 0xb540
jmp 0xf4b0
testb $0x1, 0xe5b(%rsp)
je 0xf28b
movq 0xac8(%rsp), %xmm0
movaps 0x7ae31(%rip), %xmm3    # 0x8a010
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x7ae35(%rip), %xmm2    # 0x8a020
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq 0xb80(%rsp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x7ade6(%rip), %xmm1    # 0x8a008
ucomisd %xmm1, %xmm0
jbe 0xf28b
movl $0x10, %edi
callq 0xb390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x48(%rsp)
leaq 0x7b323(%rip), %rsi     # 0x8a567
callq 0xb2d0
jmp 0xf24b
movq 0x48(%rsp), %rdi
movq 0xa5d91(%rip), %rsi     # 0xb4fe8
movq 0xa5d12(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq 0x48(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
callq 0xb540
jmp 0xf4b0
leaq 0xb90(%rsp), %rdi
callq 0x12670
jmp 0xf29a
leaq 0xb90(%rsp), %rdi
movl $0x1, %esi
callq 0x126b0
movq %rax, 0x40(%rsp)
jmp 0xf2b3
movq 0x40(%rsp), %rax
movq %rax, 0x230(%rsp)
cmpq $-0x1, 0x230(%rsp)
je 0xf3a8
movb $0x1, 0x20f(%rsp)
movl $0x10, %edi
callq 0xb390
movq %rax, 0x30(%rsp)
movq 0x230(%rsp), %rsi
leaq 0xb90(%rsp), %rdi
callq 0x12790
movq %rax, 0x38(%rsp)
jmp 0xf302
movq 0x38(%rsp), %rdx
leaq 0x7b28d(%rip), %rsi     # 0x8a59b
leaq 0x210(%rsp), %rdi
callq 0x12120
jmp 0xf31d
movq 0x30(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0xbb10
jmp 0xf331
movq 0x30(%rsp), %rdi
movb $0x0, 0x20f(%rsp)
movq 0xa5ca3(%rip), %rsi     # 0xb4fe8
movq 0xa5c24(%rip), %rdx     # 0xb4f70
callq 0xbbe0
jmp 0xf525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
jmp 0xf38d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe60(%rsp)
movl %eax, 0xe5c(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xbde8
testb $0x1, 0x20f(%rsp)
jne 0xf399
jmp 0xf3a3
movq 0x30(%rsp), %rdi
callq 0xb540
jmp 0xf4b0
leaq 0xb90(%rsp), %rdi
callq 0x12850
movq %rax, %rsi
movq 0xa5bd1(%rip), %rdi     # 0xb4f90
callq 0xb150
movq %rax, 0x28(%rsp)
jmp 0xf3cb
movq 0x28(%rsp), %rdi
movq 0xa5b79(%rip), %rsi     # 0xb4f50
callq 0xb700
movq %rax, 0x20(%rsp)
jmp 0xf3e3
movq 0x20(%rsp), %rdi
movq 0xb88(%rsp), %rsi
callq 0xb150
movq %rax, 0x18(%rsp)
jmp 0xf3fc
movq 0x18(%rsp), %rdi
movq 0xa5b48(%rip), %rsi     # 0xb4f50
callq 0xb700
movq %rax, 0x10(%rsp)
jmp 0xf414
movq 0x10(%rsp), %rdi
movq 0xb80(%rsp), %rsi
callq 0xb150
movq %rax, 0x8(%rsp)
jmp 0xf42d
movq 0x8(%rsp), %rdi
movq 0xa5b17(%rip), %rsi     # 0xb4f50
callq 0xb700
jmp 0xf440
leaq 0xb38(%rsp), %rdi
callq 0xbde8
leaq 0xb58(%rsp), %rdi
callq 0xbde8
leaq 0xb90(%rsp), %rdi
callq 0x12870
leaq 0xbb8(%rsp), %rdi
callq 0x12880
leaq 0xbc0(%rsp), %rdi
callq 0x12880
leaq 0xd00(%rsp), %rdi
callq 0xbde8
leaq 0xd48(%rsp), %rdi
callq 0xbde8
leaq 0xe90(%rsp), %rdi
callq 0xbde8
addq $0xeb8, %rsp            # imm = 0xEB8
retq
leaq 0xb38(%rsp), %rdi
callq 0xbde8
leaq 0xb58(%rsp), %rdi
callq 0xbde8
leaq 0xb90(%rsp), %rdi
callq 0x12870
leaq 0xbb8(%rsp), %rdi
callq 0x12880
leaq 0xbc0(%rsp), %rdi
callq 0x12880
leaq 0xd00(%rsp), %rdi
callq 0xbde8
leaq 0xd48(%rsp), %rdi
callq 0xbde8
leaq 0xe90(%rsp), %rdi
callq 0xbde8
movq 0xe60(%rsp), %rdi
callq 0xbc40
nopw %cs:(%rax,%rax)