// File: /workspace/github_cpp_makefile_star2_O1/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 0x42878
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 0x42ec9
leaq 0x42e2f(%rip), %rcx     # 0x85628
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xb0(%rsp), %rdi
callq 0x102b0
leaq 0xc0(%rsp), %r15
leaq 0x4308c(%rip), %rsi     # 0x858aa
movl $0x8, %edx
movq %r15, %rdi
callq 0x10490
movq (%r14), %rdi
addq $0x8, %rdi
callq 0x440a1
movq %r15, %rdi
movq %rax, %rsi
callq 0x102f0
leaq 0xc8(%rsp), %rsi
movq %r12, %rdi
callq 0x10620
movq 0x746f7(%rip), %rsi     # 0xb6f50
leaq 0xb0(%rsp), %rdi
callq 0x102e0
leaq 0x130(%rsp), %rdi
callq 0x10150
jmp 0x42f89
movl %r13d, %ebp
negl %ebp
cmovsl %r13d, %ebp
movl $0x1, %r14d
cmpl $0xa, %ebp
jb 0x428d5
movl $0x4, %r14d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x428cc
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x428d2
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x428d5
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r14d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x42899
addl $-0x3, %r14d
jmp 0x428d5
addl $-0x2, %r14d
jmp 0x428d5
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 0x1e75d
leaq 0x42f49(%rip), %rcx     # 0x8585a
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 0x42953
movq %rdx, 0xb0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc0(%rsp)
jmp 0x42959
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 0x42efd(%rip), %rsi     # 0x8587c
callq 0x10770
leaq 0x10(%r12), %rdx
movq %rdx, (%r12)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x429aa
movq %rsi, (%r12)
movq (%rcx), %rdx
movq %rdx, 0x10(%r12)
jmp 0x429b0
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 0x429e5
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x42f93
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x42f93
leaq 0xb0(%rsp), %rdi
leaq 0x70(%rsp), %rcx
movq %r14, %rsi
xorl %edx, %edx
callq 0x41004
leaq 0x42e70(%rip), %rsi     # 0x85898
leaq 0xb0(%rsp), %rdx
movq %r12, %rdi
callq 0x1d7be
jmp 0x42f68
leaq 0x10(%r12), %rax
movq %rax, (%r12)
leaq 0x42e32(%rip), %rsi     # 0x8587f
leaq 0x42e32(%rip), %rdx     # 0x85886
movq %r12, %rdi
callq 0x1e7ca
jmp 0x42f89
addq $0x8, %rdi
callq 0x442b8
leaq 0xb0(%rsp), %rdi
movq %rax, %rsi
callq 0x3d376
leaq 0x42e21(%rip), %rsi     # 0x858a2
leaq 0xb0(%rsp), %rdx
movq %r12, %rdi
callq 0x1d7be
jmp 0x42f68
leaq 0xc0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x42e1b(%rip), %rsi     # 0x858c4
leaq 0x42e20(%rip), %rdx     # 0x858d0
leaq 0xb0(%rsp), %rdi
callq 0x1e7ca
movq %r12, 0x28(%rsp)
leaq 0x70(%rsp), %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x40cb8
movq %rax, %r14
movq 0x18(%rax), %r15
addq $0x8, %r14
cmpq %r14, %r15
je 0x42c74
leaq 0x40(%rsp), %rbx
leaq 0x18(%rsp), %r12
xorl %ebp, %ebp
leaq 0x90(%rsp), %r13
subl $0x1, %ebp
jb 0x42b12
leaq 0xb0(%rsp), %rdi
leaq 0x42abd(%rip), %rsi     # 0x855ca
callq 0x10770
leaq 0x20(%r15), %rdx
movq %r13, %rdi
leaq 0x42d76(%rip), %rsi     # 0x85896
callq 0x1d7be
movq %r13, %rdi
leaq 0x42d16(%rip), %rsi     # 0x85845
callq 0x10770
movq %rbx, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x42b57
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x42b5d
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 0x427a8
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 0x42bba
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x42bc2
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 0x42c08
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x42c24
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x42c3b
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x42c60
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %r15, %rdi
callq 0x102a0
movq %rax, %r15
cmpq %r14, %rax
jne 0x42af9
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 0x1e014
leaq 0x41bbd(%rip), %rsi     # 0x84861
movq %r12, %rdi
callq 0x10770
jmp 0x42e53
addq $0x8, %rdi
callq 0x4424d
movzbl (%rax), %edx
leaq 0x41387(%rip), %rax     # 0x8404b
leaq 0x414d1(%rip), %rsi     # 0x8419c
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 0x1e7ca
leaq 0x42bba(%rip), %rcx     # 0x858b3
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 0x42f1d
movq %rsi, (%r12)
movq (%rcx), %rdx
movq %rdx, 0x10(%r12)
jmp 0x42f23
addq $0x8, %rdi
callq 0x44323
leaq 0xb0(%rsp), %rdi
movq %rax, %rsi
callq 0x3dcc6
leaq 0x42b74(%rip), %rsi     # 0x858d1
leaq 0xb0(%rsp), %rdx
movq %r12, %rdi
callq 0x1d7be
jmp 0x42f68
leaq 0xc0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x42b37(%rip), %rsi     # 0x858bc
leaq 0x42b37(%rip), %rdx     # 0x858c3
leaq 0xb0(%rsp), %rdi
callq 0x1e7ca
movq %r12, 0x28(%rsp)
movq (%r14), %rdi
addq $0x8, %rdi
callq 0x44177
movq (%rax), %r14
movq 0x8(%rax), %rbp
cmpq %rbp, %r14
je 0x42e1b
xorl %ebx, %ebx
leaq 0x18(%rsp), %r13
leaq 0x8(%rsp), %r15
leaq 0xb0(%rsp), %r12
subl $0x1, %ebx
jb 0x42dde
movq %r12, %rdi
leaq 0x427f1(%rip), %rsi     # 0x855ca
callq 0x10770
movq %r15, %rdi
movq %r14, %rsi
callq 0x427a8
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r12, %rdi
callq 0x10120
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x42e12
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
addq $0x10, %r14
cmpq %rbp, %r14
jne 0x42dca
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 0x1e014
leaq 0x41a16(%rip), %rsi     # 0x84861
movq %r12, %rdi
callq 0x10770
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
jmp 0x42f74
addq $0x8, %rdi
callq 0x441e2
leaq 0x42a17(%rip), %rsi     # 0x8588f
leaq 0xb0(%rsp), %rdi
movq %rax, %rdx
callq 0x1d7be
leaq 0x42a07(%rip), %rsi     # 0x85896
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 0x42f4a
movq %rsi, (%r12)
movq (%rcx), %rdx
movq %rdx, 0x10(%r12)
jmp 0x42f50
leaq 0x10(%r12), %rax
movq %rax, (%r12)
leaq 0x429fe(%rip), %rsi     # 0x858d7
leaq 0x42a03(%rip), %rdx     # 0x858e3
movq %r12, %rdi
callq 0x1e7ca
jmp 0x42f89
addq $0x8, %rdi
callq 0x44018
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x483c8
leaq 0x42977(%rip), %rsi     # 0x85887
movq %r12, %rdi
movq %r14, %rdx
callq 0x1d7be
jmp 0x42f68
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 0x42f79
jmp 0x42f89
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 0x42f89
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x70(%rsp), %rdi
callq 0x1d77a
movq %r12, %rax
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x42faf
jmp 0x43123
movq %rax, %r14
movq (%r12), %rdi
cmpq %rbx, %rdi
je 0x43142
movq (%rbx), %rsi
jmp 0x4313a
jmp 0x43123
jmp 0x42ff9
jmp 0x42ff9
movq %rax, %r14
movq 0xb0(%rsp), %rdi
cmpq %r15, %rdi
jne 0x43157
jmp 0x43167
jmp 0x42ff9
jmp 0x42ff9
jmp 0x43123
jmp 0x43021
jmp 0x43123
movq %rax, %r14
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x43152
jmp 0x43021
jmp 0x43021
jmp 0x43021
jmp 0x43021
jmp 0x43021
jmp 0x43021
jmp 0x43021
jmp 0x43021
jmp 0x43021
jmp 0x43021
movq %rax, %r14
jmp 0x43167
movq %rax, %r14
movq 0x73f1d(%rip), %rsi     # 0xb6f50
leaq 0xb0(%rsp), %rdi
callq 0x102e0
leaq 0x130(%rsp), %rdi
callq 0x10150
jmp 0x43167
jmp 0x43123
jmp 0x43123
movq %rax, %r14
movq 0xb0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x43081
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x43081
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x43171
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x43171
jmp 0x43123
movq %rax, %r14
jmp 0x43104
movq %rax, %r14
jmp 0x430ed
movq %rax, %r14
jmp 0x430d1
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x430d1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x430ed
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x43104
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x43142
movq 0xa0(%rsp), %rsi
jmp 0x4313a
movq %rax, %r14
jmp 0x43142
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x43142
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x43167
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x70(%rsp), %rdi
callq 0x1d77a
movq %r14, %rdi
callq 0x106f0
nop