// File: ef-gy[P]libefgy/include/ef.gy/cli.h
// Function: efgy::cli::processor<efgy::cli::option, efgy::cli::hint>::usage(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void usage(std::ostream &out, const std::string &name = "<command>") {
    out << "Usage: " << name << " [options...] [--] [input...]\n"
        << "\n"
        << "Where [options...] is any of the following:\n";

    for (const auto &opt : opts) {
      out << "  " << opt->regex;
      if (opt->regex.size() < 25) {
        for (std::size_t i = opt->regex.size() + 1; i < 26; i++) {
          out << " ";
        }
      } else {
        out << "\n                           ";
      }
      out << opt->description << "\n";
    }

    for (const auto &hn : hints) {
      out << "\n" << hn->title << ":\n" << hn->usage();
    }
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
leaq 0xab67(%rip), %rsi      # 0x34be4
callq 0x5350
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x5320
movq %rax, %rdi
leaq 0xab54(%rip), %rsi      # 0x34bec
callq 0x5350
movq %rax, %rdi
leaq 0xa29a(%rip), %rsi      # 0x34341
callq 0x5350
movq %rax, %rdi
leaq 0xab55(%rip), %rsi      # 0x34c0b
callq 0x5350
movq -0x98(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2a2b0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2a2e0
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x28510
testb $0x1, %al
jne 0x2a0fa
jmp 0x2a1b4
leaq -0x28(%rbp), %rdi
callq 0x2a310
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
leaq 0xab40(%rip), %rsi      # 0x34c52
callq 0x5350
movq %rax, %rdi
movq -0x38(%rbp), %rax
movq (%rax), %rsi
callq 0x5320
movq -0x38(%rbp), %rax
movq (%rax), %rdi
callq 0x5290
cmpq $0x19, %rax
jae 0x2a173
movq -0x38(%rbp), %rax
movq (%rax), %rdi
callq 0x5290
addq $0x1, %rax
movq %rax, -0x40(%rbp)
cmpq $0x1a, -0x40(%rbp)
jae 0x2a171
movq -0x10(%rbp), %rdi
leaq 0xaaf5(%rip), %rsi      # 0x34c53
callq 0x5350
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x2a14c
jmp 0x2a183
movq -0x10(%rbp), %rdi
leaq 0xaaba(%rip), %rsi      # 0x34c38
callq 0x5350
movq -0x10(%rbp), %rdi
movq -0x38(%rbp), %rax
movq (%rax), %rsi
addq $0x40, %rsi
callq 0x5320
movq %rax, %rdi
leaq 0xa1a0(%rip), %rsi      # 0x34341
callq 0x5350
leaq -0x28(%rbp), %rdi
callq 0x2a330
jmp 0x2a0e4
movq -0x98(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0x2a360
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
callq 0x2a390
movq %rax, -0x58(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x2a3c0
testb $0x1, %al
jne 0x2a1f3
jmp 0x2a299
leaq -0x50(%rbp), %rdi
callq 0x2a3f0
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
leaq 0xa136(%rip), %rsi      # 0x34341
callq 0x5350
movq %rax, %rdi
movq -0x60(%rbp), %rax
movq (%rax), %rsi
callq 0x5320
movq %rax, %rdi
leaq 0xaa0c(%rip), %rsi      # 0x34c35
callq 0x5350
movq %rax, -0xa8(%rbp)
movq -0x60(%rbp), %rax
movq (%rax), %rsi
addq $0x20, %rsi
leaq -0x80(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x2a420
movq -0xa8(%rbp), %rdi
movq -0xa0(%rbp), %rsi
callq 0x5320
jmp 0x2a265
leaq -0x80(%rbp), %rdi
callq 0x5220
leaq -0x50(%rbp), %rdi
callq 0x2a470
jmp 0x2a1dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x5220
jmp 0x2a2a2
addq $0xb0, %rsp
popq %rbp
retq
movq -0x88(%rbp), %rdi
callq 0x55a0
nop