// File: /workspace/github_cpp_makefile_star2_O2/halfflat[P]tinyopt/include/tinyopt/tinyopt.h
// Function: to::maybe<to::saved_options> to::run<to::option [5]>(to::option const (&) [5], int&, char**, to::saved_options const&)
maybe<saved_options> run(const Options& options, int& argc, char** argv, const saved_options& restore = saved_options{}) {
    using std::begin;
    using std::end;
    std::vector<impl::counted_option> opts(begin(options), end(options));
    auto r_args = restore.as_arglist();

    saved_options coll1, coll2;
    if (coll1 << impl::run(opts, r_args.argc, r_args.argv) && coll2 << impl::run(opts, argc, argv)) {
        for (auto& o: opts) {
            if (o.is_mandatory && !o.count) throw missing_mandatory_option(o.longest_label());
        }
        return coll1 += coll2;
    }

    return nothing;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movq %r8, %r12
movq %rcx, %r14
movq %rdx, %r15
movq %rdi, %rbx
leaq 0x230(%rsi), %rdx
leaq 0x8(%rsp), %rdi
leaq 0xb8(%rsp), %rcx
callq 0x3d52
leaq 0xb8(%rsp), %rdi
movq %r12, %rsi
callq 0x3d84
andq $0x0, 0x50(%rsp)
xorps %xmm0, %xmm0
andq $0x0, 0x30(%rsp)
movaps %xmm0, 0x40(%rsp)
movaps %xmm0, 0x20(%rsp)
leaq 0xb8(%rsp), %rdx
movq 0x8(%rdx), %rcx
leaq 0x78(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x3e57
leaq 0x58(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3e1e
cmpb $0x1, 0x58(%rsp)
jne 0x2c37
leaq 0x98(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x3e57
leaq 0xe0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x3e1e
leaq 0xe0(%rsp), %rdi
movb (%rdi), %bpl
callq 0x336e
leaq 0x98(%rsp), %rdi
callq 0x336e
leaq 0x58(%rsp), %rdi
callq 0x336e
leaq 0x78(%rsp), %rdi
callq 0x336e
cmpb $0x1, %bpl
jne 0x2c4b
movq 0x8(%rsp), %r15
movq 0x10(%rsp), %rax
cmpq %rax, %r15
je 0x2c50
cmpb $0x1, 0x6b(%r15)
jne 0x2c31
cmpl $0x0, 0x70(%r15)
je 0x2ca8
addq $0x78, %r15
jmp 0x2c1e
leaq 0x58(%rsp), %rdi
callq 0x336e
leaq 0x78(%rsp), %rdi
callq 0x336e
movb $0x0, (%rbx)
jmp 0x2c6a
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x425c
movq %rbx, %rdi
movq %rax, %rsi
callq 0x4278
leaq 0x20(%rsp), %rdi
callq 0x2d76
leaq 0x40(%rsp), %rdi
callq 0x2d76
leaq 0xc8(%rsp), %rdi
callq 0x5992
leaq 0x8(%rsp), %rdi
callq 0x4280
movq %rbx, %rax
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
pushq $0x30
popq %rdi
callq 0x20b0
movq %rax, %r14
leaq 0x58(%rsp), %rdi
movq %r15, %rsi
callq 0x4160
movb $0x1, %bpl
leaq 0x58(%rsp), %rsi
movq %r14, %rdi
callq 0x41b0
xorl %ebp, %ebp
leaq 0x7017(%rip), %rsi      # 0x9cf0
leaq 0x155c(%rip), %rdx      # 0x423c
movq %r14, %rdi
callq 0x2210
jmp 0x2d1a
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x336e
jmp 0x2cff
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x336e
jmp 0x2d0e
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x336e
jmp 0x2d43
movq %rax, %rbx
jmp 0x2d43
movq %rax, %rbx
jmp 0x2d64
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x2090
testb %bpl, %bpl
jne 0x2d3b
jmp 0x2d43
movq %rax, %rbx
movq %r14, %rdi
callq 0x20f0
leaq 0x20(%rsp), %rdi
callq 0x2d76
leaq 0x40(%rsp), %rdi
callq 0x2d76
leaq 0xc8(%rsp), %rdi
callq 0x5992
leaq 0x8(%rsp), %rdi
callq 0x4280
movq %rbx, %rdi
callq 0x2220