// File: /workspace/github_cpp_makefile_star2_O2/nvanbenschoten[P]total-order-multicast/include/args.h
// Function: args::ArgumentParser::Help(std::ostream&) const
void Help(std::ostream &help) const {
    bool hasoptions = false;
    bool hasarguments = false;

    const auto description_text = Wrap(
        this->description, helpParams.width - helpParams.descriptionindent);
    const auto epilog_text =
        Wrap(this->epilog, helpParams.width - helpParams.descriptionindent);
    std::ostringstream prognameline;
    prognameline << prog;
    if (HasFlag()) {
      hasoptions = true;
      if (helpParams.showProglineOptions) {
        prognameline << " {OPTIONS}";
      }
    }
    for (const std::string &posname : GetPosNames()) {
      hasarguments = true;
      if (helpParams.showProglinePositionals) {
        prognameline << " [" << posname << ']';
      }
    }
    if (!proglinePostfix.empty()) {
      prognameline << ' ' << proglinePostfix;
    }
    const auto proglines =
        Wrap(prognameline.str(), helpParams.width - (helpParams.progindent + 4),
             helpParams.width - helpParams.progindent);
    auto progit = std::begin(proglines);
    if (progit != std::end(proglines)) {
      help << std::string(helpParams.progindent, ' ') << *progit << '\n';
      ++progit;
    }
    for (; progit != std::end(proglines); ++progit) {
      help << std::string(helpParams.progtailindent, ' ') << *progit << '\n';
    }

    help << '\n';

    for (const auto &line : description_text) {
      help << std::string(helpParams.descriptionindent, ' ') << line << "\n";
    }
    help << "\n";
    help << std::string(helpParams.progindent, ' ') << "OPTIONS:\n\n";
    for (const auto &desc : GetChildDescriptions(
             shortprefix, longprefix, allowJoinedShortValue ? "" : " ",
             allowJoinedLongValue ? longseparator : " ")) {
      const auto groupindent = std::get<2>(desc) * helpParams.eachgroupindent;
      const auto flags =
          Wrap(std::get<0>(desc),
               helpParams.width - (helpParams.flagindent +
                                   helpParams.helpindent + helpParams.gutter));
      const auto info =
          Wrap(std::get<1>(desc),
               helpParams.width - (helpParams.helpindent + groupindent));

      std::string::size_type flagssize = 0;
      for (auto flagsit = std::begin(flags); flagsit != std::end(flags);
           ++flagsit) {
        if (flagsit != std::begin(flags)) {
          help << '\n';
        }
        help << std::string(groupindent + helpParams.flagindent, ' ')
             << *flagsit;
        flagssize = Glyphs(*flagsit);
      }

      auto infoit = std::begin(info);
      // groupindent is on both sides of this inequality, and therefore can be
      // removed
      if ((helpParams.flagindent + flagssize + helpParams.gutter) >
              helpParams.helpindent ||
          infoit == std::end(info)) {
        help << '\n';
      } else {
        // groupindent is on both sides of the minus sign, and therefore doesn't
        // actually need to be in here
        help << std::string(
                    helpParams.helpindent - (helpParams.flagindent + flagssize),
                    ' ')
             << *infoit << '\n';
        ++infoit;
      }
      for (; infoit != std::end(info); ++infoit) {
        help << std::string(groupindent + helpParams.helpindent, ' ') << *infoit
             << '\n';
      }
    }
    if (hasoptions && hasarguments && helpParams.showTerminator) {
      for (const auto &item :
           Wrap(std::string("\"") + terminator +
                    "\" can be used to terminate flag options and force all "
                    "following arguments to be treated as positional options",
                helpParams.width - helpParams.flagindent)) {
        help << std::string(helpParams.flagindent, ' ') << item << '\n';
      }
    }

    help << "\n";
    for (const auto &line : epilog_text) {
      help << std::string(helpParams.descriptionindent, ' ') << line << "\n";
    }
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
movq %rsi, %rbx
movq %rdi, %r14
leaq 0xa8(%rdi), %rsi
movl 0x16c(%rdi), %edx
subl 0x178(%rdi), %edx
leaq 0xe8(%rsp), %rdi
xorl %ecx, %ecx
callq 0x96c3
leaq 0xc8(%r14), %rsi
movl 0x16c(%r14), %edx
subl 0x178(%r14), %edx
leaq 0xd0(%rsp), %rdi
xorl %ecx, %ecx
callq 0x96c3
leaq 0x100(%rsp), %rdi
callq 0x5470
leaq 0x68(%r14), %rsi
leaq 0x100(%rsp), %rdi
callq 0x5310
movq %r14, %rdi
callq 0xbcba
movb %al, 0xf(%rsp)
cmpb $0x0, 0xf(%rsp)
je 0xadd2
cmpb $0x1, 0x18d(%r14)
jne 0xadd2
leaq 0x7ea2(%rip), %rsi      # 0x12c67
leaq 0x100(%rsp), %rdi
callq 0x5340
leaq 0x10(%rsp), %rdi
movq %r14, 0x30(%rsp)
movq %r14, %rsi
callq 0xbd42
movq 0x10(%rsp), %r15
movq 0x18(%rsp), %r14
xorl %eax, %eax
leaq 0x7e7b(%rip), %r12      # 0x12c72
leaq 0x100(%rsp), %r13
pushq $0x5d
popq %rbp
cmpq %r14, %r15
je 0xae3d
movq 0x30(%rsp), %rax
cmpb $0x1, 0x18e(%rax)
jne 0xae35
movq %r13, %rdi
movq %r12, %rsi
callq 0x5340
movq %rax, %rdi
movq %r15, %rsi
callq 0x5310
movq %rax, %rdi
movl %ebp, %esi
callq 0x53e0
addq $0x20, %r15
movb $0x1, %al
jmp 0xae02
movl %eax, 0x5c(%rsp)
leaq 0x10(%rsp), %rdi
callq 0xad04
movq 0x30(%rsp), %r14
cmpq $0x0, 0x90(%r14)
je 0xae79
leaq 0x100(%rsp), %rdi
pushq $0x20
popq %rsi
callq 0x53e0
leaq 0x88(%r14), %rsi
movq %rax, %rdi
callq 0x5310
leaq 0x108(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x5540
movl 0x16c(%r14), %ecx
subl 0x170(%r14), %ecx
leal -0x4(%rcx), %edx
leaq 0xb8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x96c3
leaq 0x10(%rsp), %rdi
callq 0x56f8
movq 0xb8(%rsp), %r15
cmpq 0xc0(%rsp), %r15
je 0xaf18
movl 0x170(%r14), %esi
leaq 0x20(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x10(%rsp), %rdi
pushq $0x20
popq %rdx
callq 0x53d0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x5310
movq %rax, %rdi
movq %r15, %rsi
callq 0x5310
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x53e0
leaq 0x10(%rsp), %rdi
callq 0x56f8
addq $0x20, %r15
leaq 0x10(%rsp), %r12
pushq $0x20
popq %rbp
pushq $0xa
popq %r13
cmpq 0xc0(%rsp), %r15
je 0xaf7c
movq 0x30(%rsp), %rax
movl 0x174(%rax), %esi
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r12, %rdi
movl %ebp, %edx
callq 0x53d0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5310
movq %rax, %rdi
movq %r15, %rsi
callq 0x5310
movq %rax, %rdi
movl %r13d, %esi
callq 0x53e0
movq %r12, %rdi
callq 0x56f8
addq $0x20, %r15
jmp 0xaf24
pushq $0xa
popq %rsi
movq %rbx, %rdi
callq 0x53e0
movq 0xe8(%rsp), %r15
movq 0xf0(%rsp), %r14
leaq 0x10(%rsp), %r12
pushq $0x20
popq %rbp
leaq 0x7cd8(%rip), %r13      # 0x12c7e
cmpq %r14, %r15
je 0xaff9
movq 0x30(%rsp), %rax
movl 0x178(%rax), %esi
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r12, %rdi
movl %ebp, %edx
callq 0x53d0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5310
movq %rax, %rdi
movq %r15, %rsi
callq 0x5310
movq %rax, %rdi
movq %r13, %rsi
callq 0x5340
movq %r12, %rdi
callq 0x56f8
addq $0x20, %r15
jmp 0xafa6
leaq 0x7c7e(%rip), %rsi      # 0x12c7e
movq %rbx, %rdi
callq 0x5340
movq 0x30(%rsp), %r14
movl 0x170(%r14), %esi
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
movq %rax, (%rdi)
pushq $0x20
popq %rdx
callq 0x53d0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x5310
leaq 0x7c38(%rip), %rsi      # 0x12c75
movq %rax, %rdi
callq 0x5340
leaq 0x10(%rsp), %rdi
callq 0x56f8
leaq 0x7c29(%rip), %rax      # 0x12c7f
leaq 0x7c08(%rip), %rsi      # 0x12c65
cmpb $0x0, 0x168(%r14)
cmovneq %rax, %rsi
leaq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x71e8
movb 0x169(%r14), %bpl
cmpb $0x1, %bpl
jne 0xb098
leaq 0x128(%r14), %rsi
leaq 0x60(%rsp), %rdi
callq 0x5490
jmp 0xb0ae
leaq 0x7bc6(%rip), %rsi      # 0x12c65
leaq 0x60(%rsp), %rdi
leaq 0x3f(%rsp), %rdx
callq 0x71e8
leaq 0x108(%r14), %rdx
leaq 0xe8(%r14), %rcx
andl $0x0, (%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x10(%rsp), %r8
leaq 0x60(%rsp), %r9
movq %r14, %rsi
callq 0xbe4e
leaq 0x60(%rsp), %rdi
callq 0x56f8
testb %bpl, %bpl
movq %rbx, 0x80(%rsp)
leaq 0x10(%rsp), %r15
movq %r15, %rdi
callq 0x56f8
movq 0x88(%rsp), %r13
movq 0x90(%rsp), %rcx
movq %rcx, 0xa8(%rsp)
pushq $0xa
popq %rbp
pushq $0x20
popq %r12
cmpq 0xa8(%rsp), %r13
je 0xb2f5
movq %r14, %rbx
movl 0x184(%r14), %r14d
imull (%r13), %r14d
leaq 0x28(%r13), %rsi
movl 0x17c(%rbx), %eax
addl 0x180(%rbx), %eax
movl 0x16c(%rbx), %edx
addl 0x188(%rbx), %eax
subl %eax, %edx
leaq 0x60(%rsp), %rdi
xorl %ecx, %ecx
callq 0x96c3
movq %r13, 0xb0(%rsp)
leaq 0x8(%r13), %rsi
movl 0x16c(%rbx), %edx
movl 0x180(%rbx), %eax
addl %r14d, %eax
subl %eax, %edx
leaq 0x40(%rsp), %rdi
xorl %ecx, %ecx
callq 0x96c3
movq 0x60(%rsp), %r13
xorl %eax, %eax
movq 0x80(%rsp), %rbx
cmpq 0x68(%rsp), %r13
je 0xb201
cmpq 0x60(%rsp), %r13
je 0xb1b2
movq %rbx, %rdi
movl %ebp, %esi
callq 0x53e0
movq 0x30(%rsp), %rax
movl 0x17c(%rax), %esi
addl %r14d, %esi
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r15, %rdi
movl %r12d, %edx
callq 0x53d0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5310
movq %rax, %rdi
movq %r13, %rsi
callq 0x5310
movq %r15, %rdi
callq 0x56f8
movq %r13, %rdi
callq 0x9698
addq $0x20, %r13
jmp 0xb19a
movq 0x40(%rsp), %r13
movq 0x30(%rsp), %rdx
movl 0x17c(%rdx), %ecx
movl 0x180(%rdx), %esi
addq %rcx, %rax
movl 0x188(%rdx), %ecx
addq %rax, %rcx
cmpq %rsi, %rcx
ja 0xb269
cmpq 0x48(%rsp), %r13
je 0xb269
subq %rax, %rsi
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r15, %rdi
movl %r12d, %edx
callq 0x53d0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5310
movq %rax, %rdi
movq %r13, %rsi
callq 0x5310
movq %rax, %rdi
movl %ebp, %esi
callq 0x53e0
jmp 0xb2bd
movq %rbx, %rdi
movl %ebp, %esi
callq 0x53e0
cmpq 0x48(%rsp), %r13
je 0xb2cb
movq 0x30(%rsp), %rax
movl 0x180(%rax), %esi
addl %r14d, %esi
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r15, %rdi
movl %r12d, %edx
callq 0x53d0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5310
movq %rax, %rdi
movq %r13, %rsi
callq 0x5310
movq %rax, %rdi
movl %ebp, %esi
callq 0x53e0
movq %r15, %rdi
callq 0x56f8
addq $0x20, %r13
jmp 0xb273
leaq 0x40(%rsp), %rdi
callq 0xad04
leaq 0x60(%rsp), %rdi
callq 0xad04
movq 0xb0(%rsp), %r13
addq $0x48, %r13
movq 0x30(%rsp), %r14
jmp 0xb11b
leaq 0x88(%rsp), %rdi
callq 0xbff8
movl 0x5c(%rsp), %eax
testb %al, 0xf(%rsp)
movq 0x80(%rsp), %rbx
je 0xb41f
cmpb $0x1, 0x18c(%r14)
jne 0xb41f
leaq 0x7953(%rip), %rsi      # 0x12c80
leaq 0x88(%rsp), %rdi
leaq 0x3e(%rsp), %rdx
callq 0x71e8
leaq 0x148(%r14), %rdx
leaq 0x60(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0xc038
leaq 0x7923(%rip), %rdx      # 0x12c82
leaq 0x10(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xc019
movl 0x16c(%r14), %edx
subl 0x17c(%r14), %edx
leaq 0x40(%rsp), %rdi
leaq 0x10(%rsp), %rsi
xorl %ecx, %ecx
callq 0x96c3
leaq 0x10(%rsp), %r15
movq %r15, %rdi
callq 0x56f8
leaq 0x60(%rsp), %rdi
callq 0x56f8
leaq 0x88(%rsp), %rdi
callq 0x56f8
movq 0x40(%rsp), %r12
movq 0x48(%rsp), %r14
pushq $0x20
popq %rbp
pushq $0xa
popq %r13
cmpq %r14, %r12
je 0xb415
movq 0x30(%rsp), %rax
movl 0x17c(%rax), %esi
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r15, %rdi
movl %ebp, %edx
callq 0x53d0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5310
movq %rax, %rdi
movq %r12, %rsi
callq 0x5310
movq %rax, %rdi
movl %r13d, %esi
callq 0x53e0
movq %r15, %rdi
callq 0x56f8
addq $0x20, %r12
jmp 0xb3c2
leaq 0x40(%rsp), %rdi
callq 0xad04
leaq 0x7858(%rip), %rsi      # 0x12c7e
movq %rbx, %rdi
callq 0x5340
movq 0xd0(%rsp), %r15
movq 0xd8(%rsp), %r14
leaq 0x10(%rsp), %r12
pushq $0x20
popq %rbp
leaq 0x7831(%rip), %r13      # 0x12c7e
cmpq %r14, %r15
je 0xb4a0
movq 0x30(%rsp), %rax
movl 0x178(%rax), %esi
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r12, %rdi
movl %ebp, %edx
callq 0x53d0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5310
movq %rax, %rdi
movq %r15, %rsi
callq 0x5310
movq %rax, %rdi
movq %r13, %rsi
callq 0x5340
movq %r12, %rdi
callq 0x56f8
addq $0x20, %r15
jmp 0xb44d
leaq 0xb8(%rsp), %rdi
callq 0xad04
leaq 0x100(%rsp), %rdi
callq 0x50b0
leaq 0xd0(%rsp), %rdi
callq 0xad04
leaq 0xe8(%rsp), %rdi
callq 0xad04
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x56f8
jmp 0xb4f8
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x56f8
jmp 0xb507
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
jmp 0xb5bf
jmp 0xb5a2
jmp 0xb5b7
jmp 0xb5b7
jmp 0xb5a2
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x56f8
testb %bpl, %bpl
jmp 0xb5ba
jmp 0xb5a2
jmp 0xb5a2
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x56f8
jmp 0xb60c
jmp 0xb56a
jmp 0xb56a
movq %rax, %rbx
jmp 0xb619
movq %rax, %rbx
jmp 0xb626
jmp 0xb5b7
jmp 0xb5b7
jmp 0xb5a2
movq %rax, %rbx
jmp 0xb60c
movq %rax, %rbx
jmp 0xb588
jmp 0xb5ca
jmp 0xb5ca
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x56f8
leaq 0x40(%rsp), %rdi
callq 0xad04
jmp 0xb5ff
jmp 0xb5a2
movq %rax, %rbx
jmp 0xb5f2
movq %rax, %rbx
jmp 0xb5e8
jmp 0xb5a2
movq %rax, %rbx
jmp 0xb5ff
jmp 0xb5d1
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0xb607
jmp 0xb5b7
jmp 0xb5b7
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x56f8
jmp 0xb5ff
jmp 0xb5ca
jmp 0xb5ca
movq %rax, %rbx
jmp 0xb5de
jmp 0xb5d1
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x56f8
leaq 0x40(%rsp), %rdi
callq 0xad04
leaq 0x60(%rsp), %rdi
callq 0xad04
leaq 0x88(%rsp), %rdi
callq 0xbff8
leaq 0xb8(%rsp), %rdi
callq 0xad04
leaq 0x100(%rsp), %rdi
callq 0x50b0
leaq 0xd0(%rsp), %rdi
callq 0xad04
leaq 0xe8(%rsp), %rdi
callq 0xad04
movq %rbx, %rdi
callq 0x5620
nop