// File: demon386[P]git-store/./libs/program_options/src/value_semantic.cpp
// Function: boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) const
void error_with_option_name::substitute_placeholders(const string& error_template) const
    {
        m_message = error_template;
        std::map<std::string, std::string> substitutions(m_substitutions);
        substitutions["canonical_option"]   = get_canonical_option_name();
        substitutions["prefix"]             = get_canonical_option_prefix();


        //
        //  replace placeholder with defaults if values are missing 
        // 
        for (map<string, string_pair>::const_iterator iter = m_substitution_defaults.begin();
              iter != m_substitution_defaults.end(); ++iter)
        {
            // missing parameter: use default
            if (substitutions.count(iter->first) == 0 ||
                substitutions[iter->first].length() == 0)
                replace_token(iter->second.first, iter->second.second);
        }


        //
        //  replace placeholder with values
        //  placeholder are denoted by surrounding '%'
        // 
        for (map<string, string>::iterator iter = substitutions.begin();
              iter != substitutions.end(); ++iter)
            replace_token('%' + iter->first + '%', iter->second);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x148(%rbp)
movq -0x10(%rbp), %rsi
addq $0x98, %rdi
callq 0xd060
movq -0x148(%rbp), %rsi
addq $0x18, %rsi
leaq -0x40(%rbp), %rdi
callq 0x1bab0
movq -0x148(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x3b990
jmp 0x3bf04
leaq -0x91(%rbp), %rdi
movq %rdi, -0x150(%rbp)
callq 0xdb50
movq -0x150(%rbp), %rdx
leaq 0x25e8f(%rip), %rsi     # 0x61db4
leaq -0x90(%rbp), %rdi
callq 0xd8b0
jmp 0x3bf33
leaq -0x40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x1fb50
movq %rax, -0x158(%rbp)
jmp 0x3bf4c
movq -0x158(%rbp), %rdi
leaq -0x60(%rbp), %rsi
movq %rsi, -0x160(%rbp)
callq 0xd790
leaq -0x90(%rbp), %rdi
callq 0xdca8
leaq -0x91(%rbp), %rdi
callq 0xd6b0
movq -0x160(%rbp), %rdi
callq 0xdca8
movq -0x148(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
callq 0x3b750
jmp 0x3bf9c
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0xdb50
movq -0x168(%rbp), %rdx
leaq 0x25e1d(%rip), %rsi     # 0x61dda
leaq -0xd8(%rbp), %rdi
callq 0xd8b0
jmp 0x3bfcb
leaq -0x40(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x1fb50
movq %rax, -0x170(%rbp)
jmp 0x3bfe4
movq -0x170(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xd790
leaq -0xd8(%rbp), %rdi
callq 0xdca8
leaq -0xd9(%rbp), %rdi
callq 0xd6b0
leaq -0xb8(%rbp), %rdi
callq 0xdca8
movq -0x148(%rbp), %rdi
addq $0x48, %rdi
callq 0x3d980
movq %rax, -0xe8(%rbp)
movq -0x148(%rbp), %rdi
addq $0x48, %rdi
callq 0x3d9e0
movq %rax, -0xf0(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x3d9b0
testb $0x1, %al
jne 0x3c065
jmp 0x3c1bc
leaq -0xe8(%rbp), %rdi
callq 0x3da70
movq %rax, %rsi
leaq -0x40(%rbp), %rdi
callq 0x3da10
movq %rax, -0x178(%rbp)
jmp 0x3c086
movq -0x178(%rbp), %rax
cmpq $0x0, %rax
je 0x3c0ca
leaq -0xe8(%rbp), %rdi
callq 0x3da70
movq %rax, %rsi
leaq -0x40(%rbp), %rdi
callq 0x13730
movq %rax, -0x180(%rbp)
jmp 0x3c0b4
movq -0x180(%rbp), %rdi
callq 0xd9b0
cmpq $0x0, %rax
jne 0x3c1a9
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x190(%rbp)
callq 0x3da70
movq -0x190(%rbp), %rdi
addq $0x20, %rax
movq %rax, -0x188(%rbp)
callq 0x3da70
movq -0x148(%rbp), %rdi
movq -0x188(%rbp), %rsi
movq %rax, %rdx
addq $0x40, %rdx
callq 0x3b6b0
jmp 0x3c110
jmp 0x3c1a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x3c2cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x3c14c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xdca8
leaq -0x91(%rbp), %rdi
callq 0xd6b0
leaq -0x60(%rbp), %rdi
callq 0xdca8
jmp 0x3c2cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x3c18c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0xdca8
leaq -0xd9(%rbp), %rdi
callq 0xd6b0
leaq -0xb8(%rbp), %rdi
callq 0xdca8
jmp 0x3c2cb
jmp 0x3c1ab
leaq -0xe8(%rbp), %rdi
callq 0x3da90
jmp 0x3c032
leaq -0x40(%rbp), %rdi
callq 0x3dac0
movq %rax, -0xf8(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x13870
movq %rax, -0x100(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3daf0
testb $0x1, %al
jne 0x3c1f8
jmp 0x3c2b9
leaq -0xf8(%rbp), %rdi
callq 0x3dc20
movq %rax, %rdx
leaq -0x140(%rbp), %rdi
movl $0x25, %esi
callq 0x3db20
jmp 0x3c21a
leaq -0x120(%rbp), %rdi
leaq -0x140(%rbp), %rsi
movl $0x25, %edx
callq 0x13040
jmp 0x3c234
leaq -0xf8(%rbp), %rdi
callq 0x3dc20
movq -0x148(%rbp), %rdi
movq %rax, %rdx
addq $0x20, %rdx
leaq -0x120(%rbp), %rsi
callq 0x3b6b0
jmp 0x3c25c
leaq -0x120(%rbp), %rdi
callq 0xdca8
leaq -0x140(%rbp), %rdi
callq 0xdca8
leaq -0xf8(%rbp), %rdi
callq 0x148a0
jmp 0x3c1cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x3c2ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0xdca8
leaq -0x140(%rbp), %rdi
callq 0xdca8
jmp 0x3c2cb
leaq -0x40(%rbp), %rdi
callq 0x14d70
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0x14d70
movq -0x68(%rbp), %rdi
callq 0xdb30
nopl (%rax)