// File: /workspace/github_cpp_makefile_star2_O3/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 0xa81f
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 0xa89f
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x74fb
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0xa53e
leaq 0x6cf1(%rip), %rcx      # 0xe200
leaq 0x28(%rsp), %rdi
movl $0xc, %edx
xorl %esi, %esi
callq 0x42a0
testl %eax, %eax
jne 0x7535
leaq 0x28(%rsp), %rdi
movl $0xc, %edx
xorl %esi, %esi
callq 0x4080
leaq 0x6cd1(%rip), %rcx      # 0xe20d
leaq 0x28(%rsp), %rdi
movl $0xf, %edx
xorl %esi, %esi
callq 0x42a0
testl %eax, %eax
jne 0x7562
leaq 0x28(%rsp), %rdi
movl $0xf, %edx
xorl %esi, %esi
callq 0x4080
movq 0x30(%rsp), %rcx
testq %rcx, %rcx
je 0x75bf
leaq -0x1(%rcx), %rax
movq 0x28(%rsp), %rdx
cmpb $0x2e, -0x1(%rdx,%rcx)
jne 0x7585
movq %rax, 0x30(%rsp)
movb $0x0, (%rdx,%rax)
testq %rax, %rax
je 0x75bf
cmpq $0x0, 0x30(%rsp)
je 0x7b2e
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 0xba0a(%rip), %r12      # 0x12fd0
leaq 0x6c1e(%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 0xb9d7(%rip), %rdi      # 0x12fd0
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq %rax, %r12
leaq 0x6bde(%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 0x76a4
movq 0xb996(%rip), %rdi      # 0x12fd0
leaq 0x6bdc(%rip), %rsi      # 0xe21d
movl $0x2, %edx
callq 0x4250
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0xb96e(%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 0x6b8b(%rip), %rsi      # 0xe220
movl $0x2, %edx
movq %rax, %rdi
callq 0x4250
jmp 0x76ba
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0xb91b(%rip), %rdi      # 0x12fd0
callq 0x4250
cmpb $0x3d, 0x38(%rbx)
jne 0x76e2
cmpb $0x1, 0x90(%r14)
jne 0x76e2
movq 0xb8ff(%rip), %rdi      # 0x12fd0
leaq 0x6b4b(%rip), %rsi      # 0xe223
movl $0x2, %edx
callq 0x4250
leaq 0x28(%rsp), %rdi
movl $0x3a, %esi
movq $-0x1, %rdx
callq 0x4410
cmpq $-0x1, %rax
je 0x7734
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 0x7706
leaq 0x28(%rsp), %rdi
movl $0x27, %esi
movq $-0x1, %rdx
callq 0x4410
cmpq $-0x1, %rax
je 0x7796
movq %rax, %r15
leaq 0x6ad1(%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 0x7796
decq %r15
movq %r13, %rdi
movl $0x27, %esi
movq %r15, %rdx
callq 0x4410
movq %rax, %r15
cmpq $-0x1, %rax
jne 0x775f
leaq 0x8(%rsp), %rsi
movb $0x5b, (%rsi)
movq 0xb82b(%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 0x7ab0
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x68bb(%rip), %rsi      # 0xe0af
leaq 0x68b7(%rip), %rdx      # 0xe0b2
leaq 0x48(%rsp), %rdi
callq 0x9f22
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 0x782f
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), %rax
movq %rax, %rsi
subq $0x1, %rsi
jb 0x7b42
movq 0x8(%rsp), %rcx
cmpb $0x5d, (%rcx,%rsi)
jne 0x788d
movq %rsi, 0x10(%rsp)
movb $0x0, (%rcx,%rsi)
movq 0x10(%rsp), %rax
movq %rax, %rsi
subq $0x1, %rsi
jb 0x7b42
movq 0x8(%rsp), %rcx
cmpb $0x5d, (%rcx,%rsi)
jne 0x78af
movq %rsi, 0x10(%rsp)
movb $0x0, (%rcx,%rsi)
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0x7b40
movq 0x8(%rsp), %rcx
cmpb $0x3c, (%rcx)
jne 0x78d7
leaq -0x1(%rax), %rdx
leaq 0x8(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movb $0x0, -0x1(%rcx,%rax)
movl $0x1, %edx
xorl %esi, %esi
callq 0x4080
leaq 0x8(%rsp), %rdi
movl $0x7c, %esi
xorl %edx, %edx
callq 0x4290
cmpq $-0x1, %rax
je 0x7a27
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 0x78fa
leaq 0x8(%rsp), %rdi
movl $0x3a, %esi
movq $-0x1, %rdx
callq 0x4410
cmpq $-0x1, %rax
je 0x7980
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 0x7952
leaq 0x8(%rsp), %rdi
movl $0x27, %esi
movq $-0x1, %rdx
callq 0x4410
cmpq $-0x1, %rax
je 0x79e2
movq %rax, %rbx
leaq 0x6885(%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 0x79e2
decq %rbx
movq %r15, %rdi
movl $0x27, %esi
movq %rbx, %rdx
callq 0x4410
movq %rax, %rbx
cmpq $-0x1, %rax
jne 0x79ab
movq 0xb5e7(%rip), %rdi      # 0x12fd0
leaq 0x6836(%rip), %rsi      # 0xe226
movl $0x4, %edx
callq 0x4250
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0xb5c5(%rip), %rdi      # 0x12fd0
callq 0x4250
leaq 0x48(%rsp), %rsi
movb $0x29, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4250
jmp 0x7a95
leaq 0x48(%rsp), %rsi
movb $0x3a, (%rsi)
movq 0xb59a(%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 0xa796
movq %rax, %r14
addq $0x10, %rbx
cmpq %rbx, %rax
je 0x7a95
leaq 0x48(%rsp), %rsi
movb $0x3a, (%rsi)
movq 0xb555(%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 0x7ab0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x8(%rsp), %rsi
movb $0x27, (%rsi)
movq 0xb511(%rip), %rdi      # 0x12fd0
movl $0x1, %edx
callq 0x4250
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7ae0
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7afb
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7b1c
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 0x6ac7(%rip), %rdi      # 0xe5fc
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x42e0
xorl %esi, %esi
leaq 0x6ab3(%rip), %rdi      # 0xe5fc
xorl %edx, %edx
xorl %eax, %eax
callq 0x42e0
jmp 0x7b8d
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x7bb4
movq 0x58(%rsp), %rsi
jmp 0x7ba3
jmp 0x7bb1
movq %rax, %rbx
jmp 0x7bcb
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7be6
movq 0x38(%rsp), %rsi
jmp 0x7bde
jmp 0x7b8d
jmp 0x7b8d
jmp 0x7bb1
jmp 0x7b8d
jmp 0x7b8d
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7bb4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4200
jmp 0x7bb4
jmp 0x7bb1
jmp 0x7bb1
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7bcb
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7be6
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x4200
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7c07
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x4200
movq %rbx, %rdi
callq 0x43b0
nop