LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::isUnaryOperator()
bool Parser::isUnaryOperator()
{
    return accept("typeof")||
    accept(TOKEN_INCREMENT)||
    accept(TOKEN_DECREMENT)||
    accept(TOKEN_ADD)||
    accept(TOKEN_SUB)||
    accept(TOKEN_BITWISE_NOT)||
    accept(TOKEN_NEGATION);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x48(%rbp)
callq 0x75f0
movq -0x48(%rbp), %rdx
leaq 0x30d20(%rip), %rsi     # 0x5886c
leaq -0x28(%rbp), %rdi
callq 0xf990
jmp 0x27b57
movq -0x50(%rbp), %rdi
leaq -0x28(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x51(%rbp)
jmp 0x27b6b
movb -0x51(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x52(%rbp)
jne 0x27c57
jmp 0x27b7e
movq -0x50(%rbp), %rdi
movl $0x2, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x53(%rbp)
jmp 0x27b93
movb -0x53(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x52(%rbp)
jne 0x27c57
jmp 0x27ba6
movq -0x50(%rbp), %rdi
movl $0x5, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x54(%rbp)
jmp 0x27bbb
movb -0x54(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x52(%rbp)
jne 0x27c57
jmp 0x27bce
movq -0x50(%rbp), %rdi
movl $0x4, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x55(%rbp)
jmp 0x27be3
movb -0x55(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x52(%rbp)
jne 0x27c57
jmp 0x27bf2
movq -0x50(%rbp), %rdi
movl $0x7, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x56(%rbp)
jmp 0x27c07
movb -0x56(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x52(%rbp)
jne 0x27c57
jmp 0x27c16
movq -0x50(%rbp), %rdi
movl $0x1a, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x57(%rbp)
jmp 0x27c2b
movb -0x57(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x52(%rbp)
jne 0x27c57
jmp 0x27c3a
movq -0x50(%rbp), %rdi
movl $0x1e, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x58(%rbp)
jmp 0x27c4f
movb -0x58(%rbp), %al
movb %al, -0x52(%rbp)
jmp 0x27c57
movb -0x52(%rbp), %al
movb %al, -0x59(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x71d0
leaq -0x29(%rbp), %rdi
callq 0x7310
movb -0x59(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x27c9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x71d0
leaq -0x29(%rbp), %rdi
callq 0x7310
movq -0x38(%rbp), %rdi
callq 0x75e0
nop
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::isRelationalOperator()
bool Parser::isRelationalOperator()
{
    return accept(TOKEN_LESS)||
    accept(TOKEN_GREATER)||
    accept(TOKEN_LESS_EQUAL)||
    accept(TOKEN_GREATER_EQUAL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x18(%rbp)
movl $0x27, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27e37
movq -0x18(%rbp), %rdi
movl $0x23, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27e37
movq -0x18(%rbp), %rdi
movl $0x28, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27e37
movq -0x18(%rbp), %rdi
movl $0x24, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x9(%rbp)
movb -0x9(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::isAssignmentOperator()
bool Parser::isAssignmentOperator()
{
    return accept(TOKEN_ASSIGN)||
    accept(TOKEN_MUL_ASSIGN)||
    accept(TOKEN_DIV_ASSIGN)||
    accept(TOKEN_MOD_ASSIGN)||
    accept(TOKEN_ADD_ASSIGN)||
    accept(TOKEN_SUB_ASSIGN)||
    accept(TOKEN_LEFT_SHIFT_ASSIGN)||
    accept(TOKEN_RIGHT_SHIFT_ASSIGN)||
    accept(TOKEN_BITWISE_AND_ASSIGN)||
    accept(TOKEN_BITWISE_XOR_ASSIGN)||
    accept(TOKEN_BITWISE_OR_ASSIGN);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x18(%rbp)
movl $0x20, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0x8, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0xa, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0xc, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0x3, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0x6, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0x25, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0x21, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0x18, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0x1b, %esi
xorl %edx, %edx
callq 0x27960
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x9(%rbp)
jne 0x27ff3
movq -0x18(%rbp), %rdi
movl $0x15, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x9(%rbp)
movb -0x9(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nop
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::PrefixExpression()
AST_PTR Parser::PrefixExpression()
{
    if(isUnaryOperator())
    {
        DEF_AST_RET(PrefixExpression);
        ret->optr=Literal();
        ret->expr=PrefixExpression();
        RETURN_PTR;
    }
    else return PostfixExpression();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x50(%rbp)
movq %rdi, %rax
movq %rax, -0x48(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x27b20
testb $0x1, %al
jne 0x282a1
jmp 0x28359
movl $0x18, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x58(%rbp)
callq 0x32320
movq -0x58(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x32370
movq -0x40(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x292e0
jmp 0x282d3
leaq -0x18(%rbp), %rdi
callq 0x323a0
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x20(%rbp), %rsi
movq %rsi, -0x60(%rbp)
callq 0x8ee0
movq -0x60(%rbp), %rdi
callq 0x8f10
movq -0x40(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x28270
jmp 0x28308
leaq -0x18(%rbp), %rdi
callq 0x323a0
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x38(%rbp), %rsi
callq 0x8ee0
leaq -0x38(%rbp), %rdi
callq 0x8f10
movq -0x50(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x323c0
leaq -0x18(%rbp), %rdi
callq 0x32410
jmp 0x28366
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x32410
jmp 0x28370
movq -0x40(%rbp), %rsi
movq -0x50(%rbp), %rdi
callq 0x2be60
movq -0x48(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x75e0
nopl (%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::OperationList(bool (Parser::*)(), std::unique_ptr<AST, std::default_delete<AST>> (Parser::*)())
AST_PTR Parser::OperationList(PARSER_BOOL_FUNC bool_func,PARSER_AST_FUNC ast_func)
{
    DEF_AST_RET(OperationList);
    do
    {
        ret->nodes.push_back(Operation(ast_func));
    }while((this->*bool_func)());
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rsi, -0xa8(%rbp)
movq %rdi, %rax
movq -0xa8(%rbp), %rdi
movq %rax, -0xa0(%rbp)
movq %rax, %rsi
movq %rsi, -0x98(%rbp)
movq %rax, -0x8(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x10(%rbp)
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rsi
movq %r8, -0x28(%rbp)
movq %r9, -0x20(%rbp)
movq -0x28(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rdi, -0x30(%rbp)
movq %rsi, -0x38(%rbp)
movq %rdx, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movq %rax, -0x50(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x90(%rbp)
movl $0x20, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x88(%rbp)
callq 0x325c0
movq -0x88(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x32600
leaq -0x58(%rbp), %rdi
callq 0x32630
movq -0x90(%rbp), %rsi
addq $0x8, %rax
movq %rax, -0xb0(%rbp)
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
movq %rcx, -0x68(%rbp)
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdx
movq -0x68(%rbp), %rcx
leaq -0x60(%rbp), %rdi
callq 0x2bfc0
jmp 0x28457
movq -0xb0(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x31320
jmp 0x28469
leaq -0x60(%rbp), %rdi
callq 0x8f10
movq -0x90(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x38(%rbp), %rdx
addq %rdx, %rcx
movq %rcx, -0xb8(%rbp)
andq $0x1, %rax
cmpq $0x0, %rax
je 0x284e3
movq -0xc0(%rbp), %rcx
movq -0xb8(%rbp), %rax
movq (%rax), %rax
subq $0x1, %rcx
movq (%rax,%rcx), %rax
movq %rax, -0xc8(%rbp)
jmp 0x284f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x28542
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x8f10
jmp 0x28542
movq -0xc0(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0xb8(%rbp), %rdi
movq -0xc8(%rbp), %rax
callq *%rax
movb %al, -0xc9(%rbp)
jmp 0x28509
movb -0xc9(%rbp), %al
testb $0x1, %al
jne 0x28419
jmp 0x28519
movq -0xa0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x32650
leaq -0x58(%rbp), %rdi
callq 0x326a0
movq -0x98(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
leaq -0x58(%rbp), %rdi
callq 0x326a0
movq -0x78(%rbp), %rdi
callq 0x75e0
nopw %cs:(%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::AssignmentExpression()
AST_PTR Parser::AssignmentExpression()
{
    int status=tokenStatus();
    try
    {
        AST_PTR expr=LeftHandSideExpression();
        if(isAssignmentOperator())
        {
            DEF_AST_RET(AssignmentExpression);
            ret->expr=move(expr);
            ret->assignOptr=Literal();
            ret->assignExpr=AssignmentExpression();
            RETURN_PTR;
        }
    }
    catch(Exception){}
    tokenStatus(status);
    return ConditionalExpression();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0xd8(%rbp)
movq %rdi, %rax
movq %rax, -0xd0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x279c0
movq -0xc8(%rbp), %rsi
movl %eax, -0x14(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x29670
jmp 0x29479
movq -0xc8(%rbp), %rdi
callq 0x27ea0
movb %al, -0xd9(%rbp)
jmp 0x2948d
movb -0xd9(%rbp), %al
testb $0x1, %al
jne 0x2949c
jmp 0x295b5
movl $0x20, %edi
callq 0x72c0
movq %rax, -0xe8(%rbp)
jmp 0x294af
movq -0xe8(%rbp), %rdi
callq 0x31080
movq -0xe8(%rbp), %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x310e0
movq -0xf0(%rbp), %rdi
callq 0x31110
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x20(%rbp), %rsi
callq 0x8ee0
movq -0xc8(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x292e0
jmp 0x29500
leaq -0x38(%rbp), %rdi
callq 0x31110
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x40(%rbp), %rsi
movq %rsi, -0xf8(%rbp)
callq 0x8ee0
movq -0xf8(%rbp), %rdi
callq 0x8f10
movq -0xc8(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x29430
jmp 0x2953e
leaq -0x38(%rbp), %rdi
callq 0x31110
movq %rax, %rdi
addq $0x18, %rdi
leaq -0x48(%rbp), %rsi
callq 0x8ee0
leaq -0x48(%rbp), %rdi
callq 0x8f10
movq -0xd8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x31130
movl $0x1, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x31180
jmp 0x295bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x295db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x295d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x31180
jmp 0x295d2
movl $0x0, -0x4c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x8f10
movl -0x4c(%rbp), %eax
testl %eax, %eax
je 0x295d0
jmp 0x295ce
jmp 0x29647
jmp 0x29625
leaq -0x20(%rbp), %rdi
callq 0x8f10
movl -0x2c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x29657
movq -0x28(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x73f0
movq %rax, %rsi
leaq -0xc0(%rbp), %rdi
callq 0x311e0
jmp 0x29608
movq -0x100(%rbp), %rdi
callq 0x7110
leaq -0xc0(%rbp), %rdi
callq 0x202e0
callq 0x7570
movq -0xc8(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x279e0
movq -0xd8(%rbp), %rdi
movq -0xc8(%rbp), %rsi
callq 0x29720
movq -0xd0(%rbp), %rax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x75e0
movq %rax, %rdi
callq 0x8f80
nopl (%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::Expression()
AST_PTR Parser::Expression()
{
    AST_PTR expr=AssignmentExpression();
    if(acceptEat(TOKEN_COMMA))
    {
        DEF_AST_RET(Expression);
        ret->nodes.push_back(move(expr));
        do ret->nodes.push_back(AssignmentExpression()); while(acceptEat(TOKEN_COMMA));
        RETURN_PTR;
    }
    else return expr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x68(%rbp)
movq %rdi, %rax
movq %rax, -0x60(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rsi
movq %rsi, -0x58(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x29430
movq -0x58(%rbp), %rdi
movl $0x2a, -0x1c(%rbp)
leaq -0x1c(%rbp), %rsi
callq 0x31240
movb %al, -0x49(%rbp)
jmp 0x2aa18
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0x2aa24
jmp 0x2ab26
movl $0x20, %edi
callq 0x72c0
movq %rax, -0x70(%rbp)
jmp 0x2aa34
movq -0x70(%rbp), %rdi
callq 0x32860
movq -0x70(%rbp), %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x328a0
movq -0x78(%rbp), %rdi
callq 0x328d0
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x18(%rbp), %rsi
callq 0x31320
jmp 0x2aa69
jmp 0x2aa6b
leaq -0x38(%rbp), %rdi
callq 0x328d0
movq -0x58(%rbp), %rsi
addq $0x8, %rax
movq %rax, -0x80(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x29430
jmp 0x2aa8b
movq -0x80(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x31320
jmp 0x2aa9a
leaq -0x40(%rbp), %rdi
callq 0x8f10
movq -0x58(%rbp), %rdi
movl $0x2a, -0x44(%rbp)
leaq -0x44(%rbp), %rsi
callq 0x31240
movb %al, -0x81(%rbp)
jmp 0x2aabf
movb -0x81(%rbp), %al
testb $0x1, %al
jne 0x2aa6b
jmp 0x2aacb
movq -0x68(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x328f0
movl $0x1, -0x48(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x32940
jmp 0x2ab3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2ab50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2ab1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x8f10
leaq -0x38(%rbp), %rdi
callq 0x32940
jmp 0x2ab50
movq -0x68(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x30f70
movl $0x1, -0x48(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x8f10
movq -0x60(%rbp), %rax
addq $0x90, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x8f10
movq -0x28(%rbp), %rdi
callq 0x75e0
nopw %cs:(%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::MemberPartExpression()
AST_PTR Parser::MemberPartExpression()
{
    if(!acceptEat(TOKEN_LEFT_SQUARE_BARCKET))return nullptr;
    DEF_AST_RET(MemberPartExpression);
    ret->expr=Expression();
    if(!acceptEat(TOKEN_RIGHT_SQUARE_BARCKET))PARSER_ERROR("excepted ']'");
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x78(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x68(%rbp)
movl $0x10, -0x14(%rbp)
leaq -0x14(%rbp), %rsi
callq 0x31240
xorb $-0x1, %al
testb $0x1, %al
jne 0x2abae
jmp 0x2abc0
movq -0x78(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x317d0
jmp 0x2ad5a
movl $0x10, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x80(%rbp)
callq 0x31810
movq -0x80(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x31850
movq -0x68(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x2a9d0
jmp 0x2abf2
leaq -0x20(%rbp), %rdi
callq 0x31880
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x28(%rbp), %rsi
movq %rsi, -0x90(%rbp)
callq 0x8ee0
movq -0x90(%rbp), %rdi
callq 0x8f10
movq -0x68(%rbp), %rdi
movl $0x11, -0x38(%rbp)
leaq -0x38(%rbp), %rsi
callq 0x31240
movb %al, -0x81(%rbp)
jmp 0x2ac3a
movb -0x81(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2ac4b
jmp 0x2ad37
movb $0x1, -0x5a(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x68(%rbp), %rdi
movq %rax, -0xa0(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x98(%rbp)
jmp 0x2ac74
leaq -0x59(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x75f0
movq -0xa8(%rbp), %rdx
leaq 0x2dd00(%rip), %rsi     # 0x58992
leaq -0x58(%rbp), %rdi
callq 0xf990
jmp 0x2ac9d
movq -0x98(%rbp), %rsi
movq -0xa0(%rbp), %rdi
leaq -0x58(%rbp), %rdx
callq 0xac90
jmp 0x2acb6
movq -0xa0(%rbp), %rdi
movb $0x0, -0x5a(%rbp)
leaq 0x5df38(%rip), %rsi     # 0x88c00
leaq -0xa9ef(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2ad70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2ad4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2ad21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2ad18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x71d0
leaq -0x59(%rbp), %rdi
callq 0x7310
testb $0x1, -0x5a(%rbp)
jne 0x2ad29
jmp 0x2ad35
movq -0xa0(%rbp), %rdi
callq 0x7230
jmp 0x2ad4f
movq -0x78(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x318a0
leaq -0x20(%rbp), %rdi
callq 0x318f0
jmp 0x2ad5a
leaq -0x20(%rbp), %rdi
callq 0x318f0
jmp 0x2ad67
movq -0x70(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x75e0
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::MemberPartIdentifer()
AST_PTR Parser::MemberPartIdentifer()
{
    if(!acceptEat(TOKEN_DOT))return nullptr;
    if(!accept(TOKEN_IDENTIFIER))PARSER_ERROR("excepted a identifier after '.'");
    DEF_AST_RET(MemberPartIdentifer);
    ret->identifer=Literal();
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x78(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x68(%rbp)
movl $0x2b, -0x14(%rbp)
leaq -0x14(%rbp), %rsi
callq 0x31240
xorb $-0x1, %al
testb $0x1, %al
jne 0x2adae
jmp 0x2adc0
movq -0x78(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x317d0
jmp 0x2af3c
movq -0x68(%rbp), %rdi
movl $0x2e, %esi
xorl %edx, %edx
callq 0x27960
testb $0x1, %al
jne 0x2aeb3
movb $0x1, -0x4a(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x68(%rbp), %rdi
movq %rax, -0x88(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x80(%rbp)
jmp 0x2adfe
leaq -0x49(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x75f0
movq -0x90(%rbp), %rdx
leaq 0x2db83(%rip), %rsi     # 0x5899f
leaq -0x48(%rbp), %rdi
callq 0xf990
jmp 0x2ae27
movq -0x80(%rbp), %rsi
movq -0x88(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0xac90
jmp 0x2ae3d
movq -0x88(%rbp), %rdi
movb $0x0, -0x4a(%rbp)
leaq 0x5ddb1(%rip), %rsi     # 0x88c00
leaq -0xab76(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2af52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2ae9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2ae91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x71d0
leaq -0x49(%rbp), %rdi
callq 0x7310
testb $0x1, -0x4a(%rbp)
jne 0x2aea2
jmp 0x2aeae
movq -0x88(%rbp), %rdi
callq 0x7230
jmp 0x2af49
movl $0x10, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x98(%rbp)
callq 0x31950
movq -0x98(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x31990
movq -0x68(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x292e0
jmp 0x2aeeb
leaq -0x58(%rbp), %rdi
callq 0x319c0
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x60(%rbp), %rsi
callq 0x8ee0
leaq -0x60(%rbp), %rdi
callq 0x8f10
movq -0x78(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x319e0
leaq -0x58(%rbp), %rdi
callq 0x31a30
jmp 0x2af3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x31a30
jmp 0x2af49
movq -0x70(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x75e0
nopw %cs:(%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::MemberExpressionPartList()
AST_PTR Parser::MemberExpressionPartList()
{
    DEF_AST_RET(MemberExpressionPartList);
    while(true)
    {
        AST_PTR part=MemberPartIdentifer();
        if(!part)part=MemberPartExpression();
        if(!part)break;
        ret->nodes.push_back(move(part));
    }
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x60(%rbp)
movq %rdi, %rax
movq %rax, -0x58(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movl $0x20, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x48(%rbp)
callq 0x31a90
movq -0x48(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x31ad0
jmp 0x2afa8
movq -0x50(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x2ad70
jmp 0x2afb7
leaq -0x20(%rbp), %rdi
callq 0x1d8d0
testb $0x1, %al
jne 0x2b013
movq -0x50(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x2ab70
jmp 0x2afd3
leaq -0x20(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x8ee0
leaq -0x38(%rbp), %rdi
callq 0x8f10
jmp 0x2b013
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2b08b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x8f10
jmp 0x2b08b
leaq -0x20(%rbp), %rdi
callq 0x1d8d0
testb $0x1, %al
jne 0x2b029
movl $0x3, -0x3c(%rbp)
jmp 0x2b04b
leaq -0x18(%rbp), %rdi
callq 0x31b00
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x20(%rbp), %rsi
callq 0x31320
jmp 0x2b044
movl $0x0, -0x3c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x8f10
movl -0x3c(%rbp), %eax
testl %eax, %eax
je 0x2b05f
jmp 0x2b05d
jmp 0x2b064
jmp 0x2afa6
movq -0x60(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x31b20
movl $0x1, -0x3c(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x31b70
movq -0x58(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x31b70
movq -0x28(%rbp), %rdi
callq 0x75e0
nopl (%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::MemberExpression()
AST_PTR Parser::MemberExpression()
{
    AST_PTR expr;
    if(accept("function"))expr=FunctionExpression();
    else expr=PrimaryExpression();
    if(accept(TOKEN_DOT)||accept(TOKEN_LEFT_SQUARE_BARCKET))
    {
        DEF_AST_RET(MemberExpression);
        ret->expr=move(expr);
        ret->exprPart=MemberExpressionPartList();
        RETURN_PTR;
    }
    else return expr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x98(%rbp)
movq %rdi, %rax
movq %rax, -0x90(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x8eb0
leaq -0x39(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x75f0
movq -0x80(%rbp), %rdx
leaq 0x2d8cf(%rip), %rsi     # 0x589bf
leaq -0x38(%rbp), %rdi
callq 0xf990
jmp 0x2b0fb
movq -0x88(%rbp), %rdi
leaq -0x38(%rbp), %rsi
xorl %edx, %edx
callq 0x27920
movb %al, -0x99(%rbp)
jmp 0x2b115
leaq -0x38(%rbp), %rdi
callq 0x71d0
leaq -0x39(%rbp), %rdi
callq 0x7310
movb -0x99(%rbp), %al
testb $0x1, %al
jne 0x2b133
jmp 0x2b19f
movq -0x88(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x2b320
jmp 0x2b145
leaq -0x18(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x8ee0
leaq -0x58(%rbp), %rdi
callq 0x8f10
jmp 0x2b1c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b180
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x71d0
leaq -0x39(%rbp), %rdi
callq 0x7310
jmp 0x2b307
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b307
movq -0x88(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x2a550
jmp 0x2b1b1
leaq -0x18(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x8ee0
leaq -0x60(%rbp), %rdi
callq 0x8f10
movq -0x88(%rbp), %rdi
movl $0x2b, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x9a(%rbp)
jmp 0x2b1e2
movb -0x9a(%rbp), %al
testb $0x1, %al
jne 0x2b218
jmp 0x2b1ee
movq -0x88(%rbp), %rdi
movl $0x10, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x9b(%rbp)
jmp 0x2b209
movb -0x9b(%rbp), %al
testb $0x1, %al
jne 0x2b218
jmp 0x2b2d7
movl $0x18, %edi
callq 0x72c0
movq %rax, -0xa8(%rbp)
jmp 0x2b22b
movq -0xa8(%rbp), %rdi
callq 0x31bd0
movq -0xa8(%rbp), %rsi
leaq -0x68(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x31c20
movq -0xb0(%rbp), %rdi
callq 0x31c50
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x18(%rbp), %rsi
callq 0x8ee0
movq -0x88(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x2af60
jmp 0x2b27c
leaq -0x68(%rbp), %rdi
callq 0x31c50
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x70(%rbp), %rsi
callq 0x8ee0
leaq -0x70(%rbp), %rdi
callq 0x8f10
movq -0x98(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x31c70
movl $0x1, -0x74(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x31cc0
jmp 0x2b2ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x31cc0
jmp 0x2b307
movq -0x98(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x30f70
movl $0x1, -0x74(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x8f10
movq -0x90(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x8f10
movq -0x48(%rbp), %rdi
callq 0x75e0
nopl (%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::CallExpressionPartList()
AST_PTR Parser::CallExpressionPartList()
{
    DEF_AST_RET(CallExpressionPartList);
    while(true)
    {
        AST_PTR part=MemberPartIdentifer();
        if(!part)part=MemberPartExpression();
        if(!part)part=ArgumentList();
        if(!part)break;
        ret->nodes.push_back(move(part));
    }
    if(ret->nodes.size()==0)return nullptr;
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x68(%rbp)
movq %rdi, %rax
movq %rax, -0x60(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movl $0x20, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x50(%rbp)
callq 0x31f30
movq -0x50(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x31f70
jmp 0x2ba38
movq -0x58(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x2ad70
jmp 0x2ba47
leaq -0x20(%rbp), %rdi
callq 0x1d8d0
testb $0x1, %al
jne 0x2baa6
movq -0x58(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x2ab70
jmp 0x2ba63
leaq -0x20(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x8ee0
leaq -0x38(%rbp), %rdi
callq 0x8f10
jmp 0x2baa6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2bb81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x8f10
jmp 0x2bb81
leaq -0x20(%rbp), %rdi
callq 0x1d8d0
testb $0x1, %al
jne 0x2bad8
movq -0x58(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x2b770
jmp 0x2bac2
leaq -0x20(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x8ee0
leaq -0x40(%rbp), %rdi
callq 0x8f10
leaq -0x20(%rbp), %rdi
callq 0x1d8d0
testb $0x1, %al
jne 0x2baee
movl $0x3, -0x44(%rbp)
jmp 0x2bb10
leaq -0x18(%rbp), %rdi
callq 0x31fa0
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x20(%rbp), %rsi
callq 0x31320
jmp 0x2bb09
movl $0x0, -0x44(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x8f10
movl -0x44(%rbp), %eax
testl %eax, %eax
je 0x2bb24
jmp 0x2bb22
jmp 0x2bb29
jmp 0x2ba36
leaq -0x18(%rbp), %rdi
callq 0x31fa0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d7d0
cmpq $0x0, %rax
jne 0x2bb5a
movq -0x68(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x317d0
movl $0x1, -0x44(%rbp)
jmp 0x2bb6e
movq -0x68(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x31fc0
movl $0x1, -0x44(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x32010
movq -0x60(%rbp), %rax
addq $0x70, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x32010
movq -0x28(%rbp), %rdi
callq 0x75e0
nopw %cs:(%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::CallExpression(std::unique_ptr<AST, std::default_delete<AST>>&&)
AST_PTR Parser::CallExpression(AST_PTR &&m)
{
    DEF_AST_RET(CallExpression);
    ret->expr=move(m);
    if(!accept(TOKEN_LEFT_PAREN))PARSER_ERROR("excepted '('");
    ret->arguments=ArgumentList();
    ret->exprPart=CallExpressionPartList();
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0xa0(%rbp)
movq %rdi, %rax
movq %rax, -0x98(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0x20, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x90(%rbp)
callq 0x32070
movq -0x90(%rbp), %rsi
leaq -0x20(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x320d0
movq -0x88(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x80(%rbp)
callq 0x32100
movq -0x80(%rbp), %rsi
movq %rax, %rdi
addq $0x8, %rdi
callq 0x8ee0
movq -0x78(%rbp), %rdi
movl $0xe, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x69(%rbp)
jmp 0x2bc39
movb -0x69(%rbp), %al
testb $0x1, %al
jne 0x2bd38
jmp 0x2bc46
movb $0x1, -0x52(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x78(%rbp), %rdi
movq %rax, -0xb0(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0xa8(%rbp)
jmp 0x2bc6f
leaq -0x51(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x75f0
movq -0xb8(%rbp), %rdx
leaq 0x2cd48(%rip), %rsi     # 0x589d5
leaq -0x50(%rbp), %rdi
callq 0xf990
jmp 0x2bc98
movq -0xa8(%rbp), %rsi
movq -0xb0(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0xac90
jmp 0x2bcb1
movq -0xb0(%rbp), %rdi
movb $0x0, -0x52(%rbp)
leaq 0x5cf3d(%rip), %rsi     # 0x88c00
leaq -0xb9ea(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2bddf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2bdcd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2bd1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2bd16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x71d0
leaq -0x51(%rbp), %rdi
callq 0x7310
testb $0x1, -0x52(%rbp)
jne 0x2bd27
jmp 0x2bd33
movq -0xb0(%rbp), %rdi
callq 0x7230
jmp 0x2bdcd
movq -0x78(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x2b770
jmp 0x2bd47
leaq -0x20(%rbp), %rdi
callq 0x32100
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x60(%rbp), %rsi
movq %rsi, -0xc0(%rbp)
callq 0x8ee0
movq -0xc0(%rbp), %rdi
callq 0x8f10
movq -0x78(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x2b9f0
jmp 0x2bd82
leaq -0x20(%rbp), %rdi
callq 0x32100
movq %rax, %rdi
addq $0x18, %rdi
leaq -0x68(%rbp), %rsi
callq 0x8ee0
leaq -0x68(%rbp), %rdi
callq 0x8f10
movq -0xa0(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x32120
leaq -0x20(%rbp), %rdi
callq 0x32170
movq -0x98(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
leaq -0x20(%rbp), %rdi
callq 0x32170
movq -0x28(%rbp), %rdi
callq 0x75e0
nop
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::PostfixExpression()
AST_PTR Parser::PostfixExpression()
{
    AST_PTR expr=LeftHandSideExpression();
    if(accept(TOKEN_INCREMENT)||accept(TOKEN_DECREMENT))
    {
        DEF_AST_RET(PostfixExpression);
        ret->expr=move(expr);
        ret->optr=Literal();
        RETURN_PTR;
    }
    else return expr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x58(%rbp)
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rsi
movq %rsi, -0x48(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x29670
movq -0x48(%rbp), %rdi
movl $0x2, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x3d(%rbp)
jmp 0x2bea1
movb -0x3d(%rbp), %al
testb $0x1, %al
jne 0x2becb
jmp 0x2beaa
movq -0x48(%rbp), %rdi
movl $0x5, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x59(%rbp)
jmp 0x2bebf
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0x2becb
jmp 0x2bf83
movl $0x18, %edi
callq 0x72c0
movq %rax, -0x68(%rbp)
jmp 0x2bedb
movq -0x68(%rbp), %rdi
callq 0x321d0
movq -0x68(%rbp), %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0x32220
movq -0x70(%rbp), %rdi
callq 0x32250
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x18(%rbp), %rsi
callq 0x8ee0
movq -0x48(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x292e0
jmp 0x2bf1d
leaq -0x30(%rbp), %rdi
callq 0x32250
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x38(%rbp), %rsi
callq 0x8ee0
leaq -0x38(%rbp), %rdi
callq 0x8f10
movq -0x58(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x32270
movl $0x1, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x322c0
jmp 0x2bf97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2bfaa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x322c0
jmp 0x2bfaa
movq -0x58(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x30f70
movl $0x1, -0x3c(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x8f10
movq -0x50(%rbp), %rax
addq $0x70, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x8f10
movq -0x20(%rbp), %rdi
callq 0x75e0
nopl (%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::Operation(std::unique_ptr<AST, std::default_delete<AST>> (Parser::*)())
AST_PTR Parser::Operation(PARSER_AST_FUNC ast_func)
{
    DEF_AST_RET(BinaryOperationExpression);
    ret->optr=Literal();
    ret->expr=(this->*ast_func)();
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x78(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq %rdi, -0x8(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x10(%rbp)
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rsi, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movl $0x18, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x68(%rbp)
callq 0x32470
movq -0x68(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x324c0
movq -0x60(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x292e0
jmp 0x2c030
leaq -0x38(%rbp), %rdi
callq 0x324f0
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x40(%rbp), %rsi
movq %rsi, -0x90(%rbp)
callq 0x8ee0
movq -0x90(%rbp), %rdi
callq 0x8f10
movq -0x60(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x28(%rbp), %rdx
addq %rdx, %rcx
movq %rcx, -0x80(%rbp)
andq $0x1, %rax
cmpq $0x0, %rax
je 0x2c0b6
movq -0x88(%rbp), %rcx
movq -0x80(%rbp), %rax
movq (%rax), %rax
subq $0x1, %rcx
movq (%rax,%rcx), %rax
movq %rax, -0x98(%rbp)
jmp 0x2c0c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x32560
jmp 0x2c11c
movq -0x88(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x80(%rbp), %rsi
movq -0x98(%rbp), %rax
leaq -0x58(%rbp), %rdi
callq *%rax
jmp 0x2c0d7
leaq -0x38(%rbp), %rdi
callq 0x324f0
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x58(%rbp), %rsi
callq 0x8ee0
leaq -0x58(%rbp), %rdi
callq 0x8f10
movq -0x78(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x32510
leaq -0x38(%rbp), %rdi
callq 0x32560
movq -0x70(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x75e0
nopw %cs:(%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::Block()
AST_PTR Parser::Block()
{
    if(!acceptEat(TOKEN_LEFT_BARCKET))PARSER_ERROR("expected a '{'");
    auto stmtlist=StatementList();
    DEF_AST_RET(Block);
    ret->nodes.swap(((AST_NAME(StatementList)*)stmtlist.get())->nodes);
    if(!acceptEat(TOKEN_RIGHT_BARCKET))Statement();
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x88(%rbp)
movq %rdi, %rax
movq %rax, -0x80(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x78(%rbp)
movl $0x12, -0x14(%rbp)
leaq -0x14(%rbp), %rsi
callq 0x31240
xorb $-0x1, %al
testb $0x1, %al
jne 0x2c174
jmp 0x2c255
movb $0x1, -0x4a(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x78(%rbp), %rdi
movq %rax, -0x98(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x90(%rbp)
jmp 0x2c19d
leaq -0x49(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x75f0
movq -0xa0(%rbp), %rdx
leaq 0x2c84f(%rip), %rsi     # 0x58a0a
leaq -0x48(%rbp), %rdi
callq 0xf990
jmp 0x2c1c6
movq -0x90(%rbp), %rsi
movq -0x98(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0xac90
jmp 0x2c1df
movq -0x98(%rbp), %rdi
movb $0x0, -0x4a(%rbp)
leaq 0x5ca0f(%rip), %rsi     # 0x88c00
leaq -0xbf18(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2c375
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2c23c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2c233
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x71d0
leaq -0x49(%rbp), %rdi
callq 0x7310
testb $0x1, -0x4a(%rbp)
jne 0x2c244
jmp 0x2c250
movq -0x98(%rbp), %rdi
callq 0x7230
jmp 0x2c36c
movq -0x78(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x2c380
movl $0x20, %edi
callq 0x72c0
movq %rax, -0xa8(%rbp)
jmp 0x2c275
movq -0xa8(%rbp), %rdi
callq 0x329a0
movq -0xa8(%rbp), %rsi
leaq -0x60(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x329e0
movq -0xc0(%rbp), %rdi
callq 0x32a10
addq $0x8, %rax
movq %rax, -0xb8(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xabd0
movq -0xb8(%rbp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0x32a30
movq -0x78(%rbp), %rdi
movl $0x13, -0x64(%rbp)
leaq -0x64(%rbp), %rsi
callq 0x31240
movb %al, -0xa9(%rbp)
jmp 0x2c2e7
movb -0xa9(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2c2f5
jmp 0x2c334
movq -0x78(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x2c540
jmp 0x2c304
leaq -0x70(%rbp), %rdi
callq 0x8f10
jmp 0x2c334
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2c363
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x32ae0
jmp 0x2c363
movq -0x88(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x32a90
leaq -0x60(%rbp), %rdi
callq 0x32ae0
leaq -0x58(%rbp), %rdi
callq 0x8f10
movq -0x80(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
leaq -0x58(%rbp), %rdi
callq 0x8f10
movq -0x20(%rbp), %rdi
callq 0x75e0
nopw %cs:(%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::StatementList()
AST_PTR Parser::StatementList()
{
    DEF_AST_RET(StatementList);
    int status;
    while(!accept(TOKEN_EOF))
    {
        status=tokenStatus();
        try
        {
            ret->nodes.push_back(Statement());
        }
        catch(Exception)
        {
            tokenStatus(status);
            break;
        }
    }
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0xc8(%rbp)
movq %rdi, %rax
movq %rax, -0xc0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xb8(%rbp)
movl $0x20, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0xb0(%rbp)
callq 0x34620
movq -0xb0(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x34660
movq -0xb8(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0xc9(%rbp)
jmp 0x2c3f3
movb -0xc9(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2c404
jmp 0x2c4ef
movq -0xb8(%rbp), %rdi
callq 0x279c0
movl %eax, -0x1c(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x34690
movq -0xb8(%rbp), %rsi
addq $0x8, %rax
movq %rax, -0xd8(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x2c540
jmp 0x2c439
movq -0xd8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x31320
jmp 0x2c44b
leaq -0x38(%rbp), %rdi
callq 0x8f10
jmp 0x2c4ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2c518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2c48d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x8f10
movl -0x2c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x2c518
movq -0x28(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x73f0
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
callq 0x311e0
jmp 0x2c4ba
movq -0xe0(%rbp), %rdi
callq 0x7110
movq -0xb8(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x279e0
leaq -0xa8(%rbp), %rdi
callq 0x202e0
callq 0x7570
jmp 0x2c4e8
jmp 0x2c4ef
jmp 0x2c3d8
movq -0xc8(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x346b0
leaq -0x18(%rbp), %rdi
callq 0x34700
movq -0xc0(%rbp), %rax
addq $0xe0, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x34700
movq -0x28(%rbp), %rdi
callq 0x75e0
movq %rax, %rdi
callq 0x8f80
nopw %cs:(%rax,%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::VariableDeclaration()
AST_PTR Parser::VariableDeclaration()
{
    
    if(!accept(TOKEN_IDENTIFIER))PARSER_ERROR("expected a identifier");
    DEF_AST_RET(VariableDeclaration);
    ret->identifier=Literal();
    if(acceptEat(TOKEN_ASSIGN))ret->assignExpr=AssignmentExpression();
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x80(%rbp)
movq %rdi, %rax
movq %rax, -0x78(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x70(%rbp)
movl $0x2e, %esi
xorl %edx, %edx
callq 0x27960
testb $0x1, %al
jne 0x2cdbb
movb $0x1, -0x42(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x70(%rbp), %rdi
movq %rax, -0x90(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x88(%rbp)
jmp 0x2cd03
leaq -0x41(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x75f0
movq -0x98(%rbp), %rdx
leaq 0x2bcf8(%rip), %rsi     # 0x58a19
leaq -0x40(%rbp), %rdi
callq 0xf990
jmp 0x2cd2c
movq -0x88(%rbp), %rsi
movq -0x90(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0xac90
jmp 0x2cd45
movq -0x90(%rbp), %rdi
movb $0x0, -0x42(%rbp)
leaq 0x5bea9(%rip), %rsi     # 0x88c00
leaq -0xca7e(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2cebd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2cda2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2cd99
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 0x2cdaa
jmp 0x2cdb6
movq -0x90(%rbp), %rdi
callq 0x7230
jmp 0x2ceb4
movl $0x18, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0xa0(%rbp)
callq 0x32b40
movq -0xa0(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x32b90
movq -0x70(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x292e0
jmp 0x2cdf3
leaq -0x50(%rbp), %rdi
callq 0x32bc0
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x58(%rbp), %rsi
movq %rsi, -0xb0(%rbp)
callq 0x8ee0
movq -0xb0(%rbp), %rdi
callq 0x8f10
movq -0x70(%rbp), %rdi
movl $0x20, -0x5c(%rbp)
leaq -0x5c(%rbp), %rsi
callq 0x31240
movb %al, -0xa1(%rbp)
jmp 0x2ce3b
movb -0xa1(%rbp), %al
testb $0x1, %al
jne 0x2ce47
jmp 0x2ce91
movq -0x70(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x29430
jmp 0x2ce56
leaq -0x50(%rbp), %rdi
callq 0x32bc0
movq %rax, %rdi
addq $0x10, %rdi
leaq -0x68(%rbp), %rsi
callq 0x8ee0
leaq -0x68(%rbp), %rdi
callq 0x8f10
jmp 0x2ce91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x32c30
jmp 0x2ceb4
movq -0x80(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x32be0
leaq -0x50(%rbp), %rdi
callq 0x32c30
movq -0x78(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x75e0
nopl (%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::ExpressionStatement()
AST_PTR Parser::ExpressionStatement()
{
    DEF_AST_RET(ExpressionStatement);
    ret->expr=Expression();
    if(!acceptEat(TOKEN_SEMICOLON))PARSER_ERROR("excepted a ';'");
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x78(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movl $0x10, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x68(%rbp)
callq 0x32ea0
movq -0x68(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x32ee0
movq -0x60(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x2a9d0
jmp 0x2d258
leaq -0x18(%rbp), %rdi
callq 0x32f10
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x20(%rbp), %rsi
movq %rsi, -0x88(%rbp)
callq 0x8ee0
movq -0x88(%rbp), %rdi
callq 0x8f10
movq -0x60(%rbp), %rdi
movl $0x29, -0x30(%rbp)
leaq -0x30(%rbp), %rsi
callq 0x31240
movb %al, -0x79(%rbp)
jmp 0x2d29d
movb -0x79(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2d2ab
jmp 0x2d397
movb $0x1, -0x52(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0x60(%rbp), %rdi
movq %rax, -0x98(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x90(%rbp)
jmp 0x2d2d4
leaq -0x51(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x75f0
movq -0xa0(%rbp), %rdx
leaq 0x2b761(%rip), %rsi     # 0x58a53
leaq -0x50(%rbp), %rdi
callq 0xf990
jmp 0x2d2fd
movq -0x90(%rbp), %rsi
movq -0x98(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0xac90
jmp 0x2d316
movq -0x98(%rbp), %rdi
movb $0x0, -0x52(%rbp)
leaq 0x5b8d8(%rip), %rsi     # 0x88c00
leaq -0xd04f(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x2d3cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2d3ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2d381
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x2d378
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x71d0
leaq -0x51(%rbp), %rdi
callq 0x7310
testb $0x1, -0x52(%rbp)
jne 0x2d389
jmp 0x2d395
movq -0x98(%rbp), %rdi
callq 0x7230
jmp 0x2d3ba
movq -0x78(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x32f30
leaq -0x18(%rbp), %rdi
callq 0x32f80
movq -0x70(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x32f80
movq -0x28(%rbp), %rdi
callq 0x75e0
nopl (%rax)
// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::Program()
AST_PTR Parser::Program()
{
    DEF_AST_RET(Program);
    ret->stmtList=StatementList();
    if(accept(TOKEN_EOF))RETURN_PTR;
    if(accept(TOKEN_ERROR))PARSER_ERROR(lookHead().msg);
    Statement();
    return nullptr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x58(%rbp)
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movl $0x10, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0x48(%rbp)
callq 0x34760
movq -0x48(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x347a0
movq -0x40(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x2c380
jmp 0x30bc8
leaq -0x18(%rbp), %rdi
callq 0x347d0
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x20(%rbp), %rsi
movq %rsi, -0x68(%rbp)
callq 0x8ee0
movq -0x68(%rbp), %rdi
callq 0x8f10
movq -0x40(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0x59(%rbp)
jmp 0x30c03
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0x30c0c
jmp 0x30c36
movq -0x58(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x347f0
movl $0x1, -0x30(%rbp)
jmp 0x30cfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x30d10
movq -0x40(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x27960
movb %al, -0x69(%rbp)
jmp 0x30c48
movb -0x69(%rbp), %al
testb $0x1, %al
jne 0x30c51
jmp 0x30cce
movl $0x70, %edi
callq 0x7180
movq -0x40(%rbp), %rdi
movq %rax, -0x80(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x78(%rbp)
jmp 0x30c70
movq -0x40(%rbp), %rdi
xorl %esi, %esi
callq 0x277f0
movq %rax, -0x88(%rbp)
jmp 0x30c84
movq -0x78(%rbp), %rsi
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %rdx
addq $0x30, %rdx
callq 0xac90
jmp 0x30c9e
movq -0x80(%rbp), %rdi
leaq 0x57f57(%rip), %rsi     # 0x88c00
leaq -0x109d0(%rip), %rdx    # 0x202e0
callq 0x75c0
jmp 0x30d22
movq -0x80(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x7230
jmp 0x30d10
movq -0x40(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x2c540
jmp 0x30cdd
leaq -0x38(%rbp), %rdi
callq 0x8f10
movq -0x58(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x317d0
movl $0x1, -0x30(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x34840
movq -0x50(%rbp), %rax
addq $0x90, %rsp
popq %rbp
retq
leaq -0x18(%rbp), %rdi
callq 0x34840
movq -0x28(%rbp), %rdi
callq 0x75e0
nopw %cs:(%rax,%rax)