// File: ncbi[P]amr/seq.cpp
// Function: Seq_sp::Dna::cds2prot(unsigned char, bool, bool, bool, bool) const
Peptide Dna::cds2prot (Gencode gencode,
                       bool trunc5,
                       bool trunc3,
	                     bool hasStopCodon,
	                     bool allowExtraStopCodon) const
{
  size_t translationStart = 0;
  Peptide pep (makePeptide (1 /*frame*/, gencode, true, true, translationStart));
  
  EXEC_ASSERT (trimSuffix (pep. name, ".fr1"));
  
  if (pep. seq. empty ())
    throw runtime_error (FUNC "empty sequence");
  if (! trunc5 && ! trunc3 && pep. seq. size () * 3 != seq. size ())
    throw runtime_error (FUNC "incomplete codon");  
  if (! trunc5 && pep. seq [0] != 'm')
    throw runtime_error (FUNC "no start codon");
    
  const size_t starPos = pep. seq. find ("*");
  if (hasStopCodon)
  {
  	if (starPos == string::npos)
  	{
  	  if (! trunc3)
        throw runtime_error (FUNC "no stop codon");
    }
    else
    {
  	  if (starPos == pep. seq. size () - 1)
  	  {
    	  EXEC_ASSERT (trimSuffix (pep. seq, "*"));
    	}
    	else
    	{
        if (allowExtraStopCodon)
          pep. seq. erase (starPos);
        else
          throw runtime_error (FUNC "stop codon at peptide position " + to_string (starPos + 1) + "\n" + seq. substr (starPos * 3));
      }
  	}
  }
  else
	  if (starPos != string::npos)
	    throw runtime_error (FUNC "has a stop codon");
  
  return pep;
}

