// File: demon386[P]git-store/./libs/program_options/src/parsers.cpp
// Function: boost::program_options::basic_parsed_options<char> boost::program_options::parse_config_file<char>(std::basic_istream<char, std::char_traits<char>>&, boost::program_options::options_description const&, bool)
basic_parsed_options<charT>
    parse_config_file(std::basic_istream<charT>& is, 
                      const options_description& desc,
                      bool allow_unregistered)
    {    
        set<string> allowed_options;

        const vector<shared_ptr<option_description> >& options = desc.options();
        for (unsigned i = 0; i < options.size(); ++i)
        {
            const option_description& d = *options[i];

            if (d.long_name().empty())
                boost::throw_exception(
                    error("abbreviated option names are not permitted in options configuration files"));

            allowed_options.insert(d.long_name());
        }

        // Parser return char strings
        parsed_options result(&desc);        
        copy(detail::basic_config_file_iterator<charT>(
                 is, allowed_options, allow_unregistered), 
             detail::basic_config_file_iterator<charT>(), 
             back_inserter(result.options));
        // Convert char strings into desired type.
        return basic_parsed_options<charT>(result);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
movq %rdi, -0x318(%rbp)
movb %cl, %al
movq %rdi, %rcx
movq %rcx, -0x310(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x1e720
movq -0x18(%rbp), %rdi
callq 0x255f0
movq %rax, -0x308(%rbp)
jmp 0x2eb1a
movq -0x308(%rbp), %rax
movq %rax, -0x58(%rbp)
movl $0x0, -0x68(%rbp)
movl -0x68(%rbp), %eax
movq %rax, -0x320(%rbp)
movq -0x58(%rbp), %rdi
callq 0x26dd0
movq %rax, %rcx
movq -0x320(%rbp), %rax
cmpq %rcx, %rax
jae 0x2eca7
movq -0x58(%rbp), %rdi
movl -0x68(%rbp), %eax
movl %eax, %esi
callq 0x26df0
movq %rax, %rdi
callq 0x27240
movq %rax, -0x328(%rbp)
jmp 0x2eb71
movq -0x328(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
callq 0x24890
movq %rax, -0x330(%rbp)
jmp 0x2eb8e
movq -0x330(%rbp), %rdi
callq 0xdab0
testb $0x1, %al
jne 0x2eba3
jmp 0x2ec4e
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0xdb50
movq -0x338(%rbp), %rdx
leaq 0x3218e(%rip), %rsi     # 0x60d52
leaq -0xa0(%rbp), %rdi
callq 0xd8b0
jmp 0x2ebd2
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x13440
jmp 0x2ebe4
leaq -0x80(%rbp), %rdi
callq 0x1e930
jmp 0x2ebef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2edd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2ec3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2ec31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x134b0
leaq -0xa0(%rbp), %rdi
callq 0xdca8
leaq -0xa1(%rbp), %rdi
callq 0xd6b0
jmp 0x2edd8
movq -0x70(%rbp), %rdi
callq 0x24890
movq %rax, -0x340(%rbp)
jmp 0x2ec60
movq -0x340(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x1ea80
movb %dl, -0x349(%rbp)
movq %rax, -0x348(%rbp)
jmp 0x2ec7f
movb -0x349(%rbp), %al
movq -0x348(%rbp), %rcx
movq %rcx, -0xb8(%rbp)
movb %al, -0xb0(%rbp)
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x2eb2c
movq -0x18(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
xorl %edx, %edx
callq 0x2edf0
jmp 0x2ecbb
movq -0x10(%rbp), %rsi
movzbl -0x19(%rbp), %ecx
andl $0x1, %ecx
leaq -0x1e8(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x2efb0
jmp 0x2ecd8
leaq -0x2f0(%rbp), %rdi
callq 0x2f050
jmp 0x2ece6
leaq -0xe0(%rbp), %rdi
callq 0x2f0d0
movq %rax, -0x358(%rbp)
jmp 0x2ecfb
movq -0x358(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rdx
leaq -0x1e8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x2ee30
movq %rax, -0x360(%rbp)
jmp 0x2ed2c
movq -0x360(%rbp), %rax
movq %rax, -0x300(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x2f100
leaq -0x1e8(%rbp), %rdi
callq 0x2f100
movq -0x318(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x2f140
jmp 0x2ed67
leaq -0xe0(%rbp), %rdi
callq 0x2f180
leaq -0x50(%rbp), %rdi
callq 0x1e830
movq -0x310(%rbp), %rax
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2edcc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2edc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x2f100
leaq -0x1e8(%rbp), %rdi
callq 0x2f100
leaq -0xe0(%rbp), %rdi
callq 0x2f180
leaq -0x50(%rbp), %rdi
callq 0x1e830
movq -0x60(%rbp), %rdi
callq 0xdb30
nopw (%rax,%rax)