// File: ncbi[P]amr/amr_report.cpp
// Function: (anonymous namespace)::BlastAlignment::betterEq((anonymous namespace)::BlastAlignment const&) const
bool betterEq (const BlastAlignment &other) const
    // Reflexive
    { if (this == & other)
        return true;
      // PD-4981
      if (isMutationProt () != other. isMutationProt ())  
        return false;
      if (refMutation. empty () != other. refMutation. empty ())  
        return false;
      if (isSusceptibleProt () != other. isSusceptibleProt ())          
        return false;
      //
      if (targetProt == other. targetProt)  
      {
	    	if (targetName != other. targetName)
	        return false;
	    #if 0  // PD-4981
        if (   !        refMutation. empty ()
            || ! other. refMutation. empty ()
           )
          return false;
      #endif
        // PD-807, PD-4277
        if (   ! other. insideEq (*this)
        	  && !        insideEq (other)
        	 )
          if (   ! targetProt 
              || (   inFam () /*! isMutationProt ()*/   // PD-4722
                  && other. inFam () /*! other. isMutationProt ()*/   // PD-4755
                  && fusion2geneSymbols () != other. fusion2geneSymbols ()
                 )
             )  // PD-4687
            return false;
        if (   inFam () /*! isMutationProt ()*/
            && ! refAccession. empty () 
            && refAccession == other. refAccession  // PD-4013
           )  
        {
  	      LESS_PART (other, *this, nident);
  	      LESS_PART (*this, other, targetStart);
  	      LESS_PART (other, *this, targetEnd);
  	      LESS_PART (*this, other, refStart);
  	      LESS_PART (other, *this, refEnd);
        }
        else
        {
  	      LESS_PART (other, *this, /*notInFam ()*/ hasMutation ());
  	      LESS_PART (other, *this, refProtExactlyMatched (false));  // PD-1261, PD-1678
  	      LESS_PART (other, *this, nident);
  	      LESS_PART (*this, other, refEffectiveLen ());  
  	    }
	    }
	    else
	    { 
	    #if 0  // PD-4981
        if (refMutation. empty () != other. refMutation. empty ())  // PD-4706
          return false;
      #endif
        // PD-1902, PD-2139, PD-2313, PD-2320
	    	if (targetProt && ! matchesCds (other))
	    	  return false;
	    	if (! targetProt && ! other. matchesCds (*this))
	    	  return false;
	      LESS_PART (other, *this, refProtExactlyMatched (false));  
	    //LESS_PART (other, *this, allele ());  // PD-2352
	      LESS_PART (other, *this, alleleMatch ());  
	    //LESS_PART (*this, other, partial ());  // targetProt => supposed to be a correct annotation
	    }
      if (isMutationProt () && other. isMutationProt ())  
      {
			  const Set<string> mutationSymbols      (       getMutationSymbols ());
			  const Set<string> otherMutationSymbols (other. getMutationSymbols ());
			  if (mutationSymbols == otherMutationSymbols && targetProt != other. targetProt)
			    return targetProt;
			  if (   mutationSymbols. containsAll (otherMutationSymbols)
			      && ! otherMutationSymbols. containsAll (mutationSymbols)
			     )
			    return true;
			  if (   otherMutationSymbols. containsAll (mutationSymbols)
			      && ! mutationSymbols. containsAll (otherMutationSymbols)
			     )
			    return false;
			}
	    LESS_PART (other, *this, targetProt);
      return true;
    }

