// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: tree_len_1
static inline s7_int tree_len_1(s7_scheme *sc, s7_pointer p)
    {
        s7_int sum;
        for (sum = 0; is_pair(p); p = cdr(p))
        {
            s7_pointer cp;
            cp = car(p);
            if ((!is_pair(cp)) ||
                    (car(cp) == sc->quote_symbol))
                sum++;
            else
            {
                do {
                    s7_pointer ccp;
                    ccp = car(cp);
                    if ((!is_pair(ccp)) ||
                            (car(ccp) == sc->quote_symbol))
                        sum++;
                    else
                    {
                        do {
                            s7_pointer cccp;
                            cccp = car(ccp);
                            if ((!is_pair(cccp)) ||
                                    (car(cccp) == sc->quote_symbol))
                                sum++;
                            else sum += tree_len_1(sc, cccp);
                            ccp = cdr(ccp);
                        } while (is_pair(ccp));
                        if (!is_null(ccp)) sum++;
                    }
                    cp = cdr(cp);
                } while (is_pair(cp));
                if (!is_null(cp)) sum++;
            }
        }
        if (!is_null(p)) return(sum + 1);
        return(sum);
    }

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq $0x0, 0x18(%rsp)
movq 0x20(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdd002
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdceba
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
jne 0xdcecd
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0xdcfed
jmp 0xdcecf
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdcf01
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
jne 0xdcf14
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0xdcfab
jmp 0xdcf16
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, (%rsp)
movq (%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdcf45
movq (%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
jne 0xdcf55
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0xdcf6d
movq 0x28(%rsp), %rdi
movq (%rsp), %rsi
callq 0xdce60
addq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0xdcf16
movq 0x8(%rsp), %rax
movq 0x28(%rsp), %rcx
cmpq 0x110(%rcx), %rax
je 0xdcfa9
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0xdcfab
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
je 0xdcecf
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %rcx
cmpq 0x110(%rcx), %rax
je 0xdcfeb
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0xdcfed
jmp 0xdcfef
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0xdce77
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
cmpq 0x110(%rcx), %rax
je 0xdd025
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
jmp 0xdd02f
movq 0x18(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
addq $0x38, %rsp
retq
nopl (%rax)