// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jsparse.c
// Function: forstatement
static js_Ast *forstatement(js_State *J, int line)
{
	js_Ast *a, *b, *c, *d;
	jsP_expect(J, '(');
	if (jsP_accept(J, TK_VAR)) {
		a = vardeclist(J, 1);
		if (jsP_accept(J, ';')) {
			b = forexpression(J, ';');
			c = forexpression(J, ')');
			d = statement(J);
			return STM4(FOR_VAR, a, b, c, d);
		}
		if (jsP_accept(J, TK_IN)) {
			b = expression(J, 0);
			jsP_expect(J, ')');
			c = statement(J);
			return STM3(FOR_IN_VAR, a, b, c);
		}
		jsP_error(J, "unexpected token in for-var-statement: %s", jsY_tokenstring(J->lookahead));
	}

	if (J->lookahead != ';')
		a = expression(J, 1);
	else
		a = NULL;
	if (jsP_accept(J, ';')) {
		b = forexpression(J, ';');
		c = forexpression(J, ')');
		d = statement(J);
		return STM4(FOR, a, b, c, d);
	}
	if (jsP_accept(J, TK_IN)) {
		b = expression(J, 0);
		jsP_expect(J, ')');
		c = statement(J);
		return STM3(FOR_IN, a, b, c);
	}
	jsP_error(J, "unexpected token in for-statement: %s", jsY_tokenstring(J->lookahead));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x28, 0x74(%rax)
jne 0x28e9d
movq -0x10(%rbp), %rdi
callq 0x11c60
movb $0x1, %al
testb $0x1, %al
jne 0x28ee0
jmp 0x28ea5
xorl %eax, %eax
testb $0x1, %al
jne 0x28ee0
jmp 0x28ea5
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movl 0x74(%rax), %edi
callq 0xddf0
movq %rax, -0x40(%rbp)
movl $0x28, %edi
callq 0xddf0
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rdx
movq %rax, %rcx
leaq 0x143df(%rip), %rsi     # 0x3d2b8
movb $0x0, %al
callq 0x288c0
movq -0x10(%rbp), %rax
cmpl $0x135, 0x74(%rax)      # imm = 0x135
jne 0x28f01
movq -0x10(%rbp), %rdi
callq 0x11c60
movb $0x1, %al
testb $0x1, %al
jne 0x28f0c
jmp 0x2909f
xorl %eax, %eax
testb $0x1, %al
jne 0x28f0c
jmp 0x2909f
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x28c30
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x3b, 0x74(%rax)
jne 0x28f39
movq -0x10(%rbp), %rdi
callq 0x11c60
movb $0x1, %al
testb $0x1, %al
jne 0x28f41
jmp 0x28fa0
xorl %eax, %eax
testb $0x1, %al
jne 0x28f41
jmp 0x28fa0
movq -0x10(%rbp), %rdi
movl $0x3b, %esi
callq 0x2c860
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movl $0x29, %esi
callq 0x2c860
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x279b0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movq -0x38(%rbp), %rax
movl $0x4e, %esi
movq %rax, (%rsp)
callq 0x12310
movq %rax, -0x8(%rbp)
jmp 0x29243
movq -0x10(%rbp), %rax
cmpl $0x12a, 0x74(%rax)      # imm = 0x12A
jne 0x28fc1
movq -0x10(%rbp), %rdi
callq 0x11c60
movb $0x1, %al
testb $0x1, %al
jne 0x28fcc
jmp 0x29076
xorl %eax, %eax
testb $0x1, %al
jne 0x28fcc
jmp 0x29076
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x28d70
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x29, 0x74(%rax)
jne 0x28ff6
movq -0x10(%rbp), %rdi
callq 0x11c60
movb $0x1, %al
testb $0x1, %al
jne 0x29039
jmp 0x28ffe
xorl %eax, %eax
testb $0x1, %al
jne 0x29039
jmp 0x28ffe
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movl 0x74(%rax), %edi
callq 0xddf0
movq %rax, -0x50(%rbp)
movl $0x29, %edi
callq 0xddf0
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rdx
movq %rax, %rcx
leaq 0x14286(%rip), %rsi     # 0x3d2b8
movb $0x0, %al
callq 0x288c0
movq -0x10(%rbp), %rdi
callq 0x279b0
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movl $0x50, %esi
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x12310
movq %rax, -0x8(%rbp)
jmp 0x29243
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rax
movl 0x74(%rax), %edi
callq 0xddf0
movq -0x60(%rbp), %rdi
movq %rax, %rdx
leaq 0x14399(%rip), %rsi     # 0x3d431
movb $0x0, %al
callq 0x288c0
movq -0x10(%rbp), %rax
cmpl $0x3b, 0x74(%rax)
je 0x290bd
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x28d70
movq %rax, -0x20(%rbp)
jmp 0x290c5
movq $0x0, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x3b, 0x74(%rax)
jne 0x290e0
movq -0x10(%rbp), %rdi
callq 0x11c60
movb $0x1, %al
testb $0x1, %al
jne 0x290e8
jmp 0x29147
xorl %eax, %eax
testb $0x1, %al
jne 0x290e8
jmp 0x29147
movq -0x10(%rbp), %rdi
movl $0x3b, %esi
callq 0x2c860
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movl $0x29, %esi
callq 0x2c860
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
callq 0x279b0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movq -0x38(%rbp), %rax
movl $0x4d, %esi
movq %rax, (%rsp)
callq 0x12310
movq %rax, -0x8(%rbp)
jmp 0x29243
movq -0x10(%rbp), %rax
cmpl $0x12a, 0x74(%rax)      # imm = 0x12A
jne 0x29168
movq -0x10(%rbp), %rdi
callq 0x11c60
movb $0x1, %al
testb $0x1, %al
jne 0x29173
jmp 0x2921a
xorl %eax, %eax
testb $0x1, %al
jne 0x29173
jmp 0x2921a
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x28d70
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x29, 0x74(%rax)
jne 0x2919d
movq -0x10(%rbp), %rdi
callq 0x11c60
movb $0x1, %al
testb $0x1, %al
jne 0x291e0
jmp 0x291a5
xorl %eax, %eax
testb $0x1, %al
jne 0x291e0
jmp 0x291a5
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rax
movl 0x74(%rax), %edi
callq 0xddf0
movq %rax, -0x68(%rbp)
movl $0x29, %edi
callq 0xddf0
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rdx
movq %rax, %rcx
leaq 0x140df(%rip), %rsi     # 0x3d2b8
movb $0x0, %al
callq 0x288c0
movq -0x10(%rbp), %rdi
callq 0x279b0
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movl $0x4f, %esi
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x12310
movq %rax, -0x8(%rbp)
jmp 0x29243
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rax
movl 0x74(%rax), %edi
callq 0xddf0
movq -0x78(%rbp), %rdi
movq %rax, %rdx
leaq 0x1421f(%rip), %rsi     # 0x3d45b
movb $0x0, %al
callq 0x288c0
movq -0x8(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq