// File: nvanbenschoten[P]total-order-multicast/include/args.h
// Function: args::ValueFlagBase::GetDescription(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&) const
virtual std::tuple<std::string, std::string> GetDescription(
      const std::string &shortPrefix, const std::string &longPrefix,
      const std::string &shortSeparator,
      const std::string &longSeparator) const override {
    std::tuple<std::string, std::string> description;
    const auto flagStrings = matcher.GetFlagStrings(
        shortPrefix, longPrefix, Name(), shortSeparator, longSeparator);
    std::ostringstream flagstream;
    for (auto it = std::begin(flagStrings); it != std::end(flagStrings); ++it) {
      if (it != std::begin(flagStrings)) {
        flagstream << ", ";
      }
      flagstream << *it;
    }
    std::get<0>(description) = flagstream.str();
    std::get<1>(description) = help;
    return description;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2a0, %rsp            # imm = 0x2A0
movq %rdi, -0x280(%rbp)
movq %rdi, %rax
movq %rax, -0x278(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x270(%rbp)
movb $0x0, -0x31(%rbp)
callq 0x205a0
movq -0x270(%rbp), %rsi
movq %rsi, %rax
addq $0x58, %rax
movq %rax, -0x268(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x258(%rbp)
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x70(%rbp), %rdi
callq *%rax
jmp 0x2acf2
movq -0x28(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x30(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x61c0
jmp 0x2ad0f
movq -0x288(%rbp), %r9
movq -0x258(%rbp), %rcx
movq -0x260(%rbp), %rdx
movq -0x268(%rbp), %rsi
movq %rsp, %rax
leaq -0xa0(%rbp), %rdi
movq %rdi, (%rax)
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %r8
callq 0x2afd0
jmp 0x2ad47
leaq -0xa0(%rbp), %rdi
callq 0x68c8
leaq -0x70(%rbp), %rdi
callq 0x68c8
leaq -0x218(%rbp), %rdi
callq 0x65e0
jmp 0x2ad6a
leaq -0x50(%rbp), %rdi
callq 0x1b380
movq %rax, -0x220(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x1b3f0
movq %rax, -0x228(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x1b3b0
testb $0x1, %al
jne 0x2ada6
jmp 0x2ae8c
leaq -0x50(%rbp), %rdi
callq 0x1b380
movq %rax, -0x230(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x1b3b0
testb $0x1, %al
jne 0x2add2
jmp 0x2ae5c
leaq 0x4f8a(%rip), %rsi      # 0x2fd63
leaq -0x218(%rbp), %rdi
callq 0x6410
jmp 0x2ade7
jmp 0x2ae5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x2af46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x2ae20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x68c8
leaq -0x70(%rbp), %rdi
callq 0x68c8
jmp 0x2af46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x2af1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x60f0
jmp 0x2af1f
leaq -0x220(%rbp), %rdi
callq 0x1b490
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x63d0
jmp 0x2ae79
jmp 0x2ae7b
leaq -0x220(%rbp), %rdi
callq 0x1b4b0
jmp 0x2ad7a
leaq -0x250(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x6440
jmp 0x2aea1
movq -0x280(%rbp), %rdi
callq 0x23e90
movq %rax, %rdi
leaq -0x250(%rbp), %rsi
movq %rsi, -0x298(%rbp)
callq 0x6520
movq -0x298(%rbp), %rdi
callq 0x68c8
movq -0x270(%rbp), %rax
movq -0x280(%rbp), %rdi
addq $0x10, %rax
movq %rax, -0x290(%rbp)
callq 0x205d0
movq -0x290(%rbp), %rsi
movq %rax, %rdi
callq 0x6040
jmp 0x2aefe
movb $0x1, -0x31(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x60f0
leaq -0x50(%rbp), %rdi
callq 0x188e0
testb $0x1, -0x31(%rbp)
jne 0x2af36
jmp 0x2af2a
leaq -0x50(%rbp), %rdi
callq 0x188e0
jmp 0x2af46
movq -0x280(%rbp), %rdi
callq 0x1c860
movq -0x278(%rbp), %rax
addq $0x2a0, %rsp            # imm = 0x2A0
popq %rbp
retq
movq -0x280(%rbp), %rdi
callq 0x1c860
movq -0x78(%rbp), %rdi
callq 0x67a0
nopl (%rax,%rax)