Ejemplo n.º 1
0
        public static string read_NTSTR(ByteArray d, string cp)
        {
            ByteArray byteArray = new ByteArray();

            byteArray.position = 0;
            sbyte b = d.readByte();

            while (b != 0 && d.bytesAvailable > 0)
            {
                byteArray.writeByte(b);
                b = d.readByte();
            }
            byteArray.position = 0;
            string result = byteArray.readUTF8Bytes(byteArray.length);

            byteArray.length = 0;
            return(result);
        }
Ejemplo n.º 2
0
        private Variant _UnpackFullTypePackage(ByteArray d)
        {
            Variant variant = null;
            bool    flag    = d.bytesAvailable < 1;
            Variant result;

            if (flag)
            {
                result = variant;
            }
            else
            {
                uint num   = (uint)d.readUnsignedByte();
                uint num2  = num & 15u;
                bool flag2 = num2 == 0u;
                if (flag2)
                {
                    variant = new Variant((num & 16u) > 0u);
                }
                else
                {
                    bool flag3 = num2 == 1u;
                    if (flag3)
                    {
                        bool flag4 = (num & 16u) > 0u;
                        uint num3  = num >> 5;
                        bool flag5 = flag4;
                        if (flag5)
                        {
                            bool flag6 = num3 == 2u;
                            if (flag6)
                            {
                                variant = new Variant(d.readInt());
                            }
                            else
                            {
                                bool flag7 = num3 == 1u;
                                if (flag7)
                                {
                                    variant = new Variant(d.readShort());
                                }
                                else
                                {
                                    bool flag8 = num3 == 0u;
                                    if (flag8)
                                    {
                                        variant = new Variant(d.readByte());
                                    }
                                    else
                                    {
                                        bool flag9 = num3 == 3u;
                                        if (flag9)
                                        {
                                            variant = new Variant((long)((ulong)d.readUnsignedInt() + (ulong)((long)d.readInt() * 4294967296L)));
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            bool flag10 = num3 == 2u;
                            if (flag10)
                            {
                                variant = new Variant(d.readUnsignedInt());
                            }
                            else
                            {
                                bool flag11 = num3 == 1u;
                                if (flag11)
                                {
                                    variant = new Variant(d.readUnsignedShort());
                                }
                                else
                                {
                                    bool flag12 = num3 == 0u;
                                    if (flag12)
                                    {
                                        variant = new Variant(d.readUnsignedByte());
                                    }
                                    else
                                    {
                                        bool flag13 = num3 == 3u;
                                        if (flag13)
                                        {
                                            variant = new Variant((long)((ulong)d.readUnsignedInt() + (ulong)((long)d.readInt() * 4294967296L)));
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        bool flag14 = num2 == 2u;
                        if (flag14)
                        {
                            uint num3 = num >> 5;
                            uint num4 = num3;
                            if (num4 != 2u)
                            {
                                if (num4 == 3u)
                                {
                                    variant = new Variant(d.readDouble());
                                }
                            }
                            else
                            {
                                variant = new Variant(d.readFloat());
                            }
                        }
                        else
                        {
                            bool flag15 = num2 == 3u;
                            if (flag15)
                            {
                                uint num5 = (uint)d.readUnsignedByte();
                                uint num6 = (uint)d.readUnsignedShort();
                                int  num7 = (int)((num6 << 16 | num5 << 8 | num) >> 4);
                                variant = new Variant(d.readUTF8Bytes(num7));
                            }
                            else
                            {
                                bool flag16 = num2 == 4u;
                                if (flag16)
                                {
                                    uint num5 = (uint)d.readUnsignedByte();
                                    uint num6 = (uint)d.readUnsignedShort();
                                    int  num7 = (int)((num6 << 16 | num5 << 8 | num) >> 4);
                                    variant = new Variant();
                                    variant.setToDct();
                                    for (int i = 0; i < num7; i++)
                                    {
                                        int    len    = (int)d.readUnsignedByte();
                                        string text   = d.readUTF8Bytes(len);
                                        int    num8   = text.LastIndexOf("\0");
                                        bool   flag17 = num8 != -1;
                                        if (flag17)
                                        {
                                            text = text.Substring(0, num8);
                                        }
                                        variant[text] = this._UnpackFullTypePackage(d);
                                        bool isStr = variant[text].isStr;
                                        if (isStr)
                                        {
                                            int  num9   = variant[text]._str.LastIndexOf("\0");
                                            bool flag18 = num9 != -1;
                                            if (flag18)
                                            {
                                                string text2 = variant[text]._str.Substring(0, num9);
                                                variant[text] = variant[text]._str.Substring(0, num9);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    bool flag19 = num2 == 5u;
                                    if (flag19)
                                    {
                                        uint num5 = (uint)d.readUnsignedByte();
                                        uint num6 = (uint)d.readUnsignedShort();
                                        int  num7 = (int)((num6 << 16 | num5 << 8 | num) >> 4);
                                        variant = new Variant();
                                        variant.setToArray();
                                        for (int j = 0; j < num7; j++)
                                        {
                                            variant.pushBack(this._UnpackFullTypePackage(d));
                                        }
                                    }
                                    else
                                    {
                                        bool flag20 = num2 == 6u;
                                        if (flag20)
                                        {
                                            uint      num5      = (uint)d.readUnsignedByte();
                                            uint      num6      = (uint)d.readUnsignedShort();
                                            int       num7      = (int)((num6 << 16 | num5 << 8 | num) >> 4);
                                            ByteArray byteArray = new ByteArray();
                                            d.readBytes(byteArray, 0, num7);
                                            variant = new Variant(byteArray);
                                        }
                                        else
                                        {
                                            bool flag21 = num2 == 7u;
                                            if (flag21)
                                            {
                                                uint num5 = (uint)d.readUnsignedByte();
                                                uint num6 = (uint)d.readUnsignedShort();
                                                int  num7 = (int)((num6 << 16 | num5 << 8 | num) >> 4);
                                                variant = new Variant();
                                                variant.setToIntkeyDct();
                                                for (int k = 0; k < num7; k++)
                                                {
                                                    int idx = d.readInt();
                                                    variant[idx] = this._UnpackFullTypePackage(d);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                result = variant;
            }
            return(result);
        }