// File: /workspace/github_cpp_makefile_star2_O3/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 %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq (%rsi), %rbp
movq 0x8(%rsi), %rax
cmpq %rax, %rbp
je 0x3cac
movq %rsi, %r14
movq %rbx, 0x40(%rsp)
xorl %r13d, %r13d
movq %rbp, %r12
xorl %ebx, %ebx
movb (%rbp), %r15b
movzbl %r15b, %eax
cmpl $0x27, %eax
jle 0x39d4
leal -0x28(%rax), %ecx
cmpl $0x7, %ecx
ja 0x39f0
leaq 0x6671(%rip), %rdx      # 0xa004
movslq (%rdx,%rcx,4), %rax
addq %rdx, %rax
jmpq *%rax
movl $0x6, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
jne 0x3bfc
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
jmp 0x3c15
cmpl $0xc, %eax
jg 0x3a3a
cmpl $0x9, %eax
je 0x3b99
cmpl $0xa, %eax
je 0x3a7c
jmp 0x3ac0
cmpl $0x3d, %eax
je 0x3bda
cmpl $0x5c, %eax
jne 0x3ac0
movl $0x4, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
jne 0x3bfc
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
jmp 0x3c15
cmpl $0xd, %eax
je 0x3a7c
cmpl $0x20, %eax
jne 0x3ac0
movl $0x0, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
jne 0x3bfc
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
jmp 0x3c15
movl $0x0, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
je 0x3c2d
movups (%rsp), %xmm0
movups 0x10(%rsp), %xmm1
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x20, %rsi
movq %rsi, 0x28(%rsp)
jmp 0x3c3a
movl $0x1, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
jne 0x3bfc
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
jmp 0x3c15
movl $0x5, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
jne 0x3bfc
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
jmp 0x3c15
movl $0x3, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
jne 0x3bfc
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
jmp 0x3c15
movl $0x7, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
jne 0x3bfc
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
jmp 0x3c15
movl $0x0, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
je 0x3c4a
movups (%rsp), %xmm0
movups 0x10(%rsp), %xmm1
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x20, %rsi
movq %rsi, 0x28(%rsp)
jmp 0x3c57
movl $0x2, (%rsp)
movq %r12, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
je 0x3c5d
movups (%rsp), %xmm0
movups 0x10(%rsp), %xmm1
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x20, %rsi
movq %rsi, 0x28(%rsp)
incq %rbx
incq %rbp
movq 0x8(%r14), %rax
incq %r12
cmpq %rax, %rbp
jne 0x3977
jmp 0x3c6c
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
xorl %eax, %eax
cmpb $0xa, %r15b
sete %al
addq %rax, %r13
xorl %ebx, %ebx
jmp 0x3c18
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
addq $0x4, %rbx
jmp 0x3c18
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
jmp 0x3c15
movq 0x28(%rsp), %rsi
incq %rbx
movl $0x8, (%rsp)
movq %rax, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
cmpq 0x30(%rsp), %rsi
je 0x3cce
movups (%rsp), %xmm0
movups 0x10(%rsp), %xmm1
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x20, %rsi
movq 0x40(%rsp), %rbx
jmp 0x3ce5
movl $0x8, (%rsp)
movq %rax, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movq $0x1, 0x18(%rsp)
xorl %esi, %esi
jmp 0x3cd3
movq 0x40(%rsp), %rbx
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7f24
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rax
movq %rax, (%rbx)
movq %rsi, 0x8(%rbx)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rbx)
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3d20
jmp 0x3d20
jmp 0x3d20
jmp 0x3d20
jmp 0x3d20
jmp 0x3d20
jmp 0x3d20
jmp 0x3d20
jmp 0x3d20
jmp 0x3d20
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x3d32
callq 0x31f0
movq %rbx, %rdi
callq 0x3360