// File: /workspace/github_cpp_makefile_star2_O2/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 %rbx
pushq %rax
movq %rdi, %rbx
movq 0x58(%rdi), %rax
cmpb $0x1, 0x14(%rax)
jne 0xbcb9
movq 0x60(%rbx), %rcx
cmpb $0x1, 0x14(%rcx)
jne 0xbcb9
movq (%rax), %rax
movq -0x8(%rax), %rdi
movq (%rcx), %rax
movq -0x8(%rax), %rsi
callq 0x12274
testb %al, %al
je 0xbcca
movq %rbx, %r14
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl 0x68(%rbx), %eax
cmpq $0xe, %rax
ja 0xbcb9
leaq 0x17466(%rip), %rcx     # 0x23140
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2b282(%rip), %rsi     # 0x36f80
callq 0x1227e
testb %al, %al
je 0xbe14
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x18234(%rip), %rcx     # 0x23f5b
movq %r15, %rdi
callq 0x6b66
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10df2
movl 0x68(%rbx), %eax
cmpq $0x3, %rax
ja 0xbcbc
leaq 0x17443(%rip), %rcx     # 0x2319c
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 0xc3a0
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2b220(%rip), %rsi     # 0x36fb0
callq 0x1227e
testb %al, %al
je 0xbe0c
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x1724f(%rip), %rcx     # 0x23004
movq %r15, %rdi
callq 0x6ae0
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10e9a
movl 0x68(%rbx), %eax
addl $-0x5, %eax
cmpl $0x3, %eax
ja 0xbcbc
leaq 0x17393(%rip), %rcx     # 0x2317c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rbx), %rax
cmpb $0x1, 0x48(%rax)
jne 0xc4d7
movq 0x60(%rbx), %rax
movb 0x48(%rax), %al
jmp 0xc4d9
pushq $0x1
popq %rbp
jmp 0xbebc
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2b169(%rip), %rsi     # 0x36f98
callq 0x1227e
testb %al, %al
je 0xbcb9
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x18101(%rip), %rcx     # 0x23f59
movq %r15, %rdi
callq 0x6ac4
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10e44
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 0xbcbc
leaq 0x172ea(%rip), %rsi     # 0x2318c
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movss 0x48(%rcx), %xmm0
addss 0x48(%rax), %xmm0
jmp 0xc504
xorl %ebp, %ebp
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x1712c(%rip), %rcx     # 0x23004
movq %r15, %rdi
callq 0x6ae0
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10e9a
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2b06f(%rip), %rsi     # 0x36f80
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xbf34
movl 0x48(%rcx), %eax
movq 0x60(%rbx), %rcx
xorl %edx, %edx
cmpl 0x48(%rcx), %eax
sete %dl
cmpl %edx, %ebp
jmp 0xc217
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2b04d(%rip), %rsi     # 0x36f98
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc1d9
movq 0x60(%rbx), %rax
movss 0x48(%rax), %xmm0
cmpeqss 0x48(%rcx), %xmm0
movd %xmm0, %eax
andl $0x1, %eax
jmp 0xc215
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x17071(%rip), %rcx     # 0x23004
movq %r15, %rdi
callq 0x6ae0
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10e9a
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2afb4(%rip), %rsi     # 0x36f80
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc221
movl 0x48(%rcx), %eax
movq 0x60(%rbx), %rcx
cmpl 0x48(%rcx), %eax
setge 0x48(%r14)
jmp 0xbcbc
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2af74(%rip), %rsi     # 0x36f80
callq 0x1227e
testb %al, %al
je 0xbcb9
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x17f26(%rip), %rcx     # 0x23f5b
movq %r15, %rdi
callq 0x6b66
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10df2
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rax), %eax
cltd
idivl 0x48(%rcx)
movl %edx, 0x48(%r14)
jmp 0xbcbc
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x16f7d(%rip), %rcx     # 0x23004
movq %r15, %rdi
callq 0x6ae0
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10e9a
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2aec0(%rip), %rsi     # 0x36f80
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc258
movl 0x48(%rcx), %eax
movq 0x60(%rbx), %rcx
cmpl 0x48(%rcx), %eax
setl 0x48(%r14)
jmp 0xbcbc
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x16f03(%rip), %rcx     # 0x23004
movq %r15, %rdi
callq 0x6ae0
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10e9a
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2ae46(%rip), %rsi     # 0x36f80
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc28f
movl 0x48(%rcx), %eax
movq 0x60(%rbx), %rcx
cmpl 0x48(%rcx), %eax
setle 0x48(%r14)
jmp 0xbcbc
pushq $0xc
popq %rdi
callq 0x62d0
movq %rax, %r15
movq 0x58(%rbx), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x16e89(%rip), %rcx     # 0x23004
movq %r15, %rdi
callq 0x6ae0
pushq $0x50
popq %rdi
callq 0x62d0
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10e9a
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0xc50f
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x2adcc(%rip), %rsi     # 0x36f80
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc2ce
movl 0x48(%rcx), %eax
movq 0x60(%rbx), %rcx
cmpl 0x48(%rcx), %eax
setg 0x48(%r14)
jmp 0xbcbc
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2add8(%rip), %rsi     # 0x36fc8
callq 0x1227e
movq 0x58(%rbx), %rdi
testb %al, %al
je 0xc30d
addq $0x48, %rdi
movq 0x60(%rbx), %rsi
addq $0x48, %rsi
callq 0x1239e
movzbl %al, %eax
cmpl %eax, %ebp
sete 0x48(%r14)
jmp 0xbcbc
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2ad60(%rip), %rsi     # 0x36f98
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc3d1
movss 0x48(%rcx), %xmm0
movq 0x60(%rbx), %rax
ucomiss 0x48(%rax), %xmm0
jmp 0xc2c4
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2ad29(%rip), %rsi     # 0x36f98
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc40f
movq 0x60(%rbx), %rax
movss 0x48(%rax), %xmm0
ucomiss 0x48(%rcx), %xmm0
jmp 0xc303
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2acf2(%rip), %rsi     # 0x36f98
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc44a
movq 0x60(%rbx), %rax
movss 0x48(%rax), %xmm0
ucomiss 0x48(%rcx), %xmm0
setae 0x48(%r14)
jmp 0xbcbc
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2acb3(%rip), %rsi     # 0x36f98
callq 0x1227e
movq 0x58(%rbx), %rcx
testb %al, %al
je 0xc481
movss 0x48(%rcx), %xmm0
movq 0x60(%rbx), %rax
ucomiss 0x48(%rax), %xmm0
seta 0x48(%r14)
jmp 0xbcbc
testq %rdi, %rdi
je 0xc50f
movq (%rdi), %rax
movq -0x8(%rax), %rdi
leaq 0x2ac8c(%rip), %rsi     # 0x36fb0
callq 0x1227e
testb %al, %al
je 0xc4bf
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movb 0x48(%rax), %al
xorl %edx, %edx
cmpb 0x48(%rcx), %al
jmp 0xbf2a
movq 0x58(%rbx), %rcx
movb $0x1, %al
cmpb $0x1, 0x48(%rcx)
je 0xc385
jmp 0xc4b6
movq 0x58(%rbx), %rcx
movb $0x1, %al
cmpb $0x0, 0x48(%rcx)
jne 0xc4b6
movq 0x60(%rbx), %rax
movb 0x48(%rax), %al
xorb $0x1, %al
jmp 0xc4b6
movq 0x58(%rbx), %rcx
movb $0x1, %al
cmpb $0x0, 0x48(%rcx)
jne 0xc4b6
movq 0x60(%rbx), %rax
movb 0x48(%rax), %al
jmp 0xc4b6
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rcx), %ecx
imull 0x48(%rax), %ecx
movl %ecx, 0x48(%r14)
jmp 0xbcbc
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rax), %eax
cltd
idivl 0x48(%rcx)
jmp 0xc3c8
movq 0x58(%rbx), %rax
movq 0x60(%rbx), %rcx
movl 0x48(%rax), %eax
subl 0x48(%rcx), %eax
movl %eax, 0x48(%r14)
jmp 0xbcbc
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2abe0(%rip), %rsi     # 0x36fc8
callq 0x1227e
testb %al, %al
je 0xc4bf
movq 0x58(%rbx), %rdi
movq 0x60(%rbx), %rsi
addq $0x48, %rdi
addq $0x48, %rsi
callq 0x12404
jmp 0xc4b6
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2aba2(%rip), %rsi     # 0x36fc8
callq 0x1227e
testb %al, %al
je 0xc4bf
movq 0x58(%rbx), %rdi
movq 0x60(%rbx), %rsi
addq $0x48, %rdi
addq $0x48, %rsi
callq 0x123c7
jmp 0xc4b6
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2ab67(%rip), %rsi     # 0x36fc8
callq 0x1227e
testb %al, %al
je 0xc4bf
movq 0x58(%rbx), %rdi
movq 0x60(%rbx), %rsi
addq $0x48, %rdi
addq $0x48, %rsi
callq 0x123da
jmp 0xc4b6
testq %rcx, %rcx
je 0xc50f
movq (%rcx), %rax
movq -0x8(%rax), %rdi
leaq 0x2ab30(%rip), %rsi     # 0x36fc8
callq 0x1227e
testb %al, %al
je 0xc4bf
movq 0x58(%rbx), %rdi
movq 0x60(%rbx), %rsi
addq $0x48, %rdi
addq $0x48, %rsi
callq 0x123ef
movb %al, 0x48(%r14)
jmp 0xbcbc
movq %r14, %rdi
callq 0x125fa
pushq $0x50
popq %rsi
movq %r14, %rdi
callq 0x62e0
jmp 0xbcb9
xorl %eax, %eax
movb %al, 0x48(%r14)
jmp 0xbcbc
movss 0x48(%rcx), %xmm0
mulss 0x48(%rax), %xmm0
jmp 0xc504
movss 0x48(%rcx), %xmm0
divss 0x48(%rax), %xmm0
jmp 0xc504
movss 0x48(%rcx), %xmm0
subss 0x48(%rax), %xmm0
movss %xmm0, 0x48(%r14)
jmp 0xbcbc
callq 0x6320
jmp 0xc524
jmp 0xc524
jmp 0xc524
jmp 0xc524
jmp 0xc524
jmp 0xc524
jmp 0xc524
jmp 0xc524
movq %rax, %rbx
pushq $0xc
popq %rsi
movq %r15, %rdi
callq 0x62e0
movq %rbx, %rdi
callq 0x6530