// File: /workspace/github_c_makefile_star2_O3/ArtifexSoftware[P]mujs/./jsobject.c
// Function: Op_toString
static void Op_toString(js_State *J)
{
	if (js_isundefined(J, 0))
		js_pushliteral(J, "[object Undefined]");
	else if (js_isnull(J, 0))
		js_pushliteral(J, "[object Null]");
	else {
		js_Object *self = js_toobject(J, 0);
		switch (self->type) {
		case JS_COBJECT: js_pushliteral(J, "[object Object]"); break;
		case JS_CARRAY: js_pushliteral(J, "[object Array]"); break;
		case JS_CFUNCTION: js_pushliteral(J, "[object Function]"); break;
		case JS_CSCRIPT: js_pushliteral(J, "[object Function]"); break;
		case JS_CCFUNCTION: js_pushliteral(J, "[object Function]"); break;
		case JS_CERROR: js_pushliteral(J, "[object Error]"); break;
		case JS_CBOOLEAN: js_pushliteral(J, "[object Boolean]"); break;
		case JS_CNUMBER: js_pushliteral(J, "[object Number]"); break;
		case JS_CSTRING: js_pushliteral(J, "[object String]"); break;
		case JS_CREGEXP: js_pushliteral(J, "[object RegExp]"); break;
		case JS_CDATE: js_pushliteral(J, "[object Date]"); break;
		case JS_CMATH: js_pushliteral(J, "[object Math]"); break;
		case JS_CJSON: js_pushliteral(J, "[object JSON]"); break;
		case JS_CARGUMENTS: js_pushliteral(J, "[object Arguments]"); break;
		case JS_CITERATOR: js_pushliteral(J, "[object Iterator]"); break;
		case JS_CUSERDATA:
			js_pushliteral(J, "[object ");
			js_pushliteral(J, self->u.user.tag);
			js_concat(J);
			js_pushliteral(J, "]");
			js_concat(J);
			break;
		}
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movslq 0x144(%rdi), %rax
testq %rax, %rax
js 0x105ad
cmpl 0x140(%rbx), %eax
jge 0x105c8
movq 0x148(%rbx), %rdx
movq %rax, %rcx
shlq $0x4, %rcx
cmpb $0x1, 0xf(%rdx,%rcx)
je 0x105d1
addq 0x148(%rbx), %rcx
jmp 0x105e1
cmpb $0x1, 0x2fe53(%rip)     # 0x40407
je 0x105d1
cmpb $0x2, 0x2fe4a(%rip)     # 0x40407
je 0x105e7
leaq 0x2fe32(%rip), %rsi     # 0x403f8
jmp 0x1061e
cmpb $0x1, 0x2fe38(%rip)     # 0x40407
jne 0x105da
leaq 0x24483(%rip), %rsi     # 0x34a5b
jmp 0x105ee
leaq 0x2fe17(%rip), %rcx     # 0x403f8
cmpb $0x2, 0xf(%rcx)
jne 0x105fd
leaq 0x24480(%rip), %rsi     # 0x34a6e
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x670c
leaq 0x2fdf4(%rip), %rsi     # 0x403f8
testl %eax, %eax
js 0x1061e
cmpl 0x140(%rbx), %eax
jge 0x1061e
shlq $0x4, %rax
addq 0x148(%rbx), %rax
movq %rax, %rsi
movq %rbx, %rdi
callq 0x14fb2
movq %rax, %r14
movl (%rax), %eax
cmpq $0xf, %rax
ja 0x10716
leaq 0x1b07c(%rip), %rcx     # 0x2b6b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x2444f(%rip), %rsi     # 0x34a9b
jmp 0x105ee
leaq 0x244e5(%rip), %rsi     # 0x34b3a
jmp 0x105ee
leaq 0x244ad(%rip), %rsi     # 0x34b0b
jmp 0x105ee
leaq 0x244b2(%rip), %rsi     # 0x34b19
jmp 0x105ee
leaq 0x2447d(%rip), %rsi     # 0x34aed
jmp 0x105ee
leaq 0x244d0(%rip), %rsi     # 0x34b4c
movq %rbx, %rdi
callq 0x670c
movq 0x20(%r14), %rsi
movq %rbx, %rdi
callq 0x670c
movq %rbx, %rdi
callq 0x1a75d
leaq 0x24b2c(%rip), %rsi     # 0x351cb
movq %rbx, %rdi
callq 0x670c
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x1a75d
leaq 0x243bf(%rip), %rsi     # 0x34a7c
jmp 0x105ee
leaq 0x243c3(%rip), %rsi     # 0x34a8c
jmp 0x105ee
leaq 0x243f8(%rip), %rsi     # 0x34acd
jmp 0x105ee
leaq 0x243cc(%rip), %rsi     # 0x34aad
jmp 0x105ee
leaq 0x2443a(%rip), %rsi     # 0x34b27
jmp 0x105ee
leaq 0x243c3(%rip), %rsi     # 0x34abc
jmp 0x105ee
leaq 0x243f8(%rip), %rsi     # 0x34afd
jmp 0x105ee
leaq 0x243cc(%rip), %rsi     # 0x34add
jmp 0x105ee
addq $0x8, %rsp
popq %rbx
popq %r14
retq