// File: /workspace/github_cpp_makefile_star2_O2/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 %rdi, %rbx
leaq 0x10(%rsp), %r14
movq %rsi, (%r14)
pushq $0x8
popq %r15
xorl %r12d, %r12d
pushq $0x18
popq %r13
movq (%rbx), %rcx
movq 0x8(%rbx), %rax
subq %rcx, %rax
cqto
idivq %r13
cmpq %r12, %rax
jbe 0x1cce8
movq -0x8(%rcx,%r15), %rdi
movq (%rcx,%r15), %rsi
movq %r14, %rdx
callq 0x1d047
movq (%rbx), %rdx
movq (%rdx,%r15), %rcx
cmpq %rcx, %rax
jne 0x1ccf8
incq %r12
addq $0x18, %r15
jmp 0x1ccae
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movzbl %al, %eax
jmp 0x1cd6f
movq -0x8(%rdx,%r15), %rdx
movq 0x10(%rsp), %rsi
movq %rdx, %r14
cmpq %rcx, %r14
je 0x1cd2a
movq (%r14), %rdi
cmpq %rdi, %rsi
je 0x1cd24
cmpb $0x1, 0x91(%rdi)
jne 0x1cd24
cmpb $0x0, 0xa1(%rdi)
je 0x1cd7e
addq $0x8, %r14
jmp 0x1cd05
movb $0x1, %dil
cmpq %rcx, %rdx
je 0x1cd4e
movq (%rdx), %r8
cmpq %r8, %rsi
je 0x1cd48
movb %dil, 0x91(%r8)
movb %dil, 0xa1(%r8)
addq $0x8, %rdx
jmp 0x1cd2d
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x58(%rax)
movl %eax, %ecx
xorl %eax, %eax
testb %cl, %cl
jne 0x1cd6f
movq (%rbx), %rcx
movq (%rcx,%r15), %rax
subq -0x8(%rcx,%r15), %rax
shrq $0x3, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x68
popq %rdi
callq 0x61e0
movq %rax, %rbx
leaq 0x5ccb(%rip), %rsi      # 0x22a5b
leaq 0x38(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xcaa6
movq (%r14), %rsi
movq (%rsi), %rax
leaq 0x18(%rsp), %rdi
callq *0x38(%rax)
movb $0x1, %bpl
leaq 0x38(%rsp), %rsi
leaq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x192f8
xorl %ebp, %ebp
leaq 0x147ed(%rip), %rsi     # 0x315b8
leaq 0x75c(%rip), %rdx       # 0x1d52e
movq %rbx, %rdi
callq 0x6580
movq %rax, %r14
leaq 0x18(%rsp), %rdi
callq 0x66d0
jmp 0x1cdef
movq %rax, %r14
movb $0x1, %bpl
leaq 0x38(%rsp), %rdi
callq 0x66d0
testb %bpl, %bpl
jne 0x1ce03
jmp 0x1ce0b
movq %rax, %r14
movq %rbx, %rdi
callq 0x62b0
movq %r14, %rdi
callq 0x65d0
nop