// File: /workspace/github_cpp_makefile_star2_O3/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 0x3014c
movq %rsi, %rbx
movq %rdi, %r14
movl $0x2e8, %r15d           # imm = 0x2E8
addq %r15, %rdi
leaq 0x72336(%rip), %r13     # 0xa240e
movq %rdi, (%rsp)
movq %r13, %rsi
callq 0xa150
testl %eax, %eax
sete %r12b
addq %rbx, %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0xa150
testl %eax, %eax
sete %al
xorb %r12b, %al
jne 0x3014a
cmpq $0x0, 0xe8(%r14)
sete %al
cmpq $0x0, 0xe8(%rbx)
sete %cl
xorb %al, %cl
jne 0x3014a
leaq 0x72304(%rip), %r13     # 0xa2427
movq (%rsp), %rdi
movq %r13, %rsi
callq 0xa150
testl %eax, %eax
sete %r12b
movq %r15, %rdi
movq %r13, %rsi
callq 0xa150
testl %eax, %eax
sete %al
xorb %r12b, %al
je 0x30161
xorl %ebp, %ebp
andb $0x1, %bpl
movl %ebp, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movb 0x8(%r14), %al
cmpb 0x8(%rbx), %al
jne 0x30262
movq 0x18(%r14), %rdx
cmpq 0x18(%rbx), %rdx
jne 0x3014a
testq %rdx, %rdx
je 0x3018e
movq 0x10(%rbx), %rsi
movq 0x10(%r14), %rdi
callq 0xa570
testl %eax, %eax
jne 0x3014a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x30754
testb %al, %al
jne 0x301b0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x30754
testb %al, %al
je 0x304fb
movq %r14, %rdi
callq 0x2cb28
testb %al, %al
je 0x30481
cmpq $0x0, 0x258(%r14)
je 0x30481
movl $0x250, %esi            # imm = 0x250
leaq (%r14,%rsi), %rdi
addq %rbx, %rsi
callq 0x38f53
testb %al, %al
je 0x30481
movq 0x200(%rbx), %rax
movq 0x200(%r14), %rcx
cmpq %rcx, %rax
jb 0x3014c
ja 0x3014a
movq 0x50(%r14), %rax
movq 0x50(%rbx), %rcx
cmpq %rcx, %rax
jb 0x3014c
ja 0x3014a
movq 0x58(%rbx), %rax
movq 0x58(%r14), %rcx
cmpq %rcx, %rax
jb 0x3014c
ja 0x3014a
movq 0xb8(%r14), %rax
movq 0xb8(%rbx), %rcx
cmpq %rcx, %rax
jb 0x3014c
ja 0x3014a
movq 0xc0(%rbx), %rax
movq 0xc0(%r14), %rcx
jmp 0x3067e
testb %al, %al
je 0x3027d
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3121c
testb %al, %al
je 0x3014a
movb 0x8(%r14), %al
testb $0x1, %al
jne 0x30294
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3121c
testb %al, %al
je 0x3014a
movb 0x70(%rbx), %al
cmpb $0x1, %al
jne 0x302c6
movq 0xc8(%rbx), %rcx
testq %rcx, %rcx
je 0x302c6
movq 0x200(%rbx), %rdx
xorq %rdx, %rcx
xorq 0x38(%rbx), %rdx
orq %rcx, %rdx
sete %dl
cmpl $0x0, 0x6c(%rbx)
setne %cl
andb %dl, %cl
jmp 0x302c8
xorl %ecx, %ecx
cmpb $0x1, 0x70(%r14)
jne 0x3032c
movq 0xc8(%r14), %rdx
testq %rdx, %rdx
je 0x3032c
movq 0x200(%r14), %rsi
movq %rsi, %rdi
xorq %rdx, %rdi
xorq 0x38(%r14), %rsi
orq %rdi, %rsi
setne %sil
cmpl $0x0, 0x6c(%r14)
sete %dil
orb %cl, %dil
orb %sil, %dil
testb $0x1, %dil
je 0x3014c
movq 0x200(%r14), %rcx
xorq %rcx, %rdx
xorq 0x38(%r14), %rcx
orq %rdx, %rcx
sete %dl
cmpl $0x0, 0x6c(%r14)
setne %cl
andb %dl, %cl
jmp 0x3032e
xorl %ecx, %ecx
testb %al, %al
je 0x30366
movq 0xc8(%rbx), %rax
testq %rax, %rax
je 0x30366
movq 0x200(%rbx), %rdx
xorq %rdx, %rax
xorq 0x38(%rbx), %rdx
orq %rax, %rdx
setne %al
cmpl $0x0, 0x6c(%rbx)
sete %dl
orb %cl, %dl
orb %al, %dl
testb $0x1, %dl
je 0x3014a
movq %rbx, %rdi
callq 0x32162
movl %eax, %r13d
movq %r14, %rdi
callq 0x32162
testb %al, %al
je 0x30386
testb %r13b, %r13b
je 0x3014c
movq %r14, %rdi
callq 0x32162
movl %eax, %ebp
movq %rbx, %rdi
callq 0x32162
testb %al, %al
je 0x303a5
testb %bpl, %bpl
je 0x3014a
leaq 0x72062(%rip), %rsi     # 0xa240e
movq (%rsp), %rdi
callq 0xa150
testl %eax, %eax
jne 0x306b9
leaq 0x7204a(%rip), %rsi     # 0xa240e
movq %r15, %rdi
callq 0xa150
testl %eax, %eax
jne 0x306b9
movq 0x218(%r14), %rsi
movq 0x220(%r14), %rdx
leaq 0x8(%rsp), %rdi
callq 0x32182
movq 0x218(%rbx), %rsi
movq 0x220(%rbx), %rdx
leaq 0x40(%rsp), %rdi
callq 0x32182
leaq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x3f266
testb %al, %al
je 0x30425
movb 0x8(%r14), %bpl
cmpb 0x8(%rbx), %bpl
jne 0x30699
leaq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x3f28a
testb %al, %al
je 0x3044f
leaq 0x40(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x3f28a
testb %al, %al
je 0x30692
leaq 0x40(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x3f28a
testb %al, %al
je 0x30479
leaq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x3f28a
testb %al, %al
je 0x30697
movb $0x1, %r15b
jmp 0x3069c
movq %rbx, %rdi
callq 0x3f1d4
movl %eax, %r13d
movq %r14, %rdi
callq 0x3f1d4
testb %al, %al
je 0x304a1
testb %r13b, %r13b
je 0x3014c
movq %r14, %rdi
callq 0x3f1d4
movl %eax, %r13d
movq %rbx, %rdi
callq 0x3f1d4
testb %al, %al
je 0x304c1
testb %r13b, %r13b
je 0x3014a
movb 0x70(%rbx), %al
cmpb $0x1, %al
jne 0x30576
movq 0xc8(%rbx), %rcx
testq %rcx, %rcx
je 0x30576
movq 0x200(%rbx), %rdx
xorq %rdx, %rcx
xorq 0x38(%rbx), %rdx
orq %rcx, %rdx
sete %dl
cmpl $0x0, 0x6c(%rbx)
setne %cl
andb %dl, %cl
jmp 0x30578
cmpb $0x1, 0x8(%r14)
jne 0x3014a
movq %r14, %rdi
callq 0x2cb28
testb %al, %al
je 0x301b0
movq %rbx, %rdi
callq 0x2cb28
testb %al, %al
je 0x301b0
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x30dcc
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x30dcc
movq 0x10(%rsp), %rdx
cmpq 0x48(%rsp), %rdx
jne 0x30646
movq 0x40(%rsp), %r13
testq %rdx, %rdx
je 0x306c9
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0xa570
testl %eax, %eax
setne %r12b
jmp 0x306cc
xorl %ecx, %ecx
cmpb $0x1, 0x70(%r14)
jne 0x305dc
movq 0xc8(%r14), %rdx
testq %rdx, %rdx
je 0x305dc
movq 0x200(%r14), %rsi
movq %rsi, %rdi
xorq %rdx, %rdi
xorq 0x38(%r14), %rsi
orq %rdi, %rsi
setne %sil
cmpl $0x0, 0x6c(%r14)
sete %dil
orb %cl, %dil
orb %sil, %dil
testb $0x1, %dil
je 0x3014c
movq 0x200(%r14), %rcx
xorq %rcx, %rdx
xorq 0x38(%r14), %rcx
orq %rdx, %rcx
sete %dl
cmpl $0x0, 0x6c(%r14)
setne %cl
andb %dl, %cl
jmp 0x305de
xorl %ecx, %ecx
testb %al, %al
je 0x30616
movq 0xc8(%rbx), %rax
testq %rax, %rax
je 0x30616
movq 0x200(%rbx), %rdx
xorq %rdx, %rax
xorq 0x38(%rbx), %rdx
orq %rax, %rdx
setne %al
cmpl $0x0, 0x6c(%rbx)
sete %dl
orb %cl, %dl
orb %al, %dl
testb $0x1, %dl
je 0x3014a
movq 0x200(%rbx), %rax
movq 0x200(%r14), %rcx
cmpq %rcx, %rax
jb 0x3014c
ja 0x3014a
cmpb $0x0, 0x248(%r14)
jne 0x30650
movq 0xc8(%r14), %rax
jmp 0x3065e
movb $0x1, %r12b
movq 0x40(%rsp), %r13
jmp 0x306cc
movq 0xc0(%r14), %rax
subq 0xb8(%r14), %rax
cmpb $0x0, 0x248(%rbx)
jne 0x30670
movq 0xc8(%rbx), %rcx
jmp 0x3067e
movq 0xc0(%rbx), %rcx
subq 0xb8(%rbx), %rcx
cmpq %rcx, %rax
jb 0x3014c
ja 0x3014a
jmp 0x303a5
movb $0x1, %bpl
jmp 0x30699
xorl %ebp, %ebp
xorl %r15d, %r15d
leaq 0x40(%rsp), %rdi
callq 0x3f52e
leaq 0x8(%rsp), %rdi
callq 0x3f52e
testb %r15b, %r15b
je 0x3014c
movb 0x8(%r14), %al
cmpb 0x8(%rbx), %al
setae %bpl
jmp 0x3014c
xorl %r12d, %r12d
leaq 0x50(%rsp), %rax
cmpq %rax, %r13
je 0x306e6
movq 0x50(%rsp), %rsi
incq %rsi
movq %r13, %rdi
callq 0xa550
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x30701
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xa550
testb %r12b, %r12b
jne 0x3014a
jmp 0x301b0
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3074b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xa550
jmp 0x3074b
movq %rax, %rbx
jmp 0x30741
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x3f52e
leaq 0x8(%rsp), %rdi
callq 0x3f52e
movq %rbx, %rdi
callq 0xa9c0
nop