// File: /workspace/github_cpp_makefile_star2_O2/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movb $0x1, %bpl
cmpq %rsi, %rdi
je 0x22933
movq %rsi, %rbx
movq %rdi, %r14
callq 0x202a8
movl %eax, %r15d
movq %rbx, %rdi
callq 0x202a8
cmpb %al, %r15b
jne 0x226ab
cmpq $0x0, 0xe8(%r14)
sete %al
cmpq $0x0, 0xe8(%rbx)
sete %cl
xorb %al, %cl
jne 0x226ab
movq %r14, %rdi
callq 0x20848
movl %eax, %r15d
movq %rbx, %rdi
callq 0x20848
cmpb %al, %r15b
je 0x226b2
xorl %ebp, %ebp
jmp 0x22936
movb 0x8(%r14), %al
cmpb 0x8(%rbx), %al
jne 0x227a4
leaq 0x10(%r14), %rdi
leaq 0x10(%rbx), %rsi
callq 0x2b196
testb %al, %al
jne 0x226ab
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22b0c
testb %al, %al
jne 0x226f2
movq %r14, %rdi
movq %rbx, %rsi
callq 0x22b0c
testb %al, %al
je 0x229e2
movq %r14, %rdi
callq 0x202bc
testb %al, %al
je 0x22918
cmpq $0x0, 0x258(%r14)
je 0x22918
movl $0x250, %esi            # imm = 0x250
leaq (%r14,%rsi), %rdi
addq %rbx, %rsi
callq 0x27a6c
testb %al, %al
je 0x22918
movq 0x200(%rbx), %rax
movq 0x200(%r14), %rcx
cmpq %rcx, %rax
jb 0x22936
ja 0x226ab
movq 0x50(%r14), %rax
movq 0x50(%rbx), %rcx
cmpq %rcx, %rax
jb 0x22936
ja 0x226ab
movq 0x58(%rbx), %rax
movq 0x58(%r14), %rcx
cmpq %rcx, %rax
jb 0x22936
ja 0x226ab
movq 0xb8(%r14), %rax
movq 0xb8(%rbx), %rcx
cmpq %rcx, %rax
jb 0x22936
ja 0x226ab
movq 0xc0(%rbx), %rax
movq 0xc0(%r14), %rcx
jmp 0x22a8b
testb %al, %al
je 0x227bf
movq %r14, %rdi
movq %rbx, %rsi
callq 0x230f0
testb %al, %al
je 0x226ab
movb 0x8(%r14), %al
testb $0x1, %al
jne 0x227d6
movq %rbx, %rdi
movq %r14, %rsi
callq 0x230f0
testb %al, %al
je 0x226ab
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2c622
movl %eax, %ebp
movq %r14, %rdi
xorl %esi, %esi
callq 0x2c622
testb %al, %al
je 0x227f9
testb %bpl, %bpl
je 0x22933
xorl %ebp, %ebp
movq %r14, %rdi
xorl %esi, %esi
callq 0x2c622
movl %eax, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2c622
testb %al, %al
je 0x2281f
testb %r15b, %r15b
je 0x22936
movq %rbx, %rdi
callq 0x23906
movl %eax, %r15d
movq %r14, %rdi
callq 0x23906
testb %al, %al
je 0x22842
movb $0x1, %bpl
testb %r15b, %r15b
je 0x22936
movq %r14, %rdi
callq 0x23906
movl %eax, %ebp
movq %rbx, %rdi
callq 0x23906
testb %al, %al
je 0x22861
testb %bpl, %bpl
je 0x226ab
movq %r14, %rdi
callq 0x202a8
testb %al, %al
je 0x22ac9
movq %rbx, %rdi
callq 0x202a8
testb %al, %al
je 0x22ac9
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x23924
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x23924
leaq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x2c672
testb %al, %al
je 0x228bc
movb 0x8(%r14), %bpl
cmpb 0x8(%rbx), %bpl
jne 0x22aa9
leaq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x2c696
testb %al, %al
je 0x228e6
leaq 0x40(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2c696
testb %al, %al
je 0x22aa2
leaq 0x40(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2c696
testb %al, %al
je 0x22910
leaq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x2c696
testb %al, %al
je 0x22aa7
movb $0x1, %r15b
jmp 0x22aac
movq %rbx, %rdi
callq 0x2c5e6
movl %eax, %ebp
movq %r14, %rdi
callq 0x2c5e6
testb %al, %al
je 0x2294b
testb %bpl, %bpl
jne 0x2294b
movb $0x1, %bpl
andb $0x1, %bpl
movl %ebp, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r14, %rdi
callq 0x2c5e6
movl %eax, %ebp
movq %rbx, %rdi
callq 0x2c5e6
testb %al, %al
je 0x2296a
testb %bpl, %bpl
je 0x226ab
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2c622
movl %eax, %ebp
movq %r14, %rdi
xorl %esi, %esi
callq 0x2c622
testb %al, %al
je 0x22989
testb %bpl, %bpl
je 0x22933
xorl %ebp, %ebp
movq %r14, %rdi
xorl %esi, %esi
callq 0x2c622
movl %eax, %r15d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2c622
testb %al, %al
je 0x229ab
testb %r15b, %r15b
je 0x22936
movq 0x200(%rbx), %rax
movq 0x200(%r14), %rcx
cmpq %rcx, %rax
jb 0x22933
ja 0x226ab
cmpb $0x0, 0x248(%r14)
jne 0x22a5d
movq 0xc8(%r14), %rax
jmp 0x22a6b
cmpb $0x1, 0x8(%r14)
jne 0x226ab
movq %r14, %rdi
callq 0x202bc
testb %al, %al
je 0x226f2
movq %rbx, %rdi
callq 0x202bc
testb %al, %al
je 0x226f2
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x22e96
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x22e96
leaq 0x8(%rsp), %r15
leaq 0x40(%rsp), %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x2b196
movl %eax, %r13d
movq %r12, %rdi
callq 0xbb38
movq %r15, %rdi
callq 0xbb38
testb %r13b, %r13b
jne 0x226ab
jmp 0x226f2
movq 0xc0(%r14), %rax
subq 0xb8(%r14), %rax
cmpb $0x0, 0x248(%rbx)
jne 0x22a7d
movq 0xc8(%rbx), %rcx
jmp 0x22a8b
movq 0xc0(%rbx), %rcx
subq 0xb8(%rbx), %rcx
movb $0x1, %bpl
cmpq %rcx, %rax
jb 0x22936
ja 0x226ab
jmp 0x22861
movb $0x1, %bpl
jmp 0x22aa9
xorl %ebp, %ebp
xorl %r15d, %r15d
leaq 0x40(%rsp), %rdi
callq 0x2c9c6
leaq 0x8(%rsp), %rdi
callq 0x2c9c6
testb %r15b, %r15b
je 0x22936
movb 0x8(%r14), %al
cmpb 0x8(%rbx), %al
setae %bpl
jmp 0x22936
movq %rax, %rbx
jmp 0x22afa
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xbb38
jmp 0x22b04
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x2c9c6
leaq 0x8(%rsp), %rdi
callq 0x2c9c6
movq %rbx, %rdi
callq 0xb9f0