// File: /workspace/github_c_makefile_star2_O1/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 0x1017cd
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 0x1017d2
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1017cf
xorl %eax, %eax
andb $0x1, %al
retq
movl %r8d, %ebx
testq %r13, %r13
je 0x1018cc
xorl %edx, %edx
testb $0x2, 0x2(%r14)
je 0x10180f
movslq 0xc(%r13), %rax
testq %rax, %rax
jle 0x10180f
movq (%r13), %rdx
xorl %ecx, %ecx
cmpq %r14, (%rdx,%rcx,8)
je 0x101808
incq %rcx
cmpq %rcx, %rax
jne 0x1017f6
xorl %edx, %edx
jmp 0x10180f
movq 0x20(%r13), %rax
movl (%rax,%rcx,4), %edx
testb $0x2, 0x2(%r15)
jne 0x101827
testl %edx, %edx
je 0x101848
movq %r13, %rdi
movq %r15, %rsi
callq 0x100fa2
jmp 0x1018a6
movslq 0xc(%r13), %rax
testq %rax, %rax
jle 0x101844
movq (%r13), %rsi
xorl %ecx, %ecx
cmpq %r15, (%rsi,%rcx,8)
je 0x1018ab
incq %rcx
cmpq %rcx, %rax
jne 0x101836
xorl %eax, %eax
jmp 0x1018b2
movl 0xc(%r13), %eax
cmpl 0x14(%r13), %eax
jl 0x10185a
movq %r13, %rdi
callq 0x9cf49
orb $0x2, 0x2(%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)
movb $0x1, %bpl
jmp 0x1018c3
movq 0x20(%r13), %rax
movl (%rax,%rcx,4), %eax
testl %edx, %edx
sete %bpl
je 0x101af4
cmpl %edx, %eax
sete %al
testb %bpl, %bpl
je 0x1017bd
incl 0xa88(%r12)
jne 0x1018ea
movl $0x1, 0xa88(%r12)
incl 0xa8c(%r12)
xorl %eax, %eax
cmpb $0x1c, (%r15)
jne 0x10194e
xorl %eax, %eax
movq %r15, %rcx
movq 0x8(%rcx), %rdx
testq %rdx, %rdx
je 0x101945
movq 0x8(%rdx), %rsi
movl 0xa88(%r12), %edi
cmpl %edi, 0x2c(%rsi)
jne 0x101927
movq 0x8(%rsi), %r8
movq 0x20(%r8), %r8
movl 0xc(%r8), %r8d
cmpl 0xa8c(%r12), %r8d
je 0x10193f
movl %edi, 0x2c(%rsi)
movl 0xa8c(%r12), %edi
movq 0x8(%rsi), %rsi
movq 0x20(%rsi), %rsi
movl %edi, 0xc(%rsi)
incl %eax
movq 0x18(%rdx), %rdx
jmp 0x1018fb
movq 0x10(%rcx), %rcx
cmpb $0x1c, (%rcx)
je 0x1018f7
cmpb $0x1c, (%r14)
jne 0x1019a0
movq %r14, %rcx
movq 0x8(%rcx), %rdx
testq %rdx, %rdx
je 0x101997
movl 0xa88(%r12), %esi
movq 0x8(%rdx), %rdi
cmpl %esi, 0x2c(%rdi)
jne 0x1017bb
movq 0x8(%rdi), %rdi
movq 0x20(%rdi), %rdi
movl 0xc(%rdi), %edi
cmpl 0xa8c(%r12), %edi
jne 0x1017bb
movq 0x18(%rdx), %rdx
testq %rdx, %rdx
jne 0x101968
movq 0x10(%rcx), %rcx
cmpb $0x1c, (%rcx)
je 0x101957
xorl %ecx, %ecx
cmpb $0x1c, (%r14)
jne 0x1019d8
xorl %ecx, %ecx
movq %r14, %rdx
movq 0x8(%rdx), %rsi
testq %rsi, %rsi
je 0x1019cf
movq 0x8(%rsi), %rdi
cmpl $0x0, 0x2c(%rdi)
je 0x1019c9
incl %ecx
movl $0x0, 0x2c(%rdi)
movq 0x18(%rsi), %rsi
jmp 0x1019b1
movq 0x10(%rdx), %rdx
cmpb $0x1c, (%rdx)
je 0x1019ad
cmpl %ecx, %eax
jne 0x1017bb
testq %r13, %r13
jne 0x1019f0
movq %r12, %rdi
callq 0x9c66c
movq %rax, %r13
cmpb $0x1c, (%r15)
jne 0x101b0e
movq 0x8(%r15), %rbp
testq %rbp, %rbp
je 0x101aeb
movq 0x8(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
jne 0x101ae2
movl 0xa88(%r12), %ecx
movl %ecx, 0x2c(%rax)
testb %bl, %bl
jne 0x101a85
cmpb $0x1c, (%r14)
jne 0x1017bb
movq %r14, %rcx
movq 0x8(%rcx), %rax
testq %rax, %rax
je 0x101a4d
movq 0x8(%rbp), %rdx
cmpq 0x8(%rax), %rdx
je 0x101a5d
movq 0x18(%rax), %rax
testq %rax, %rax
jne 0x101a3e
movq 0x10(%rcx), %rcx
xorl %eax, %eax
cmpb $0x1c, (%rcx)
je 0x101a31
jmp 0x1017bd
movq 0x10(%rbp), %rsi
movq 0x10(%rax), %rdx
movzbl (%rsi), %eax
movq %r12, %rdi
movq %r13, %rcx
leaq 0x592ab(%rip), %r8      # 0x15ad20
callq *(%r8,%rax,8)
testb %al, %al
je 0x1017bb
testb %bl, %bl
je 0x101ae2
cmpb $0x1c, (%r14)
jne 0x1017bb
movq %r14, %rcx
movq 0x8(%rcx), %rax
testq %rax, %rax
je 0x101aae
movq 0x8(%rbp), %rdx
cmpq 0x8(%rax), %rdx
je 0x101abe
movq 0x18(%rax), %rax
testq %rax, %rax
jne 0x101a9f
movq 0x10(%rcx), %rcx
xorl %eax, %eax
cmpb $0x1c, (%rcx)
je 0x101a92
jmp 0x1017bd
movq 0x10(%rbp), %rsi
movq 0x10(%rax), %rdx
movzbl (%rsi), %eax
movq %r12, %rdi
movq %r13, %rcx
leaq 0x593ea(%rip), %r8      # 0x15aec0
callq *(%r8,%rax,8)
testb %al, %al
je 0x1017bb
movq 0x18(%rbp), %rbp
jmp 0x1019fe
movq 0x10(%r15), %r15
jmp 0x1019f0
testl %eax, %eax
je 0x1018a9
movq %r13, %rdi
movq %r14, %rsi
movl %eax, %edx
callq 0x100fa2
jmp 0x1018a9
movb $0x1, %al
jmp 0x1017bd