// File: meirdev[P]HexViewer/./CLI11.hpp
// Function: CLI::Option::run_callback()
void run_callback() {

        callback_run_ = true;

        // Run the validators (can change the string)
        if(!validators_.empty()) {
            for(std::string &result : results_)
                for(const std::function<std::string(std::string &)> &vali : validators_) {
                    std::string err_msg = vali(result);
                    if(!err_msg.empty())
                        throw ValidationError(get_name(), err_msg);
                }
        }

        bool local_result;

        // Num items expected or length of vector, always at least 1
        // Only valid for a trimming policy
        int trim_size =
            std::min<int>(std::max<int>(std::abs(get_items_expected()), 1), static_cast<int>(results_.size()));

        // Operation depends on the policy setting
        if(multi_option_policy_ == MultiOptionPolicy::TakeLast) {
            // Allow multi-option sizes (including 0)
            results_t partial_result{results_.end() - trim_size, results_.end()};
            local_result = !callback_(partial_result);

        } else if(multi_option_policy_ == MultiOptionPolicy::TakeFirst) {
            results_t partial_result{results_.begin(), results_.begin() + trim_size};
            local_result = !callback_(partial_result);

        } else if(multi_option_policy_ == MultiOptionPolicy::Join) {
            results_t partial_result = {detail::join(results_, "\n")};
            local_result = !callback_(partial_result);

        } else {
            // Exact number required
            if(get_items_expected() > 0) {
                if(results_.size() != static_cast<size_t>(get_items_expected()))
                    throw ArgumentMismatch(get_name(), get_items_expected(), results_.size());
                // Variable length list
            } else if(get_items_expected() < 0) {
                // Require that this be a multiple of expected size and at least as many as expected
                if(results_.size() < static_cast<size_t>(-get_items_expected()) ||
                   results_.size() % static_cast<size_t>(std::abs(get_type_size())) != 0)
                    throw ArgumentMismatch(get_name(), get_items_expected(), results_.size());
            }
            local_result = !callback_(results_);
        }

        if(local_result)
            throw ConversionError(get_name(), results_);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3c0, %rsp            # imm = 0x3C0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
movb $0x1, 0x1c0(%rdi)
addq $0x108, %rdi            # imm = 0x108
callq 0x2ae00
testb $0x1, %al
jne 0x29f7b
movq -0x2b0(%rbp), %rax
addq $0x1a8, %rax            # imm = 0x1A8
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x11de0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x11e10
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x11e40
testb $0x1, %al
jne 0x29dd6
jmp 0x29f79
leaq -0x18(%rbp), %rdi
callq 0x11e80
movq %rax, %rcx
movq -0x2b0(%rbp), %rax
movq %rcx, -0x28(%rbp)
addq $0x108, %rax            # imm = 0x108
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x2ae40
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x2ae70
movq %rax, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2aea0
testb $0x1, %al
jne 0x29e27
jmp 0x29f69
leaq -0x38(%rbp), %rdi
callq 0x2aee0
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rsi
movq -0x28(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x2af00
leaq -0x68(%rbp), %rdi
callq 0x66e0
testb $0x1, %al
jne 0x29f52
movb $0x1, -0xb9(%rbp)
movl $0x38, %edi
callq 0x6200
movq -0x2b0(%rbp), %rsi
movq %rax, -0x2b8(%rbp)
leaq -0x88(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x29e87
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x61d0
jmp 0x29e99
movq -0x2b8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0xb8(%rbp), %rdx
callq 0x2af60
jmp 0x29eb5
movq -0x2b8(%rbp), %rdi
movb $0x0, -0xb9(%rbp)
leaq 0x338ee(%rip), %rsi     # 0x5d7b8
leaq 0x113f(%rip), %rdx      # 0x2b010
callq 0x6700
jmp 0x2aa54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x29f2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x29f21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x6280
leaq -0x88(%rbp), %rdi
callq 0x6280
testb $0x1, -0xb9(%rbp)
jne 0x29f38
jmp 0x29f44
movq -0x2b8(%rbp), %rdi
callq 0x6310
leaq -0x68(%rbp), %rdi
callq 0x6280
jmp 0x2aa48
leaq -0x68(%rbp), %rdi
callq 0x6280
leaq -0x38(%rbp), %rdi
callq 0x2b030
jmp 0x29e11
jmp 0x29f6b
leaq -0x18(%rbp), %rdi
callq 0x11f20
jmp 0x29dc0
jmp 0x29f7b
movq -0x2b0(%rbp), %rdi
callq 0x8f80
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
movl %eax, -0xc4(%rbp)
movl $0x1, -0xc8(%rbp)
leaq -0xc4(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x2b090
movq -0x2b0(%rbp), %rdi
movq %rax, -0x2c0(%rbp)
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x116d0
movq -0x2c0(%rbp), %rdi
movl %eax, -0xcc(%rbp)
leaq -0xcc(%rbp), %rsi
callq 0x2b050
movq %rax, %rcx
movq -0x2b0(%rbp), %rax
movl (%rcx), %ecx
movl %ecx, -0xc0(%rbp)
cmpl $0x1, 0x24(%rax)
jne 0x2a167
movq -0x2b0(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
movq %rdi, -0x2d0(%rbp)
callq 0x11e10
movq %rax, -0xf8(%rbp)
movslq -0xc0(%rbp), %rsi
leaq -0xf8(%rbp), %rdi
callq 0x16740
movq -0x2d0(%rbp), %rdi
movq %rax, -0xf0(%rbp)
callq 0x11e10
movq %rax, -0x100(%rbp)
leaq -0x101(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x2b0d0
movq -0x2c8(%rbp), %rcx
movq -0xf0(%rbp), %rsi
movq -0x100(%rbp), %rdx
leaq -0xe8(%rbp), %rdi
callq 0x2b0f0
jmp 0x2a084
leaq -0x101(%rbp), %rdi
callq 0x11790
movq -0x2b0(%rbp), %rax
addq $0x188, %rax            # imm = 0x188
movq %rax, -0x2d8(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x115e0
jmp 0x2a0b9
movq -0x2d8(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x2b170
movb %al, -0x2d9(%rbp)
jmp 0x2a0d4
movb -0x2d9(%rbp), %al
xorb $-0x1, %al
andb $0x1, %al
movb %al, -0xba(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x8710
leaq -0xe8(%rbp), %rdi
callq 0x8710
jmp 0x2a938
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x101(%rbp), %rdi
callq 0x11790
jmp 0x2aa48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2a156
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x8710
leaq -0xe8(%rbp), %rdi
callq 0x8710
jmp 0x2aa48
movq -0x2b0(%rbp), %rax
cmpl $0x2, 0x24(%rax)
jne 0x2a2df
movq -0x2b0(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
movq %rdi, -0x2f0(%rbp)
callq 0x11de0
movq -0x2f0(%rbp), %rdi
movq %rax, -0x140(%rbp)
callq 0x11de0
movq %rax, -0x150(%rbp)
movslq -0xc0(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x2b1c0
movq %rax, -0x148(%rbp)
leaq -0x151(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x2b0d0
movq -0x2e8(%rbp), %rcx
movq -0x140(%rbp), %rsi
movq -0x148(%rbp), %rdx
leaq -0x138(%rbp), %rdi
callq 0x2b0f0
jmp 0x2a1fc
leaq -0x151(%rbp), %rdi
callq 0x11790
movq -0x2b0(%rbp), %rax
addq $0x188, %rax            # imm = 0x188
movq %rax, -0x2f8(%rbp)
leaq -0x170(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x115e0
jmp 0x2a231
movq -0x2f8(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x2b170
movb %al, -0x2f9(%rbp)
jmp 0x2a24c
movb -0x2f9(%rbp), %al
xorb $-0x1, %al
andb $0x1, %al
movb %al, -0xba(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x8710
leaq -0x138(%rbp), %rdi
callq 0x8710
jmp 0x2a936
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x151(%rbp), %rdi
callq 0x11790
jmp 0x2aa48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2a2ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x8710
leaq -0x138(%rbp), %rdi
callq 0x8710
jmp 0x2aa48
movq -0x2b0(%rbp), %rax
cmpl $0x3, 0x24(%rax)
jne 0x2a5e6
movq -0x2b0(%rbp), %rax
movb $0x1, -0x1e2(%rbp)
leaq -0x1b8(%rbp), %rcx
movq %rcx, -0x1c0(%rbp)
addq $0x1a8, %rax            # imm = 0x1A8
movq %rax, -0x310(%rbp)
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x6770
movq -0x308(%rbp), %rdx
leaq 0x17647(%rip), %rsi     # 0x41981
leaq -0x1e0(%rbp), %rdi
callq 0x8eb0
jmp 0x2a348
movq -0x310(%rbp), %rsi
leaq -0x1b8(%rbp), %rdi
leaq -0x1e0(%rbp), %rdx
callq 0x15ef0
jmp 0x2a364
movb $0x0, -0x1e2(%rbp)
leaq -0x1b8(%rbp), %rax
movq %rax, -0x198(%rbp)
movq $0x1, -0x190(%rbp)
leaq -0x1e3(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0x2b0d0
movq -0x318(%rbp), %rcx
movq -0x198(%rbp), %rsi
movq -0x190(%rbp), %rdx
leaq -0x188(%rbp), %rdi
callq 0x2b200
jmp 0x2a3ba
leaq -0x1e3(%rbp), %rdi
callq 0x11790
leaq -0x1b8(%rbp), %rax
movq %rax, -0x328(%rbp)
addq $0x20, %rax
movq %rax, -0x320(%rbp)
movq -0x320(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x330(%rbp)
callq 0x6280
movq -0x328(%rbp), %rcx
movq -0x330(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x320(%rbp)
jne 0x2a3df
leaq -0x1e0(%rbp), %rdi
callq 0x6280
leaq -0x1e1(%rbp), %rdi
callq 0x6460
movq -0x2b0(%rbp), %rax
addq $0x188, %rax            # imm = 0x188
movq %rax, -0x338(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x115e0
jmp 0x2a451
movq -0x338(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x2b170
movb %al, -0x339(%rbp)
jmp 0x2a46c
movb -0x339(%rbp), %al
xorb $-0x1, %al
andb $0x1, %al
movb %al, -0xba(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x8710
leaq -0x188(%rbp), %rdi
callq 0x8710
jmp 0x2a934
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2a53a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2a52e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x1e3(%rbp), %rdi
callq 0x11790
leaq -0x1b8(%rbp), %rax
movq %rax, -0x350(%rbp)
addq $0x20, %rax
movq %rax, -0x348(%rbp)
movq -0x348(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x358(%rbp)
callq 0x6280
movq -0x350(%rbp), %rcx
movq -0x358(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x348(%rbp)
jne 0x2a4fb
jmp 0x2a52e
leaq -0x1e0(%rbp), %rdi
callq 0x6280
leaq -0x1e1(%rbp), %rdi
callq 0x6460
testb $0x1, -0x1e2(%rbp)
jne 0x2a551
jmp 0x2a59e
movq -0x1c0(%rbp), %rax
leaq -0x1b8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x360(%rbp)
je 0x2a59c
movq -0x360(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x368(%rbp)
callq 0x6280
movq -0x368(%rbp), %rax
leaq -0x1b8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x360(%rbp)
jne 0x2a56b
jmp 0x2a59e
jmp 0x2aa48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2a5d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x8710
leaq -0x188(%rbp), %rdi
callq 0x8710
jmp 0x2aa48
movq -0x2b0(%rbp), %rdi
callq 0x8f80
cmpl $0x0, %eax
jle 0x2a723
movq -0x2b0(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x116d0
movq -0x2b0(%rbp), %rdi
movq %rax, -0x370(%rbp)
callq 0x8f80
movl %eax, %ecx
movq -0x370(%rbp), %rax
movslq %ecx, %rcx
cmpq %rcx, %rax
je 0x2a71e
movb $0x1, -0x221(%rbp)
movl $0x38, %edi
callq 0x6200
movq -0x2b0(%rbp), %rsi
movq %rax, -0x378(%rbp)
leaq -0x220(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x2a667
movq -0x2b0(%rbp), %rdi
callq 0x8f80
movq -0x2b0(%rbp), %rdi
movl %eax, -0x37c(%rbp)
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x116d0
movq -0x378(%rbp), %rdi
movl -0x37c(%rbp), %edx
movq %rax, %rcx
leaq -0x220(%rbp), %rsi
callq 0x2b280
jmp 0x2a6aa
movq -0x378(%rbp), %rdi
movb $0x0, -0x221(%rbp)
leaq 0x330a1(%rip), %rsi     # 0x5d760
leaq -0x2e76(%rip), %rdx     # 0x27850
callq 0x6700
jmp 0x2aa54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2a702
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x6280
testb $0x1, -0x221(%rbp)
jne 0x2a70d
jmp 0x2a719
movq -0x378(%rbp), %rdi
callq 0x6310
jmp 0x2aa48
jmp 0x2a8a7
movq -0x2b0(%rbp), %rdi
callq 0x8f80
cmpl $0x0, %eax
jge 0x2a8a5
movq -0x2b0(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x116d0
movq -0x2b0(%rbp), %rdi
movq %rax, -0x388(%rbp)
callq 0x8f80
movl %eax, %edx
movq -0x388(%rbp), %rax
xorl %ecx, %ecx
subl %edx, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jb 0x2a7bb
movq -0x2b0(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x116d0
movq -0x2b0(%rbp), %rdi
movq %rax, -0x390(%rbp)
callq 0x8810
movl %eax, %ecx
movq -0x390(%rbp), %rax
movl %ecx, %edx
negl %edx
cmovnsl %edx, %ecx
movslq %ecx, %rcx
xorl %edx, %edx
divq %rcx
cmpq $0x0, %rdx
je 0x2a8a3
movb $0x1, -0x249(%rbp)
movl $0x38, %edi
callq 0x6200
movq -0x2b0(%rbp), %rsi
movq %rax, -0x398(%rbp)
leaq -0x248(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x2a7ec
movq -0x2b0(%rbp), %rdi
callq 0x8f80
movq -0x2b0(%rbp), %rdi
movl %eax, -0x39c(%rbp)
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x116d0
movq -0x398(%rbp), %rdi
movl -0x39c(%rbp), %edx
movq %rax, %rcx
leaq -0x248(%rbp), %rsi
callq 0x2b280
jmp 0x2a82f
movq -0x398(%rbp), %rdi
movb $0x0, -0x249(%rbp)
leaq 0x32f1c(%rip), %rsi     # 0x5d760
leaq -0x2ffb(%rip), %rdx     # 0x27850
callq 0x6700
jmp 0x2aa54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2a887
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x6280
testb $0x1, -0x249(%rbp)
jne 0x2a892
jmp 0x2a89e
movq -0x398(%rbp), %rdi
callq 0x6310
jmp 0x2aa48
jmp 0x2a8a5
jmp 0x2a8a7
movq -0x2b0(%rbp), %rsi
movq %rsi, %rax
addq $0x188, %rax            # imm = 0x188
movq %rax, -0x3b0(%rbp)
addq $0x1a8, %rsi            # imm = 0x1A8
leaq -0x268(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x115e0
movq -0x3b0(%rbp), %rdi
movq -0x3a8(%rbp), %rsi
callq 0x2b170
movb %al, -0x39d(%rbp)
jmp 0x2a8f3
movb -0x39d(%rbp), %al
xorb $-0x1, %al
andb $0x1, %al
movb %al, -0xba(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x8710
jmp 0x2a934
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x8710
jmp 0x2aa48
jmp 0x2a936
jmp 0x2a938
testb $0x1, -0xba(%rbp)
je 0x2aa3f
movb $0x1, -0x2a1(%rbp)
movl $0x38, %edi
callq 0x6200
movq -0x2b0(%rbp), %rsi
movq %rax, -0x3b8(%rbp)
leaq -0x288(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x14b70
jmp 0x2a976
movq -0x2b0(%rbp), %rsi
addq $0x1a8, %rsi            # imm = 0x1A8
leaq -0x2a0(%rbp), %rdi
callq 0x115e0
jmp 0x2a992
movq -0x3b8(%rbp), %rdi
leaq -0x288(%rbp), %rsi
leaq -0x2a0(%rbp), %rdx
callq 0x2b8c0
jmp 0x2a9ae
movq -0x3b8(%rbp), %rdi
movb $0x0, -0x2a1(%rbp)
leaq 0x32e0d(%rip), %rsi     # 0x5d7d0
leaq 0x10b6(%rip), %rdx      # 0x2ba80
callq 0x6700
jmp 0x2aa54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2aa26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x2aa1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x8710
leaq -0x288(%rbp), %rdi
callq 0x6280
testb $0x1, -0x2a1(%rbp)
jne 0x2aa31
jmp 0x2aa3d
movq -0x3b8(%rbp), %rdi
callq 0x6310
jmp 0x2aa48
addq $0x3c0, %rsp            # imm = 0x3C0
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x6750
nopw %cs:(%rax,%rax)
nop