int ReadLZSRunLength()
{
switch (Input.ReadMSB(2)) {
case 0: return 2;
case 1: return 3;
case 2: return 4;
default: //case 3:
switch (Input.ReadMSB(2)) {
case 0: return 5;
case 1: return 6;
case 2: return 7;
default: //case 3:
int length = 8, nibble;
do {
nibble = Input.ReadMSB(4);
length += nibble;
} while (nibble == 15);
return length;
}
}
}