// File: pointwiseproduct[P]untyped_lambda/untyped_lambda.cpp
// Function: tokenize_phase1::tokenize(std::vector<char, std::allocator<char>> const&)
token_seq_type tokenize(const storage_type &vec){
        token_seq_type r;
        std::size_t line = 0, colunm = 0;
        for(auto iter = vec.begin(); iter != vec.end(); ++iter){
            char c = *iter;
            switch(c){
            case '/':
            case '\\':
                {
                    token_t t;
                    t.kind = token_t::kind_t::lambda;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    colunm += 1;
                    r.push_back(t);
                }
                break;

            case '=':
                {
                    token_t t;
                    t.kind = token_t::kind_t::equal;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    colunm++;
                    r.push_back(t);
                }
                break;
            
            case '*':
                {
                    token_t t;
                    t.kind = token_t::kind_t::asterisk;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    colunm++;
                    r.push_back(t);
                }
                break;

            case '.':
                {
                    token_t t;
                    t.kind = token_t::kind_t::dot;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    colunm++;
                    r.push_back(t);
                }
                break;

            case '(':
                {
                    token_t t;
                    t.kind = token_t::kind_t::lparen;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    colunm++;
                    r.push_back(t);
                }
                break;

            case ')':
                {
                    token_t t;
                    t.kind = token_t::kind_t::rparen;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    colunm++;
                    r.push_back(t);
                }
                break;

            case ' ':
                {
                    token_t t;
                    t.kind = token_t::kind_t::white;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    r.push_back(t);
                }
                colunm++;
                break;

            case '\t':
                {
                    token_t t;
                    t.kind = token_t::kind_t::white;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    r.push_back(t);
                }
                colunm += 4;
                break;

            case '\n':
            case '\r':
                {
                    token_t t;
                    t.kind = token_t::kind_t::white;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    r.push_back(t);
                }
                if(c == '\n'){
                    ++line;
                }
                colunm = 0;
                break;

            default:
                {
                    token_t t;
                    t.kind = token_t::kind_t::charactor;
                    t.iter = iter;
                    t.line = line;
                    t.colunm = colunm;
                    colunm++;
                    r.push_back(t);
                }
                break;
            }
        }
        {
            token_t t;
            t.kind = token_t::kind_t::end;
            t.iter = vec.end();
            t.line = line;
            t.colunm = colunm + 1;
            r.push_back(t);
        }
        return std::move(r);
    }

// Assembly:
subq $0x238, %rsp            # imm = 0x238
movq %rdi, 0x60(%rsp)
movq %rdi, %rax
movq %rax, 0x68(%rsp)
movq %rdi, 0x230(%rsp)
movq %rsi, 0x228(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb420
movq $0x0, 0x208(%rsp)
movq $0x0, 0x200(%rsp)
movq 0x228(%rsp), %rdi
callq 0xb430
movq %rax, 0x1f8(%rsp)
movq 0x228(%rsp), %rdi
callq 0xb4a0
movq %rax, 0x1f0(%rsp)
leaq 0x1f8(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0xb460
testb $0x1, %al
jne 0x5f21
jmp 0x6471
leaq 0x1f8(%rsp), %rdi
callq 0xb4d0
movb (%rax), %al
movb %al, 0x1ef(%rsp)
movsbl 0x1ef(%rsp), %eax
addl $-0x9, %eax
movl %eax, %ecx
movq %rcx, 0x58(%rsp)
subl $0x53, %eax
ja 0x63e7
movq 0x58(%rsp), %rax
leaq 0x150a6(%rip), %rcx     # 0x1b004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1c8(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xb4e0
movq 0x50(%rsp), %rsi
movl $0x4, 0x1c8(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x1d0(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x1d8(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0x1e0(%rsp)
movq 0x200(%rsp), %rax
incq %rax
movq %rax, 0x200(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x5fdb
jmp 0x645d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1c0(%rsp)
movl %eax, 0x1bc(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb5c0
jmp 0x6508
leaq 0x198(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xb4e0
movq 0x48(%rsp), %rsi
movl $0x2, 0x198(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x1a0(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x1a8(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movq 0x200(%rsp), %rax
incq %rax
movq %rax, 0x200(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x607a
jmp 0x645d
leaq 0x178(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xb4e0
movq 0x40(%rsp), %rsi
movl $0x3, 0x178(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x180(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0x190(%rsp)
movq 0x200(%rsp), %rax
incq %rax
movq %rax, 0x200(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x60f3
jmp 0x645d
leaq 0x158(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xb4e0
movq 0x38(%rsp), %rsi
movl $0x5, 0x158(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x160(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x168(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0x170(%rsp)
movq 0x200(%rsp), %rax
incq %rax
movq %rax, 0x200(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x616c
jmp 0x645d
leaq 0x138(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xb4e0
movq 0x30(%rsp), %rsi
movl $0x6, 0x138(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x140(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x148(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0x150(%rsp)
movq 0x200(%rsp), %rax
incq %rax
movq %rax, 0x200(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x61e5
jmp 0x645d
leaq 0x118(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xb4e0
movq 0x28(%rsp), %rsi
movl $0x7, 0x118(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x128(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0x130(%rsp)
movq 0x200(%rsp), %rax
incq %rax
movq %rax, 0x200(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x625e
jmp 0x645d
leaq 0xf8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xb4e0
movq 0x20(%rsp), %rsi
movl $0x0, 0xf8(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x108(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0x110(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x62c4
movq 0x200(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x200(%rsp)
jmp 0x645d
leaq 0xd8(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xb4e0
movq 0x18(%rsp), %rsi
movl $0x0, 0xd8(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0xf0(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x633e
movq 0x200(%rsp), %rax
addq $0x4, %rax
movq %rax, 0x200(%rsp)
jmp 0x645d
leaq 0xb8(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xb4e0
movq 0x10(%rsp), %rsi
movl $0x0, 0xb8(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x63b8
movsbl 0x1ef(%rsp), %eax
cmpl $0xa, %eax
jne 0x63d9
movq 0x208(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x208(%rsp)
movq $0x0, 0x200(%rsp)
jmp 0x645d
leaq 0x98(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xb4e0
movq 0x8(%rsp), %rsi
movl $0x1, 0x98(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x200(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x200(%rsp), %rax
incq %rax
movq %rax, 0x200(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x645b
jmp 0x645d
jmp 0x645f
leaq 0x1f8(%rsp), %rdi
callq 0xb570
jmp 0x5eee
leaq 0x78(%rsp), %rdi
movq %rdi, (%rsp)
callq 0xb4e0
movl $0x8, 0x78(%rsp)
movq 0x228(%rsp), %rdi
callq 0xb4a0
movq (%rsp), %rsi
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x200(%rsp), %rax
incq %rax
movq %rax, 0x90(%rsp)
leaq 0x210(%rsp), %rdi
callq 0xb500
jmp 0x64dc
movq 0x60(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0xb590
leaq 0x210(%rsp), %rdi
callq 0xb5c0
movq 0x68(%rsp), %rax
addq $0x238, %rsp            # imm = 0x238
retq
movq 0x1c0(%rsp), %rdi
callq 0x55c0
nopw %cs:(%rax,%rax)