// File: /workspace/github_c_makefile_star2_O3/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 0x3342(%rip), %rsi      # 0x7364
leaq 0x6c2(%rip), %rcx       # 0x46eb
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x332c(%rip), %rsi      # 0x7369
leaq 0x6be(%rip), %rcx       # 0x4702
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x33b1(%rip), %rsi      # 0x740c
leaq 0x6f1(%rip), %rcx       # 0x4753
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x32f4(%rip), %rsi      # 0x736d
leaq 0x713(%rip), %rcx       # 0x4793
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x32d8(%rip), %rsi      # 0x736f
leaq 0x773(%rip), %rcx       # 0x4811
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x32bc(%rip), %rsi      # 0x7371
leaq 0x794(%rip), %rcx       # 0x4850
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x32a0(%rip), %rsi      # 0x7373
leaq 0x7b5(%rip), %rcx       # 0x488f
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x3284(%rip), %rsi      # 0x7375
leaq 0x7d6(%rip), %rcx       # 0x48ce
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x32fa(%rip), %rsi      # 0x7409
leaq 0x7bd(%rip), %rcx       # 0x48d3
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x324c(%rip), %rsi      # 0x7379
leaq 0x7a4(%rip), %rcx       # 0x48d8
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x3233(%rip), %rsi      # 0x737e
leaq 0x793(%rip), %rcx       # 0x48e5
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x321a(%rip), %rsi      # 0x7383
leaq 0x7d7(%rip), %rcx       # 0x4947
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x322a(%rip), %rsi      # 0x73b1
leaq 0x8b9(%rip), %rcx       # 0x4a47
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x31e2(%rip), %rsi      # 0x7387
leaq 0x8db(%rip), %rcx       # 0x4a87
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x31c8(%rip), %rsi      # 0x738b
leaq 0x9bd(%rip), %rcx       # 0x4b87
movq %rbx, %rdi
movl $0x5, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x31b0(%rip), %rsi      # 0x7391
leaq 0x9da(%rip), %rcx       # 0x4bc2
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x3197(%rip), %rsi      # 0x7396
leaq 0xa0b(%rip), %rcx       # 0x4c11
movq %rbx, %rdi
movl $0x7, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x317c(%rip), %rsi      # 0x7399
leaq 0xa97(%rip), %rcx       # 0x4cbb
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x3163(%rip), %rsi      # 0x739e
leaq 0xc1c(%rip), %rcx       # 0x4e5e
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x314a(%rip), %rsi      # 0x73a3
leaq 0xc61(%rip), %rcx       # 0x4ec1
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x312e(%rip), %rsi      # 0x73a5
leaq 0xc9c(%rip), %rcx       # 0x4f1a
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x3113(%rip), %rsi      # 0x73a8
leaq 0xcce(%rip), %rcx       # 0x4f6a
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x30f4(%rip), %rsi      # 0x73a7
leaq 0xd00(%rip), %rcx       # 0x4fba
movq %rbx, %rdi
movl $0x2, %edx
xorl %r8d, %r8d
callq 0x1b1d
movq %rbx, %rdi
callq 0x500a
leaq 0x30d1(%rip), %rsi      # 0x73aa
leaq 0xdc5(%rip), %rcx       # 0x50a5
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x30b7(%rip), %rsi      # 0x73ae
leaq 0xdd5(%rip), %rcx       # 0x50d3
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x309e(%rip), %rsi      # 0x73b3
leaq 0xe08(%rip), %rcx       # 0x5124
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x3084(%rip), %rsi      # 0x73b7
leaq 0xe09(%rip), %rcx       # 0x5143
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x306b(%rip), %rsi      # 0x73bc
leaq 0xe3c(%rip), %rcx       # 0x5194
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x3051(%rip), %rsi      # 0x73c0
leaq 0xedb(%rip), %rcx       # 0x5251
leaq 0x1019(%rip), %r14      # 0x5396
movq %rbx, %rdi
movl $0x4, %edx
movq %r14, %r8
xorl %r9d, %r9d
callq 0x195f
leaq 0x306d(%rip), %rsi      # 0x7404
leaq 0x1004(%rip), %rcx      # 0x53a2
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x3013(%rip), %rsi      # 0x73c8
leaq 0x1048(%rip), %rcx      # 0x5404
movq %rbx, %rdi
movl $0x3, %edx
movq %r14, %r8
xorl %r9d, %r9d
callq 0x195f
leaq 0x2fef(%rip), %rsi      # 0x73c5
leaq 0x105b(%rip), %rcx      # 0x5438
movq %rbx, %rdi
movl $0x6, %edx
movq %r14, %r8
xorl %r9d, %r9d
callq 0x195f
leaq 0x2fd5(%rip), %rsi      # 0x73cc
leaq 0x10ca(%rip), %rcx      # 0x54c8
movq %rbx, %rdi
movl $0x5, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2fbd(%rip), %rsi      # 0x73d2
leaq 0x10f1(%rip), %rcx      # 0x550d
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2fa1(%rip), %rsi      # 0x73d4
leaq 0x114b(%rip), %rcx      # 0x5585
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2f5b(%rip), %rsi      # 0x73ac
leaq 0x116b(%rip), %rcx      # 0x55c3
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2f69(%rip), %rsi      # 0x73d8
leaq 0x118b(%rip), %rcx      # 0x5601
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2f49(%rip), %rsi      # 0x73d6
leaq 0x11a7(%rip), %rcx      # 0x563b
movq %rbx, %rdi
movl $0x6, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2f56(%rip), %rsi      # 0x7401
leaq 0x1199(%rip), %rcx      # 0x564b
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
xorl %edi, %edi
callq 0x10c0
movl %eax, %edi
callq 0x10b0
leaq 0x2f07(%rip), %rsi      # 0x73de
leaq 0x1209(%rip), %rcx      # 0x56e7
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2ee8(%rip), %rsi      # 0x73dd
leaq 0x1255(%rip), %rcx      # 0x5751
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2ecf(%rip), %rsi      # 0x73e2
leaq 0x1269(%rip), %rcx      # 0x5783
movq %rbx, %rdi
movl $0x5, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2eb7(%rip), %rsi      # 0x73e8
leaq 0x12b8(%rip), %rcx      # 0x57f0
movq %rbx, %rdi
movl $0x7, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2ea1(%rip), %rsi      # 0x73f0
leaq 0x130e(%rip), %rcx      # 0x5864
leaq 0x136c(%rip), %r8       # 0x58c9
movq %rbx, %rdi
movl $0x1, %edx
xorl %r9d, %r9d
callq 0x195f
movq 0x1160(%rbx), %rcx
leaq 0x2e77(%rip), %rsi      # 0x73f2
leaq 0x13b8(%rip), %r8       # 0x593a
movq %rbx, %rdi
movl $0x1, %edx
xorl %r9d, %r9d
callq 0x195f
leaq 0x2e5b(%rip), %rsi      # 0x73f4
leaq 0x1414(%rip), %rcx      # 0x59b4
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2e42(%rip), %rsi      # 0x73f9
leaq 0x14ab(%rip), %rcx      # 0x5a69
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2e29(%rip), %rsi      # 0x73fe
leaq 0x14c4(%rip), %rcx      # 0x5aa0
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2e10(%rip), %rsi      # 0x7403
leaq 0x15a5(%rip), %rcx      # 0x5b9f
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2df7(%rip), %rsi      # 0x7408
leaq 0x15e8(%rip), %rcx      # 0x5c00
movq %rbx, %rdi
movl $0x5, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2ddf(%rip), %rsi      # 0x740e
leaq 0x15d7(%rip), %rcx      # 0x5c0d
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2dc6(%rip), %rsi      # 0x7413
leaq 0x1634(%rip), %rcx      # 0x5c88
movq %rbx, %rdi
movl $0x4, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2dad(%rip), %rsi      # 0x7418
leaq 0x161b(%rip), %rcx      # 0x5c8d
movq %rbx, %rdi
movl $0x3, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2d93(%rip), %rsi      # 0x741c
leaq 0x1614(%rip), %rcx      # 0x5ca4
movq %rbx, %rdi
movl $0x6, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2d7c(%rip), %rsi      # 0x7423
leaq 0x1652(%rip), %rcx      # 0x5d00
movq %rbx, %rdi
movl $0x6, %edx
xorl %r8d, %r8d
callq 0x1b1d
leaq 0x2d65(%rip), %rsi      # 0x742a
leaq 0x16a7(%rip), %rcx      # 0x5d73
movq %rbx, %rdi
movl $0x1, %edx
xorl %r8d, %r8d
callq 0x1b1d
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x35b0