// File: ncbi[P]amr/alignment.cpp
// Function: Alignment_sp::Alignment::Alignment(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)
Alignment::Alignment (const string &line,
                      bool targetProt_arg,
                      bool refProt_arg)
: targetProt (targetProt_arg)
, refProt (refProt_arg)
, alProt (targetProt || refProt)
, al2ref_len    (alProt && ! refProt    ? 3 : 1)
, al2target_len (alProt && ! targetProt ? 3 : 1)
{
  try
  {
    istringstream iss (line);
    iss >> targetName >> refName >> targetStart >> targetEnd >> targetLen >> refStart >> refEnd >> refLen >> targetSeq >> refSeq;
    strUpper (targetSeq);
    strUpper (refSeq);
    
    QC_ASSERT (! refSeq. empty ());	
    QC_ASSERT (targetSeq. size () == refSeq. size ());    

    if (! targetProt && ! refProt)
    {
      QC_ASSERT (refStart != refEnd);
      const bool refStrand = refStart < refEnd;  
      if (! refStrand)
      {
        swap (refStart, refEnd);
      	reverseDna (targetSeq);
      	reverseDna (refSeq);
      	toggle (targetStrand);
      }
    }

    if (! targetProt && refProt)
    {
	    QC_ASSERT (targetStart != targetEnd);
	    targetStrand = targetStart < targetEnd;  
	    if (! targetStrand)
	      swap (targetStart, targetEnd);
	  }
    
    QC_ASSERT (refStart >= 1);
    QC_ASSERT (targetStart >= 1);
    refStart--;
    targetStart--;

    if (refProt)
    {
      if (   refEnd == refLen 
          && refSeq. back () == '*'
         )
      {
        targetStopCodon = toEbool (targetSeq. back () == '*');
        if (targetStopCodon == etrue)
        {
          nident--;        
        //if (targetProt)
          //targetLen -= al2target_len;
        }
        do
        {
          // Target
          targetSeq. erase (targetSeq. size () - 1);
          if (targetStrand)
            targetEnd -= al2target_len;
          else
            targetStart += al2target_len;
          // Reference
          refSeq. erase (refSeq. size () - 1);
          refEnd--;
          QC_ASSERT (! refSeq. empty ());
        }
        while (targetSeq. back () != refSeq. back ());
      //seqChanges ??
      }
      else if (   refEnd == refLen - 1 
               && targetTail (false) >= al2target_len
              )
        targetStopCodon = efalse;
      refLen--;
    }

    normalizeSeqs (targetSeq, refSeq);    
    set_nident ();
  }
  catch (...)
  {
  	cout << line << endl;
  	throw;
  }
}

