public Scale(BinaryReader reader, long baseAddress, CTFLanguage language)
        {
            BaseAddress = baseAddress;
            Language    = language;

            reader.BaseStream.Seek(BaseAddress, SeekOrigin.Begin);

            ulong bitflags = reader.ReadUInt16();

            Unk1 = CaesarReader.ReadBitflagInt32(ref bitflags, reader);         // typically qualifier
            Unk2 = CaesarReader.ReadBitflagInt32(ref bitflags, reader);         // typically description

            PrepLowBound = CaesarReader.ReadBitflagInt32(ref bitflags, reader); // could be float
            PrepUpBound  = CaesarReader.ReadBitflagInt32(ref bitflags, reader); // could be float

            MultiplyFactor = CaesarReader.ReadBitflagFloat(ref bitflags, reader);
            AddConstOffset = CaesarReader.ReadBitflagFloat(ref bitflags, reader);

            SICount  = CaesarReader.ReadBitflagInt32(ref bitflags, reader);
            OffsetSI = CaesarReader.ReadBitflagInt32(ref bitflags, reader);

            USCount  = CaesarReader.ReadBitflagInt32(ref bitflags, reader);
            OffsetUS = CaesarReader.ReadBitflagInt32(ref bitflags, reader);

            EnumDescription = CaesarReader.ReadBitflagInt32(ref bitflags, reader, -1);
            UnkC            = CaesarReader.ReadBitflagInt32(ref bitflags, reader);
        }