// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: remove_from_hash_table
static s7_pointer remove_from_hash_table(s7_scheme *sc, s7_pointer table, s7_pointer key, hash_entry_t *p)
                {
                    hash_entry_t *x;
                    s7_int hash_mask, loc;

                    if (p == sc->unentry) return(sc->F);
                    hash_mask = hash_table_mask(table);
                    loc = hash_entry_raw_hash(p) & hash_mask;
                    x = hash_table_element(table, loc);
                    if (x == p)
                        hash_table_element(table, loc) = hash_entry_next(x);
                    else
                    {
                        hash_entry_t *y;
                        for (y = x, x = hash_entry_next(x); x; y = x, x = hash_entry_next(x))
                            if (x == p)
                            {
                                hash_entry_next(y) = hash_entry_next(x);
                                break;
                            }
                    }
                    hash_table_entries(table)--;
                    if ((hash_table_entries(table) == 0) &&
                            (!hash_table_checker_locked(table)))
                    {
                        hash_table_checker(table) = hash_empty;
                        hash_clear_chosen(table);
                    }
                    liberate_block(sc, x);
                    return(sc->F);
                }

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq 0x38(%rsp), %rcx
cmpq 0x490(%rcx), %rax
jne 0x38f81
movq 0x38(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x40(%rsp)
jmp 0x390b6
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
andq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
cmpq 0x20(%rsp), %rax
jne 0x38fe2
movq 0x18(%rsp), %rax
movq 0x18(%rax), %rdx
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x3903d
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3903b
movq 0x18(%rsp), %rax
cmpq 0x20(%rsp), %rax
jne 0x39020
movq 0x18(%rsp), %rax
movq 0x18(%rax), %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
jmp 0x3903b
jmp 0x39022
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x38ff9
jmp 0x3903d
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x18(%rax)
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rax
cmpq $0x0, 0x18(%rax)
jne 0x39096
movq 0x30(%rsp), %rax
leaq 0x1e1732(%rip), %rcx    # 0x21a7a0
cmpq %rcx, 0x20(%rax)
jne 0x39096
movq 0x30(%rsp), %rax
leaq -0x1cf0(%rip), %rcx     # 0x37390
movq %rcx, 0x18(%rax)
movq 0x30(%rsp), %rax
movq (%rax), %rcx
andq $-0x20000001, %rcx      # imm = 0xDFFFFFFF
movq %rcx, (%rax)
movq 0x38(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xc5300
movq 0x38(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq