// File: /workspace/github_cpp_makefile_star2_O3/TsukiGva2[P]Blade-lang/blade.cpp
// Function: main
int main (int argc, char** argv) {
// first, i created a map
// what the map does is simple,
// so it maps a std::string, i.e "double quoted text"
// to a function pointer(FnPtr).
	std::string input = "a";
	funcs_map = {
				{"+", 		add},
				{"-",  		sub},
				{"*",  		mul},
				{"/",  		div},
				{"_xfun",   execfun},
				{"makefun", makefun},
				{"_bit",    bit_},
				{"let",     let_},
				{"bits",    let_},
				{"id",      id_},
				{"cmp", 	cmp_},
				{"@", 		_at},
				{"appendto",_at},
                {"if", 		_if},
                {"split", 	split_},
                {"id_2", id_2}};
	std::string res = "";
	while (input != "exit") {
		input = read_a_line("blade -|>>> ");
		res = lc_eval(input);
		std::cout << "retrieved: " << res << endl;
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x308, %rsp            # imm = 0x308
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xc45fe(%rip), %rsi     # 0xde1a8
leaq 0xc45f8(%rip), %rdx     # 0xde1a9
leaq -0x48(%rbp), %rdi
callq 0x1ac90
leaq -0x318(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0xc46e7(%rip), %rsi     # 0xde2b4
leaq 0xc46e1(%rip), %rdx     # 0xde2b5
leaq -0x328(%rbp), %rbx
movq %rbx, %rdi
callq 0x1ac90
leaq -0x1be7(%rip), %rax     # 0x18003
leaq -0x300(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x2f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xc4676(%rip), %rsi     # 0xde27d
leaq 0xc4670(%rip), %rdx     # 0xde27e
movq %r14, %rdi
callq 0x1ac90
leaq -0x1a13(%rip), %rax     # 0x1820a
leaq -0x2d8(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x2c8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xc45e0(%rip), %rsi     # 0xde21a
leaq 0xc45da(%rip), %rdx     # 0xde21b
movq %r14, %rdi
callq 0x1ac90
leaq -0x16f9(%rip), %rax     # 0x18557
leaq -0x2b0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x2a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf630(%rip), %rsi     # 0xd929d
leaq 0xbf62a(%rip), %rdx     # 0xd929e
movq %r14, %rdi
callq 0x1ac90
leaq -0x1515(%rip), %rax     # 0x1876e
leaq -0x288(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x278(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf5ff(%rip), %rsi     # 0xd929f
leaq 0xbf5fd(%rip), %rdx     # 0xd92a4
movq %r14, %rdi
callq 0x1ac90
leaq -0x11cc(%rip), %rax     # 0x18aea
leaq -0x260(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x250(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf5d2(%rip), %rsi     # 0xd92a5
leaq 0xbf5d2(%rip), %rdx     # 0xd92ac
movq %r14, %rdi
callq 0x1ac90
leaq -0xc0a(%rip), %rax      # 0x190df
leaq -0x238(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x228(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf4ef(%rip), %rsi     # 0xd91f5
leaq 0xbf4ec(%rip), %rdx     # 0xd91f9
movq %r14, %rdi
callq 0x1ac90
leaq -0xa63(%rip), %rax      # 0x192b9
leaq -0x210(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x200(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf50a(%rip), %rsi     # 0xd9243
leaq 0xbf506(%rip), %rdx     # 0xd9246
movq %r14, %rdi
callq 0x1ac90
leaq -0x9ea(%rip), %r15      # 0x19365
leaq -0x1e8(%rbp), %r14
movq %r15, -0x8(%r14)
leaq -0x1d8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf541(%rip), %rsi     # 0xd92ad
leaq 0xbf53e(%rip), %rdx     # 0xd92b1
movq %r14, %rdi
callq 0x1ac90
leaq -0x1c0(%rbp), %r14
movq %r15, -0x8(%r14)
leaq -0x1b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xc38f9(%rip), %rsi     # 0xdd691
leaq 0xc38f4(%rip), %rdx     # 0xdd693
movq %r14, %rdi
callq 0x1ac90
leaq -0x9bb(%rip), %rax      # 0x193f3
leaq -0x198(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x188(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf4e7(%rip), %rsi     # 0xd92b2
leaq 0xbf4e3(%rip), %rdx     # 0xd92b5
movq %r14, %rdi
callq 0x1ac90
leaq -0x995(%rip), %rax      # 0x1944c
leaq -0x170(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x160(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf4b8(%rip), %rsi     # 0xd92b6
leaq 0xbf4b2(%rip), %rdx     # 0xd92b7
movq %r14, %rdi
callq 0x1ac90
leaq -0x6c7(%rip), %r15      # 0x1974d
leaq -0x148(%rbp), %r14
movq %r15, -0x8(%r14)
leaq -0x138(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf487(%rip), %rsi     # 0xd92b8
leaq 0xbf488(%rip), %rdx     # 0xd92c0
movq %r14, %rdi
callq 0x1ac90
leaq -0x120(%rbp), %r14
movq %r15, -0x8(%r14)
leaq -0x110(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf41e(%rip), %rsi     # 0xd927b
leaq 0xbf419(%rip), %rdx     # 0xd927d
movq %r14, %rdi
callq 0x1ac90
leaq -0x98e(%rip), %rax      # 0x194e5
leaq -0xf8(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0xe8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf431(%rip), %rsi     # 0xd92c1
leaq 0xbf42f(%rip), %rdx     # 0xd92c6
movq %r14, %rdi
callq 0x1ac90
leaq -0x621(%rip), %rax      # 0x19885
leaq -0xd0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0xc0(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0xbf404(%rip), %rsi     # 0xd92c7
leaq 0xbf401(%rip), %rdx     # 0xd92cb
movq %r14, %rdi
callq 0x1ac90
leaq -0xaba(%rip), %rax      # 0x1941f
leaq -0xa8(%rbp), %rbx
movq %rax, -0x8(%rbx)
leaq 0x104a25(%rip), %rdi    # 0x11e910
leaq -0x328(%rbp), %rsi
movq %rbx, %rdx
callq 0x2a43e
movq $-0x280, %rbx           # imm = 0xFD80
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x19f15
movq (%r15), %rsi
incq %rsi
callq 0x2a9a0
addq $-0x28, %r15
addq $0x28, %rbx
jne 0x19f01
leaq -0x328(%rbp), %rdi
movq %r12, (%rdi)
leaq 0xbf43c(%rip), %rdx     # 0xd936c
movq %rdx, %rsi
callq 0x1ac90
leaq -0x48(%rbp), %r14
leaq -0xa8(%rbp), %r15
leaq -0x68(%rbp), %r12
leaq 0x105a32(%rip), %rbx    # 0x11f980
movq %r14, %rdi
leaq 0xbf374(%rip), %rsi     # 0xd92cc
callq 0xa9750
testl %eax, %eax
je 0x1a0aa
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x88(%rbp), %r13
movq %r13, %rdi
leaq 0xbf350(%rip), %rsi     # 0xd92d1
leaq 0xbf355(%rip), %rdx     # 0xd92dd
callq 0x1ac90
movq %r15, %rdi
movq %r13, %rsi
callq 0x1756c
movq %r14, %rdi
movq %r15, %rsi
callq 0xa7590
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x19fc5
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x2a9a0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x19fe1
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x2a9a0
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x1abf2
movq %r15, %rdi
movq %r12, %rsi
callq 0x17749
leaq -0x328(%rbp), %rdi
movq %r15, %rsi
callq 0xa7590
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x1a038
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x2a9a0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1a051
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2a9a0
movl $0xb, %edx
movq %rbx, %rdi
leaq 0xbf27e(%rip), %rsi     # 0xd92de
callq 0x96cb0
movq -0x328(%rbp), %rsi
movq -0x320(%rbp), %rdx
movq %rbx, %rdi
callq 0x96cb0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x77e00
movsbl %al, %esi
movq %r13, %rdi
callq 0x967b0
movq %rax, %rdi
callq 0x95d80
jmp 0x19f4e
movq -0x328(%rbp), %rdi
leaq -0x318(%rbp), %rax
cmpq %rax, %rdi
je 0x1a0cc
movq -0x318(%rbp), %rsi
incq %rsi
callq 0x2a9a0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x1a0e5
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2a9a0
xorl %eax, %eax
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1a154
movq %rax, %r15
leaq -0x328(%rbp), %rsi
movq %rbx, %rdi
callq 0x146e0
jmp 0x1a1b9
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
jmp 0x1a12e
movq %rax, %r15
movq -0x28(%r14), %rdi
leaq -0x18(%r14), %rax
cmpq %rdi, %rax
je 0x1a149
movq (%rax), %rsi
incq %rsi
callq 0x2a9a0
addq $-0x28, %r14
cmpq %rbx, %r14
jne 0x1a131
jmp 0x1a1b9
movq %rax, %r15
jmp 0x1a1b9
jmp 0x1a194
movq %rax, %r15
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x1a197
movq -0x78(%rbp), %rsi
jmp 0x1a18a
jmp 0x1a194
movq %rax, %r15
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1a197
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2a9a0
jmp 0x1a197
movq %rax, %r15
movq -0x328(%rbp), %rdi
leaq -0x318(%rbp), %rax
cmpq %rax, %rdi
je 0x1a1b9
movq -0x318(%rbp), %rsi
incq %rsi
callq 0x2a9a0
leaq -0x38(%rbp), %rax
movq -0x48(%rbp), %rdi
cmpq %rax, %rdi
je 0x1a1d2
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2a9a0
movq %r15, %rdi
callq 0xd5f80