// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: syntax
static s7_pointer syntax(s7_scheme *sc, const char *name, opcode_t op, s7_pointer min_args, s7_pointer max_args, const char *doc)
                {
                    s7_pointer x, syn;
                    uint64_t hash;
                    uint32_t loc;

                    hash = raw_string_hash((const uint8_t *)name, safe_strlen(name));
                    loc = hash % SYMBOL_TABLE_SIZE;
                    x = new_symbol(sc, name, safe_strlen(name), hash, loc);

                    syn = alloc_pointer(sc);
                    set_type(syn, T_SYNTAX | T_SYNTACTIC | T_DONT_EVAL_ARGS | T_GLOBAL | T_UNHEAP);
                    syntax_opcode(syn) = op;
                    syntax_set_symbol(syn, x);
                    syntax_min_args(syn) = integer(min_args);
                    syntax_max_args(syn) = ((max_args == max_arity) ? -1 : integer(max_args));
                    syntax_documentation(syn) = doc;

                    set_global_slot(x, make_permanent_slot(sc, x, syn));
                    set_initial_slot(x, make_permanent_slot(sc, x, syn));
                    /* set_local_slot(x, global_slot(x)); */
                    set_type_bit(x, T_SYMBOL | T_SYNTACTIC | T_GLOBAL | T_UNHEAP);
                    symbol_set_local_unchecked(x, 0LL, sc->nil);
                    symbol_set_ctr(x, 0;)
                        return(x);
                }

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
movq %rdx, 0x60(%rsp)
movq %rcx, 0x58(%rsp)
movq %r8, 0x50(%rsp)
movq %r9, 0x48(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x68(%rsp), %rdi
callq 0xa430
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0xa540
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movl $0x7fed, %ecx           # imm = 0x7FED
xorl %edx, %edx
divq %rcx
movl %edx, %eax
movl %eax, 0x2c(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x68(%rsp), %rdi
callq 0xa430
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rax, %rdx
movq 0x30(%rsp), %rcx
movl 0x2c(%rsp), %r8d
callq 0xaec0
movq %rax, 0x40(%rsp)
movq 0x70(%rsp), %rdi
callq 0x148a0
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movabsq $0x4000000000012209, %rcx # imm = 0x4000000000012209
movq %rcx, (%rax)
movq 0x60(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x40(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
movl %eax, %ecx
movq 0x38(%rsp), %rax
movl %ecx, 0x18(%rax)
movq 0x50(%rsp), %rax
cmpq 0x1ba570(%rip), %rax    # 0x21bed8
jne 0x61978
movq $-0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x61986
movq 0x50(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movl %eax, %ecx
movq 0x38(%rsp), %rax
movl %ecx, 0x1c(%rax)
movq 0x48(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x70(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0xbb00
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x70(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0xbb00
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rax), %rax
movq %rcx, 0x20(%rax)
movq 0x40(%rsp), %rax
movabsq $0x400000000001020a, %rcx # imm = 0x400000000001020A
orq (%rax), %rcx
movq %rcx, (%rax)
movq 0x70(%rsp), %rax
movq 0x110(%rax), %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x40(%rsp), %rax
movq $0x0, 0x20(%rax)
movq 0x40(%rsp), %rax
movl 0x28(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x28(%rax)
movq 0x40(%rsp), %rax
movl $0x0, 0x28(%rax)
movq 0x40(%rsp), %rax
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)