// File: /workspace/github_cpp_makefile_star2_O2/ncbi[P]amr/seq.cpp
// Function: Seq_sp::PeptideOrf::PeptideOrf(unsigned long, char, Seq_sp::Peptide const*, unsigned long)
PeptideOrf::PeptideOrf (size_t translationStart_arg,
              	        Strand strand_arg,
              			    const Peptide* peptide,
                        size_t start_arg)
: translationStart (translationStart_arg)
, strand (strand_arg)
, start (start_arg)
, startM (Peptide::isStartAa (peptide->seq [start]))
, stop (peptide->seq. size ())
, stopTerminator (false)
{
  ASSERT (isStrand (strand));
	ASSERT (peptide);
  ASSERT (! peptide->seq. empty ());
  ASSERT (! peptide->sparse);
  ASSERT (start < peptide->seq. size ());
	
  // stop, stopTerminator
  FOR_START (size_t, i, start, peptide->seq. size ())
    if (peptide->seq [i] == *terminator)
    {
     	stop = i;
     	stopTerminator = true;
     	break;
    }
  ASSERT (stop <= peptide->seq. size ());

  ASSERT (! empty ());
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x110, %rsp            # imm = 0x110
movq %rcx, %rbx
movq %rdi, %r14
leaq 0x3a61b(%rip), %rax     # 0x889d8
movq %rax, (%rdi)
movq %rsi, 0x8(%rdi)
movb %dl, 0x10(%rdi)
movq %r8, 0x18(%rdi)
movq 0x28(%rcx), %rax
movsbl (%rax,%r8), %edi
callq 0x5b344
movb %al, 0x20(%r14)
movq 0x30(%rbx), %r15
movq %r15, 0x28(%r14)
movb $0x0, 0x30(%r14)
callq 0xc070
andl $0x0, (%rax)
movzbl 0x10(%r14), %ecx
cmpl $0x1, %ecx
je 0x4e408
cmpl $0xff, %ecx
jne 0x4e7bb
testq %r15, %r15
je 0x4e46b
cmpb $0x1, 0x48(%rbx)
je 0x4e53f
movq 0x18(%r14), %rcx
cmpq %r15, %rcx
jae 0x4e613
movq 0x3b7e5(%rip), %rsi     # 0x89c10
movq %rcx, %rdx
cmpq %r15, %rdx
jae 0x4e451
movq 0x28(%rbx), %rdi
movb (%rdi,%rdx), %dil
cmpb (%rsi), %dil
je 0x4e445
incq %rdx
jmp 0x4e42e
movq %rdx, 0x28(%r14)
movb $0x1, 0x30(%r14)
andl $0x0, (%rax)
andl $0x0, (%rax)
cmpq $-0x1, %rcx
je 0x4e6e7
addq $0x110, %rsp            # imm = 0x110
popq %rbx
popq %r14
popq %r15
retq
callq 0xc6d0
testl %eax, %eax
jne 0x4e88f
leaq 0x14b93(%rip), %rsi     # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0xd33, %esi            # imm = 0xD33
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0xfd16(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0x15498(%rip), %rsi     # 0x6396f
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x103df(%rip), %rdx     # 0x5e8cc
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0xe26e
leaq 0x154b4(%rip), %rdx     # 0x639d1
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
callq 0xc6d0
testl %eax, %eax
jne 0x4e88f
leaq 0x14abf(%rip), %rsi     # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0xd34, %esi            # imm = 0xD34
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0xfc42(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0x153c4(%rip), %rsi     # 0x6396f
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x1030b(%rip), %rdx     # 0x5e8cc
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0xe26e
leaq 0x153f9(%rip), %rdx     # 0x639ea
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
callq 0xc6d0
testl %eax, %eax
jne 0x4e88f
leaq 0x149eb(%rip), %rsi     # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0xd35, %esi            # imm = 0xD35
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0xfb6e(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0x152f0(%rip), %rsi     # 0x6396f
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x10237(%rip), %rdx     # 0x5e8cc
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0xe26e
leaq 0x15337(%rip), %rdx     # 0x639fc
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
callq 0xc6d0
testl %eax, %eax
jne 0x4e88f
leaq 0x14917(%rip), %rsi     # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0xd41, %esi            # imm = 0xD41
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0xfa9a(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0x1521c(%rip), %rsi     # 0x6396f
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x10163(%rip), %rdx     # 0x5e8cc
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0xe26e
leaq 0x10f2a(%rip), %rdx     # 0x5f6c3
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
callq 0xc6d0
testl %eax, %eax
jne 0x4e88f
leaq 0x14843(%rip), %rsi     # 0x63012
leaq 0x70(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x50(%rsp), %rdi
movl $0xd31, %esi            # imm = 0xD31
callq 0xe2d5
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xe26e
leaq 0xf9c6(%rip), %rdx      # 0x5e1d1
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xe24f
leaq 0x15148(%rip), %rsi     # 0x6396f
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x1008f(%rip), %rdx     # 0x5e8cc
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0xe26e
leaq 0x1514a(%rip), %rdx     # 0x639b7
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0xf0(%rsp), %rdi
callq 0x101d0
pushq $0x1
popq %rdi
callq 0xc6f0
jmp 0x4e8a7
jmp 0x4e8b9
jmp 0x4e8a7
jmp 0x4e8b9
jmp 0x4e8a7
jmp 0x4e8b9
jmp 0x4e8a7
jmp 0x4e8b9
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0xcbe8
jmp 0x4e8bc
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0xcbe8
jmp 0x4e8d6
jmp 0x4e8d3
jmp 0x4e8d3
jmp 0x4e8d3
jmp 0x4e8d3
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xcbe8
jmp 0x4e8ed
jmp 0x4e8ea
jmp 0x4e8ea
jmp 0x4e8ea
jmp 0x4e8ea
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xcbe8
jmp 0x4e904
jmp 0x4e901
jmp 0x4e901
jmp 0x4e901
jmp 0x4e901
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0xcbe8
jmp 0x4e91e
jmp 0x4e91b
jmp 0x4e91b
jmp 0x4e91b
jmp 0x4e91b
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xcbe8
jmp 0x4e938
jmp 0x4e935
jmp 0x4e935
jmp 0x4e935
jmp 0x4e935
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xcbe8
jmp 0x4e94f
jmp 0x4e94c
jmp 0x4e94c
jmp 0x4e94c
jmp 0x4e94c
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xcbe8
jmp 0x4e966
jmp 0x4e963
jmp 0x4e963
jmp 0x4e963
jmp 0x4e963
movq %rax, %rbx
movq %rbx, %rdi
callq 0xcaa0