// Assembly:
subq $0xa68, %rsp            # imm = 0xA68
movb %cl, %al
movb %dl, %cl
movq %rdi, 0xa60(%rsp)
movq %rsi, 0xa58(%rsp)
andb $0x1, %cl
movb %cl, 0xa57(%rsp)
andb $0x1, %al
movb %al, 0xa56(%rsp)
movq 0xa60(%rsp), %rdi
movq %rdi, 0x140(%rsp)
callq 0x104a0
movq 0x140(%rsp), %rdi
leaq 0x85cd6(%rip), %rax     # 0x11f768
addq $0x10, %rax
movq %rax, (%rdi)
movb 0xa57(%rsp), %al
andb $0x1, %al
movb %al, 0x8(%rdi)
addq $0x10, %rdi
movq %rdi, 0x118(%rsp)
callq 0xda50
movq 0x140(%rsp), %rdi
addq $0x30, %rdi
movq %rdi, 0x120(%rsp)
callq 0xda50
movq 0x140(%rsp), %rdi
movq $0x0, 0x50(%rdi)
movq $0x0, 0x58(%rdi)
movq $0x0, 0x60(%rdi)
movb $0x1, 0x68(%rdi)
movl $0x2, 0x6c(%rdi)
movb 0xa56(%rsp), %al
andb $0x1, %al
movb %al, 0x70(%rdi)
addq $0x78, %rdi
movq %rdi, 0x128(%rsp)
callq 0xda50
movq 0x140(%rsp), %rdi
addq $0x98, %rdi
movq %rdi, 0x130(%rsp)
callq 0xda50
movq 0x140(%rsp), %rdi
movq $0x0, 0xb8(%rdi)
movq $0x0, 0xc0(%rdi)
movq $0x0, 0xc8(%rdi)
addq $0xd0, %rdi
movq %rdi, 0x138(%rsp)
callq 0xa4210
movq 0x140(%rsp), %rcx
movq %rcx, %rax
addq $0x1f8, %rax            # imm = 0x1F8
movq %rax, 0x148(%rsp)
movb $0x1, %al
testb $0x1, 0x8(%rcx)
movb %al, 0x156(%rsp)
jne 0x99baa
movq 0x140(%rsp), %rax
movb 0x70(%rax), %al
movb %al, 0x156(%rsp)
movq 0x140(%rsp), %rcx
movq 0x148(%rsp), %rax
movb 0x156(%rsp), %dl
andb $0x1, %dl
movb %dl, (%rax)
movq $0x0, 0x200(%rcx)
movq %rcx, %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, 0x108(%rsp)
xorl %eax, %eax
testb $0x1, 0x1f8(%rcx)
movb %al, 0x117(%rsp)
je 0x99c08
movq 0x140(%rsp), %rax
movb 0x70(%rax), %al
xorb $-0x1, %al
movb %al, 0x117(%rsp)
movq 0x140(%rsp), %rcx
movq 0x108(%rsp), %rax
movb 0x117(%rsp), %dil
movl $0x1, %edx
movl $0x3, %esi
testb $0x1, %dil
cmovnel %esi, %edx
movslq %edx, %rdx
movq %rdx, (%rax)
movq %rcx, %rax
addq $0x210, %rax            # imm = 0x210
movq %rax, 0xf8(%rsp)
xorl %eax, %eax
testb $0x1, 0x1f8(%rcx)
movb %al, 0x107(%rsp)
je 0x99c6e
movq 0x140(%rsp), %rax
movb 0x8(%rax), %al
xorb $-0x1, %al
movb %al, 0x107(%rsp)
movq 0x140(%rsp), %rdi
movq 0xf8(%rsp), %rax
movb 0x107(%rsp), %cl
movzbl %cl, %ecx
andl $0x1, %ecx
leaq 0x1(%rcx,%rcx), %rcx
movq %rcx, (%rax)
addq $0x218, %rdi            # imm = 0x218
movq %rdi, 0xf0(%rsp)
callq 0xa42e0
movq 0xa58(%rsp), %rsi
leaq 0x8d0(%rsp), %rdi
movl $0x8, %edx
callq 0xdc90
jmp 0x99cc3
movq 0x140(%rsp), %rsi
addq $0x10, %rsi
leaq 0x8d0(%rsp), %rdi
callq 0xd970
movq %rax, 0xe8(%rsp)
jmp 0x99ce6
movq 0xe8(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0x78, %rsi
callq 0xd970
movq %rax, 0xe0(%rsp)
jmp 0x99d09
movq 0xe0(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0x50, %rsi
callq 0xda80
movq %rax, 0xd8(%rsp)
jmp 0x99d2c
movq 0xd8(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0x58, %rsi
callq 0xda80
movq %rax, 0xd0(%rsp)
jmp 0x99d4f
movq 0xd0(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0x60, %rsi
callq 0xda80
movq %rax, 0xc8(%rsp)
jmp 0x99d72
movq 0xc8(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0xb8, %rsi
callq 0xda80
movq %rax, 0xc0(%rsp)
jmp 0x99d98
movq 0xc0(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0xc0, %rsi
callq 0xda80
movq %rax, 0xb8(%rsp)
jmp 0x99dbe
movq 0xb8(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0xc8, %rsi
callq 0xda80
movq %rax, 0xb0(%rsp)
jmp 0x99de4
movq 0xb0(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0x30, %rsi
callq 0xd970
movq %rax, 0xa8(%rsp)
jmp 0x99e07
movq 0xa8(%rsp), %rdi
movq 0x140(%rsp), %rsi
addq $0x98, %rsi
callq 0xd970
jmp 0x99e25
movq 0x140(%rsp), %rdi
addq $0x30, %rdi
callq 0x1a460
jmp 0x99e38
movq 0x140(%rsp), %rdi
addq $0x98, %rdi
callq 0x1a460
jmp 0x99e4e
callq 0xd0a0
movq 0x140(%rsp), %rdi
movl $0x0, (%rax)
addq $0x98, %rdi
callq 0xdc60
testb $0x1, %al
jne 0x99e76
jmp 0x9a13b
callq 0xd8c0
cmpl $0x0, %eax
jne 0x9a131
leaq 0x81f(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0xdd50
movq 0xa0(%rsp), %rdx
leaq 0x4d2c8(%rip), %rsi     # 0xe7170
leaq 0x820(%rsp), %rdi
callq 0xfae0
jmp 0x99eb7
leaq 0x7f8(%rsp), %rdi
movl $0x256, %esi            # imm = 0x256
callq 0x11600
jmp 0x99ecb
leaq 0x840(%rsp), %rdi
leaq 0x820(%rsp), %rsi
leaq 0x7f8(%rsp), %rdx
callq 0x11510
jmp 0x99eea
leaq 0x492e0(%rip), %rdx     # 0xe31d1
leaq 0x860(%rsp), %rdi
leaq 0x840(%rsp), %rsi
callq 0x114c0
jmp 0x99f08
leaq 0x7b7(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0xdd50
movq 0x98(%rsp), %rdx
leaq 0x4d9be(%rip), %rsi     # 0xe78ea
leaq 0x7b8(%rsp), %rdi
callq 0xfae0
jmp 0x99f3b
leaq 0x49a62(%rip), %rdx     # 0xe39a4
leaq 0x7d8(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x114c0
jmp 0x99f59
leaq 0x880(%rsp), %rdi
leaq 0x860(%rsp), %rsi
leaq 0x7d8(%rsp), %rdx
callq 0x11510
jmp 0x99f78
leaq 0x4d9aa(%rip), %rdx     # 0xe7929
leaq 0x8a0(%rsp), %rdi
leaq 0x880(%rsp), %rsi
callq 0x114c0
jmp 0x99f96
leaq 0x8a0(%rsp), %rdi
callq 0x173d0
jmp 0x99fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b4ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b4f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a11f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a112
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a105
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a0f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a0de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a0d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a0c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a0b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x8a0(%rsp), %rdi
callq 0xdf08
leaq 0x880(%rsp), %rdi
callq 0xdf08
leaq 0x7d8(%rsp), %rdi
callq 0xdf08
leaq 0x7b8(%rsp), %rdi
callq 0xdf08
leaq 0x7b7(%rsp), %rdi
callq 0xd7a0
leaq 0x860(%rsp), %rdi
callq 0xdf08
leaq 0x840(%rsp), %rdi
callq 0xdf08
leaq 0x7f8(%rsp), %rdi
callq 0xdf08
leaq 0x820(%rsp), %rdi
callq 0xdf08
leaq 0x81f(%rsp), %rdi
callq 0xd7a0
jmp 0x9b4f2
movl $0x1, %edi
callq 0xd8e0
callq 0xd0a0
movq 0x140(%rsp), %rdi
movl $0x0, (%rax)
addq $0x30, %rdi
callq 0xd520
movq 0x140(%rsp), %rdi
movq %rax, 0x90(%rsp)
addq $0x98, %rdi
callq 0xd520
movq %rax, %rcx
movq 0x90(%rsp), %rax
cmpq %rcx, %rax
je 0x9a41a
callq 0xd8c0
cmpl $0x0, %eax
jne 0x9a410
leaq 0x70f(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0xdd50
movq 0x88(%rsp), %rdx
leaq 0x4cfb7(%rip), %rsi     # 0xe7170
leaq 0x710(%rsp), %rdi
callq 0xfae0
jmp 0x9a1c8
leaq 0x6e8(%rsp), %rdi
movl $0x257, %esi            # imm = 0x257
callq 0x11600
jmp 0x9a1dc
leaq 0x730(%rsp), %rdi
leaq 0x710(%rsp), %rsi
leaq 0x6e8(%rsp), %rdx
callq 0x11510
jmp 0x9a1fb
leaq 0x48fcf(%rip), %rdx     # 0xe31d1
leaq 0x750(%rsp), %rdi
leaq 0x730(%rsp), %rsi
callq 0x114c0
jmp 0x9a219
leaq 0x6a7(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0xdd50
movq 0x80(%rsp), %rdx
leaq 0x4d6ad(%rip), %rsi     # 0xe78ea
leaq 0x6a8(%rsp), %rdi
callq 0xfae0
jmp 0x9a24c
leaq 0x49751(%rip), %rdx     # 0xe39a4
leaq 0x6c8(%rsp), %rdi
leaq 0x6a8(%rsp), %rsi
callq 0x114c0
jmp 0x9a26a
leaq 0x770(%rsp), %rdi
leaq 0x750(%rsp), %rsi
leaq 0x6c8(%rsp), %rdx
callq 0x11510
jmp 0x9a289
leaq 0x4d6ac(%rip), %rdx     # 0xe793c
leaq 0x790(%rsp), %rdi
leaq 0x770(%rsp), %rsi
callq 0x114c0
jmp 0x9a2a7
leaq 0x790(%rsp), %rdi
callq 0x173d0
jmp 0x9a2b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a3fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a3f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a3e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a3d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a3bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a3b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a3a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a396
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x790(%rsp), %rdi
callq 0xdf08
leaq 0x770(%rsp), %rdi
callq 0xdf08
leaq 0x6c8(%rsp), %rdi
callq 0xdf08
leaq 0x6a8(%rsp), %rdi
callq 0xdf08
leaq 0x6a7(%rsp), %rdi
callq 0xd7a0
leaq 0x750(%rsp), %rdi
callq 0xdf08
leaq 0x730(%rsp), %rdi
callq 0xdf08
leaq 0x6e8(%rsp), %rdi
callq 0xdf08
leaq 0x710(%rsp), %rdi
callq 0xdf08
leaq 0x70f(%rsp), %rdi
callq 0xd7a0
jmp 0x9b4f2
movl $0x1, %edi
callq 0xd8e0
movq 0x140(%rsp), %rax
testb $0x1, 0x8(%rax)
jne 0x9a776
movq 0x140(%rsp), %rax
testb $0x1, 0x70(%rax)
jne 0x9a776
callq 0xd0a0
movq 0x140(%rsp), %rcx
movl $0x0, (%rax)
movq 0xb8(%rcx), %rax
cmpq 0xc0(%rcx), %rax
jne 0x9a6ec
callq 0xd8c0
cmpl $0x0, %eax
jne 0x9a6e2
leaq 0x5ff(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0xdd50
movq 0x78(%rsp), %rdx
leaq 0x4ccdf(%rip), %rsi     # 0xe7170
leaq 0x600(%rsp), %rdi
callq 0xfae0
jmp 0x9a4a0
leaq 0x5d8(%rsp), %rdi
movl $0x25b, %esi            # imm = 0x25B
callq 0x11600
jmp 0x9a4b4
leaq 0x620(%rsp), %rdi
leaq 0x600(%rsp), %rsi
leaq 0x5d8(%rsp), %rdx
callq 0x11510
jmp 0x9a4d3
leaq 0x48cf7(%rip), %rdx     # 0xe31d1
leaq 0x640(%rsp), %rdi
leaq 0x620(%rsp), %rsi
callq 0x114c0
jmp 0x9a4f1
leaq 0x597(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0xdd50
movq 0x70(%rsp), %rdx
leaq 0x4d3db(%rip), %rsi     # 0xe78ea
leaq 0x598(%rsp), %rdi
callq 0xfae0
jmp 0x9a51e
leaq 0x4947f(%rip), %rdx     # 0xe39a4
leaq 0x5b8(%rsp), %rdi
leaq 0x598(%rsp), %rsi
callq 0x114c0
jmp 0x9a53c
leaq 0x660(%rsp), %rdi
leaq 0x640(%rsp), %rsi
leaq 0x5b8(%rsp), %rdx
callq 0x11510
jmp 0x9a55b
leaq 0x4d400(%rip), %rdx     # 0xe7962
leaq 0x680(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0x114c0
jmp 0x9a579
leaq 0x680(%rsp), %rdi
callq 0x173d0
jmp 0x9a588
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a6d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a6c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a6b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a6a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a68f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a682
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a675
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a668
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x680(%rsp), %rdi
callq 0xdf08
leaq 0x660(%rsp), %rdi
callq 0xdf08
leaq 0x5b8(%rsp), %rdi
callq 0xdf08
leaq 0x598(%rsp), %rdi
callq 0xdf08
leaq 0x597(%rsp), %rdi
callq 0xd7a0
leaq 0x640(%rsp), %rdi
callq 0xdf08
leaq 0x620(%rsp), %rdi
callq 0xdf08
leaq 0x5d8(%rsp), %rdi
callq 0xdf08
leaq 0x600(%rsp), %rdi
callq 0xdf08
leaq 0x5ff(%rsp), %rdi
callq 0xd7a0
jmp 0x9b4f2
movl $0x1, %edi
callq 0xd8e0
movq 0x140(%rsp), %rcx
movq 0xb8(%rcx), %rax
cmpq 0xc0(%rcx), %rax
setb %al
andb $0x1, %al
movb %al, 0x596(%rsp)
testb $0x1, 0x596(%rsp)
jne 0x9a774
movq 0x140(%rsp), %rsi
movq %rsi, %rdi
addq $0xb8, %rdi
addq $0xc0, %rsi
callq 0xa4310
movq 0x140(%rsp), %rdi
addq $0x30, %rdi
callq 0x9b5e0
jmp 0x9a749
movq 0x140(%rsp), %rdi
addq $0x98, %rdi
callq 0x9b5e0
jmp 0x9a75f
movq 0x140(%rsp), %rdi
addq $0x68, %rdi
callq 0xa4350
jmp 0x9a772
jmp 0x9a774
jmp 0x9a776
movq 0x140(%rsp), %rax
testb $0x1, 0x8(%rax)
jne 0x9aa7b
movq 0x140(%rsp), %rax
testb $0x1, 0x70(%rax)
je 0x9aa7b
callq 0xd0a0
movq 0x140(%rsp), %rcx
movl $0x0, (%rax)
movq 0x50(%rcx), %rax
cmpq 0x58(%rcx), %rax
jne 0x9aa42
callq 0xd8c0
cmpl $0x0, %eax
jne 0x9aa38
leaq 0x4ef(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0xdd50
movq 0x68(%rsp), %rdx
leaq 0x4c989(%rip), %rsi     # 0xe7170
leaq 0x4f0(%rsp), %rdi
callq 0xfae0
jmp 0x9a7f6
leaq 0x4c8(%rsp), %rdi
movl $0x268, %esi            # imm = 0x268
callq 0x11600
jmp 0x9a80a
leaq 0x510(%rsp), %rdi
leaq 0x4f0(%rsp), %rsi
leaq 0x4c8(%rsp), %rdx
callq 0x11510
jmp 0x9a829
leaq 0x489a1(%rip), %rdx     # 0xe31d1
leaq 0x530(%rsp), %rdi
leaq 0x510(%rsp), %rsi
callq 0x114c0
jmp 0x9a847
leaq 0x487(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xdd50
movq 0x60(%rsp), %rdx
leaq 0x4d085(%rip), %rsi     # 0xe78ea
leaq 0x488(%rsp), %rdi
callq 0xfae0
jmp 0x9a874
leaq 0x49129(%rip), %rdx     # 0xe39a4
leaq 0x4a8(%rsp), %rdi
leaq 0x488(%rsp), %rsi
callq 0x114c0
jmp 0x9a892
leaq 0x550(%rsp), %rdi
leaq 0x530(%rsp), %rsi
leaq 0x4a8(%rsp), %rdx
callq 0x11510
jmp 0x9a8b1
leaq 0x4d0bd(%rip), %rdx     # 0xe7975
leaq 0x570(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x114c0
jmp 0x9a8cf
leaq 0x570(%rsp), %rdi
callq 0x173d0
jmp 0x9a8de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9aa26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9aa19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9aa0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a9ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a9e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a9d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a9cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9a9be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x570(%rsp), %rdi
callq 0xdf08
leaq 0x550(%rsp), %rdi
callq 0xdf08
leaq 0x4a8(%rsp), %rdi
callq 0xdf08
leaq 0x488(%rsp), %rdi
callq 0xdf08
leaq 0x487(%rsp), %rdi
callq 0xd7a0
leaq 0x530(%rsp), %rdi
callq 0xdf08
leaq 0x510(%rsp), %rdi
callq 0xdf08
leaq 0x4c8(%rsp), %rdi
callq 0xdf08
leaq 0x4f0(%rsp), %rdi
callq 0xdf08
leaq 0x4ef(%rsp), %rdi
callq 0xd7a0
jmp 0x9b4f2
movl $0x1, %edi
callq 0xd8e0
movq 0x140(%rsp), %rax
movq 0x50(%rax), %rcx
cmpq 0x58(%rax), %rcx
setb %cl
andb $0x1, %cl
movb %cl, 0x68(%rax)
testb $0x1, 0x68(%rax)
jne 0x9aa79
movq 0x140(%rsp), %rsi
movq %rsi, %rdi
addq $0x50, %rdi
addq $0x58, %rsi
callq 0xa4310
jmp 0x9aa7b
callq 0xd0a0
movq %rax, %rcx
movq 0x140(%rsp), %rax
movl $0x0, (%rcx)
cmpq $0x1, 0xb8(%rax)
jae 0x9ad26
callq 0xd8c0
cmpl $0x0, %eax
jne 0x9ad1c
leaq 0x3df(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0xdd50
movq 0x58(%rsp), %rdx
leaq 0x4c6a5(%rip), %rsi     # 0xe7170
leaq 0x3e0(%rsp), %rdi
callq 0xfae0
jmp 0x9aada
leaq 0x3b8(%rsp), %rdi
movl $0x26e, %esi            # imm = 0x26E
callq 0x11600
jmp 0x9aaee
leaq 0x400(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
leaq 0x3b8(%rsp), %rdx
callq 0x11510
jmp 0x9ab0d
leaq 0x486bd(%rip), %rdx     # 0xe31d1
leaq 0x420(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x114c0
jmp 0x9ab2b
leaq 0x377(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xdd50
movq 0x50(%rsp), %rdx
leaq 0x4cda1(%rip), %rsi     # 0xe78ea
leaq 0x378(%rsp), %rdi
callq 0xfae0
jmp 0x9ab58
leaq 0x48e45(%rip), %rdx     # 0xe39a4
leaq 0x398(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x114c0
jmp 0x9ab76
leaq 0x440(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x398(%rsp), %rdx
callq 0x11510
jmp 0x9ab95
leaq 0x4cdf2(%rip), %rdx     # 0xe798e
leaq 0x460(%rsp), %rdi
leaq 0x440(%rsp), %rsi
callq 0x114c0
jmp 0x9abb3
leaq 0x460(%rsp), %rdi
callq 0x173d0
jmp 0x9abc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9ad0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9acfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9acf0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9ace3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9acc9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9acbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9acaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9aca2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x460(%rsp), %rdi
callq 0xdf08
leaq 0x440(%rsp), %rdi
callq 0xdf08
leaq 0x398(%rsp), %rdi
callq 0xdf08
leaq 0x378(%rsp), %rdi
callq 0xdf08
leaq 0x377(%rsp), %rdi
callq 0xd7a0
leaq 0x420(%rsp), %rdi
callq 0xdf08
leaq 0x400(%rsp), %rdi
callq 0xdf08
leaq 0x3b8(%rsp), %rdi
callq 0xdf08
leaq 0x3e0(%rsp), %rdi
callq 0xdf08
leaq 0x3df(%rsp), %rdi
callq 0xd7a0
jmp 0x9b4f2
movl $0x1, %edi
callq 0xd8e0
callq 0xd0a0
movq %rax, %rcx
movq 0x140(%rsp), %rax
movl $0x0, (%rcx)
cmpq $0x1, 0x50(%rax)
jae 0x9afce
callq 0xd8c0
cmpl $0x0, %eax
jne 0x9afc4
leaq 0x2cf(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xdd50
movq 0x48(%rsp), %rdx
leaq 0x4c3fd(%rip), %rsi     # 0xe7170
leaq 0x2d0(%rsp), %rdi
callq 0xfae0
jmp 0x9ad82
leaq 0x2a8(%rsp), %rdi
movl $0x26f, %esi            # imm = 0x26F
callq 0x11600
jmp 0x9ad96
leaq 0x2f0(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
leaq 0x2a8(%rsp), %rdx
callq 0x11510
jmp 0x9adb5
leaq 0x48415(%rip), %rdx     # 0xe31d1
leaq 0x310(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x114c0
jmp 0x9add3
leaq 0x267(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xdd50
movq 0x40(%rsp), %rdx
leaq 0x4caf9(%rip), %rsi     # 0xe78ea
leaq 0x268(%rsp), %rdi
callq 0xfae0
jmp 0x9ae00
leaq 0x48b9d(%rip), %rdx     # 0xe39a4
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x114c0
jmp 0x9ae1e
leaq 0x330(%rsp), %rdi
leaq 0x310(%rsp), %rsi
leaq 0x288(%rsp), %rdx
callq 0x11510
jmp 0x9ae3d
leaq 0x4cb58(%rip), %rdx     # 0xe799c
leaq 0x350(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0x114c0
jmp 0x9ae5b
leaq 0x350(%rsp), %rdi
callq 0x173d0
jmp 0x9ae6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9afb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9afa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9af98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9af8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9af71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9af64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9af57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9af4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x350(%rsp), %rdi
callq 0xdf08
leaq 0x330(%rsp), %rdi
callq 0xdf08
leaq 0x288(%rsp), %rdi
callq 0xdf08
leaq 0x268(%rsp), %rdi
callq 0xdf08
leaq 0x267(%rsp), %rdi
callq 0xd7a0
leaq 0x310(%rsp), %rdi
callq 0xdf08
leaq 0x2f0(%rsp), %rdi
callq 0xdf08
leaq 0x2a8(%rsp), %rdi
callq 0xdf08
leaq 0x2d0(%rsp), %rdi
callq 0xdf08
leaq 0x2cf(%rsp), %rdi
callq 0xd7a0
jmp 0x9b4f2
movl $0x1, %edi
callq 0xd8e0
movq 0x140(%rsp), %rax
movq 0xb8(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0xb8(%rax)
movq 0x50(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x50(%rax)
testb $0x1, 0x70(%rax)
je 0x9b4b4
movq 0x140(%rsp), %rcx
movq 0xc0(%rcx), %rax
cmpq 0xc8(%rcx), %rax
jne 0x9b43e
movq 0x140(%rsp), %rdi
addq $0x98, %rdi
callq 0xd550
movsbl (%rax), %eax
cmpl $0x2a, %eax
jne 0x9b43e
movq 0x140(%rsp), %rdi
addq $0x30, %rdi
callq 0xd550
movb (%rax), %al
subb $0x2a, %al
sete %al
movzbl %al, %edi
callq 0xa4370
movl %eax, 0x3c(%rsp)
jmp 0x9b060
movq 0x140(%rsp), %rax
movl 0x3c(%rsp), %ecx
movl %ecx, 0x6c(%rax)
cmpl $0x1, 0x6c(%rax)
jne 0x9b08f
movq 0x140(%rsp), %rax
movq 0x200(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x200(%rax)
jmp 0x9b091
movq 0x140(%rsp), %rdi
addq $0x30, %rdi
movq %rdi, 0x30(%rsp)
callq 0xd520
movq 0x30(%rsp), %rdi
movq %rax, %rsi
decq %rsi
movq $-0x1, %rdx
callq 0xd170
jmp 0x9b0c0
movq 0x140(%rsp), %rax
testb $0x1, 0x68(%rax)
je 0x9b0ea
movq 0x140(%rsp), %rax
movq 0x210(%rax), %rdx
movq 0x58(%rax), %rcx
subq %rdx, %rcx
movq %rcx, 0x58(%rax)
jmp 0x9b101
movq 0x140(%rsp), %rax
movq 0x210(%rax), %rcx
addq 0x50(%rax), %rcx
movq %rcx, 0x50(%rax)
movq 0x140(%rsp), %rdi
addq $0x98, %rdi
movq %rdi, 0x28(%rsp)
callq 0xd520
movq 0x28(%rsp), %rdi
movq %rax, %rsi
decq %rsi
movq $-0x1, %rdx
callq 0xd170
jmp 0x9b133
movq 0x140(%rsp), %rax
movq 0xc0(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0xc0(%rax)
callq 0xd0a0
movq 0x140(%rsp), %rdi
movl $0x0, (%rax)
addq $0x98, %rdi
callq 0xdc60
testb $0x1, %al
jne 0x9b175
jmp 0x9b3fc
callq 0xd8c0
cmpl $0x0, %eax
jne 0x9b3f2
leaq 0x1bf(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xdd50
movq 0x20(%rsp), %rdx
leaq 0x4bfcf(%rip), %rsi     # 0xe7170
leaq 0x1c0(%rsp), %rdi
callq 0xfae0
jmp 0x9b1b0
leaq 0x198(%rsp), %rdi
movl $0x28b, %esi            # imm = 0x28B
callq 0x11600
jmp 0x9b1c4
leaq 0x1e0(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
leaq 0x198(%rsp), %rdx
callq 0x11510
jmp 0x9b1e3
leaq 0x47fe7(%rip), %rdx     # 0xe31d1
leaq 0x200(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x114c0
jmp 0x9b201
leaq 0x157(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xdd50
movq 0x18(%rsp), %rdx
leaq 0x4c6cb(%rip), %rsi     # 0xe78ea
leaq 0x158(%rsp), %rdi
callq 0xfae0
jmp 0x9b22e
leaq 0x4876f(%rip), %rdx     # 0xe39a4
leaq 0x178(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x114c0
jmp 0x9b24c
leaq 0x220(%rsp), %rdi
leaq 0x200(%rsp), %rsi
leaq 0x178(%rsp), %rdx
callq 0x11510
jmp 0x9b26b
leaq 0x4c6b7(%rip), %rdx     # 0xe7929
leaq 0x240(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x114c0
jmp 0x9b289
leaq 0x240(%rsp), %rdi
callq 0x173d0
jmp 0x9b298
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b3e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b3d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b3c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b3b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b39f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b392
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b385
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
jmp 0x9b378
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
leaq 0x240(%rsp), %rdi
callq 0xdf08
leaq 0x220(%rsp), %rdi
callq 0xdf08
leaq 0x178(%rsp), %rdi
callq 0xdf08
leaq 0x158(%rsp), %rdi
callq 0xdf08
leaq 0x157(%rsp), %rdi
callq 0xd7a0
leaq 0x200(%rsp), %rdi
callq 0xdf08
leaq 0x1e0(%rsp), %rdi
callq 0xdf08
leaq 0x198(%rsp), %rdi
callq 0xdf08
leaq 0x1c0(%rsp), %rdi
callq 0xdf08
leaq 0x1bf(%rsp), %rdi
callq 0xd7a0
jmp 0x9b4f2
movl $0x1, %edi
callq 0xd8e0
jmp 0x9b3fe
movq 0x140(%rsp), %rdi
addq $0x30, %rdi
callq 0xd550
movq 0x140(%rsp), %rdi
movsbl (%rax), %eax
movl %eax, 0x14(%rsp)
addq $0x98, %rdi
callq 0xd550
movq %rax, %rcx
movl 0x14(%rsp), %eax
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x9b091
jmp 0x9b49a
movq 0x140(%rsp), %rcx
movq 0xc0(%rcx), %rax
movq 0xc8(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jne 0x9b498
movq 0x140(%rsp), %rdi
xorl %esi, %esi
callq 0xa4160
movq %rax, 0x8(%rsp)
jmp 0x9b473
movq 0x8(%rsp), %rax
movq 0x140(%rsp), %rcx
cmpq 0x210(%rcx), %rax
jb 0x9b498
movq 0x140(%rsp), %rax
movl $0x0, 0x6c(%rax)
jmp 0x9b49a
movq 0x140(%rsp), %rax
movq 0xc8(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0xc8(%rax)
movq 0x140(%rsp), %rsi
movq %rsi, %rdi
addq $0x30, %rdi
addq $0x98, %rsi
callq 0x98c70
jmp 0x9b4d1
movq 0x140(%rsp), %rdi
callq 0x9b780
jmp 0x9b4e0
leaq 0x8d0(%rsp), %rdi
callq 0xd390
jmp 0x9b5ba
leaq 0x8d0(%rsp), %rdi
callq 0xd390
movq 0x8c8(%rsp), %rdi
callq 0xd300
movq 0xa58(%rsp), %rsi
movq 0x84a75(%rip), %rdi     # 0x11ff90
callq 0xd680
movq %rax, (%rsp)
jmp 0x9b526
movq (%rsp), %rdi
movq 0x84a1f(%rip), %rsi     # 0x11ff50
callq 0xd760
jmp 0x9b538
callq 0xdae0
jmp 0x9b5d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8c8(%rsp)
movl %eax, 0x8c4(%rsp)
callq 0xdc20
jmp 0x9b55d
movq 0xf0(%rsp), %rdi
callq 0xa4390
movq 0x138(%rsp), %rdi
callq 0x11870
movq 0x130(%rsp), %rdi
callq 0xdf08
movq 0x128(%rsp), %rdi
callq 0xdf08
movq 0x120(%rsp), %rdi
callq 0xdf08
movq 0x118(%rsp), %rdi
callq 0xdf08
movq 0x140(%rsp), %rdi
callq 0x10510
jmp 0x9b5c2
addq $0xa68, %rsp            # imm = 0xA68
retq
movq 0x8c8(%rsp), %rdi
callq 0xdd40
movq %rax, %rdi
callq 0x103d0
nopw (%rax,%rax)