// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: c_objects_are_equal
bool c_objects_are_equal(s7_scheme *sc, s7_pointer a, s7_pointer b, shared_info *ci)
                {
                    s7_pointer (*to_list)(s7_scheme *sc, s7_pointer args);
                    shared_info *nci = ci;
                    s7_pointer pa, pb;

                    if (a == b)
                        return(true);
                    if (!is_c_object(b))
                        return(false);
                    if (c_object_type(a) != c_object_type(b))
                        return(false);
                    if (c_object_eql(sc, a))
                        return((*(c_object_eql(sc, a)))(c_object_value(a), c_object_value(b)));

                    to_list = c_object_to_list(sc, a);
                    if (!to_list)
                        return(false);
                    if (ci)
                        equal_ref(sc, a, b, ci); /* and nci == ci above */
                    else nci = new_shared_info(sc);

                    for (pa = to_list(sc, set_plist_1(sc, a)), pb = to_list(sc, set_plist_1(sc, b)); is_pair(pa) && (is_pair(pb)); pa = cdr(pa), pb = cdr(pb))
                        if (!(s7_is_equal_1(sc, car(pa), car(pb), nci)))
                            return(false);

                    return(pa == pb); /* presumably both are nil if successful */
                }

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x78(%rsp)
movq %rsi, 0x70(%rsp)
movq %rdx, 0x68(%rsp)
movq %rcx, 0x60(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x70(%rsp), %rax
cmpq 0x68(%rsp), %rax
jne 0x1b301e
movb $0x1, 0x87(%rsp)
jmp 0x1b339a
movq 0x68(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x14, %eax
je 0x1b3038
movb $0x0, 0x87(%rsp)
jmp 0x1b339a
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x68(%rsp), %rcx
cmpq 0x8(%rcx), %rax
je 0x1b3059
movb $0x0, 0x87(%rsp)
jmp 0x1b339a
movq 0x78(%rsp), %rax
movq 0x8d8(%rax), %rax
movq 0x70(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
cmpq $0x0, 0x38(%rax)
je 0x1b30b8
movq 0x78(%rsp), %rax
movq 0x8d8(%rax), %rax
movq 0x70(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x38(%rax), %rax
movq 0x70(%rsp), %rcx
movq 0x10(%rcx), %rdi
movq 0x68(%rsp), %rcx
movq 0x10(%rcx), %rsi
callq *%rax
andb $0x1, %al
movb %al, 0x87(%rsp)
jmp 0x1b339a
movq 0x78(%rsp), %rax
movq 0x8d8(%rax), %rax
movq 0x70(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x78(%rax), %rax
movq %rax, 0x58(%rsp)
cmpq $0x0, 0x58(%rsp)
jne 0x1b30ef
movb $0x0, 0x87(%rsp)
jmp 0x1b339a
cmpq $0x0, 0x60(%rsp)
je 0x1b3289
jmp 0x1b30fd
movq 0x68(%rsp), %rax
movq (%rax), %rax
andq $0x20000, %rax          # imm = 0x20000
cmpq $0x0, %rax
je 0x1b3126
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xd28c0
movl %eax, 0x34(%rsp)
jmp 0x1b312e
xorl %eax, %eax
movl %eax, 0x34(%rsp)
jmp 0x1b312e
movl 0x34(%rsp), %eax
movl %eax, 0x3c(%rsp)
movq 0x70(%rsp), %rax
movq (%rax), %rax
andq $0x20000, %rax          # imm = 0x20000
cmpq $0x0, %rax
je 0x1b319c
movq 0x60(%rsp), %rdi
movq 0x70(%rsp), %rsi
callq 0xd28c0
movl %eax, 0x38(%rsp)
cmpl $0x0, 0x3c(%rsp)
je 0x1b317d
movl 0x38(%rsp), %eax
cmpl 0x3c(%rsp), %eax
sete %al
andb $0x1, %al
movb %al, 0x87(%rsp)
jmp 0x1b339a
cmpl $0x0, 0x38(%rsp)
je 0x1b3197
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rsi
movl 0x38(%rsp), %edx
callq 0x1b6550
jmp 0x1b3285
cmpl $0x0, 0x3c(%rsp)
je 0x1b31bb
movq 0x60(%rsp), %rdi
movq 0x70(%rsp), %rsi
movl 0x3c(%rsp), %edx
callq 0x1b6550
jmp 0x1b3283
movq 0x60(%rsp), %rax
movl 0xc(%rax), %eax
movq 0x60(%rsp), %rcx
cmpl 0x14(%rcx), %eax
jl 0x1b31d7
movq 0x60(%rsp), %rdi
callq 0xd24c0
movq 0x70(%rsp), %rax
movq (%rax), %rcx
orq $0x20000, %rcx          # imm = 0x20000
movq %rcx, (%rax)
movq 0x68(%rsp), %rax
movq (%rax), %rcx
orq $0x20000, %rcx          # imm = 0x20000
movq %rcx, (%rax)
movq 0x70(%rsp), %rdx
movq 0x60(%rsp), %rax
movq (%rax), %rax
movq 0x60(%rsp), %rcx
movslq 0xc(%rcx), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x60(%rsp), %rax
movl 0x10(%rax), %edx
addl $0x1, %edx
movl %edx, 0x10(%rax)
movq 0x60(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x60(%rsp), %rsi
movl 0xc(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0xc(%rsi)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movq 0x68(%rsp), %rdx
movq 0x60(%rsp), %rax
movq (%rax), %rax
movq 0x60(%rsp), %rcx
movslq 0xc(%rcx), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x60(%rsp), %rax
movl 0x10(%rax), %edx
movq 0x60(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x60(%rsp), %rsi
movl 0xc(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0xc(%rsi)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
jmp 0x1b3285
jmp 0x1b3287
jmp 0x1b3298
movq 0x78(%rsp), %rdi
callq 0xd14f0
movq %rax, 0x50(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x78(%rsp), %rdi
movq 0x70(%rsp), %rsi
callq 0x35ea0
movq 0x10(%rsp), %rdi
movq %rax, %rsi
movq 0x18(%rsp), %rax
callq *%rax
movq %rax, 0x48(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x78(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0x35ea0
movq 0x20(%rsp), %rdi
movq %rax, %rsi
movq 0x28(%rsp), %rax
callq *%rax
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rax
movzbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x1, %ecx
movb %al, 0xf(%rsp)
jne 0x1b332b
movq 0x40(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
sete %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x1b3335
jmp 0x1b3384
movq 0x78(%rsp), %rdi
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rdx
movq 0x50(%rsp), %rcx
callq 0x3e8e0
testb $0x1, %al
jne 0x1b3364
movb $0x0, 0x87(%rsp)
jmp 0x1b339a
jmp 0x1b3366
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x40(%rsp)
jmp 0x1b3306
movq 0x48(%rsp), %rax
cmpq 0x40(%rsp), %rax
sete %al
andb $0x1, %al
movb %al, 0x87(%rsp)
movb 0x87(%rsp), %al
andb $0x1, %al
addq $0x88, %rsp
retq
nopl (%rax,%rax)