// File: 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
subq $0x290, %rsp            # imm = 0x290
movq %rdi, -0x210(%rbp)
movq %rdi, %rax
movq %rax, -0x208(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x12820
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0xd430
cmpq $0x2, %rax
jb 0x10cb7
movq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xd6d0
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x10cb7
movq -0x20(%rbp), %rdi
movl $0x1, %esi
callq 0xd6d0
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0x10cb7
movq -0x210(%rbp), %rdi
movb $0x0, -0x21(%rbp)
callq 0x12450
movq -0x20(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0x48(%rbp), %rdi
movl $0x2, %ecx
callq 0xd650
jmp 0x10732
movq -0x20(%rbp), %rsi
leaq -0x78(%rbp), %rdi
movl $0x2, %edx
movq $-0x1, %rcx
callq 0xd650
jmp 0x1074d
jmp 0x1074f
movq -0x200(%rbp), %rdi
movq 0x20(%rdi), %rax
movq %rax, -0x220(%rbp)
movl $0x800, %esi            # imm = 0x800
callq 0xeb90
movq -0x220(%rbp), %rdi
movzbl %al, %r8d
leaq -0x48(%rbp), %rsi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x25300
movq %rax, -0x218(%rbp)
jmp 0x1078c
movq -0x218(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x1083d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10ca9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10c90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x10c87
movq -0x50(%rbp), %rdi
callq 0xd200
movq -0x200(%rbp), %rdi
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x228(%rbp)
callq 0xec00
movq -0x228(%rbp), %rdi
movl %eax, %ecx
leaq -0x48(%rbp), %rdx
movq %rdx, %rsi
callq 0x12960
jmp 0x1081b
callq 0xd990
jmp 0x10cf7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0xda90
jmp 0x10838
jmp 0x10c87
movq -0x80(%rbp), %rcx
movb $0x0, -0x99(%rbp)
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x229(%rbp)
je 0x108e1
movq -0x200(%rbp), %rax
movl 0x18(%rax), %ecx
andl $0x100, %ecx            # imm = 0x100
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x229(%rbp)
je 0x108e1
movq -0x80(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0x248d0
jmp 0x10889
movb $0x1, -0x99(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x129c0
movq %rax, -0x238(%rbp)
jmp 0x108a5
movq -0x238(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0x23c(%rbp)
jmp 0x108bd
movl -0x23c(%rbp), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x229(%rbp)
jne 0x108e1
leaq -0x78(%rbp), %rdi
callq 0xdab0
xorb $-0x1, %al
movb %al, -0x229(%rbp)
movb -0x229(%rbp), %al
movb %al, -0x23d(%rbp)
testb $0x1, -0x99(%rbp)
jne 0x108f8
jmp 0x10904
leaq -0x98(%rbp), %rdi
callq 0x12a10
movb -0x23d(%rbp), %al
testb $0x1, %al
jne 0x10913
jmp 0x10b69
leaq -0x100(%rbp), %rdi
callq 0x12760
jmp 0x10921
leaq -0x100(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xd060
jmp 0x10933
movq -0x210(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x12690
jmp 0x10948
leaq -0x78(%rbp), %rdi
callq 0xdab0
testb $0x1, %al
jne 0x1095a
jmp 0x10a07
movq -0x18(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x128b0
movq %rax, -0x110(%rbp)
leaq -0x108(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x128e0
movq -0x250(%rbp), %rdi
movq -0x108(%rbp), %rsi
callq 0x12840
movq %rax, -0x248(%rbp)
jmp 0x109a0
movq -0x248(%rbp), %rax
movq %rax, -0x118(%rbp)
movl $0x2, -0x11c(%rbp)
jmp 0x10b04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10c87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0x99(%rbp)
jne 0x109e5
jmp 0x109f1
leaq -0x98(%rbp), %rdi
callq 0x12a10
jmp 0x10c87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10b58
leaq -0x161(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0xdb50
movq -0x258(%rbp), %rdx
leaq 0x4f951(%rip), %rsi     # 0x60379
leaq -0x160(%rbp), %rdi
callq 0xd8b0
jmp 0x10a36
xorl %eax, %eax
movl %eax, %esi
leaq -0x78(%rbp), %rdi
callq 0xdc50
movq %rax, -0x260(%rbp)
jmp 0x10a4c
movq -0x260(%rbp), %rax
movsbl (%rax), %edx
leaq -0x140(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x13040
jmp 0x10a6b
leaq -0x48(%rbp), %rdi
leaq -0x140(%rbp), %rsi
movq %rsi, -0x278(%rbp)
callq 0xd790
movq -0x278(%rbp), %rdi
callq 0xdca8
leaq -0x160(%rbp), %rdi
callq 0xdca8
leaq -0x161(%rbp), %rdi
callq 0xd6b0
leaq -0x78(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0xd550
movq %rax, -0x178(%rbp)
leaq -0x170(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x13090
movq -0x270(%rbp), %rdi
movq -0x170(%rbp), %rsi
callq 0xd7a0
movq %rax, -0x268(%rbp)
jmp 0x10aec
movq -0x268(%rbp), %rax
movq %rax, -0x180(%rbp)
movl $0x0, -0x11c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x12920
movl -0x11c(%rbp), %eax
testl %eax, %eax
je 0x10b21
jmp 0x10b1c
jmp 0x10c5f
jmp 0x10c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10b4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x160(%rbp), %rdi
callq 0xdca8
leaq -0x161(%rbp), %rdi
callq 0xd6b0
leaq -0x100(%rbp), %rdi
callq 0x12920
jmp 0x10c87
leaq -0x1e0(%rbp), %rdi
callq 0x12760
jmp 0x10b77
leaq -0x1e0(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xd060
jmp 0x10b89
leaq -0x1a0(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x127b0
jmp 0x10b9b
leaq -0x78(%rbp), %rdi
callq 0xdab0
testb $0x1, %al
jne 0x10bd9
leaq -0x1b8(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x127b0
jmp 0x10bba
jmp 0x10bd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x12920
jmp 0x10c87
movq -0x210(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x12690
jmp 0x10bee
movq -0x18(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x128b0
movq %rax, -0x1f0(%rbp)
leaq -0x1e8(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x128e0
movq -0x288(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
callq 0x12840
movq %rax, -0x280(%rbp)
jmp 0x10c34
movq -0x280(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movl $0x2, -0x11c(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x12920
jmp 0x10c5f
jmp 0x1074f
movb $0x1, -0x21(%rbp)
movl $0x1, -0x11c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0xdca8
leaq -0x48(%rbp), %rdi
callq 0xdca8
testb $0x1, -0x21(%rbp)
jne 0x10ca7
jmp 0x10c9b
leaq -0x78(%rbp), %rdi
callq 0xdca8
leaq -0x48(%rbp), %rdi
callq 0xdca8
jmp 0x10ca9
movq -0x210(%rbp), %rdi
callq 0x12700
jmp 0x10cd6
movq -0x210(%rbp), %rdi
callq 0x12700
jmp 0x10ce6
movq -0x210(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0xd310
movq -0x210(%rbp), %rdi
callq 0x12450
movq -0x208(%rbp), %rax
addq $0x290, %rsp            # imm = 0x290
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0xdb30
movq %rax, %rdi
callq 0x129b0
nopw (%rax,%rax)