// File: pointwiseproduct[P]untyped_lambda/untyped_lambda.cpp
// Function: internal_data::lambda::equal(internal_data::expr const*) const
bool equal(const expr *other) const{
            if(other->get_kind() != expr::kind::lambda){
                return false;
            }
            const lambda *other_seq = static_cast<const lambda*>(other);
            if(variable_seq.size() != other_seq->variable_seq.size()){
                return false;
            }
            {
                auto iter = variable_seq.begin();
                for(auto &i : other_seq->variable_seq){
                    if(!iter->equal(&i)){
                        return false;
                    }
                    ++iter;
                }
            }
            const sequence *s = static_cast<const sequence*>(seq.get());
            const sequence *other_s = static_cast<const sequence*>(other_seq->seq.get());
            auto iter = s->vec.begin();
            for(auto &i : other_s->vec){
                if(!i->equal(&*i)){
                    return false;
                }
                ++iter;
            }
            return true;
        }

// Assembly:
subq $0x98, %rsp
movq %rdi, 0x88(%rsp)
movq %rsi, 0x80(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x80(%rsp), %rdi
movq (%rdi), %rax
callq *(%rax)
cmpl $0x2, %eax
je 0x11fe3
movb $0x0, 0x97(%rsp)
jmp 0x121a7
movq 0x10(%rsp), %rdi
movq 0x80(%rsp), %rax
movq %rax, 0x78(%rsp)
addq $0x8, %rdi
callq 0xbc70
movq %rax, 0x8(%rsp)
movq 0x78(%rsp), %rdi
addq $0x8, %rdi
callq 0xbc70
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
je 0x1202b
movb $0x0, 0x97(%rsp)
jmp 0x121a7
movq 0x10(%rsp), %rdi
addq $0x8, %rdi
callq 0x124c0
movq %rax, 0x70(%rsp)
movq 0x78(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
callq 0x124c0
movq %rax, 0x60(%rsp)
movq 0x68(%rsp), %rdi
callq 0x12530
movq %rax, 0x58(%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x124f0
testb $0x1, %al
jne 0x1207f
jmp 0x120cd
leaq 0x60(%rsp), %rdi
callq 0x12a40
movq %rax, 0x50(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x12560
movq %rax, %rdi
movq 0x50(%rsp), %rsi
movq (%rdi), %rax
callq *0x28(%rax)
testb $0x1, %al
jne 0x120b7
movb $0x0, 0x97(%rsp)
jmp 0x121a7
leaq 0x70(%rsp), %rdi
callq 0x12570
leaq 0x60(%rsp), %rdi
callq 0x12570
jmp 0x1206a
movq 0x10(%rsp), %rdi
addq $0x20, %rdi
callq 0xb9d0
movq %rax, 0x48(%rsp)
movq 0x78(%rsp), %rdi
addq $0x20, %rdi
callq 0xb9d0
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
addq $0x8, %rdi
callq 0x10b60
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rdi
callq 0x10b60
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rdi
callq 0x10bd0
movq %rax, 0x20(%rsp)
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x10b90
testb $0x1, %al
jne 0x12147
jmp 0x1219f
leaq 0x28(%rsp), %rdi
callq 0x10c00
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rdi
callq 0xb9c0
movq %rax, (%rsp)
movq 0x18(%rsp), %rdi
callq 0x10c60
movq (%rsp), %rdi
movq %rax, %rsi
movq (%rdi), %rax
callq *0x28(%rax)
testb $0x1, %al
jne 0x12189
movb $0x0, 0x97(%rsp)
jmp 0x121a7
leaq 0x38(%rsp), %rdi
callq 0x10c10
leaq 0x28(%rsp), %rdi
callq 0x10c10
jmp 0x12132
movb $0x1, 0x97(%rsp)
movb 0x97(%rsp), %al
andb $0x1, %al
addq $0x98, %rsp
retq
nopl (%rax,%rax)