// File: /workspace/github_cpp_makefile_star2_O1/Chrom3D[P]Chrom3D/src/tclap-1.2.1/include/tclap/XorHandler.h
// Function: TCLAP::XorHandler::check(TCLAP::Arg const*)
inline int XorHandler::check( const Arg* a ) 
{
	// iterate over each XOR list
	for ( int i = 0; static_cast<unsigned int>(i) < _orList.size(); i++ )
	{
		// if the XOR list contains the arg..
		ArgVectorIterator ait = std::find( _orList[i].begin(), 
		                                   _orList[i].end(), a );
		if ( ait != _orList[i].end() )
		{
			// first check to see if a mutually exclusive switch
			// has not already been set
			for ( ArgVectorIterator it = _orList[i].begin(); 
				  it != _orList[i].end(); 
				  it++ )
				if ( a != (*it) && (*it)->isSet() )
					throw(CmdLineParseException(
					      "Mutually exclusive argument already set!",
					      (*it)->toString()));

			// go through and set each arg that is not a
			for ( ArgVectorIterator it = _orList[i].begin(); 
				  it != _orList[i].end(); 
				  it++ )
				if ( a != (*it) )
					(*it)->xorSet();

			// return the number of required args that have now been set
			if ( (*ait)->allowMore() )
				return 0;
			else
				return static_cast<int>(_orList[i].size());
		}
	}

	if ( a->isRequired() )
		return 1;
	else
		return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rsi, 0x8(%rsp)
movq (%rdi), %rax
cmpq %rax, 0x8(%rdi)
setne %cl
je 0x24a25
movq %rdi, %rbp
xorl %r13d, %r13d
movb $0x1, %r14b
movq %rdi, 0x10(%rsp)
movb %cl, 0x7(%rsp)
leaq (,%r13,8), %rcx
leaq (%rcx,%rcx,2), %rbx
movq (%rax,%rbx), %rdi
movq 0x8(%rax,%rbx), %rsi
leaq 0x8(%rsp), %rdx
callq 0x24d82
movq %rax, %r15
movq (%rbp), %rax
movq 0x8(%rax,%rbx), %rbp
cmpq %rbp, %r15
je 0x249ed
addq %rbx, %rax
movq (%rax), %rax
cmpq %rbp, %rax
je 0x24994
movq 0x8(%rsp), %rcx
movq %rax, %r12
movq (%r12), %rdx
cmpq %rdx, %rcx
je 0x2498b
cmpb $0x1, 0x91(%rdx)
jne 0x2498b
cmpb $0x0, 0xa1(%rdx)
je 0x24a51
addq $0x8, %r12
cmpq %rbp, %r12
jne 0x2496c
cmpq %rbp, %rax
je 0x249bd
movq 0x8(%rsp), %rcx
movq (%rax), %rdx
cmpq %rdx, %rcx
je 0x249b4
movb %r14b, 0x91(%rdx)
movb %r14b, 0xa1(%rdx)
addq $0x8, %rax
cmpq %rbp, %rax
jne 0x2499e
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x58(%rax)
xorl %r12d, %r12d
testb %al, %al
jne 0x249ed
movq 0x10(%rsp), %rax
movq (%rax), %rax
leaq (,%r13,2), %rcx
addq %r13, %rcx
movq 0x8(%rax,%rcx,8), %r12
subq (%rax,%rcx,8), %r12
shrq $0x3, %r12
cmpq %rbp, %r15
jne 0x24a27
incq %r13
movq 0x10(%rsp), %rbp
movq (%rbp), %rax
movq 0x8(%rbp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
cmpq %r13, %rcx
seta %cl
ja 0x24921
jmp 0x24a2b
jmp 0x24a2b
movb 0x7(%rsp), %cl
testb $0x1, %cl
jne 0x24a3f
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movzbl %al, %r12d
movl %r12d, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x68, %edi
callq 0x61a0
movq %rax, %rbx
leaq 0x28(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x700d(%rip), %rsi      # 0x2ba7b
leaq 0x702e(%rip), %rdx      # 0x2baa3
leaq 0x18(%rsp), %rdi
callq 0xe03a
movq (%r12), %rsi
movq (%rsi), %rax
leaq 0x38(%rsp), %rdi
callq *0x38(%rax)
movb $0x1, %bpl
leaq 0x18(%rsp), %rsi
leaq 0x38(%rsp), %rdx
movq %rbx, %rdi
callq 0x1e940
xorl %ebp, %ebp
leaq 0x12afc(%rip), %rsi     # 0x375a8
leaq 0xa2d(%rip), %rdx       # 0x254e0
movq %rbx, %rdi
callq 0x6550
movq %rax, %r14
leaq 0x48(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x24ae1
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x24ae1
movq %rax, %r14
movb $0x1, %bpl
movq 0x18(%rsp), %rdi
cmpq %r15, %rdi
je 0x24b00
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x24b00
movq %rax, %r14
movb $0x1, %bpl
testb %bpl, %bpl
je 0x24b0d
movq %rbx, %rdi
callq 0x6280
movq %r14, %rdi
callq 0x65b0
nop