// File: statgen[P]statgen/lib/tclap-1.2.0/examples/../include/tclap/ZshCompletionOutput.h
// Function: TCLAP::ZshCompletionOutput::printOption(TCLAP::Arg*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
inline void ZshCompletionOutput::printOption(Arg* a, std::string mutex)
{
	std::string flag = a->flagStartChar() + a->getFlag();
	std::string name = a->nameStartString() + a->getName();
	std::string desc = a->getDescription();

	// remove full stop and capitalisation from description as
	// this is the convention for zsh function
	if (!desc.compare(0, 12, "(required)  "))
	{
		desc.erase(0, 12);
	}
	if (!desc.compare(0, 15, "(OR required)  "))
	{
		desc.erase(0, 15);
	}
	size_t len = desc.length();
	if (len && desc.at(--len) == '.')
	{
		desc.erase(len);
	}
	if (len)
	{
		desc.replace(0, 1, 1, tolower(desc.at(0)));
	}

	std::cout << " \\" << std::endl << "  '" << mutex;

	if ( a->getFlag().empty() )
	{
		std::cout << name;
	}
	else
	{
		std::cout << "'{" << flag << ',' << name << "}'";
	}
	if ( theDelimiter == '=' && a->isValueRequired() )
		std::cout << "=-";
	quoteSpecialChars(desc);
	std::cout << '[' << desc << ']';

	if ( a->isValueRequired() )
	{
		std::string arg = a->shortID();
		arg.erase(0, arg.find_last_of(theDelimiter) + 1);
		if ( arg.at(arg.length()-1) == ']' )
			arg.erase(arg.length()-1);
		if ( arg.at(arg.length()-1) == ']' )
		{
			arg.erase(arg.length()-1);
		}
		if ( arg.at(0) == '<' )
		{
			arg.erase(arg.length()-1);
			arg.erase(0, 1);
		}
		size_t p = arg.find('|');
		if ( p != std::string::npos )
		{
			do
			{
				arg.replace(p, 1, 1, ' ');
			}
			while ( (p = arg.find_first_of('|', p)) != std::string::npos );
			quoteSpecialChars(arg);
			std::cout << ": :(" << arg << ')';
		}
		else
		{
			std::cout << ':' << arg;
			std::map<std::string, std::string>::iterator compArg = common.find(arg);
			if ( compArg != common.end() )
			{
				std::cout << ':' << compArg->second;
			}
		}
	}

	std::cout << '\'';
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
movq %rdx, -0x128(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x120(%rbp)
callq 0xf3d0
movb %al, -0x111(%rbp)
movq -0x10(%rbp), %rdi
callq 0xac20
movq %rax, %rdx
movb -0x111(%rbp), %al
movsbl %al, %esi
leaq -0x38(%rbp), %rdi
callq 0xfc80
leaq -0x78(%rbp), %rdi
callq 0xe1e0
jmp 0xac9d
movq -0x10(%rbp), %rdi
callq 0xf3e0
movq %rax, %rdx
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xfd80
jmp 0xacb8
leaq -0x78(%rbp), %rdi
callq 0x55c8
movq -0x10(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0xeac0
jmp 0xacd3
leaq 0xe7fa(%rip), %rcx      # 0x194d4
xorl %eax, %eax
movl %eax, %esi
leaq -0xa8(%rbp), %rdi
movl $0xc, %edx
callq 0x53d0
movl %eax, -0x12c(%rbp)
jmp 0xacf7
movl -0x12c(%rbp), %eax
cmpl $0x0, %eax
jne 0xad74
xorl %eax, %eax
movl %eax, %esi
leaq -0xa8(%rbp), %rdi
movl $0xc, %edx
callq 0x50a0
jmp 0xad19
jmp 0xad74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb492
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x55c8
jmp 0xb492
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb489
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb47d
leaq 0xe766(%rip), %rcx      # 0x194e1
xorl %eax, %eax
movl %eax, %esi
leaq -0xa8(%rbp), %rdi
movl $0xf, %edx
callq 0x53d0
movl %eax, -0x130(%rbp)
jmp 0xad98
movl -0x130(%rbp), %eax
cmpl $0x0, %eax
jne 0xadbc
xorl %eax, %eax
movl %eax, %esi
leaq -0xa8(%rbp), %rdi
movl $0xf, %edx
callq 0x50a0
jmp 0xadba
jmp 0xadbc
leaq -0xa8(%rbp), %rdi
callq 0x5430
movq %rax, -0xb0(%rbp)
cmpq $0x0, -0xb0(%rbp)
je 0xae2c
movq -0xb0(%rbp), %rsi
decq %rsi
movq %rsi, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x5560
movq %rax, -0x138(%rbp)
jmp 0xadff
movq -0x138(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0xae2c
movq -0xb0(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
movq $-0x1, %rdx
callq 0x50a0
jmp 0xae2a
jmp 0xae2c
cmpq $0x0, -0xb0(%rbp)
je 0xae7e
xorl %eax, %eax
movl %eax, %esi
leaq -0xa8(%rbp), %rdi
callq 0x5560
movq %rax, -0x140(%rbp)
jmp 0xae4f
movq -0x140(%rbp), %rax
movsbl (%rax), %edi
callq 0x5410
movsbl %al, %r8d
xorl %eax, %eax
movl %eax, %esi
leaq -0xa8(%rbp), %rdi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x5480
jmp 0xae7c
jmp 0xae7e
movq 0x1814b(%rip), %rdi     # 0x22fd0
leaq 0xe633(%rip), %rsi      # 0x194bf
callq 0x5270
movq %rax, -0x148(%rbp)
jmp 0xae9a
movq -0x148(%rbp), %rdi
movq 0x18108(%rip), %rsi     # 0x22fb0
callq 0x52d0
movq %rax, -0x150(%rbp)
jmp 0xaeb6
movq -0x150(%rbp), %rdi
leaq 0xe5fe(%rip), %rsi      # 0x194c2
callq 0x5270
movq %rax, -0x158(%rbp)
jmp 0xaed2
movq -0x128(%rbp), %rsi
movq -0x158(%rbp), %rdi
callq 0x5250
jmp 0xaee7
movq -0x10(%rbp), %rdi
callq 0xac20
movq %rax, %rdi
callq 0x54a0
testb $0x1, %al
jne 0xaefe
jmp 0xaf12
movq 0x180cb(%rip), %rdi     # 0x22fd0
leaq -0x58(%rbp), %rsi
callq 0x5250
jmp 0xaf10
jmp 0xaf91
movq 0x180b7(%rip), %rdi     # 0x22fd0
leaq 0xe5d1(%rip), %rsi      # 0x194f1
callq 0x5270
movq %rax, -0x160(%rbp)
jmp 0xaf2e
movq -0x160(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x5250
movq %rax, -0x168(%rbp)
jmp 0xaf47
movq -0x168(%rbp), %rdi
movl $0x2c, %esi
callq 0x5350
movq %rax, -0x170(%rbp)
jmp 0xaf61
movq -0x170(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x5250
movq %rax, -0x178(%rbp)
jmp 0xaf7a
movq -0x178(%rbp), %rdi
leaq 0xe56c(%rip), %rsi      # 0x194f4
callq 0x5270
jmp 0xaf8f
jmp 0xaf91
movq -0x120(%rbp), %rax
movsbl 0x38(%rax), %eax
cmpl $0x3d, %eax
jne 0xafc7
movq -0x10(%rbp), %rdi
callq 0xf400
testb $0x1, %al
jne 0xafb0
jmp 0xafc7
movq 0x18019(%rip), %rdi     # 0x22fd0
leaq 0xe539(%rip), %rsi      # 0x194f7
callq 0x5270
jmp 0xafc5
jmp 0xafc7
movq -0x120(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xfe00
jmp 0xafdc
movq 0x17fed(%rip), %rdi     # 0x22fd0
movl $0x5b, %esi
callq 0x5350
movq %rax, -0x180(%rbp)
jmp 0xaff6
movq -0x180(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x5250
movq %rax, -0x188(%rbp)
jmp 0xb012
movq -0x188(%rbp), %rdi
movl $0x5d, %esi
callq 0x5350
jmp 0xb025
movq -0x10(%rbp), %rdi
callq 0xf400
testb $0x1, %al
jne 0xb037
jmp 0xb443
movq -0x10(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x190(%rbp)
callq 0x54f0
movq -0x190(%rbp), %rdx
leaq 0xe29e(%rip), %rsi      # 0x19301
leaq -0xf0(%rbp), %rdi
callq 0x6ee0
jmp 0xb071
movq -0x198(%rbp), %rsi
movq (%rsi), %rax
movq 0x40(%rax), %rax
leaq -0xd0(%rbp), %rdi
leaq -0xf0(%rbp), %rdx
callq *%rax
jmp 0xb091
leaq -0xf0(%rbp), %rdi
callq 0x55c8
leaq -0xf1(%rbp), %rdi
callq 0x5300
movq -0x120(%rbp), %rax
movsbl 0x38(%rax), %esi
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
movq $-0x1, %rdx
callq 0x5550
movq -0x1a0(%rbp), %rdi
movq %rax, %rdx
incq %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x50a0
jmp 0xb0e6
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x5430
movq -0x1b0(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x5560
movq %rax, -0x1a8(%rbp)
jmp 0xb114
movq -0x1a8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5d, %eax
jne 0xb1b4
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x5430
movq -0x1b8(%rbp), %rdi
movq %rax, %rsi
decq %rsi
movq $-0x1, %rdx
callq 0x50a0
jmp 0xb155
jmp 0xb1b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0xb183
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x55c8
leaq -0xf1(%rbp), %rdi
callq 0x5300
jmp 0xb47d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x55c8
jmp 0xb47d
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x5430
movq -0x1c8(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x5560
movq %rax, -0x1c0(%rbp)
jmp 0xb1e2
movq -0x1c0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5d, %eax
jne 0xb221
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x5430
movq -0x1d0(%rbp), %rdi
movq %rax, %rsi
decq %rsi
movq $-0x1, %rdx
callq 0x50a0
jmp 0xb21f
jmp 0xb221
xorl %eax, %eax
movl %eax, %esi
leaq -0xd0(%rbp), %rdi
callq 0x5560
movq %rax, -0x1d8(%rbp)
jmp 0xb23a
movq -0x1d8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3c, %eax
jne 0xb290
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x5430
movq -0x1e0(%rbp), %rdi
movq %rax, %rsi
decq %rsi
movq $-0x1, %rdx
callq 0x50a0
jmp 0xb277
xorl %eax, %eax
movl %eax, %esi
leaq -0xd0(%rbp), %rdi
movl $0x1, %edx
callq 0x50a0
jmp 0xb28e
jmp 0xb290
leaq -0xd0(%rbp), %rdi
movl $0x7c, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x53b0
movq %rax, -0x100(%rbp)
cmpq $-0x1, -0x100(%rbp)
je 0xb36b
jmp 0xb2bc
movq -0x100(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
movl $0x1, %ecx
movl $0x20, %r8d
movq %rcx, %rdx
callq 0x5480
jmp 0xb2df
jmp 0xb2e1
movq -0x100(%rbp), %rdx
leaq -0xd0(%rbp), %rdi
movl $0x7c, %esi
callq 0x51a0
movq %rax, -0x100(%rbp)
cmpq $-0x1, %rax
jne 0xb2bc
movq -0x120(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xfe00
jmp 0xb31b
movq 0x17cae(%rip), %rdi     # 0x22fd0
leaq 0xe1d1(%rip), %rsi      # 0x194fa
callq 0x5270
movq %rax, -0x1e8(%rbp)
jmp 0xb337
movq -0x1e8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x5250
movq %rax, -0x1f0(%rbp)
jmp 0xb353
movq -0x1f0(%rbp), %rdi
movl $0x29, %esi
callq 0x5350
jmp 0xb366
jmp 0xb437
movq 0x17c5e(%rip), %rdi     # 0x22fd0
movl $0x3a, %esi
callq 0x5350
movq %rax, -0x1f8(%rbp)
jmp 0xb385
movq -0x1f8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x5250
jmp 0xb39a
movq -0x120(%rbp), %rdi
addq $0x8, %rdi
leaq -0xd0(%rbp), %rsi
callq 0xf8c0
movq %rax, -0x200(%rbp)
jmp 0xb3ba
movq -0x120(%rbp), %rdi
movq -0x200(%rbp), %rax
movq %rax, -0x108(%rbp)
addq $0x8, %rdi
callq 0xf920
movq %rax, -0x110(%rbp)
leaq -0x108(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xf8f0
testb $0x1, %al
jne 0xb3f8
jmp 0xb435
movq 0x17bd1(%rip), %rdi     # 0x22fd0
movl $0x3a, %esi
callq 0x5350
movq %rax, -0x208(%rbp)
jmp 0xb412
leaq -0x108(%rbp), %rdi
callq 0xf950
movq -0x208(%rbp), %rdi
movq %rax, %rsi
addq $0x20, %rsi
callq 0x5250
jmp 0xb433
jmp 0xb435
jmp 0xb437
leaq -0xd0(%rbp), %rdi
callq 0x55c8
movq 0x17b86(%rip), %rdi     # 0x22fd0
movl $0x27, %esi
callq 0x5350
jmp 0xb456
leaq -0xa8(%rbp), %rdi
callq 0x55c8
leaq -0x58(%rbp), %rdi
callq 0x55c8
leaq -0x38(%rbp), %rdi
callq 0x55c8
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
leaq -0xa8(%rbp), %rdi
callq 0x55c8
leaq -0x58(%rbp), %rdi
callq 0x55c8
leaq -0x38(%rbp), %rdi
callq 0x55c8
movq -0x80(%rbp), %rdi
callq 0x54e0
nopw %cs:(%rax,%rax)
nop