// File: ncbi[P]amr/seq.cpp
// Function: Seq_sp::Peptide::getPeptideOrfs(unsigned long, char, bool, bool, unsigned long) const
Vector<PeptideOrf> Peptide::getPeptideOrfs (size_t translationStart,
              	                            Strand strand,
                                            bool includeInitial,
                                            bool longestOnly,
                                            size_t len_min) const
{
  Vector<PeptideOrf> orfs;

  PeptideOrf prev;
  FFOR (size_t, i, seq. size ())
    if (isStartAa (seq [i]))
    {
      const PeptideOrf orf (translationStart, strand, this, i);
      ASSERT (! orf. empty ());
      orf. qc ();
      if (! prev. empty ())
      {
        ASSERT (prev. start < orf. start);
        if (longestOnly && prev. stop == orf. stop)
          continue;
      }
      if (orf. size () >= len_min)
   	    orfs << orf;
   	  prev = orf;
   	}

  if (includeInitial && (orfs. empty () || orfs [0]. start > 0))
  {
    const PeptideOrf orf (translationStart, strand, this, 0);
    ASSERT (! orf. empty ());
    orf. qc ();
    if (orf. size () >= len_min)
  	  orfs << orf;
  }

  return orfs;
}

// Assembly:
subq $0x4a8, %rsp            # imm = 0x4A8
movl %r8d, 0x68(%rsp)
movl %ecx, %eax
movl 0x68(%rsp), %ecx
movl %eax, 0x6c(%rsp)
movq %rdx, %rax
movl 0x6c(%rsp), %edx
movq %rax, 0x70(%rsp)
movq %rsi, %r8
movq 0x70(%rsp), %rsi
movq %rdi, 0x78(%rsp)
movb %r9b, %al
movq %rdi, %r9
movq %r9, 0x80(%rsp)
movq 0x4b0(%rsp), %r9
movq %rdi, 0x4a0(%rsp)
movq %r8, 0x498(%rsp)
movq %rsi, 0x490(%rsp)
movb %dl, 0x48f(%rsp)
andb $0x1, %cl
movb %cl, 0x48e(%rsp)
andb $0x1, %al
movb %al, 0x48d(%rsp)
movq 0x498(%rsp), %rax
movq %rax, 0x88(%rsp)
movb $0x0, 0x48c(%rsp)
callq 0xd8600
leaq 0x450(%rsp), %rdi
callq 0xd8630
movq 0x88(%rsp), %rdi
movq $0x0, 0x448(%rsp)
addq $0x28, %rdi
callq 0xd520
movq %rax, 0x440(%rsp)
movq 0x448(%rsp), %rax
cmpq 0x440(%rsp), %rax
jae 0xbccda
movq 0x88(%rsp), %rdi
addq $0x28, %rdi
movq 0x448(%rsp), %rsi
callq 0xd7d0
movsbl (%rax), %edi
callq 0xd83d0
movb %al, 0x67(%rsp)
jmp 0xbc613
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0xbc620
jmp 0xbccbf
movq 0x88(%rsp), %rcx
movq 0x490(%rsp), %rsi
movsbl 0x48f(%rsp), %edx
movq 0x448(%rsp), %r8
leaq 0x3f8(%rsp), %rdi
callq 0xb7eb0
jmp 0xbc64f
callq 0xd0a0
movl $0x0, (%rax)
leaq 0x3f8(%rsp), %rdi
callq 0xd84d0
movb %al, 0x66(%rsp)
jmp 0xbc66d
movb 0x66(%rsp), %al
testb $0x1, %al
jne 0xbc67a
jmp 0xbc933
callq 0xd8c0
cmpl $0x0, %eax
jne 0xbc929
leaq 0x357(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0xdd50
movq 0x58(%rsp), %rdx
leaq 0x2bda0(%rip), %rsi     # 0xe8446
leaq 0x358(%rsp), %rdi
callq 0xfae0
jmp 0xbc6b5
leaq 0x330(%rsp), %rdi
movl $0xdcb, %esi            # imm = 0xDCB
callq 0x11600
jmp 0xbc6c9
leaq 0x378(%rsp), %rdi
leaq 0x358(%rsp), %rsi
leaq 0x330(%rsp), %rdx
callq 0x11510
jmp 0xbc6e8
leaq 0x26ae2(%rip), %rdx     # 0xe31d1
leaq 0x398(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x114c0
jmp 0xbc706
leaq 0x2ef(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xdd50
movq 0x50(%rsp), %rdx
leaq 0x2c908(%rip), %rsi     # 0xe902c
leaq 0x2f0(%rsp), %rdi
callq 0xfae0
jmp 0xbc733
leaq 0x2726a(%rip), %rdx     # 0xe39a4
leaq 0x310(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x114c0
jmp 0xbc751
leaq 0x3b8(%rsp), %rdi
leaq 0x398(%rsp), %rsi
leaq 0x310(%rsp), %rdx
callq 0x11510
jmp 0xbc770
leaq 0x2c912(%rip), %rdx     # 0xe9089
leaq 0x3d8(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
callq 0x114c0
jmp 0xbc78e
leaq 0x3d8(%rsp), %rdi
callq 0x173d0
jmp 0xbc79d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbd0a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbccad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbc917
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbc90a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbc8fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbc8f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbc8d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbc8c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbc8bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbc8af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
leaq 0x3d8(%rsp), %rdi
callq 0xdf08
leaq 0x3b8(%rsp), %rdi
callq 0xdf08
leaq 0x310(%rsp), %rdi
callq 0xdf08
leaq 0x2f0(%rsp), %rdi
callq 0xdf08
leaq 0x2ef(%rsp), %rdi
callq 0xd7a0
leaq 0x398(%rsp), %rdi
callq 0xdf08
leaq 0x378(%rsp), %rdi
callq 0xdf08
leaq 0x330(%rsp), %rdi
callq 0xdf08
leaq 0x358(%rsp), %rdi
callq 0xdf08
leaq 0x357(%rsp), %rdi
callq 0xd7a0
jmp 0xbccad
movl $0x1, %edi
callq 0xd8e0
leaq 0x3f8(%rsp), %rdi
callq 0xb9370
jmp 0xbc942
leaq 0x450(%rsp), %rdi
callq 0xd84d0
movb %al, 0x4f(%rsp)
jmp 0xbc955
movb 0x4f(%rsp), %al
testb $0x1, %al
jne 0xbcc36
jmp 0xbc963
callq 0xd0a0
movl $0x0, (%rax)
movq 0x468(%rsp), %rax
cmpq 0x410(%rsp), %rax
jb 0xbcc0b
callq 0xd8c0
cmpl $0x0, %eax
jne 0xbcc01
leaq 0x247(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xdd50
movq 0x40(%rsp), %rdx
leaq 0x2ba96(%rip), %rsi     # 0xe8446
leaq 0x248(%rsp), %rdi
callq 0xfae0
jmp 0xbc9bf
leaq 0x220(%rsp), %rdi
movl $0xdcf, %esi            # imm = 0xDCF
callq 0x11600
jmp 0xbc9d3
leaq 0x268(%rsp), %rdi
leaq 0x248(%rsp), %rsi
leaq 0x220(%rsp), %rdx
callq 0x11510
jmp 0xbc9f2
leaq 0x267d8(%rip), %rdx     # 0xe31d1
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x114c0
jmp 0xbca10
leaq 0x1df(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xdd50
movq 0x38(%rsp), %rdx
leaq 0x2c5fe(%rip), %rsi     # 0xe902c
leaq 0x1e0(%rsp), %rdi
callq 0xfae0
jmp 0xbca3d
leaq 0x26f60(%rip), %rdx     # 0xe39a4
leaq 0x200(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x114c0
jmp 0xbca5b
leaq 0x2a8(%rsp), %rdi
leaq 0x288(%rsp), %rsi
leaq 0x200(%rsp), %rdx
callq 0x11510
jmp 0xbca7a
leaq 0x2c618(%rip), %rdx     # 0xe9099
leaq 0x2c8(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x114c0
jmp 0xbca98
leaq 0x2c8(%rsp), %rdi
callq 0x173d0
jmp 0xbcaa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcbef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcbe2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcbd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcbc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcbae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcba1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcb94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcb87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
leaq 0x2c8(%rsp), %rdi
callq 0xdf08
leaq 0x2a8(%rsp), %rdi
callq 0xdf08
leaq 0x200(%rsp), %rdi
callq 0xdf08
leaq 0x1e0(%rsp), %rdi
callq 0xdf08
leaq 0x1df(%rsp), %rdi
callq 0xd7a0
leaq 0x288(%rsp), %rdi
callq 0xdf08
leaq 0x268(%rsp), %rdi
callq 0xdf08
leaq 0x220(%rsp), %rdi
callq 0xdf08
leaq 0x248(%rsp), %rdi
callq 0xdf08
leaq 0x247(%rsp), %rdi
callq 0xd7a0
jmp 0xbccad
movl $0x1, %edi
callq 0xd8e0
testb $0x1, 0x48d(%rsp)
je 0xbcc34
movq 0x478(%rsp), %rax
cmpq 0x420(%rsp), %rax
jne 0xbcc34
movl $0x4, 0x1d8(%rsp)
jmp 0xbcc8f
jmp 0xbcc36
leaq 0x3f8(%rsp), %rdi
callq 0xd8690
movq %rax, 0x30(%rsp)
jmp 0xbcc4a
movq 0x30(%rsp), %rax
cmpq 0x4b0(%rsp), %rax
jb 0xbcc6f
movq 0x78(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
callq 0xd86b0
jmp 0xbcc6d
jmp 0xbcc6f
leaq 0x450(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
callq 0xd86f0
movl $0x0, 0x1d8(%rsp)
leaq 0x3f8(%rsp), %rdi
callq 0xd8740
movl 0x1d8(%rsp), %eax
testl %eax, %eax
je 0xbccab
jmp 0xbcca9
jmp 0xbccc1
jmp 0xbccbf
leaq 0x3f8(%rsp), %rdi
callq 0xd8740
jmp 0xbd0a1
jmp 0xbccc1
movq 0x448(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x448(%rsp)
jmp 0xbc5d6
testb $0x1, 0x48e(%rsp)
je 0xbd075
movq 0x78(%rsp), %rdi
callq 0xd8750
testb $0x1, %al
jne 0xbcd1b
movq 0x78(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xd87a0
movq %rax, 0x28(%rsp)
jmp 0xbcd0b
movq 0x28(%rsp), %rax
cmpq $0x0, 0x18(%rax)
jbe 0xbd075
movq 0x88(%rsp), %rcx
movq 0x490(%rsp), %rsi
movsbl 0x48f(%rsp), %edx
xorl %eax, %eax
movl %eax, %r8d
leaq 0x1a0(%rsp), %rdi
callq 0xb7eb0
jmp 0xbcd47
callq 0xd0a0
movl $0x0, (%rax)
leaq 0x1a0(%rsp), %rdi
callq 0xd84d0
movb %al, 0x27(%rsp)
jmp 0xbcd65
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0xbcd72
jmp 0xbd00f
callq 0xd8c0
cmpl $0x0, %eax
jne 0xbd005
leaq 0xff(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xdd50
movq 0x18(%rsp), %rdx
leaq 0x2b6a8(%rip), %rsi     # 0xe8446
leaq 0x100(%rsp), %rdi
callq 0xfae0
jmp 0xbcdad
leaq 0xd8(%rsp), %rdi
movl $0xddb, %esi            # imm = 0xDDB
callq 0x11600
jmp 0xbcdc1
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x11510
jmp 0xbcde0
leaq 0x263ea(%rip), %rdx     # 0xe31d1
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x114c0
jmp 0xbcdfe
leaq 0x97(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xdd50
movq 0x10(%rsp), %rdx
leaq 0x2c210(%rip), %rsi     # 0xe902c
leaq 0x98(%rsp), %rdi
callq 0xfae0
jmp 0xbce2b
leaq 0x26b72(%rip), %rdx     # 0xe39a4
leaq 0xb8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x114c0
jmp 0xbce49
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
callq 0x11510
jmp 0xbce68
leaq 0x2c21a(%rip), %rdx     # 0xe9089
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x114c0
jmp 0xbce86
leaq 0x180(%rsp), %rdi
callq 0x173d0
jmp 0xbce95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbd066
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcff6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcfe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcfdc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcfcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcfb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcfa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcf9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
jmp 0xbcf8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x438(%rsp)
movl %eax, 0x434(%rsp)
leaq 0x180(%rsp), %rdi
callq 0xdf08
leaq 0x160(%rsp), %rdi
callq 0xdf08
leaq 0xb8(%rsp), %rdi
callq 0xdf08
leaq 0x98(%rsp), %rdi
callq 0xdf08
leaq 0x97(%rsp), %rdi
callq 0xd7a0
leaq 0x140(%rsp), %rdi
callq 0xdf08
leaq 0x120(%rsp), %rdi
callq 0xdf08
leaq 0xd8(%rsp), %rdi
callq 0xdf08
leaq 0x100(%rsp), %rdi
callq 0xdf08
leaq 0xff(%rsp), %rdi
callq 0xd7a0
jmp 0xbd066
movl $0x1, %edi
callq 0xd8e0
leaq 0x1a0(%rsp), %rdi
callq 0xb9370
jmp 0xbd01e
leaq 0x1a0(%rsp), %rdi
callq 0xd8690
movq %rax, 0x8(%rsp)
jmp 0xbd032
movq 0x8(%rsp), %rax
cmpq 0x4b0(%rsp), %rax
jb 0xbd057
movq 0x78(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0xd86b0
jmp 0xbd055
jmp 0xbd057
leaq 0x1a0(%rsp), %rdi
callq 0xd8740
jmp 0xbd075
leaq 0x1a0(%rsp), %rdi
callq 0xd8740
jmp 0xbd0a1
movb $0x1, 0x48c(%rsp)
movl $0x1, 0x1d8(%rsp)
leaq 0x450(%rsp), %rdi
callq 0xd8740
testb $0x1, 0x48c(%rsp)
jne 0xbd0c4
jmp 0xbd0ba
leaq 0x450(%rsp), %rdi
callq 0xd8740
movq 0x78(%rsp), %rdi
callq 0xd8860
jmp 0xbd0d4
movq 0x78(%rsp), %rdi
callq 0xd8860
movq 0x80(%rsp), %rax
addq $0x4a8, %rsp            # imm = 0x4A8
retq
movq 0x438(%rsp), %rdi
callq 0xdd40
nopw %cs:(%rax,%rax)