// File: AndreyVV-100[P]GachiLang/Frontend/Frontend.cpp
// Function: GetP(element**)
element* GetP         (element** el_now)
{
    parse_ass;

    element* el_result = PARSE_ERR;

    switch ((*el_now)->type)
    {
        case ARITH:
            if (strcmp ("(", (*el_now)->ind))
                require_exit;

            next;
            el_result = GetE (el_now);

            if (strcmp (")", (*el_now)->ind))
                require_exit;
            next;
            break;

        case IND:
            el_result = *el_now;
            next;
            el_result->type = VAR;
            break;

        case NUM:
            el_result = *el_now;
            next;
            break;

        default:
            return PARSE_ERR;
    }

    return el_result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x3835
jmp 0x3854
leaq 0x29ff(%rip), %rdi      # 0x623b
leaq 0x27e2(%rip), %rsi      # 0x6025
movl $0x27b, %edx            # imm = 0x27B
leaq 0x2ba4(%rip), %rcx      # 0x63f3
callq 0x1090
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x3860
jmp 0x387f
leaq 0x29d3(%rip), %rdi      # 0x623a
leaq 0x27b7(%rip), %rsi      # 0x6025
movl $0x27b, %edx            # imm = 0x27B
leaq 0x2b79(%rip), %rcx      # 0x63f3
callq 0x1090
leaq 0x58ca(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl (%rax), %eax
movl %eax, -0x1c(%rbp)
subl $0x6, %eax
je 0x38bf
jmp 0x38a0
movl -0x1c(%rbp), %eax
subl $0x7, %eax
je 0x39d0
jmp 0x38ae
movl -0x1c(%rbp), %eax
subl $0x9, %eax
je 0x39ab
jmp 0x39eb
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rsi
leaq 0x2b3c(%rip), %rdi      # 0x640d
callq 0x1140
cmpl $0x0, %eax
je 0x3921
leaq 0x2960(%rip), %rdi      # 0x6242
leaq 0x2b0a(%rip), %rsi      # 0x63f3
movl $0x283, %edx            # imm = 0x283
movb $0x0, %al
callq 0x1040
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rsi
leaq 0x2962(%rip), %rdi      # 0x6269
movb $0x0, %al
callq 0x1040
leaq 0x583b(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x3a03
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x30, %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rdi
callq 0x3130
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rsi
leaq 0x2e44(%rip), %rdi      # 0x6792
callq 0x1140
cmpl $0x0, %eax
je 0x399b
leaq 0x28e3(%rip), %rdi      # 0x6242
leaq 0x2a8d(%rip), %rsi      # 0x63f3
movl $0x289, %edx            # imm = 0x289
movb $0x0, %al
callq 0x1040
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rsi
leaq 0x28e5(%rip), %rdi      # 0x6269
movb $0x0, %al
callq 0x1040
leaq 0x57be(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x3a03
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x30, %rcx
movq %rcx, (%rax)
jmp 0x39fb
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x30, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
movl $0x8, (%rax)
jmp 0x39fb
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
addq $0x30, %rcx
movq %rcx, (%rax)
jmp 0x39fb
leaq 0x575e(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x3a03
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)