// File: /workspace/github_cpp_makefile_star2_O1/kelwinfc[P]ci4721-Fernandez-Gyomrey/src/AST/constant_folding.cpp
// Function: AST_op::constant_folding()
AST_expression* AST_op::constant_folding(){
    
    if (    !left->is_constant
         || !right->is_constant 
         || (typeid(*left) != typeid(*right))
       )
    {
        return this;
    }
    
    bool equals = false;
    
    switch( oper_type ){
        
        case MOD:
            if ( typeid(*left) == typeid(AST_int) ){
                tokenInt* tk = new tokenInt( left->line, left->column,
                                             (char*)"0");
                AST_int* sol = new AST_int(tk);
                sol->value = ((AST_int*)left)->value % ((AST_int*)right)->value;
                
                return sol;
            }
            break;
            
        /* Operadores aritmeticos: suma, resta, multiplicacion y division */
        case PLUS:
        case MINUS:
        case PROD:
        case DIV:
            
            if ( typeid(*left) == typeid(AST_int) ){
                tokenInt* tk = new tokenInt( left->line, left->column,
                                             (char*)"0");
                AST_int* sol = new AST_int(tk);
                switch( oper_type ){
                    case PLUS:
                        sol->value = 
                            ((AST_int*)left)->value + ((AST_int*)right)->value;
                        break;
                    case MINUS:
                        sol->value = 
                            ((AST_int*)left)->value - ((AST_int*)right)->value;
                        break;
                    case PROD:
                        sol->value = 
                            ((AST_int*)left)->value * ((AST_int*)right)->value;
                        break;
                    case DIV:
                        sol->value = 
                            ((AST_int*)left)->value / ((AST_int*)right)->value;
                        break;
                    default:
                        break;
                }
                return sol;
                
            } else if ( typeid(*left) == typeid(AST_float) ){
                tokenFloat* tk = new tokenFloat( left->line, left->column,
                                                 (char*)"0.0");
                AST_float* sol = new AST_float(tk);
                sol->value = ((AST_float*)left)->value + 
                                ((AST_float*)right)->value;
                                
                switch( oper_type ){
                    case PLUS:
                        sol->value = ((AST_float*)left)->value 
                                        + ((AST_float*)right)->value;
                        break;
                    case MINUS:
                        sol->value = ((AST_float*)left)->value 
                                        - ((AST_float*)right)->value;
                        break;
                    case PROD:
                        sol->value = ((AST_float*)left)->value 
                                        * ((AST_float*)right)->value;
                        break;
                    case DIV:
                        sol->value = ((AST_float*)left)->value 
                                        / ((AST_float*)right)->value;
                        break;
                    default:
                        break;
                }
                
                return sol;
            }
            
            break;
        
        /* Operadores logicos: y, o, implica, consecuencia */
        case AND:
        case OR:
        case IMP:
        case CONSEQ:
            
            if ( typeid(*left) == typeid(AST_boolean) ){
                tokenBoolean* tk = new tokenBoolean( left->line, left->column,
                                             (char*)"true");
                AST_boolean* sol = new AST_boolean(tk);
                switch( oper_type ){
                    case AND:
                        sol->value = ((AST_boolean*)left)->value 
                                        && ((AST_boolean*)right)->value;
                        break;
                    case OR:
                        sol->value = ((AST_boolean*)left)->value 
                                        || ((AST_boolean*)right)->value;
                        break;
                    case IMP:
                        sol->value = !((AST_boolean*)left)->value 
                                        || ((AST_boolean*)right)->value;
                        break;
                    case CONSEQ:
                        sol->value = ((AST_boolean*)left)->value 
                                        || !((AST_boolean*)right)->value;
                        break;
                    default:
                        break;
                }
                
                return sol;
            }
        
        /* Operadores de comparación de igualdad: ==, != */
        case EQ:
            equals = true;
        case UNEQ:
            
            {
            tokenBoolean* tk = 
                new tokenBoolean(left->line,left->column,(char*)"true");
            AST_boolean* sol = new AST_boolean(tk);
            
            if ( typeid(*left) == typeid(AST_int) ){
                sol->value = equals == ( ((AST_int*)left)->value 
                                            == ((AST_int*)right)->value );
            } else if ( typeid(*left) == typeid(AST_float) ){
                sol->value = equals == ( ((AST_float*)left)->value 
                                            == ((AST_float*)right)->value );
            } else if ( typeid(*left) == typeid(AST_char) ){
                sol->value = equals == ( ((AST_char*)left)->value 
                                            == ((AST_char*)right)->value );
            } else if ( typeid(*left) == typeid(AST_boolean) ){
                sol->value = equals == ( ((AST_boolean*)left)->value 
                                            == ((AST_boolean*)right)->value );
            } else {
                delete sol;
                return this;
            }
            
            return sol;
            }
            
        /* Operadores de relación de orden: <, <=, >, >= */
        case LESS:
            
            {
            tokenBoolean* tk = 
                new tokenBoolean(left->line,left->column,(char*)"true");
            AST_boolean* sol = new AST_boolean(tk);
            
            if ( typeid(*left) == typeid(AST_int) ){
                sol->value = ((AST_int*)left)->value 
                                            < ((AST_int*)right)->value;
            } else if ( typeid(*left) == typeid(AST_float) ){
                sol->value = ((AST_float*)left)->value 
                                            < ((AST_float*)right)->value;
            } else if ( typeid(*left) == typeid(AST_char) ){
                sol->value = ((AST_char*)left)->value 
                                            < ((AST_char*)right)->value;
            } else {
                delete sol;
                return this;
            }
            
            return sol;
            }
            
        case LESS_EQ:
            
            {
            tokenBoolean* tk = 
                new tokenBoolean(left->line,left->column,(char*)"true");
            AST_boolean* sol = new AST_boolean(tk);
            
            if ( typeid(*left) == typeid(AST_int) ){
                sol->value = ((AST_int*)left)->value 
                                            <= ((AST_int*)right)->value;
            } else if ( typeid(*left) == typeid(AST_float) ){
                sol->value = ((AST_float*)left)->value 
                                            <= ((AST_float*)right)->value;
            } else if ( typeid(*left) == typeid(AST_char) ){
                sol->value = ((AST_char*)left)->value 
                                            <= ((AST_char*)right)->value;
            } else {
                delete sol;
                return this;
            }
            
            return sol;
            }
            
        case GREAT:
            
            {
            tokenBoolean* tk = 
                new tokenBoolean(left->line,left->column,(char*)"true");
            AST_boolean* sol = new AST_boolean(tk);
            
            if ( typeid(*left) == typeid(AST_int) ){
                sol->value = ((AST_int*)left)->value 
                                            > ((AST_int*)right)->value;
            } else if ( typeid(*left) == typeid(AST_float) ){
                sol->value = ((AST_float*)left)->value 
                                            > ((AST_float*)right)->value;
            } else if ( typeid(*left) == typeid(AST_char) ){
                sol->value = ((AST_char*)left)->value 
                                            > ((AST_char*)right)->value;
            } else {
                delete sol;
                return this;
            }
            
            return sol;
            }
            
        case GREAT_EQ:
            
            {
            tokenBoolean* tk = 
                new tokenBoolean(left->line,left->column,(char*)"true");
            AST_boolean* sol = new AST_boolean(tk);
            
            if ( typeid(*left) == typeid(AST_int) ){
                sol->value = ((AST_int*)left)->value 
                                            >= ((AST_int*)right)->value;
            } else if ( typeid(*left) == typeid(AST_float) ){
                sol->value = ((AST_float*)left)->value 
                                            >= ((AST_float*)right)->value;
            } else if ( typeid(*left) == typeid(AST_char) ){
                sol->value = ((AST_char*)left)->value 
                                            >= ((AST_char*)right)->value;
            } else {
                delete sol;
                return this;
            }
            
            return sol;
            }
            
            break;
    }
    
    return this;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq 0x58(%rdi), %r12
cmpb $0x1, 0x14(%r12)
jne 0xdc21
movq 0x60(%rbx), %rax
cmpb $0x1, 0x14(%rax)
jne 0xdc21
testq %r12, %r12
je 0xe592
testq %rax, %rax
je 0xe592
movq (%r12), %rcx
movq -0x8(%rcx), %rcx
movq (%rax), %rax
movq -0x8(%rax), %rax
movq 0x8(%rcx), %r14
movq 0x8(%rax), %rsi
cmpq %rsi, %r14
je 0xdc30
cmpb $0x2a, (%r14)
je 0xdc21
movq %r14, %rdi
callq 0x6400
testl %eax, %eax
je 0xdc30
movq %rbx, %r14
movq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movl 0x68(%rbx), %eax
cmpq $0xe, %rax
ja 0xdc21
leaq 0x1e500(%rip), %rcx     # 0x2c140
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1e5f9(%rip), %rax     # 0x2c249
cmpq %rax, %r14
je 0xddc3
cmpb $0x2a, (%r14)
je 0xdc76
leaq 0x1e5e3(%rip), %rsi     # 0x2c249
movq %r14, %rdi
callq 0x6400
testl %eax, %eax
je 0xddc3
leaq 0x1e5e6(%rip), %rax     # 0x2c263
cmpq %rax, %r14
je 0xdc9b
cmpb $0x2a, (%r14)
je 0xdc21
leaq 0x1e5d4(%rip), %rsi     # 0x2c263
movq %r14, %rdi
callq 0x6400
testl %eax, %eax
jne 0xdc21
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1f2a0(%rip), %rcx     # 0x2cf59
movq %rax, %rdi
callq 0x6c14
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x148dc
movq 0x58(%rbx), %rcx
movq 0x60(%rbx), %rax
movss 0x48(%rcx), %xmm0
addss 0x48(%rax), %xmm0
movss %xmm0, 0x48(%r14)
movl 0x68(%rbx), %edx
cmpq $0x3, %rdx
ja 0xdc24
leaq 0x1e487(%rip), %rsi     # 0x2c18c
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movss 0x48(%rcx), %xmm0
addss 0x48(%rax), %xmm0
jmp 0xe55f
leaq 0x1e54a(%rip), %rax     # 0x2c26e
cmpq %rax, %r14
je 0xdd4c
cmpb $0x2a, (%r14)
je 0xdd42
leaq 0x1e538(%rip), %rsi     # 0x2c26e
movq %r14, %rdi
callq 0x6400
testl %eax, %eax
je 0xdd4c
movl $0x1, %ebp
jmp 0xde33
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1e29a(%rip), %rcx     # 0x2c004
movq %rax, %rdi
callq 0x6c30
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x14934
movl 0x68(%rbx), %eax
addl $-0x5, %eax
cmpl $0x3, %eax
ja 0xdc24
leaq 0x1e3dc(%rip), %rcx     # 0x2c17c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rbx), %rax
cmpb $0x1, 0x48(%rax)
jne 0xe56a
movq 0x60(%rbx), %rax
movb 0x48(%rax), %al
jmp 0xe56c
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1f17a(%rip), %rcx     # 0x2cf5b
movq %rax, %rdi
callq 0x6cda
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x14888
movl 0x68(%rbx), %eax
cmpq $0x3, %rax
ja 0xdc24
leaq 0x1e387(%rip), %rcx     # 0x2c19c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rcx), %ecx
addl 0x48(%rax), %ecx
jmp 0xe4bc
xorl %ebp, %ebp
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1e1b3(%rip), %rcx     # 0x2c004
movq %rax, %rdi
callq 0x6c30
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x14934
movq 0x58(%rbx), %r15
testq %r15, %r15
je 0xe592
movq (%r15), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %r12
leaq 0x1e3b9(%rip), %rax     # 0x2c249
cmpq %rax, %r12
je 0xdf50
cmpb $0x2a, (%r12)
je 0xdeb7
leaq 0x1e3a2(%rip), %rsi     # 0x2c249
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xdf50
leaq 0x1e3a5(%rip), %rax     # 0x2c263
cmpq %rax, %r12
je 0xdf67
cmpb $0x2a, (%r12)
je 0xdee5
leaq 0x1e38e(%rip), %rsi     # 0x2c263
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xdf67
leaq 0x1e390(%rip), %rax     # 0x2c27c
cmpq %rax, %r12
je 0xe3eb
cmpb $0x2a, (%r12)
je 0xdf13
leaq 0x1e379(%rip), %rsi     # 0x2c27c
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe3eb
leaq 0x1e354(%rip), %rax     # 0x2c26e
cmpq %rax, %r12
je 0xdf41
cmpb $0x2a, (%r12)
je 0xe3d1
leaq 0x1e33d(%rip), %rsi     # 0x2c26e
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
jne 0xe3d1
movb 0x48(%r15), %al
movq 0x60(%rbx), %rcx
xorl %edx, %edx
cmpb 0x48(%rcx), %al
jmp 0xdf5d
movl 0x48(%r15), %eax
movq 0x60(%rbx), %rcx
xorl %edx, %edx
cmpl 0x48(%rcx), %eax
sete %dl
cmpl %edx, %ebp
jmp 0xe404
movq 0x60(%rbx), %rax
movss 0x48(%rax), %xmm0
cmpeqss 0x48(%r15), %xmm0
movd %xmm0, %eax
andl $0x1, %eax
jmp 0xe402
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1e063(%rip), %rcx     # 0x2c004
movq %rax, %rdi
callq 0x6c30
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x14934
movq 0x58(%rbx), %r15
testq %r15, %r15
je 0xe592
movq (%r15), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %r12
leaq 0x1e269(%rip), %rax     # 0x2c249
cmpq %rax, %r12
je 0xe40e
cmpb $0x2a, (%r12)
je 0xe007
leaq 0x1e252(%rip), %rsi     # 0x2c249
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe40e
leaq 0x1e255(%rip), %rax     # 0x2c263
cmpq %rax, %r12
je 0xe4ed
cmpb $0x2a, (%r12)
je 0xe035
leaq 0x1e23e(%rip), %rsi     # 0x2c263
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe4ed
leaq 0x1e240(%rip), %rax     # 0x2c27c
cmpq %rax, %r12
je 0xe063
cmpb $0x2a, (%r12)
je 0xe3d1
leaq 0x1e229(%rip), %rsi     # 0x2c27c
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
jne 0xe3d1
addq $0x48, %r15
movq 0x60(%rbx), %rsi
addq $0x48, %rsi
movq %r15, %rdi
callq 0x1684e
jmp 0xe589
leaq 0x1e1c6(%rip), %rax     # 0x2c249
cmpq %rax, %r14
je 0xe0a9
cmpb $0x2a, (%r14)
je 0xdc21
leaq 0x1e1b0(%rip), %rsi     # 0x2c249
movq %r14, %rdi
callq 0x6400
testl %eax, %eax
jne 0xdc21
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1ee94(%rip), %rcx     # 0x2cf5b
movq %rax, %rdi
callq 0x6cda
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x14888
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rax), %eax
cltd
idivl 0x48(%rcx)
movl %edx, 0x48(%r14)
jmp 0xdc24
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1dee7(%rip), %rcx     # 0x2c004
movq %rax, %rdi
callq 0x6c30
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x14934
movq 0x58(%rbx), %r15
testq %r15, %r15
je 0xe592
movq (%r15), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %r12
leaq 0x1e0ed(%rip), %rax     # 0x2c249
cmpq %rax, %r12
je 0xe423
cmpb $0x2a, (%r12)
je 0xe183
leaq 0x1e0d6(%rip), %rsi     # 0x2c249
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe423
leaq 0x1e0d9(%rip), %rax     # 0x2c263
cmpq %rax, %r12
je 0xe4fd
cmpb $0x2a, (%r12)
je 0xe1b1
leaq 0x1e0c2(%rip), %rsi     # 0x2c263
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe4fd
leaq 0x1e0c4(%rip), %rax     # 0x2c27c
cmpq %rax, %r12
je 0xe1df
cmpb $0x2a, (%r12)
je 0xe3d1
leaq 0x1e0ad(%rip), %rsi     # 0x2c27c
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
jne 0xe3d1
addq $0x48, %r15
movq 0x60(%rbx), %rsi
addq $0x48, %rsi
movq %r15, %rdi
callq 0x16811
jmp 0xe589
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1ddee(%rip), %rcx     # 0x2c004
movq %rax, %rdi
callq 0x6c30
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x14934
movq 0x58(%rbx), %r15
testq %r15, %r15
je 0xe592
movq (%r15), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %r12
leaq 0x1dff4(%rip), %rax     # 0x2c249
cmpq %rax, %r12
je 0xe438
cmpb $0x2a, (%r12)
je 0xe27c
leaq 0x1dfdd(%rip), %rsi     # 0x2c249
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe438
leaq 0x1dfe0(%rip), %rax     # 0x2c263
cmpq %rax, %r12
je 0xe50d
cmpb $0x2a, (%r12)
je 0xe2aa
leaq 0x1dfc9(%rip), %rsi     # 0x2c263
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe50d
leaq 0x1dfcb(%rip), %rax     # 0x2c27c
cmpq %rax, %r12
je 0xe2d8
cmpb $0x2a, (%r12)
je 0xe3d1
leaq 0x1dfb4(%rip), %rsi     # 0x2c27c
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
jne 0xe3d1
addq $0x48, %r15
movq 0x60(%rbx), %rsi
addq $0x48, %rsi
movq %r15, %rdi
callq 0x16824
jmp 0xe589
movl $0xc, %edi
callq 0x62e0
movq %rax, %r15
movl 0x8(%r12), %esi
movl 0xc(%r12), %edx
leaq 0x1dcf5(%rip), %rcx     # 0x2c004
movq %rax, %rdi
callq 0x6c30
movl $0x50, %edi
callq 0x62e0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x14934
movq 0x58(%rbx), %r15
testq %r15, %r15
je 0xe592
movq (%r15), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %r12
leaq 0x1defb(%rip), %rax     # 0x2c249
cmpq %rax, %r12
je 0xe44d
cmpb $0x2a, (%r12)
je 0xe375
leaq 0x1dee4(%rip), %rsi     # 0x2c249
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe44d
leaq 0x1dee7(%rip), %rax     # 0x2c263
cmpq %rax, %r12
je 0xe525
cmpb $0x2a, (%r12)
je 0xe3a3
leaq 0x1ded0(%rip), %rsi     # 0x2c263
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe525
leaq 0x1ded2(%rip), %rax     # 0x2c27c
cmpq %rax, %r12
je 0xe575
cmpb $0x2a, (%r12)
je 0xe3d1
leaq 0x1debb(%rip), %rsi     # 0x2c27c
movq %r12, %rdi
callq 0x6400
testl %eax, %eax
je 0xe575
movq %r14, %rdi
callq 0x16922
movl $0x50, %esi
movq %r14, %rdi
callq 0x62f0
jmp 0xdc21
addq $0x48, %r15
movq 0x60(%rbx), %rsi
addq $0x48, %rsi
movq %r15, %rdi
callq 0x167e6
movzbl %al, %eax
cmpl %eax, %ebp
sete 0x48(%r14)
jmp 0xdc24
movl 0x48(%r15), %eax
movq 0x60(%rbx), %rcx
cmpl 0x48(%rcx), %eax
setge 0x48(%r14)
jmp 0xdc24
movl 0x48(%r15), %eax
movq 0x60(%rbx), %rcx
cmpl 0x48(%rcx), %eax
setl 0x48(%r14)
jmp 0xdc24
movl 0x48(%r15), %eax
movq 0x60(%rbx), %rcx
cmpl 0x48(%rcx), %eax
setle 0x48(%r14)
jmp 0xdc24
movl 0x48(%r15), %eax
movq 0x60(%rbx), %rcx
cmpl 0x48(%rcx), %eax
setg 0x48(%r14)
jmp 0xdc24
movq 0x58(%rbx), %rcx
movb $0x1, %al
cmpb $0x1, 0x48(%rcx)
je 0xe4a1
jmp 0xe589
movq 0x58(%rbx), %rcx
movb $0x1, %al
cmpb $0x0, 0x48(%rcx)
jne 0xe589
movq 0x60(%rbx), %rax
movb 0x48(%rax), %al
xorb $0x1, %al
jmp 0xe589
movq 0x58(%rbx), %rcx
movb $0x1, %al
cmpb $0x0, 0x48(%rcx)
jne 0xe589
movq 0x60(%rbx), %rax
movb 0x48(%rax), %al
jmp 0xe589
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rcx), %ecx
imull 0x48(%rax), %ecx
movl %ecx, 0x48(%r14)
jmp 0xdc24
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rax), %eax
cltd
idivl 0x48(%rcx)
jmp 0xe4e4
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rax), %eax
subl 0x48(%rcx), %eax
movl %eax, 0x48(%r14)
jmp 0xdc24
movss 0x48(%r15), %xmm0
movq 0x60(%rbx), %rax
ucomiss 0x48(%rax), %xmm0
jmp 0xe51b
movq 0x60(%rbx), %rax
movss 0x48(%rax), %xmm0
ucomiss 0x48(%r15), %xmm0
jmp 0xe533
movq 0x60(%rbx), %rax
movss 0x48(%rax), %xmm0
ucomiss 0x48(%r15), %xmm0
setae 0x48(%r14)
jmp 0xdc24
movss 0x48(%r15), %xmm0
movq 0x60(%rbx), %rax
ucomiss 0x48(%rax), %xmm0
seta 0x48(%r14)
jmp 0xdc24
movss 0x48(%rcx), %xmm0
mulss 0x48(%rax), %xmm0
jmp 0xe55f
movss 0x48(%rcx), %xmm0
divss 0x48(%rax), %xmm0
jmp 0xe55f
movss 0x48(%rcx), %xmm0
subss 0x48(%rax), %xmm0
movss %xmm0, 0x48(%r14)
jmp 0xdc24
xorl %eax, %eax
movb %al, 0x48(%r14)
jmp 0xdc24
addq $0x48, %r15
movq 0x60(%rbx), %rsi
addq $0x48, %rsi
movq %r15, %rdi
callq 0x16839
movb %al, 0x48(%r14)
jmp 0xdc24
callq 0x6340
jmp 0xe5a7
jmp 0xe5a7
jmp 0xe5a7
jmp 0xe5a7
jmp 0xe5a7
jmp 0xe5a7
jmp 0xe5a7
jmp 0xe5a7
movq %rax, %rbx
movl $0xc, %esi
movq %r15, %rdi
callq 0x62f0
movq %rbx, %rdi
callq 0x6550
nop