// File: /workspace/github_cpp_makefile_star2_O2/iamlouk[P]asbi/src/macros.cc
// Function: asbi::Context::load_macros()
void Context::load_macros() {
	static bool seeded = false;
	if (!seeded) {
		seeded = true;
		srand((unsigned)time(nullptr));
	}

	global_env->decl(this, "assert",   Value::macro( macro_assert  ));
	global_env->decl(this, "mod",      Value::macro( macro_mod     ));
	global_env->decl(this, "random",   Value::macro( macro_random  ));
	global_env->decl(this, "toInt",    Value::macro( macro_toInt   ));
	global_env->decl(this, "len",      Value::macro( macro_len     ));
	global_env->decl(this, "__debug",  Value::macro( macro_debug   ));
	global_env->decl(this, "__scope",  Value::macro( macro_scope   ));
	global_env->decl(this, "import",   Value::macro( macro_import  ));
	global_env->decl(this, "typeof",   Value::macro( macro_typeof  ));
	global_env->decl(this, "reduce",   Value::macro( macro_reduce  ));
	global_env->decl(this, "map",      Value::macro( macro_map     ));
	global_env->decl(this, "eval",     Value::macro( macro_eval    ));

	auto io = new MapContainer(this);
	io->set(Value::symbol("print", this), Value::macro(macro_io_print));
	io->set(Value::symbol("println", this), Value::macro(macro_io_println));
	io->set(Value::symbol("readline", this), Value::macro(macro_io_readline));
	global_env->decl(this, "io", Value::map(io));

	auto time = new MapContainer(this);
	time->set(Value::symbol("now", this), Value::macro(macro_time_now));
	time->set(Value::symbol("runat", this), Value::macro(macro_time_runAt));
	global_env->decl(this, "time", Value::map(time));

}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpb $0x0, 0x106c0(%rip)     # 0x203a6
jne 0xfcfd
movb $0x1, 0x106b7(%rip)     # 0x203a6
xorl %edi, %edi
callq 0x5350
movl %eax, %edi
callq 0x5370
movq 0x4f8(%rbx), %rdi
leaq 0x540d(%rip), %rdx      # 0x15118
leaq 0x292(%rip), %r8        # 0xffa4
pushq $0x7
popq %rbp
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x53f2(%rip), %rdx      # 0x1511f
leaq 0x3dc(%rip), %r8        # 0x10110
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x53d7(%rip), %rdx      # 0x15123
leaq 0x46f(%rip), %r8        # 0x101c2
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x53bf(%rip), %rdx      # 0x1512a
leaq 0x4bc(%rip), %r8        # 0x1022e
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x53a6(%rip), %rdx      # 0x15130
leaq 0x52e(%rip), %r8        # 0x102bf
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x538b(%rip), %rdx      # 0x15134
leaq 0x5ce(%rip), %r8        # 0x1037e
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x5374(%rip), %rdx      # 0x1513c
leaq 0x6ed(%rip), %r8        # 0x104bc
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x535d(%rip), %rdx      # 0x15144
leaq 0x728(%rip), %r8        # 0x10516
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x5345(%rip), %rdx      # 0x1514b
leaq 0x9ba(%rip), %r8        # 0x107c7
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x532d(%rip), %rdx      # 0x15152
leaq 0xa6f(%rip), %r8        # 0x1089b
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x4e6b(%rip), %rdx      # 0x14caf
leaq 0xc39(%rip), %r8        # 0x10a84
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
movq 0x4f8(%rbx), %rdi
leaq 0x41aa(%rip), %rdx      # 0x1400d
leaq 0xe48(%rip), %r8        # 0x10cb2
movq %rbx, %rsi
movl %ebp, %ecx
callq 0xed4a
pushq $0x68
popq %rdi
callq 0x5390
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xd80c
leaq 0x52c8(%rip), %rdi      # 0x15159
movq %rbx, %rsi
callq 0xda86
leaq 0xfa0(%rip), %r8        # 0x10e40
pushq $0x7
popq %rbp
movq %r14, %rdi
movl %eax, %esi
movl %ebp, %ecx
callq 0xd90c
leaq 0x52a9(%rip), %rdi      # 0x1515f
movq %rbx, %rsi
callq 0xda86
leaq 0x100e(%rip), %r8       # 0x10ed3
movq %r14, %rdi
movl %eax, %esi
movl %ebp, %ecx
callq 0xd90c
leaq 0x528f(%rip), %rdi      # 0x15167
movq %rbx, %rsi
callq 0xda86
leaq 0x108a(%rip), %r8       # 0x10f71
movq %r14, %rdi
movl %eax, %esi
movl %ebp, %ecx
callq 0xd90c
movq 0x4f8(%rbx), %rdi
leaq 0x526f(%rip), %rdx      # 0x15170
pushq $0x6
popq %rcx
movq %rbx, %rsi
movq %r14, %r8
callq 0xed4a
pushq $0x68
popq %rdi
callq 0x5390
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xd80c
leaq 0x5247(%rip), %rdi      # 0x15173
movq %rbx, %rsi
callq 0xda86
leaq 0x1111(%rip), %r8       # 0x1104c
pushq $0x7
popq %rbp
movq %r14, %rdi
movl %eax, %esi
movl %ebp, %ecx
callq 0xd90c
leaq 0x5226(%rip), %rdi      # 0x15177
movq %rbx, %rsi
callq 0xda86
leaq 0x1151(%rip), %r8       # 0x110b1
movq %r14, %rdi
movl %eax, %esi
movl %ebp, %ecx
callq 0xd90c
movq 0x4f8(%rbx), %rdi
leaq 0x5203(%rip), %rdx      # 0x1517d
pushq $0x6
popq %rcx
movq %rbx, %rsi
movq %r14, %r8
popq %rbx
popq %r14
popq %rbp
jmp 0xed4a
jmp 0xff8e
movq %rax, %rbx
pushq $0x68
popq %rsi
movq %r14, %rdi
callq 0x53a0
movq %rbx, %rdi
callq 0x5600