// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: let_equal_1
static bool let_equal_1(s7_scheme *sc, s7_pointer x, s7_pointer y, shared_info *ci, bool equivalent)
                {
                    s7_pointer ex, ey, px, py;
                    shared_info *nci = ci;
                    int32_t x_len, y_len;

                    if (!is_let(y))
                        return(false);

                    if ((x == sc->rootlet) || (y == sc->rootlet))
                        return(false);

                    if (ci)
                        equal_ref(sc, x, y, ci);

                    clear_symbol_list(sc);
                    for (x_len = 0, ex = x; is_let(T_Lid(ex)); ex = outlet(ex))
                        for (px = let_slots(ex); tis_slot(px); px = next_slot(px))
                            if (!symbol_is_in_list(sc, slot_symbol(px)))
                            {
                                add_symbol_to_list(sc, slot_symbol(px));
                                x_len++;
                            }

                    for (ey = y; is_let(T_Lid(ey)); ey = outlet(ey))
                        for (py = let_slots(ey); tis_slot(py); py = next_slot(py))
                            if (!symbol_is_in_list(sc, slot_symbol(py)))          /* symbol in y, not in x */
                                return(false);

                    for (y_len = 0, ey = y; is_let(T_Lid(ey)); ey = outlet(ey))
                        for (py = let_slots(ey); tis_slot(py); py = next_slot(py))
                            if (symbol_tag(slot_symbol(py)) != 0)
                            {
                                y_len++;
                                symbol_set_tag(slot_symbol(py), 0);
                            }

                    if (x_len != y_len)                                        /* symbol in x, not in y */
                        return(false);

                    if (!nci) nci = new_shared_info(sc);

                    for (ex = x; is_let(T_Lid(ex)); ex = outlet(ex))
                        for (px = let_slots(ex); tis_slot(px); px = next_slot(px))
                            if (symbol_tag(slot_symbol(px)) == 0)                  /* unshadowed */
                            {
                                symbol_set_tag(slot_symbol(px), sc->syms_tag);     /* values don't match */
                                if (((!equivalent) && (!slots_match(sc, px, y, nci))) ||
                                        ((equivalent) && (!slots_equivalent_match(sc, px, y, nci))))
                                    return(false);
                            }
                    return(true);
                }

