// File: /workspace/github_cpp_makefile_star2_O1/demon386[P]git-store/./libs/program_options/src/cmdline.cpp
// Function: boost::program_options::detail::cmdline::parse_short_option(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&)
vector<option> 
    cmdline::parse_short_option(vector<string>& args)
    {
        const string& tok = args[0];
        if (tok.size() >= 2 && tok[0] == '-' && tok[1] != '-')
        {   
            vector<option> result;

            string name = tok.substr(0,2);
            string adjacent = tok.substr(2);

            // Short options can be 'grouped', so that
            // "-d -a" becomes "-da". Loop, processing one
            // option at a time. We exit the loop when either
            // we've processed all the token, or when the remainder
            // of token is considered to be value, not further grouped
            // option.
            for(;;) {
                const option_description* d;
                try
                {
                     
                    d = m_desc->find_nothrow(name, false, false,
                                                is_style_active(short_case_insensitive));
                } 
                catch(error_with_option_name& e)
                {
                    // add context and rethrow
                    e.add_context(name, name, get_canonical_option_prefix());
                    throw;
                }


                // FIXME: check for 'allow_sticky'.
                if (d && (m_style & allow_sticky) &&
                    d->semantic()->max_tokens() == 0 && !adjacent.empty()) {
                    // 'adjacent' is in fact further option.
                    option opt;
                    opt.string_key = name;
                    result.push_back(opt);

                    if (adjacent.empty())
                    {
                        args.erase(args.begin());
                        break;
                    }

                    name = string("-") + adjacent[0];
                    adjacent.erase(adjacent.begin());
                } else {
                    
                    option opt;
                    opt.string_key = name;
                    opt.original_tokens.push_back(tok);
                    if (!adjacent.empty())
                        opt.value.push_back(adjacent);
                    result.push_back(opt);
                    args.erase(args.begin());                    
                    break;
                }
            }
            return result;
        }
        return vector<option>();
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdi, -0x30(%rbp)
movq (%rdx), %rbx
cmpq $0x2, 0x8(%rbx)
jb 0xd58a
movq (%rbx), %rax
cmpb $0x2d, (%rax)
jne 0xd58a
cmpb $0x2d, 0x1(%rax)
jne 0xd5ae
xorps %xmm0, %xmm0
movq -0x30(%rbp), %rax
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %r14
movq %rsi, %r12
xorps %xmm0, %xmm0
movq -0x30(%rbp), %rax
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq -0xd8(%rbp), %rdi
movl $0x2, %ecx
movq %rbx, %rsi
xorl %edx, %edx
callq 0xb490
movq %r14, -0x38(%rbp)
leaq -0x60(%rbp), %rdi
movl $0x2, %edx
movq %rbx, -0x68(%rbp)
movq %rbx, %rsi
movq $-0x1, %rcx
callq 0xb490
leaq -0xd8(%rbp), %r13
leaq -0x138(%rbp), %r14
movq %r12, -0x40(%rbp)
movq 0x20(%r12), %rdi
movl 0x18(%r12), %r8d
shrl $0xb, %r8d
andl $0x1, %r8d
movq %r13, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x16486
testq %rax, %rax
je 0xd639
testb $0x1, 0x19(%r12)
jne 0xd63d
xorl %ecx, %ecx
jmp 0xd66c
leaq -0x98(%rbp), %rdi
movq %rax, %rsi
callq 0x15d00
movq -0x98(%rbp), %rdi
testq %rdi, %rdi
je 0xd90d
movq (%rdi), %rax
callq *0x10(%rax)
movb $0x1, %cl
testl %eax, %eax
je 0xd81a
xorl %ebx, %ebx
testb %cl, %cl
je 0xd67e
leaq -0x90(%rbp), %rdi
callq 0xf5d6
testb %bl, %bl
je 0xd827
leaq -0x128(%rbp), %rax
movq %rax, -0x138(%rbp)
movq $0x0, -0x130(%rbp)
movb $0x0, -0x128(%rbp)
movl $0xffffffff, -0x118(%rbp) # imm = 0xFFFFFFFF
xorps %xmm0, %xmm0
leaq -0x110(%rbp), %rax
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
movw $0x0, 0x30(%rax)
movq %r14, %rdi
movq %r13, %rsi
callq 0xb290
movq -0x30(%rbp), %rdi
movq %r14, %rsi
callq 0xe8aa
movq -0x58(%rbp), %rbx
testq %rbx, %rbx
je 0xd765
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x88(%rbp), %r12
movq %r12, %rdi
leaq 0x25ca8(%rip), %rsi     # 0x333af
leaq 0x25ca2(%rip), %rdx     # 0x333b0
callq 0xf97e
movq %r14, %r15
movq -0x60(%rbp), %rax
movsbl (%rax), %r8d
movq -0x80(%rbp), %rsi
movl $0x1, %ecx
movq %r12, %rdi
xorl %edx, %edx
callq 0xb850
leaq -0xa8(%rbp), %r14
movq %r14, -0xb8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq -0x40(%rbp), %r12
je 0xd773
movq %rdx, -0xb8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xa8(%rbp)
jmp 0xd77a
movq -0x38(%rbp), %rdi
movq (%rdi), %rsi
callq 0x11450
jmp 0xd7dc
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, -0xb0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r13, %rdi
leaq -0xb8(%rbp), %rsi
callq 0xb560
movq -0xb8(%rbp), %rdi
cmpq %r14, %rdi
je 0xd7b4
callq 0xb430
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
movq %r15, %r14
je 0xd7cc
callq 0xb430
movl $0x1, %edx
leaq -0x60(%rbp), %rdi
xorl %esi, %esi
callq 0xb520
leaq -0xf8(%rbp), %rdi
callq 0xe51e
leaq -0x110(%rbp), %rdi
callq 0xe51e
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0xd80c
callq 0xb430
testq %rbx, %rbx
jne 0xd60e
jmp 0xd8dd
cmpq $0x0, -0x58(%rbp)
setne %bl
jmp 0xd66e
leaq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
movq %rax, (%rdi)
movq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
movl $0xffffffff, 0x20(%rdi) # imm = 0xFFFFFFFF
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movups %xmm0, 0x38(%rdi)
movups %xmm0, 0x48(%rdi)
movw $0x0, 0x58(%rdi)
leaq -0xd8(%rbp), %rsi
callq 0xb290
leaq -0xf8(%rbp), %r15
movq %r15, %rdi
movq -0x68(%rbp), %rsi
callq 0xe916
leaq -0x110(%rbp), %r12
cmpq $0x0, -0x58(%rbp)
je 0xd899
leaq -0x60(%rbp), %rsi
movq %r12, %rdi
callq 0xe916
leaq -0x138(%rbp), %rsi
movq -0x30(%rbp), %rdi
callq 0xe8aa
movq -0x38(%rbp), %rdi
movq (%rdi), %rsi
callq 0x11450
movq %r15, %rdi
callq 0xe51e
movq %r12, %rdi
callq 0xe51e
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0xd8dd
callq 0xb430
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd8ef
callq 0xb430
leaq -0xc8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd904
callq 0xb430
movq -0x30(%rbp), %rax
jmp 0xd59c
leaq 0x24d20(%rip), %rdi     # 0x32634
leaq 0x24d21(%rip), %rsi     # 0x3263c
leaq 0x24d3b(%rip), %rcx     # 0x3265d
movl $0x2af, %edx            # imm = 0x2AF
callq 0xb310
jmp 0xda13
movq %rax, %r14
jmp 0xda34
movq %rax, %r14
jmp 0xda49
jmp 0xda13
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0xf5d6
jmp 0xda22
movq %rax, %r14
jmp 0xda22
jmp 0xda13
jmp 0xda13
movq %rax, %r14
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xda16
callq 0xb430
jmp 0xda16
jmp 0xda13
movq %rax, %r14
cmpl $0x1, %edx
jne 0xda22
movq %r14, %rdi
callq 0xb1e0
movq %rax, %r14
movq -0x40(%rbp), %rax
movl 0x18(%rax), %eax
movl $0x1, %ebx
testb $0x1, %al
jne 0xd9d9
movl $0x1000, %ebx           # imm = 0x1000
btl $0xc, %eax
jb 0xd9d9
notl %eax
movl $0x4, %ebx
testb $0x6, %al
je 0xd9d9
xorl %ebx, %ebx
testb $0xa, %al
sete %bl
shll $0x3, %ebx
movq (%r14), %rax
leaq -0xd8(%rbp), %rsi
movq %r14, %rdi
callq *0x18(%rax)
leaq -0xd8(%rbp), %rsi
movq %r14, %rdi
callq 0xf106
movl %ebx, 0x10(%r14)
callq 0xb680
movq %rax, %r14
callq 0xb780
jmp 0xda22
movq %rax, %rdi
callq 0xe997
movq %rax, %r14
leaq -0x138(%rbp), %rdi
callq 0xe962
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xda34
callq 0xb430
leaq -0xc8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xda49
callq 0xb430
movq -0x30(%rbp), %rdi
callq 0xe8e2
movq %r14, %rdi
callq 0xb7f0