// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsvalue.c
// Function: js_strictequal
int js_strictequal(js_State *J)
{
	js_Value *x = js_tovalue(J, -2);
	js_Value *y = js_tovalue(J, -1);

	if (JSV_ISSTRING(x) && JSV_ISSTRING(y))
		return !strcmp(JSV_TOSTRING(x), JSV_TOSTRING(y));

	if (x->t.type != y->t.type) return 0;
	if (x->t.type == JS_TUNDEFINED) return 1;
	if (x->t.type == JS_TNULL) return 1;
	if (x->t.type == JS_TNUMBER) return x->u.number == y->u.number;
	if (x->t.type == JS_TBOOLEAN) return x->u.boolean == y->u.boolean;
	if (x->t.type == JS_TOBJECT) return x->u.object == y->u.object;
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x15020
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15020
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x0, %eax
je 0x1c59b
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x6, %eax
je 0x1c59b
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x5, %eax
jne 0x1c6c8
movq -0x20(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x0, %eax
je 0x1c5c6
movq -0x20(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x6, %eax
je 0x1c5c6
movq -0x20(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x5, %eax
jne 0x1c6c8
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x0, %eax
jne 0x1c5dd
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x1c632
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x5, %eax
jne 0x1c5f7
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x1c62a
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x6, %eax
jne 0x1c615
movq -0x18(%rbp), %rax
movq (%rax), %rax
addq $0x9, %rax
movq %rax, -0x38(%rbp)
jmp 0x1c622
leaq 0x20420(%rip), %rax     # 0x3ca3c
movq %rax, -0x38(%rbp)
jmp 0x1c622
movq -0x38(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x0, %eax
jne 0x1c651
movq -0x20(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x1c6a6
movq -0x20(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x5, %eax
jne 0x1c66b
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0x1c69e
movq -0x20(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x6, %eax
jne 0x1c689
movq -0x20(%rbp), %rax
movq (%rax), %rax
addq $0x9, %rax
movq %rax, -0x58(%rbp)
jmp 0x1c696
leaq 0x203ac(%rip), %rax     # 0x3ca3c
movq %rax, -0x58(%rbp)
jmp 0x1c696
movq -0x58(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x32d0
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x1c79e
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
movq -0x20(%rbp), %rcx
movsbl 0xf(%rcx), %ecx
cmpl %ecx, %eax
je 0x1c6e8
movl $0x0, -0x4(%rbp)
jmp 0x1c79e
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x1, %eax
jne 0x1c701
movl $0x1, -0x4(%rbp)
jmp 0x1c79e
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x2, %eax
jne 0x1c71a
movl $0x1, -0x4(%rbp)
jmp 0x1c79e
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x4, %eax
jne 0x1c749
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq -0x20(%rbp), %rax
ucomisd (%rax), %xmm0
sete %al
setnp %cl
andb %cl, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x1c79e
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x3, %eax
jne 0x1c76f
movq -0x18(%rbp), %rax
movl (%rax), %eax
movq -0x20(%rbp), %rcx
cmpl (%rcx), %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x1c79e
movq -0x18(%rbp), %rax
movsbl 0xf(%rax), %eax
cmpl $0x7, %eax
jne 0x1c797
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x20(%rbp), %rcx
cmpq (%rcx), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x1c79e
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)