// File: statgen[P]statgen/lib/tclap-1.2.0/examples/../include/tclap/CmdLine.h
// Function: TCLAP::CmdLine::parse(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&)
inline void CmdLine::parse(std::vector<std::string>& args)
{
	bool shouldExit = false;
	int estat = 0;

	try {
		_progName = args.front();
		args.erase(args.begin());

		int requiredCount = 0;

		for (int i = 0; static_cast<unsigned int>(i) < args.size(); i++) {
			bool matched = false;
			for (ArgListIterator it = _argList.begin();
				 it != _argList.end(); it++) {
				if ( (*it)->processArg( &i, args ) )
					{
						requiredCount += _xorHandler.check( *it );
						matched = true;
						break;
					}
			}

			// checks to see if the argument is an empty combined
			// switch and if so, then we've actually matched it
			if ( !matched && _emptyCombined( args[i] ) )
				matched = true;

			if ( !matched && !Arg::ignoreRest() )
				throw(CmdLineParseException("Couldn't find match "
											"for argument",
											args[i]));
		}

		if ( requiredCount < _numRequired )
			missingArgsException();

		if ( requiredCount > _numRequired )
			throw(CmdLineParseException("Too many arguments!"));

	} catch ( ArgException& e ) {
		// If we're not handling the exceptions, rethrow.
		if ( !_handleExceptions) {
			throw;
		}

		try {
			_output->failure(*this,e);
		} catch ( ExitException &ee ) {
			estat = ee.getExitStatus();
			shouldExit = true;
		}
	} catch (ExitException &ee) {
		// If we're not handling the exceptions, rethrow.
		if ( !_handleExceptions) {
			throw;
		}

		estat = ee.getExitStatus();
		shouldExit = true;
	}

	if (shouldExit)
		exit(estat);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x100(%rbp)
movb $0x0, -0x11(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0xe8c0
movq -0x100(%rbp), %rdi
movq %rax, %rsi
addq $0x20, %rdi
callq 0x4040
jmp 0xd857
movq -0x10(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0xe300
movq %rax, -0x38(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xe960
movq -0x110(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0xe8f0
movq %rax, -0x108(%rbp)
jmp 0xd891
movq -0x108(%rbp), %rax
movq %rax, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
movq %rax, -0x118(%rbp)
movq -0x10(%rbp), %rdi
callq 0xe450
movq %rax, %rcx
movq -0x118(%rbp), %rax
cmpq %rcx, %rax
jae 0xdb01
movq -0x100(%rbp), %rdi
movb $0x0, -0x49(%rbp)
addq $0x8, %rdi
callq 0x9220
movq %rax, -0x58(%rbp)
movq -0x100(%rbp), %rdi
addq $0x8, %rdi
callq 0x9280
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x9250
testb $0x1, %al
jne 0xd912
jmp 0xd9b0
leaq -0x58(%rbp), %rdi
callq 0x9390
movq (%rax), %rdi
movq -0x10(%rbp), %rdx
movq (%rdi), %rax
movq 0x18(%rax), %rax
leaq -0x48(%rbp), %rsi
callq *%rax
movb %al, -0x119(%rbp)
jmp 0xd937
movb -0x119(%rbp), %al
testb $0x1, %al
jne 0xd943
jmp 0xd99a
movq -0x100(%rbp), %rax
addq $0x88, %rax
movq %rax, -0x128(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x9390
movq -0x128(%rbp), %rdi
movq (%rax), %rsi
callq 0xe9a0
movl %eax, -0x120(%rbp)
jmp 0xd977
movl -0x120(%rbp), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movb $0x1, -0x49(%rbp)
jmp 0xd9b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xdc62
jmp 0xd99c
leaq -0x58(%rbp), %rdi
xorl %esi, %esi
callq 0x9400
movq %rax, -0x68(%rbp)
jmp 0xd8e8
testb $0x1, -0x49(%rbp)
jne 0xd9ea
movq -0x10(%rbp), %rdi
movslq -0x48(%rbp), %rsi
callq 0x4da0
movq -0x100(%rbp), %rdi
movq %rax, %rsi
callq 0xeb50
movb %al, -0x129(%rbp)
jmp 0xd9da
movb -0x129(%rbp), %al
testb $0x1, %al
jne 0xd9e6
jmp 0xd9ea
movb $0x1, -0x49(%rbp)
testb $0x1, -0x49(%rbp)
jne 0xdaf1
callq 0x4d90
movb %al, -0x12a(%rbp)
jmp 0xda01
movb -0x12a(%rbp), %al
testb $0x1, %al
jne 0xdaf1
jmp 0xda11
movb $0x1, -0x8a(%rbp)
movl $0x68, %edi
callq 0x4140
movq %rax, -0x140(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x4430
movq -0x138(%rbp), %rdx
leaq 0x583c(%rip), %rsi      # 0x13286
leaq -0x88(%rbp), %rdi
callq 0x5110
jmp 0xda58
movq -0x10(%rbp), %rdi
movslq -0x48(%rbp), %rsi
callq 0x4da0
movq -0x140(%rbp), %rdi
movq %rax, %rdx
leaq -0x88(%rbp), %rsi
callq 0x51c0
jmp 0xda7d
movq -0x140(%rbp), %rdi
movb $0x0, -0x8a(%rbp)
leaq 0xcd4e(%rip), %rsi      # 0x1a7e0
leaq -0x85a9(%rip), %rdx     # 0x54f0
callq 0x4400
jmp 0xddfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xdac9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x44d8
leaq -0x89(%rbp), %rdi
callq 0x42b0
testb $0x1, -0x8a(%rbp)
jne 0xdae0
jmp 0xdaec
movq -0x140(%rbp), %rdi
callq 0x41d0
jmp 0xdc62
jmp 0xdaf3
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0xd8aa
movq -0x100(%rbp), %rcx
movl -0x44(%rbp), %eax
cmpl 0x80(%rcx), %eax
jge 0xdb23
movq -0x100(%rbp), %rdi
callq 0xec10
jmp 0xdb21
jmp 0xdb23
movq -0x100(%rbp), %rcx
movl -0x44(%rbp), %eax
cmpl 0x80(%rcx), %eax
jle 0xdce5
movb $0x1, -0xda(%rbp)
movl $0x68, %edi
callq 0x4140
movq %rax, -0x150(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x4430
movq -0x148(%rbp), %rdx
leaq 0x5735(%rip), %rsi      # 0x132a7
leaq -0xb0(%rbp), %rdi
callq 0x5110
jmp 0xdb80
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x4430
movq -0x158(%rbp), %rdx
leaq 0x571a(%rip), %rsi      # 0x132bb
leaq -0xd8(%rbp), %rdi
callq 0x5110
jmp 0xdbaf
movq -0x150(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
callq 0x51c0
jmp 0xdbcb
movq -0x150(%rbp), %rdi
movb $0x0, -0xda(%rbp)
leaq 0xcc00(%rip), %rsi      # 0x1a7e0
leaq -0x86f7(%rip), %rdx     # 0x54f0
callq 0x4400
jmp 0xddfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xdc3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xdc25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x44d8
leaq -0xd9(%rbp), %rdi
callq 0x42b0
leaq -0xb0(%rbp), %rdi
callq 0x44d8
leaq -0xb1(%rbp), %rdi
callq 0x42b0
testb $0x1, -0xda(%rbp)
jne 0xdc54
jmp 0xdc60
movq -0x150(%rbp), %rdi
callq 0x41d0
jmp 0xdc62
movl -0x24(%rbp), %eax
movl %eax, -0x15c(%rbp)
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0xdca5
movq -0x20(%rbp), %rdi
callq 0x40d0
movq %rax, %rcx
movq -0x100(%rbp), %rax
movq %rcx, -0xf0(%rbp)
testb $0x1, 0xd8(%rax)
jne 0xdd3e
callq 0x4380
jmp 0xddfd
movl -0x15c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xddec
movq -0x20(%rbp), %rdi
callq 0x40d0
movq %rax, %rcx
movq -0x100(%rbp), %rax
movq %rcx, -0xe8(%rbp)
testb $0x1, 0xd8(%rax)
jne 0xdcfd
callq 0x4380
jmp 0xddfd
jmp 0xddb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x43e0
jmp 0xdd28
movq -0xe8(%rbp), %rdi
callq 0xeed0
movl %eax, -0x160(%rbp)
jmp 0xdd11
movl -0x160(%rbp), %eax
movl %eax, -0x18(%rbp)
movb $0x1, -0x11(%rbp)
callq 0x43e0
jmp 0xddb7
jmp 0xddec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xddda
movq -0x100(%rbp), %rsi
movq 0xd0(%rsi), %rdi
movq -0xf0(%rbp), %rdx
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
jmp 0xdd5e
jmp 0xddb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xddda
movq -0x20(%rbp), %rdi
callq 0x40d0
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rdi
callq 0xeed0
movl %eax, -0x164(%rbp)
jmp 0xdd9c
movl -0x164(%rbp), %eax
movl %eax, -0x18(%rbp)
movb $0x1, -0x11(%rbp)
callq 0x43e0
jmp 0xddb0
jmp 0xddb2
callq 0x43e0
testb $0x1, -0x11(%rbp)
je 0xdde3
movl -0x18(%rbp), %edi
callq 0x4300
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x43e0
jmp 0xddd8
jmp 0xddda
callq 0x43e0
jmp 0xdde1
jmp 0xddec
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x4420
movq %rax, %rdi
callq 0x64d0
nopl (%rax)