// File: nvanbenschoten[P]total-order-multicast/include/args.h
// Function: args::FlagBase::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);
    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 $0x240, %rsp            # imm = 0x240
movq %rdi, -0x228(%rbp)
movq %rdi, %rax
movq %rax, -0x220(%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, -0x218(%rbp)
movb $0x0, -0x31(%rbp)
callq 0x205a0
movq -0x218(%rbp), %rsi
addq $0x58, %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
leaq -0x50(%rbp), %rdi
callq 0x25510
jmp 0x23416
leaq -0x1d8(%rbp), %rdi
callq 0x65e0
jmp 0x23424
leaq -0x50(%rbp), %rdi
callq 0x1b380
movq %rax, -0x1e0(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x1b3f0
movq %rax, -0x1e8(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x1b3b0
testb $0x1, %al
jne 0x23460
jmp 0x2350f
leaq -0x50(%rbp), %rdi
callq 0x1b380
movq %rax, -0x1f0(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x1b3b0
testb $0x1, %al
jne 0x23489
jmp 0x234df
leaq 0xc8d3(%rip), %rsi      # 0x2fd63
leaq -0x1d8(%rbp), %rdi
callq 0x6410
jmp 0x2349e
jmp 0x234df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x235c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x235a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x60f0
jmp 0x235a2
leaq -0x1e0(%rbp), %rdi
callq 0x1b490
movq %rax, %rsi
leaq -0x1d8(%rbp), %rdi
callq 0x63d0
jmp 0x234fc
jmp 0x234fe
leaq -0x1e0(%rbp), %rdi
callq 0x1b4b0
jmp 0x23434
leaq -0x210(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x6440
jmp 0x23524
movq -0x228(%rbp), %rdi
callq 0x23e90
movq %rax, %rdi
leaq -0x210(%rbp), %rsi
movq %rsi, -0x238(%rbp)
callq 0x6520
movq -0x238(%rbp), %rdi
callq 0x68c8
movq -0x218(%rbp), %rax
movq -0x228(%rbp), %rdi
addq $0x10, %rax
movq %rax, -0x230(%rbp)
callq 0x205d0
movq -0x230(%rbp), %rsi
movq %rax, %rdi
callq 0x6040
jmp 0x23581
movb $0x1, -0x31(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x60f0
leaq -0x50(%rbp), %rdi
callq 0x188e0
testb $0x1, -0x31(%rbp)
jne 0x235b9
jmp 0x235ad
leaq -0x50(%rbp), %rdi
callq 0x188e0
jmp 0x235c9
movq -0x228(%rbp), %rdi
callq 0x1c860
movq -0x220(%rbp), %rax
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq
movq -0x228(%rbp), %rdi
callq 0x1c860
movq -0x58(%rbp), %rdi
callq 0x67a0
nop