// Assembly:
cmpb $0x1c, (%rdx)
jne 0xc5ecd
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r13
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %r12
movq 0x150(%rdi), %rax
cmpq %rsi, %rax
sete %cl
cmpq %rdx, %rax
sete %al
orb %cl, %al
je 0xc5ed0
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
retq
movl %r8d, %ebx
testq %r13, %r13
je 0xc5f9a
xorl %ebp, %ebp
testb $0x2, 0x2(%r14)
je 0xc5ef2
movq %r13, %rdi
movq %r14, %rsi
callq 0x785fb
movl %eax, %ebp
movq (%r15), %rax
btl $0x11, %eax
jb 0xc5f0c
testl %ebp, %ebp
je 0xc5f22
movq %r13, %rdi
movq %r15, %rsi
movl %ebp, %edx
jmp 0xc5f95
movq %r13, %rdi
movq %r15, %rsi
callq 0x785fb
testl %ebp, %ebp
je 0xc5f89
cmpl %ebp, %eax
sete %al
jmp 0xc5ebe
movl 0xc(%r13), %ecx
cmpl 0x14(%r13), %ecx
jl 0xc5f37
movq %r13, %rdi
callq 0x78405
movq (%r15), %rax
orq $0x20000, %rax          # imm = 0x20000
movq %rax, (%r15)
orb $0x2, 0x2(%r14)
movq (%r13), %rax
movslq 0xc(%r13), %rcx
movq %r15, (%rax,%rcx,8)
movl 0x10(%r13), %eax
incl %eax
movl %eax, 0x10(%r13)
movq 0x20(%r13), %rdx
leal 0x1(%rcx), %esi
movl %esi, 0xc(%r13)
movl %eax, (%rdx,%rcx,4)
movq (%r13), %rax
movslq 0xc(%r13), %rcx
movq %r14, (%rax,%rcx,8)
movl 0x10(%r13), %eax
movq 0x20(%r13), %rdx
leal 0x1(%rcx), %esi
movl %esi, 0xc(%r13)
movl %eax, (%rdx,%rcx,4)
jmp 0xc5f9a
testl %eax, %eax
je 0xc5f9a
movq %r13, %rdi
movq %r14, %rsi
movl %eax, %edx
callq 0xc57c1
movq %r12, %rdi
callq 0x7c981
xorl %eax, %eax
movq %r15, %rcx
cmpb $0x1c, (%rcx)
jne 0xc5fff
leaq 0x8(%rcx), %rdx
movq (%rdx), %rdx
testq %rdx, %rdx
je 0xc5ff9
movq 0x8(%rdx), %rsi
movl 0xa88(%r12), %edi
movq 0x8(%rsi), %r8
cmpl %edi, 0x2c(%rsi)
jne 0xc5fdf
movq 0x20(%r8), %r9
movl 0xc(%r9), %r9d
cmpl 0xa8c(%r12), %r9d
je 0xc5ff3
movl %edi, 0x2c(%rsi)
movl 0xa8c(%r12), %esi
movq 0x20(%r8), %rdi
movl %esi, 0xc(%rdi)
incl %eax
addq $0x18, %rdx
jmp 0xc5fb0
movq 0x10(%rcx), %rcx
jmp 0xc5fa7
movq %r14, %rcx
cmpb $0x1c, (%rcx)
jne 0xc604c
leaq 0x8(%rcx), %rdx
movq (%rdx), %rdx
testq %rdx, %rdx
je 0xc6046
movq 0x8(%rdx), %rsi
movl 0x2c(%rsi), %edi
cmpl 0xa88(%r12), %edi
jne 0xc5ebc
movq 0x8(%rsi), %rsi
movq 0x20(%rsi), %rsi
movl 0xc(%rsi), %esi
addq $0x18, %rdx
cmpl 0xa8c(%r12), %esi
je 0xc600b
jmp 0xc5ebc
movq 0x10(%rcx), %rcx
jmp 0xc6002
xorl %ecx, %ecx
movq %r14, %rdx
cmpb $0x1c, (%rdx)
jne 0xc607e
leaq 0x8(%rdx), %rsi
movq (%rsi), %rsi
testq %rsi, %rsi
je 0xc6078
movq 0x8(%rsi), %rdi
cmpl $0x0, 0x2c(%rdi)
je 0xc6072
incl %ecx
andl $0x0, 0x2c(%rdi)
addq $0x18, %rsi
jmp 0xc605a
movq 0x10(%rdx), %rdx
jmp 0xc6051
cmpl %ecx, %eax
jne 0xc5ebc
testq %r13, %r13
jne 0xc6096
movq %r12, %rdi
callq 0x77cff
movq %rax, %r13
cmpb $0x1c, (%r15)
jne 0xc617a
leaq 0x8(%r15), %rbp
movq (%rbp), %rbp
testq %rbp, %rbp
je 0xc6171
movq 0x8(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
jne 0xc6168
movl 0xa88(%r12), %ecx
movl %ecx, 0x2c(%rax)
movq %r14, %rax
movq %r14, %rcx
testb %bl, %bl
je 0xc60ff
cmpb $0x1c, (%rcx)
jne 0xc5ebc
leaq 0x8(%rcx), %rax
movq (%rax), %rax
testq %rax, %rax
je 0xc60f9
movq 0x8(%rbp), %rdx
cmpq 0x8(%rax), %rdx
je 0xc612a
addq $0x18, %rax
jmp 0xc60e1
movq 0x10(%rcx), %rcx
jmp 0xc60d4
cmpb $0x1c, (%rax)
jne 0xc5ebc
leaq 0x8(%rax), %rcx
movq (%rcx), %rcx
testq %rcx, %rcx
je 0xc6124
movq 0x8(%rbp), %rdx
cmpq 0x8(%rcx), %rdx
je 0xc6144
addq $0x18, %rcx
jmp 0xc610c
movq 0x10(%rax), %rax
jmp 0xc60ff
movq 0x10(%rbp), %rsi
movq 0x10(%rax), %rdx
movzbl (%rsi), %eax
movq %r12, %rdi
movq %r13, %rcx
leaq 0x5bd7e(%rip), %r8      # 0x121ec0
jmp 0xc615c
movq 0x10(%rbp), %rsi
movq 0x10(%rcx), %rdx
movzbl (%rsi), %eax
movq %r12, %rdi
movq %r13, %rcx
leaq 0x5bbc4(%rip), %r8      # 0x121d20
callq *(%r8,%rax,8)
testb %al, %al
je 0xc5ebc
addq $0x18, %rbp
jmp 0xc60a4
movq 0x10(%r15), %r15
jmp 0xc6096
movb $0x1, %al
jmp 0xc5ebe