// File: pointwiseproduct[P]untyped_lambda/untyped_lambda.cpp
// Function: parsing_phase::expr_no_sequence(std::unique_ptr<internal_data::expr, std::default_delete<internal_data::expr>>&, __gnu_cxx::__normal_iterator<tokenize_phase2::token_t const*, std::vector<tokenize_phase2::token_t, std::allocator<tokenize_phase2::token_t>>>)
token_seq_type::const_iterator expr_no_sequence(std::unique_ptr<internal_data::expr> &e, token_seq_type::const_iterator first){
        token_seq_type::const_iterator iter = first;
        token_seq_type::const_iterator r = first;
        if(iter->kind == kind_t::lambda){
            internal_data::lambda *ptr = new internal_data::lambda();
            iter = lambda(iter, *ptr);
            e.reset(ptr);
            r = iter;
        }else if(iter->kind == kind_t::variable){
            internal_data::variable *ptr = new internal_data::variable();
            iter = variable(iter, *ptr);
            e.reset(ptr);
            r = iter;
        }else if(iter->kind == kind_t::lparen){
            ++iter;
            std::unique_ptr<internal_data::expr> f;
            token_seq_type::const_iterator s = expr(f, iter);
            if(s != first){
                iter = s;
                if(iter->kind == kind_t::rparen){
                    ++s;
                    e.swap(f);
                    r = s;
                }else{
                    throw parsing_error(first->line);
                }
            }
        }
        return r;
    }

// Assembly:
subq $0xa8, %rsp
movq %rsi, 0x98(%rsp)
movq %rdi, 0x90(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0xa0(%rsp)
leaq 0x88(%rsp), %rdi
callq 0xc1d0
cmpl $0x1, (%rax)
jne 0x8b3e
movl $0x28, %edi
callq 0x5380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x28(%rsp)
callq 0xc630
jmp 0x8ab9
movq 0x28(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x80(%rsp), %rsi
movq 0x60(%rsp), %rdi
callq 0x8740
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0xba80
movq 0x88(%rsp), %rax
movq %rax, 0xa0(%rsp)
jmp 0x8d2f
movq 0x28(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
callq 0x5350
jmp 0x8d3f
leaq 0x88(%rsp), %rdi
callq 0xc1d0
cmpl $0x0, (%rax)
jne 0x8bdb
movl $0x28, %edi
callq 0x5380
movq %rax, %rdi
movq %rdi, 0x20(%rsp)
xorl %esi, %esi
movl $0x28, %edx
callq 0x51c0
movq 0x20(%rsp), %rdi
callq 0xc540
movq 0x20(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x58(%rsp), %rsi
movq 0x48(%rsp), %rdi
callq 0x8950
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xba80
movq 0x88(%rsp), %rax
movq %rax, 0xa0(%rsp)
jmp 0x8d2d
leaq 0x88(%rsp), %rdi
callq 0xc1d0
cmpl $0x4, (%rax)
jne 0x8d2b
leaq 0x88(%rsp), %rdi
callq 0xc270
leaq 0x40(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xc290
movq 0x10(%rsp), %rdi
movq 0x88(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rsi
callq 0x7cf0
movq %rax, 0x18(%rsp)
jmp 0x8c30
movq 0x18(%rsp), %rax
movq %rax, 0x38(%rsp)
leaq 0x38(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0xc490
testb $0x1, %al
jne 0x8c55
jmp 0x8d13
movq 0x38(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq 0x88(%rsp), %rdi
callq 0xc1d0
cmpl $0x5, (%rax)
jne 0x8caf
leaq 0x38(%rsp), %rdi
callq 0xc270
movq 0x90(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0xbbc0
movq 0x38(%rsp), %rax
movq %rax, 0xa0(%rsp)
jmp 0x8d11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
jmp 0x8d1f
movl $0x10, %edi
callq 0x5180
movq %rax, 0x8(%rsp)
movq %rax, (%rsp)
leaq 0x98(%rsp), %rdi
callq 0xc1d0
movq 0x8(%rsp), %rdi
movq 0x18(%rax), %rsi
callq 0xc3c0
jmp 0x8cdf
movq (%rsp), %rdi
leaq 0x1cc16(%rip), %rsi     # 0x25900
leaq 0x378f(%rip), %rdx      # 0xc480
callq 0x5590
jmp 0x8d49
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
callq 0x52a0
jmp 0x8d1f
jmp 0x8d13
leaq 0x40(%rsp), %rdi
callq 0xbee0
jmp 0x8d2b
leaq 0x40(%rsp), %rdi
callq 0xbee0
jmp 0x8d3f
jmp 0x8d2d
jmp 0x8d2f
movq 0xa0(%rsp), %rax
addq $0xa8, %rsp
retq
movq 0x78(%rsp), %rdi
callq 0x55c0
nopl (%rax)