// File: meirdev[P]HexViewer/./CLI11.hpp
// Function: CLI::Formatter::make_subcommands[abi:cxx11](CLI::App const*, CLI::AppFormatMode) const
inline std::string Formatter::make_subcommands(const App *app, AppFormatMode mode) const {
    std::stringstream out;

    std::vector<const App *> subcommands = app->get_subcommands({});

    // Make a list in definition order of the groups seen
    std::vector<std::string> subcmd_groups_seen;
    for(const App *com : subcommands) {
        std::string group_key = com->get_group();
        if(!group_key.empty() &&
           std::find_if(subcmd_groups_seen.begin(), subcmd_groups_seen.end(), [&group_key](std::string a) {
               return detail::to_lower(a) == detail::to_lower(group_key);
           }) == subcmd_groups_seen.end())
            subcmd_groups_seen.push_back(group_key);
    }

    // For each group, filter out and print subcommands
    for(const std::string &group : subcmd_groups_seen) {
        out << "\n" << group << ":\n";
        std::vector<const App *> subcommands_group = app->get_subcommands(
            [&group](const App *sub_app) { return detail::to_lower(sub_app->get_group()) == detail::to_lower(group); });
        for(const App *new_com : subcommands_group) {
            if(mode != AppFormatMode::All) {
                out << make_subcommand(new_com);
            } else {
                out << new_com->help(new_com->get_name(), AppFormatMode::Sub);
                out << "\n";
            }
        }
    }

    return out.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3d0, %rsp            # imm = 0x3D0
movq %rdi, -0x378(%rbp)
movq %rdi, %rax
movq %rax, -0x370(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x368(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x62e0
movq -0x18(%rbp), %rax
movq %rax, -0x360(%rbp)
leaq -0x1e0(%rbp), %rdi
movq %rdi, -0x358(%rbp)
callq 0x93e0
movq -0x360(%rbp), %rsi
movq -0x358(%rbp), %rdx
leaq -0x1c0(%rbp), %rdi
callq 0x9170
jmp 0xaefc
leaq -0x1e0(%rbp), %rdi
callq 0x9420
leaq -0x208(%rbp), %rdi
callq 0x15e10
leaq -0x1c0(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rdi
callq 0x9440
movq %rax, -0x218(%rbp)
movq -0x210(%rbp), %rdi
callq 0x9470
movq %rax, -0x220(%rbp)
leaq -0x218(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x94a0
testb $0x1, %al
jne 0xaf64
jmp 0xb0f8
leaq -0x218(%rbp), %rdi
callq 0x94e0
movq (%rax), %rax
movq %rax, -0x228(%rbp)
movq -0x228(%rbp), %rdi
callq 0x32030
movq %rax, -0x380(%rbp)
jmp 0xaf8f
movq -0x380(%rbp), %rsi
leaq -0x248(%rbp), %rdi
callq 0x61d0
jmp 0xafa4
leaq -0x248(%rbp), %rdi
callq 0x66e0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x381(%rbp)
jne 0xb05b
leaq -0x208(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0x11de0
movq -0x398(%rbp), %rdi
movq %rax, -0x258(%rbp)
callq 0x11e10
movq %rax, -0x260(%rbp)
leaq -0x248(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x258(%rbp), %rdi
movq -0x260(%rbp), %rsi
movq -0x268(%rbp), %rdx
callq 0x32050
movq %rax, -0x390(%rbp)
jmp 0xb021
movq -0x390(%rbp), %rax
movq %rax, -0x250(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x11e10
movq %rax, -0x270(%rbp)
leaq -0x250(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x30af0
movb %al, -0x381(%rbp)
movb -0x381(%rbp), %al
testb $0x1, %al
jne 0xb067
jmp 0xb0db
leaq -0x208(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x173f0
jmp 0xb07c
jmp 0xb0db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x9420
jmp 0xb492
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0xb47a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x6280
jmp 0xb47a
leaq -0x248(%rbp), %rdi
callq 0x6280
leaq -0x218(%rbp), %rdi
callq 0x95d0
jmp 0xaf48
leaq -0x208(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0x278(%rbp), %rdi
callq 0x11de0
movq %rax, -0x280(%rbp)
movq -0x278(%rbp), %rdi
callq 0x11e10
movq %rax, -0x288(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x11e40
testb $0x1, %al
jne 0xb148
jmp 0xb431
leaq -0x280(%rbp), %rdi
callq 0x11e80
movq %rax, -0x290(%rbp)
leaq -0x198(%rbp), %rdi
leaq 0x36818(%rip), %rsi     # 0x41981
callq 0x63d0
movq %rax, -0x3a0(%rbp)
jmp 0xb177
movq -0x3a0(%rbp), %rdi
movq -0x290(%rbp), %rsi
callq 0x6390
movq %rax, -0x3a8(%rbp)
jmp 0xb193
movq -0x3a8(%rbp), %rdi
leaq 0x360cb(%rip), %rsi     # 0x4126c
callq 0x63d0
jmp 0xb1a8
movq -0x18(%rbp), %rax
movq %rax, -0x3b8(%rbp)
movq -0x290(%rbp), %rax
movq %rax, -0x2d0(%rbp)
leaq -0x2c8(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
leaq -0x2d0(%rbp), %rsi
callq 0x320b0
movq -0x3b8(%rbp), %rsi
movq -0x3b0(%rbp), %rdx
leaq -0x2a8(%rbp), %rdi
callq 0x9170
jmp 0xb1f7
leaq -0x2c8(%rbp), %rdi
callq 0x9420
leaq -0x2a8(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq -0x2d8(%rbp), %rdi
callq 0x9440
movq %rax, -0x2e0(%rbp)
movq -0x2d8(%rbp), %rdi
callq 0x9470
movq %rax, -0x2e8(%rbp)
leaq -0x2e0(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x94a0
testb $0x1, %al
jne 0xb253
jmp 0xb406
leaq -0x2e0(%rbp), %rdi
callq 0x94e0
movq (%rax), %rax
movq %rax, -0x2f0(%rbp)
cmpl $0x1, -0x1c(%rbp)
je 0xb324
movq -0x368(%rbp), %rsi
leaq -0x198(%rbp), %rax
movq %rax, -0x3c0(%rbp)
movq -0x2f0(%rbp), %rdx
movq (%rsi), %rax
movq 0x30(%rax), %rax
leaq -0x310(%rbp), %rdi
callq *%rax
jmp 0xb2a1
movq -0x3c0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x6390
jmp 0xb2b6
leaq -0x310(%rbp), %rdi
callq 0x6280
jmp 0xb3f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x9420
jmp 0xb47a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0xb423
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x6280
jmp 0xb423
leaq -0x198(%rbp), %rax
movq %rax, -0x3d0(%rbp)
movq -0x2f0(%rbp), %rsi
movq %rsi, -0x3c8(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x95a0
jmp 0xb34e
movq -0x3c8(%rbp), %rsi
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rdx
movl $0x2, %ecx
callq 0x2ffb0
jmp 0xb36f
movq -0x3d0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x6390
jmp 0xb384
leaq -0x330(%rbp), %rdi
callq 0x6280
leaq -0x350(%rbp), %rdi
callq 0x6280
leaq -0x198(%rbp), %rdi
leaq 0x365d7(%rip), %rsi     # 0x41981
callq 0x63d0
jmp 0xb3b1
jmp 0xb3f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0xb3e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x6280
leaq -0x350(%rbp), %rdi
callq 0x6280
jmp 0xb423
jmp 0xb3f5
leaq -0x2e0(%rbp), %rdi
callq 0x95d0
jmp 0xb237
leaq -0x2a8(%rbp), %rdi
callq 0x95f0
leaq -0x280(%rbp), %rdi
callq 0x11f20
jmp 0xb12c
leaq -0x2a8(%rbp), %rdi
callq 0x95f0
jmp 0xb47a
movq -0x378(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x63c0
jmp 0xb446
leaq -0x208(%rbp), %rdi
callq 0x8710
leaq -0x1c0(%rbp), %rdi
callq 0x95f0
leaq -0x1a8(%rbp), %rdi
callq 0x6320
movq -0x370(%rbp), %rax
addq $0x3d0, %rsp            # imm = 0x3D0
popq %rbp
retq
leaq -0x208(%rbp), %rdi
callq 0x8710
leaq -0x1c0(%rbp), %rdi
callq 0x95f0
leaq -0x1a8(%rbp), %rdi
callq 0x6320
movq -0x1e8(%rbp), %rdi
callq 0x6750
nopw (%rax,%rax)