// File: /workspace/github_c_makefile_star2_O1/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %r9, 0x18(%rsp)
movq %r8, %r15
movq %rcx, 0x10(%rsp)
movq %rdx, %r13
movq %rsi, %rbp
movq %rdi, %rbx
testq %rsi, %rsi
je 0x6139f
cmpb $0x0, (%rbp)
je 0x6139f
movq $-0x1, %rax
leaq 0x1(%rax), %rdx
cmpb $0x0, 0x1(%rbp,%rax)
movq %rdx, %rax
jne 0x6138f
jmp 0x613a1
xorl %edx, %edx
movq $0x0, 0x8(%rsp)
cmpq $0x8, %rdx
jg 0x613bf
leaq 0x8(%rsp), %rdi
movq %rbp, %rsi
callq 0x93e0
jmp 0x613fc
movq (%rbp), %r12
movq %r12, 0x8(%rsp)
leaq 0x20(%rsp), %r14
movq $0x0, (%r14)
leaq 0x8(%rbp), %rsi
cmpq $0x10, %rdx
movl $0x10, %eax
cmovlq %rdx, %rax
addq $-0x8, %rax
movq %r14, %rdi
movq %rax, %rdx
callq 0x93e0
addq (%r14), %r12
movq %r12, 0x8(%rsp)
movq 0x8(%rsp), %rcx
movabsq $-0x7fecfd2d94c4151b, %rdx # imm = 0x801302D26B3BEAE5
movq %rcx, %rax
mulq %rdx
shrq $0xe, %rdx
imull $0x7fed, %edx, %eax     # imm = 0x7FED
movl %ecx, %r8d
subl %eax, %r8d
testq %rbp, %rbp
je 0x61443
cmpb $0x0, (%rbp)
je 0x61443
movq $-0x1, %rax
leaq 0x1(%rax), %rdx
cmpb $0x0, 0x1(%rbp,%rax)
movq %rdx, %rax
jne 0x61433
jmp 0x61445
xorl %edx, %edx
movabsq $0x4000000000000020, %r12 # imm = 0x4000000000000020
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xa5ef
movq %rax, %rbp
movq %rbx, %rdi
callq 0xfa3b
movq %rax, %r14
leaq 0x121e9(%r12), %rax
movq %rax, (%r14)
movq %r13, 0x10(%r14)
movq %rbp, 0x8(%r14)
movq 0x10(%rsp), %rax
movl 0x8(%rax), %eax
movl %eax, 0x18(%r14)
cmpq %r15, 0xf2f1a(%rip)     # 0x1543a8
je 0x61496
movl 0x8(%r15), %eax
jmp 0x6149b
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x1c(%r14)
movq 0x18(%rsp), %rax
movq %rax, 0x20(%r14)
movq %rbx, %rdi
callq 0xfa3b
movq %r12, (%rax)
movq %rbp, 0x8(%rax)
movq %r14, 0x10(%rax)
movq %rax, 0x10(%rbp)
movq %rbx, %rdi
callq 0xfa3b
movq %r12, (%rax)
movq %rbp, 0x8(%rax)
movq %r14, 0x10(%rax)
movq 0x8(%rbp), %rcx
movq 0x20(%rcx), %rcx
movq %rax, 0x20(%rcx)
addq $0x101ea, %r12          # imm = 0x101EA
orq %r12, (%rbp)
movq 0x110(%rbx), %rax
movq %rax, 0x18(%rbp)
movq $0x0, 0x20(%rbp)
movl $0x0, 0x28(%rbp)
movq %rbp, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq