// File: /workspace/github_cpp_makefile_star2_O2/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 $0x378, %rsp            # imm = 0x378
leaq 0xc398a(%rip), %rsi     # 0xdc1a8
leaq -0xc0(%rbp), %rdi
leaq -0x3a0(%rbp), %rdx
callq 0x18c74
leaq -0xce4(%rip), %rax      # 0x17b54
leaq -0xe0(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xc3a6b(%rip), %rsi     # 0xdc2b4
leaq -0x3a0(%rbp), %rbx
movq %rbx, %rdi
callq 0x19494
leaq -0x378(%rbp), %r14
leaq -0xc74(%rip), %rax      # 0x17bf2
leaq -0x30(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xc3a09(%rip), %rsi     # 0xdc27d
movq %r14, %rdi
callq 0x19494
leaq -0x350(%rbp), %r14
leaq -0xb9f(%rip), %rax      # 0x17ceb
leaq -0xa0(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xc397f(%rip), %rsi     # 0xdc21a
movq %r14, %rdi
callq 0x19494
leaq -0x328(%rbp), %r14
leaq -0xb26(%rip), %rax      # 0x17d8b
leaq -0x98(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xbe9db(%rip), %rsi     # 0xd729d
movq %r14, %rdi
callq 0x19494
leaq -0x300(%rbp), %r14
leaq -0xa07(%rip), %rax      # 0x17ed1
leaq -0x90(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xbe9b6(%rip), %rsi     # 0xd729f
movq %r14, %rdi
callq 0x194be
leaq -0x2d8(%rbp), %r14
leaq -0x746(%rip), %rax      # 0x181b9
leaq -0x88(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xbe995(%rip), %rsi     # 0xd72a5
movq %r14, %rdi
callq 0x194e8
leaq -0x2b0(%rbp), %r14
leaq -0x674(%rip), %rax      # 0x182b2
leaq -0x80(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xbe8c1(%rip), %rsi     # 0xd71f5
movq %r14, %rdi
callq 0x19512
leaq -0x288(%rbp), %r14
leaq -0x606(%rip), %r15      # 0x18344
leaq -0x78(%rbp), %rdx
movq %r15, (%rdx)
leaq 0xbe8eb(%rip), %rsi     # 0xd7243
movq %r14, %rdi
callq 0x1953c
leaq -0x260(%rbp), %r14
leaq -0x70(%rbp), %rdx
movq %r15, (%rdx)
leaq 0xbe938(%rip), %rsi     # 0xd72ad
movq %r14, %rdi
callq 0x19512
leaq -0x238(%rbp), %r14
leaq -0x5c9(%rip), %rax      # 0x183c2
leaq -0x68(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xc2cf8(%rip), %rsi     # 0xdb691
movq %r14, %rdi
callq 0x19566
leaq -0x210(%rbp), %r14
leaq -0x5b3(%rip), %rax      # 0x183fc
leaq -0x60(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xbe8f5(%rip), %rsi     # 0xd72b2
movq %r14, %rdi
callq 0x1953c
leaq -0x1e8(%rbp), %r14
leaq -0x481(%rip), %r15      # 0x18552
leaq -0x58(%rbp), %rdx
movq %r15, (%rdx)
leaq 0xbe8d5(%rip), %rsi     # 0xd72b6
movq %r14, %rdi
callq 0x19494
leaq -0x1c0(%rbp), %r14
leaq -0x50(%rbp), %rdx
movq %r15, (%rdx)
leaq 0xbe8ba(%rip), %rsi     # 0xd72b8
movq %r14, %rdi
callq 0x19590
leaq -0x198(%rbp), %r14
leaq -0x5cc(%rip), %rax      # 0x18448
leaq -0x48(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xbe859(%rip), %rsi     # 0xd727b
movq %r14, %rdi
callq 0x19566
leaq -0x170(%rbp), %r14
leaq -0x40f(%rip), %rax      # 0x18629
leaq -0x40(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xbe87b(%rip), %rsi     # 0xd72c1
movq %r14, %rdi
callq 0x194be
leaq -0x148(%rbp), %r14
leaq -0x67f(%rip), %rax      # 0x183dd
leaq -0x38(%rbp), %rdx
movq %rax, (%rdx)
leaq 0xbe85d(%rip), %rsi     # 0xd72c7
movq %r14, %rdi
callq 0x19512
leaq -0x120(%rbp), %rdx
leaq 0x106e70(%rip), %rdi    # 0x11f8f0
leaq -0x3a0(%rbp), %rsi
callq 0x27edc
movl $0x258, %ebx            # imm = 0x258
leaq (%rbx,%rbp), %rdi
addq $-0x3a0, %rdi           # imm = 0xFC60
callq 0xa4570
addq $-0x28, %rbx
cmpq $-0x28, %rbx
jne 0x18a91
leaq 0xbe8ba(%rip), %rsi     # 0xd736c
leaq -0x3a0(%rbp), %rdi
leaq -0xe0(%rbp), %rdx
callq 0x18c74
leaq -0xc0(%rbp), %r14
leaq -0x120(%rbp), %r12
leaq -0xe0(%rbp), %r15
leaq -0x100(%rbp), %r13
leaq -0x3a0(%rbp), %rbx
movq %r14, %rdi
leaq 0xbe7da(%rip), %rsi     # 0xd72cc
callq 0x195ba
testb %al, %al
je 0x18b94
movq %r12, %rdi
leaq 0xbe7c8(%rip), %rsi     # 0xd72d1
leaq -0x30(%rbp), %rdx
callq 0x18c74
movq %r15, %rdi
movq %r12, %rsi
callq 0x173ac
movq %r14, %rdi
movq %r15, %rsi
callq 0xa45c0
movq %r15, %rdi
callq 0xa4570
movq %r12, %rdi
callq 0xa4570
movq %r13, %rdi
movq %r14, %rsi
callq 0xa6a00
movq %r15, %rdi
movq %r13, %rsi
callq 0x174fe
movq %rbx, %rdi
movq %r15, %rsi
callq 0xa45c0
movq %r15, %rdi
callq 0xa4570
movq %r13, %rdi
callq 0xa4570
leaq 0x107df0(%rip), %rdi    # 0x120960
leaq 0xbe767(%rip), %rsi     # 0xd72de
callq 0x94210
movq %rax, %rdi
movq %rbx, %rsi
callq 0xa6ca0
movq %rax, %rdi
callq 0x93af0
jmp 0x18ae8
leaq -0x3a0(%rbp), %rdi
callq 0xa4570
leaq -0xc0(%rbp), %rdi
callq 0xa4570
xorl %eax, %eax
addq $0x378, %rsp            # imm = 0x378
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x18c2b
movq %rax, %r15
movl $0x258, %r12d           # imm = 0x258
leaq (%r12,%rbp), %rdi
addq $-0x3a0, %rdi           # imm = 0xFC60
callq 0xa4570
addq $-0x28, %r12
cmpq $-0x28, %r12
jne 0x18bcb
movb $0x1, %al
jmp 0x18c0a
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
jmp 0x18c05
movq %rax, %r15
xorl %eax, %eax
cmpq %r14, %rbx
sete %cl
testb %al, %al
jne 0x18c60
testb %cl, %cl
jne 0x18c60
addq $-0x28, %r14
movq %r14, %rdi
callq 0xa4570
cmpq %rbx, %r14
jne 0x18c18
jmp 0x18c60
movq %rax, %r15
jmp 0x18c60
jmp 0x18c51
movq %rax, %r15
leaq -0x120(%rbp), %rdi
jmp 0x18c48
movq %rax, %r15
leaq -0x100(%rbp), %rdi
callq 0xa4570
jmp 0x18c54
jmp 0x18c51
movq %rax, %r15
leaq -0x3a0(%rbp), %rdi
callq 0xa4570
leaq -0xc0(%rbp), %rdi
callq 0xa4570
movq %r15, %rdi
callq 0xd3a40