// File: ncbi[P]amr/seq.cpp
// Function: Seq_sp::Dna::findPolyNucEnd(unsigned long, char) const
size_t Dna::findPolyNucEnd (size_t windowLen,
                            char nucleotide) const
{
  ASSERT (windowLen);
  ASSERT (charInSet (nucleotide, dnaAlphabet));


  size_t lastInitStart = seq. size () > windowLen ? seq. size () - windowLen : 0;
  size_t notPolyNuc = 0;
  FOR_REV (size_t, initStart, lastInitStart)
    if (polyNucWindow (initStart, windowLen, nucleotide))
    {
    	 lastInitStart = initStart;
    	 notPolyNuc = 0;
    }
    else
    {
      notPolyNuc++;
      if ((double) notPolyNuc > (double) windowLen * 1.3)  // PAR
        break;
    }

// Assembly:
subq $0x308, %rsp            # imm = 0x308
movb %dl, %al
movq %rdi, 0x2f8(%rsp)
movq %rsi, 0x2f0(%rsp)
movb %al, 0x2ef(%rsp)
movq 0x2f8(%rsp), %rax
movq %rax, 0x50(%rsp)
callq 0xd0a0
movl $0x0, (%rax)
cmpq $0x0, 0x2f0(%rsp)
jne 0xb3d2e
callq 0xd8c0
cmpl $0x0, %eax
jne 0xb3d24
leaq 0x247(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xdd50
movq 0x48(%rsp), %rdx
leaq 0x34973(%rip), %rsi     # 0xe8446
leaq 0x248(%rsp), %rdi
callq 0xfae0
jmp 0xb3ae2
leaq 0x210(%rsp), %rdi
movl $0x9a9, %esi            # imm = 0x9A9
callq 0x11600
jmp 0xb3af6
leaq 0x268(%rsp), %rdi
leaq 0x248(%rsp), %rsi
leaq 0x210(%rsp), %rdx
callq 0x11510
jmp 0xb3b15
leaq 0x2f6b5(%rip), %rdx     # 0xe31d1
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x114c0
jmp 0xb3b33
leaq 0x1cf(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xdd50
movq 0x40(%rsp), %rdx
leaq 0x3503b(%rip), %rsi     # 0xe8b8c
leaq 0x1d0(%rsp), %rdi
callq 0xfae0
jmp 0xb3b60
leaq 0x2fe3d(%rip), %rdx     # 0xe39a4
leaq 0x1f0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x114c0
jmp 0xb3b7e
leaq 0x2a8(%rsp), %rdi
leaq 0x288(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
callq 0x11510
jmp 0xb3b9d
leaq 0x3501f(%rip), %rdx     # 0xe8bc3
leaq 0x2c8(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x114c0
jmp 0xb3bbb
leaq 0x2c8(%rsp), %rdi
callq 0x173d0
jmp 0xb3bca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3d12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3d05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3cf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3ceb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3cd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3cc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3cb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3caa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
leaq 0x2c8(%rsp), %rdi
callq 0xdf08
leaq 0x2a8(%rsp), %rdi
callq 0xdf08
leaq 0x1f0(%rsp), %rdi
callq 0xdf08
leaq 0x1d0(%rsp), %rdi
callq 0xdf08
leaq 0x1cf(%rsp), %rdi
callq 0xd7a0
leaq 0x288(%rsp), %rdi
callq 0xdf08
leaq 0x268(%rsp), %rdi
callq 0xdf08
leaq 0x210(%rsp), %rdi
callq 0xdf08
leaq 0x248(%rsp), %rdi
callq 0xdf08
leaq 0x247(%rsp), %rdi
callq 0xd7a0
jmp 0xb4343
movl $0x1, %edi
callq 0xd8e0
callq 0xd0a0
movl $0x0, (%rax)
movb 0x2ef(%rsp), %al
movb %al, 0x2f(%rsp)
movq 0x6ce95(%rip), %rax     # 0x120be0
movq %rax, 0x30(%rsp)
leaq 0x1a7(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xdd50
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
leaq 0x1a8(%rsp), %rdi
callq 0xfae0
jmp 0xb3d7b
movb 0x2f(%rsp), %al
movsbl %al, %edi
leaq 0x1a8(%rsp), %rsi
callq 0x4cba0
movb %al, 0x2e(%rsp)
jmp 0xb3d95
movb 0x2e(%rsp), %al
xorb $-0x1, %al
movb %al, 0x2d(%rsp)
leaq 0x1a8(%rsp), %rdi
callq 0xdf08
leaq 0x1a7(%rsp), %rdi
callq 0xd7a0
movb 0x2d(%rsp), %al
testb $0x1, %al
jne 0xb3dc6
jmp 0xb4096
callq 0xd8c0
cmpl $0x0, %eax
jne 0xb408c
leaq 0xff(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xdd50
movq 0x20(%rsp), %rdx
leaq 0x34654(%rip), %rsi     # 0xe8446
leaq 0x100(%rsp), %rdi
callq 0xfae0
jmp 0xb3e01
leaq 0xd8(%rsp), %rdi
movl $0x9aa, %esi            # imm = 0x9AA
callq 0x11600
jmp 0xb3e15
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x11510
jmp 0xb3e34
leaq 0x2f396(%rip), %rdx     # 0xe31d1
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x114c0
jmp 0xb3e52
leaq 0x97(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xdd50
movq 0x18(%rsp), %rdx
leaq 0x34d1c(%rip), %rsi     # 0xe8b8c
leaq 0x98(%rsp), %rdi
callq 0xfae0
jmp 0xb3e7f
leaq 0x2fb1e(%rip), %rdx     # 0xe39a4
leaq 0xb8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x114c0
jmp 0xb3e9d
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
callq 0x11510
jmp 0xb3ebc
leaq 0x34c98(%rip), %rdx     # 0xe8b5b
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x114c0
jmp 0xb3eda
leaq 0x180(%rsp), %rdi
callq 0x173d0
jmp 0xb3ee9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb3f20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
leaq 0x1a8(%rsp), %rdi
callq 0xdf08
leaq 0x1a7(%rsp), %rdi
callq 0xd7a0
jmp 0xb4343
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb407a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb406d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb4060
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb4053
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb4039
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb402c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb401f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%rsp)
jmp 0xb4012
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x238(%rsp)
movl %eax, 0x234(%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 0xb4343
movl $0x1, %edi
callq 0xd8e0
movq 0x50(%rsp), %rdi
addq $0x28, %rdi
callq 0xd520
cmpq 0x2f0(%rsp), %rax
jbe 0xb40cb
movq 0x50(%rsp), %rdi
addq $0x28, %rdi
callq 0xd520
subq 0x2f0(%rsp), %rax
movq %rax, 0x10(%rsp)
jmp 0xb40d4
xorl %eax, %eax
movq %rax, 0x10(%rsp)
jmp 0xb40d4
movq 0x10(%rsp), %rax
movq %rax, 0x88(%rsp)
movq $0x0, 0x80(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rax
movq %rax, %rcx
addq $-0x1, %rcx
movq %rcx, 0x78(%rsp)
cmpq $0x0, %rax
jbe 0xb41ca
movq 0x50(%rsp), %rdi
movq 0x78(%rsp), %rsi
movq 0x2f0(%rsp), %rdx
movsbl 0x2ef(%rsp), %ecx
callq 0xb3000
testb $0x1, %al
jne 0xb413a
jmp 0xb4155
movq 0x78(%rsp), %rax
movq %rax, 0x88(%rsp)
movq $0x0, 0x80(%rsp)
jmp 0xb41c5
movq 0x80(%rsp), %rax
incq %rax
movq %rax, 0x80(%rsp)
movaps 0x32f21(%rip), %xmm3    # 0xe7090
movq 0x80(%rsp), %xmm0
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x32f1c(%rip), %xmm2    # 0xe70a0
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq 0x2f0(%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
movsd 0x341e9(%rip), %xmm2    # 0xe83a0
mulsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xb41c3
jmp 0xb41ca
jmp 0xb41c5
jmp 0xb40fa
movq 0x50(%rsp), %rdi
movq 0x88(%rsp), %rax
movq %rax, 0x70(%rsp)
addq $0x28, %rdi
callq 0xd520
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rax
cmpq 0x68(%rsp), %rax
jae 0xb431d
movq 0x50(%rsp), %rdi
movq 0x70(%rsp), %rax
movq %rax, 0x8(%rsp)
addq $0x28, %rdi
callq 0xd520
subq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
leaq 0x2f0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x14880
movq 0x50(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq (%rax), %rdx
movsbl 0x2ef(%rsp), %ecx
callq 0xb3000
testb $0x1, %al
jne 0xb4251
jmp 0xb4308
movq $0x0, 0x58(%rsp)
movq 0x50(%rsp), %rdi
movq 0x70(%rsp), %rax
movq %rax, (%rsp)
addq $0x28, %rdi
callq 0xd520
movq %rax, %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
jae 0xb42f4
movq 0x50(%rsp), %rdi
addq $0x28, %rdi
movq 0x70(%rsp), %rsi
callq 0xd7d0
movb (%rax), %al
movsbl %al, %edi
movsbl 0x2ef(%rsp), %esi
callq 0xacc30
testb $0x1, %al
jne 0xb42a8
jmp 0xb42d8
movq 0x58(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x58(%rsp)
cmpq $0x2, 0x58(%rsp)
jb 0xb42d6
movq 0x70(%rsp), %rax
subq 0x58(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x300(%rsp)
jmp 0xb4333
jmp 0xb42e1
movq $0x0, 0x58(%rsp)
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0xb425a
movq 0x70(%rsp), %rax
subq 0x58(%rsp), %rax
movq %rax, 0x300(%rsp)
jmp 0xb4333
jmp 0xb430a
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0xb41ea
movq 0x50(%rsp), %rdi
addq $0x28, %rdi
callq 0xd520
movq %rax, 0x300(%rsp)
movq 0x300(%rsp), %rax
addq $0x308, %rsp            # imm = 0x308
retq
movq 0x238(%rsp), %rdi
callq 0xdd40