private static int ReadConstant(BinaryReader reader) { byte firstByte = reader.ReadByte(); int length = GetConstantLength(firstByte); if (length == 4) { return(reader.ReadInt32BE()); } bool positive = IsPositiveConstant(firstByte); firstByte = positive ? firstByte &= PositiveConstantValueMask : firstByte |= NegativeConstantValueMask; var constBytes = new[] { firstByte }.Concat(reader.ReadBytes(length - 1).Reverse()).ToArray(); constBytes = Enumerable.Repeat((byte)(positive ? 0x00 : 0xFF), 4 - constBytes.Length) .Concat(constBytes).ToArray(); return(BinaryUtils.BytesToInt32(constBytes, ByteOrder.BigEndian)); }