LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsnumber.c
// Function: Np_toPrecision
static void Np_toPrecision(js_State *J)
{
	js_Object *self = js_toobject(J, 0);
	int width = js_tointeger(J, 1);
	char buf[32];
	double x;
	if (self->type != JS_CNUMBER) js_typeerror(J, "not a number");
	if (width < 1) js_rangeerror(J, "precision %d out of range", width);
	if (width > 21) js_rangeerror(J, "precision %d out of range", width);
	x = self->u.number;
	if (isnan(x) || isinf(x))
		js_pushstring(J, jsV_numbertostring(J, buf, x));
	else
		numtostr(J, "%.*g", width, x);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x43c0
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x7, (%rax)
je 0x10447
movq -0x8(%rbp), %rdi
leaq 0x2cc58(%rip), %rsi     # 0x3d098
movb $0x0, %al
callq 0xbfe0
cmpl $0x1, -0x14(%rbp)
jge 0x10462
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %edx
leaq 0x2cc58(%rip), %rsi     # 0x3d0b3
movb $0x0, %al
callq 0xbd10
cmpl $0x15, -0x14(%rbp)
jle 0x1047d
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %edx
leaq 0x2cc3d(%rip), %rsi     # 0x3d0b3
movb $0x0, %al
callq 0xbd10
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x48(%rbp), %xmm0
ucomisd %xmm0, %xmm0
setp %al
testb $0x1, %al
jne 0x104e4
movsd -0x48(%rbp), %xmm1
movaps %xmm1, %xmm0
movaps 0x2abc6(%rip), %xmm2    # 0x3b070
pand %xmm2, %xmm0
movq %xmm1, %rdx
movl $0x1, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq $0x0, %rdx
cmovll %eax, %ecx
movsd 0x22f3c(%rip), %xmm1    # 0x33408
xorl %eax, %eax
ucomisd %xmm1, %xmm0
setnp %sil
sete %dl
testb %sil, %dl
cmovnel %ecx, %eax
cmpl $0x0, %eax
je 0x1050c
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
movsd -0x48(%rbp), %xmm0
callq 0x13040
movq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0x13880
jmp 0x10524
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %edx
movsd -0x48(%rbp), %xmm0
leaq 0x2cbbd(%rip), %rsi     # 0x3d0dc
callq 0x25ef0
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: Op_hasOwnProperty
static void Op_hasOwnProperty(js_State *J)
{
	js_Object *self = js_toobject(J, 0);
	const char *name = js_tostring(J, 1);
	js_Property *ref;
	int k;

	if (self->type == JS_CSTRING) {
		if (js_isarrayindex(J, name, &k) && k >= 0 && k < self->u.s.length) {
			js_pushboolean(J, 1);
			return;
		}
	}

	if (self->type == JS_CARRAY && self->u.a.simple) {
		if (js_isarrayindex(J, name, &k) && k >= 0 && k < self->u.a.flat_length) {
			js_pushboolean(J, 1);
			return;
		}
	}

	ref = jsV_getownproperty(J, self, name);
	js_pushboolean(J, ref != NULL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14b80
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x8, (%rax)
jne 0x10890
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x24(%rbp), %rdx
callq 0x167c0
cmpl $0x0, %eax
je 0x1088e
cmpl $0x0, -0x24(%rbp)
jl 0x1088e
movl -0x24(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x1088e
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14e30
jmp 0x10908
jmp 0x10890
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x108dd
movq -0x10(%rbp), %rax
cmpl $0x0, 0x24(%rax)
je 0x108dd
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x24(%rbp), %rdx
callq 0x167c0
cmpl $0x0, %eax
je 0x108db
cmpl $0x0, -0x24(%rbp)
jl 0x108db
movl -0x24(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jge 0x108db
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14e30
jmp 0x10908
jmp 0x108dd
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x12440
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
cmpq $0x0, -0x20(%rbp)
setne %al
andb $0x1, %al
movzbl %al, %esi
callq 0x14e30
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: Op_isPrototypeOf
static void Op_isPrototypeOf(js_State *J)
{
	js_Object *self = js_toobject(J, 0);
	if (js_isobject(J, 1)) {
		js_Object *V = js_toobject(J, 1);
		do {
			V = V->prototype;
			if (V == self) {
				js_pushboolean(J, 1);
				return;
			}
		} while (V);
	}
	js_pushboolean(J, 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
je 0x10981
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq -0x10(%rbp), %rax
jne 0x10976
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14e30
jmp 0x1098c
jmp 0x10978
cmpq $0x0, -0x18(%rbp)
jne 0x10950
jmp 0x10981
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x14e30
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: Op_propertyIsEnumerable
static void Op_propertyIsEnumerable(js_State *J)
{
	js_Object *self = js_toobject(J, 0);
	const char *name = js_tostring(J, 1);
	js_Property *ref = jsV_getownproperty(J, self, name);
	js_pushboolean(J, ref && !(ref->atts & JS_DONTENUM));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14b80
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x12440
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x20(%rbp)
movb %al, -0x21(%rbp)
je 0x10a0b
movq -0x20(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x21(%rbp)
movq -0x30(%rbp), %rdi
movb -0x21(%rbp), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x14e30
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_getPrototypeOf
static void O_getPrototypeOf(js_State *J)
{
	js_Object *obj;
	if (!js_isobject(J, 1))
		js_typeerror(J, "not an object");
	obj = js_toobject(J, 1);
	if (obj->prototype)
		js_pushobject(J, obj->prototype);
	else
		js_pushnull(J);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x10b41
movq -0x8(%rbp), %rdi
leaq 0x2cc63(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x10b71
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x4870
jmp 0x10b7a
movq -0x8(%rbp), %rdi
callq 0x136f0
addq $0x10, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_create
static void O_create(js_State *J)
{
	js_Object *obj;
	js_Object *proto;
	js_Object *props;

	if (js_isobject(J, 1))
		proto = js_toobject(J, 1);
	else if (js_isnull(J, 1))
		proto = NULL;
	else
		js_typeerror(J, "not an object or null");

	obj = jsV_newobject(J, JS_COBJECT, proto);
	js_pushobject(J, obj);

	if (js_isdefined(J, 2)) {
		if (!js_isobject(J, 2))
			js_typeerror(J, "not an object");
		props = js_toobject(J, 2);
		if (props->properties->level)
			O_create_walk(J, obj, props->properties);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
je 0x11033
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x18(%rbp)
jmp 0x11064
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15130
cmpl $0x0, %eax
je 0x11050
movq $0x0, -0x18(%rbp)
jmp 0x11062
movq -0x8(%rbp), %rdi
leaq 0x2c1c5(%rip), %rsi     # 0x3d220
movb $0x0, %al
callq 0xbfe0
jmp 0x11064
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
xorl %esi, %esi
callq 0x6bc0
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x4870
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x150d0
cmpl $0x0, %eax
je 0x110f3
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x110bc
movq -0x8(%rbp), %rdi
leaq 0x2c6e8(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x11760
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0x110f1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
callq 0x26000
jmp 0x110f3
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_defineProperty
static void O_defineProperty(js_State *J)
{
	if (!js_isobject(J, 1)) js_typeerror(J, "not an object");
	if (!js_isobject(J, 3)) js_typeerror(J, "not an object");
	ToPropertyDescriptor(J, js_toobject(J, 1), js_tostring(J, 2), js_toobject(J, 3));
	js_copy(J, 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x11131
movq -0x8(%rbp), %rdi
leaq 0x2c673(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x3, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x11156
movq -0x8(%rbp), %rdi
leaq 0x2c64e(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x14b80
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x3, %esi
callq 0x11760
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rdx
movq %rax, %rcx
callq 0x260b0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14410
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_defineProperties
static void O_defineProperties(js_State *J)
{
	js_Object *props;

	if (!js_isobject(J, 1)) js_typeerror(J, "not an object");
	if (!js_isobject(J, 2)) js_typeerror(J, "not an object");

	props = js_toobject(J, 2);
	if (props->properties->level)
		O_defineProperties_walk(J, props->properties);

	js_copy(J, 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x111f1
movq -0x8(%rbp), %rdi
leaq 0x2c5b3(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x11216
movq -0x8(%rbp), %rdi
leaq 0x2c58e(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0x11247
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x262d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14410
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_seal
static void O_seal(js_State *J)
{
	js_Object *obj;

	if (!js_isobject(J, 1))
		js_typeerror(J, "not an object");

	obj = js_toobject(J, 1);
	jsR_unflattenarray(J, obj);
	obj->extensible = 0;

	if (obj->properties->level)
		O_seal_walk(J, obj->properties);

	js_copy(J, 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x11291
movq -0x8(%rbp), %rdi
leaq 0x2c513(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x168a0
movq -0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0x112da
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x263a0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14410
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_freeze
static void O_freeze(js_State *J)
{
	js_Object *obj;

	if (!js_isobject(J, 1))
		js_typeerror(J, "not an object");

	obj = js_toobject(J, 1);
	jsR_unflattenarray(J, obj);
	obj->extensible = 0;

	if (obj->properties->level)
		O_freeze_walk(J, obj->properties);

	js_copy(J, 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x11321
movq -0x8(%rbp), %rdi
leaq 0x2c483(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x168a0
movq -0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0x1136a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x26400
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14410
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_preventExtensions
static void O_preventExtensions(js_State *J)
{
	js_Object *obj;
	if (!js_isobject(J, 1))
		js_typeerror(J, "not an object");
	obj = js_toobject(J, 1);
	jsR_unflattenarray(J, obj);
	obj->extensible = 0;
	js_copy(J, 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x113b1
movq -0x8(%rbp), %rdi
leaq 0x2c3f3(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x168a0
movq -0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14410
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_isSealed
static void O_isSealed(js_State *J)
{
	js_Object *obj;

	if (!js_isobject(J, 1))
		js_typeerror(J, "not an object");

	obj = js_toobject(J, 1);
	if (obj->extensible) {
		js_pushboolean(J, 0);
		return;
	}

	if (obj->properties->level)
		js_pushboolean(J, O_isSealed_walk(J, obj->properties));
	else
		js_pushboolean(J, 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x11421
movq -0x8(%rbp), %rdi
leaq 0x2c383(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x1144a
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x14e30
jmp 0x1148c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0x1147e
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x26460
movq -0x18(%rbp), %rdi
movl %eax, %esi
callq 0x14e30
jmp 0x1148c
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14e30
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_isFrozen
static void O_isFrozen(js_State *J)
{
	js_Object *obj;

	if (!js_isobject(J, 1))
		js_typeerror(J, "not an object");

	obj = js_toobject(J, 1);

	if (obj->properties->level) {
		if (!O_isFrozen_walk(J, obj->properties)) {
			js_pushboolean(J, 0);
			return;
		}
	}

	js_pushboolean(J, !obj->extensible);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x114d1
movq -0x8(%rbp), %rdi
leaq 0x2c2d3(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0x11516
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x26500
cmpl $0x0, %eax
jne 0x11514
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x14e30
jmp 0x11531
jmp 0x11516
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
cmpl $0x0, 0x4(%rax)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %esi
callq 0x14e30
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsobject.c
// Function: O_keys
static void O_keys(js_State *J)
{
	js_Object *obj;
	char name[32];
	int i, k;

	if (!js_isobject(J, 1))
		js_typeerror(J, "not an object");
	obj = js_toobject(J, 1);

	js_newarray(J);

	if (obj->properties->level)
		i = O_keys_walk(J, obj->properties, 0);
	else
		i = 0;

	if (obj->type == JS_CSTRING) {
		for (k = 0; k < obj->u.s.length; ++k) {
			js_itoa(name, k);
			js_pushstring(J, name);
			js_setindex(J, -2, i++);
		}
	}

	if (obj->type == JS_CARRAY && obj->u.a.simple) {
		for (k = 0; k < obj->u.a.flat_length; ++k) {
			js_itoa(name, k);
			js_pushstring(J, name);
			js_setindex(J, -2, i++);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11730
cmpl $0x0, %eax
jne 0x115d1
movq -0x8(%rbp), %rdi
leaq 0x2c1d3(%rip), %rsi     # 0x3d79d
movb $0x0, %al
callq 0xbfe0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x11760
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x13830
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0x11612
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
xorl %edx, %edx
callq 0x265b0
movl %eax, -0x34(%rbp)
jmp 0x11619
movl $0x0, -0x34(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x8, (%rax)
jne 0x11674
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x11672
leaq -0x30(%rbp), %rdi
movl -0x38(%rbp), %esi
callq 0x12b50
movq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x13880
movq -0x8(%rbp), %rdi
movl -0x34(%rbp), %edx
movl %edx, %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x13bb0
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x11629
jmp 0x11674
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x116d9
movq -0x10(%rbp), %rax
cmpl $0x0, 0x24(%rax)
je 0x116d9
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jge 0x116d7
leaq -0x30(%rbp), %rdi
movl -0x38(%rbp), %esi
callq 0x12b50
movq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x13880
movq -0x8(%rbp), %rdi
movl -0x34(%rbp), %edx
movl %edx, %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x13bb0
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x1168e
jmp 0x116d9
addq $0x40, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./json.c
// Function: JSON_parse
static void JSON_parse(js_State *J)
{
	const char *source = js_tostring(J, 1);
	jsY_initlex(J, "JSON", source);
	jsonnext(J);

	if (js_iscallable(J, 2)) {
		js_newobject(J);
		jsonvalue(J);
		js_defproperty(J, -2, "", 0);
		jsonrevive(J, "");
	} else {
		jsonvalue(J);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x14b80
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rdx
leaq 0x29eef(%rip), %rsi     # 0x3b7ac
callq 0xe040
movq -0x8(%rbp), %rdi
callq 0x26650
movq -0x8(%rbp), %rdi
movl $0x2, %esi
callq 0x15290
cmpl $0x0, %eax
je 0x11919
movq -0x8(%rbp), %rdi
callq 0x1b7a0
movq -0x8(%rbp), %rdi
callq 0x26680
movq -0x8(%rbp), %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
leaq 0x2b13c(%rip), %rdx     # 0x3ca3c
xorl %ecx, %ecx
callq 0x65c0
movq -0x8(%rbp), %rdi
leaq 0x2b12a(%rip), %rsi     # 0x3ca3c
callq 0x268f0
jmp 0x11922
movq -0x8(%rbp), %rdi
callq 0x26680
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsparse.c
// Function: jsP_freeparse
void jsP_freeparse(js_State *J)
{
	js_Ast *node = J->gcast;
	while (node) {
		js_Ast *next = node->gcnext;
		jsP_freejumps(J, node->jumps);
		js_free(J, node);
		node = next;
	}
	J->gcast = NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x11b96
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
callq 0x11bb0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xd710
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x11b5b
movq -0x8(%rbp), %rax
movq $0x0, 0x88(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsparse.c
// Function: jsP_freejumps
static void jsP_freejumps(js_State *J, js_JumpList *node)
{
	while (node) {
		js_JumpList *next = node->next;
		js_free(J, node);
		node = next;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x11bea
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xd710
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x11bc0
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsparse.c
// Function: jsP_parse
js_Ast *jsP_parse(js_State *J, const char *filename, const char *source)
{
	js_Ast *p;

	jsY_initlex(J, filename, source);
	jsP_next(J);
	J->astdepth = 0;
	p = script(J, 0);
	if (p)
		jsP_foldconst(p);

	return p;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0xe040
movq -0x8(%rbp), %rdi
callq 0x11c60
movq -0x8(%rbp), %rax
movl $0x0, 0x70(%rax)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x11c90
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x11c48
movq -0x20(%rbp), %rdi
callq 0x11d60
movq -0x20(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsparse.c
// Function: script
static js_Ast *script(js_State *J, int terminator)
{
	js_Ast *head, *tail;
	if (J->lookahead == terminator)
		return NULL;
	head = tail = LIST(scriptelement(J));
	while (J->lookahead != terminator)
		tail = tail->b = LIST(scriptelement(J));
	return jsP_list(head);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movl 0x74(%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0x11cb8
movq $0x0, -0x8(%rbp)
jmp 0x11d49
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x277d0
movq -0x30(%rbp), %rdi
movq %rax, %rcx
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl %edx, %esi
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x12310
movq %rax, -0x28(%rbp)
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movl 0x74(%rax), %eax
cmpl -0x14(%rbp), %eax
je 0x11d3c
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x277d0
movq -0x38(%rbp), %rdi
movq %rax, %rcx
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl %edx, %esi
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x12310
movq -0x28(%rbp), %rcx
movq %rax, 0x18(%rcx)
movq %rax, -0x28(%rbp)
jmp 0x11cf1
movq -0x20(%rbp), %rdi
callq 0x27840
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsparse.c
// Function: jsP_parsefunction
js_Ast *jsP_parsefunction(js_State *J, const char *filename, const char *params, const char *body)
{
	js_Ast *p = NULL;
	int line = 0;
	if (params) {
		jsY_initlex(J, filename, params);
		jsP_next(J);
		J->astdepth = 0;
		p = parameters(J);
	}
	return EXP3(FUN, NULL, p, jsP_parse(J, filename, body));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x121d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0xe040
movq -0x8(%rbp), %rdi
callq 0x11c60
movq -0x8(%rbp), %rax
movl $0x0, 0x70(%rax)
movq -0x8(%rbp), %rdi
callq 0x12230
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x3c(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x11bf0
movq -0x48(%rbp), %rdi
movl -0x3c(%rbp), %edx
movq -0x38(%rbp), %r8
movq %rax, %r9
movl $0x11, %esi
xorl %eax, %eax
movl %eax, %ecx
movq $0x0, (%rsp)
callq 0x12310
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsparse.c
// Function: parameters
static js_Ast *parameters(js_State *J)
{
	js_Ast *head, *tail;
	if (J->lookahead == ')')
		return NULL;
	head = tail = LIST(identifier(J));
	while (jsP_accept(J, ',')) {
		tail = tail->b = LIST(identifier(J));
	}
	return jsP_list(head);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x29, 0x74(%rax)
jne 0x12253
movq $0x0, -0x8(%rbp)
jmp 0x12304
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x28850
movq -0x28(%rbp), %rdi
movq %rax, %rcx
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl %edx, %esi
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x12310
movq %rax, -0x20(%rbp)
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x2c, 0x74(%rax)
jne 0x122a9
movq -0x10(%rbp), %rdi
callq 0x11c60
movl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x122b0
xorl %eax, %eax
movl %eax, -0x2c(%rbp)
jmp 0x122b0
movl -0x2c(%rbp), %eax
cmpl $0x0, %eax
je 0x122f7
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x28850
movq -0x38(%rbp), %rdi
movq %rax, %rcx
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %r9d
movl %edx, %esi
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x12310
movq -0x20(%rbp), %rcx
movq %rax, 0x18(%rcx)
movq %rax, -0x20(%rbp)
jmp 0x1228c
movq -0x18(%rbp), %rdi
callq 0x27840
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsparse.c
// Function: jsP_newnode
static js_Ast *jsP_newnode(js_State *J, enum js_AstType type, int line, js_Ast *a, js_Ast *b, js_Ast *c, js_Ast *d)
{
	js_Ast *node = js_malloc(J, sizeof *node);

	node->type = type;
	node->line = line;
	node->a = a;
	node->b = b;
	node->c = c;
	node->d = d;
	node->number = 0;
	node->string = NULL;
	node->jumps = NULL;
	node->casejump = 0;

	node->parent = NULL;
	if (a) a->parent = node;
	if (b) b->parent = node;
	if (c) c->parent = node;
	if (d) d->parent = node;

	node->gcnext = J->gcast;
	J->gcast = node;

	return node;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movq %r9, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movl $0x58, %esi
callq 0xd9d0
movq %rax, -0x30(%rbp)
movl -0xc(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movl -0x10(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x18(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x20(%rax)
movq 0x10(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x30(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x38(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x40(%rax)
movq -0x30(%rbp), %rax
movl $0x0, 0x48(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x8(%rax)
cmpq $0x0, -0x18(%rbp)
je 0x123d5
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
cmpq $0x0, -0x20(%rbp)
je 0x123e8
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
cmpq $0x0, -0x28(%rbp)
je 0x123fb
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
cmpq $0x0, 0x10(%rbp)
je 0x1240e
movq -0x30(%rbp), %rcx
movq 0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x88(%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x30(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x30(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: lookup
static js_Property *lookup(js_Property *node, const char *name)
{
	while (node != &sentinel) {
		int c = strcmp(name, node->name);
		if (c == 0)
			return node;
		else if (c < 0)
			node = node->left;
		else
			node = node->right;
	}
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x35959(%rip), %rax     # 0x47de0
cmpq %rax, -0x10(%rbp)
je 0x124d4
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x38, %rsi
callq 0x32d0
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
jne 0x124b1
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x124dc
cmpl $0x0, -0x1c(%rbp)
jge 0x124c4
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x124d0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x124d2
jmp 0x12480
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: jsV_getpropertyx
js_Property *jsV_getpropertyx(js_State *J, js_Object *obj, const char *name, int *own)
{
	*own = 1;
	do {
		js_Property *ref = lookup(obj->properties, name);
		if (ref)
			return ref;
		obj = obj->prototype;
		*own = 0;
	} while (obj);
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x28(%rbp), %rax
movl $0x1, (%rax)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x12470
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x12538
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1255d
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x28(%rbp), %rax
movl $0x0, (%rax)
cmpq $0x0, -0x18(%rbp)
jne 0x12512
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: jsV_getproperty
js_Property *jsV_getproperty(js_State *J, js_Object *obj, const char *name)
{
	do {
		js_Property *ref = lookup(obj->properties, name);
		if (ref)
			return ref;
		obj = obj->prototype;
	} while (obj);
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x12470
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x125aa
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x125c5
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x12584
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: jsV_setproperty
js_Property *jsV_setproperty(js_State *J, js_Object *obj, const char *name)
{
	js_Property *result;

	if (!obj->extensible) {
		result = lookup(obj->properties, name);
		if (J->strict && !result)
			js_typeerror(J, "object is non-extensible");
		return result;
	}

	obj->properties = insert(J, obj, obj->properties, name, &result);

	return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x12630
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x12470
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x34(%rax)
je 0x12626
cmpq $0x0, -0x28(%rbp)
jne 0x12626
movq -0x10(%rbp), %rdi
leaq 0x296ea(%rip), %rsi     # 0x3bd09
movb $0x0, %al
callq 0xbfe0
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x12660
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x20(%rbp), %rcx
leaq -0x28(%rbp), %r8
callq 0x12670
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: insert
static js_Property *insert(js_State *J, js_Object *obj, js_Property *node, const char *name, js_Property **result)
{
	if (node != &sentinel) {
		int c = strcmp(name, node->name);
		if (c < 0)
			node->left = insert(J, obj, node->left, name, result);
		else if (c > 0)
			node->right = insert(J, obj, node->right, name, result);
		else
			return *result = node;
		node = skew(node);
		node = split(node);
		return node;
	}
	return *result = newproperty(J, obj, name);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
leaq 0x3574d(%rip), %rax     # 0x47de0
cmpq %rax, -0x20(%rbp)
je 0x12746
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x38, %rsi
callq 0x32d0
movl %eax, -0x34(%rbp)
cmpl $0x0, -0x34(%rbp)
jge 0x126df
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq (%rax), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
callq 0x12670
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
jmp 0x12722
cmpl $0x0, -0x34(%rbp)
jle 0x1270f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
callq 0x12670
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x12720
movq -0x20(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rax, (%rcx)
movq %rax, -0x8(%rbp)
jmp 0x12762
jmp 0x12722
movq -0x20(%rbp), %rdi
callq 0x2cc50
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2cca0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x12762
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x2cd10
movq -0x30(%rbp), %rcx
movq %rax, (%rcx)
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: deleteproperty
static js_Property *deleteproperty(js_State *J, js_Object *obj, js_Property *tree, const char *name)
{
	js_Property *garbage = &sentinel;
	tree = unlinkproperty(tree, name, &garbage);
	if (garbage != &sentinel)
		freeproperty(J, obj, garbage);
	return tree;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq 0x35611(%rip), %rax     # 0x47de0
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x2cdf0
movq %rax, -0x18(%rbp)
leaq 0x355f1(%rip), %rax     # 0x47de0
cmpq %rax, -0x28(%rbp)
je 0x12806
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x2d0a0
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: jsV_newiterator
js_Object *jsV_newiterator(js_State *J, js_Object *obj, int own)
{
	js_Object *io = jsV_newobject(J, JS_CITERATOR, NULL);
	io->u.iter.target = obj;
	io->u.iter.i = 0;
	io->u.iter.n = 0;
	if (own) {
		io->u.iter.head = NULL;
		if (obj->properties != &sentinel)
			io->u.iter.head = itwalk(J, io->u.iter.head, obj->properties, NULL);
	} else {
		io->u.iter.head = itflatten(J, obj);
	}
	io->u.iter.current = io->u.iter.head;

	if (obj->type == JS_CSTRING)
		io->u.iter.n = obj->u.s.length;

	if (obj->type == JS_CARRAY && obj->u.a.simple)
		io->u.iter.n = obj->u.a.flat_length;

	return io;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rdi
movl $0xe, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x6bc0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x28(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x2c(%rax)
cmpl $0x0, -0x14(%rbp)
je 0x128a8
movq -0x20(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x10(%rbp), %rax
leaq 0x35568(%rip), %rcx     # 0x47de0
cmpq %rcx, 0x8(%rax)
je 0x128a6
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rsi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x12920
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
jmp 0x128c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x129f0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
cmpl $0x8, (%rax)
jne 0x128e7
movq -0x10(%rbp), %rax
movl 0x20(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x2c(%rax)
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x12908
movq -0x10(%rbp), %rax
cmpl $0x0, 0x24(%rax)
je 0x12908
movq -0x10(%rbp), %rax
movl 0x28(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x2c(%rax)
movq -0x20(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: itwalk
static js_Iterator *itwalk(js_State *J, js_Iterator *iter, js_Property *prop, js_Object *seen)
{
	if (prop->right != &sentinel)
		iter = itwalk(J, iter, prop->right, seen);
	if (!(prop->atts & JS_DONTENUM)) {
		if (!seen || !jsV_getenumproperty(J, seen, prop->name)) {
			iter = itnewnode(J, prop->name, iter);
		}
	}
	if (prop->left != &sentinel)
		iter = itwalk(J, iter, prop->left, seen);
	return iter;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x18(%rbp), %rax
leaq 0x3549d(%rip), %rcx     # 0x47de0
cmpq %rcx, 0x8(%rax)
je 0x12966
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x20(%rbp), %rcx
callq 0x12920
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
movl 0x14(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x129b2
cmpq $0x0, -0x20(%rbp)
je 0x12997
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rdx
addq $0x38, %rdx
callq 0x2d0e0
cmpq $0x0, %rax
jne 0x129b0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x38, %rsi
movq -0x10(%rbp), %rdx
callq 0x2d150
movq %rax, -0x10(%rbp)
jmp 0x129b2
movq -0x18(%rbp), %rax
leaq 0x35423(%rip), %rcx     # 0x47de0
cmpq %rcx, (%rax)
je 0x129de
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rax
movq (%rax), %rdx
movq -0x20(%rbp), %rcx
callq 0x12920
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: itflatten
static js_Iterator *itflatten(js_State *J, js_Object *obj)
{
	js_Iterator *iter = NULL;
	if (obj->prototype)
		iter = itflatten(J, obj->prototype);
	if (obj->properties != &sentinel)
		iter = itwalk(J, iter, obj->properties, obj->prototype);
	return iter;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x12a28
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x129f0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
leaq 0x353ad(%rip), %rcx     # 0x47de0
cmpq %rcx, 0x8(%rax)
je 0x12a5a
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
callq 0x12920
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: jsV_nextiterator
const char *jsV_nextiterator(js_State *J, js_Object *io)
{
	if (io->type != JS_CITERATOR)
		js_typeerror(J, "not an iterator");
	if (io->u.iter.i < io->u.iter.n) {
		js_itoa(J->scratch, io->u.iter.i);
		io->u.iter.i++;
		return J->scratch;
	}
	while (io->u.iter.current) {
		const char *name = io->u.iter.current->name;
		io->u.iter.current = io->u.iter.current->next;
		if (jsV_getproperty(J, io->u.iter.target, name))
			return name;
	}
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0xe, (%rax)
je 0x12a9b
movq -0x10(%rbp), %rdi
leaq 0x2928e(%rip), %rsi     # 0x3bd22
movb $0x0, %al
callq 0xbfe0
movq -0x18(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0x2c(%rcx), %eax
jge 0x12adf
movq -0x10(%rbp), %rdi
addq $0x10c, %rdi            # imm = 0x10C
movq -0x18(%rbp), %rax
movl 0x28(%rax), %esi
callq 0x12b50
movq -0x18(%rbp), %rax
movl 0x28(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x28(%rax)
movq -0x10(%rbp), %rax
addq $0x10c, %rax            # imm = 0x10C
movq %rax, -0x8(%rbp)
jmp 0x12b3e
jmp 0x12ae1
movq -0x18(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x12b36
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
addq $0x8, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rsi
movq -0x20(%rbp), %rdx
callq 0x12570
cmpq $0x0, %rax
je 0x12b34
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x12b3e
jmp 0x12ae1
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsvalue.c
// Function: js_itoa
const char *js_itoa(char *out, int v)
{
	char buf[32], *s = out;
	unsigned int a;
	int i = 0;
	if (v < 0) {
		a = -v;
		*s++ = '-';
	} else {
		a = v;
	}
	while (a) {
		buf[i++] = (a % 10) + '0';
		a /= 10;
	}
	if (i == 0)
		buf[i++] = '0';
	while (i > 0)
		*s++ = buf[--i];
	*s = 0;
	return out;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movl $0x0, -0x40(%rbp)
cmpl $0x0, -0xc(%rbp)
jge 0x12b8c
xorl %eax, %eax
subl -0xc(%rbp), %eax
movl %eax, -0x3c(%rbp)
movq -0x38(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x38(%rbp)
movb $0x2d, (%rax)
jmp 0x12b92
movl -0xc(%rbp), %eax
movl %eax, -0x3c(%rbp)
jmp 0x12b94
cmpl $0x0, -0x3c(%rbp)
je 0x12bcd
movl -0x3c(%rbp), %eax
movl $0xa, %ecx
xorl %edx, %edx
divl %ecx
addl $0x30, %edx
movb %dl, %cl
movl -0x40(%rbp), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, -0x40(%rbp)
cltq
movb %cl, -0x30(%rbp,%rax)
movl -0x3c(%rbp), %eax
movl $0xa, %ecx
xorl %edx, %edx
divl %ecx
movl %eax, -0x3c(%rbp)
jmp 0x12b94
cmpl $0x0, -0x40(%rbp)
jne 0x12be5
movl -0x40(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0x40(%rbp)
cltq
movb $0x30, -0x30(%rbp,%rax)
jmp 0x12be7
cmpl $0x0, -0x40(%rbp)
jle 0x12c0f
movl -0x40(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x40(%rbp)
cltq
movb -0x30(%rbp,%rax), %cl
movq -0x38(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x38(%rbp)
movb %cl, (%rax)
jmp 0x12be7
movq -0x38(%rbp), %rax
movb $0x0, (%rax)
movq -0x8(%rbp), %rax
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsproperty.c
// Function: jsV_resizearray
void jsV_resizearray(js_State *J, js_Object *obj, int newlen)
{
	char buf[32];
	const char *s;
	int k;
	assert(!obj->u.a.simple);
	if (newlen < obj->u.a.length) {
		if (obj->u.a.length > obj->count * 2) {
			js_Object *it = jsV_newiterator(J, obj, 1);
			while ((s = jsV_nextiterator(J, it))) {
				k = jsV_numbertointeger(jsV_stringtonumber(J, s));
				if (k >= newlen && !strcmp(s, jsV_numbertostring(J, buf, k)))
					jsV_delproperty(J, obj, s);
			}
		} else {
			for (k = newlen; k < obj->u.a.length; ++k) {
				jsV_delproperty(J, obj, js_itoa(buf, k));
			}
		}
	}
	obj->u.a.length = newlen;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jne 0x12c3f
jmp 0x12c5e
leaq 0x290ec(%rip), %rdi     # 0x3bd32
leaq 0x290f6(%rip), %rsi     # 0x3bd43
movl $0x145, %edx            # imm = 0x145
leaq 0x290f9(%rip), %rcx     # 0x3bd52
callq 0x3110
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x12d5d
movq -0x10(%rbp), %rax
movl 0x20(%rax), %eax
movq -0x10(%rbp), %rcx
movl 0x10(%rcx), %ecx
shll %ecx
cmpl %ecx, %eax
jle 0x12d10
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl $0x1, %edx
callq 0x12810
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x12a70
movq %rax, -0x48(%rbp)
cmpq $0x0, %rax
je 0x12d0e
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x12e60
callq 0x12d70
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jl 0x12d0c
movq -0x48(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
cvtsi2sdl -0x4c(%rbp), %xmm0
callq 0x13040
movq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0x32d0
cmpl $0x0, %eax
jne 0x12d0c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x48(%rbp), %rdx
callq 0x12770
jmp 0x12c9c
jmp 0x12d5b
movl -0x14(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x12d59
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x40(%rbp), %rdi
movl -0x4c(%rbp), %esi
callq 0x12b50
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq %rax, %rdx
callq 0x12770
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x12d16
jmp 0x12d5b
jmp 0x12d5d
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x20(%rax)
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsvalue.c
// Function: jsV_numbertointeger
int jsV_numbertointeger(double n)
{
	if (n == 0) return 0;
	if (isnan(n)) return 0;
	n = (n < 0) ? -floor(-n) : floor(n);
	if (n < INT_MIN) return INT_MIN;
	if (n > INT_MAX) return INT_MAX;
	return (int)n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movsd %xmm0, -0x10(%rbp)
movsd -0x10(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x12d99
jp 0x12d99
movl $0x0, -0x4(%rbp)
jmp 0x12e55
movsd -0x10(%rbp), %xmm0
ucomisd %xmm0, %xmm0
setp %al
testb $0x1, %al
jne 0x12dab
jmp 0x12db7
movl $0x0, -0x4(%rbp)
jmp 0x12e55
xorps %xmm0, %xmm0
ucomisd -0x10(%rbp), %xmm0
jbe 0x12e00
movsd -0x10(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
callq 0x3340
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x12e0f
movsd -0x10(%rbp), %xmm0
callq 0x3340
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x10(%rbp)
movsd 0x206af(%rip), %xmm0    # 0x334d0
ucomisd -0x10(%rbp), %xmm0
jbe 0x12e31
movl $0x80000000, -0x4(%rbp) # imm = 0x80000000
jmp 0x12e55
movsd -0x10(%rbp), %xmm0
movsd 0x2066a(%rip), %xmm1    # 0x334a8
ucomisd %xmm1, %xmm0
jbe 0x12e4d
movl $0x7fffffff, -0x4(%rbp) # imm = 0x7FFFFFFF
jmp 0x12e55
cvttsd2si -0x10(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop