// File: /workspace/github_cpp_makefile_star2_O2/gdaws[P]process-monitor/program_arguments.cpp
// Function: program_arguments::parser::help(char const*)
void parser::help(const char * program_name)
{
    std::cout<<"Usage: "<<program_name<<" [OPTION]... ";
    
     for(unsigned int i = 0; i < m_arguments.size(); i++)
    {
        std::cout<<(i > 0 ? " " : "" )
            <<uppercase(m_arguments[i].value_name)
            <<(i >= (m_arguments.size() - m_argument_repeat_last) ? "..." : "");
    }
    std::cout<<std::endl<<m_program_description<<std::endl;
    
    std::vector<options_group>::const_iterator group = m_groups.begin();
    
    for(; group != m_groups.end(); group++)
    {
        if(group->description) std::cout<<group->description<<":"<<std::endl;

        std::vector<option>::const_iterator option = group->options.begin();
        for(; option != group->options.end(); option++)
        {
            std::string name;
            std::string long_name;
            std::string description;
            
            if(option->name)
            {
                name = '-';
                name+= option->name;
            }
            
            if(option->verbose_name)
            {
                long_name = "--";
                long_name+= option->verbose_name;
                
                if(option->value_name)
                {
                    long_name += '=';
                    long_name += uppercase(option->value_name);
                }
            }
            
            if(option->description)
            {
                description = option->description;
            }
            
            name += std::string(std::max<int>(0, 2 - name.length()), ' ');
            long_name+=std::string(std::max<int>(0,22-long_name.length()), ' ');
            
            std::cout<<" "<<name<<", "<<long_name<<" "<<description<<std::endl;
        }
        
        std::cout<<std::endl;
    }
    
    std::cout<<std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rsi, %r14
movq %rdi, 0x8(%rsp)
movq 0x6af6(%rip), %rdi      # 0x9fc8
leaq 0x2c40(%rip), %rsi      # 0x6119
callq 0x21b0
movq %rax, %rdi
movq %r14, %rsi
callq 0x21b0
leaq 0x2c31(%rip), %rsi      # 0x6121
movq %rax, %rdi
callq 0x21b0
xorl %ebp, %ebp
leaq 0x2c36(%rip), %rbx      # 0x6137
leaq 0x38(%rsp), %r14
leaq 0x58(%rsp), %r12
leaq 0x2c1d(%rip), %r15      # 0x612f
movl %ebp, %ebp
movq 0x8(%rsp), %r13
movq 0x80(%r13), %rax
subq 0x78(%r13), %rax
sarq $0x4, %rax
cmpq %rbp, %rax
jbe 0x35ca
testq %rbp, %rbp
leaq 0x2bfb(%rip), %rsi      # 0x6136
cmoveq %rbx, %rsi
movq 0x6a82(%rip), %rdi      # 0x9fc8
callq 0x21b0
movq %r13, %rcx
movq %rax, %r13
movq 0x78(%rcx), %rax
movq %rbp, %rcx
shlq $0x4, %rcx
movq (%rax,%rcx), %rsi
movq %r14, %rdi
leaq 0x18(%rsp), %rdx
callq 0x3b22
movq %r12, %rdi
movq %r14, %rsi
callq 0x38de
movq %r13, %rdi
movq %r12, %rsi
callq 0x2190
movq 0x8(%rsp), %rdx
movq 0x80(%rdx), %rcx
subq 0x78(%rdx), %rcx
sarq $0x4, %rcx
movslq 0x98(%rdx), %rdx
subq %rdx, %rcx
cmpq %rbp, %rcx
movq %r15, %rsi
cmovaq %rbx, %rsi
movq %rax, %rdi
callq 0x21b0
movq %r12, %rdi
callq 0x20c0
movq %r14, %rdi
callq 0x20c0
incl %ebp
jmp 0x3512
movq 0x69f7(%rip), %rdi      # 0x9fc8
callq 0x20d0
movq 0xa0(%r13), %rsi
movq %rax, %rdi
callq 0x21b0
movq %rax, %rdi
callq 0x20d0
movq 0x60(%r13), %rbp
xorl %ebx, %ebx
leaq 0x78(%rsp), %r15
leaq 0x58(%rsp), %r12
movq %r13, %rax
leaq 0x38(%rsp), %r13
cmpq 0x68(%rax), %rbp
je 0x3846
movq (%rbp), %rsi
testq %rsi, %rsi
je 0x363b
movq 0x69a9(%rip), %rdi      # 0x9fc8
callq 0x21b0
movq %rax, %rdi
leaq 0x2b05(%rip), %rsi      # 0x6133
callq 0x21b0
movq %rax, %rdi
callq 0x20d0
movq %rbp, 0x10(%rsp)
movq 0x8(%rbp), %rbp
movq 0x10(%rsp), %rax
cmpq 0x10(%rax), %rbp
je 0x3827
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
andq $0x0, 0x60(%rsp)
movb %bl, 0x68(%rsp)
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
andq $0x0, 0x20(%rsp)
movb %bl, 0x48(%rsp)
movb %bl, 0x28(%rsp)
cmpb %bl, (%rbp)
je 0x36ab
movq %r12, %rdi
pushq $0x2d
popq %rsi
callq 0x22e0
movsbl (%rbp), %esi
movq %r12, %rdi
callq 0x2170
cmpq $0x0, 0x8(%rbp)
je 0x3723
movq %r13, %rdi
leaq 0x29eb(%rip), %rsi      # 0x60a7
callq 0x2340
movq 0x8(%rbp), %rsi
movq %r13, %rdi
callq 0x2330
cmpq $0x0, 0x10(%rbp)
je 0x3723
movq %r13, %rdi
pushq $0x3d
popq %rsi
callq 0x2170
movq 0x10(%rbp), %rsi
leaq 0x98(%rsp), %r14
movq %r14, %rdi
leaq 0x7(%rsp), %rdx
callq 0x3b22
movq %r15, %rdi
movq %r14, %rsi
callq 0x38de
movq %r13, %rdi
movq %r15, %rsi
callq 0x2350
movq %r15, %rdi
callq 0x20c0
leaq 0x98(%rsp), %rdi
callq 0x20c0
movq 0x18(%rbp), %rsi
testq %rsi, %rsi
je 0x3736
leaq 0x18(%rsp), %rdi
callq 0x2340
pushq $0x2
popq %rax
movl %eax, %esi
subl 0x60(%rsp), %esi
testl %esi, %esi
cmovlel %ebx, %esi
leaq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movq %r15, %rdi
pushq $0x20
popq %rdx
callq 0x2200
movq %r12, %rdi
movq %r15, %rsi
callq 0x2350
movq %r15, %rdi
callq 0x20c0
pushq $0x16
popq %rax
movl %eax, %esi
subl 0x40(%rsp), %esi
testl %esi, %esi
cmovlel %ebx, %esi
leaq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movq %r15, %rdi
pushq $0x20
popq %rdx
callq 0x2200
movq %r13, %rdi
movq %r15, %rsi
callq 0x2350
movq %r15, %rdi
callq 0x20c0
movq 0x6819(%rip), %rdi      # 0x9fc8
leaq 0x2980(%rip), %rsi      # 0x6136
callq 0x21b0
movq %rax, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %rdi
leaq 0x2965(%rip), %rsi      # 0x6135
callq 0x21b0
movq %rax, %rdi
movq %r13, %rsi
callq 0x2190
movq %rax, %rdi
leaq 0x294c(%rip), %rsi      # 0x6136
callq 0x21b0
movq %rax, %rdi
leaq 0x18(%rsp), %rsi
callq 0x2190
movq %rax, %rdi
callq 0x20d0
leaq 0x18(%rsp), %rdi
callq 0x20c0
movq %r13, %rdi
callq 0x20c0
movq %r12, %rdi
callq 0x20c0
addq $0x28, %rbp
jmp 0x3644
movq 0x679a(%rip), %rdi      # 0x9fc8
callq 0x20d0
movq 0x10(%rsp), %rbp
addq $0x20, %rbp
movq 0x8(%rsp), %rax
jmp 0x3605
movq 0x677b(%rip), %rdi      # 0x9fc8
callq 0x20d0
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x387b
movq %rax, %rbx
jmp 0x38d6
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x20c0
leaq 0x38(%rsp), %rdi
jmp 0x38d1
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x20c0
jmp 0x3894
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
jmp 0x38ac
jmp 0x38b5
jmp 0x38a4
jmp 0x38b5
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x20c0
jmp 0x38b8
jmp 0x38b5
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x20c0
leaq 0x38(%rsp), %rdi
callq 0x20c0
leaq 0x58(%rsp), %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x2300