// File: /workspace/github_cpp_makefile_star2_O2/ncbi[P]amr/seq.cpp
// Function: Seq_sp::Dna::polyNucWindow(unsigned long, unsigned long, char) const
bool Dna::polyNucWindow (size_t start,
           	             size_t windowLen,
           		           char nucleotide) const
{
  ASSERT (start <= seq. size ());
  ASSERT (charInSet (nucleotide, dnaAlphabet));

  const size_t end = min (start + windowLen, seq. size ());
  ASSERT (start <= end);
  if (start == end)
    return false;

  size_t mismatch = 0;
  FOR_START (size_t, i, start, end)
    if (! nucleotideMatch (seq [i], nucleotide))
      mismatch++;

  return (double) mismatch / (double) (end - start) <= 0.2;  // PAR
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movl %ecx, %ebp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
callq 0xc070
movq %rax, 0x110(%rsp)
andl $0x0, (%rax)
cmpq %r14, 0x30(%r15)
jb 0x4c313
movq 0x3d82b(%rip), %rsi     # 0x89a50
leaq 0x30(%rsp), %r13
leaq 0x10(%rsp), %rdx
movq %r13, %rdi
callq 0xdbbe
movsbl %bpl, %ebp
movl %ebp, %edi
movq %r13, %rsi
callq 0x2a35c
movl %eax, %r12d
movq %r13, %rdi
callq 0xcbe8
testb %r12b, %r12b
je 0x4c3e7
addq %r14, %rbx
movq 0x30(%r15), %rax
cmpq %rbx, %rax
cmovbq %rax, %rbx
movq 0x110(%rsp), %rax
andl $0x0, (%rax)
cmpq %r14, %rbx
jb 0x4c4bb
movq %rbx, %r12
subq %r14, %r12
jne 0x4c287
xorl %eax, %eax
jmp 0x4c301
xorl %r13d, %r13d
cmpq %r14, %rbx
je 0x4c2ac
movq 0x28(%r15), %rax
movsbl (%rax,%r14), %edi
movl %ebp, %esi
callq 0x49346
xorb $0x1, %al
movzbl %al, %eax
addq %rax, %r13
incq %r14
jmp 0x4c28a
movq %r13, %xmm0
movq 0x15d07(%rip), %xmm1    # 0x61fc0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x15d0b(%rip), %xmm2    # 0x61fd0
subpd %xmm2, %xmm0
movapd %xmm0, %xmm3
unpckhpd %xmm0, %xmm3            # xmm3 = xmm3[1],xmm0[1]
addsd %xmm0, %xmm3
movq %r12, %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
subpd %xmm2, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
divsd %xmm1, %xmm3
movsd 0x16c76(%rip), %xmm0    # 0x62f70
ucomisd %xmm3, %xmm0
setae %al
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0xc6d0
testl %eax, %eax
jne 0x4c58f
leaq 0x16ceb(%rip), %rsi     # 0x63012
leaq 0xb0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x90(%rsp), %rdi
movl $0x994, %esi            # imm = 0x994
callq 0xe2d5
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0xe26e
leaq 0x11e62(%rip), %rdx     # 0x5e1d1
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0x1734a(%rip), %rsi     # 0x636d5
leaq 0x50(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x1252b(%rip), %rdx     # 0x5e8cc
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xe24f
leaq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0xe26e
leaq 0x17343(%rip), %rdx     # 0x63711
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0x30(%rsp), %rdi
callq 0x101d0
callq 0xc6d0
testl %eax, %eax
jne 0x4c58f
leaq 0x16c17(%rip), %rsi     # 0x63012
leaq 0xb0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x90(%rsp), %rdi
movl $0x995, %esi            # imm = 0x995
callq 0xe2d5
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0xe26e
leaq 0x11d8e(%rip), %rdx     # 0x5e1d1
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0x17276(%rip), %rsi     # 0x636d5
leaq 0x50(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x12457(%rip), %rdx     # 0x5e8cc
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xe24f
leaq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0xe26e
leaq 0x17285(%rip), %rdx     # 0x63727
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0x30(%rsp), %rdi
callq 0x101d0
callq 0xc6d0
testl %eax, %eax
jne 0x4c58f
leaq 0x16b43(%rip), %rsi     # 0x63012
leaq 0xb0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xdbbe
leaq 0x90(%rsp), %rdi
movl $0x998, %esi            # imm = 0x998
callq 0xe2d5
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0xe26e
leaq 0x11cba(%rip), %rdx     # 0x5e1d1
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xe24f
leaq 0x171a2(%rip), %rsi     # 0x636d5
leaq 0x50(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xdbbe
leaq 0x12383(%rip), %rdx     # 0x5e8cc
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xe24f
leaq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0xe26e
leaq 0x171d5(%rip), %rdx     # 0x6374b
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xe24f
leaq 0x30(%rsp), %rdi
callq 0x101d0
pushq $0x1
popq %rdi
callq 0xc6f0
jmp 0x4c59f
jmp 0x4c5ae
jmp 0x4c59f
jmp 0x4c5ae
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xcbe8
jmp 0x4c5b1
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xcbe8
jmp 0x4c5c4
jmp 0x4c5c1
jmp 0x4c5c1
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xcbe8
jmp 0x4c5d7
jmp 0x4c5d4
jmp 0x4c5d4
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xcbe8
jmp 0x4c5ea
jmp 0x4c5e7
jmp 0x4c5e7
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0xcbe8
jmp 0x4c600
jmp 0x4c5fd
jmp 0x4c5fd
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0xcbe8
jmp 0x4c616
jmp 0x4c613
jmp 0x4c613
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xcbe8
jmp 0x4c62c
jmp 0x4c629
jmp 0x4c629
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0xcbe8
jmp 0x4c642
jmp 0x4c63f
jmp 0x4c63f
movq %rax, %rbx
movq %rbx, %rdi
callq 0xcaa0