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

                        hash_mask = hash_table_mask(table);
                        map = hash_table_mapper(table)[type(key)];
#if (!WITH_GMP)
                        if (map == hash_map_int) /* surely by far the most common case? */
                        {
                            s7_int keyi;
                            keyi = integer(key);
                            for (x = hash_table_element(table, keyi & hash_mask); x; x = hash_entry_next(x))
                                if ((is_t_integer(hash_entry_key(x))) &&
                                        (keyi == integer(hash_entry_key(x))))
                                    return(x);
                        }
                        else
                        {
                            loc = map(sc, table, key) & hash_mask;
                            for (x = hash_table_element(table, loc); x; x = hash_entry_next(x))
                                if ((is_number(hash_entry_key(x))) &&
                                        (is_true(sc, num_eq_p_pp(sc, key, hash_entry_key(x)))))
                                    return(x);
                        }
#else
                        loc = map(sc, table, key) & hash_mask;
                        for (x = hash_table_element(table, loc); x; x = hash_entry_next(x))
                            if ((is_number(hash_entry_key(x))) &&
                                    (is_true(sc, big_num_eq(sc, set_plist_2(sc, key, hash_entry_key(x))))))
                                return(x);
#endif
                    }
                    return(sc->unentry);
                }

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq 0x28(%rsp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x512cc(%rip), %rax     # 0x21a4a0
testb $0x1, (%rax,%rcx)
je 0x1c932c
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x30(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rsp), %rcx
movzbl (%rcx), %ecx
movq (%rax,%rcx,8), %rax
movq %rax, 0x8(%rsp)
leaq -0x19155d(%rip), %rax   # 0x37cb0
cmpq %rax, 0x8(%rsp)
jne 0x1c928c
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, (%rsp)
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rsp), %rcx
andq 0x18(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x1c9287
movq 0x20(%rsp), %rax
movq (%rax), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
jne 0x1c9275
movq (%rsp), %rax
movq 0x20(%rsp), %rcx
movq (%rcx), %rcx
cmpq 0x8(%rcx), %rax
jne 0x1c9275
movq 0x20(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1c933d
jmp 0x1c9277
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0x1c923c
jmp 0x1c932a
movq 0x8(%rsp), %rax
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq *%rax
andq 0x18(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x1c9328
movq 0x20(%rsp), %rax
movq (%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x511c1(%rip), %rax     # 0x21a4a0
testb $0x1, (%rax,%rcx)
je 0x1c9316
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rax
movq (%rax), %rdx
callq 0xba5c0
movq 0x38(%rsp), %rcx
cmpq 0x120(%rcx), %rax
je 0x1c9316
movq 0x20(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x1c933d
jmp 0x1c9318
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0x1c92c3
jmp 0x1c932a
jmp 0x1c932c
movq 0x38(%rsp), %rax
movq 0x490(%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopw (%rax,%rax)