// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::DoStatement()
AST_PTR Parser::DoStatement()
{
    if(!acceptEat("do"))PARSER_ERROR("excepted a 'do'");
    DEF_AST_RET(DoStatement);
    ret->statement=Statement();
    if(!acceptEat("while"))PARSER_ERROR("excepted a 'while'");
    if(!acceptEat(TOKEN_LEFT_PAREN))PARSER_ERROR("excepted a '('");
    ret->expr=Expression();
    if(!acceptEat(TOKEN_RIGHT_PAREN))PARSER_ERROR("excepted a ')'");
    if(!acceptEat(TOKEN_SEMICOLON))PARSER_ERROR("excepted a ';'");
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movq %rdi, -0x120(%rbp)
movq %rdi, %rax
movq %rax, -0x118(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x110(%rbp)
leaq 0x2aa43(%rip), %rsi     # 0x58aa9
callq 0x32fe0
testb $0x1, %al
jne 0x2e157
movb $0x1, -0x42(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x110(%rbp), %rdi
movq %rax, -0x130(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x128(%rbp)
jmp 0x2e09f
leaq -0x41(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x75f0
movq -0x138(%rbp), %rdx
leaq 0x2a9ef(%rip), %rsi     # 0x58aac
leaq -0x40(%rbp), %rdi
callq 0xf990
jmp 0x2e0c8
movq -0x128(%rbp), %rsi
movq -0x130(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0xac90
jmp 0x2e0e1
movq -0x130(%rbp), %rdi
movb $0x0, -0x42(%rbp)
leaq 0x5ab0d(%rip), %rsi     # 0x88c00
leaq -0xde1a(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2e6ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e13e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e135
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x71d0
leaq -0x41(%rbp), %rdi
callq 0x7310
testb $0x1, -0x42(%rbp)
jne 0x2e146
jmp 0x2e152
movq -0x130(%rbp), %rdi
callq 0x7230
jmp 0x2e6e1
movl $0x18, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x140(%rbp)
callq 0x334c0
movq -0x140(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x33510
movq -0x110(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x2c540
jmp 0x2e192
leaq -0x50(%rbp), %rdi
callq 0x33540
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x58(%rbp), %rsi
movq %rsi, -0x150(%rbp)
callq 0x8ee0
movq -0x150(%rbp), %rdi
callq 0x8f10
movq -0x110(%rbp), %rdi
leaq 0x2a8f0(%rip), %rsi     # 0x58abc
callq 0x33560
movb %al, -0x141(%rbp)
jmp 0x2e1d9
movb -0x141(%rbp), %al
testb $0x1, %al
jne 0x2e2de
jmp 0x2e1e9
movb $0x1, -0x7a(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x110(%rbp), %rdi
movq %rax, -0x160(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x158(%rbp)
jmp 0x2e215
leaq -0x79(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x75f0
movq -0x168(%rbp), %rdx
leaq 0x2a88f(%rip), %rsi     # 0x58ac2
leaq -0x78(%rbp), %rdi
callq 0xf990
jmp 0x2e23e
movq -0x158(%rbp), %rsi
movq -0x160(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xac90
jmp 0x2e257
movq -0x160(%rbp), %rdi
movb $0x0, -0x7a(%rbp)
leaq 0x5a997(%rip), %rsi     # 0x88c00
leaq -0xdf90(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2e6ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e6d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e2c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e2bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x71d0
leaq -0x79(%rbp), %rdi
callq 0x7310
testb $0x1, -0x7a(%rbp)
jne 0x2e2cd
jmp 0x2e2d9
movq -0x160(%rbp), %rdi
callq 0x7230
jmp 0x2e6d8
movq -0x110(%rbp), %rdi
movl $0xe, -0x80(%rbp)
leaq -0x80(%rbp), %rsi
callq 0x31240
movb %al, -0x169(%rbp)
jmp 0x2e2fd
movb -0x169(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2e30e
jmp 0x2e40a
movb $0x1, -0xa2(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x110(%rbp), %rdi
movq %rax, -0x180(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x178(%rbp)
jmp 0x2e33d
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0x75f0
movq -0x188(%rbp), %rdx
leaq 0x2a777(%rip), %rsi     # 0x58ad5
leaq -0xa0(%rbp), %rdi
callq 0xf990
jmp 0x2e36c
movq -0x178(%rbp), %rsi
movq -0x180(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0xac90
jmp 0x2e388
movq -0x180(%rbp), %rdi
movb $0x0, -0xa2(%rbp)
leaq 0x5a863(%rip), %rsi     # 0x88c00
leaq -0xe0c4(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2e6ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e3ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e3e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x71d0
leaq -0xa1(%rbp), %rdi
callq 0x7310
testb $0x1, -0xa2(%rbp)
jne 0x2e3f9
jmp 0x2e405
movq -0x180(%rbp), %rdi
callq 0x7230
jmp 0x2e6d8
movq -0x110(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x2a9d0
jmp 0x2e41f
leaq -0x50(%rbp), %rdi
callq 0x33540
movq %rax, %rdi
addq $0x10, %rdi
leaq -0xb0(%rbp), %rsi
movq %rsi, -0x198(%rbp)
callq 0x8ee0
movq -0x198(%rbp), %rdi
callq 0x8f10
movq -0x110(%rbp), %rdi
movl $0xf, -0xb4(%rbp)
leaq -0xb4(%rbp), %rsi
callq 0x31240
movb %al, -0x189(%rbp)
jmp 0x2e473
movb -0x189(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2e484
jmp 0x2e580
movb $0x1, -0xda(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x110(%rbp), %rdi
movq %rax, -0x1a8(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x1a0(%rbp)
jmp 0x2e4b3
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x75f0
movq -0x1b0(%rbp), %rdx
leaq 0x2a472(%rip), %rsi     # 0x58946
leaq -0xd8(%rbp), %rdi
callq 0xf990
jmp 0x2e4e2
movq -0x1a0(%rbp), %rsi
movq -0x1a8(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0xac90
jmp 0x2e4fe
movq -0x1a8(%rbp), %rdi
movb $0x0, -0xda(%rbp)
leaq 0x5a6ed(%rip), %rsi     # 0x88c00
leaq -0xe23a(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2e6ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e564
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e558
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x71d0
leaq -0xd9(%rbp), %rdi
callq 0x7310
testb $0x1, -0xda(%rbp)
jne 0x2e56f
jmp 0x2e57b
movq -0x1a8(%rbp), %rdi
callq 0x7230
jmp 0x2e6d8
movq -0x110(%rbp), %rdi
movl $0x29, -0xe0(%rbp)
leaq -0xe0(%rbp), %rsi
callq 0x31240
movb %al, -0x1b1(%rbp)
jmp 0x2e5a5
movb -0x1b1(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2e5b6
jmp 0x2e6af
movb $0x1, -0x102(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x110(%rbp), %rdi
movq %rax, -0x1c8(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x1c0(%rbp)
jmp 0x2e5e5
leaq -0x101(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x75f0
movq -0x1d0(%rbp), %rdx
leaq 0x2a44d(%rip), %rsi     # 0x58a53
leaq -0x100(%rbp), %rdi
callq 0xf990
jmp 0x2e614
movq -0x1c0(%rbp), %rsi
movq -0x1c8(%rbp), %rdi
leaq -0x100(%rbp), %rdx
callq 0xac90
jmp 0x2e630
movq -0x1c8(%rbp), %rdi
movb $0x0, -0x102(%rbp)
leaq 0x5a5bb(%rip), %rsi     # 0x88c00
leaq -0xe36c(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2e6ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e696
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2e68a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x71d0
leaq -0x101(%rbp), %rdi
callq 0x7310
testb $0x1, -0x102(%rbp)
jne 0x2e6a1
jmp 0x2e6ad
movq -0x1c8(%rbp), %rdi
callq 0x7230
jmp 0x2e6d8
movq -0x120(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x33630
leaq -0x50(%rbp), %rdi
callq 0x33680
movq -0x118(%rbp), %rax
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0x33680
movq -0x18(%rbp), %rdi
callq 0x75e0
nopw (%rax,%rax)