// File: Nallantli[P]Rossa/main/rossa/symbol/symbol.cpp
// Function: symbol_t::toCodeString[abi:cxx11]() const
const std::string symbol_t::toCodeString() const
{
	if (type != ID_CASUAL)
	{
		return "symbol_t(static_cast<SymbolType>(" + std::to_string(type) + "))";
	}
	trace_t stack_trace;
	switch (d->type)
	{
	case value_type_enum::NIL:
		return "Nil@nil";
	case value_type_enum::NUMBER:
		return "Number@" + std::get<number_t>(d->value).toCodeString();
	case value_type_enum::STRING:
		return "String@\"" + std::get<std::string>(d->value) + "\"";
	case value_type_enum::FUNCTION:
		return "Function@" + getString(NULL, stack_trace);
	case value_type_enum::OBJECT:
		return "Object@" + std::get<object_t>(d->value).getKey();
	case value_type_enum::POINTER:
	{
		std::stringstream ss;
		ss << "Pointer@" << std::addressof(std::get<std::shared_ptr<void>>(d->value));
		return ss.str();
	}
	case value_type_enum::BOOLEAN_D:
		return "Boolean@" + std::string(std::get<bool>(d->value) ? KEYWORD_TRUE : KEYWORD_FALSE);
	case value_type_enum::ARRAY:
	{
		std::string ret = "Array@[";
		unsigned int i = 0;
		for (auto &d2 : std::get<std::vector<symbol_t>>(d->value))
		{
			if (i > 0)
			{
				ret += ", ";
			}
			ret += d2.toCodeString();
			i++;
		}
		return ret + "]";
	}
	case value_type_enum::DICTIONARY:
	{
		std::string ret = "Dictionary@[";
		unsigned int i = 0;
		for (auto &e : getDictionary(NULL, stack_trace))
		{
			if (i > 0)
			{
				ret += ", ";
			}
			ret += "\"" + e.first + "\" : " + e.second.toCodeString();
			i++;
		}
		return ret + "]";
	}
	case value_type_enum::TYPE_NAME:
		return "Type@" + std::get<parameter_t>(d->value).toString();
	default:
		return "<error-type>";
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4b0, %rsp            # imm = 0x4B0
movq %rdi, -0x420(%rbp)
movq %rdi, %rax
movq %rax, -0x418(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x410(%rbp)
cmpl $0x3, 0x8(%rax)
je 0x89f7d
movq -0x410(%rbp), %rax
movl 0x8(%rax), %esi
leaq -0x50(%rbp), %rdi
movq %rdi, -0x428(%rbp)
callq 0x24d00
movq -0x428(%rbp), %rdx
leaq 0xc8295(%rip), %rsi     # 0x1521a6
leaq -0x30(%rbp), %rdi
callq 0x24cb0
jmp 0x89f1c
movq -0x420(%rbp), %rdi
leaq 0xc829e(%rip), %rdx     # 0x1521c8
leaq -0x30(%rbp), %rsi
callq 0x24c60
jmp 0x89f35
leaq -0x30(%rbp), %rdi
callq 0x11360
leaq -0x50(%rbp), %rdi
callq 0x11360
jmp 0x8a8ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x89f6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x11360
leaq -0x50(%rbp), %rdi
callq 0x11360
jmp 0x8a90f
leaq -0x78(%rbp), %rdi
callq 0x24b80
movq -0x410(%rbp), %rax
movq (%rax), %rax
movl (%rax), %eax
addl $0xa, %eax
movl %eax, %ecx
movq %rcx, -0x430(%rbp)
subl $0x9, %eax
ja 0x8a88b
movq -0x430(%rbp), %rax
leaq 0xc7fbf(%rip), %rcx     # 0x151f74
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x79(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0x119d0
movq -0x420(%rbp), %rdi
movq -0x438(%rbp), %rdx
leaq 0xc81e8(%rip), %rsi     # 0x1521cb
callq 0x24740
jmp 0x89fea
leaq -0x79(%rbp), %rdi
callq 0x11600
movl $0x1, -0x80(%rbp)
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x79(%rbp), %rdi
callq 0x11600
jmp 0x8a8f4
movq -0x410(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x8bc40
movq %rax, -0x440(%rbp)
jmp 0x8a035
movq -0x440(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0x9da80
movq -0x420(%rbp), %rdi
movq -0x448(%rbp), %rdx
leaq 0xc816f(%rip), %rsi     # 0x1521d3
callq 0x24f40
jmp 0x8a06b
leaq -0xa0(%rbp), %rdi
callq 0x11360
movl $0x1, -0x80(%rbp)
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8a8f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x11360
jmp 0x8a8f4
movq -0x410(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x8bd30
movq %rax, -0x450(%rbp)
jmp 0x8a0cd
movq -0x450(%rbp), %rdx
leaq 0xc8100(%rip), %rsi     # 0x1521db
leaq -0xc0(%rbp), %rdi
callq 0x24f40
jmp 0x8a0e9
movq -0x420(%rbp), %rdi
leaq 0xc80eb(%rip), %rdx     # 0x1521e2
leaq -0xc0(%rbp), %rsi
callq 0x24c60
jmp 0x8a105
leaq -0xc0(%rbp), %rdi
callq 0x11360
movl $0x1, -0x80(%rbp)
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x11360
jmp 0x8a8f4
movq -0x410(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0xe0(%rbp), %rdi
leaq -0x78(%rbp), %rcx
callq 0x880d0
jmp 0x8a157
movq -0x420(%rbp), %rdi
leaq 0xc807f(%rip), %rsi     # 0x1521e4
leaq -0xe0(%rbp), %rdx
callq 0x24f40
jmp 0x8a173
leaq -0xe0(%rbp), %rdi
callq 0x11360
movl $0x1, -0x80(%rbp)
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x11360
jmp 0x8a8f4
movq -0x410(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x8bd70
movq %rax, -0x458(%rbp)
jmp 0x8a1c4
movq -0x458(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x7db10
jmp 0x8a1d9
movq -0x420(%rbp), %rdi
leaq 0xc8007(%rip), %rsi     # 0x1521ee
leaq -0x100(%rbp), %rdx
callq 0x24f40
jmp 0x8a1f5
leaq -0x100(%rbp), %rdi
callq 0x11360
movl $0x1, -0x80(%rbp)
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x11360
jmp 0x8a8f4
leaq -0x288(%rbp), %rdi
callq 0x113f0
jmp 0x8a238
leaq -0x278(%rbp), %rdi
leaq 0xc7fb0(%rip), %rsi     # 0x1521f6
callq 0x11560
movq %rax, -0x460(%rbp)
jmp 0x8a254
movq -0x410(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x8bc60
movq %rax, -0x468(%rbp)
jmp 0x8a270
movq -0x468(%rbp), %rsi
movq -0x460(%rbp), %rdi
callq 0x11450
jmp 0x8a285
movq -0x420(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x11550
jmp 0x8a29a
movl $0x1, -0x80(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x11430
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x11430
jmp 0x8a8f4
movq -0x410(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x8bd50
movq %rax, -0x470(%rbp)
jmp 0x8a2eb
movq -0x470(%rbp), %rax
movb (%rax), %dl
leaq 0xc5d74(%rip), %rcx     # 0x15006f
leaq 0xc5ebe(%rip), %rax     # 0x1501c0
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, -0x480(%rbp)
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x119d0
movq -0x480(%rbp), %rsi
movq -0x478(%rbp), %rdx
leaq -0x2a8(%rbp), %rdi
callq 0x24740
jmp 0x8a33f
movq -0x420(%rbp), %rdi
leaq 0xc7eb2(%rip), %rsi     # 0x1521ff
leaq -0x2a8(%rbp), %rdx
callq 0x24cb0
jmp 0x8a35b
leaq -0x2a8(%rbp), %rdi
callq 0x11360
leaq -0x2a9(%rbp), %rdi
callq 0x11600
movl $0x1, -0x80(%rbp)
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8a3a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x11360
leaq -0x2a9(%rbp), %rdi
callq 0x11600
jmp 0x8a8f4
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x488(%rbp)
callq 0x119d0
movq -0x488(%rbp), %rdx
leaq 0xc7e31(%rip), %rsi     # 0x152208
leaq -0x2d0(%rbp), %rdi
callq 0x24740
jmp 0x8a3e5
leaq -0x2d1(%rbp), %rdi
callq 0x11600
movq -0x410(%rbp), %rax
movl $0x0, -0x2d8(%rbp)
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x8bcd0
movq %rax, -0x490(%rbp)
jmp 0x8a417
movq -0x490(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movq -0x2e0(%rbp), %rdi
callq 0x30950
movq %rax, -0x2e8(%rbp)
movq -0x2e0(%rbp), %rdi
callq 0x307d0
movq %rax, -0x2f0(%rbp)
leaq -0x2e8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x8bbc0
testb $0x1, %al
jne 0x8a467
jmp 0x8a538
leaq -0x2e8(%rbp), %rdi
callq 0x8bc00
movq %rax, -0x2f8(%rbp)
cmpl $0x0, -0x2d8(%rbp)
jbe 0x8a4c8
leaq 0xc7a92(%rip), %rsi     # 0x151f1c
leaq -0x2d0(%rbp), %rdi
callq 0x11540
jmp 0x8a498
jmp 0x8a4c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x2d1(%rbp), %rdi
callq 0x11600
jmp 0x8a8f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8a56c
movq -0x2f8(%rbp), %rsi
leaq -0x318(%rbp), %rdi
callq 0x89eb0
jmp 0x8a4dd
leaq -0x2d0(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x11750
jmp 0x8a4f2
leaq -0x318(%rbp), %rdi
callq 0x11360
movl -0x2d8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2d8(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x8bc20
jmp 0x8a44b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x11360
jmp 0x8a56c
movq -0x420(%rbp), %rdi
leaq 0xc5abf(%rip), %rdx     # 0x150005
leaq -0x2d0(%rbp), %rsi
callq 0x24ec0
jmp 0x8a554
movl $0x1, -0x80(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x11360
jmp 0x8a8e9
leaq -0x2d0(%rbp), %rdi
callq 0x11360
jmp 0x8a8f4
leaq -0x339(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0x119d0
movq -0x498(%rbp), %rdx
leaq 0xc7c72(%rip), %rsi     # 0x152210
leaq -0x338(%rbp), %rdi
callq 0x24740
jmp 0x8a5ac
leaq -0x339(%rbp), %rdi
callq 0x11600
movq -0x410(%rbp), %rdi
movl $0x0, -0x340(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x78(%rbp), %rdx
callq 0x87c10
movq %rax, -0x4a0(%rbp)
jmp 0x8a5df
movq -0x4a0(%rbp), %rax
movq %rax, -0x348(%rbp)
movq -0x348(%rbp), %rdi
callq 0x8c0f0
movq %rax, -0x350(%rbp)
movq -0x348(%rbp), %rdi
callq 0x8bff0
movq %rax, -0x358(%rbp)
leaq -0x350(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x8bf90
testb $0x1, %al
jne 0x8a62f
jmp 0x8a7ca
leaq -0x350(%rbp), %rdi
callq 0x8c120
movq %rax, -0x360(%rbp)
cmpl $0x0, -0x340(%rbp)
jbe 0x8a690
leaq 0xc78ca(%rip), %rsi     # 0x151f1c
leaq -0x338(%rbp), %rdi
callq 0x11540
jmp 0x8a660
jmp 0x8a690
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x339(%rbp), %rdi
callq 0x11600
jmp 0x8a8f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8a7fe
movq -0x360(%rbp), %rdx
leaq 0xc7b44(%rip), %rsi     # 0x1521e2
leaq -0x3c0(%rbp), %rdi
callq 0x24f40
jmp 0x8a6ac
leaq 0xc7ade(%rip), %rdx     # 0x152191
leaq -0x3a0(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x24c60
jmp 0x8a6c8
movq -0x360(%rbp), %rsi
addq $0x20, %rsi
leaq -0x3e0(%rbp), %rdi
callq 0x89eb0
jmp 0x8a6e1
leaq -0x380(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
leaq -0x3e0(%rbp), %rdx
callq 0x36420
jmp 0x8a6fd
leaq -0x338(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x11750
jmp 0x8a712
leaq -0x380(%rbp), %rdi
callq 0x11360
leaq -0x3e0(%rbp), %rdi
callq 0x11360
leaq -0x3a0(%rbp), %rdi
callq 0x11360
leaq -0x3c0(%rbp), %rdi
callq 0x11360
movl -0x340(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x340(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x8c140
jmp 0x8a613
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8a7bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8a7b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x8a7a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x11360
leaq -0x3e0(%rbp), %rdi
callq 0x11360
leaq -0x3a0(%rbp), %rdi
callq 0x11360
leaq -0x3c0(%rbp), %rdi
callq 0x11360
jmp 0x8a7fe
movq -0x420(%rbp), %rdi
leaq 0xc582d(%rip), %rdx     # 0x150005
leaq -0x338(%rbp), %rsi
callq 0x24ec0
jmp 0x8a7e6
movl $0x1, -0x80(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x11360
jmp 0x8a8e9
leaq -0x338(%rbp), %rdi
callq 0x11360
jmp 0x8a8f4
movq -0x410(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x8bd90
movq %rax, -0x4a8(%rbp)
jmp 0x8a82b
movq -0x4a8(%rbp), %rsi
leaq -0x400(%rbp), %rdi
callq 0x80310
jmp 0x8a840
movq -0x420(%rbp), %rdi
leaq 0xc79cf(%rip), %rsi     # 0x15221d
leaq -0x400(%rbp), %rdx
callq 0x24f40
jmp 0x8a85c
leaq -0x400(%rbp), %rdi
callq 0x11360
movl $0x1, -0x80(%rbp)
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x11360
jmp 0x8a8f4
leaq -0x401(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
callq 0x119d0
movq -0x420(%rbp), %rdi
movq -0x4b0(%rbp), %rdx
leaq 0xc7970(%rip), %rsi     # 0x152223
callq 0x24740
jmp 0x8a8ba
leaq -0x401(%rbp), %rdi
callq 0x11600
movl $0x1, -0x80(%rbp)
jmp 0x8a8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x401(%rbp), %rdi
callq 0x11600
jmp 0x8a8f4
leaq -0x78(%rbp), %rdi
callq 0x24e60
jmp 0x8a8ff
leaq -0x78(%rbp), %rdi
callq 0x24e60
jmp 0x8a90f
movq -0x418(%rbp), %rax
addq $0x4b0, %rsp            # imm = 0x4B0
popq %rbp
retq
movq -0x58(%rbp), %rdi
callq 0x119c0
nopl (%rax,%rax)