public static SteamPacket ReassemblePacket(List <byte[]> splitPackets, bool isCompressed, short uncompressedSize, int packetChecksum) { byte[] packetData; packetData = new byte[0]; MemoryStream memStream = new MemoryStream(); foreach (byte[] splitPacket in splitPackets) { memStream.Write(splitPacket, 0, splitPacket.Length); } if (isCompressed) { BZip2InputStream bzip2 = new BZip2InputStream(new MemoryStream(packetData)); bzip2.Read(packetData, 0, uncompressedSize); Crc32 crc32 = new Crc32(); crc32.Update(packetData); if (crc32.Value != packetChecksum) { throw new Exception("CRC32 checksum mismatch of uncompressed packet data."); } } return(SteamPacket.CreatePacket(memStream.ToArray())); }