// File: /workspace/github_cpp_makefile_star2_O1/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 0x28ab8(%rip), %rax     # 0x3cfe0
movq %rax, (%rdi)
movb $0x0, 0x14(%rdi)
movl $0x0, 0x10(%rdi)
movq 0x8(%rsi), %rax
movq %rax, 0x8(%rdi)
leaq 0x8(%rdx), %r13
leaq 0x18022(%rip), %rsi     # 0x2c56b
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x1471a
leaq 0x1a1b9(%rip), %rsi     # 0x2e719
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146c1
leaq 0x1a16b(%rip), %rsi     # 0x2e6e2
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146c8
leaq 0x17fdf(%rip), %rsi     # 0x2c56d
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146cf
leaq 0x17fca(%rip), %rsi     # 0x2c56f
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146d6
leaq 0x17fb5(%rip), %rsi     # 0x2c571
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146dd
leaq 0x17fa1(%rip), %rsi     # 0x2c574
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146e4
leaq 0x17f8d(%rip), %rsi     # 0x2c577
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146eb
leaq 0x17f7a(%rip), %rsi     # 0x2c57b
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146f2
leaq 0x17f64(%rip), %rsi     # 0x2c57c
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x146f9
leaq 0x17f50(%rip), %rsi     # 0x2c57f
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14700
leaq 0x17f3c(%rip), %rsi     # 0x2c582
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14707
leaq 0x17f27(%rip), %rsi     # 0x2c584
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x1470e
leaq 0x19cef(%rip), %rsi     # 0x2e363
movq %r13, %rdi
callq 0x60d0
testl %eax, %eax
je 0x14715
leaq 0x17efc(%rip), %rsi     # 0x2c587
movq %r13, %rdi
callq 0x60d0
movl $0xe, %ebp
testl %eax, %eax
je 0x1471a
movl $0x8, %edi
callq 0x6150
leaq 0x199ec(%rip), %rcx     # 0x2e099
movq %rcx, (%rax)
movq 0x298e9(%rip), %rsi     # 0x3dfa0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6520
movl $0x1, %ebp
jmp 0x1471a
movl $0x2, %ebp
jmp 0x1471a
movl $0x3, %ebp
jmp 0x1471a
movl $0x4, %ebp
jmp 0x1471a
movl $0x5, %ebp
jmp 0x1471a
movl $0x6, %ebp
jmp 0x1471a
movl $0x7, %ebp
jmp 0x1471a
movl $0x8, %ebp
jmp 0x1471a
movl $0x9, %ebp
jmp 0x1471a
movl $0xa, %ebp
jmp 0x1471a
movl $0xb, %ebp
jmp 0x1471a
movl $0xc, %ebp
jmp 0x1471a
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 0x14750
movq (%rax), %rsi
incq %rsi
callq 0x62f0
movl $0x28, %esi
movq %r12, %rdi
callq 0x62f0
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 0x16922
movq %r14, %rdi
callq 0x6550
nop