internal EffectToken(BinaryReader reader, HashSet<int> pointers, HashSet<int> functions)
{
Address = checked((int)reader.BaseStream.Position);
intValue = reader.ReadInt32();
floatValue = new PackedSingle(intValue).SingleValue;
IsFunction = functions.Contains(Address);
if (pointers.Contains(Address))
Category = EffectTokenCategory.Pointer;
else if ((intValue & 0xFF000000) != 0 && !float.IsNaN(floatValue) && !float.IsInfinity(floatValue))
Category = EffectTokenCategory.Single;
else if (intValue == 0)
Category = EffectTokenCategory.Zero;
else
Category = EffectTokenCategory.Int32;
}