// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: copy_tree_with_type
static s7_pointer copy_tree_with_type(s7_scheme *sc, s7_pointer tree)
    {
        /* if sc->safety > NO_SAFETY, '(1 2) is set immutable by the reader, but eval (in that safety case) calls
         *   copy_body on the incoming tree, so we have to preserve T_IMMUTABLE in that case.
         * if tree is something like (+ 1 (car '#1=(2 . #1#))), we have to see the quoted list and not copy it.
         */
#if WITH_GCC
#define COPY_TREE_WITH_TYPE(P) ({s7_pointer _p; _p = P; \
        cons_unchecked_with_type(sc, _p, (is_unquoted_pair(car(_p))) ? copy_tree_with_type(sc, car(_p)) : car(_p), \
                (is_unquoted_pair(cdr(_p))) ? copy_tree_with_type(sc, cdr(_p)) : cdr(_p));})
#else
#define COPY_TREE_WITH_TYPE(P) copy_tree_with_type(sc, P)
#endif

        return(cons_unchecked_with_type(sc, tree,
                    (is_unquoted_pair(car(tree))) ? COPY_TREE_WITH_TYPE(car(tree)) : car(tree),
                    (is_unquoted_pair(cdr(tree))) ? COPY_TREE_WITH_TYPE(cdr(tree)) : cdr(tree)));
    }

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0xa0(%rsp)
movq %rsi, 0x98(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x98(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdca62
movq 0x98(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
je 0xdca62
movq 0x98(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x90(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x90(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdc9b1
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
je 0xdc9b1
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0xdc8c0
movq %rax, 0x50(%rsp)
jmp 0xdc9c2
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdca21
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
je 0xdca21
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0xdc8c0
movq %rax, 0x40(%rsp)
jmp 0xdca32
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdx
movq 0x60(%rsp), %rsi
movq 0x58(%rsp), %rdi
movq 0x40(%rsp), %rcx
callq 0xdd040
movq %rax, 0x88(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x38(%rsp)
jmp 0xdca73
movq 0x98(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x98(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdcbe7
movq 0x98(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
je 0xdcbe7
movq 0x98(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x80(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x80(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdcb3d
movq 0x80(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
je 0xdcb3d
movq 0xa0(%rsp), %rdi
movq 0x80(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0xdc8c0
movq %rax, 0x18(%rsp)
jmp 0xdcb4e
movq 0x80(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x80(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xdcbad
movq 0x80(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0xa0(%rsp), %rcx
cmpq 0x17b0(%rcx), %rax
je 0xdcbad
movq 0xa0(%rsp), %rdi
movq 0x80(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0xdc8c0
movq %rax, 0x8(%rsp)
jmp 0xdcbbe
movq 0x80(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdx
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rcx
callq 0xdd040
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rax
movq %rax, (%rsp)
jmp 0xdcbf7
movq 0x98(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, (%rsp)
movq 0x30(%rsp), %rdx
movq 0x70(%rsp), %rsi
movq 0x68(%rsp), %rdi
movq (%rsp), %rcx
callq 0xdd040
addq $0xa8, %rsp
retq
nopw (%rax,%rax)