// Assembly:
subq $0x5f8, %rsp            # imm = 0x5F8
movl %r9d, 0xc0(%rsp)
movl %ecx, %eax
movl 0xc0(%rsp), %ecx
movl %eax, 0xc4(%rsp)
movl %edx, %eax
movq %rsi, %r9
movl 0xc4(%rsp), %esi
movq %rdi, 0xd8(%rsp)
movb %r8b, %dl
movb %al, %r8b
movq %rdi, %rax
movq %rax, 0xc8(%rsp)
movb 0x600(%rsp), %al
movq %rdi, 0x5f0(%rsp)
movq %r9, 0x5e8(%rsp)
movb %r8b, 0x5e7(%rsp)
andb $0x1, %sil
movb %sil, 0x5e6(%rsp)
andb $0x1, %dl
movb %dl, 0x5e5(%rsp)
andb $0x1, %cl
movb %cl, 0x5e4(%rsp)
andb $0x1, %al
movb %al, 0x5e3(%rsp)
movq 0x5e8(%rsp), %rsi
movq %rsi, 0xd0(%rsp)
movq $0x0, 0x5d8(%rsp)
movb $0x0, 0x5d7(%rsp)
movzbl 0x5e7(%rsp), %ecx
movq %rsp, %rax
leaq 0x5d8(%rsp), %rdx
movq %rdx, (%rax)
movl $0x1, %r9d
movl %r9d, %edx
movl %r9d, %r8d
callq 0xafd00
movq 0xd8(%rsp), %rdi
addq $0x8, %rdi
movq %rdi, 0xe0(%rsp)
leaq 0x5af(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0xdd50
movq 0xe8(%rsp), %rdx
leaq 0x378dc(%rip), %rsi     # 0xe89ab
leaq 0x5b0(%rsp), %rdi
callq 0xfae0
jmp 0xb10de
movq 0xe0(%rsp), %rdi
leaq 0x5b0(%rsp), %rsi
callq 0x18ff0
movb %al, 0xbf(%rsp)
jmp 0xb10fc
leaq 0x5b0(%rsp), %rdi
callq 0xdf08
leaq 0x5af(%rsp), %rdi
callq 0xd7a0
movb 0xbf(%rsp), %al
andb $0x1, %al
movb %al, 0x5d6(%rsp)
testb $0x1, 0x5d6(%rsp)
jne 0xb1410
callq 0xd8c0
cmpl $0x0, %eax
jne 0xb1406
leaq 0x4f7(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0xdd50
movq 0xb0(%rsp), %rdx
leaq 0x372e0(%rip), %rsi     # 0xe8446
leaq 0x4f8(%rsp), %rdi
callq 0xfae0
jmp 0xb1175
leaq 0x4d0(%rsp), %rdi
movl $0x803, %esi            # imm = 0x803
callq 0x11600
jmp 0xb1189
leaq 0x518(%rsp), %rdi
leaq 0x4f8(%rsp), %rsi
leaq 0x4d0(%rsp), %rdx
callq 0x11510
jmp 0xb11a8
leaq 0x32022(%rip), %rdx     # 0xe31d1
leaq 0x538(%rsp), %rdi
leaq 0x518(%rsp), %rsi
callq 0x114c0
jmp 0xb11c6
leaq 0x48f(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0xdd50
movq 0xa8(%rsp), %rdx
leaq 0x377c6(%rip), %rsi     # 0xe89b0
leaq 0x490(%rsp), %rdi
callq 0xfae0
jmp 0xb11f9
leaq 0x327a4(%rip), %rdx     # 0xe39a4
leaq 0x4b0(%rsp), %rdi
leaq 0x490(%rsp), %rsi
callq 0x114c0
jmp 0xb1217
leaq 0x558(%rsp), %rdi
leaq 0x538(%rsp), %rsi
leaq 0x4b0(%rsp), %rdx
callq 0x11510
jmp 0xb1236
leaq 0x377b8(%rip), %rdx     # 0xe89f5
leaq 0x578(%rsp), %rdi
leaq 0x558(%rsp), %rsi
callq 0x114c0
jmp 0xb1254
leaq 0x578(%rsp), %rdi
callq 0x173d0
jmp 0xb1263
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb129a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x5b0(%rsp), %rdi
callq 0xdf08
leaq 0x5af(%rsp), %rdi
callq 0xd7a0
jmp 0xb216b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb13f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb13e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb13da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb13cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb13b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb13a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1399
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb138c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x578(%rsp), %rdi
callq 0xdf08
leaq 0x558(%rsp), %rdi
callq 0xdf08
leaq 0x4b0(%rsp), %rdi
callq 0xdf08
leaq 0x490(%rsp), %rdi
callq 0xdf08
leaq 0x48f(%rsp), %rdi
callq 0xd7a0
leaq 0x538(%rsp), %rdi
callq 0xdf08
leaq 0x518(%rsp), %rdi
callq 0xdf08
leaq 0x4d0(%rsp), %rdi
callq 0xdf08
leaq 0x4f8(%rsp), %rdi
callq 0xdf08
leaq 0x4f7(%rsp), %rdi
callq 0xd7a0
jmp 0xb216b
movl $0x1, %edi
callq 0xd8e0
movq 0xd8(%rsp), %rdi
addq $0x28, %rdi
callq 0xdc60
testb $0x1, %al
jne 0xb142a
jmp 0xb1559
movb $0x1, 0x446(%rsp)
movl $0x10, %edi
callq 0xd3b0
movq %rax, 0x98(%rsp)
leaq 0x447(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0xdd50
movq 0xa0(%rsp), %rdx
leaq 0x37548(%rip), %rsi     # 0xe89b0
leaq 0x448(%rsp), %rdi
callq 0xfae0
jmp 0xb1477
leaq 0x37596(%rip), %rdx     # 0xe8a14
leaq 0x468(%rsp), %rdi
leaq 0x448(%rsp), %rsi
callq 0x114c0
jmp 0xb1495
movq 0x98(%rsp), %rdi
leaq 0x468(%rsp), %rsi
callq 0xdbf0
jmp 0xb14ac
movq 0x98(%rsp), %rdi
movb $0x0, 0x446(%rsp)
movq 0x6eb2d(%rip), %rsi     # 0x11fff0
movq 0x6eaa6(%rip), %rdx     # 0x11ff70
callq 0xdcd0
jmp 0xb2185
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb152e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1521
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x468(%rsp), %rdi
callq 0xdf08
leaq 0x448(%rsp), %rdi
callq 0xdf08
leaq 0x447(%rsp), %rdi
callq 0xd7a0
testb $0x1, 0x446(%rsp)
jne 0xb1547
jmp 0xb1554
movq 0x98(%rsp), %rdi
callq 0xd570
jmp 0xb216b
testb $0x1, 0x5e6(%rsp)
jne 0xb16e6
testb $0x1, 0x5e5(%rsp)
jne 0xb16e6
movq 0xd8(%rsp), %rdi
addq $0x28, %rdi
callq 0xd520
movq 0xd0(%rsp), %rdi
imulq $0x3, %rax, %rax
movq %rax, 0x90(%rsp)
addq $0x28, %rdi
callq 0xd520
movq %rax, %rcx
movq 0x90(%rsp), %rax
cmpq %rcx, %rax
je 0xb16e6
movb $0x1, 0x3fe(%rsp)
movl $0x10, %edi
callq 0xd3b0
movq %rax, 0x80(%rsp)
leaq 0x3ff(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0xdd50
movq 0x88(%rsp), %rdx
leaq 0x373bb(%rip), %rsi     # 0xe89b0
leaq 0x400(%rsp), %rdi
callq 0xfae0
jmp 0xb1604
leaq 0x3741a(%rip), %rdx     # 0xe8a25
leaq 0x420(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x114c0
jmp 0xb1622
movq 0x80(%rsp), %rdi
leaq 0x420(%rsp), %rsi
callq 0xdbf0
jmp 0xb1639
movq 0x80(%rsp), %rdi
movb $0x0, 0x3fe(%rsp)
movq 0x6e9a0(%rip), %rsi     # 0x11fff0
movq 0x6e919(%rip), %rdx     # 0x11ff70
callq 0xdcd0
jmp 0xb2185
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb16bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb16ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x420(%rsp), %rdi
callq 0xdf08
leaq 0x400(%rsp), %rdi
callq 0xdf08
leaq 0x3ff(%rsp), %rdi
callq 0xd7a0
testb $0x1, 0x3fe(%rsp)
jne 0xb16d4
jmp 0xb16e1
movq 0x80(%rsp), %rdi
callq 0xd570
jmp 0xb216b
testb $0x1, 0x5e6(%rsp)
jne 0xb1857
movq 0xd8(%rsp), %rdi
addq $0x28, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xdec0
movq %rax, 0x78(%rsp)
jmp 0xb1710
movq 0x78(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x6d, %eax
je 0xb1857
movb $0x1, 0x3b6(%rsp)
movl $0x10, %edi
callq 0xd3b0
movq %rax, 0x68(%rsp)
leaq 0x3b7(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0xdd50
movq 0x70(%rsp), %rdx
leaq 0x3725a(%rip), %rsi     # 0xe89b0
leaq 0x3b8(%rsp), %rdi
callq 0xfae0
jmp 0xb1765
leaq 0x372cc(%rip), %rdx     # 0xe8a38
leaq 0x3d8(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
callq 0x114c0
jmp 0xb1783
movq 0x68(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
callq 0xdbf0
jmp 0xb1797
movq 0x68(%rsp), %rdi
movb $0x0, 0x3b6(%rsp)
movq 0x6e845(%rip), %rsi     # 0x11fff0
movq 0x6e7be(%rip), %rdx     # 0x11ff70
callq 0xdcd0
jmp 0xb2185
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb216b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb182f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1822
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x3d8(%rsp), %rdi
callq 0xdf08
leaq 0x3b8(%rsp), %rdi
callq 0xdf08
leaq 0x3b7(%rsp), %rdi
callq 0xd7a0
testb $0x1, 0x3b6(%rsp)
jne 0xb1848
jmp 0xb1852
movq 0x68(%rsp), %rdi
callq 0xd570
jmp 0xb216b
movq 0xd8(%rsp), %rdi
addq $0x28, %rdi
leaq 0x320f2(%rip), %rsi     # 0xe395c
xorl %eax, %eax
movl %eax, %edx
callq 0xdeb0
movq %rax, 0x3a8(%rsp)
testb $0x1, 0x5e4(%rsp)
je 0xb2011
cmpq $-0x1, 0x3a8(%rsp)
jne 0xb19c8
testb $0x1, 0x5e5(%rsp)
jne 0xb19c3
movb $0x1, 0x366(%rsp)
movl $0x10, %edi
callq 0xd3b0
movq %rax, 0x58(%rsp)
leaq 0x367(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xdd50
movq 0x60(%rsp), %rdx
leaq 0x370d5(%rip), %rsi     # 0xe89b0
leaq 0x368(%rsp), %rdi
callq 0xfae0
jmp 0xb18ea
leaq 0x37158(%rip), %rdx     # 0xe8a49
leaq 0x388(%rsp), %rdi
leaq 0x368(%rsp), %rsi
callq 0x114c0
jmp 0xb1908
movq 0x58(%rsp), %rdi
leaq 0x388(%rsp), %rsi
callq 0xdbf0
jmp 0xb191c
movq 0x58(%rsp), %rdi
movb $0x0, 0x366(%rsp)
movq 0x6e6c0(%rip), %rsi     # 0x11fff0
movq 0x6e639(%rip), %rdx     # 0x11ff70
callq 0xdcd0
jmp 0xb2185
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb199b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb198e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x388(%rsp), %rdi
callq 0xdf08
leaq 0x368(%rsp), %rdi
callq 0xdf08
leaq 0x367(%rsp), %rdi
callq 0xd7a0
testb $0x1, 0x366(%rsp)
jne 0xb19b4
jmp 0xb19be
movq 0x58(%rsp), %rdi
callq 0xd570
jmp 0xb216b
jmp 0xb200c
movq 0xd8(%rsp), %rdi
movq 0x3a8(%rsp), %rax
movq %rax, 0x50(%rsp)
addq $0x28, %rdi
callq 0xd520
movq %rax, %rcx
movq 0x50(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jne 0xb1d5b
movq 0xd8(%rsp), %rax
addq $0x28, %rax
movq %rax, 0x40(%rsp)
leaq 0x33f(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xdd50
movq 0x48(%rsp), %rdx
leaq 0x31f32(%rip), %rsi     # 0xe395c
leaq 0x340(%rsp), %rdi
callq 0xfae0
jmp 0xb1a39
movq 0x40(%rsp), %rdi
leaq 0x340(%rsp), %rsi
callq 0x18ff0
movb %al, 0x3f(%rsp)
jmp 0xb1a51
leaq 0x340(%rsp), %rdi
callq 0xdf08
leaq 0x33f(%rsp), %rdi
callq 0xd7a0
movb 0x3f(%rsp), %al
andb $0x1, %al
movb %al, 0x365(%rsp)
testb $0x1, 0x365(%rsp)
jne 0xb1d56
callq 0xd8c0
cmpl $0x0, %eax
jne 0xb1d4c
leaq 0x297(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xdd50
movq 0x30(%rsp), %rdx
leaq 0x36994(%rip), %rsi     # 0xe8446
leaq 0x298(%rsp), %rdi
callq 0xfae0
jmp 0xb1ac1
leaq 0x270(%rsp), %rdi
movl $0x818, %esi            # imm = 0x818
callq 0x11600
jmp 0xb1ad5
leaq 0x2b8(%rsp), %rdi
leaq 0x298(%rsp), %rsi
leaq 0x270(%rsp), %rdx
callq 0x11510
jmp 0xb1af4
leaq 0x316d6(%rip), %rdx     # 0xe31d1
leaq 0x2d8(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x114c0
jmp 0xb1b12
leaq 0x22f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xdd50
movq 0x28(%rsp), %rdx
leaq 0x36e80(%rip), %rsi     # 0xe89b0
leaq 0x230(%rsp), %rdi
callq 0xfae0
jmp 0xb1b3f
leaq 0x31e5e(%rip), %rdx     # 0xe39a4
leaq 0x250(%rsp), %rdi
leaq 0x230(%rsp), %rsi
callq 0x114c0
jmp 0xb1b5d
leaq 0x2f8(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
leaq 0x250(%rsp), %rdx
callq 0x11510
jmp 0xb1b7c
leaq 0x36ed6(%rip), %rdx     # 0xe8a59
leaq 0x318(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x114c0
jmp 0xb1b9a
leaq 0x318(%rsp), %rdi
callq 0x173d0
jmp 0xb1ba9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1be0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x340(%rsp), %rdi
callq 0xdf08
leaq 0x33f(%rsp), %rdi
callq 0xd7a0
jmp 0xb216b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1d3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1d2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1d20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1d13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1cf9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1cec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1cdf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1cd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x318(%rsp), %rdi
callq 0xdf08
leaq 0x2f8(%rsp), %rdi
callq 0xdf08
leaq 0x250(%rsp), %rdi
callq 0xdf08
leaq 0x230(%rsp), %rdi
callq 0xdf08
leaq 0x22f(%rsp), %rdi
callq 0xd7a0
leaq 0x2d8(%rsp), %rdi
callq 0xdf08
leaq 0x2b8(%rsp), %rdi
callq 0xdf08
leaq 0x270(%rsp), %rdi
callq 0xdf08
leaq 0x298(%rsp), %rdi
callq 0xdf08
leaq 0x297(%rsp), %rdi
callq 0xd7a0
jmp 0xb216b
movl $0x1, %edi
callq 0xd8e0
jmp 0xb200a
testb $0x1, 0x5e3(%rsp)
je 0xb1d8c
movq 0xd8(%rsp), %rdi
addq $0x28, %rdi
movq 0x3a8(%rsp), %rsi
movq $-0x1, %rdx
callq 0xd170
jmp 0xb1d87
jmp 0xb2008
movb $0x1, 0x13f(%rsp)
movl $0x10, %edi
callq 0xd3b0
movq %rax, 0x18(%rsp)
leaq 0x187(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xdd50
movq 0x20(%rsp), %rdx
leaq 0x36bef(%rip), %rsi     # 0xe89b0
leaq 0x188(%rsp), %rdi
callq 0xfae0
jmp 0xb1dd0
leaq 0x36c9d(%rip), %rdx     # 0xe8a74
leaq 0x1a8(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x114c0
jmp 0xb1dee
movq 0x3a8(%rsp), %rsi
incq %rsi
leaq 0x160(%rsp), %rdi
callq 0x122b0
jmp 0xb1e08
leaq 0x1c8(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
leaq 0x160(%rsp), %rdx
callq 0x11510
jmp 0xb1e27
leaq 0x33b91(%rip), %rdx     # 0xe59bf
leaq 0x1e8(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x114c0
jmp 0xb1e45
movq 0xd0(%rsp), %rsi
addq $0x28, %rsi
movq 0x3a8(%rsp), %rax
leaq (%rax,%rax,2), %rdx
leaq 0x140(%rsp), %rdi
movq $-0x1, %rcx
callq 0xd740
jmp 0xb1e73
leaq 0x208(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
leaq 0x140(%rsp), %rdx
callq 0x11510
jmp 0xb1e92
movq 0x18(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0xdbf0
jmp 0xb1ea6
movq 0x18(%rsp), %rdi
movb $0x0, 0x13f(%rsp)
movq 0x6e136(%rip), %rsi     # 0x11fff0
movq 0x6e0af(%rip), %rdx     # 0x11ff70
callq 0xdcd0
jmp 0xb2185
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1fe0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1fd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1fc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1fb9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1fac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1f9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb1f92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x208(%rsp), %rdi
callq 0xdf08
leaq 0x140(%rsp), %rdi
callq 0xdf08
leaq 0x1e8(%rsp), %rdi
callq 0xdf08
leaq 0x1c8(%rsp), %rdi
callq 0xdf08
leaq 0x160(%rsp), %rdi
callq 0xdf08
leaq 0x1a8(%rsp), %rdi
callq 0xdf08
leaq 0x188(%rsp), %rdi
callq 0xdf08
leaq 0x187(%rsp), %rdi
callq 0xd7a0
testb $0x1, 0x13f(%rsp)
jne 0xb1ff9
jmp 0xb2003
movq 0x18(%rsp), %rdi
callq 0xd570
jmp 0xb216b
jmp 0xb200a
jmp 0xb200c
jmp 0xb213c
cmpq $-0x1, 0x3a8(%rsp)
je 0xb213a
movb $0x1, 0xf6(%rsp)
movl $0x10, %edi
callq 0xd3b0
movq %rax, 0x8(%rsp)
leaq 0xf7(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xdd50
movq 0x10(%rsp), %rdx
leaq 0x3695b(%rip), %rsi     # 0xe89b0
leaq 0xf8(%rsp), %rdi
callq 0xfae0
jmp 0xb2064
leaq 0x36a2b(%rip), %rdx     # 0xe8a96
leaq 0x118(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x114c0
jmp 0xb2082
movq 0x8(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0xdbf0
jmp 0xb2096
movq 0x8(%rsp), %rdi
movb $0x0, 0xf6(%rsp)
movq 0x6df46(%rip), %rsi     # 0x11fff0
movq 0x6debf(%rip), %rdx     # 0x11ff70
callq 0xdcd0
jmp 0xb2185
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb2115
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0xb2108
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x118(%rsp), %rdi
callq 0xdf08
leaq 0xf8(%rsp), %rdi
callq 0xdf08
leaq 0xf7(%rsp), %rdi
callq 0xd7a0
testb $0x1, 0xf6(%rsp)
jne 0xb212e
jmp 0xb2138
movq 0x8(%rsp), %rdi
callq 0xd570
jmp 0xb216b
jmp 0xb213c
movb $0x1, 0x5d7(%rsp)
testb $0x1, 0x5d7(%rsp)
jne 0xb215b
movq 0xd8(%rsp), %rdi
callq 0xd8280
movq 0xc8(%rsp), %rax
addq $0x5f8, %rsp            # imm = 0x5F8
retq
movq 0xd8(%rsp), %rdi
callq 0xd8280
movq 0x5a0(%rsp), %rdi
callq 0xdd40
nopw %cs:(%rax,%rax)