// File: /workspace/github_cpp_makefile_star2_O2/TsukiGva2[P]Blade-lang/blade.cpp
// Function: execfun(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>)
std::string execfun(std::vector<std::string> args){
	// replace all ('s and )'s for ['s and ]'s
	// also replace single quotes for double quotes
	// then finally replace $X's for the right globl_args's index
	// pass the resulting string to lc_eval
	std::string txt = args[0];
	std::regex re("'");
	txt = std::regex_replace(txt,re,"\"");
	re = "\\$([1-9])";
	std::smatch m;
	std::regex sx("");
	std::string temp_ = "";
	while (std::regex_search(txt,m,re)){
		temp_ = "\\$";
		temp_ += m[1];
		sx = temp_;
		txt = std::regex_replace(txt,sx,globl_args[std::stoi(m[1])-1]);
	}
	return lc_eval(txt);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdi, -0x58(%rbp)
movq (%rsi), %rsi
leaq -0x78(%rbp), %rdi
callq 0xa6a00
leaq 0xbf2c8(%rip), %rsi     # 0xd71c4
leaq -0x98(%rbp), %rdi
pushq $0x10
popq %rdx
callq 0x18cf0
leaq 0xbf2c8(%rip), %rcx     # 0xd71da
leaq -0x50(%rbp), %rdi
leaq -0x78(%rbp), %rsi
leaq -0x98(%rbp), %rdx
xorl %r8d, %r8d
callq 0x19272
leaq -0x78(%rbp), %rdi
leaq -0x50(%rbp), %rbx
movq %rbx, %rsi
callq 0xa45c0
movq %rbx, %rdi
callq 0xa4570
leaq 0xbf27e(%rip), %rsi     # 0xd71c6
leaq -0x98(%rbp), %rdi
callq 0x192c2
xorps %xmm0, %xmm0
movaps %xmm0, -0x40(%rbp)
movaps %xmm0, -0x50(%rbp)
leaq 0xbf406(%rip), %rsi     # 0xd736c
leaq -0xf8(%rbp), %rdi
pushq $0x10
popq %rdx
callq 0x18cf0
leaq 0xbf3f0(%rip), %rsi     # 0xd736c
leaq -0xd8(%rbp), %rdi
leaq -0x118(%rbp), %rdx
callq 0x18c74
leaq -0x78(%rbp), %r14
leaq -0xd8(%rbp), %rbx
leaq -0x118(%rbp), %r13
leaq -0xf8(%rbp), %r15
leaq -0x138(%rbp), %r12
movq %r14, %rdi
leaq -0x50(%rbp), %rsi
leaq -0x98(%rbp), %rdx
xorl %ecx, %ecx
callq 0x192d1
testb %al, %al
je 0x180b9
movq %rbx, %rdi
leaq 0xbf1fa(%rip), %rsi     # 0xd71d0
callq 0xa5520
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rcx
subq %rsi, %rcx
je 0x18003
movq %rcx, %rax
cqto
pushq $0x18
popq %rdi
idivq %rdi
addq $-0x5, %rax
cmpq $-0x3, %rax
ja 0x18003
addq $0x18, %rsi
jmp 0x1800a
addq %rcx, %rsi
addq $-0x48, %rsi
movq %r13, %rdi
callq 0x27cc6
movq %rbx, %rdi
movq %r13, %rsi
callq 0xa5c80
movq %r13, %rdi
callq 0xa4570
movq %r15, %rdi
movq %rbx, %rsi
callq 0x19332
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rcx
subq %rsi, %rcx
je 0x18058
movq %rcx, %rax
cqto
pushq $0x18
popq %rdi
idivq %rdi
addq $-0x5, %rax
cmpq $-0x3, %rax
ja 0x18058
addq $0x18, %rsi
jmp 0x1805f
addq %rcx, %rsi
addq $-0x48, %rsi
movq %r12, %rdi
callq 0x27cc6
movq %r12, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x190f3
movq 0x1078d5(%rip), %rcx    # 0x11f950
cltq
shlq $0x5, %rax
addq %rax, %rcx
addq $-0x20, %rcx
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
xorl %r8d, %r8d
callq 0x19341
movq %r14, %rdi
movq %r13, %rsi
callq 0xa45c0
movq %r13, %rdi
callq 0xa4570
movq %r12, %rdi
callq 0xa4570
jmp 0x17faf
leaq -0xb8(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xa6a00
leaq -0xb8(%rbp), %rsi
movq -0x58(%rbp), %rbx
movq %rbx, %rdi
callq 0x174fe
leaq -0xb8(%rbp), %rdi
callq 0xa4570
leaq -0xd8(%rbp), %rdi
callq 0xa4570
leaq -0xf8(%rbp), %rdi
callq 0x18d5a
leaq -0x50(%rbp), %rdi
callq 0x19c58
leaq -0x98(%rbp), %rdi
callq 0x18d5a
leaq -0x78(%rbp), %rdi
callq 0xa4570
movq %rbx, %rax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
jmp 0x18171
jmp 0x18178
movq %rax, %rbx
jmp 0x18187
movq %rax, %rbx
jmp 0x18193
jmp 0x1814d
movq %rax, %rbx
jmp 0x1819c
movq %rax, %rbx
jmp 0x181a8
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
jmp 0x18171
jmp 0x18178
jmp 0x18178
movq %rax, %rbx
leaq -0x138(%rbp), %rdi
callq 0xa4570
jmp 0x1817b
movq %rax, %rbx
leaq -0xd8(%rbp), %rdi
callq 0xa4570
leaq -0xf8(%rbp), %rdi
callq 0x18d5a
leaq -0x50(%rbp), %rdi
callq 0x19c58
leaq -0x98(%rbp), %rdi
callq 0x18d5a
leaq -0x78(%rbp), %rdi
callq 0xa4570
movq %rbx, %rdi
callq 0xd3a40