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); }
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); }