// File: demon386[P]git-store/./libs/program_options/src/config_file.cpp
// Function: boost::program_options::detail::common_config_file_iterator::add_option(char const*)
void
    common_config_file_iterator::add_option(const char* name)
    {
        string s(name);
        assert(!s.empty());
        if (*s.rbegin() == '*') {
            s.resize(s.size()-1);
            bool bad_prefixes(false);
            // If 's' is a prefix of one of allowed suffix, then
            // lower_bound will return that element.
            // If some element is prefix of 's', then lower_bound will
            // return the next element.
            set<string>::iterator i = allowed_prefixes.lower_bound(s);
            if (i != allowed_prefixes.end()) {
                if (i->find(s) == 0)
                    bad_prefixes = true;                    
            }
            if (i != allowed_prefixes.begin()) {
                --i;
                if (s.find(*i) == 0)
                    bad_prefixes = true;
            }
            if (bad_prefixes)
                boost::throw_exception(error("options '" + string(name) + "' and '" +
                                             *i + "*' will both match the same "
                                             "arguments from the configuration file"));
            allowed_prefixes.insert(s);
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x148(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x140(%rbp)
callq 0xdb50
movq -0x148(%rbp), %rsi
movq -0x140(%rbp), %rdx
leaq -0x30(%rbp), %rdi
callq 0xd8b0
jmp 0x1db82
leaq -0x31(%rbp), %rdi
callq 0xd6b0
leaq -0x30(%rbp), %rdi
callq 0xdab0
xorb $-0x1, %al
testb $0x1, %al
jne 0x1db9c
jmp 0x1db9e
jmp 0x1dbd7
leaq 0x421d3(%rip), %rdi     # 0x5fd78
leaq 0x421d7(%rip), %rsi     # 0x5fd83
movl $0x29, %edx
leaq 0x421f6(%rip), %rcx     # 0x5fdae
callq 0xd400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0xd6b0
jmp 0x1df07
leaq -0x50(%rbp), %rdi
movq %rdi, -0x160(%rbp)
leaq -0x30(%rbp), %rsi
callq 0xdb10
movq -0x160(%rbp), %rdi
callq 0x1e870
movq %rax, -0x158(%rbp)
jmp 0x1dc00
movq -0x158(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2a, %eax
jne 0x1deec
leaq -0x30(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0xd430
movq -0x168(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0xd8e0
jmp 0x1dc37
movq -0x150(%rbp), %rdi
movb $0x0, -0x51(%rbp)
addq $0xa0, %rdi
leaq -0x30(%rbp), %rsi
callq 0x1e8a0
movq %rax, -0x170(%rbp)
jmp 0x1dc5b
movq -0x150(%rbp), %rdi
movq -0x170(%rbp), %rax
movq %rax, -0x60(%rbp)
addq $0xa0, %rdi
callq 0x1e7a0
movq %rax, -0x68(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x1e770
testb $0x1, %al
jne 0x1dc90
jmp 0x1dcc8
leaq -0x60(%rbp), %rdi
callq 0x1e7d0
movq %rax, %rdi
leaq -0x30(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xdc70
cmpq $0x0, %rax
jne 0x1dcc6
movb $0x1, -0x51(%rbp)
jmp 0x1dcc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1defe
jmp 0x1dcc8
movq -0x150(%rbp), %rdi
addq $0xa0, %rdi
callq 0x1e740
movq %rax, -0x70(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1e770
testb $0x1, %al
jne 0x1dcf2
jmp 0x1dd20
leaq -0x60(%rbp), %rdi
callq 0x1e8e0
leaq -0x60(%rbp), %rdi
callq 0x1e910
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
callq 0xdc70
cmpq $0x0, %rax
jne 0x1dd1e
movb $0x1, -0x51(%rbp)
jmp 0x1dd20
testb $0x1, -0x51(%rbp)
je 0x1deac
movq -0x10(%rbp), %rax
movq %rax, -0x180(%rbp)
leaq -0x121(%rbp), %rdi
movq %rdi, -0x178(%rbp)
callq 0xdb50
movq -0x180(%rbp), %rsi
movq -0x178(%rbp), %rdx
leaq -0x120(%rbp), %rdi
callq 0xd8b0
jmp 0x1dd64
leaq 0x4209e(%rip), %rsi     # 0x5fe09
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rdx
callq 0x130d0
jmp 0x1dd80
leaq 0x4208c(%rip), %rdx     # 0x5fe13
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x1e9e0
jmp 0x1dd9c
leaq -0x60(%rbp), %rdi
callq 0x1e910
movq %rax, %rdx
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x1ea30
jmp 0x1ddbd
leaq 0x42057(%rip), %rdx     # 0x5fe1b
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x1e9e0
jmp 0x1ddd9
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x13440
jmp 0x1ddeb
leaq -0x80(%rbp), %rdi
callq 0x1e930
jmp 0x1ddf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1de9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1de92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1de86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1de7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1de6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1de62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x134b0
leaq -0xa0(%rbp), %rdi
callq 0xdca8
leaq -0xc0(%rbp), %rdi
callq 0xdca8
leaq -0xe0(%rbp), %rdi
callq 0xdca8
leaq -0x100(%rbp), %rdi
callq 0xdca8
leaq -0x120(%rbp), %rdi
callq 0xdca8
leaq -0x121(%rbp), %rdi
callq 0xd6b0
jmp 0x1defe
movq -0x150(%rbp), %rdi
addq $0xa0, %rdi
leaq -0x30(%rbp), %rsi
callq 0x1ea80
movb %dl, -0x189(%rbp)
movq %rax, -0x188(%rbp)
jmp 0x1ded2
movb -0x189(%rbp), %al
movq -0x188(%rbp), %rcx
movq %rcx, -0x138(%rbp)
movb %al, -0x130(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xdca8
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0xdca8
movq -0x40(%rbp), %rdi
callq 0xdb30