// File: halfflat[P]tinyopt/include/tinyopt/tinyopt.h
// Function: to::operator>>(std::istream&, to::saved_options&)
std::istream& operator>>(std::istream& in, saved_options& s) {
        std::string w;
        bool have_word = false;
        bool quote = false; // true => within single quotes.
        bool escape = false; // true => previous character was backslash.
        while (in) {
            int c = in.get();
            if (c==EOF) break;

            if (quote) {
                if (c!='\'') w += c;
                else quote = false;
            }
            else {
                if (escape) {
                    w += c;
                    escape = false;
                }
                else if (c=='\\') {
                    escape = true;
                    have_word = true;
                }
                else if (c=='\'') {
                    quote = true;
                    have_word = true;
                }
                else if (c!=' ' && c!='\t' && c!='\n') {
                    w += c;
                    have_word = true;
                }
                else {
                    if (have_word) s.add(w);
                    have_word = false;
                    w = "";
                }
            }
        }

        if (have_word) s.add(w);
        return in;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x10b60
movb $0x0, -0x31(%rbp)
movb $0x0, -0x32(%rbp)
movb $0x0, -0x33(%rbp)
movq -0x8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x10a40
movb %al, -0x89(%rbp)
jmp 0x61793
movb -0x89(%rbp), %al
testb $0x1, %al
jne 0x617a2
jmp 0x618e5
movq -0x8(%rbp), %rdi
callq 0x10980
movl %eax, -0x90(%rbp)
jmp 0x617b3
movl -0x90(%rbp), %eax
movl %eax, -0x48(%rbp)
cmpl $-0x1, -0x48(%rbp)
jne 0x617d8
jmp 0x618e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x61969
testb $0x1, -0x32(%rbp)
je 0x617fe
cmpl $0x27, -0x48(%rbp)
je 0x617f5
movsbl -0x48(%rbp), %esi
leaq -0x30(%rbp), %rdi
callq 0x10490
jmp 0x617f3
jmp 0x617f9
movb $0x0, -0x32(%rbp)
jmp 0x618e0
testb $0x1, -0x33(%rbp)
je 0x6181c
movsbl -0x48(%rbp), %esi
leaq -0x30(%rbp), %rdi
callq 0x10490
jmp 0x61813
movb $0x0, -0x33(%rbp)
jmp 0x618de
cmpl $0x5c, -0x48(%rbp)
jne 0x6182f
movb $0x1, -0x33(%rbp)
movb $0x1, -0x31(%rbp)
jmp 0x618dc
cmpl $0x27, -0x48(%rbp)
jne 0x61842
movb $0x1, -0x32(%rbp)
movb $0x1, -0x31(%rbp)
jmp 0x618da
cmpl $0x20, -0x48(%rbp)
je 0x61869
cmpl $0x9, -0x48(%rbp)
je 0x61869
cmpl $0xa, -0x48(%rbp)
je 0x61869
movsbl -0x48(%rbp), %esi
leaq -0x30(%rbp), %rdi
callq 0x10490
jmp 0x61863
movb $0x1, -0x31(%rbp)
jmp 0x618d8
testb $0x1, -0x31(%rbp)
je 0x618c0
movq -0x10(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x102f0
jmp 0x61889
movq -0x98(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x61220
jmp 0x6189b
leaq -0x68(%rbp), %rdi
callq 0x10fc8
jmp 0x618c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x10fc8
jmp 0x61969
movb $0x0, -0x31(%rbp)
leaq 0x69a3c(%rip), %rsi     # 0xcb307
leaq -0x30(%rbp), %rdi
callq 0x10b40
jmp 0x618d6
jmp 0x618d8
jmp 0x618da
jmp 0x618dc
jmp 0x618de
jmp 0x618e0
jmp 0x61778
testb $0x1, -0x31(%rbp)
je 0x61945
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x102f0
jmp 0x61908
movq -0xa0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x61220
jmp 0x6191d
leaq -0x88(%rbp), %rdi
callq 0x10fc8
jmp 0x61945
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x10fc8
jmp 0x61969
movq -0x8(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x10fc8
movq -0xa8(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x10fc8
movq -0x40(%rbp), %rdi
callq 0x10e00
nopl (%rax,%rax)