// File: /workspace/github_c_makefile_star2_O3/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 %r14
pushq %rbx
movq %rdi, %rbx
movl 0x74(%rdi), %edi
cmpl $0x101, %edi            # imm = 0x101
jle 0x2205a
cmpl $0x12c, %edi            # imm = 0x12C
jg 0x22089
cmpl $0x102, %edi            # imm = 0x102
je 0x22193
cmpl $0x125, %edi            # imm = 0x125
jne 0x221e5
movq %rbx, %rdi
xorl %esi, %esi
jmp 0x220a9
cmpl $0x5b, %edi
je 0x22125
cmpl $0x7b, %edi
je 0x220b3
cmpl $0x101, %edi            # imm = 0x101
jne 0x221e5
movsd 0x80(%rbx), %xmm0
movq %rbx, %rdi
callq 0x4124
jmp 0x221a9
cmpl $0x12d, %edi            # imm = 0x12D
je 0x221a1
cmpl $0x132, %edi            # imm = 0x132
jne 0x221e5
movq %rbx, %rdi
movl $0x1, %esi
callq 0x14602
jmp 0x221a9
movq %rbx, %rdi
callq 0x19f69
movq %rbx, %rdi
callq 0xef69
movl %eax, 0x74(%rbx)
cmpl $0x7d, %eax
je 0x221a9
cmpl $0x102, %eax            # imm = 0x102
jne 0x221ca
movq 0x78(%rbx), %r14
movq %rbx, %rdi
callq 0xef69
movl %eax, 0x74(%rbx)
movq %rbx, %rdi
movl $0x3a, %esi
callq 0x22544
movq %rbx, %rdi
callq 0x22021
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
movq %r14, %rdx
callq 0x4193
cmpl $0x2c, 0x74(%rbx)
jne 0x221b9
movq %rbx, %rdi
callq 0xef69
movl %eax, 0x74(%rbx)
jmp 0x220cf
movq %rbx, %rdi
callq 0x1318e
movq %rbx, %rdi
callq 0xef69
movl %eax, 0x74(%rbx)
cmpl $0x5d, %eax
je 0x221a9
movq %rbx, %rdi
callq 0x22021
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
xorl %edx, %edx
callq 0x134ed
cmpl $0x2c, 0x74(%rbx)
jne 0x22189
movl $0x1, %ebp
movq %rbx, %rdi
callq 0xef69
movl %eax, 0x74(%rbx)
movq %rbx, %rdi
callq 0x22021
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
movl %ebp, %edx
callq 0x134ed
incl %ebp
cmpl $0x2c, 0x74(%rbx)
je 0x2215f
movq %rbx, %rdi
movl $0x5d, %esi
jmp 0x221c1
movq 0x78(%rbx), %rsi
movq %rbx, %rdi
callq 0x13215
jmp 0x221a9
movq %rbx, %rdi
callq 0x130d5
movq %rbx, %rdi
callq 0xef69
movl %eax, 0x74(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
movq %rbx, %rdi
movl $0x7d, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x22544
movl %eax, %edi
callq 0xe17c
leaq 0x12a0c(%rip), %rsi     # 0x34be4
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xc952
callq 0xe17c
leaq 0x12a20(%rip), %rsi     # 0x34c11
jmp 0x221d8