// File: /workspace/github_cpp_makefile_star2_O1/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 0xc45e3(%rip), %rsi     # 0xdf1c8
leaq 0xc45dd(%rip), %rdx     # 0xdf1c9
leaq -0x48(%rbp), %rdi
callq 0x1bccc
leaq -0x318(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xc46cd(%rip), %rsi     # 0xdf2d4
leaq 0xc46c7(%rip), %rdx     # 0xdf2d5
leaq -0x328(%rbp), %rbx
movq %rbx, %rdi
callq 0x1bccc
leaq -0x1c0b(%rip), %rax     # 0x19019
leaq -0x300(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x2f0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xc465c(%rip), %rsi     # 0xdf29d
leaq 0xc4656(%rip), %rdx     # 0xdf29e
movq %r14, %rdi
callq 0x1bccc
leaq -0x1a37(%rip), %rax     # 0x19220
leaq -0x2d8(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x2c8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xc45c6(%rip), %rsi     # 0xdf23a
leaq 0xc45c0(%rip), %rdx     # 0xdf23b
movq %r14, %rdi
callq 0x1bccc
leaq -0x171d(%rip), %rax     # 0x1956d
leaq -0x2b0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x2a0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf5f6(%rip), %rsi     # 0xda29d
leaq 0xbf5f0(%rip), %rdx     # 0xda29e
movq %r14, %rdi
callq 0x1bccc
leaq -0x1539(%rip), %rax     # 0x19784
leaq -0x288(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x278(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf5c5(%rip), %rsi     # 0xda29f
leaq 0xbf5c3(%rip), %rdx     # 0xda2a4
movq %r14, %rdi
callq 0x1bccc
leaq -0x11d4(%rip), %rax     # 0x19b1c
leaq -0x260(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x250(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf598(%rip), %rsi     # 0xda2a5
leaq 0xbf598(%rip), %rdx     # 0xda2ac
movq %r14, %rdi
callq 0x1bccc
leaq -0xc09(%rip), %rax      # 0x1a11a
leaq -0x238(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x228(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf4b5(%rip), %rsi     # 0xda1f5
leaq 0xbf4b2(%rip), %rdx     # 0xda1f9
movq %r14, %rdi
callq 0x1bccc
leaq -0xa62(%rip), %rax      # 0x1a2f4
leaq -0x210(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x200(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf4d0(%rip), %rsi     # 0xda243
leaq 0xbf4cc(%rip), %rdx     # 0xda246
movq %r14, %rdi
callq 0x1bccc
leaq -0x9e9(%rip), %r15      # 0x1a3a0
leaq -0x1e8(%rbp), %r14
movq %r15, -0x8(%r14)
leaq -0x1d8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf507(%rip), %rsi     # 0xda2ad
leaq 0xbf504(%rip), %rdx     # 0xda2b1
movq %r14, %rdi
callq 0x1bccc
leaq -0x1c0(%rbp), %r14
movq %r15, -0x8(%r14)
leaq -0x1b0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xc38df(%rip), %rsi     # 0xde6b1
leaq 0xc38da(%rip), %rdx     # 0xde6b3
movq %r14, %rdi
callq 0x1bccc
leaq -0x9ba(%rip), %rax      # 0x1a42e
leaq -0x198(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x188(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf4ad(%rip), %rsi     # 0xda2b2
leaq 0xbf4a9(%rip), %rdx     # 0xda2b5
movq %r14, %rdi
callq 0x1bccc
leaq -0x994(%rip), %rax      # 0x1a487
leaq -0x170(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0x160(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf47e(%rip), %rsi     # 0xda2b6
leaq 0xbf478(%rip), %rdx     # 0xda2b7
movq %r14, %rdi
callq 0x1bccc
leaq -0x6c6(%rip), %r15      # 0x1a788
leaq -0x148(%rbp), %r14
movq %r15, -0x8(%r14)
leaq -0x138(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf44d(%rip), %rsi     # 0xda2b8
leaq 0xbf44e(%rip), %rdx     # 0xda2c0
movq %r14, %rdi
callq 0x1bccc
leaq -0x120(%rbp), %r14
movq %r15, -0x8(%r14)
leaq -0x110(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf3e4(%rip), %rsi     # 0xda27b
leaq 0xbf3df(%rip), %rdx     # 0xda27d
movq %r14, %rdi
callq 0x1bccc
leaq -0x98d(%rip), %rax      # 0x1a520
leaq -0xf8(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0xe8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xbf3f7(%rip), %rsi     # 0xda2c1
leaq 0xbf3f5(%rip), %rdx     # 0xda2c6
movq %r14, %rdi
callq 0x1bccc
leaq -0x620(%rip), %rax      # 0x1a8c0
leaq -0xd0(%rbp), %r14
movq %rax, -0x8(%r14)
leaq -0xc0(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0xbf3ca(%rip), %rsi     # 0xda2c7
leaq 0xbf3c7(%rip), %rdx     # 0xda2cb
movq %r14, %rdi
callq 0x1bccc
leaq -0xab9(%rip), %rax      # 0x1a45a
leaq -0xa8(%rbp), %r12
movq %rax, -0x8(%r12)
leaq 0x1049ea(%rip), %rdi    # 0x11f910
leaq -0x328(%rbp), %rsi
movq %r12, %rdx
callq 0x2b41c
movq $-0x280, %rbx           # imm = 0xFD80
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x1af50
movq (%r15), %rsi
incq %rsi
callq 0x2b980
addq $-0x28, %r15
addq $0x28, %rbx
jne 0x1af3c
leaq -0x328(%rbp), %rdi
leaq -0x318(%rbp), %rax
movq %rax, (%rdi)
leaq 0xbf3fa(%rip), %rdx     # 0xda36c
movq %rdx, %rsi
callq 0x1bccc
leaq -0x48(%rbp), %r14
leaq -0xa8(%rbp), %r15
leaq -0x68(%rbp), %r12
leaq 0x1059f0(%rip), %rbx    # 0x120980
movq %r14, %rdi
leaq 0xbf332(%rip), %rsi     # 0xda2cc
callq 0xaa790
testl %eax, %eax
je 0x1b0ec
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x88(%rbp), %r13
movq %r13, %rdi
leaq 0xbf30e(%rip), %rsi     # 0xda2d1
leaq 0xbf313(%rip), %rdx     # 0xda2dd
callq 0x1bccc
movq %r15, %rdi
movq %r13, %rsi
callq 0x1856c
movq %r14, %rdi
movq %r15, %rsi
callq 0xa85d0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x1b007
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x2b980
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x1b023
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x2b980
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x1bc32
movq %r15, %rdi
movq %r12, %rsi
callq 0x18749
leaq -0x328(%rbp), %rdi
movq %r15, %rsi
callq 0xa85d0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x1b07a
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x2b980
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1b093
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2b980
movl $0xb, %edx
movq %rbx, %rdi
leaq 0xbf23c(%rip), %rsi     # 0xda2de
callq 0x97cf0
movq -0x328(%rbp), %rsi
movq -0x320(%rbp), %rdx
movq %rbx, %rdi
callq 0x97cf0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x78e40
movsbl %al, %esi
movq %r13, %rdi
callq 0x977f0
movq %rax, %rdi
callq 0x96dc0
jmp 0x1af90
movq -0x328(%rbp), %rdi
leaq -0x318(%rbp), %rax
cmpq %rax, %rdi
je 0x1b10e
movq -0x318(%rbp), %rsi
incq %rsi
callq 0x2b980
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x1b127
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2b980
xorl %eax, %eax
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
jmp 0x1b21c
movq %rax, %r15
leaq -0x328(%rbp), %rsi
movq %r12, %rdi
callq 0x156e6
movb $0x1, %al
jmp 0x1b17a
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
jmp 0x1b175
movq %rax, %r15
xorl %eax, %eax
cmpq %r14, %rbx
sete %cl
orb %al, %cl
jne 0x1b21c
leaq -0x328(%rbp), %rbx
movq -0x28(%r14), %rdi
leaq -0x18(%r14), %rax
cmpq %rdi, %rax
je 0x1b1a7
movq (%rax), %rsi
incq %rsi
callq 0x2b980
addq $-0x28, %r14
cmpq %rbx, %r14
jne 0x1b18f
jmp 0x1b21c
movq %rax, %r15
xorl %eax, %eax
movq %rbx, %r14
jmp 0x1b17a
jmp 0x1b1f7
movq %rax, %r15
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x1b1fa
movq -0x78(%rbp), %rsi
jmp 0x1b1ed
jmp 0x1b1f7
movq %rax, %r15
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1b1fa
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2b980
jmp 0x1b1fa
movq %rax, %r15
movq -0x328(%rbp), %rdi
leaq -0x318(%rbp), %rax
cmpq %rax, %rdi
je 0x1b21c
movq -0x318(%rbp), %rsi
incq %rsi
callq 0x2b980
leaq -0x38(%rbp), %rax
movq -0x48(%rbp), %rdi
cmpq %rax, %rdi
je 0x1b235
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2b980
movq %r15, %rdi
callq 0xd6fc0
nop