private static Rectangle[] readEncodedDeltaRects(RdpPacket data, int DeltaEntries) { Rectangle[] rectangleArray = new Rectangle[DeltaEntries]; int num = data.ReadLittleEndian16(); long position = data.Position; BitStream stream = new BitStream(true); stream.Write(data, (DeltaEntries + 1) >> 1); Rectangle rectangle = new Rectangle(0, 0, 0, 0); for (int i = 0; i < DeltaEntries; i++) { if (stream.ReadNextBit() == 0) { rectangle.X += data.ReadEncodedSignedExtended16(); } if (stream.ReadNextBit() == 0) { rectangle.Y += data.ReadEncodedSignedExtended16(); } if (stream.ReadNextBit() == 0) { rectangle.Width = data.ReadEncodedSignedExtended16(); } if (stream.ReadNextBit() == 0) { rectangle.Height = data.ReadEncodedSignedExtended16(); } rectangleArray[i] = rectangle.Clone(); } long num5 = data.Position - position; if (num5 != num) { throw new Exception("Invalid Encoded Delta Rects!"); } return(rectangleArray); }