// File: demon386[P]git-store/./libs/program_options/src/variables_map.cpp
// Function: boost::program_options::variables_map::notify()
void
    variables_map::notify()
    {
        // This checks if all required options occur
        for (map<string, string>::const_iterator r = m_required.begin();
             r != m_required.end();
             ++r)
        {
            const string& opt = r->first;
            const string& display_opt = r->second;
            map<string, variable_value>::const_iterator iter = find(opt);
            if (iter == end() || iter->second.empty())
            {
                boost::throw_exception(required_option(display_opt));

            }
        }

        // Lastly, run notify actions.
        for (map<string, variable_value>::iterator k = begin();
             k != end();
             ++k)
        {
            /* Users might wish to use variables_map to store their own values
               that are not parsed, and therefore will not have value_semantics
               defined. Do not crash on such values. In multi-module programs,
               one module might add custom values, and the 'notify' function
               will be called after that, so we check that value_sematics is
               not NULL. See:
                   https://svn.boost.org/trac/boost/ticket/2782
            */
            if (k->second.m_value_semantic)
                k->second.m_value_semantic->notify(k->second.value());
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x138(%rbp)
addq $0x70, %rdi
callq 0x3dac0
movq %rax, -0x18(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x13a50
movq -0x138(%rbp), %rdi
addq $0x70, %rdi
callq 0x13870
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x13a50
leaq -0x10(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x44f90
testb $0x1, %al
jne 0x445bb
jmp 0x446ba
leaq -0x10(%rbp), %rdi
callq 0x20230
movq %rax, -0x30(%rbp)
leaq -0x10(%rbp), %rdi
callq 0x20230
movq -0x138(%rbp), %rdi
addq $0x20, %rax
movq %rax, -0x38(%rbp)
addq $0x10, %rdi
movq -0x30(%rbp), %rsi
callq 0x44fc0
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x44ff0
movq -0x138(%rbp), %rdi
addq $0x10, %rdi
callq 0x45010
movq %rax, -0x58(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x44ff0
leaq -0x40(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x44f10
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x139(%rbp)
jne 0x44656
leaq -0x40(%rbp), %rdi
callq 0x44f70
movq %rax, %rdi
addq $0x20, %rdi
callq 0x44e40
movb %al, -0x139(%rbp)
movb -0x139(%rbp), %al
testb $0x1, %al
jne 0x44662
jmp 0x446aa
movq -0x38(%rbp), %rsi
leaq -0x110(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x45120
movq -0x148(%rbp), %rdi
callq 0x45040
jmp 0x44687
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x45240
jmp 0x4478d
jmp 0x446ac
leaq -0x10(%rbp), %rdi
callq 0x45260
jmp 0x44584
movq -0x138(%rbp), %rdi
addq $0x10, %rdi
callq 0x45290
movq %rax, -0x128(%rbp)
movq -0x138(%rbp), %rdi
addq $0x10, %rdi
callq 0x45010
movq %rax, -0x130(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x452c0
testb $0x1, %al
jne 0x44704
jmp 0x44784
leaq -0x128(%rbp), %rdi
callq 0x452f0
movq %rax, %rdi
addq $0x20, %rdi
addq $0x10, %rdi
callq 0x45310
testb $0x1, %al
jne 0x44726
jmp 0x44771
leaq -0x128(%rbp), %rdi
callq 0x452f0
movq %rax, %rdi
addq $0x20, %rdi
addq $0x10, %rdi
callq 0x129c0
movq %rax, -0x150(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x452f0
movq %rax, %rdi
addq $0x20, %rdi
callq 0x44cf0
movq -0x150(%rbp), %rdi
movq %rax, %rsi
movq (%rdi), %rax
callq *0x40(%rax)
jmp 0x44773
leaq -0x128(%rbp), %rdi
callq 0x45330
jmp 0x446d1
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
movq -0x118(%rbp), %rdi
callq 0xdb30
nopl (%rax)