// File: /workspace/github_cpp_makefile_star2_O1/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
movl $0x2d, %esi
callq 0xa91f
leaq 0x38(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movw $0x2d2d, (%rbp)         # imm = 0x2D2D
movq $0x2, -0x8(%rbp)
movb $0x0, 0x2(%rbp)
leaq 0x28(%r14), %rdx
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xa99f
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x75dd
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0xa63e
leaq 0x6c0f(%rip), %rcx      # 0xe200
leaq 0x28(%rsp), %rdi
movl $0xc, %edx
xorl %esi, %esi
callq 0x42a0
testl %eax, %eax
jne 0x7617
leaq 0x28(%rsp), %rdi
movl $0xc, %edx
xorl %esi, %esi
callq 0x4080
leaq 0x6bef(%rip), %rcx      # 0xe20d
leaq 0x28(%rsp), %rdi
movl $0xf, %edx
xorl %esi, %esi
callq 0x42a0
testl %eax, %eax
jne 0x7644
leaq 0x28(%rsp), %rdi
movl $0xf, %edx
xorl %esi, %esi
callq 0x4080
movq 0x30(%rsp), %rcx
testq %rcx, %rcx
je 0x7669
leaq -0x1(%rcx), %rax
movq 0x28(%rsp), %rdx
cmpb $0x2e, -0x1(%rdx,%rcx)
jne 0x766b
movq %rax, 0x30(%rsp)
movb $0x0, (%rdx,%rax)
jmp 0x766b
xorl %eax, %eax
testq %rax, %rax
je 0x76a7
movq 0x30(%rsp), %rdx
testq %rdx, %rdx
je 0x7c28
leaq 0x28(%rsp), %r12
movq (%r12), %rax
movsbl (%rax), %edi
callq 0x42c0
movsbl %al, %r8d
movl $0x1, %edx
movl $0x1, %ecx
movq %r12, %rdi
xorl %esi, %esi
callq 0x4340
movq 0xb922(%rip), %r12      # 0x12fd0
leaq 0x6b36(%rip), %rsi      # 0xe1eb
movl $0x2, %edx
movq %r12, %rdi
callq 0x4250
movq (%r12), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
movl $0xa, %esi
callq 0x41d0
movsbl %al, %esi
movq 0xb8ef(%rip), %rdi      # 0x12fd0
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq %rax, %r12
leaq 0x6af6(%rip), %rsi      # 0xe1ee
movl $0x3, %edx
movq %rax, %rdi
callq 0x4250
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %r12, %rdi
callq 0x4250
cmpq $0x0, 0x10(%r14)
je 0x778c
movq 0xb8ae(%rip), %rdi      # 0x12fd0
leaq 0x6af4(%rip), %rsi      # 0xe21d
movl $0x2, %edx
callq 0x4250
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0xb886(%rip), %rdi      # 0x12fd0
callq 0x4250
leaq 0x8(%rsp), %rsi
movb $0x2c, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4250
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %rax, %rdi
callq 0x4250
leaq 0x6aa3(%rip), %rsi      # 0xe220
movl $0x2, %edx
movq %rax, %rdi
callq 0x4250
jmp 0x77a2
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0xb833(%rip), %rdi      # 0x12fd0
callq 0x4250
cmpb $0x3d, 0x38(%rbx)
jne 0x77ca
cmpb $0x1, 0x90(%r14)
jne 0x77ca
movq 0xb817(%rip), %rdi      # 0x12fd0
leaq 0x6a63(%rip), %rsi      # 0xe223
movl $0x2, %edx
callq 0x4250
leaq 0x28(%rsp), %rdi
movl $0x3a, %esi
movq $-0x1, %rdx
callq 0x4410
cmpq $-0x1, %rax
je 0x781c
movq %rax, %r15
leaq 0x28(%rsp), %r12
movl $0x1, %edx
movq %r12, %rdi
movq %r15, %rsi
movl $0x5c, %ecx
callq 0x4420
movq %r12, %rdi
movl $0x3a, %esi
movq %r15, %rdx
callq 0x4410
movq %rax, %r15
cmpq $-0x1, %rax
jne 0x77ee
leaq 0x28(%rsp), %rdi
movl $0x27, %esi
movq $-0x1, %rdx
callq 0x4410
cmpq $-0x1, %rax
je 0x7887
movq %rax, %r15
leaq 0x69e9(%rip), %r12      # 0xe22b
leaq 0x28(%rsp), %r13
movl $0x3, %r8d
movq %r13, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %r12, %rcx
callq 0x4240
testq %r15, %r15
je 0x787a
decq %r15
movq %r13, %rdi
movl $0x27, %esi
movq %r15, %rdx
callq 0x4410
movq %rax, %r15
jmp 0x7881
movq $-0x1, %r15
cmpq $-0x1, %r15
jne 0x7847
leaq 0x8(%rsp), %rsi
movb $0x5b, (%rsi)
movq 0xb73a(%rip), %rdi      # 0x12fd0
movl $0x1, %edx
callq 0x4250
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rdi
callq 0x4250
leaq 0x8(%rsp), %rsi
movb $0x5d, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4250
cmpb $0x1, 0x90(%r14)
jne 0x7baa
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x67ca(%rip), %rsi      # 0xe0af
leaq 0x67c6(%rip), %rdx      # 0xe0b2
leaq 0x48(%rsp), %rdi
callq 0xa028
movq (%r14), %rax
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
movq %r14, %rsi
callq *0x40(%rax)
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x7920
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4200
movsbl 0x38(%rbx), %esi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq $-0x1, %rdx
callq 0x4410
leaq 0x1(%rax), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x4080
movq 0x10(%rsp), %rdx
movq %rdx, %rsi
subq $0x1, %rsi
jb 0x7c3a
movq 0x8(%rsp), %rax
cmpb $0x5d, (%rax,%rsi)
jne 0x796c
movq %rsi, 0x10(%rsp)
movb $0x0, (%rax,%rsi)
movq 0x10(%rsp), %rdx
movq %rdx, %rsi
subq $0x1, %rsi
jb 0x7c3a
movq 0x8(%rsp), %rax
cmpb $0x5d, (%rax,%rsi)
jne 0x7992
movq %rsi, 0x10(%rsp)
movb $0x0, (%rax,%rsi)
movq 0x10(%rsp), %rdx
testq %rdx, %rdx
je 0x7c38
movq 0x8(%rsp), %rax
cmpb $0x3c, (%rax)
jne 0x79c8
leaq -0x1(%rdx), %rcx
leaq 0x8(%rsp), %rdi
movq %rcx, 0x8(%rdi)
movb $0x0, -0x1(%rax,%rdx)
movl $0x1, %edx
xorl %esi, %esi
callq 0x4080
leaq 0x8(%rsp), %rdi
movl $0x7c, %esi
xorl %edx, %edx
callq 0x4290
cmpq $-0x1, %rax
je 0x7b21
movq %rax, %r14
leaq 0x8(%rsp), %rbx
movl $0x1, %edx
movl $0x1, %ecx
movq %rbx, %rdi
movq %r14, %rsi
movl $0x20, %r8d
callq 0x4340
movq %rbx, %rdi
movl $0x7c, %esi
movq %r14, %rdx
callq 0x4290
movq %rax, %r14
cmpq $-0x1, %rax
jne 0x79eb
leaq 0x8(%rsp), %rdi
movl $0x3a, %esi
movq $-0x1, %rdx
callq 0x4410
cmpq $-0x1, %rax
je 0x7a71
movq %rax, %rbx
leaq 0x8(%rsp), %r14
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
movl $0x5c, %ecx
callq 0x4420
movq %r14, %rdi
movl $0x3a, %esi
movq %rbx, %rdx
callq 0x4410
movq %rax, %rbx
cmpq $-0x1, %rax
jne 0x7a43
leaq 0x8(%rsp), %rdi
movl $0x27, %esi
movq $-0x1, %rdx
callq 0x4410
cmpq $-0x1, %rax
je 0x7adc
movq %rax, %rbx
leaq 0x6794(%rip), %r14      # 0xe22b
leaq 0x8(%rsp), %r15
movl $0x3, %r8d
movq %r15, %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %r14, %rcx
callq 0x4240
testq %rbx, %rbx
je 0x7acf
decq %rbx
movq %r15, %rdi
movl $0x27, %esi
movq %rbx, %rdx
callq 0x4410
movq %rax, %rbx
jmp 0x7ad6
movq $-0x1, %rbx
cmpq $-0x1, %rbx
jne 0x7a9c
movq 0xb4ed(%rip), %rdi      # 0x12fd0
leaq 0x673c(%rip), %rsi      # 0xe226
movl $0x4, %edx
callq 0x4250
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0xb4cb(%rip), %rdi      # 0x12fd0
callq 0x4250
leaq 0x48(%rsp), %rsi
movb $0x29, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4250
jmp 0x7b8f
leaq 0x48(%rsp), %rsi
movb $0x3a, (%rsi)
movq 0xb4a0(%rip), %rdi      # 0x12fd0
movl $0x1, %edx
callq 0x4250
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rax, %rdi
callq 0x4250
leaq 0x8(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0xa896
movq %rax, %r14
addq $0x10, %rbx
cmpq %rbx, %rax
je 0x7b8f
leaq 0x48(%rsp), %rsi
movb $0x3a, (%rsi)
movq 0xb45b(%rip), %rdi      # 0x12fd0
movl $0x1, %edx
callq 0x4250
movq 0x40(%r14), %rsi
movq 0x48(%r14), %rdx
movq %rax, %rdi
callq 0x4250
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7baa
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x8(%rsp), %rsi
movb $0x27, (%rsi)
movq 0xb417(%rip), %rdi      # 0x12fd0
movl $0x1, %edx
callq 0x4250
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7bda
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7bf5
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7c16
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x4200
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x69cd(%rip), %rdi      # 0xe5fc
xorl %esi, %esi
xorl %eax, %eax
callq 0x42e0
xorl %esi, %esi
leaq 0x69bb(%rip), %rdi      # 0xe5fc
xorl %eax, %eax
callq 0x42e0
jmp 0x7c83
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x7caa
movq 0x58(%rsp), %rsi
jmp 0x7c99
jmp 0x7ca7
movq %rax, %rbx
jmp 0x7cc1
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7cdc
movq 0x38(%rsp), %rsi
jmp 0x7cd4
jmp 0x7c83
jmp 0x7c83
jmp 0x7ca7
jmp 0x7c83
jmp 0x7c83
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7caa
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4200
jmp 0x7caa
jmp 0x7ca7
jmp 0x7ca7
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7cc1
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7cdc
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7cfd
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x4200
movq %rbx, %rdi
callq 0x43b0
nop