// File: /workspace/github_cpp_makefile_star2_O3/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 $0xf8, %rsp
movq %rdi, %rbx
movq %rdx, -0x38(%rbp)
movq (%rdx), %r15
cmpq $0x2, 0x8(%r15)
jb 0xd523
movq (%r15), %rax
cmpb $0x2d, (%rax)
jne 0xd523
cmpb $0x2d, 0x1(%rax)
jne 0xd546
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
movq $0x0, 0x10(%rbx)
movq %rbx, %rax
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rsi, %r12
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
movq $0x0, 0x10(%rbx)
leaq -0x78(%rbp), %rdi
movl $0x2, %ecx
movq %r15, %rsi
xorl %edx, %edx
movq %rbx, -0x30(%rbp)
callq 0xb490
leaq -0x58(%rbp), %rdi
movl $0x2, %edx
movq %r15, %rsi
movq $-0x1, %rcx
callq 0xb490
leaq -0xf8(%rbp), %r13
movq 0x20(%r12), %rdi
movl 0x18(%r12), %r8d
shrl $0xb, %r8d
andl $0x1, %r8d
leaq -0x78(%rbp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x16318
testq %rax, %rax
je 0xd7a9
testb $0x1, 0x19(%r12)
je 0xd7a9
movq %r13, %rdi
movq %rax, %rsi
callq 0x15ba0
movq -0xf8(%rbp), %rdi
testq %rdi, %rdi
je 0xd887
movq (%rdi), %rax
callq *0x10(%rax)
testl %eax, %eax
jne 0xd79d
movq -0x50(%rbp), %r14
leaq -0xf0(%rbp), %rdi
callq 0xf546
testq %r14, %r14
je 0xd7a9
movq %r13, %r14
leaq -0xe8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq $0x0, -0xf0(%rbp)
movb $0x0, -0xe8(%rbp)
movl $0xffffffff, -0xd8(%rbp) # imm = 0xFFFFFFFF
leaq -0xd0(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
movw $0x0, 0x30(%rax)
movq %r13, %rdi
leaq -0x78(%rbp), %rsi
callq 0xb290
movq %rbx, %rdi
movq %r14, %rsi
callq 0xe828
movq -0x50(%rbp), %r14
testq %r14, %r14
je 0xd6e4
leaq -0x88(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq -0x98(%rbp), %rbx
movq %rbx, %rdi
leaq 0x25d25(%rip), %rsi     # 0x333af
leaq 0x25d1f(%rip), %rdx     # 0x333b0
callq 0xf8ee
movq -0x58(%rbp), %rax
movsbl (%rax), %r8d
movq -0x90(%rbp), %rsi
movl $0x1, %ecx
movq %rbx, %rdi
xorl %edx, %edx
callq 0xb850
leaq -0x108(%rbp), %rbx
movq %rbx, -0x118(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xd6f2
movq %rdx, -0x118(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x108(%rbp)
jmp 0xd6f8
movq -0x38(%rbp), %rdi
movq (%rdi), %rsi
callq 0x11356
jmp 0xd75f
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, -0x110(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x78(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0xb560
movq -0x118(%rbp), %rdi
cmpq %rbx, %rdi
je 0xd733
callq 0xb430
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
movq -0x30(%rbp), %rbx
je 0xd74f
callq 0xb430
movl $0x1, %edx
leaq -0x58(%rbp), %rdi
xorl %esi, %esi
callq 0xb520
leaq -0xb8(%rbp), %rdi
callq 0xe470
leaq -0xd0(%rbp), %rdi
callq 0xe470
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xd78f
callq 0xb430
testq %r14, %r14
jne 0xd58d
jmp 0xd85a
leaq -0xf0(%rbp), %rdi
callq 0xf546
leaq -0xf8(%rbp), %rdi
leaq -0xe8(%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 -0x78(%rbp), %rsi
callq 0xb290
leaq -0xb8(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0xe894
leaq -0xd0(%rbp), %r15
cmpq $0x0, -0x50(%rbp)
je 0xd817
leaq -0x58(%rbp), %rsi
movq %r15, %rdi
callq 0xe894
leaq -0xf8(%rbp), %rsi
movq %rbx, %rdi
callq 0xe828
movq -0x38(%rbp), %rdi
movq (%rdi), %rsi
callq 0x11356
movq %r12, %rdi
callq 0xe470
movq %r15, %rdi
callq 0xe470
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xd85a
callq 0xb430
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd86c
callq 0xb430
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd531
callq 0xb430
jmp 0xd531
leaq 0x24da6(%rip), %rdi     # 0x32634
leaq 0x24da7(%rip), %rsi     # 0x3263c
leaq 0x24dc1(%rip), %rcx     # 0x3265d
movl $0x2af, %edx            # imm = 0x2AF
callq 0xb310
jmp 0xd98e
movq %rax, %r14
jmp 0xd9af
movq %rax, %r14
jmp 0xd9c1
jmp 0xd98e
jmp 0xd98e
jmp 0xd98e
movq %rax, %r14
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0xd991
callq 0xb430
jmp 0xd991
jmp 0xd98e
movq %rax, %r14
jmp 0xd99d
movq %rax, %r14
leaq -0xf0(%rbp), %rdi
callq 0xf546
jmp 0xd99d
movq %rax, %r14
cmpl $0x1, %edx
jne 0xd99d
movq %r14, %rdi
callq 0xb1e0
movq %rax, %r14
movl 0x18(%r12), %eax
movl $0x1, %r15d
testb $0x1, %al
jne 0xd95a
movl $0x1000, %r15d          # imm = 0x1000
btl $0xc, %eax
jb 0xd95a
notl %eax
movl $0x4, %r15d
testb $0x6, %al
je 0xd95a
xorl %r15d, %r15d
testb $0xa, %al
sete %r15b
shll $0x3, %r15d
movq (%r14), %rax
leaq -0x78(%rbp), %rsi
movq %r14, %rdi
callq *0x18(%rax)
leaq -0x78(%rbp), %rsi
movq %r14, %rdi
callq 0xf080
movl %r15d, 0x10(%r14)
callq 0xb680
movq %rax, %r14
callq 0xb780
jmp 0xd99d
movq %rax, %rdi
callq 0xe915
movq %rax, %r14
leaq -0xf8(%rbp), %rdi
callq 0xe8e0
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9af
callq 0xb430
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9c1
callq 0xb430
movq -0x30(%rbp), %rdi
callq 0xe860
movq %r14, %rdi
callq 0xb7f0