// File: /workspace/github_c_makefile_star2_O1/ccxvii[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 0x2236f
cmpl $0x12c, %edi            # imm = 0x12C
jg 0x2239e
cmpl $0x102, %edi            # imm = 0x102
je 0x224b2
cmpl $0x125, %edi            # imm = 0x125
jne 0x22504
movq %rbx, %rdi
xorl %esi, %esi
jmp 0x223be
cmpl $0x5b, %edi
je 0x2243d
cmpl $0x7b, %edi
je 0x223c8
cmpl $0x101, %edi            # imm = 0x101
jne 0x22504
movsd 0x80(%rbx), %xmm0
movq %rbx, %rdi
callq 0x4184
jmp 0x224c8
cmpl $0x12d, %edi            # imm = 0x12D
je 0x224c0
cmpl $0x132, %edi            # imm = 0x132
jne 0x22504
movq %rbx, %rdi
movl $0x1, %esi
callq 0x14ad9
jmp 0x224c8
movq %rbx, %rdi
callq 0x1a42b
movq %rbx, %rdi
callq 0xf26d
movl %eax, 0x74(%rbx)
cmpl $0x7d, %eax
je 0x224c8
movl 0x74(%rbx), %eax
cmpl $0x102, %eax            # imm = 0x102
jne 0x224e9
movq 0x78(%rbx), %r14
movq %rbx, %rdi
callq 0xf26d
movl %eax, 0x74(%rbx)
movq %rbx, %rdi
movl $0x3a, %esi
callq 0x22879
movq %rbx, %rdi
callq 0x22336
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
movq %r14, %rdx
callq 0x41f3
cmpl $0x2c, 0x74(%rbx)
jne 0x224d8
movq %rbx, %rdi
callq 0xf26d
movl %eax, 0x74(%rbx)
jmp 0x223e7
movq %rbx, %rdi
callq 0x135de
movq %rbx, %rdi
callq 0xf26d
movl %eax, 0x74(%rbx)
cmpl $0x5d, %eax
je 0x224c8
movq %rbx, %rdi
callq 0x22336
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
xorl %edx, %edx
callq 0x1393c
cmpl $0x2c, 0x74(%rbx)
jne 0x224a8
movl $0x1, %r14d
movq %rbx, %rdi
callq 0xf26d
movl %eax, 0x74(%rbx)
movq %rbx, %rdi
callq 0x22336
leal 0x1(%r14), %ebp
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
movl %r14d, %edx
callq 0x1393c
cmpl $0x2c, 0x74(%rbx)
movl %ebp, %r14d
je 0x22478
movq %rbx, %rdi
movl $0x5d, %esi
jmp 0x224e0
movq 0x78(%rbx), %rsi
movq %rbx, %rdi
callq 0x13665
jmp 0x224c8
movq %rbx, %rdi
callq 0x13525
movq %rbx, %rdi
callq 0xf26d
movl %eax, 0x74(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
movq %rbx, %rdi
movl $0x7d, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x22879
movl %eax, %edi
callq 0xe483
leaq 0x126bd(%rip), %rsi     # 0x34bb4
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xcc25
callq 0xe483
leaq 0x126d1(%rip), %rsi     # 0x34be1
jmp 0x224f7