// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x8(%rsi), %rdx
leaq 0x88(%rsp), %rdi
pushq $0x2d
popq %rsi
callq 0x8117
leaq 0x8(%rsp), %rdi
callq 0x799c
leaq 0x28(%r14), %rdx
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8174
leaq 0x8(%rsp), %rdi
callq 0x4428
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x7e9e
leaq 0x514b(%rip), %rcx      # 0xb200
leaq 0x8(%rsp), %rdi
pushq $0xc
popq %rdx
xorl %esi, %esi
callq 0x4280
testl %eax, %eax
jne 0x60d7
leaq 0x8(%rsp), %rdi
pushq $0xc
popq %rdx
xorl %esi, %esi
callq 0x4070
leaq 0x512f(%rip), %rcx      # 0xb20d
leaq 0x8(%rsp), %rdi
pushq $0xf
popq %rdx
xorl %esi, %esi
callq 0x4280
testl %eax, %eax
jne 0x6100
leaq 0x8(%rsp), %rdi
pushq $0xf
popq %rdx
xorl %esi, %esi
callq 0x4070
movq 0x10(%rsp), %r12
testq %r12, %r12
je 0x615e
decq %r12
leaq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x43d0
cmpb $0x2e, (%rax)
jne 0x612f
leaq 0x8(%rsp), %rdi
pushq $-0x1
popq %rdx
movq %r12, %rsi
callq 0x4070
testq %r12, %r12
je 0x615e
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
callq 0x43d0
movsbl (%rax), %edi
callq 0x42b0
movsbl %al, %r8d
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rcx
xorl %esi, %esi
movq %rcx, %rdx
callq 0x4320
movq 0xae6b(%rip), %rdi      # 0x10fd0
leaq 0x507f(%rip), %rsi      # 0xb1eb
callq 0x41c0
movq %rax, %rdi
callq 0x4100
leaq 0x506e(%rip), %rsi      # 0xb1ee
movq %rax, %rdi
callq 0x41c0
movq %rax, %rdi
movq %r15, %rsi
callq 0x41b0
cmpq $0x0, 0x10(%r14)
je 0x61e6
movq 0xae2f(%rip), %rdi      # 0x10fd0
leaq 0x5075(%rip), %rsi      # 0xb21d
callq 0x41c0
leaq 0x88(%rsp), %rsi
movq %rax, %rdi
callq 0x41b0
pushq $0x2c
popq %rsi
movq %rax, %rdi
callq 0x4230
leaq 0x48(%rsp), %rsi
movq %rax, %rdi
callq 0x41b0
leaq 0x5044(%rip), %rsi      # 0xb220
movq %rax, %rdi
callq 0x41c0
jmp 0x61f7
movq 0xade3(%rip), %rdi      # 0x10fd0
leaq 0x48(%rsp), %rsi
callq 0x41b0
cmpb $0x3d, 0x38(%rbx)
jne 0x621a
cmpb $0x1, 0x90(%r14)
jne 0x621a
movq 0xadc2(%rip), %rdi      # 0x10fd0
leaq 0x500e(%rip), %rsi      # 0xb223
callq 0x41c0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x81ac
movq 0xada2(%rip), %rdi      # 0x10fd0
pushq $0x5b
popq %rsi
callq 0x4230
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x41b0
pushq $0x5d
popq %rsi
movq %rax, %rdi
callq 0x4230
cmpb $0x1, 0x90(%r14)
jne 0x6424
leaq 0x4e4c(%rip), %rsi      # 0xb0af
leaq 0x68(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x50f4
movq (%r14), %rax
leaq 0x28(%rsp), %rdi
leaq 0x68(%rsp), %rdx
movq %r14, %rsi
callq *0x40(%rax)
leaq 0x68(%rsp), %rdi
callq 0x4428
movsbl 0x38(%rbx), %esi
leaq 0x28(%rsp), %r14
pushq $-0x1
popq %rdx
movq %r14, %rdi
callq 0x43f0
leaq 0x1(%rax), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x4070
leaq 0x28(%rsp), %rdi
movq 0x8(%rdi), %rsi
decq %rsi
callq 0x43d0
cmpb $0x5d, (%rax)
jne 0x62db
leaq 0x28(%rsp), %rdi
movq 0x8(%rdi), %rsi
decq %rsi
pushq $-0x1
popq %rdx
callq 0x4070
leaq 0x28(%rsp), %rdi
movq 0x8(%rdi), %rsi
decq %rsi
callq 0x43d0
cmpb $0x5d, (%rax)
jne 0x6305
leaq 0x28(%rsp), %rdi
movq 0x8(%rdi), %rsi
decq %rsi
pushq $-0x1
popq %rdx
callq 0x4070
leaq 0x28(%rsp), %rdi
xorl %esi, %esi
callq 0x43d0
cmpb $0x3c, (%rax)
jne 0x6339
leaq 0x28(%rsp), %rdi
movq 0x8(%rdi), %rsi
decq %rsi
pushq $-0x1
popq %rdx
callq 0x4070
leaq 0x28(%rsp), %rdi
pushq $0x1
popq %rdx
xorl %esi, %esi
callq 0x4070
leaq 0x28(%rsp), %rdi
pushq $0x7c
popq %rsi
xorl %edx, %edx
callq 0x4270
cmpq $-0x1, %rax
je 0x63c6
movq %rax, %r14
leaq 0x28(%rsp), %r15
pushq $0x1
popq %r12
pushq $0x20
popq %rbp
pushq $0x7c
popq %r13
movq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r12, %rcx
movl %ebp, %r8d
callq 0x4320
movq %r15, %rdi
movl %r13d, %esi
movq %r14, %rdx
callq 0x4270
movq %rax, %r14
cmpq $-0x1, %rax
jne 0x6361
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x81ac
movq 0xac30(%rip), %rdi      # 0x10fd0
leaq 0x4e7f(%rip), %rsi      # 0xb226
callq 0x41c0
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x41b0
pushq $0x29
popq %rsi
movq %rax, %rdi
callq 0x4230
jmp 0x641a
movq 0xac03(%rip), %rdi      # 0x10fd0
pushq $0x3a
popq %rsi
callq 0x4230
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0x41b0
leaq 0x8(%rbx), %rdi
leaq 0x28(%rsp), %rsi
callq 0x808e
movq %rax, %r14
addq $0x10, %rbx
cmpq %rbx, %rax
je 0x641a
movq 0xabcd(%rip), %rdi      # 0x10fd0
pushq $0x3a
popq %rsi
callq 0x4230
addq $0x40, %r14
movq %rax, %rdi
movq %r14, %rsi
callq 0x41b0
leaq 0x28(%rsp), %rdi
callq 0x4428
movq 0xaba5(%rip), %rdi      # 0x10fd0
pushq $0x27
popq %rsi
callq 0x4230
leaq 0x8(%rsp), %rdi
callq 0x4428
leaq 0x48(%rsp), %rdi
callq 0x4428
leaq 0x88(%rsp), %rdi
callq 0x4428
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x648e
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
jmp 0x6496
jmp 0x649d
movq %rax, %rbx
jmp 0x64aa
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0x64af
movq %rax, %rbx
jmp 0x64b4
jmp 0x648e
jmp 0x649d
jmp 0x648e
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x4428
jmp 0x64a0
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4428
leaq 0x48(%rsp), %rdi
callq 0x4428
leaq 0x88(%rsp), %rdi
callq 0x4428
movq %rbx, %rdi
callq 0x4370
nop