// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x298, %rsp            # imm = 0x298
movl %ecx, -0x30(%rbp)
movq %rdx, %r12
movq %rsi, -0x68(%rbp)
movq %rdi, -0x70(%rbp)
leaq -0xa8(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movq %rdx, %rdi
callq 0x1549c
movq %rax, %r13
xorl %r15d, %r15d
leaq -0xb0(%rbp), %r14
movl %r15d, %r15d
movq (%r13), %rdi
movq 0x8(%r13), %rax
subq %rdi, %rax
sarq $0x4, %rax
cmpq %r15, %rax
jbe 0x181b8
movq %r15, %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1620c
movq %rax, %rbx
movq %rax, %rdi
callq 0x14c80
cmpq $0x0, 0x8(%rax)
je 0x1825c
movq %rbx, %rdi
callq 0x14c80
movq %r14, %rdi
movq %rax, %rsi
callq 0x1368a
incl %r15d
jmp 0x18164
xorps %xmm0, %xmm0
movaps %xmm0, -0x60(%rbp)
andq $0x0, -0x50(%rbp)
movq %r12, -0x48(%rbp)
andl $0x0, -0x40(%rbp)
movzbl -0x30(%rbp), %ecx
leaq -0x2c0(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
movq -0x68(%rbp), %rsi
callq 0x183ea
movq -0x70(%rbp), %rbx
leaq -0x1b8(%rbp), %rdi
callq 0x18450
leaq -0x2c0(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x182ed
leaq -0x1b8(%rbp), %rdi
callq 0x1847e
leaq -0x2c0(%rbp), %rdi
callq 0x1847e
leaq -0x60(%rbp), %rsi
movq %rbx, %rdi
callq 0x184ac
leaq -0x60(%rbp), %rdi
callq 0xeac8
leaq -0xb0(%rbp), %rdi
callq 0x13024
movq %rbx, %rax
addq $0x298, %rsp            # imm = 0x298
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15ae5(%rip), %rsi     # 0x2dd48
leaq -0x60(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0xc1b0
leaq -0x80(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xf0a4
leaq -0x80(%rbp), %rdi
callq 0x12a74
movq %rax, %rbx
leaq -0x1b8(%rbp), %rdi
callq 0x1847e
jmp 0x1829a
movq %rax, %rbx
leaq -0x2c0(%rbp), %rdi
callq 0x1847e
jmp 0x182ad
jmp 0x182d6
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0xeac8
jmp 0x182d9
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0xc860
jmp 0x182c9
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0xc9a0
jmp 0x182d9
jmp 0x182d6
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x13024
movq %rbx, %rdi
callq 0xc850