// File: /workspace/github_cpp_makefile_star2_O1/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 $0xb8, %rsp
movb $0x1, %bpl
cmpq %rsi, %rdi
je 0x30e2f
movq %rsi, %rbx
movq %rdi, %r14
movl $0x2e8, %r15d           # imm = 0x2E8
addq %r15, %rdi
leaq 0x72653(%rip), %r13     # 0xa340e
movq %rdi, (%rsp)
movq %r13, %rsi
callq 0xb150
testl %eax, %eax
sete %r12b
addq %rbx, %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0xb150
testl %eax, %eax
sete %al
xorb %r12b, %al
jne 0x30e2d
cmpq $0x0, 0xe8(%r14)
sete %al
cmpq $0x0, 0xe8(%rbx)
sete %cl
xorb %al, %cl
jne 0x30e2d
leaq 0x72621(%rip), %r13     # 0xa3427
movq (%rsp), %rdi
movq %r13, %rsi
callq 0xb150
testl %eax, %eax
sete %r12b
movq %r15, %rdi
movq %r13, %rsi
callq 0xb150
testl %eax, %eax
sete %al
xorb %r12b, %al
je 0x30e47
xorl %ebp, %ebp
andb $0x1, %bpl
movl %ebp, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movb 0x8(%r14), %al
cmpb 0x8(%rbx), %al
jne 0x30f15
movq 0x18(%r14), %rdx
cmpq 0x18(%rbx), %rdx
jne 0x30e2d
testq %rdx, %rdx
je 0x30e74
movq 0x10(%rbx), %rsi
movq 0x10(%r14), %rdi
callq 0xb570
testl %eax, %eax
jne 0x30e2d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x31460
testb %al, %al
jne 0x31193
movq %r14, %rdi
movq %rbx, %rsi
callq 0x31460
testb %al, %al
jne 0x31193
cmpb $0x1, 0x8(%r14)
jne 0x31141
movq %r14, %rdi
callq 0x2d810
testb %al, %al
je 0x31149
movq %rbx, %rdi
callq 0x2d810
testb %al, %al
je 0x31149
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x31ae6
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x31ae6
movq 0x10(%rsp), %rdx
movb $0x1, %r13b
cmpq 0x30(%rsp), %rdx
jne 0x31394
testq %rdx, %rdx
je 0x3114c
movq 0x28(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0xb570
testl %eax, %eax
setne %r12b
jmp 0x3114f
testb %al, %al
je 0x30f2c
movq %r14, %rdi
movq %rbx, %rsi
callq 0x31f2a
testb %al, %al
je 0x30e2d
cmpb $0x0, 0x8(%r14)
jne 0x30f46
movq %rbx, %rdi
movq %r14, %rsi
callq 0x31f2a
testb %al, %al
je 0x30e2d
movb 0x70(%rbx), %al
movb $0x1, %cl
cmpb $0x1, %al
jne 0x30f78
movq 0xc8(%rbx), %rdx
testq %rdx, %rdx
je 0x30f78
movq 0x200(%rbx), %rcx
xorq %rcx, %rdx
xorq 0x38(%rbx), %rcx
orq %rdx, %rcx
setne %dl
cmpl $0x0, 0x6c(%rbx)
sete %cl
orb %dl, %cl
movb 0x70(%r14), %dl
cmpb $0x1, %dl
jne 0x30fb0
movq 0xc8(%r14), %rsi
testq %rsi, %rsi
je 0x30fb0
movq 0x200(%r14), %rdi
xorq %rdi, %rsi
xorq 0x38(%r14), %rdi
orq %rsi, %rdi
sete %dil
cmpl $0x0, 0x6c(%r14)
setne %sil
andb %dil, %sil
jmp 0x30fb2
xorl %esi, %esi
movb $0x1, %bpl
testb %sil, %cl
jne 0x30e2f
movb $0x1, %cl
testb %dl, %dl
je 0x30fee
movq 0xc8(%r14), %rdx
testq %rdx, %rdx
je 0x30fee
movq 0x200(%r14), %rcx
xorq %rcx, %rdx
xorq 0x38(%r14), %rcx
orq %rdx, %rcx
setne %dl
cmpl $0x0, 0x6c(%r14)
sete %cl
orb %dl, %cl
testb %al, %al
je 0x3101d
movq 0xc8(%rbx), %rax
testq %rax, %rax
je 0x3101d
movq 0x200(%rbx), %rdx
xorq %rdx, %rax
xorq 0x38(%rbx), %rdx
orq %rax, %rdx
sete %dl
cmpl $0x0, 0x6c(%rbx)
setne %al
andb %dl, %al
jmp 0x3101f
xorl %eax, %eax
testb %al, %cl
jne 0x30e2d
movq %rbx, %rdi
callq 0x32e82
movl %eax, %r13d
movq %r14, %rdi
callq 0x32e82
testb %al, %al
je 0x3104a
movb $0x1, %bpl
testb %r13b, %r13b
je 0x30e2f
movq %r14, %rdi
callq 0x32e82
movl %eax, %ebp
movq %rbx, %rdi
callq 0x32e82
testb %al, %al
je 0x31069
testb %bpl, %bpl
je 0x30e2d
leaq 0x7239e(%rip), %rsi     # 0xa340e
movq (%rsp), %rdi
callq 0xb150
testl %eax, %eax
jne 0x31408
leaq 0x72386(%rip), %rsi     # 0xa340e
movq %r15, %rdi
callq 0xb150
testl %eax, %eax
jne 0x31408
leaq 0x80(%rsp), %rdi
movq %r14, %rsi
callq 0x32ea2
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x32ea2
leaq 0x80(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x40148
testb %al, %al
je 0x310d9
movb 0x8(%r14), %bpl
cmpb 0x8(%rbx), %bpl
jne 0x313e5
leaq 0x80(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x4016c
testb %al, %al
je 0x31109
leaq 0x48(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x4016c
testb %al, %al
je 0x313de
leaq 0x48(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x4016c
testb %al, %al
je 0x31139
leaq 0x80(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x4016c
testb %al, %al
je 0x313e3
movb $0x1, %r15b
jmp 0x313e8
movb $0x1, %r12b
xorl %r13d, %r13d
jmp 0x3114f
xorl %r13d, %r13d
xorl %r12d, %r12d
testb %r13b, %r13b
je 0x3118a
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3116f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3118a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
testb %r12b, %r12b
jne 0x30e2d
movq %r14, %rdi
callq 0x2d810
testb %al, %al
je 0x31241
cmpq $0x0, 0x258(%r14)
je 0x31241
movl $0x250, %esi            # imm = 0x250
leaq (%r14,%rsi), %rdi
addq %rbx, %rsi
callq 0x39e48
testb %al, %al
je 0x31241
movq 0x200(%rbx), %rax
movq 0x200(%r14), %rcx
cmpq %rcx, %rax
jb 0x30e2f
ja 0x30e2d
movq 0x50(%r14), %rax
movq 0x50(%rbx), %rcx
cmpq %rcx, %rax
jb 0x30e2f
ja 0x30e2d
movq 0x58(%rbx), %rax
movq 0x58(%r14), %rcx
cmpq %rcx, %rax
jb 0x30e2f
ja 0x30e2d
movq 0xb8(%r14), %rax
movq 0xb8(%rbx), %rcx
cmpq %rcx, %rax
jb 0x30e2f
ja 0x30e2d
movq 0xc0(%rbx), %rax
movq 0xc0(%r14), %rcx
jmp 0x313ca
movq %rbx, %rdi
callq 0x400b4
movl %eax, %r13d
movq %r14, %rdi
callq 0x400b4
testb %al, %al
je 0x31261
testb %r13b, %r13b
je 0x30e2f
movq %r14, %rdi
callq 0x400b4
movl %eax, %ebp
movq %rbx, %rdi
callq 0x400b4
testb %al, %al
je 0x31280
testb %bpl, %bpl
je 0x30e2d
movb 0x70(%rbx), %al
movb $0x1, %cl
cmpb $0x1, %al
jne 0x312b2
movq 0xc8(%rbx), %rdx
testq %rdx, %rdx
je 0x312b2
movq 0x200(%rbx), %rcx
xorq %rcx, %rdx
xorq 0x38(%rbx), %rcx
orq %rdx, %rcx
setne %dl
cmpl $0x0, 0x6c(%rbx)
sete %cl
orb %dl, %cl
movb 0x70(%r14), %dl
cmpb $0x1, %dl
jne 0x312ea
movq 0xc8(%r14), %rsi
testq %rsi, %rsi
je 0x312ea
movq 0x200(%r14), %rdi
xorq %rdi, %rsi
xorq 0x38(%r14), %rdi
orq %rsi, %rdi
sete %dil
cmpl $0x0, 0x6c(%r14)
setne %sil
andb %dil, %sil
jmp 0x312ec
xorl %esi, %esi
movb $0x1, %bpl
testb %sil, %cl
jne 0x30e2f
movb $0x1, %cl
testb %dl, %dl
je 0x31328
movq 0xc8(%r14), %rdx
testq %rdx, %rdx
je 0x31328
movq 0x200(%r14), %rcx
xorq %rcx, %rdx
xorq 0x38(%r14), %rcx
orq %rdx, %rcx
setne %dl
cmpl $0x0, 0x6c(%r14)
sete %cl
orb %dl, %cl
testb %al, %al
je 0x31357
movq 0xc8(%rbx), %rax
testq %rax, %rax
je 0x31357
movq 0x200(%rbx), %rdx
xorq %rdx, %rax
xorq 0x38(%rbx), %rdx
orq %rax, %rdx
sete %dl
cmpl $0x0, 0x6c(%rbx)
setne %al
andb %dl, %al
jmp 0x31359
xorl %eax, %eax
testb %al, %cl
jne 0x30e2d
movq 0x200(%rbx), %rax
movq 0x200(%r14), %rcx
movb $0x1, %bpl
cmpq %rcx, %rax
jb 0x30e2f
ja 0x30e2d
cmpb $0x0, 0x248(%r14)
jne 0x3139c
movq 0xc8(%r14), %rax
jmp 0x313aa
movb $0x1, %r12b
jmp 0x3114f
movq 0xc0(%r14), %rax
subq 0xb8(%r14), %rax
cmpb $0x0, 0x248(%rbx)
jne 0x313bc
movq 0xc8(%rbx), %rcx
jmp 0x313ca
movq 0xc0(%rbx), %rcx
subq 0xb8(%rbx), %rcx
cmpq %rcx, %rax
jb 0x30e2f
ja 0x30e2d
jmp 0x31069
movb $0x1, %bpl
jmp 0x313e5
xorl %ebp, %ebp
xorl %r15d, %r15d
leaq 0x48(%rsp), %rdi
callq 0x4041a
leaq 0x80(%rsp), %rdi
callq 0x4041a
testb %r15b, %r15b
je 0x30e2f
movb 0x8(%r14), %al
cmpb 0x8(%rbx), %al
setae %bpl
jmp 0x30e2f
movq %rax, %rbx
jmp 0x3144a
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x31457
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0x31457
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x4041a
leaq 0x80(%rsp), %rdi
callq 0x4041a
movq %rbx, %rdi
callq 0xb9c0
nop