// File: /workspace/github_c_makefile_star2_O2/samsonjs[P]lake/src/primitive.c
// Function: bind_primitives
void bind_primitives(LakeCtx *ctx)
{
#define DEFINE(name, fn, arity)                                                \
    env_define(ctx->toplevel, sym_intern(ctx, name),                           \
               VAL(prim_make(name, arity, fn)))

    DEFINE("car", _car, 1);
    DEFINE("cdr", _cdr, 1);
    DEFINE("cons", _cons, 2);
    DEFINE("null?", _nullP, 1);
    DEFINE("pair?", _pairP, 1);
    DEFINE("is?", _isP, 2);
    DEFINE("equal?", _equalP, 2);
    DEFINE("not", _not, 1);
    DEFINE("+", _add, ARITY_VARARGS);
    DEFINE("-", _sub, ARITY_VARARGS);
    DEFINE("*", _mul, ARITY_VARARGS);
    DEFINE("/", _div, ARITY_VARARGS);
    DEFINE("=", _int_eq, ARITY_VARARGS);
    DEFINE("<", _int_lt, ARITY_VARARGS);
    DEFINE(">", _int_gt, ARITY_VARARGS);
    DEFINE("set-car!", _set_carB, 2);

    DEFINE("display", _display, ARITY_VARARGS);

    DEFINE("symbol?", _symbolP, 1);
    DEFINE("list?", _listP, 1);
    DEFINE("dotted-list?", _dotted_listP, 1);
    DEFINE("number?", _numberP, 1);
    DEFINE("integer?", _integerP, 1);
    DEFINE("string?", _stringP, 1);
    DEFINE("bool?", _boolP, 1);
    DEFINE("function?", _functionP, 1);
    DEFINE("primitive?", _primitiveP, 1);

    /* string=? */
    /* string< */
    /* string> */
    /* string-concatenate */
    /* string-slice */

#undef DEFINE
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %r14
leaq 0x2ab4(%rip), %r15      # 0x64b2
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0x59b(%rip), %rdx       # 0x3fab
pushq $0x1
popq %rbp
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x2a81(%rip), %r15      # 0x64b6
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0x604(%rip), %rdx       # 0x404e
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r15
leaq 0x2a4e(%rip), %r12      # 0x64ba
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x67c(%rip), %rdx       # 0x40fd
pushq $0x2
popq %rsi
movq %r12, %rdi
movl %esi, %r14d
callq 0x394c
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r15
leaq 0x2a18(%rip), %r12      # 0x64bf
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x669(%rip), %rdx       # 0x4125
movq %r12, %rdi
movl %ebp, %esi
callq 0x394c
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r15
leaq 0x29e7(%rip), %r12      # 0x64c5
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x66d(%rip), %rdx       # 0x4160
movq %r12, %rdi
movl %ebp, %esi
callq 0x394c
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r15
leaq 0x29b6(%rip), %r12      # 0x64cb
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x671(%rip), %rdx       # 0x419b
movq %r12, %rdi
movl %r14d, %esi
callq 0x394c
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r15
leaq 0x2982(%rip), %r12      # 0x64cf
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x66d(%rip), %rdx       # 0x41cf
movq %r12, %rdi
movl %r14d, %esi
callq 0x394c
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r15
leaq 0x2951(%rip), %r12      # 0x64d6
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x669(%rip), %rdx       # 0x4203
movq %r12, %rdi
movl %ebp, %esi
callq 0x394c
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r12
leaq 0x291e(%rip), %r13      # 0x64da
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4c24
movq %rax, %r14
leaq 0x654(%rip), %rdx       # 0x4225
pushq $-0x1
popq %r15
movq %r13, %rdi
movl %r15d, %esi
callq 0x394c
movq %r12, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x28e4(%rip), %r12      # 0x64dc
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x6d2(%rip), %rdx       # 0x42df
movq %r12, %rdi
movl %r15d, %esi
callq 0x394c
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x28ae(%rip), %r12      # 0x64de
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x792(%rip), %rdx       # 0x43d7
movq %r12, %rdi
movl %r15d, %esi
callq 0x394c
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x2878(%rip), %r12      # 0x64e0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x816(%rip), %rdx       # 0x4493
movq %r12, %rdi
movl %r15d, %esi
callq 0x394c
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x2842(%rip), %r12      # 0x64e2
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0x988(%rip), %rdx       # 0x463d
movq %r12, %rdi
movl %r15d, %esi
callq 0x394c
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x280c(%rip), %r12      # 0x64e4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0xa27(%rip), %rdx       # 0x4714
movq %r12, %rdi
movl %r15d, %esi
callq 0x394c
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x27a0(%rip), %r12      # 0x64b0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0xad1(%rip), %rdx       # 0x47f6
movq %r12, %rdi
movl %r15d, %esi
callq 0x394c
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x279e(%rip), %r12      # 0x64e6
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0xb7b(%rip), %rdx       # 0x48d8
movq %r12, %rdi
pushq $0x2
popq %rsi
callq 0x394c
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x276f(%rip), %r12      # 0x64ef
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4c24
movq %rax, %r13
leaq 0xbf0(%rip), %rdx       # 0x4985
movq %r12, %rdi
movl %r15d, %esi
callq 0x394c
movq %r14, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x273f(%rip), %r15      # 0x64f7
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0xc31(%rip), %rdx       # 0x49fe
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x2717(%rip), %r15      # 0x6506
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0xc23(%rip), %rdx       # 0x4a27
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x26d9(%rip), %r15      # 0x64ff
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0xc15(%rip), %rdx       # 0x4a50
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x26af(%rip), %r15      # 0x650c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0xc07(%rip), %rdx       # 0x4a79
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x2680(%rip), %r15      # 0x6514
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0xbf9(%rip), %rdx       # 0x4aa2
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x2652(%rip), %r15      # 0x651d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0xbeb(%rip), %rdx       # 0x4acb
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x2623(%rip), %r15      # 0x6525
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0xbdd(%rip), %rdx       # 0x4af4
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x25f2(%rip), %r15      # 0x652b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %r12
leaq 0xbcf(%rip), %rdx       # 0x4b1d
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x1600
movq (%rbx), %r14
leaq 0x25c5(%rip), %r15      # 0x6535
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4c24
movq %rax, %rbx
leaq 0xbc1(%rip), %rdx       # 0x4b46
movq %r15, %rdi
movl %ebp, %esi
callq 0x394c
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1600