// File: 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
movq %rsp, %rbp
subq $0x820, %rsp            # imm = 0x820
movq %rdi, -0x7a0(%rbp)
movq %rdi, %rax
movq %rax, -0x798(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x790(%rbp)
movq 0x10(%rax), %rax
cmpl $0x1, 0x38(%rax)
jne 0x2619
movq -0x7a0(%rbp), %rdi
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rsi
addq $0x48, %rsi
callq 0x20d0
jmp 0x2fe9
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x38(%rax)
jne 0x26a4
leaq -0x188(%rbp), %rdi
movq %rdi, -0x7a8(%rbp)
callq 0x22c0
movq -0x790(%rbp), %rax
movq -0x7a8(%rbp), %rdi
movq 0x10(%rax), %rax
movsd 0x40(%rax), %xmm0
callq 0x2370
jmp 0x265b
movq -0x7a0(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x2220
jmp 0x2670
leaq -0x188(%rbp), %rdi
callq 0x2080
jmp 0x2fe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x2080
jmp 0x2ff9
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x3, 0x38(%rax)
jne 0x2718
leaq -0x195(%rbp), %rdi
movq %rdi, -0x7b0(%rbp)
callq 0x2350
movq -0x7a0(%rbp), %rdi
movq -0x7b0(%rbp), %rdx
leaq 0xea11(%rip), %rsi      # 0x110ee
callq 0xcbb0
jmp 0x26e4
leaq -0x195(%rbp), %rdi
callq 0x2260
jmp 0x2fe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x195(%rbp), %rdi
callq 0x2260
jmp 0x2ff9
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x4, 0x38(%rax)
jne 0x278c
leaq -0x196(%rbp), %rdi
movq %rdi, -0x7b8(%rbp)
callq 0x2350
movq -0x7a0(%rbp), %rdi
movq -0x7b8(%rbp), %rdx
leaq 0xe9a7(%rip), %rsi      # 0x110f8
callq 0xcbb0
jmp 0x2758
leaq -0x196(%rbp), %rdi
callq 0x2260
jmp 0x2fe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x196(%rbp), %rdi
callq 0x2260
jmp 0x2ff9
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x2, 0x38(%rax)
jne 0x284e
leaq -0x310(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
callq 0x22c0
movq -0x7c8(%rbp), %rdi
leaq 0xe93b(%rip), %rsi      # 0x110fd
callq 0x21f0
movq %rax, -0x7c0(%rbp)
jmp 0x27d0
movq -0x7c0(%rbp), %rdi
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x21a0
movq %rax, -0x7d0(%rbp)
jmp 0x27f0
movq -0x7d0(%rbp), %rdi
leaq 0xe8ee(%rip), %rsi      # 0x110ec
callq 0x21f0
jmp 0x2805
movq -0x7a0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x2220
jmp 0x281a
leaq -0x310(%rbp), %rdi
callq 0x2080
jmp 0x2fe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x2080
jmp 0x2ff9
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x5, 0x38(%rax)
jne 0x2ae0
leaq -0x488(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x22c0
movq -0x7d8(%rbp), %rdi
leaq 0xe884(%rip), %rsi      # 0x11108
callq 0x21f0
jmp 0x288b
movq -0x790(%rbp), %rax
movb $0x1, -0x489(%rbp)
movq 0x10(%rax), %rdi
addq $0x8, %rdi
callq 0xcc60
movq %rax, -0x498(%rbp)
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x8, %rdi
callq 0xccc0
movq %rax, -0x4a0(%rbp)
leaq -0x498(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
callq 0xcc90
testb $0x1, %al
jne 0x28e4
jmp 0x2a94
leaq -0x498(%rbp), %rdi
callq 0xccf0
movq %rax, %rsi
addq $0x20, %rsi
leaq -0x4b8(%rbp), %rdi
callq 0x7840
jmp 0x2905
leaq 0x158fc(%rip), %rsi     # 0x18208
leaq -0x4d0(%rbp), %rdi
callq 0x7840
jmp 0x291a
leaq -0x4b8(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x6850
movb %al, -0x7d9(%rbp)
jmp 0x2935
leaq -0x4d0(%rbp), %rdi
callq 0xc620
leaq -0x4b8(%rbp), %rdi
callq 0xc620
movb -0x7d9(%rbp), %al
testb $0x1, %al
jne 0x295c
jmp 0x2a81
testb $0x1, -0x489(%rbp)
jne 0x29d6
leaq 0xe79e(%rip), %rsi      # 0x1110a
leaq -0x488(%rbp), %rdi
callq 0x21f0
jmp 0x297a
jmp 0x29d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2acf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x29c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0xc620
leaq -0x4b8(%rbp), %rdi
callq 0xc620
jmp 0x2acf
movb $0x0, -0x489(%rbp)
leaq -0x498(%rbp), %rdi
callq 0xccf0
movq %rax, %rsi
leaq -0x488(%rbp), %rdi
callq 0x21e0
movq %rax, -0x7e8(%rbp)
jmp 0x2a01
movq -0x7e8(%rbp), %rdi
leaq 0xe760(%rip), %rsi      # 0x1116f
callq 0x21f0
movq %rax, -0x7f0(%rbp)
jmp 0x2a1d
leaq -0x498(%rbp), %rdi
callq 0xccf0
movq %rax, %rsi
addq $0x20, %rsi
leaq -0x4e8(%rbp), %rdi
callq 0x7840
jmp 0x2a3e
movq -0x7f0(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x2550
jmp 0x2a53
leaq -0x4e8(%rbp), %rdi
callq 0xc620
jmp 0x2a81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0xc620
jmp 0x2acf
jmp 0x2a83
leaq -0x498(%rbp), %rdi
callq 0xcd10
jmp 0x28ad
leaq 0xe672(%rip), %rsi      # 0x1110d
leaq -0x488(%rbp), %rdi
callq 0x21f0
jmp 0x2aa9
movq -0x7a0(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x2220
jmp 0x2abe
leaq -0x488(%rbp), %rdi
callq 0x2080
jmp 0x2fe9
leaq -0x488(%rbp), %rdi
callq 0x2080
jmp 0x2ff9
movq -0x790(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x6, 0x38(%rax)
jne 0x2f32
leaq 0xe613(%rip), %rsi      # 0x1110f
leaq -0x518(%rbp), %rdi
movq %rdi, -0x800(%rbp)
callq 0x7b00
movq -0x790(%rbp), %rdi
movq -0x800(%rbp), %rsi
callq 0x71d0
movq %rax, -0x7f8(%rbp)
jmp 0x2b2b
movq -0x7f8(%rbp), %rsi
leaq -0x500(%rbp), %rdi
callq 0x7840
jmp 0x2b40
leaq -0x518(%rbp), %rdi
callq 0xc620
leaq -0x690(%rbp), %rdi
callq 0x22c0
jmp 0x2b5a
leaq 0xe5b5(%rip), %rsi      # 0x11116
leaq -0x690(%rbp), %rdi
callq 0x21f0
jmp 0x2b6f
leaq -0x6a8(%rbp), %rdi
xorl %esi, %esi
callq 0x79b0
jmp 0x2b7f
jmp 0x2b81
leaq -0x6c0(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0x7840
jmp 0x2b96
leaq -0x6d8(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x7840
jmp 0x2bab
leaq -0x6c0(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
callq 0x6ef0
movb %al, -0x801(%rbp)
jmp 0x2bc6
leaq -0x6d8(%rbp), %rdi
callq 0xc620
leaq -0x6c0(%rbp), %rdi
callq 0xc620
movb -0x801(%rbp), %al
testb $0x1, %al
jne 0x2ca8
leaq -0x6a8(%rbp), %rdi
callq 0xc620
jmp 0x2ece
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x518(%rbp), %rdi
callq 0xc620
jmp 0x2ff9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2f21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2f15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2ec0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2c97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x6d8(%rbp), %rdi
callq 0xc620
leaq -0x6c0(%rbp), %rdi
callq 0xc620
jmp 0x2ec0
leaq -0x708(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0x7840
jmp 0x2cbd
movq -0x790(%rbp), %rdi
leaq -0x708(%rbp), %rsi
callq 0x71d0
movq %rax, -0x810(%rbp)
jmp 0x2cd9
movq -0x810(%rbp), %rsi
leaq -0x6f0(%rbp), %rdi
callq 0x7840
jmp 0x2cee
leaq -0x690(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
callq 0x2550
jmp 0x2d03
leaq -0x6f0(%rbp), %rdi
callq 0xc620
leaq -0x708(%rbp), %rdi
callq 0xc620
leaq -0x720(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0x7840
jmp 0x2d30
leaq -0x750(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x7840
jmp 0x2d45
leaq -0x768(%rbp), %rdi
movl $0x1, %esi
callq 0x79b0
jmp 0x2d58
leaq -0x738(%rbp), %rdi
leaq -0x750(%rbp), %rsi
leaq -0x768(%rbp), %rdx
callq 0x66e0
jmp 0x2d74
leaq -0x720(%rbp), %rdi
leaq -0x738(%rbp), %rsi
callq 0x6850
movb %al, -0x811(%rbp)
jmp 0x2d8f
leaq -0x738(%rbp), %rdi
callq 0xc620
leaq -0x768(%rbp), %rdi
callq 0xc620
leaq -0x750(%rbp), %rdi
callq 0xc620
leaq -0x720(%rbp), %rdi
callq 0xc620
movb -0x811(%rbp), %al
testb $0x1, %al
jne 0x2dce
jmp 0x2eab
leaq 0xe335(%rip), %rsi      # 0x1110a
leaq -0x690(%rbp), %rdi
callq 0x21f0
jmp 0x2de3
jmp 0x2eab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2e1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0xc620
leaq -0x708(%rbp), %rdi
callq 0xc620
jmp 0x2ec0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2e9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2e91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2e85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x738(%rbp), %rdi
callq 0xc620
leaq -0x768(%rbp), %rdi
callq 0xc620
leaq -0x750(%rbp), %rdi
callq 0xc620
leaq -0x720(%rbp), %rdi
callq 0xc620
jmp 0x2ec0
jmp 0x2ead
leaq -0x6a8(%rbp), %rdi
callq 0x6d50
jmp 0x2ebb
jmp 0x2b81
leaq -0x6a8(%rbp), %rdi
callq 0xc620
jmp 0x2f15
leaq 0xe243(%rip), %rsi      # 0x11118
leaq -0x690(%rbp), %rdi
callq 0x21f0
jmp 0x2ee3
movq -0x7a0(%rbp), %rdi
leaq -0x690(%rbp), %rsi
callq 0x2220
jmp 0x2ef8
leaq -0x690(%rbp), %rdi
callq 0x2080
leaq -0x500(%rbp), %rdi
callq 0xc620
jmp 0x2fe9
leaq -0x690(%rbp), %rdi
callq 0x2080
leaq -0x500(%rbp), %rdi
callq 0xc620
jmp 0x2ff9
movb $0x1, -0x781(%rbp)
movl $0x18, %edi
callq 0x2100
movq %rax, -0x820(%rbp)
leaq 0xe1c9(%rip), %rsi      # 0x1111a
leaq -0x780(%rbp), %rdi
callq 0x7b00
jmp 0x2f5f
movq -0x820(%rbp), %rdi
leaq 0x152cb(%rip), %rsi     # 0x18238
leaq -0x780(%rbp), %rdx
callq 0xc680
jmp 0x2f7b
movq -0x820(%rbp), %rdi
movb $0x0, -0x781(%rbp)
leaq 0x14db0(%rip), %rsi     # 0x17d40
leaq 0x9689(%rip), %rdx      # 0xc620
callq 0x2330
jmp 0x3005
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
jmp 0x2fd0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
leaq -0x780(%rbp), %rdi
callq 0xc620
testb $0x1, -0x781(%rbp)
jne 0x2fdb
jmp 0x2fe7
movq -0x820(%rbp), %rdi
callq 0x2180
jmp 0x2ff9
movq -0x798(%rbp), %rax
addq $0x820, %rsp            # imm = 0x820
popq %rbp
retq
movq -0x190(%rbp), %rdi
callq 0x2340
nopw %cs:(%rax,%rax)