protected string DecryptInternal(int stringId)
            {
                uint v0 = reader.ReadUInt32();
                uint v1 = reader.ReadUInt32();

                DeobUtils.XteaDecrypt(ref v0, ref v1, key, 32);
                int utf8Length = (int)v0;
                var decrypted  = new uint[(utf8Length + 11) / 8 * 2 - 1];

                decrypted[0] = v1;
                for (int i = 1; i + 1 < decrypted.Length; i += 2)
                {
                    v0 = reader.ReadUInt32();
                    v1 = reader.ReadUInt32();
                    DeobUtils.XteaDecrypt(ref v0, ref v1, key, 32);
                    decrypted[i]     = v0;
                    decrypted[i + 1] = v1;
                }

                var utf8 = new byte[utf8Length];

                Buffer.BlockCopy(decrypted, 0, utf8, 0, utf8.Length);
                return(Encoding.UTF8.GetString(utf8));
            }