// File: AndreyVV-100[P]GachiLang/Backend/Backend.cpp
// Function: PrintLR(Elf*, element*, Stack*)
bool PrintLR    (Elf* elf, element* el, Stack* vars)
{
    print_ass;

    if (el->type == LR)
    {
        if (el->left)
            TryPrint (PrintLR, left);
        if (el->right)
            TryPrint (PrintLR, right);
        return 0;
    }

    elf->xmm_counter = 0;

    switch (el->type)
    {
        case EQUAL:
            return PrintEqual (elf, el, vars);
        case CALL:
            return PrintCall  (elf, el, vars);
        case RET:
            return PrintRet   (elf, el, vars);
        case IF:
        case WHILE:
            return PrintCond  (elf, el, vars);
        default:
            return 1;
    }

    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x260d
jmp 0x262c
leaq 0x3d48(%rip), %rdi      # 0x635c
leaq 0x3afb(%rip), %rsi      # 0x6116
movl $0x1b7, %edx            # imm = 0x1B7
leaq 0x4043(%rip), %rcx      # 0x666a
callq 0x1080
cmpq $0x0, -0x18(%rbp)
je 0x2635
jmp 0x2654
leaq 0x3ec1(%rip), %rdi      # 0x64fd
leaq 0x3ad3(%rip), %rsi      # 0x6116
movl $0x1b7, %edx            # imm = 0x1B7
leaq 0x401b(%rip), %rcx      # 0x666a
callq 0x1080
cmpq $0x0, -0x20(%rbp)
je 0x265d
jmp 0x267c
leaq 0x3f05(%rip), %rdi      # 0x6569
leaq 0x3aab(%rip), %rsi      # 0x6116
movl $0x1b7, %edx            # imm = 0x1B7
leaq 0x3ff3(%rip), %rcx      # 0x666a
callq 0x1080
movq -0x18(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x275c
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x26ee
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x20(%rbp), %rdx
callq 0x25f0
testb $0x1, %al
jne 0x26af
jmp 0x26ec
leaq 0x3e6b(%rip), %rdi      # 0x6521
leaq 0x3fad(%rip), %rsi      # 0x666a
movl $0x1bc, %edx            # imm = 0x1BC
movb $0x0, %al
callq 0x1040
movq -0x18(%rbp), %rsi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0x3e6a(%rip), %rdi      # 0x6546
movb $0x0, %al
callq 0x1040
movb $0x1, -0x1(%rbp)
jmp 0x27f0
jmp 0x26ee
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2753
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x20(%rbp), %rdx
callq 0x25f0
testb $0x1, %al
jne 0x2714
jmp 0x2751
leaq 0x3e06(%rip), %rdi      # 0x6521
leaq 0x3f48(%rip), %rsi      # 0x666a
movl $0x1be, %edx            # imm = 0x1BE
movb $0x0, %al
callq 0x1040
movq -0x18(%rbp), %rsi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0x3e05(%rip), %rdi      # 0x6546
movb $0x0, %al
callq 0x1040
movb $0x1, -0x1(%rbp)
jmp 0x27f0
jmp 0x2753
movb $0x0, -0x1(%rbp)
jmp 0x27f0
movq -0x10(%rbp), %rax
movb $0x0, 0x60(%rax)
movq -0x18(%rbp), %rax
movl (%rax), %eax
addl $-0xa, %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0x4, %eax
ja 0x27ec
movq -0x28(%rbp), %rax
leaq 0x3885(%rip), %rcx      # 0x6008
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x28d0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x27f0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x2a40
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x27f0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x2c50
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x27f0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x2d70
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x27f0
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)