// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsstate.c
// Function: js_newstate
js_State *js_newstate(js_Alloc alloc, void *actx, int flags)
{
	js_State *J;

	assert(sizeof(js_Value) == 16);
	assert(soffsetof(js_Value, t.type) == 15);

	if (!alloc)
		alloc = js_defaultalloc;

	J = alloc(actx, NULL, sizeof *J);
	if (!J)
		return NULL;
	memset(J, 0, sizeof(*J));
	J->actx = actx;
	J->alloc = alloc;

	if (flags & JS_STRICT)
		J->strict = J->default_strict = 1;

	J->trace[0].name = "-top-";
	J->trace[0].file = "native";
	J->trace[0].line = 0;

	J->report = js_defaultreport;
	J->panic = js_defaultpanic;

	J->stack = alloc(actx, NULL, JS_STACKSIZE * sizeof *J->stack);
	if (!J->stack) {
		alloc(actx, J, 0);
		return NULL;
	}

	J->gcmark = 1;
	J->nextref = 0;
	J->gcthresh = 0; /* reaches stability within ~ 2-5 GC cycles */

	if (js_try(J)) {
		js_freestate(J);
		return NULL;
	}

	J->R = jsV_newobject(J, JS_COBJECT, NULL);
	J->G = jsV_newobject(J, JS_COBJECT, NULL);
	J->E = jsR_newenvironment(J, J->G, NULL);
	J->GE = J->E;

	jsB_init(J);

	js_endtry(J);
	return J;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x19965
leaq 0x20f(%rip), %rax       # 0x19b70
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %esi
movl $0xbda0, %edx           # imm = 0xBDA0
callq *%rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x19990
movq $0x0, -0x8(%rbp)
jmp 0x19b5a
movq -0x28(%rbp), %rdi
xorl %esi, %esi
movl $0xbda0, %edx           # imm = 0xBDA0
callq 0x3060
movq -0x18(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x199d8
movq -0x28(%rbp), %rax
movl $0x1, 0x30(%rax)
movq -0x28(%rbp), %rax
movl $0x1, 0x34(%rax)
movq -0x28(%rbp), %rax
leaq 0x2250c(%rip), %rcx     # 0x3beef
movq %rcx, 0x2198(%rax)
movq -0x28(%rbp), %rax
leaq 0x224b1(%rip), %rcx     # 0x3bea6
movq %rcx, 0x21a0(%rax)
movq -0x28(%rbp), %rax
movl $0x0, 0x21a8(%rax)
movq -0x28(%rbp), %rax
leaq 0x1ab(%rip), %rcx       # 0x19bc0
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rax
leaq 0x1dc(%rip), %rcx       # 0x19c00
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %esi
movl $0x10000, %edx          # imm = 0x10000
callq *%rax
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x148(%rax)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x148(%rax)
jne 0x19a74
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rsi
xorl %edx, %edx
callq *%rax
movq $0x0, -0x8(%rbp)
jmp 0x19b5a
movq -0x28(%rbp), %rax
movl $0x1, 0x150(%rax)
movq -0x28(%rbp), %rax
movl $0x0, 0x118(%rax)
movq -0x28(%rbp), %rax
movl $0x0, 0x158(%rax)
movq -0x28(%rbp), %rdi
callq 0x14270
movq %rax, %rdi
callq 0x30e0
cmpl $0x0, %eax
je 0x19aca
movq -0x28(%rbp), %rdi
callq 0xd780
movq $0x0, -0x8(%rbp)
jmp 0x19b5a
movq -0x28(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x6bc0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x120(%rax)
movq -0x28(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x6bc0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x128(%rax)
movq -0x28(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x128(%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x17e10
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x130(%rax)
movq -0x28(%rbp), %rax
movq 0x130(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x138(%rax)
movq -0x28(%rbp), %rdi
callq 0x6760
movq -0x28(%rbp), %rdi
callq 0x14a10
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)