// File: meirdev[P]HexViewer/./CLI11.hpp
// Function: CLI::App::_process_requirements()
void _process_requirements() {
        for(const Option_p &opt : options_) {

            // Required or partially filled
            if(opt->get_required() || opt->count() != 0) {
                // Make sure enough -N arguments parsed (+N is already handled in parsing function)
                if(opt->get_items_expected() < 0 && opt->count() < static_cast<size_t>(-opt->get_items_expected()))
                    throw ArgumentMismatch::AtLeast(opt->get_name(), -opt->get_items_expected());

                // Required but empty
                if(opt->get_required() && opt->count() == 0)
                    throw RequiredError(opt->get_name());
            }
            // Requires
            for(const Option *opt_req : opt->needs_)
                if(opt->count() > 0 && opt_req->count() == 0)
                    throw RequiresError(opt->get_name(), opt_req->get_name());
            // Excludes
            for(const Option *opt_ex : opt->excludes_)
                if(opt->count() > 0 && opt_ex->count() != 0)
                    throw ExcludesError(opt->get_name(), opt_ex->get_name());
        }

        auto selected_subcommands = get_subcommands();
        if(require_subcommand_min_ > selected_subcommands.size())
            throw RequiredError::Subcommand(require_subcommand_min_);

        // Max error cannot occur, the extra subcommand will parse as an ExtrasError or a remaining item.

        for(App_p &sub : subcommands_) {
            if(sub->count() > 0)
                sub->_process_requirements();
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x190(%rbp)
addq $0x98, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x17b20
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x17b50
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x17b80
testb $0x1, %al
jne 0x29614
jmp 0x29b89
leaq -0x18(%rbp), %rdi
callq 0x17bc0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x268f0
testb $0x1, %al
jne 0x29651
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8830
cmpq $0x0, %rax
je 0x2983b
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8f80
cmpl $0x0, %eax
jge 0x29763
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8830
movq %rax, -0x198(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8f80
movl %eax, %edx
movq -0x198(%rbp), %rax
xorl %ecx, %ecx
subl %edx, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jae 0x29763
movb $0x1, -0x55(%rbp)
movl $0x38, %edi
callq 0x6200
movq %rax, -0x1a0(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rsi
leaq -0x48(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x296dd
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8f80
movq -0x1a0(%rbp), %rdi
movl %eax, %edx
negl %edx
leaq -0x48(%rbp), %rsi
callq 0x2e5a0
jmp 0x29704
movq -0x1a0(%rbp), %rdi
movb $0x0, -0x55(%rbp)
leaq 0x3404a(%rip), %rsi     # 0x5d760
leaq -0x1ecd(%rip), %rdx     # 0x27850
callq 0x6700
jmp 0x29d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2974a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x6280
testb $0x1, -0x55(%rbp)
jne 0x29752
jmp 0x2975e
movq -0x1a0(%rbp), %rdi
callq 0x6310
jmp 0x29d1e
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x268f0
testb $0x1, %al
jne 0x2977d
jmp 0x29839
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8830
cmpq $0x0, %rax
jne 0x29839
movb $0x1, -0x79(%rbp)
movl $0x38, %edi
callq 0x6200
movq %rax, -0x1a8(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rsi
leaq -0x78(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x297c8
movq -0x1a8(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x2e6e0
jmp 0x297da
movq -0x1a8(%rbp), %rdi
movb $0x0, -0x79(%rbp)
leaq 0x34174(%rip), %rsi     # 0x5d960
leaq 0x4f5d(%rip), %rdx      # 0x2e750
callq 0x6700
jmp 0x29d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29820
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x6280
testb $0x1, -0x79(%rbp)
jne 0x29828
jmp 0x29834
movq -0x1a8(%rbp), %rdi
callq 0x6310
jmp 0x29d1e
jmp 0x2983b
movq -0x28(%rbp), %rdi
callq 0x17be0
addq $0x120, %rax            # imm = 0x120
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rdi
callq 0x18260
movq %rax, -0x90(%rbp)
movq -0x88(%rbp), %rdi
callq 0x182e0
movq %rax, -0x98(%rbp)
leaq -0x90(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x17fd0
testb $0x1, %al
jne 0x29893
jmp 0x299da
leaq -0x90(%rbp), %rdi
callq 0x181c0
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8830
cmpq $0x0, %rax
jbe 0x299c7
movq -0xa0(%rbp), %rdi
callq 0x8830
cmpq $0x0, %rax
jne 0x299c7
movb $0x1, -0xe1(%rbp)
movl $0x38, %edi
callq 0x6200
movq %rax, -0x1b0(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rsi
leaq -0xc0(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x29910
movq -0xa0(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x29929
movq -0x1b0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x2e770
jmp 0x29945
movq -0x1b0(%rbp), %rdi
movb $0x0, -0xe1(%rbp)
leaq 0x3401e(%rip), %rsi     # 0x5d978
leaq 0x4ebf(%rip), %rdx      # 0x2e820
callq 0x6700
jmp 0x29d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x299ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2999f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x6280
leaq -0xc0(%rbp), %rdi
callq 0x6280
testb $0x1, -0xe1(%rbp)
jne 0x299b6
jmp 0x299c2
movq -0x1b0(%rbp), %rdi
callq 0x6310
jmp 0x29d1e
jmp 0x299c9
leaq -0x90(%rbp), %rdi
callq 0x18190
jmp 0x29877
movq -0x28(%rbp), %rdi
callq 0x17be0
addq $0x150, %rax            # imm = 0x150
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rdi
callq 0x18260
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
callq 0x182e0
movq %rax, -0x100(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x17fd0
testb $0x1, %al
jne 0x29a32
jmp 0x29b79
leaq -0xf8(%rbp), %rdi
callq 0x181c0
movq (%rax), %rax
movq %rax, -0x108(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8830
cmpq $0x0, %rax
jbe 0x29b66
movq -0x108(%rbp), %rdi
callq 0x8830
cmpq $0x0, %rax
je 0x29b66
movb $0x1, -0x149(%rbp)
movl $0x38, %edi
callq 0x6200
movq %rax, -0x1b8(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rsi
leaq -0x128(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x29aaf
movq -0x108(%rbp), %rsi
leaq -0x148(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x29ac8
movq -0x1b8(%rbp), %rdi
leaq -0x128(%rbp), %rsi
leaq -0x148(%rbp), %rdx
callq 0x2e840
jmp 0x29ae4
movq -0x1b8(%rbp), %rdi
movb $0x0, -0x149(%rbp)
leaq 0x33e97(%rip), %rsi     # 0x5d990
leaq 0x4df0(%rip), %rdx      # 0x2e8f0
callq 0x6700
jmp 0x29d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29b4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29b3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x6280
leaq -0x128(%rbp), %rdi
callq 0x6280
testb $0x1, -0x149(%rbp)
jne 0x29b55
jmp 0x29b61
movq -0x1b8(%rbp), %rdi
callq 0x6310
jmp 0x29d1e
jmp 0x29b68
leaq -0xf8(%rbp), %rdi
callq 0x18190
jmp 0x29a16
jmp 0x29b7b
leaq -0x18(%rbp), %rdi
callq 0x17d60
jmp 0x295fe
movq -0x190(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0x2e910
movq -0x190(%rbp), %rax
movq 0x188(%rax), %rax
movq %rax, -0x1c0(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x258c0
movq %rax, %rcx
movq -0x1c0(%rbp), %rax
cmpq %rcx, %rax
jbe 0x29c45
movl $0x38, %edi
callq 0x6200
movq %rax, %rdi
movq -0x190(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x1c8(%rbp)
movq 0x188(%rax), %rsi
callq 0x2e950
jmp 0x29bf8
movq -0x1c8(%rbp), %rdi
leaq 0x33d5a(%rip), %rsi     # 0x5d960
leaq 0x4b43(%rip), %rdx      # 0x2e750
callq 0x6700
jmp 0x29d27
movq -0x1c8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x6310
jmp 0x29d12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x29d12
movq -0x190(%rbp), %rax
addq $0x158, %rax            # imm = 0x158
movq %rax, -0x170(%rbp)
movq -0x170(%rbp), %rdi
callq 0x230a0
movq %rax, -0x178(%rbp)
movq -0x170(%rbp), %rdi
callq 0x230d0
movq %rax, -0x180(%rbp)
leaq -0x178(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x23100
testb $0x1, %al
jne 0x29c98
jmp 0x29cfd
leaq -0x178(%rbp), %rdi
callq 0x23140
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rdi
callq 0x23160
movq %rax, %rdi
callq 0x2eaf0
movq %rax, -0x1d0(%rbp)
jmp 0x29cc8
movq -0x1d0(%rbp), %rax
cmpq $0x0, %rax
jbe 0x29ced
movq -0x188(%rbp), %rdi
callq 0x23160
movq %rax, %rdi
callq 0x295c0
jmp 0x29ceb
jmp 0x29ced
jmp 0x29cef
leaq -0x178(%rbp), %rdi
callq 0x23180
jmp 0x29c7f
leaq -0x168(%rbp), %rdi
callq 0x152a0
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
leaq -0x168(%rbp), %rdi
callq 0x152a0
movq -0x50(%rbp), %rdi
callq 0x6750
nopw (%rax,%rax)