// File: /workspace/github_cpp_makefile_star2_O2/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, 0x40(%rsp)
leaq 0x20(%rsp), %rax
andq $0x0, 0x10(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq (%rsi), %rbx
xorl %r12d, %r12d
movq %rbx, %r13
xorl %ebp, %ebp
movq 0x8(%r14), %rax
cmpq %rax, %r13
je 0x3a8b
movb (%r13), %r15b
movzbl %r15b, %eax
leal -0x28(%rax), %ecx
cmpl $0x7, %ecx
jbe 0x38e4
cmpl $0x9, %eax
je 0x3a65
cmpl $0xa, %eax
je 0x3944
cmpl $0xd, %eax
je 0x3944
cmpl $0x20, %eax
je 0x3a12
cmpl $0x3d, %eax
je 0x3a34
cmpl $0x5c, %eax
je 0x391c
jmp 0x3978
leaq 0x5719(%rip), %rdx      # 0x9004
movslq (%rdx,%rcx,4), %rax
addq %rdx, %rax
jmpq *%rax
movl $0x6, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
jmp 0x3a57
movl $0x4, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
jmp 0x3a57
andl $0x0, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
xorl %eax, %eax
cmpb $0xa, %r15b
sete %al
addq %rax, %rbp
xorl %r12d, %r12d
jmp 0x3a5a
movl $0x1, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
jmp 0x3a57
movl $0x3, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
jmp 0x3a57
movl $0x7, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
jmp 0x3a57
movl $0x5, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
jmp 0x3a57
andl $0x0, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
jmp 0x3a57
movl $0x2, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
incq %r12
incq %r13
incq %rbx
jmp 0x3894
andl $0x0, (%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
callq 0x596e
addq $0x4, %r12
jmp 0x3a5a
movq %rsp, %rsi
movl $0x8, (%rsi)
movq %rax, 0x8(%rsi)
movq %rbp, 0x10(%rsi)
incq %r12
movq %r12, 0x18(%rsi)
leaq 0x20(%rsp), %rdi
callq 0x596e
leaq 0x20(%rsp), %rdi
movaps (%rdi), %xmm0
movq 0x40(%rsp), %rbx
movups %xmm0, (%rbx)
movq 0x10(%rdi), %rax
movq %rax, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
callq 0x73da
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3afb
jmp 0x3afb
jmp 0x3afb
jmp 0x3afb
jmp 0x3afb
jmp 0x3afb
jmp 0x3afb
jmp 0x3afb
jmp 0x3afb
jmp 0x3afb
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x73da
movq %rbx, %rdi
callq 0x3370