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

    element* el_result = nullptr;

    #define TryGet(func) el_result = func (el_now);         \
                         if (el_result)                     \
                         {                                  \
                             check_parse (el_result);       \
                             require (LR);                  \
                             (*el_now)->left = el_result;   \
                             el_result = *el_now;           \
                             next;                          \
                             return el_result;              \
                         }

    TryGet (GetArith);
    TryGet (GetCall);
    TryGet (GetReturn);

    #undef TryGet
    return GetCond (el_now);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x2635
jmp 0x2654
leaq 0x3bff(%rip), %rdi      # 0x623b
leaq 0x39e2(%rip), %rsi      # 0x6025
movl $0x165, %edx            # imm = 0x165
leaq 0x3c6f(%rip), %rcx      # 0x62be
callq 0x1090
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x2660
jmp 0x267f
leaq 0x3bd3(%rip), %rdi      # 0x623a
leaq 0x39b7(%rip), %rsi      # 0x6025
movl $0x165, %edx            # imm = 0x165
leaq 0x3c44(%rip), %rcx      # 0x62be
callq 0x1090
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpl $0x9, (%rax)
jne 0x2699
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x18(%rax)
jne 0x26df
leaq 0x3ba2(%rip), %rdi      # 0x6242
leaq 0x3c17(%rip), %rsi      # 0x62be
movl $0x166, %edx            # imm = 0x166
movb $0x0, %al
callq 0x1040
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rsi
leaq 0x3ba4(%rip), %rdi      # 0x6269
movb $0x0, %al
callq 0x1040
leaq 0x6a7d(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2934
movq $0x0, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2940
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x27a9
movq -0x18(%rbp), %rax
leaq 0x6a46(%rip), %rcx      # 0x9150
cmpq (%rcx), %rax
jne 0x2722
leaq 0x6a3a(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpl $0x3, (%rax)
je 0x2774
leaq 0x3b0d(%rip), %rdi      # 0x6242
leaq 0x3b82(%rip), %rsi      # 0x62be
movl $0x175, %edx            # imm = 0x175
movb $0x0, %al
callq 0x1040
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rsi
leaq 0x3b0f(%rip), %rdi      # 0x6269
movb $0x0, %al
callq 0x1040
leaq 0x69e8(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
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
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x10(%rbp), %rdi
callq 0x2b20
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x286b
movq -0x18(%rbp), %rax
leaq 0x6984(%rip), %rcx      # 0x9150
cmpq (%rcx), %rax
jne 0x27e4
leaq 0x6978(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpl $0x3, (%rax)
je 0x2836
leaq 0x3a4b(%rip), %rdi      # 0x6242
leaq 0x3ac0(%rip), %rsi      # 0x62be
movl $0x176, %edx            # imm = 0x176
movb $0x0, %al
callq 0x1040
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rsi
leaq 0x3a4d(%rip), %rdi      # 0x6269
movb $0x0, %al
callq 0x1040
leaq 0x6926(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
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
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x10(%rbp), %rdi
callq 0x2c60
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x2927
movq -0x18(%rbp), %rax
leaq 0x68c2(%rip), %rcx      # 0x9150
cmpq (%rcx), %rax
jne 0x28a6
leaq 0x68b6(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpl $0x3, (%rax)
je 0x28f5
leaq 0x3989(%rip), %rdi      # 0x6242
leaq 0x39fe(%rip), %rsi      # 0x62be
movl $0x177, %edx            # imm = 0x177
movb $0x0, %al
callq 0x1040
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rsi
leaq 0x398b(%rip), %rdi      # 0x6269
movb $0x0, %al
callq 0x1040
leaq 0x6864(%rip), %rax      # 0x9150
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
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
movq %rax, -0x8(%rbp)
jmp 0x2934
movq -0x10(%rbp), %rdi
callq 0x2dc0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nop