private INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> FloatTypesBinary(APC pc, BinaryOperator op, Variable dest, Variable s1, Variable s2, INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> data)
                {
                    ConcreteFloat t1, t2;

                    if (TryFloatType(pc, s1, out t1) && TryFloatType(pc, s2, out t2))
                    {
                        var prevType = data.GetFloatType(ToBoxedVariable(dest));

                        if (prevType.IsTop)
                        {
                            data.SetFloatType(ToBoxedVariable(dest), ConcreteFloat.Float80);
                        }
                        else
                        {
                            data.SetFloatType(ToBoxedVariable(dest), ConcreteFloat.Uncompatible);
                        }
                    }

                    return(data);
                }
                private INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> FloatTypesLdarg(APC pc, Variable dest, INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> data)
                {
                    ConcreteFloat type;

                    if (TryFloatType(this.Context.MethodContext.CFG.Post(pc), dest, out type) && !data.GetFloatType(new BoxedVariable <Variable>(dest)).IsNormal())
                    {
                        data.SetFloatType(ToBoxedVariable(dest), ConcreteFloat.Float80);
                    }

                    return(data);
                }