// File: zeeev[P]DASVC/bamtools/src/utils/bamtools_options.h
// Function: void BamTools::Options::AddValueOption<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, BamTools::OptionGroup*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void Options::AddValueOption(const std::string& argument, 
                             const std::string& valueDescription, 
                             const std::string& optionDescription, 
                             const std::string& valueTypeDescription, 
                             bool& foundArgument, 
                             T& val, 
                             OptionGroup* group, 
                             D& defaultValue) 
{
        Option o;
        o.Argument         = argument;
        o.ValueDescription = valueDescription;
        o.Description      = optionDescription;
        o.DefaultValue     = defaultValue;
        o.HasDefaultValue  = true;
        group->Options.push_back(o);

        OptionValue ov;
        ov.pFoundArgument       = &foundArgument;
        ov.pValue               = (void*)&val;
        ov.VariantValue         = val;
        ov.IsRequired           = (valueTypeDescription.empty() ? false : true);
        ov.ValueTypeDescription = valueTypeDescription;
        m_optionsMap[argument] = ov;
}

// Assembly:
subq $0x158, %rsp            # imm = 0x158
movq 0x168(%rsp), %rax
movq 0x160(%rsp), %rax
movq %rdi, 0x150(%rsp)
movq %rsi, 0x148(%rsp)
movq %rdx, 0x140(%rsp)
movq %rcx, 0x138(%rsp)
movq %r8, 0x130(%rsp)
movq %r9, 0x128(%rsp)
leaq 0xb8(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x94840
movq 0x18(%rsp), %rdi
movq 0x150(%rsp), %rsi
callq 0x86070
jmp 0x91c5d
movq 0x148(%rsp), %rsi
leaq 0xd8(%rsp), %rdi
callq 0x86070
jmp 0x91c74
movq 0x140(%rsp), %rsi
leaq 0xf8(%rsp), %rdi
callq 0x86070
jmp 0x91c8b
movq 0x168(%rsp), %rsi
leaq 0x80(%rsp), %rdi
callq 0x86350
jmp 0x91ca2
leaq 0xa0(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x94910
jmp 0x91cb9
leaq 0x120(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x949f0
jmp 0x91cd0
leaq 0xa0(%rsp), %rdi
callq 0x94a50
jmp 0x91cdf
leaq 0x80(%rsp), %rdi
callq 0x86f68
jmp 0x91cee
movb $0x1, 0x119(%rsp)
movq 0x160(%rsp), %rdi
addq $0x20, %rdi
leaq 0xb8(%rsp), %rsi
callq 0x94a80
jmp 0x91d11
leaq 0x40(%rsp), %rdi
callq 0x94af0
jmp 0x91d1d
movq 0x130(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x128(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x128(%rsp), %rsi
leaq 0x20(%rsp), %rdi
callq 0x94b70
jmp 0x91d4b
leaq 0x38(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x94c70
jmp 0x91d5c
leaq 0x78(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x949f0
jmp 0x91d6d
leaq 0x38(%rsp), %rdi
callq 0x94a50
jmp 0x91d79
leaq 0x20(%rsp), %rdi
callq 0x92a50
jmp 0x91d85
movq 0x138(%rsp), %rdi
callq 0x86c90
movb %al, 0x17(%rsp)
jmp 0x91d98
movb 0x17(%rsp), %al
notb %al
andb $0x1, %al
movb %al, 0x72(%rsp)
movq 0x138(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x86070
jmp 0x91db8
movq 0x150(%rsp), %rsi
leaq 0xd4a21(%rip), %rdi     # 0x1667e8
callq 0x94d50
movq %rax, 0x8(%rsp)
jmp 0x91dd3
movq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x94f10
jmp 0x91de4
leaq 0x40(%rsp), %rdi
callq 0x94f80
jmp 0x91df0
leaq 0xb8(%rsp), %rdi
callq 0x94ff0
addq $0x158, %rsp            # imm = 0x158
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0x91ed4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0x91e59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x94a50
jmp 0x91e57
jmp 0x91e59
leaq 0x80(%rsp), %rdi
callq 0x86f68
jmp 0x91e68
jmp 0x91ed4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0x91ec6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
jmp 0x91eb8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb0(%rsp)
movl %eax, 0xac(%rsp)
leaq 0x38(%rsp), %rdi
callq 0x94a50
jmp 0x91eb6
jmp 0x91eb8
leaq 0x20(%rsp), %rdi
callq 0x92a50
jmp 0x91ec4
jmp 0x91ec6
leaq 0x40(%rsp), %rdi
callq 0x94f80
jmp 0x91ed2
jmp 0x91ed4
leaq 0xb8(%rsp), %rdi
callq 0x94ff0
jmp 0x91ee3
jmp 0x91ee5
movq 0xb0(%rsp), %rdi
callq 0x86d80
movq %rax, %rdi
callq 0x91290
nopw (%rax,%rax)