// File: 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:
subq $0x108, %rsp            # imm = 0x108
movq %rdi, 0xf8(%rsp)
movq %rsi, 0xf0(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0x30(%rsp)
movl $0x0, 0xec(%rsp)
movq 0x30(%rsp), %rdi
movl 0xec(%rsp), %eax
movq %rax, 0x28(%rsp)
callq 0x42040
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
jae 0x4729f
movq 0x30(%rsp), %rdi
movslq 0xec(%rsp), %rsi
callq 0x42060
movq %rax, %rdi
callq 0x42080
movq 0x30(%rsp), %rdi
movq %rax, 0xd8(%rsp)
movslq 0xec(%rsp), %rsi
callq 0x42060
movq %rax, %rdi
callq 0x420f0
movq %rax, 0xd0(%rsp)
movq 0xd8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
callq 0x47ad0
movq 0x30(%rsp), %rdi
movq %rax, 0xe0(%rsp)
movslq 0xec(%rsp), %rsi
callq 0x42060
movq %rax, %rdi
callq 0x420f0
movq %rax, 0xc8(%rsp)
leaq 0xe0(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x420b0
testb $0x1, %al
jne 0x46fbf
jmp 0x47287
movq 0x30(%rsp), %rdi
movslq 0xec(%rsp), %rsi
callq 0x42060
movq %rax, %rdi
callq 0x42080
movq %rax, 0xc0(%rsp)
movq 0x30(%rsp), %rdi
movslq 0xec(%rsp), %rsi
callq 0x42060
movq %rax, %rdi
callq 0x420f0
movq %rax, 0xb8(%rsp)
leaq 0xc0(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x420b0
testb $0x1, %al
jne 0x47021
jmp 0x4719d
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0xc0(%rsp), %rdi
callq 0x42120
movq %rax, %rcx
movq 0x20(%rsp), %rax
cmpq (%rcx), %rax
je 0x47182
leaq 0xc0(%rsp), %rdi
callq 0x42120
movq (%rax), %rdi
callq 0x47b30
testb $0x1, %al
jne 0x4706a
jmp 0x47182
movb $0x1, 0x5f(%rsp)
movl $0x68, %edi
callq 0x8280
movq %rax, 0x10(%rsp)
leaq 0x97(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x8880
movq 0x18(%rsp), %rdx
leaq 0xabb7(%rip), %rsi      # 0x51c53
leaq 0x98(%rsp), %rdi
callq 0x1b100
jmp 0x470ab
leaq 0xc0(%rsp), %rdi
callq 0x42120
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq 0x60(%rsp), %rdi
callq *%rax
jmp 0x470cb
movq 0x10(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x3cd50
jmp 0x470e4
movq 0x10(%rsp), %rdi
movb $0x0, 0x5f(%rsp)
leaq 0x2230b(%rip), %rsi     # 0x69400
leaq -0xa05c(%rip), %rdx     # 0x3d0a0
callq 0x8820
jmp 0x472e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x4715d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x47150
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x60(%rsp), %rdi
callq 0x8998
leaq 0x98(%rsp), %rdi
callq 0x8998
leaq 0x97(%rsp), %rdi
callq 0x8500
testb $0x1, 0x5f(%rsp)
jne 0x47173
jmp 0x4717d
movq 0x10(%rsp), %rdi
callq 0x83a0
jmp 0x472da
jmp 0x47184
leaq 0xc0(%rsp), %rdi
xorl %esi, %esi
callq 0x42130
movq %rax, 0x50(%rsp)
jmp 0x46fe1
movq 0x30(%rsp), %rdi
movslq 0xec(%rsp), %rsi
callq 0x42060
movq %rax, %rdi
callq 0x42080
movq %rax, 0x48(%rsp)
movq 0x30(%rsp), %rdi
movslq 0xec(%rsp), %rsi
callq 0x42060
movq %rax, %rdi
callq 0x420f0
movq %rax, 0x40(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x420b0
testb $0x1, %al
jne 0x471f0
jmp 0x4723b
movq 0xf0(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x42120
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq (%rcx), %rax
je 0x47226
leaq 0x48(%rsp), %rdi
callq 0x42120
movq (%rax), %rdi
callq 0x47b70
jmp 0x47228
leaq 0x48(%rsp), %rdi
xorl %esi, %esi
callq 0x42130
movq %rax, 0x38(%rsp)
jmp 0x471bc
leaq 0xe0(%rsp), %rdi
callq 0x42120
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x58(%rax)
testb $0x1, %al
jne 0x47257
jmp 0x47264
movl $0x0, 0x104(%rsp)
jmp 0x472cb
movq 0x30(%rsp), %rdi
movslq 0xec(%rsp), %rsi
callq 0x42060
movq %rax, %rdi
callq 0x436a0
movl %eax, 0x104(%rsp)
jmp 0x472cb
jmp 0x47289
movl 0xec(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xec(%rsp)
jmp 0x46eef
movq 0xf0(%rsp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
testb $0x1, %al
jne 0x472b3
jmp 0x472c0
movl $0x1, 0x104(%rsp)
jmp 0x472cb
movl $0x0, 0x104(%rsp)
movl 0x104(%rsp), %eax
addq $0x108, %rsp            # imm = 0x108
retq
movq 0x88(%rsp), %rdi
callq 0x8870
nopw (%rax,%rax)