// File: /workspace/github_c_makefile_star2_O2/ArtifexSoftware[P]mujs/./json.c
// Function: jsonvalue
static void jsonvalue(js_State *J)
{
	int i;
	const char *name;

	switch (J->lookahead) {
	case TK_STRING:
		js_pushstring(J, J->text);
		jsonnext(J);
		break;

	case TK_NUMBER:
		js_pushnumber(J, J->number);
		jsonnext(J);
		break;

	case '{':
		js_newobject(J);
		jsonnext(J);
		if (jsonaccept(J, '}'))
			return;
		do {
			if (J->lookahead != TK_STRING)
				js_syntaxerror(J, "JSON: unexpected token: %s (expected string)", jsY_tokenstring(J->lookahead));
			name = J->text;
			jsonnext(J);
			jsonexpect(J, ':');
			jsonvalue(J);
			js_setproperty(J, -2, name);
		} while (jsonaccept(J, ','));
		jsonexpect(J, '}');
		break;

	case '[':
		js_newarray(J);
		jsonnext(J);
		i = 0;
		if (jsonaccept(J, ']'))
			return;
		do {
			jsonvalue(J);
			js_setindex(J, -2, i++);
		} while (jsonaccept(J, ','));
		jsonexpect(J, ']');
		break;

	case TK_TRUE:
		js_pushboolean(J, 1);
		jsonnext(J);
		break;

	case TK_FALSE:
		js_pushboolean(J, 0);
		jsonnext(J);
		break;

	case TK_NULL:
		js_pushnull(J);
		jsonnext(J);
		break;

	default:
		js_syntaxerror(J, "JSON: unexpected token: %s", jsY_tokenstring(J->lookahead));
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movl 0x74(%rdi), %edi
cmpl $0x5b, %edi
je 0x198c5
cmpl $0x7b, %edi
je 0x1984d
cmpl $0x101, %edi            # imm = 0x101
je 0x1980f
cmpl $0x132, %edi            # imm = 0x132
je 0x19821
cmpl $0x125, %edi            # imm = 0x125
je 0x19829
cmpl $0x12d, %edi            # imm = 0x12D
je 0x19835
cmpl $0x102, %edi            # imm = 0x102
jne 0x1994e
movq 0x78(%rbx), %rsi
movq %rbx, %rdi
callq 0xe7f7
jmp 0x1983d
movsd 0x80(%rbx), %xmm0
movq %rbx, %rdi
callq 0x3f9a
jmp 0x1983d
pushq $0x1
popq %rsi
movq %rbx, %rdi
jmp 0x1982e
movq %rbx, %rdi
xorl %esi, %esi
callq 0xf7ba
jmp 0x1983d
movq %rbx, %rdi
callq 0xe756
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x197ab
movq %rbx, %rdi
callq 0x13813
movq %rbx, %rdi
callq 0x197ab
pushq $0x7d
popq %rsi
movq %rbx, %rdi
callq 0x19b06
testl %eax, %eax
jne 0x198e4
pushq $0x3a
popq %rbp
pushq $-0x2
popq %r14
pushq $0x2c
popq %r15
movl 0x74(%rbx), %edi
cmpl $0x102, %edi            # imm = 0x102
jne 0x19935
movq 0x78(%rbx), %r12
movq %rbx, %rdi
callq 0x197ab
movq %rbx, %rdi
movl %ebp, %esi
callq 0x19b1b
movq %rbx, %rdi
callq 0x197b9
movq %rbx, %rdi
movl %r14d, %esi
movq %r12, %rdx
callq 0x3fdd
movq %rbx, %rdi
movl %r15d, %esi
callq 0x19b06
testl %eax, %eax
jne 0x19877
pushq $0x7d
jmp 0x19924
movq %rbx, %rdi
callq 0xe7d1
movq %rbx, %rdi
callq 0x197ab
pushq $0x5d
popq %rsi
movq %rbx, %rdi
callq 0x19b06
testl %eax, %eax
je 0x198ed
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
pushq $-0x2
popq %rbp
pushq $0x2c
popq %r14
movq %rbx, %rdi
callq 0x197b9
leal 0x1(%r15), %r12d
movq %rbx, %rdi
movl %ebp, %esi
movl %r15d, %edx
callq 0xe9c5
movq %rbx, %rdi
movl %r14d, %esi
callq 0x19b06
movl %r12d, %r15d
testl %eax, %eax
jne 0x198f7
pushq $0x5d
popq %rsi
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x19b1b
callq 0xace4
leaq 0x1027e(%rip), %rsi     # 0x29bbf
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x98e8
callq 0xace4
leaq 0x10292(%rip), %rsi     # 0x29bec
jmp 0x19941