// Assembly:
subq $0x138, %rsp            # imm = 0x138
movq %rdi, 0x128(%rsp)
movq %rsi, 0x120(%rsp)
movq 0x128(%rsp), %rax
movq %rax, 0x48(%rsp)
cmpq 0x120(%rsp), %rax
jne 0x451bb
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rdi
callq 0x37da0
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x44(%rsp)
movq 0x120(%rsp), %rdi
callq 0x37da0
movb %al, %cl
movl 0x44(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x451f8
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rdi
addq $0xd0, %rdi
callq 0x5b690
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x40(%rsp)
movq 0x120(%rsp), %rdi
addq $0xd0, %rdi
callq 0x5b690
movb %al, %cl
movl 0x40(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x45243
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rdi
callq 0x38660
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x3c(%rsp)
movq 0x120(%rsp), %rdi
callq 0x38660
movb %al, %cl
movl 0x3c(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x45280
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movq 0x120(%rsp), %rcx
movb 0x8(%rcx), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x457eb
movq 0x48(%rsp), %rdi
addq $0x10, %rdi
movq 0x120(%rsp), %rsi
addq $0x10, %rsi
callq 0x5d640
testb $0x1, %al
jne 0x452c6
jmp 0x452d3
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rsi
movq 0x120(%rsp), %rdi
callq 0x45ba0
testb $0x1, %al
jne 0x45442
movq 0x48(%rsp), %rdi
movq 0x120(%rsp), %rsi
callq 0x45ba0
testb $0x1, %al
jne 0x45442
movq 0x48(%rsp), %rax
movb 0x8(%rax), %cl
movb $0x0, 0xff(%rsp)
movb $0x0, 0xcb(%rsp)
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x3b(%rsp)
je 0x453bd
movq 0x48(%rsp), %rdi
callq 0x37dc0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x3a(%rsp)
jne 0x45347
jmp 0x453b5
movq 0x120(%rsp), %rdi
callq 0x37dc0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x3a(%rsp)
jne 0x45363
jmp 0x453b5
movq 0x48(%rsp), %rsi
leaq 0x100(%rsp), %rdi
callq 0x463b0
movb $0x1, 0xff(%rsp)
movq 0x120(%rsp), %rsi
leaq 0xd8(%rsp), %rdi
callq 0x463b0
jmp 0x45394
movb $0x1, 0xcb(%rsp)
leaq 0x100(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x5d640
movb %al, 0x3a(%rsp)
movb 0x3a(%rsp), %al
movb %al, 0x3b(%rsp)
movb 0x3b(%rsp), %al
movb %al, 0x39(%rsp)
testb $0x1, 0xcb(%rsp)
jne 0x453d1
jmp 0x453de
leaq 0xd8(%rsp), %rdi
callq 0xce58
testb $0x1, 0xff(%rsp)
jne 0x453ea
jmp 0x453f7
leaq 0x100(%rsp), %rdi
callq 0xce58
movb 0x39(%rsp), %al
testb $0x1, %al
jne 0x45401
jmp 0x45440
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd0(%rsp)
movl %eax, 0xcc(%rsp)
testb $0x1, 0xff(%rsp)
jne 0x4542e
jmp 0x4543b
leaq 0x100(%rsp), %rdi
callq 0xce58
jmp 0x45b8b
jmp 0x45442
movq 0x48(%rsp), %rdi
callq 0x37dc0
testb $0x1, %al
jne 0x45455
jmp 0x45628
movq 0x48(%rsp), %rdi
addq $0x250, %rdi            # imm = 0x250
callq 0xcbb0
testb $0x1, %al
jne 0x45628
movq 0x48(%rsp), %rdi
addq $0x250, %rdi            # imm = 0x250
movq 0x120(%rsp), %rsi
addq $0x250, %rsi            # imm = 0x250
callq 0x52910
testb $0x1, %al
jne 0x45497
jmp 0x45628
movq 0x48(%rsp), %rcx
movq 0x120(%rsp), %rax
movq 0x200(%rax), %rax
cmpq 0x200(%rcx), %rax
jae 0x454c1
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
movq 0x200(%rax), %rax
movq 0x120(%rsp), %rcx
cmpq 0x200(%rcx), %rax
jae 0x454eb
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
movq 0x50(%rax), %rax
movq 0x120(%rsp), %rcx
cmpq 0x50(%rcx), %rax
jae 0x4550f
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rcx
movq 0x120(%rsp), %rax
movq 0x50(%rax), %rax
cmpq 0x50(%rcx), %rax
jae 0x45533
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rcx
movq 0x120(%rsp), %rax
movq 0x58(%rax), %rax
cmpq 0x58(%rcx), %rax
jae 0x45557
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
movq 0x58(%rax), %rax
movq 0x120(%rsp), %rcx
cmpq 0x58(%rcx), %rax
jae 0x4557b
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
movq 0xb8(%rax), %rax
movq 0x120(%rsp), %rcx
cmpq 0xb8(%rcx), %rax
jae 0x455a5
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rcx
movq 0x120(%rsp), %rax
movq 0xb8(%rax), %rax
cmpq 0xb8(%rcx), %rax
jae 0x455cf
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rcx
movq 0x120(%rsp), %rax
movq 0xc0(%rax), %rax
cmpq 0xc0(%rcx), %rax
jae 0x455f9
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
movq 0xc0(%rax), %rax
movq 0x120(%rsp), %rcx
cmpq 0xc0(%rcx), %rax
jae 0x45623
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
jmp 0x457e6
movq 0x120(%rsp), %rdi
callq 0x62310
movq 0x48(%rsp), %rdi
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x34(%rsp)
callq 0x62310
movb %al, %cl
movl 0x34(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x45665
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rdi
callq 0x62310
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x30(%rsp)
movq 0x120(%rsp), %rdi
callq 0x62310
movb %al, %cl
movl 0x30(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x456a2
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x120(%rsp), %rdi
xorl %esi, %esi
callq 0x623a0
movq 0x48(%rsp), %rdi
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x2c(%rsp)
xorl %esi, %esi
callq 0x623a0
movb %al, %cl
movl 0x2c(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x456e3
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rdi
xorl %esi, %esi
callq 0x623a0
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x28(%rsp)
movq 0x120(%rsp), %rdi
xorl %esi, %esi
callq 0x623a0
movb %al, %cl
movl 0x28(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x45724
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rcx
movq 0x120(%rsp), %rax
movq 0x200(%rax), %rax
cmpq 0x200(%rcx), %rax
jae 0x4574e
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
movq 0x200(%rax), %rax
movq 0x120(%rsp), %rcx
cmpq 0x200(%rcx), %rax
jae 0x45778
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rdi
callq 0x46860
movq %rax, 0x20(%rsp)
movq 0x120(%rsp), %rdi
callq 0x46860
movq %rax, %rcx
movq 0x20(%rsp), %rax
cmpq %rcx, %rax
jae 0x457ae
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x120(%rsp), %rdi
callq 0x46860
movq 0x48(%rsp), %rdi
movq %rax, 0x18(%rsp)
callq 0x46860
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jae 0x457e4
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
jmp 0x457e6
jmp 0x45945
movq 0x48(%rsp), %rax
testb $0x1, 0x8(%rax)
je 0x45819
movq 0x48(%rsp), %rdi
movq 0x120(%rsp), %rsi
callq 0x468b0
testb $0x1, %al
jne 0x45819
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
testb $0x1, 0x8(%rax)
jne 0x45847
movq 0x48(%rsp), %rsi
movq 0x120(%rsp), %rdi
callq 0x468b0
testb $0x1, %al
jne 0x45847
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x120(%rsp), %rdi
xorl %esi, %esi
callq 0x623a0
movq 0x48(%rsp), %rdi
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x14(%rsp)
xorl %esi, %esi
callq 0x623a0
movb %al, %cl
movl 0x14(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x45888
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rdi
xorl %esi, %esi
callq 0x623a0
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x10(%rsp)
movq 0x120(%rsp), %rdi
xorl %esi, %esi
callq 0x623a0
movb %al, %cl
movl 0x10(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x458c9
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movq 0x120(%rsp), %rdi
callq 0x47c20
movq 0x48(%rsp), %rdi
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0xc(%rsp)
callq 0x47c20
movb %al, %cl
movl 0xc(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x45906
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rdi
callq 0x47c20
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x8(%rsp)
movq 0x120(%rsp), %rdi
callq 0x47c20
movb %al, %cl
movl 0x8(%rsp), %eax
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x45943
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
jmp 0x45945
movq 0x48(%rsp), %rdi
callq 0x37da0
testb $0x1, %al
jne 0x45958
jmp 0x45b1a
movq 0x120(%rsp), %rdi
callq 0x37da0
testb $0x1, %al
jne 0x4596e
jmp 0x45b1a
movq 0x48(%rsp), %rsi
leaq 0x90(%rsp), %rdi
callq 0x47c70
movq 0x120(%rsp), %rsi
leaq 0x58(%rsp), %rdi
callq 0x47c70
jmp 0x45994
leaq 0x90(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x624a0
movb %al, 0x7(%rsp)
jmp 0x459ac
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x459b6
jmp 0x45a32
movq 0x48(%rsp), %rax
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movq 0x120(%rsp), %rcx
movb 0x8(%rcx), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x45a32
movq 0x48(%rsp), %rax
movb 0x8(%rax), %al
andb $0x1, %al
movb %al, 0x137(%rsp)
movl $0x1, 0x54(%rsp)
jmp 0x45ae6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd0(%rsp)
movl %eax, 0xcc(%rsp)
jmp 0x45b0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd0(%rsp)
movl %eax, 0xcc(%rsp)
leaq 0x58(%rsp), %rdi
callq 0x62630
jmp 0x45b0b
leaq 0x90(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x62540
movb %al, 0x6(%rsp)
jmp 0x45a4a
movb 0x6(%rsp), %al
testb $0x1, %al
jne 0x45a54
jmp 0x45a88
leaq 0x58(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x62540
movb %al, 0x5(%rsp)
jmp 0x45a6c
movb 0x5(%rsp), %al
testb $0x1, %al
jne 0x45a88
jmp 0x45a76
movb $0x1, 0x137(%rsp)
movl $0x1, 0x54(%rsp)
jmp 0x45ae6
leaq 0x58(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x62540
movb %al, 0x4(%rsp)
jmp 0x45aa0
movb 0x4(%rsp), %al
testb $0x1, %al
jne 0x45aaa
jmp 0x45ade
leaq 0x90(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x62540
movb %al, 0x3(%rsp)
jmp 0x45ac2
movb 0x3(%rsp), %al
testb $0x1, %al
jne 0x45ade
jmp 0x45acc
movb $0x0, 0x137(%rsp)
movl $0x1, 0x54(%rsp)
jmp 0x45ae6
movl $0x0, 0x54(%rsp)
leaq 0x58(%rsp), %rdi
callq 0x62630
leaq 0x90(%rsp), %rdi
callq 0x62630
movl 0x54(%rsp), %eax
testl %eax, %eax
je 0x45b09
jmp 0x45b07
jmp 0x45b7a
jmp 0x45b1a
leaq 0x90(%rsp), %rdi
callq 0x62630
jmp 0x45b8b
movq 0x48(%rsp), %rcx
movq 0x120(%rsp), %rax
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movb 0x8(%rcx), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x45b46
movb $0x1, 0x137(%rsp)
jmp 0x45b7a
movq 0x48(%rsp), %rax
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movq 0x120(%rsp), %rcx
movb 0x8(%rcx), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jge 0x45b72
movb $0x0, 0x137(%rsp)
jmp 0x45b7a
movb $0x1, 0x137(%rsp)
movb 0x137(%rsp), %al
andb $0x1, %al
addq $0x138, %rsp            # imm = 0x138
retq
movq 0xd0(%rsp), %rdi
callq 0xcc90
nopl (%rax,%rax)