// File: /workspace/github_c_makefile_star2_O0/adamjedlicka[P]blu/src/vm/lib/core/core.c
// Function: bluInitCore
void bluInitCore(bluVM* vm) {
	bluInterpret(vm, coreSource, "__CORE__");

	bluObj* objectClass = bluGetGlobal(vm, "Object");
	bluDefineMethod(vm, objectClass, "getClass", Object_getClass, 0);
	bluDefineMethod(vm, objectClass, "isFalsey", Object_isFalsey, 0);
	bluDefineMethod(vm, objectClass, "isTruthy", Object_isTruthy, 0);

	bluObj* nilClass = bluGetGlobal(vm, "Nil");
	vm->nilClass = (bluObjClass*)nilClass;

	bluObj* boolClass = bluGetGlobal(vm, "Bool");
	vm->boolClass = (bluObjClass*)boolClass;

	bluObj* numberClass = bluGetGlobal(vm, "Number");
	bluDefineMethod(vm, numberClass, "floor", Number_floor, 0);
	bluDefineMethod(vm, numberClass, "ceil", Number_ceil, 0);
	vm->numberClass = (bluObjClass*)numberClass;

	bluObj* arrayClass = bluGetGlobal(vm, "Array");
	bluDefineMethod(vm, arrayClass, "push", Array_push, 1);
	bluDefineMethod(vm, arrayClass, "len", Array_len, 0);
	bluDefineMethod(vm, arrayClass, "at", Array_at, 1);
	vm->arrayClass = (bluObjClass*)arrayClass;

	bluObj* classClass = bluGetGlobal(vm, "Class");
	vm->classClass = (bluObjClass*)classClass;

	bluObj* functionClass = bluGetGlobal(vm, "Function");
	vm->functionClass = (bluObjClass*)functionClass;

	bluObj* stringClass = bluGetGlobal(vm, "String");
	bluDefineMethod(vm, stringClass, "len", String_len, 0);
	bluDefineMethod(vm, stringClass, "reverse", String_reverse, 0);
	bluDefineMethod(vm, stringClass, "toNumber", String_toNumber, 0);
	bluDefineMethod(vm, stringClass, "split", String_split, 1);
	bluDefineMethod(vm, stringClass, "at", String_at, 1);
	bluDefineMethod(vm, stringClass, "substring", String_substring, 2);
	vm->stringClass = (bluObjClass*)stringClass;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq 0xe3f9(%rip), %rsi      # 0x145c0
leaq 0x8892(%rip), %rdx      # 0xea60
callq 0x98e0
movq -0x8(%rbp), %rdi
leaq 0x8345(%rip), %rsi      # 0xe523
callq 0xc3a0
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq 0x8873(%rip), %rdx      # 0xea69
leaq -0x86d(%rip), %rcx      # 0x5990
xorl %r8d, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq 0x885e(%rip), %rdx      # 0xea72
leaq -0x81b(%rip), %rcx      # 0x5a00
xorl %r8d, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq 0x8849(%rip), %rdx      # 0xea7b
leaq -0x7c9(%rip), %rcx      # 0x5a70
xorl %r8d, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
leaq 0x8838(%rip), %rsi      # 0xea84
callq 0xc3a0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x101838(%rax)
movq -0x8(%rbp), %rdi
leaq 0x8819(%rip), %rsi      # 0xea88
callq 0xc3a0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x101840(%rax)
movq -0x8(%rbp), %rdi
leaq 0x8832(%rip), %rsi      # 0xeac4
callq 0xc3a0
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
leaq 0x87e3(%rip), %rdx      # 0xea8d
leaq -0x7d1(%rip), %rcx      # 0x5ae0
xorl %r8d, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
leaq 0x87cb(%rip), %rdx      # 0xea93
leaq -0x78f(%rip), %rcx      # 0x5b40
xorl %r8d, %r8d
callq 0xc440
movq -0x28(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x101848(%rax)
movq -0x8(%rbp), %rdi
leaq 0x87a7(%rip), %rsi      # 0xea98
callq 0xc3a0
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq 0x8795(%rip), %rdx      # 0xea9e
leaq -0x760(%rip), %rcx      # 0x5bb0
movl $0x1, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq 0x8779(%rip), %rdx      # 0xeaa3
leaq -0x6a1(%rip), %rcx      # 0x5c90
xorl %r8d, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq 0x875f(%rip), %rdx      # 0xeaa7
leaq -0x66f(%rip), %rcx      # 0x5ce0
movl $0x1, %r8d
callq 0xc440
movq -0x30(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x101850(%rax)
movq -0x8(%rbp), %rdi
leaq 0x86f8(%rip), %rsi      # 0xea6c
callq 0xc3a0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x101858(%rax)
movq -0x8(%rbp), %rdi
leaq 0x8713(%rip), %rsi      # 0xeaaa
callq 0xc3a0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x101860(%rax)
movq -0x8(%rbp), %rdi
leaq 0x86f9(%rip), %rsi      # 0xeab3
callq 0xc3a0
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq 0x86d1(%rip), %rdx      # 0xeaa3
leaq -0x699(%rip), %rcx      # 0x5d40
xorl %r8d, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq 0x86ca(%rip), %rdx      # 0xeaba
leaq -0x667(%rip), %rcx      # 0x5d90
xorl %r8d, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq 0x86b4(%rip), %rdx      # 0xeac2
leaq -0x5b5(%rip), %rcx      # 0x5e60
xorl %r8d, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq 0x869f(%rip), %rdx      # 0xeacb
leaq -0x573(%rip), %rcx      # 0x5ec0
movl $0x1, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq 0x865a(%rip), %rdx      # 0xeaa7
leaq -0x404(%rip), %rcx      # 0x6050
movl $0x1, %r8d
callq 0xc440
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq 0x8663(%rip), %rdx      # 0xead1
leaq -0x385(%rip), %rcx      # 0x60f0
movl $0x2, %r8d
callq 0xc440
movq -0x48(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x101868(%rax)
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop