// File: /workspace/github_c_makefile_star2_O2/ArtifexSoftware[P]mujs/./jsparse.c
// Function: statement
static js_Ast *statement(js_State *J)
{
	js_Ast *a, *b, *c, *d;
	js_Ast *stm;
	int line = J->lexline;

	INCREC();

	if (J->lookahead == '{') {
		stm = block(J);
	}

	else if (jsP_accept(J, TK_VAR)) {
		a = vardeclist(J, 0);
		semicolon(J);
		stm = STM1(VAR, a);
	}

	/* empty statement */
	else if (jsP_accept(J, ';')) {
		stm = STM0(EMPTY);
	}

	else if (jsP_accept(J, TK_IF)) {
		jsP_expect(J, '(');
		a = expression(J, 0);
		jsP_expect(J, ')');
		b = statement(J);
		if (jsP_accept(J, TK_ELSE))
			c = statement(J);
		else
			c = NULL;
		stm = STM3(IF, a, b, c);
	}

	else if (jsP_accept(J, TK_DO)) {
		a = statement(J);
		jsP_expect(J, TK_WHILE);
		jsP_expect(J, '(');
		b = expression(J, 0);
		jsP_expect(J, ')');
		semicolon(J);
		stm = STM2(DO, a, b);
	}

	else if (jsP_accept(J, TK_WHILE)) {
		jsP_expect(J, '(');
		a = expression(J, 0);
		jsP_expect(J, ')');
		b = statement(J);
		stm = STM2(WHILE, a, b);
	}

	else if (jsP_accept(J, TK_FOR)) {
		stm = forstatement(J, line);
	}

	else if (jsP_accept(J, TK_CONTINUE)) {
		a = identifieropt(J);
		semicolon(J);
		stm = STM1(CONTINUE, a);
	}

	else if (jsP_accept(J, TK_BREAK)) {
		a = identifieropt(J);
		semicolon(J);
		stm = STM1(BREAK, a);
	}

	else if (jsP_accept(J, TK_RETURN)) {
		if (J->lookahead != ';' && J->lookahead != '}' && J->lookahead != 0)
			a = expression(J, 0);
		else
			a = NULL;
		semicolon(J);
		stm = STM1(RETURN, a);
	}

	else if (jsP_accept(J, TK_WITH)) {
		jsP_expect(J, '(');
		a = expression(J, 0);
		jsP_expect(J, ')');
		b = statement(J);
		stm = STM2(WITH, a, b);
	}

	else if (jsP_accept(J, TK_SWITCH)) {
		jsP_expect(J, '(');
		a = expression(J, 0);
		jsP_expect(J, ')');
		jsP_expect(J, '{');
		b = caselist(J);
		jsP_expect(J, '}');
		stm = STM2(SWITCH, a, b);
	}

	else if (jsP_accept(J, TK_THROW)) {
		a = expression(J, 0);
		semicolon(J);
		stm = STM1(THROW, a);
	}

	else if (jsP_accept(J, TK_TRY)) {
		a = block(J);
		b = c = d = NULL;
		if (jsP_accept(J, TK_CATCH)) {
			jsP_expect(J, '(');
			b = identifier(J);
			jsP_expect(J, ')');
			c = block(J);
		}
		if (jsP_accept(J, TK_FINALLY)) {
			d = block(J);
		}
		if (!b && !d)
			jsP_error(J, "unexpected token in try: %s (expected 'catch' or 'finally')", jsY_tokenstring(J->lookahead));
		stm = STM4(TRY, a, b, c, d);
	}

	else if (jsP_accept(J, TK_DEBUGGER)) {
		semicolon(J);
		stm = STM0(DEBUGGER);
	}

	else if (jsP_accept(J, TK_FUNCTION)) {
		jsP_warning(J, "function statements are not standard");
		stm = funstm(J, line);
	}

	/* labelled statement or expression statement */
	else if (J->lookahead == TK_IDENTIFIER) {
		a = expression(J, 0);
		if (a->type == EXP_IDENTIFIER && jsP_accept(J, ':')) {
			a->type = AST_IDENTIFIER;
			b = statement(J);
			stm = STM2(LABEL, a, b);
		} else {
			semicolon(J);
			stm = a;
		}
	}

	/* expression statement */
	else {
		stm = expression(J, 0);
		semicolon(J);
	}

	DECREC();
	return stm;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movl 0x60(%rdi), %ebp
movl 0x70(%rdi), %eax
leal 0x1(%rax), %ecx
movl %ecx, 0x70(%rdi)
cmpl $0x190, %eax            # imm = 0x190
jge 0x1ac3d
movl 0x74(%rbx), %eax
leal -0x11c(%rax), %ecx
cmpl $0x1c, %ecx
ja 0x1a52a
leaq 0x667e(%rip), %rax      # 0x20b78
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1b0a8
movq %rax, %r14
movq %rbx, %rdi
callq 0x1afd5
andq $0x0, (%rsp)
pushq $0x52
jmp 0x1a984
cmpl $0x3b, %eax
je 0x1aa34
cmpl $0x100, %eax            # imm = 0x100
je 0x1a9ef
cmpl $0x7b, %eax
jne 0x1a550
movq %rbx, %rdi
callq 0x1aec4
jmp 0x1ab34
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movq %rax, %r14
jmp 0x1aa27
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1aec4
movq %rax, %r14
movl 0x74(%rbx), %eax
cmpl $0x11e, %eax            # imm = 0x11E
jne 0x1aa53
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %edi
cmpl $0x28, %edi
jne 0x1ac4e
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1acfa
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r15
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1aec4
movq %rax, %r12
movl 0x74(%rbx), %eax
jmp 0x1aa59
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %edi
cmpl $0x28, %edi
jne 0x1ac4e
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %eax
cmpl $0x3b, %eax
je 0x1ab4a
cmpl $0x135, %eax            # imm = 0x135
jne 0x1ab4f
movq %rbx, %rdi
callq 0xd822
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1af56
movq %rax, %r14
movl 0x74(%rbx), %edi
cmpl $0x12a, %edi            # imm = 0x12A
je 0x1abbb
cmpl $0x3b, %edi
jne 0x1acde
movq %rbx, %rdi
callq 0xd822
pushq $0x3b
popq %rsi
movq %rbx, %rdi
callq 0x1c53e
movq %rax, %r15
pushq $0x29
popq %rsi
movq %rbx, %rdi
callq 0x1c53e
movq %rax, %r12
movq %rbx, %rdi
callq 0x1a4bf
movq %rax, (%rsp)
pushq $0x4e
jmp 0x1aba7
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1afd5
andq $0x0, (%rsp)
pushq $0x58
jmp 0x1aa43
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %edi
cmpl $0x28, %edi
jne 0x1ac4e
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r14
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %edi
cmpl $0x7b, %edi
jne 0x1acb4
movq %rbx, %rdi
callq 0xd822
cmpl $0x7d, 0x74(%rbx)
jne 0x1aaa6
xorl %r15d, %r15d
jmp 0x1ab11
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1a4bf
movl 0x74(%rbx), %edi
cmpl $0x137, %edi            # imm = 0x137
jne 0x1ac83
movq %rax, %r14
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %edi
cmpl $0x28, %edi
jne 0x1ac4e
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r15
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1afd5
andq $0x0, (%rsp)
pushq $0x4b
jmp 0x1ab20
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1b0a8
movq %rax, %r14
movq %rbx, %rdi
callq 0x1afd5
andq $0x0, (%rsp)
pushq $0x51
jmp 0x1a984
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %edi
cmpl $0x28, %edi
jne 0x1ac4e
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r14
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1a4bf
andq $0x0, (%rsp)
pushq $0x4c
jmp 0x1a9de
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %edi
cmpl $0x28, %edi
jne 0x1ac4e
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r14
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1a4bf
movq %rax, %r15
cmpl $0x124, 0x74(%rbx)      # imm = 0x124
jne 0x1aa8b
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1a4bf
movq %rax, %r9
jmp 0x1aa8e
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %eax
xorl %r14d, %r14d
testl %eax, %eax
je 0x1a869
cmpl $0x3b, %eax
je 0x1a869
cmpl $0x7d, %eax
je 0x1a869
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movq %rax, %r14
movq %rbx, %rdi
callq 0x1afd5
andq $0x0, (%rsp)
pushq $0x53
jmp 0x1a984
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1b0b8
movq %rbx, %rdi
callq 0x1acfa
movl 0x74(%rbx), %edi
cmpl $0x28, %edi
jne 0x1ac4e
movq %rax, %r14
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0xdb0b
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r15
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1ae28
andq $0x0, (%rsp)
pushq $0x11
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %r15, %r8
movq %rax, %r9
callq 0xdb92
andq $0x0, (%rsp)
pushq $0x46
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %rax, %r8
xorl %r9d, %r9d
callq 0xdb92
andq $0x0, (%rsp)
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %rax, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xdb92
andq $0x0, (%rsp)
pushq $0x49
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %rax, %rcx
jmp 0x1aa4b
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1af56
movq %rax, %r14
movq %rbx, %rdi
callq 0x1afd5
andq $0x0, (%rsp)
pushq $0x49
jmp 0x1a984
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movq %rax, %r14
movq %rbx, %rdi
callq 0x1afd5
andq $0x0, (%rsp)
pushq $0x56
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %r14, %rcx
jmp 0x1aa4b
movq %rbx, %rdi
callq 0xd822
movl 0x74(%rbx), %edi
cmpl $0x28, %edi
jne 0x1ac4e
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r14
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1a4bf
andq $0x0, (%rsp)
pushq $0x54
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %rax, %r8
jmp 0x1ab2c
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movq %rax, %r14
cmpl $0x3, (%rax)
jne 0x1aa27
cmpl $0x3a, 0x74(%rbx)
jne 0x1aa27
movq %rbx, %rdi
callq 0xd822
movl $0x2, (%r14)
movq %rbx, %rdi
callq 0x1a4bf
andq $0x0, (%rsp)
pushq $0x59
jmp 0x1a9de
movq %rbx, %rdi
callq 0x1afd5
jmp 0x1ab37
movq %rbx, %rdi
callq 0xd822
andq $0x0, (%rsp)
pushq $0x48
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
jmp 0x1ab2c
xorl %r15d, %r15d
xorl %r12d, %r12d
cmpl $0x126, %eax            # imm = 0x126
jne 0x1aa72
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1aec4
jmp 0x1aa74
xorl %eax, %eax
movq %r15, %rcx
orq %rax, %rcx
je 0x1ac98
movq %rax, (%rsp)
pushq $0x57
jmp 0x1aba7
xorl %r9d, %r9d
andq $0x0, (%rsp)
pushq $0x4a
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %r15, %r8
jmp 0x1ab2f
movq %rbx, %rdi
callq 0x1c59b
andq $0x0, (%rsp)
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %rax, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xdb92
movq %rax, %r15
movq %rax, %r12
cmpl $0x7d, 0x74(%rbx)
je 0x1aafd
movq %rbx, %rdi
callq 0x1c59b
andq $0x0, (%rsp)
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %rax, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xdb92
movq %rax, 0x18(%r12)
jmp 0x1aacb
movq %r15, %rdi
callq 0x1a4a6
movl 0x74(%rbx), %edi
cmpl $0x7d, %edi
jne 0x1acc9
movq %rbx, %rdi
callq 0xd822
andq $0x0, (%rsp)
pushq $0x55
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %r15, %r8
xorl %r9d, %r9d
callq 0xdb92
movq %rax, %r14
decl 0x70(%rbx)
movq %r14, %rax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
xorl %r14d, %r14d
jmp 0x1ab75
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1b014
movq %rax, %r14
movl 0x74(%rbx), %edi
cmpl $0x12a, %edi            # imm = 0x12A
je 0x1abf5
cmpl $0x3b, %edi
jne 0x1acec
movq %rbx, %rdi
callq 0xd822
pushq $0x3b
popq %rsi
movq %rbx, %rdi
callq 0x1c53e
movq %rax, %r15
pushq $0x29
popq %rsi
movq %rbx, %rdi
callq 0x1c53e
movq %rax, %r12
movq %rbx, %rdi
callq 0x1a4bf
movq %rax, (%rsp)
pushq $0x4d
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %r15, %r8
movq %r12, %r9
jmp 0x1ab2f
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r15
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1a4bf
andq $0x0, (%rsp)
pushq $0x50
jmp 0x1ac29
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1b014
movl 0x74(%rbx), %edi
cmpl $0x29, %edi
jne 0x1ac63
movq %rax, %r15
movq %rbx, %rdi
callq 0xd822
movq %rbx, %rdi
callq 0x1a4bf
andq $0x0, (%rsp)
pushq $0x4f
popq %rsi
movq %rbx, %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %r15, %r8
movq %rax, %r9
jmp 0x1ab2f
leaq 0xf051(%rip), %rsi      # 0x29c95
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1ad4a
callq 0xace4
leaq 0xefb3(%rip), %rsi      # 0x29c0d
leaq 0xf700(%rip), %rcx      # 0x2a361
jmp 0x1ac76
callq 0xace4
leaq 0xef9e(%rip), %rsi      # 0x29c0d
leaq 0xdf36(%rip), %rcx      # 0x28bac
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x1ad4a
callq 0xace4
leaq 0xef7e(%rip), %rsi      # 0x29c0d
leaq 0xeacd(%rip), %rcx      # 0x29763
jmp 0x1ac76
movl 0x74(%rbx), %edi
callq 0xace4
leaq 0xf001(%rip), %rsi      # 0x29ca8
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x1ad4a
callq 0xace4
leaq 0xef4d(%rip), %rsi      # 0x29c0d
leaq 0xe907(%rip), %rcx      # 0x295ce
jmp 0x1ac76
callq 0xace4
leaq 0xef38(%rip), %rsi      # 0x29c0d
leaq 0xe8fa(%rip), %rcx      # 0x295d6
jmp 0x1ac76
callq 0xace4
leaq 0xf09c(%rip), %rsi      # 0x29d86
jmp 0x1aca7
callq 0xace4
leaq 0xf0b8(%rip), %rsi      # 0x29db0
jmp 0x1aca7