// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: is_decodable
static bool is_decodable(s7_scheme *sc, s7_pointer p)
                {
                    int32_t i;
                    s7_pointer x;
                    s7_pointer *tp, *heap_top;

                    /* check symbol-table */
                    for (i = 0; i < SYMBOL_TABLE_SIZE; i++)
                        for (x = vector_element(sc->symbol_table, i); is_not_null(x); x = cdr(x))
                        {
                            s7_pointer sym;
                            sym = car(x);
                            if ((sym == p) ||
                                    ((is_global(sym)) && (is_slot(global_slot(sym))) && (p == slot_value(global_slot(sym)))))
                                return(true);
                        }

                    for (i = 0; i < NUM_CHARS; i++) if (p == chars[i]) return(true);
                    for (i = 0; i <= NUM_SMALL_INTS; i++) if (p == small_ints[i]) return(true);
                    /* also real_one and friends, sc->safe_lists, p|elist? */

                    /* check the heap */
                    tp = sc->heap;
                    heap_top = (s7_pointer *)(sc->heap + sc->heap_size);
                    while (tp < heap_top)
                        if (p == (*tp++))
                            return(true);

                    return(false);
                }

// Assembly:
movq %rdi, -0x10(%rsp)
movq %rsi, -0x18(%rsp)
movl $0x0, -0x1c(%rsp)
cmpl $0x7fed, -0x1c(%rsp)    # imm = 0x7FED
jge 0x48fe5
movq -0x10(%rsp), %rax
movq 0x148(%rax), %rax
movq 0x10(%rax), %rax
movslq -0x1c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rsp)
movq -0x28(%rsp), %rax
movq -0x10(%rsp), %rcx
cmpq 0x110(%rcx), %rax
je 0x48fd3
movq -0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rsp)
movq -0x40(%rsp), %rax
cmpq -0x18(%rsp), %rax
je 0x48fb4
movq -0x40(%rsp), %rax
movq (%rax), %rax
andq $0x10000, %rax          # imm = 0x10000
cmpq $0x0, %rax
je 0x48fbe
movq -0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x20, %eax
jne 0x48fbe
movq -0x18(%rsp), %rax
movq -0x40(%rsp), %rcx
movq 0x10(%rcx), %rcx
cmpq 0x10(%rcx), %rax
jne 0x48fbe
movb $0x1, -0x1(%rsp)
jmp 0x490d0
jmp 0x48fc0
movq -0x28(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rsp)
jmp 0x48f4e
jmp 0x48fd5
movl -0x1c(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rsp)
jmp 0x48f22
movl $0x0, -0x1c(%rsp)
cmpl $0x100, -0x1c(%rsp)     # imm = 0x100
jge 0x49027
movq -0x18(%rsp), %rax
movq 0x1d1585(%rip), %rcx    # 0x21a588
movslq -0x1c(%rsp), %rdx
cmpq (%rcx,%rdx,8), %rax
jne 0x49018
movb $0x1, -0x1(%rsp)
jmp 0x490d0
jmp 0x4901a
movl -0x1c(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rsp)
jmp 0x48fed
movl $0x0, -0x1c(%rsp)
cmpl $0x800, -0x1c(%rsp)     # imm = 0x800
jg 0x49066
movq -0x18(%rsp), %rax
movslq -0x1c(%rsp), %rdx
leaq 0x1cd436(%rip), %rcx    # 0x216480
cmpq (%rcx,%rdx,8), %rax
jne 0x49057
movb $0x1, -0x1(%rsp)
jmp 0x490d0
jmp 0x49059
movl -0x1c(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rsp)
jmp 0x4902f
movq -0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq %rax, -0x30(%rsp)
movq -0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq -0x10(%rsp), %rcx
movq 0xa8(%rcx), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rsp)
movq -0x30(%rsp), %rax
cmpq -0x38(%rsp), %rax
jae 0x490cb
movq -0x18(%rsp), %rax
movq -0x30(%rsp), %rcx
movq %rcx, %rdx
addq $0x8, %rdx
movq %rdx, -0x30(%rsp)
cmpq (%rcx), %rax
jne 0x490c9
movb $0x1, -0x1(%rsp)
jmp 0x490d0
jmp 0x4909b
movb $0x0, -0x1(%rsp)
movb -0x1(%rsp), %al
andb $0x1, %al
retq
nopw (%rax,%rax)