// File: /workspace/github_c_makefile_star2_O1/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 0x1e96(%rip), %r15      # 0x64b2
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %ebp
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movq %rbp, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x1, %eax
movl %eax, 0x18(%r13)
leaq 0x9d1(%rip), %rax       # 0x5033
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1e38(%rip), %r15      # 0x64b6
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %ebp
movl %ebp, (%rax)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x1, %eax
movl %eax, 0x18(%r13)
leaq 0x9c5(%rip), %rax       # 0x508a
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1dd9(%rip), %r15      # 0x64ba
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x2, %eax
movl %eax, 0x18(%r13)
leaq 0x9c8(%rip), %rax       # 0x50f0
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1d7b(%rip), %r15      # 0x64bf
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x1, %ebp
movl %ebp, 0x18(%r13)
leaq 0x998(%rip), %rax       # 0x511e
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1d23(%rip), %r15      # 0x64c5
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl %ebp, 0x18(%r13)
leaq 0x975(%rip), %rax       # 0x515b
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1cc9(%rip), %r15      # 0x64cb
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x2, %ebp
movl %ebp, 0x18(%r13)
leaq 0x94d(%rip), %rax       # 0x5198
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1c68(%rip), %r15      # 0x64cf
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl %ebp, 0x18(%r13)
leaq 0x927(%rip), %rax       # 0x51d2
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1c0f(%rip), %r15      # 0x64d6
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x1, %eax
movl %eax, 0x18(%r13)
leaq 0x8f7(%rip), %rax       # 0x520c
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1ba9(%rip), %r15      # 0x64da
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x18(%r13)
leaq 0x8b6(%rip), %rax       # 0x522e
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1b48(%rip), %r15      # 0x64dc
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x18(%r13)
leaq 0x8de(%rip), %rax       # 0x52b9
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1ae7(%rip), %r15      # 0x64de
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x18(%r13)
leaq 0x909(%rip), %rax       # 0x5347
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1a86(%rip), %r15      # 0x64e0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x18(%r13)
leaq 0x938(%rip), %rax       # 0x53d9
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1a25(%rip), %r15      # 0x64e2
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x18(%r13)
leaq 0x9cf(%rip), %rax       # 0x54d3
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x19c4(%rip), %r15      # 0x64e4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x18(%r13)
leaq 0xa27(%rip), %rax       # 0x558e
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x192d(%rip), %r15      # 0x64b0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x18(%r13)
leaq 0xa7b(%rip), %rax       # 0x5645
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1900(%rip), %r15      # 0x64e6
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x2, %eax
movl %eax, 0x18(%r13)
leaq 0xacf(%rip), %rax       # 0x56fc
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x18a6(%rip), %r15      # 0x64ef
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, 0x18(%r13)
leaq 0xade(%rip), %rax       # 0x576e
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x184b(%rip), %r15      # 0x64f7
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl %ebp, (%rax)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x1, %ebp
movl %ebp, 0x18(%r13)
leaq 0xaf4(%rip), %rax       # 0x57e2
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x17fc(%rip), %r15      # 0x6506
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl %ebp, 0x18(%r13)
movl $0x1, %ebp
leaq 0xaba(%rip), %rax       # 0x580d
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1790(%rip), %r15      # 0x64ff
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl %ebp, 0x18(%r13)
movl $0x1, %ebp
leaq 0xa80(%rip), %rax       # 0x5838
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1738(%rip), %r15      # 0x650c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl %ebp, 0x18(%r13)
movl $0x1, %ebp
leaq 0xa46(%rip), %rax       # 0x5863
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x16db(%rip), %r15      # 0x6514
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl %ebp, 0x18(%r13)
movl $0x1, %ebp
leaq 0xa0c(%rip), %rax       # 0x588e
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x167f(%rip), %r15      # 0x651d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl %ebp, 0x18(%r13)
movl $0x1, %ebp
leaq 0x9d2(%rip), %rax       # 0x58b9
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1622(%rip), %r15      # 0x6525
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl %ebp, 0x18(%r13)
leaq 0x99d(%rip), %rax       # 0x58e4
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x15c8(%rip), %r15      # 0x652b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %r12
movl $0x28, %edi
callq 0x11a0
movq %rax, %r13
movl $0x7, %eax
movl %eax, (%r13)
movl $0x7, %ebp
movl $0x28, %eax
movq %rax, 0x8(%r13)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r13)
movl $0x1, %eax
movl %eax, 0x18(%r13)
leaq 0x95e(%rip), %rax       # 0x590f
movq %rax, 0x20(%r13)
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x22fe
movq (%rbx), %r14
leaq 0x1568(%rip), %r15      # 0x6535
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5a24
movq %rax, %rbx
movl $0x28, %edi
callq 0x11a0
movq %rax, %r12
movl %ebp, (%rax)
movl $0x28, %eax
movq %rax, 0x8(%r12)
movq %r15, %rdi
callq 0x11f0
movq %rax, 0x10(%r12)
movl $0x1, %eax
movl %eax, 0x18(%r12)
leaq 0x928(%rip), %rax       # 0x593a
movq %rax, 0x20(%r12)
movq %r14, %rdi
movq %rbx, %rsi
movq %r12, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x22fe