// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x238, %rsp            # imm = 0x238
movq %rdi, %r12
movl 0x8(%rsi), %r13d
cmpq $0x3, %r13
jne 0x42140
movq %rsi, %r14
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movq $0x0, 0x80(%rsp)
movq (%rsi), %rdi
movl (%rdi), %eax
addl $0xa, %eax
cmpl $0x9, %eax
ja 0x42791
leaq 0x42587(%rip), %rcx     # 0x84648
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xb0(%rsp), %rdi
callq 0x102b0
leaq 0xc0(%rsp), %r15
leaq 0x427e4(%rip), %rsi     # 0x848ca
movl $0x8, %edx
movq %r15, %rdi
callq 0x10490
movq (%r14), %rdi
addq $0x8, %rdi
callq 0x43911
movq %r15, %rdi
movq %rax, %rsi
callq 0x102f0
leaq 0xc8(%rsp), %rsi
movq %r12, %rdi
callq 0x10620
movq 0x72e2f(%rip), %rsi     # 0xb4f50
leaq 0xb0(%rsp), %rdi
callq 0x102e0
leaq 0x130(%rsp), %rdi
callq 0x10150
jmp 0x42851
movl %r13d, %ebp
negl %ebp
cmovsl %r13d, %ebp
movl $0x1, %r14d
cmpl $0xa, %ebp
jb 0x4219d
movl $0x4, %r14d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x42194
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x4219a
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x4219d
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r14d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x42161
addl $-0x3, %r14d
jmp 0x4219d
addl $-0x2, %r14d
jmp 0x4219d
decl %r14d
shrl $0x1f, %r13d
movl %r13d, %esi
addl %r14d, %esi
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x8(%rsp), %r15
movq %r15, %rdi
movl $0x2d, %edx
callq 0x104c0
movq (%r15), %rdi
addq %r13, %rdi
movl %r14d, %esi
movl %ebp, %edx
callq 0x1e62b
leaq 0x426a1(%rip), %rcx     # 0x8487a
movl $0x21, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x10460
leaq 0xc0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4221b
movq %rdx, 0xb0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc0(%rsp)
jmp 0x42221
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
leaq 0xb0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x42655(%rip), %rsi     # 0x8489c
callq 0x10770
leaq 0x10(%r12), %rdx
movq %rdx, (%r12)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x42272
movq %rsi, (%r12)
movq (%rcx), %rdx
movq %rdx, 0x10(%r12)
jmp 0x42278
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%r12)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0xb0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x422ad
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4285b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x4285b
leaq 0xb0(%rsp), %rdi
leaq 0x70(%rsp), %rcx
movq %r14, %rsi
xorl %edx, %edx
callq 0x40904
leaq 0x425c8(%rip), %rsi     # 0x848b8
leaq 0xb0(%rsp), %rdx
movq %r12, %rdi
callq 0x1d67c
jmp 0x42830
leaq 0x10(%r12), %rax
movq %rax, (%r12)
leaq 0x4258a(%rip), %rsi     # 0x8489f
leaq 0x4258a(%rip), %rdx     # 0x848a6
movq %r12, %rdi
callq 0x1e698
jmp 0x42851
addq $0x8, %rdi
callq 0x43b28
leaq 0xb0(%rsp), %rdi
movq %rax, %rsi
callq 0x3cd4a
leaq 0x42579(%rip), %rsi     # 0x848c2
leaq 0xb0(%rsp), %rdx
movq %r12, %rdi
callq 0x1d67c
jmp 0x42830
leaq 0xc0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x42573(%rip), %rsi     # 0x848e4
leaq 0x42578(%rip), %rdx     # 0x848f0
leaq 0xb0(%rsp), %rdi
callq 0x1e698
movq %r12, 0x28(%rsp)
leaq 0x70(%rsp), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x405bc
movq %rax, %r14
movq 0x18(%rax), %r15
addq $0x8, %r14
cmpq %r14, %r15
je 0x4253c
leaq 0x40(%rsp), %rbx
leaq 0x18(%rsp), %r12
xorl %ebp, %ebp
leaq 0x90(%rsp), %r13
subl $0x1, %ebp
jb 0x423da
leaq 0xb0(%rsp), %rdi
leaq 0x42215(%rip), %rsi     # 0x845ea
callq 0x10770
leaq 0x20(%r15), %rdx
movq %r13, %rdi
leaq 0x424ce(%rip), %rsi     # 0x848b6
callq 0x1d67c
movq %r13, %rdi
leaq 0x4246e(%rip), %rsi     # 0x84865
callq 0x10770
movq %rbx, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4241f
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x42425
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%r15), %rsi
leaq 0x50(%rsp), %rdi
callq 0x42070
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
leaq 0x30(%rsp), %rdi
callq 0x10120
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x42482
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x4248a
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xb0(%rsp), %rdi
callq 0x10120
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x424d0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x424ec
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x42503
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x42528
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %r15, %rdi
callq 0x102a0
movq %rax, %r15
cmpq %r14, %rax
jne 0x423c1
movq 0x28(%rsp), %r12
leaq 0x10(%r12), %rbx
movq %rbx, (%r12)
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x1ded4
leaq 0x41315(%rip), %rsi     # 0x83881
movq %r12, %rdi
callq 0x10770
jmp 0x4271b
addq $0x8, %rdi
callq 0x43abd
movzbl (%rax), %edx
leaq 0x40abf(%rip), %rax     # 0x8304b
leaq 0x40c09(%rip), %rsi     # 0x8319c
testq %rdx, %rdx
cmovneq %rax, %rsi
leaq 0xc0(%rsp), %r15
movq %r15, -0x10(%r15)
xorq $0x5, %rdx
addq %rsi, %rdx
leaq 0xb0(%rsp), %rdi
callq 0x1e698
leaq 0x42312(%rip), %rcx     # 0x848d3
leaq 0xb0(%rsp), %rdi
movl $0x8, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x10460
leaq 0x10(%r12), %rdx
movq %rdx, (%r12)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x427e5
movq %rsi, (%r12)
movq (%rcx), %rdx
movq %rdx, 0x10(%r12)
jmp 0x427eb
addq $0x8, %rdi
callq 0x43b93
leaq 0xb0(%rsp), %rdi
movq %rax, %rsi
callq 0x3d6ba
leaq 0x422cc(%rip), %rsi     # 0x848f1
leaq 0xb0(%rsp), %rdx
movq %r12, %rdi
callq 0x1d67c
jmp 0x42830
leaq 0xc0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4228f(%rip), %rsi     # 0x848dc
leaq 0x4228f(%rip), %rdx     # 0x848e3
leaq 0xb0(%rsp), %rdi
callq 0x1e698
movq %r12, 0x28(%rsp)
movq (%r14), %rdi
addq $0x8, %rdi
callq 0x439e7
movq (%rax), %r14
movq 0x8(%rax), %rbp
cmpq %rbp, %r14
je 0x426e3
xorl %ebx, %ebx
leaq 0x18(%rsp), %r13
leaq 0x8(%rsp), %r15
leaq 0xb0(%rsp), %r12
subl $0x1, %ebx
jb 0x426a6
movq %r12, %rdi
leaq 0x41f49(%rip), %rsi     # 0x845ea
callq 0x10770
movq %r15, %rdi
movq %r14, %rsi
callq 0x42070
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r12, %rdi
callq 0x10120
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x426da
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
addq $0x10, %r14
cmpq %rbp, %r14
jne 0x42692
movq 0x28(%rsp), %r12
leaq 0x10(%r12), %rbx
movq %rbx, (%r12)
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x1ded4
leaq 0x4116e(%rip), %rsi     # 0x83881
movq %r12, %rdi
callq 0x10770
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
jmp 0x4283c
addq $0x8, %rdi
callq 0x43a52
leaq 0x4216f(%rip), %rsi     # 0x848af
leaq 0xb0(%rsp), %rdi
movq %rax, %rdx
callq 0x1d67c
leaq 0x4215f(%rip), %rsi     # 0x848b6
leaq 0xb0(%rsp), %rdi
callq 0x10770
leaq 0x10(%r12), %rdx
movq %rdx, (%r12)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x42812
movq %rsi, (%r12)
movq (%rcx), %rdx
movq %rdx, 0x10(%r12)
jmp 0x42818
leaq 0x10(%r12), %rax
movq %rax, (%r12)
leaq 0x42156(%rip), %rsi     # 0x848f7
leaq 0x4215b(%rip), %rdx     # 0x84903
movq %r12, %rdi
callq 0x1e698
jmp 0x42851
addq $0x8, %rdi
callq 0x43888
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x47aea
leaq 0x420cf(%rip), %rsi     # 0x848a7
movq %r12, %rdi
movq %r14, %rdx
callq 0x1d67c
jmp 0x42830
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%r12)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0xb0(%rsp), %rdi
cmpq %r15, %rdi
jne 0x42841
jmp 0x42851
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%r12)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x42851
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x70(%rsp), %rdi
callq 0x1d632
movq %r12, %rax
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x42877
jmp 0x429eb
movq %rax, %r14
movq (%r12), %rdi
cmpq %rbx, %rdi
je 0x42a0a
movq (%rbx), %rsi
jmp 0x42a02
jmp 0x429eb
jmp 0x428c1
jmp 0x428c1
movq %rax, %r14
movq 0xb0(%rsp), %rdi
cmpq %r15, %rdi
jne 0x42a1f
jmp 0x42a2f
jmp 0x428c1
jmp 0x428c1
jmp 0x429eb
jmp 0x428e9
jmp 0x429eb
movq %rax, %r14
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x42a1a
jmp 0x428e9
jmp 0x428e9
jmp 0x428e9
jmp 0x428e9
jmp 0x428e9
jmp 0x428e9
jmp 0x428e9
jmp 0x428e9
jmp 0x428e9
jmp 0x428e9
movq %rax, %r14
jmp 0x42a2f
movq %rax, %r14
movq 0x72655(%rip), %rsi     # 0xb4f50
leaq 0xb0(%rsp), %rdi
callq 0x102e0
leaq 0x130(%rsp), %rdi
callq 0x10150
jmp 0x42a2f
jmp 0x429eb
jmp 0x429eb
movq %rax, %r14
movq 0xb0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x42949
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x42949
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x42a39
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x42a39
jmp 0x429eb
movq %rax, %r14
jmp 0x429cc
movq %rax, %r14
jmp 0x429b5
movq %rax, %r14
jmp 0x42999
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x42999
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x429b5
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x429cc
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x42a0a
movq 0xa0(%rsp), %rsi
jmp 0x42a02
movq %rax, %r14
jmp 0x42a0a
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x42a0a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x42a2f
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x70(%rsp), %rdi
callq 0x1d632
movq %r14, %rdi
callq 0x106f0
nop