// File: /workspace/github_cpp_makefile_star2_O3/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 $0x48, %rsp
movq %rsi, (%rsp)
movq (%rdi), %rdx
cmpq %rdx, 0x8(%rdi)
je 0x2449c
movq %rdi, %rbx
movl $0x8, %r15d
xorl %r12d, %r12d
movq %rsp, %r14
movabsq $-0x5555555555555555, %r13 # imm = 0xAAAAAAAAAAAAAAAB
movq -0x8(%rdx,%r15), %rdi
movq (%rdx,%r15), %rsi
movq %r14, %rdx
callq 0x24887
movq (%rbx), %rdx
movq (%rdx,%r15), %rcx
cmpq %rcx, %rax
jne 0x244b7
incq %r12
movq 0x8(%rbx), %rax
subq %rdx, %rax
sarq $0x3, %rax
imulq %r13, %rax
addq $0x18, %r15
cmpq %r12, %rax
ja 0x24460
movq (%rsp), %rsi
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x28(%rax)
movzbl %al, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq -0x8(%rdx,%r15), %rdx
cmpq %rcx, %rdx
je 0x24516
movq (%rsp), %rsi
movq %rdx, %r14
movq (%r14), %rdi
cmpq %rdi, %rsi
je 0x244e2
cmpb $0x1, 0x91(%rdi)
jne 0x244e2
cmpb $0x0, 0xa1(%rdi)
je 0x2453c
addq $0x8, %r14
cmpq %rcx, %r14
jne 0x244c8
cmpq %rcx, %rdx
je 0x24516
movq (%rsp), %rsi
movb $0x1, %dil
movq (%rdx), %r8
cmpq %r8, %rsi
je 0x2450d
movb %dil, 0x91(%r8)
movb %dil, 0xa1(%r8)
addq $0x8, %rdx
cmpq %rcx, %rdx
jne 0x244f7
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x58(%rax)
movl %eax, %ecx
xorl %eax, %eax
testb %cl, %cl
jne 0x244a8
movq (%rbx), %rcx
movq (%rcx,%r15), %rax
subq -0x8(%rcx,%r15), %rax
shrq $0x3, %rax
jmp 0x244a8
movl $0x68, %edi
callq 0x61a0
movq %rax, %rbx
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7522(%rip), %rsi      # 0x2ba7b
leaq 0x7543(%rip), %rdx      # 0x2baa3
leaq 0x8(%rsp), %rdi
callq 0xdf94
movq (%r14), %rsi
movq (%rsi), %rax
leaq 0x28(%rsp), %rdi
callq *0x38(%rax)
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x1e520
xorl %ebp, %ebp
leaq 0x13012(%rip), %rsi     # 0x375a8
leaq 0xa51(%rip), %rdx       # 0x24fee
movq %rbx, %rdi
callq 0x6550
movq %rax, %r14
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x245c3
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x245da
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6310
testb %bpl, %bpl
jne 0x24600
jmp 0x24608
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x24600
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x24600
movq %rax, %r14
movq %rbx, %rdi
callq 0x6280
movq %r14, %rdi
callq 0x65b0