// File: /workspace/github_cpp_makefile_star2_O1/vjeux[P]jspp/example/../src/operators.h
// Function: Object::toString[abi:cxx11]()
std::string Object::toString() {
	if (s->type == STRING) {
		return s->s;
	}

	if (s->type == NUMBER) {
		std::ostringstream stream;
		stream << s->n;
		return stream.str();
	}

	if (s->type == UNDEFINED) {
		return "undefined";
	}

	if (s->type == NULLL) {
		return "null";
	}

	if (s->type == FUNCTION) {
		std::ostringstream stream;
		stream << "<function " << s << ">";
		return stream.str();
	}

	if (s->type == OBJECT) {
		std::ostringstream stream;
		stream << "{";

		bool first = true;
		for (auto it = this->s->map.begin(); it != this->s->map.end(); ++it) {
			if (it->second != undefined) {
				if (!first) {
					stream << ", ";
				}
				first = false;
				stream << it->first << ": " << it->second;
			}
		}

		stream << "}";
		return stream.str();
	}

	if (s->type == ARRAY) {
		var length = (*this)["length"];
		std::ostringstream stream;
		stream << "[";

		for (var i = 0; i < length; ++i) {
			stream << (*this)[i];
			if (i != length - 1) {
				stream << ", ";
			}
		}

		stream << "]";
		return stream.str();
	}


	throw _("Unknown type");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2f8, %rsp            # imm = 0x2F8
movq %rsi, (%rsp)
movq 0x10(%rsi), %rax
movl 0x38(%rax), %ecx
cmpq $0x6, %rcx
ja 0x2c11
movq %rdi, %r14
leaq 0x8a66(%rip), %rdx      # 0xb004
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0x150(%rsp), %rbx
movq %rbx, %rdi
callq 0x2210
movq (%rsp), %rax
movq 0x10(%rax), %rax
movsd 0x40(%rax), %xmm0
movq %rbx, %rdi
callq 0x2260
leaq 0x158(%rsp), %rsi
movq %r14, %rdi
callq 0x2250
jmp 0x283a
leaq 0x10(%r14), %rax
movq %rax, (%r14)
leaq 0x8b7d(%rip), %rsi      # 0xb16c
leaq 0x8b7a(%rip), %rdx      # 0xb170
jmp 0x266f
leaq 0x150(%rsp), %rbx
movq %rbx, %rdi
callq 0x2210
leaq 0x8b62(%rip), %rsi      # 0xb171
movl $0xa, %edx
movq %rbx, %rdi
callq 0x21f0
movq (%rsp), %rax
movq 0x10(%rax), %rsi
leaq 0x150(%rsp), %rdi
callq 0x2160
leaq 0x8b28(%rip), %rsi      # 0xb160
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
leaq 0x158(%rsp), %rsi
movq %r14, %rdi
callq 0x2250
jmp 0x283a
leaq 0x10(%r14), %rax
movq %rax, (%r14)
leaq 0x8afa(%rip), %rsi      # 0xb162
leaq 0x8afc(%rip), %rdx      # 0xb16b
movq %r14, %rdi
callq 0x9b0c
jmp 0x2bfc
leaq 0x10(%r14), %rcx
movq %rcx, (%r14)
movq 0x48(%rax), %rsi
movq 0x50(%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x9a7c
jmp 0x2bfc
movq %r14, 0x8(%rsp)
leaq 0x150(%rsp), %rbx
movq %rbx, %rdi
callq 0x2210
leaq 0x8ac5(%rip), %rsi      # 0xb17c
movl $0x1, %edx
movq %rbx, %rdi
callq 0x21f0
movq (%rsp), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rbx
addq $0x10, %rax
cmpq %rax, %rbx
je 0x280c
movb $0x1, %r12b
leaq 0x138(%rsp), %r14
leaq 0x120(%rsp), %r15
leaq 0xf0(%rsp), %rbp
movq 0x40(%rbx), %rax
movq %rax, 0x138(%rsp)
movq %r14, 0x140(%rsp)
movq 0x50(%rbx), %rax
movq %rax, 0x148(%rsp)
incl (%rax)
movq 0xca6f(%rip), %rax      # 0xf190
movq %rax, 0x120(%rsp)
movq %r15, 0x128(%rsp)
movq 0xca68(%rip), %rax      # 0xf1a0
movq %rax, 0x130(%rsp)
incl (%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x56df
movl %eax, %r13d
movq %r15, %rdi
callq 0x9092
movq %r14, %rdi
callq 0x9092
testb %r13b, %r13b
je 0x27ec
testb $0x1, %r12b
jne 0x2788
movl $0x2, %edx
leaq 0x150(%rsp), %rdi
leaq 0x89fb(%rip), %rsi      # 0xb17e
callq 0x21f0
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
leaq 0x150(%rsp), %rdi
callq 0x21f0
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x8a34(%rip), %rsi      # 0xb1e3
callq 0x21f0
movq 0x40(%rbx), %rax
movq %rax, 0xf0(%rsp)
movq %rbp, 0xf8(%rsp)
movq 0x50(%rbx), %rax
movq %rax, 0x100(%rsp)
incl (%rax)
movq %r13, %rdi
movq %rbp, %rsi
callq 0x24fc
movq %rbp, %rdi
callq 0x9092
xorl %r12d, %r12d
movq %rbx, %rdi
callq 0x2130
movq %rax, %rbx
movq (%rsp), %rax
movq 0x10(%rax), %rax
addq $0x10, %rax
cmpq %rax, %rbx
jne 0x26f8
leaq 0x896e(%rip), %rsi      # 0xb181
leaq 0x150(%rsp), %rdi
movl $0x1, %edx
callq 0x21f0
movq 0x8(%rsp), %r14
leaq 0x158(%rsp), %rsi
movq %r14, %rdi
callq 0x2250
movq 0xc78f(%rip), %rsi      # 0xefd0
leaq 0x150(%rsp), %rdi
callq 0x20f0
leaq 0x1c0(%rsp), %rdi
callq 0x2080
jmp 0x2bfc
leaq 0x891c(%rip), %rsi      # 0xb183
leaq 0x2c8(%rsp), %rbx
movq %rbx, %rdi
callq 0x67a4
movq (%rsp), %rdi
movq %rbx, %rsi
callq 0x6126
movq (%rax), %rcx
leaq 0x60(%rsp), %rbx
movq %rcx, (%rbx)
movq %rbx, 0x8(%rbx)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rbx)
incl (%rax)
leaq 0x2c8(%rsp), %rdi
callq 0x9092
leaq 0x150(%rsp), %rdi
movq %rbx, 0x28(%rsp)
callq 0x2210
leaq 0x88c8(%rip), %rsi      # 0xb18a
leaq 0x150(%rsp), %rdi
movl $0x1, %edx
callq 0x21f0
movq %r14, 0x8(%rsp)
leaq 0xc8b0(%rip), %rcx      # 0xf190
leaq 0x10(%rsp), %rax
movq %rcx, (%rax)
movq %rax, 0x8(%rax)
movl $0x138, %edi            # imm = 0x138
callq 0x21a0
movq %rax, %rbx
movl $0x1, (%rax)
addq $0x10, %rax
xorl %r14d, %r14d
movl %r14d, 0x10(%rbx)
movq %r14, 0x18(%rbx)
movq %rax, 0x20(%rbx)
movq %rax, 0x28(%rbx)
movq %r14, 0x30(%rbx)
leaq 0x58(%rbx), %rax
movq %rax, 0x48(%rbx)
movq %r14, 0x50(%rbx)
movb $0x0, 0x58(%rbx)
movq %rbx, %rdi
addq $0x70, %rdi
movl $0xc0, %edx
xorl %esi, %esi
callq 0x2110
leaq 0x10(%rsp), %rax
movq %rbx, 0x10(%rax)
movq %r14, 0x40(%rbx)
movl %r14d, 0x38(%rbx)
leaq 0xd8(%rsp), %r13
leaq 0xc0(%rsp), %rbx
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rcx
movq %rax, 0xd8(%rsp)
movq %r13, 0xe0(%rsp)
movq %rcx, 0xe8(%rsp)
incl (%rcx)
movq 0x60(%rsp), %rax
movq 0x70(%rsp), %rcx
movq %rax, 0xc0(%rsp)
movq %rbx, 0xc8(%rsp)
movq %rcx, 0xd0(%rsp)
incl (%rcx)
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5e1e
movl %eax, %r12d
movq %rbx, %rdi
callq 0x9092
movq %r13, %rdi
callq 0x9092
testb %r12b, %r12b
leaq 0x90(%rsp), %rbp
je 0x2b99
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rcx
movq %rax, 0x48(%rsp)
leaq 0x48(%rsp), %rsi
movq %rsi, 0x50(%rsp)
movq %rcx, 0x58(%rsp)
incl (%rcx)
movq (%rsp), %rdi
callq 0x6126
movq (%rax), %rcx
movq %rcx, 0xa8(%rsp)
leaq 0xa8(%rsp), %r12
movq %r12, 0xb0(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0xb8(%rsp)
incl (%rax)
leaq 0x150(%rsp), %rdi
movq %r12, %rsi
callq 0x24fc
movq %r12, %rdi
callq 0x9092
leaq 0x48(%rsp), %rdi
callq 0x9092
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rcx
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rax
movq %rax, 0x38(%rsp)
movq %rcx, 0x40(%rsp)
incl (%rcx)
movq 0x60(%rsp), %rax
movq 0x70(%rsp), %rcx
movq %rax, 0x90(%rsp)
movq %rbp, 0x98(%rsp)
movq %rcx, 0xa0(%rsp)
incl (%rcx)
leaq 0xc6fc(%rip), %rax      # 0xf190
movq %rax, 0x78(%rsp)
leaq 0x78(%rsp), %r14
movq %r14, 0x80(%rsp)
movl $0x138, %edi            # imm = 0x138
callq 0x21a0
movq %rax, %r12
movq %r13, %r15
movl $0x1, (%rax)
addq $0x10, %rax
xorl %r13d, %r13d
movl %r13d, 0x10(%r12)
movq %r13, 0x18(%r12)
movq %rax, 0x20(%r12)
movq %rax, 0x28(%r12)
movq %r13, 0x30(%r12)
leaq 0x58(%r12), %rax
movq %rax, 0x48(%r12)
movq %r13, 0x50(%r12)
movb $0x0, 0x58(%r12)
movq %r12, %rdi
addq $0x70, %rdi
movl $0xc0, %edx
xorl %esi, %esi
callq 0x2110
movq %r12, 0x88(%rsp)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x40(%r12)
movl %r13d, 0x38(%r12)
leaq 0x2e0(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
movq %r14, %rdx
callq 0x5594
leaq 0x30(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x56df
movq %r12, %rdi
movl %eax, %r12d
callq 0x9092
movq %r14, %rdi
callq 0x9092
movq %rbp, %rdi
callq 0x9092
movq %r13, %rdi
callq 0x9092
testb %r12b, %r12b
movq %r15, %r13
je 0x2b8a
movl $0x2, %edx
leaq 0x150(%rsp), %rdi
leaq 0x85f9(%rip), %rsi      # 0xb17e
callq 0x21f0
leaq 0x10(%rsp), %rdi
callq 0x5b3a
jmp 0x295e
leaq 0x10(%rsp), %rdi
callq 0x9092
leaq 0x85e2(%rip), %rsi      # 0xb18c
leaq 0x150(%rsp), %rdi
movl $0x1, %edx
callq 0x21f0
movq 0x8(%rsp), %r14
leaq 0x158(%rsp), %rsi
movq %r14, %rdi
callq 0x2250
movq 0xc3f8(%rip), %rsi      # 0xefd0
leaq 0x150(%rsp), %rdi
callq 0x20f0
leaq 0x1c0(%rsp), %rdi
callq 0x2080
leaq 0x60(%rsp), %rdi
callq 0x9092
movq %r14, %rax
addq $0x2f8, %rsp            # imm = 0x2F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x18, %edi
callq 0x20e0
movq %rax, %r14
leaq 0x8569(%rip), %rsi      # 0xb18e
leaq 0x108(%rsp), %rdi
callq 0x67a4
movq 0x108(%rsp), %rax
movq %rax, (%r14)
movq %r14, 0x8(%r14)
movq 0x118(%rsp), %rax
movq %rax, 0x10(%r14)
incl (%rax)
leaq 0xc0ea(%rip), %rsi      # 0xed40
leaq 0x6435(%rip), %rdx      # 0x9092
movq %r14, %rdi
callq 0x2280
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x9092
xorl %eax, %eax
jmp 0x2c7e
movq %rax, %rbx
movb $0x1, %al
testb %al, %al
je 0x2d88
movq %r14, %rdi
callq 0x2150
jmp 0x2d88
jmp 0x2caa
jmp 0x2c9c
movq %rbx, 0x28(%rsp)
movq %rax, %rbx
jmp 0x2d7e
jmp 0x2cc6
jmp 0x2cc6
jmp 0x2cc6
movq %rax, %rbx
jmp 0x2d5d
jmp 0x2cc6
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x9092
jmp 0x2cc9
movq %rax, %rbx
movq 0xc300(%rip), %rsi      # 0xefd0
leaq 0x150(%rsp), %rdi
callq 0x20f0
leaq 0x1c0(%rsp), %rdi
callq 0x2080
jmp 0x2d88
movq %rax, %rbx
jmp 0x2d04
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x9092
leaq 0x48(%rsp), %rdi
jmp 0x2d49
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x9092
jmp 0x2d1d
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x9092
leaq 0x30(%rsp), %rdi
jmp 0x2d49
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x9092
leaq 0xd8(%rsp), %rdi
callq 0x9092
jmp 0x2d53
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x9092
movq 0xc26c(%rip), %rsi      # 0xefd0
leaq 0x150(%rsp), %rdi
callq 0x20f0
leaq 0x1c0(%rsp), %rdi
callq 0x2080
movq 0x28(%rsp), %rdi
callq 0x9092
movq %rbx, %rdi
callq 0x2290