// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::Statement()
AST_PTR Parser::Statement()
{
    if(accept(TOKEN_LEFT_BARCKET)) return Block();
    else if(accept("var"))return VariableStatement();
    else if(acceptEat(TOKEN_SEMICOLON))return AST_PTR(new AST_NAME(EmptyStatement));
    else if(accept("if"))return IfStatement();
    else if(accept("for"))return ForStatement();
    else if(accept("do"))return DoStatement();
    else if(accept("while"))return WhileStatement();
    else if(accept("switch"))return SwitchStatement();
    else if(accept("return"))return ReturnStatement();
    else if(accept("continue"))return ContinueStatement();
    else if(accept("break"))return BreakStatement();
    else return ExpressionStatement();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x240, %rsp            # imm = 0x240
movq %rdi, -0x1a0(%rbp)
movq %rdi, %rax
movq %rax, -0x198(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x190(%rbp)
movl $0x12, %esi
xorl %edx, %edx
callq 0x27960
testb $0x1, %al
jne 0x2c581
jmp 0x2c599
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2c130
jmp 0x2cc81
leaq -0x31(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x75f0
movq -0x1a8(%rbp), %rdx
leaq 0x2c478(%rip), %rsi     # 0x58a2f
leaq -0x30(%rbp), %rdi
callq 0xf990
jmp 0x2c5c2
movq -0x190(%rbp), %rdi
leaq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x1a9(%rbp)
jmp 0x2c5dc
leaq -0x30(%rbp), %rdi
callq 0x71d0
leaq -0x31(%rbp), %rdi
callq 0x7310
movb -0x1a9(%rbp), %al
testb $0x1, %al
jne 0x2c5fa
jmp 0x2c643
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2cec0
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2c635
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x71d0
leaq -0x31(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
movq -0x190(%rbp), %rdi
movl $0x29, -0x48(%rbp)
leaq -0x48(%rbp), %rsi
callq 0x31240
testb $0x1, %al
jne 0x2c660
jmp 0x2c691
movl $0x8, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x332e0
movq -0x1a0(%rbp), %rdi
movq -0x1b8(%rbp), %rsi
callq 0x33320
jmp 0x2cc81
leaq -0x69(%rbp), %rdi
movq %rdi, -0x1c0(%rbp)
callq 0x75f0
movq -0x1c0(%rbp), %rdx
leaq 0x2c3b3(%rip), %rsi     # 0x58a62
leaq -0x68(%rbp), %rdi
callq 0xf990
jmp 0x2c6ba
movq -0x190(%rbp), %rdi
leaq -0x68(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x1c1(%rbp)
jmp 0x2c6d4
leaq -0x68(%rbp), %rdi
callq 0x71d0
leaq -0x69(%rbp), %rdi
callq 0x7310
movb -0x1c1(%rbp), %al
testb $0x1, %al
jne 0x2c6f2
jmp 0x2c73b
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2d3d0
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2c72d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x71d0
leaq -0x69(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
leaq -0x91(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x75f0
movq -0x1d0(%rbp), %rdx
leaq 0x2c33a(%rip), %rsi     # 0x58a96
leaq -0x90(%rbp), %rdi
callq 0xf990
jmp 0x2c76a
movq -0x190(%rbp), %rdi
leaq -0x90(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x1d1(%rbp)
jmp 0x2c787
leaq -0x90(%rbp), %rdi
callq 0x71d0
leaq -0x91(%rbp), %rdi
callq 0x7310
movb -0x1d1(%rbp), %al
testb $0x1, %al
jne 0x2c7ab
jmp 0x2c7fa
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2d9b0
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2c7e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x71d0
leaq -0x91(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x75f0
movq -0x1e0(%rbp), %rdx
leaq 0x2c28e(%rip), %rsi     # 0x58aa9
leaq -0xb8(%rbp), %rdi
callq 0xf990
jmp 0x2c829
movq -0x190(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x1e1(%rbp)
jmp 0x2c846
leaq -0xb8(%rbp), %rdi
callq 0x71d0
leaq -0xb9(%rbp), %rdi
callq 0x7310
movb -0x1e1(%rbp), %al
testb $0x1, %al
jne 0x2c86a
jmp 0x2c8b9
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2e030
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2c8a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x71d0
leaq -0xb9(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x75f0
movq -0x1f0(%rbp), %rdx
leaq 0x2c1e2(%rip), %rsi     # 0x58abc
leaq -0xe0(%rbp), %rdi
callq 0xf990
jmp 0x2c8e8
movq -0x190(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x1f1(%rbp)
jmp 0x2c905
leaq -0xe0(%rbp), %rdi
callq 0x71d0
leaq -0xe1(%rbp), %rdi
callq 0x7310
movb -0x1f1(%rbp), %al
testb $0x1, %al
jne 0x2c929
jmp 0x2c978
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2e6f0
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2c967
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x71d0
leaq -0xe1(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
leaq -0x109(%rbp), %rdi
movq %rdi, -0x200(%rbp)
callq 0x75f0
movq -0x200(%rbp), %rdx
leaq 0x2c1e4(%rip), %rsi     # 0x58b7d
leaq -0x108(%rbp), %rdi
callq 0xf990
jmp 0x2c9a7
movq -0x190(%rbp), %rdi
leaq -0x108(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x201(%rbp)
jmp 0x2c9c4
leaq -0x108(%rbp), %rdi
callq 0x71d0
leaq -0x109(%rbp), %rdi
callq 0x7310
movb -0x201(%rbp), %al
testb $0x1, %al
jne 0x2c9e8
jmp 0x2ca37
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x30200
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2ca26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x71d0
leaq -0x109(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
leaq -0x131(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x75f0
movq -0x210(%rbp), %rdx
leaq 0x2bdb0(%rip), %rsi     # 0x58808
leaq -0x130(%rbp), %rdi
callq 0xf990
jmp 0x2ca66
movq -0x190(%rbp), %rdi
leaq -0x130(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x211(%rbp)
jmp 0x2ca83
leaq -0x130(%rbp), %rdi
callq 0x71d0
leaq -0x131(%rbp), %rdi
callq 0x7310
movb -0x211(%rbp), %al
testb $0x1, %al
jne 0x2caa7
jmp 0x2caf6
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2eb40
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2cae5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x71d0
leaq -0x131(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
leaq -0x159(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x75f0
movq -0x220(%rbp), %rdx
leaq 0x2bd04(%rip), %rsi     # 0x5881b
leaq -0x158(%rbp), %rdi
callq 0xf990
jmp 0x2cb25
movq -0x190(%rbp), %rdi
leaq -0x158(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x221(%rbp)
jmp 0x2cb42
leaq -0x158(%rbp), %rdi
callq 0x71d0
leaq -0x159(%rbp), %rdi
callq 0x7310
movb -0x221(%rbp), %al
testb $0x1, %al
jne 0x2cb66
jmp 0x2cbb5
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2ef60
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2cba4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x71d0
leaq -0x159(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
leaq -0x181(%rbp), %rdi
movq %rdi, -0x230(%rbp)
callq 0x75f0
movq -0x230(%rbp), %rdx
leaq 0x2bc5a(%rip), %rsi     # 0x58830
leaq -0x180(%rbp), %rdi
callq 0xf990
jmp 0x2cbe4
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x231(%rbp)
jmp 0x2cc01
leaq -0x180(%rbp), %rdi
callq 0x71d0
leaq -0x181(%rbp), %rdi
callq 0x7310
movb -0x231(%rbp), %al
testb $0x1, %al
jne 0x2cc25
jmp 0x2cc6e
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2f300
jmp 0x2cc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2cc60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x71d0
leaq -0x181(%rbp), %rdi
callq 0x7310
jmp 0x2cc91
movq -0x190(%rbp), %rsi
movq -0x1a0(%rbp), %rdi
callq 0x2d200
movq -0x198(%rbp), %rax
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x75e0
nopw (%rax,%rax)