// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsrun.c
// Function: jsR_hasproperty
static int jsR_hasproperty(js_State *J, js_Object *obj, const char *name)
{
	js_Property *ref;
	int k;

	if (obj->type == JS_CARRAY) {
		if (!strcmp(name, "length")) {
			js_pushnumber(J, obj->u.a.length);
			return 1;
		}
		if (obj->u.a.simple) {
			if (js_isarrayindex(J, name, &k)) {
				if (k >= 0 && k < obj->u.a.flat_length) {
					js_pushvalue(J, obj->u.a.array[k]);
					return 1;
				}
				return 0;
			}
		}
	}

	else if (obj->type == JS_CSTRING) {
		if (!strcmp(name, "length")) {
			js_pushnumber(J, obj->u.s.length);
			return 1;
		}
		if (js_isarrayindex(J, name, &k)) {
			if (k >= 0 && k < obj->u.s.length) {
				js_pushrune(J, js_runeat(J, obj->u.s.string, k));
				return 1;
			}
		}
	}

	else if (obj->type == JS_CREGEXP) {
		if (!strcmp(name, "source")) {
			js_pushstring(J, obj->u.r.source);
			return 1;
		}
		if (!strcmp(name, "global")) {
			js_pushboolean(J, obj->u.r.flags & JS_REGEXP_G);
			return 1;
		}
		if (!strcmp(name, "ignoreCase")) {
			js_pushboolean(J, obj->u.r.flags & JS_REGEXP_I);
			return 1;
		}
		if (!strcmp(name, "multiline")) {
			js_pushboolean(J, obj->u.r.flags & JS_REGEXP_M);
			return 1;
		}
		if (!strcmp(name, "lastIndex")) {
			js_pushnumber(J, obj->u.r.last);
			return 1;
		}
	}

	else if (obj->type == JS_CUSERDATA) {
		if (obj->u.user.has && obj->u.user.has(J, obj->u.user.data, name))
			return 1;
	}

	ref = jsV_getproperty(J, obj, name);
	if (ref) {
		if (ref->getter) {
			js_pushobject(J, ref->getter);
			js_pushobject(J, obj);
			js_call(J, 0);
		} else {
			js_pushvalue(J, ref->value);
		}
		return 1;
	}

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x17818
movq -0x20(%rbp), %rdi
leaq 0x24680(%rip), %rsi     # 0x3bdfc
callq 0x32d0
cmpl $0x0, %eax
jne 0x177a4
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
cvtsi2sdl 0x20(%rax), %xmm0
callq 0x44d0
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
movq -0x18(%rbp), %rax
cmpl $0x0, 0x24(%rax)
je 0x17813
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
leaq -0x2c(%rbp), %rdx
callq 0x167c0
cmpl $0x0, %eax
je 0x17811
cmpl $0x0, -0x2c(%rbp)
jl 0x17805
movl -0x2c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jge 0x17805
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movslq -0x2c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
callq 0x14d40
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
movl $0x0, -0x4(%rbp)
jmp 0x17a8b
jmp 0x17813
jmp 0x17a14
movq -0x18(%rbp), %rax
cmpl $0x8, (%rax)
jne 0x178ba
movq -0x20(%rbp), %rdi
leaq 0x245cc(%rip), %rsi     # 0x3bdfc
callq 0x32d0
cmpl $0x0, %eax
jne 0x17858
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
cvtsi2sdl 0x20(%rax), %xmm0
callq 0x44d0
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
leaq -0x2c(%rbp), %rdx
callq 0x167c0
cmpl $0x0, %eax
je 0x178b5
cmpl $0x0, -0x2c(%rbp)
jl 0x178b3
movl -0x2c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x178b3
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
movl -0x2c(%rbp), %edx
callq 0x19c30
movq -0x38(%rbp), %rdi
movl %eax, %esi
callq 0x2dcc0
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
jmp 0x178b5
jmp 0x17a12
movq -0x18(%rbp), %rax
cmpl $0x9, (%rax)
jne 0x179d0
movq -0x20(%rbp), %rdi
leaq 0x25921(%rip), %rsi     # 0x3d1f3
callq 0x32d0
cmpl $0x0, %eax
jne 0x178f9
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x13880
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
movq -0x20(%rbp), %rdi
leaq 0x258f6(%rip), %rsi     # 0x3d1fa
callq 0x32d0
cmpl $0x0, %eax
jne 0x1792e
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movzwl 0x30(%rax), %esi
andl $0x1, %esi
callq 0x14e30
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
movq -0x20(%rbp), %rdi
leaq 0x258c8(%rip), %rsi     # 0x3d201
callq 0x32d0
cmpl $0x0, %eax
jne 0x17963
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movzwl 0x30(%rax), %esi
andl $0x2, %esi
callq 0x14e30
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
movq -0x20(%rbp), %rdi
leaq 0x2589e(%rip), %rsi     # 0x3d20c
callq 0x32d0
cmpl $0x0, %eax
jne 0x17998
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movzwl 0x30(%rax), %esi
andl $0x4, %esi
callq 0x14e30
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
movq -0x20(%rbp), %rdi
leaq 0x25873(%rip), %rsi     # 0x3d216
callq 0x32d0
cmpl $0x0, %eax
jne 0x179ce
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movzwl 0x32(%rax), %eax
cvtsi2sd %eax, %xmm0
callq 0x44d0
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
jmp 0x17a10
movq -0x18(%rbp), %rax
cmpl $0xf, (%rax)
jne 0x17a0e
movq -0x18(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x17a0c
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq 0x28(%rcx), %rsi
movq -0x20(%rbp), %rdx
callq *%rax
cmpl $0x0, %eax
je 0x17a0c
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
jmp 0x17a0e
jmp 0x17a10
jmp 0x17a12
jmp 0x17a14
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x12570
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x17a84
movq -0x28(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x17a66
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x4870
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4870
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x17ea0
jmp 0x17a7b
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rsi
movq 0x20(%rax), %rdx
callq 0x14d40
movl $0x1, -0x4(%rbp)
jmp 0x17a8b
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)