// File: /workspace/github_cpp_makefile_star2_O3/kelwinfc[P]ci4721-Fernandez-Gyomrey/src/AST.cpp
// Function: AST_op::AST_op(AST_expression*, tokenId*, AST_expression*)
AST_op::AST_op(AST_expression* l, tokenId* o, AST_expression* r){
    
    is_constant = false;
    type = UNDEFINED;
    
    line = l->line;
    column = l->column;
    
    if ( o->ident.compare("+") == 0 ){
        oper_type = PLUS;
    } else if ( o->ident.compare("-") == 0 ){
        oper_type = MINUS;
    } else if ( o->ident.compare("*") == 0 ){
        oper_type = PROD;
    } else if ( o->ident.compare("/") == 0 ){
        oper_type = DIV;
    } else if ( o->ident.compare("%") == 0 ){
        oper_type = MOD;
    } else if ( o->ident.compare("&&") == 0 ){
        oper_type = AND;
    } else if ( o->ident.compare("||") == 0 ){
        oper_type = OR;
    } else if ( o->ident.compare("==>") == 0 ){
        oper_type = IMP;
    } else if ( o->ident.compare("<==") == 0 ){
        oper_type = CONSEQ;
    } else if ( o->ident.compare("==") == 0 ){
        oper_type = EQ;
    } else if ( o->ident.compare("!=") == 0 ){
        oper_type = UNEQ;
    } else if ( o->ident.compare("<") == 0 ){
        oper_type = LESS;
    } else if ( o->ident.compare("<=") == 0 ){
        oper_type = LESS_EQ;
    } else if ( o->ident.compare(">") == 0 ){
        oper_type = GREAT;
    } else if ( o->ident.compare(">=") == 0 ){
        oper_type = GREAT_EQ;
    } else {
        throw "Error de implementación en identificación de operador de expresión binaria";
    }
    
    line_op = o->line;
    column_op = o->column;
    delete o;
    
    left = l;
    right = r;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r14
movq %rdx, %r12
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x18(%rdi), %rax
movq %rax, 0x20(%rdi)
movq %rax, 0x18(%rdi)
xorl %ebp, %ebp
movq %rbp, 0x28(%rdi)
leaq 0x30(%rdi), %rax
movq %rax, 0x38(%rdi)
movq %rax, 0x30(%rdi)
movq %rbp, 0x40(%rdi)
leaq 0x29a68(%rip), %rax     # 0x3dfe0
movq %rax, (%rdi)
movb $0x0, 0x14(%rdi)
movl $0x0, 0x10(%rdi)
movq 0x8(%rsi), %rax
movq %rax, 0x8(%rdi)
leaq 0x8(%rdx), %r13
leaq 0x18fd2(%rip), %rsi     # 0x2d56b
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x1476a
leaq 0x1b169(%rip), %rsi     # 0x2f719
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14711
leaq 0x1b11b(%rip), %rsi     # 0x2f6e2
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14718
leaq 0x18f8f(%rip), %rsi     # 0x2d56d
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x1471f
leaq 0x18f7a(%rip), %rsi     # 0x2d56f
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14726
leaq 0x18f65(%rip), %rsi     # 0x2d571
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x1472d
leaq 0x18f51(%rip), %rsi     # 0x2d574
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14734
leaq 0x18f3d(%rip), %rsi     # 0x2d577
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x1473b
leaq 0x18f2a(%rip), %rsi     # 0x2d57b
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14742
leaq 0x18f14(%rip), %rsi     # 0x2d57c
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14749
leaq 0x18f00(%rip), %rsi     # 0x2d57f
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14750
leaq 0x18eec(%rip), %rsi     # 0x2d582
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14757
leaq 0x18ed7(%rip), %rsi     # 0x2d584
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x1475e
leaq 0x1ac9f(%rip), %rsi     # 0x2f363
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14765
leaq 0x18eac(%rip), %rsi     # 0x2d587
movq %r13, %rdi
callq 0x60d0
movl $0xe, %ebp
testl %eax, %eax
je 0x1476a
movl $0x8, %edi
callq 0x6150
leaq 0x1a99c(%rip), %rcx     # 0x2f099
movq %rcx, (%rax)
movq 0x2a899(%rip), %rsi     # 0x3efa0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6530
movl $0x1, %ebp
jmp 0x1476a
movl $0x2, %ebp
jmp 0x1476a
movl $0x3, %ebp
jmp 0x1476a
movl $0x4, %ebp
jmp 0x1476a
movl $0x5, %ebp
jmp 0x1476a
movl $0x6, %ebp
jmp 0x1476a
movl $0x7, %ebp
jmp 0x1476a
movl $0x8, %ebp
jmp 0x1476a
movl $0x9, %ebp
jmp 0x1476a
movl $0xa, %ebp
jmp 0x1476a
movl $0xb, %ebp
jmp 0x1476a
movl $0xc, %ebp
jmp 0x1476a
movl $0xd, %ebp
movl %ebp, 0x68(%rbx)
movq (%r12), %rax
movq %rax, 0x48(%rbx)
movq $0x0, 0x10(%r12)
movq 0x8(%r12), %rax
movb $0x0, (%rax)
movq 0x8(%r12), %rdi
leaq 0x18(%r12), %rax
cmpq %rax, %rdi
je 0x147a0
movq (%rax), %rsi
incq %rsi
callq 0x6300
movl $0x28, %esi
movq %r12, %rdi
callq 0x6300
movq %r15, 0x58(%rbx)
movq %r14, 0x60(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x16940
movq %r14, %rdi
callq 0x6560
nop