// File: /workspace/github_c_makefile_star2_O1/MuvikLabs[P]runt/basic.c
// Function: runt_load_basic
runt_int runt_load_basic(runt_vm *vm)
{
    /* quit function for interactive mode */
    runt_keyword_define(vm, "quit", 4, rproc_quit, NULL);
    /* say: prints string */
    runt_keyword_define(vm, "say", 3, rproc_say, NULL);
    /* p: prints float*/
    runt_keyword_define(vm, "p", 1, rproc_print, NULL);
    /* arithmetic */
    runt_keyword_define(vm, "+", 1, rproc_add, NULL);
    runt_keyword_define(vm, "-", 1, rproc_sub, NULL);
    runt_keyword_define(vm, "*", 1, rproc_mul, NULL);
    runt_keyword_define(vm, "/", 1, rproc_div, NULL);

    /* stack operations */
    runt_keyword_define(vm, "dup", 3, rproc_dup, NULL);
    runt_keyword_define(vm, "swap", 4, rproc_swap, NULL);
    runt_keyword_define(vm, "drop", 4, rproc_drop, NULL);
    runt_keyword_define(vm, "peak", 4, rproc_peak, NULL);
    runt_keyword_define(vm, "rot", 3, rproc_rot, NULL);
    runt_keyword_define(vm, "n", 1, rproc_nitems, NULL);
    runt_keyword_define(vm, "rat", 3, rproc_rat, NULL);
    runt_keyword_define(vm, "drops", 5, rproc_drops, NULL);
    runt_keyword_define(vm, "over", 4, rproc_over, NULL);

    /* dynamic plugin loading */

    runt_keyword_define(vm, "dynload", 7, rproc_dynload, NULL);

    /* regular dictionary load */
    runt_keyword_define(vm, "load", 4, rproc_load, NULL);

    /* evaluates a file */
    runt_keyword_define(vm, "eval", 4, rproc_eval, NULL);

    /* conditionals */

    runt_keyword_define(vm, "<", 1, rproc_lt, NULL);
    runt_keyword_define(vm, ">", 1, rproc_gt, NULL);
    runt_keyword_define(vm, "=", 1, rproc_eq, NULL);
    runt_keyword_define(vm, "!=", 2, rproc_neq, NULL);

    /* control */

    load_control(vm);

    runt_keyword_define(vm, "dec", 3, rproc_decr, NULL);
    runt_keyword_define(vm, "decn", 4, rproc_decrn, NULL);
    runt_keyword_define(vm, "inc", 3, rproc_incr, NULL);
    runt_keyword_define(vm, "incn", 4, rproc_incrn, NULL);
    runt_keyword_define(vm, "rep", 3, rproc_rep, NULL);

    runt_keyword_define_with_copy(vm, "loop", 4, rproc_loop,
    rproc_call_copy, NULL);

    /* variables */
    runt_keyword_define(vm, "set", 3, rproc_set, NULL);
    runt_keyword_define_with_copy(vm, "ptr", 3, rproc_ptr, rproc_call_copy, NULL);
    runt_keyword_define_with_copy(vm, "setptr", 6, rproc_setptr, rproc_call_copy, NULL);

    /* clear: clears pools and reloads basic library */
    runt_keyword_define(vm, "clear", 5, rproc_clear, NULL);

    /* print usage */
    runt_keyword_define(vm, "u", 1, rproc_usage, NULL);
    /* get memory usage */
    runt_keyword_define(vm, "m", 1, rproc_mem, NULL);
    /* get cell usage */
    runt_keyword_define(vm, "c", 1, rproc_cells, NULL);

    /* stack bias/unbias */
    runt_keyword_define(vm, "bias", 4, rproc_bias, NULL);
    runt_keyword_define(vm, "unbias", 6, rproc_unbias, NULL);

    /* list words in dictionary */
    runt_keyword_define(vm, "w", 1, rproc_wordlist, NULL);

    /* random number generator */
    srand(time(NULL));
    runt_keyword_define(vm, "rnd", 3, rproc_rand, NULL);
    runt_keyword_define(vm, "urnd", 4, rproc_urand, NULL);

    /* proc size */
    runt_keyword_define(vm, "psize", 5, rproc_psize, NULL);

    /* restore returns the cell + memory pools to a given position */
    runt_keyword_define(vm, "restore", 7, rproc_restore, NULL);

    /* blocks */
    runt_keyword_define_with_copy(vm, "{", 1,
        rproc_block_begin, rcopy_block_begin, NULL);
    runt_keyword_define_with_copy(vm, "}", 1,
        vm->zproc, rcopy_block_end, NULL);

    /* command line arguments */
    runt_keyword_define(vm, "argv", 4, rproc_argv, NULL);
    runt_keyword_define(vm, "argc", 4, rproc_argc, NULL);

    /* dictionary swaps */
    runt_keyword_define(vm, "dnew", 4, rproc_dnew, NULL);
    runt_keyword_define(vm, "dset", 4, rproc_dset, NULL);
    runt_keyword_define(vm, "dswap", 5, rproc_dswap, NULL);

    /* add destructor */
    runt_keyword_define(vm, "dtor", 4, rproc_dtor, NULL);

    /* undo last word defined */
    runt_keyword_define(vm, "oops", 4, rproc_oops, NULL);

    /* key: wait for keypress */
    runt_keyword_define(vm, "key", 3, rproc_key, NULL);

    /* register operations */
    runt_keyword_define(vm, "regset", 6, rproc_regset, NULL);
    runt_keyword_define(vm, "regget", 6, rproc_regget, NULL);

    /* get anonymous cell position */

    runt_keyword_define(vm, "@", 1, rproc_anon, NULL);

    return runt_is_alive(vm);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x31ca(%rip), %rsi      # 0x7364
leaq 0x6c2(%rip), %rcx       # 0x4863
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x31b4(%rip), %rsi      # 0x7369
leaq 0x6be(%rip), %rcx       # 0x487a
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x3239(%rip), %rsi      # 0x740c
leaq 0x6f1(%rip), %rcx       # 0x48cb
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x317c(%rip), %rsi      # 0x736d
leaq 0x713(%rip), %rcx       # 0x490b
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x3160(%rip), %rsi      # 0x736f
leaq 0x773(%rip), %rcx       # 0x4989
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x3144(%rip), %rsi      # 0x7371
leaq 0x794(%rip), %rcx       # 0x49c8
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x3128(%rip), %rsi      # 0x7373
leaq 0x7b5(%rip), %rcx       # 0x4a07
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x310c(%rip), %rsi      # 0x7375
leaq 0x7d6(%rip), %rcx       # 0x4a46
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x3182(%rip), %rsi      # 0x7409
leaq 0x7bd(%rip), %rcx       # 0x4a4b
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x30d4(%rip), %rsi      # 0x7379
leaq 0x7a4(%rip), %rcx       # 0x4a50
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x30bb(%rip), %rsi      # 0x737e
leaq 0x793(%rip), %rcx       # 0x4a5d
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x30a2(%rip), %rsi      # 0x7383
leaq 0x7d7(%rip), %rcx       # 0x4abf
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x30b2(%rip), %rsi      # 0x73b1
leaq 0x8b9(%rip), %rcx       # 0x4bbf
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x306a(%rip), %rsi      # 0x7387
leaq 0x8db(%rip), %rcx       # 0x4bff
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x3050(%rip), %rsi      # 0x738b
leaq 0x9bd(%rip), %rcx       # 0x4cff
movq %rbx, %rdi
movl $0x5, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x3038(%rip), %rsi      # 0x7391
leaq 0x9da(%rip), %rcx       # 0x4d3a
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x301f(%rip), %rsi      # 0x7396
leaq 0xa0b(%rip), %rcx       # 0x4d89
movq %rbx, %rdi
movl $0x7, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x3004(%rip), %rsi      # 0x7399
leaq 0xa97(%rip), %rcx       # 0x4e33
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2feb(%rip), %rsi      # 0x739e
leaq 0xc1b(%rip), %rcx       # 0x4fd5
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2fd2(%rip), %rsi      # 0x73a3
leaq 0xc60(%rip), %rcx       # 0x5038
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2fb6(%rip), %rsi      # 0x73a5
leaq 0xc9b(%rip), %rcx       # 0x5091
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2f9b(%rip), %rsi      # 0x73a8
leaq 0xccd(%rip), %rcx       # 0x50e1
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2f7c(%rip), %rsi      # 0x73a7
leaq 0xcff(%rip), %rcx       # 0x5131
movq %rbx, %rdi
movl $0x2, %edx
xorl %r8d, %r8d
callq 0x1b5e
movq %rbx, %rdi
callq 0x5181
leaq 0x2f59(%rip), %rsi      # 0x73aa
leaq 0xdc4(%rip), %rcx       # 0x521c
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2f3f(%rip), %rsi      # 0x73ae
leaq 0xdd4(%rip), %rcx       # 0x524a
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2f26(%rip), %rsi      # 0x73b3
leaq 0xe07(%rip), %rcx       # 0x529b
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2f0c(%rip), %rsi      # 0x73b7
leaq 0xe08(%rip), %rcx       # 0x52ba
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2ef3(%rip), %rsi      # 0x73bc
leaq 0xe3b(%rip), %rcx       # 0x530b
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2ed9(%rip), %rsi      # 0x73c0
leaq 0xeda(%rip), %rcx       # 0x53c8
leaq 0x1008(%rip), %r14      # 0x54fd
movq %rbx, %rdi
movl $0x4, %edx
movq %r14, %r8
xorl %r9d, %r9d
callq 0x1994
leaq 0x2ef5(%rip), %rsi      # 0x7404
leaq 0xff3(%rip), %rcx       # 0x5509
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2e9b(%rip), %rsi      # 0x73c8
leaq 0x1037(%rip), %rcx      # 0x556b
movq %rbx, %rdi
movl $0x3, %edx
movq %r14, %r8
xorl %r9d, %r9d
callq 0x1994
leaq 0x2e77(%rip), %rsi      # 0x73c5
leaq 0x104a(%rip), %rcx      # 0x559f
movq %rbx, %rdi
movl $0x6, %edx
movq %r14, %r8
xorl %r9d, %r9d
callq 0x1994
leaq 0x2e5d(%rip), %rsi      # 0x73cc
leaq 0x10b9(%rip), %rcx      # 0x562f
movq %rbx, %rdi
movl $0x5, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2e45(%rip), %rsi      # 0x73d2
leaq 0x10e0(%rip), %rcx      # 0x5674
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2e29(%rip), %rsi      # 0x73d4
leaq 0x113a(%rip), %rcx      # 0x56ec
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2de3(%rip), %rsi      # 0x73ac
leaq 0x115a(%rip), %rcx      # 0x572a
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2df1(%rip), %rsi      # 0x73d8
leaq 0x117a(%rip), %rcx      # 0x5768
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2dd1(%rip), %rsi      # 0x73d6
leaq 0x1196(%rip), %rcx      # 0x57a2
movq %rbx, %rdi
movl $0x6, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2dde(%rip), %rsi      # 0x7401
leaq 0x1188(%rip), %rcx      # 0x57b2
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
xorl %edi, %edi
callq 0x10c0
movl %eax, %edi
callq 0x10b0
leaq 0x2d8f(%rip), %rsi      # 0x73de
leaq 0x11f8(%rip), %rcx      # 0x584e
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2d70(%rip), %rsi      # 0x73dd
leaq 0x1244(%rip), %rcx      # 0x58b8
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2d57(%rip), %rsi      # 0x73e2
leaq 0x1258(%rip), %rcx      # 0x58ea
movq %rbx, %rdi
movl $0x5, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2d3f(%rip), %rsi      # 0x73e8
leaq 0x12a7(%rip), %rcx      # 0x5957
movq %rbx, %rdi
movl $0x7, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2d29(%rip), %rsi      # 0x73f0
leaq 0x12fd(%rip), %rcx      # 0x59cb
leaq 0x135b(%rip), %r8       # 0x5a30
movq %rbx, %rdi
movl $0x1, %edx
xorl %r9d, %r9d
callq 0x1994
movq 0x1160(%rbx), %rcx
leaq 0x2cff(%rip), %rsi      # 0x73f2
leaq 0x13a7(%rip), %r8       # 0x5aa1
movq %rbx, %rdi
movl $0x1, %edx
xorl %r9d, %r9d
callq 0x1994
leaq 0x2ce3(%rip), %rsi      # 0x73f4
leaq 0x1403(%rip), %rcx      # 0x5b1b
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2cca(%rip), %rsi      # 0x73f9
leaq 0x149a(%rip), %rcx      # 0x5bd0
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2cb1(%rip), %rsi      # 0x73fe
leaq 0x14b3(%rip), %rcx      # 0x5c07
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2c98(%rip), %rsi      # 0x7403
leaq 0x1594(%rip), %rcx      # 0x5d06
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2c7f(%rip), %rsi      # 0x7408
leaq 0x15ce(%rip), %rcx      # 0x5d5e
movq %rbx, %rdi
movl $0x5, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2c67(%rip), %rsi      # 0x740e
leaq 0x15bd(%rip), %rcx      # 0x5d6b
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2c4e(%rip), %rsi      # 0x7413
leaq 0x1612(%rip), %rcx      # 0x5dde
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2c35(%rip), %rsi      # 0x7418
leaq 0x15f9(%rip), %rcx      # 0x5de3
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2c1b(%rip), %rsi      # 0x741c
leaq 0x15f2(%rip), %rcx      # 0x5dfa
movq %rbx, %rdi
movl $0x6, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2c04(%rip), %rsi      # 0x7423
leaq 0x1630(%rip), %rcx      # 0x5e56
movq %rbx, %rdi
movl $0x6, %edx
xorl %r8d, %r8d
callq 0x1b5e
leaq 0x2bed(%rip), %rsi      # 0x742a
leaq 0x1685(%rip), %rcx      # 0x5ec9
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b5e
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3671