read_literal_length (Bit_Chain *restrict dat, unsigned char *restrict opcode)
{
  unsigned int total = 0;
  BITCODE_RC byte = bit_read_RC (dat);

  *opcode = 0x00;

  if (byte >= 0x01 && byte <= 0x0F)
    return byte + 3;
  else if (byte == 0)
    {
      total = 0x0F;
      while ((byte = bit_read_RC (dat)) == 0 && dat->size - dat->byte > 1)
        {
          total += 0xFF;
        }
      return total + byte + 3;
    }
  else if (byte & 0xF0)
    *opcode = byte;

  return 0;
}
read_literal_length (Bit_Chain *restrict dat, unsigned char *restrict opcode)
{
  unsigned int total = 0;
  BITCODE_RC byte = bit_read_RC (dat);

  *opcode = 0x00;

  if (byte >= 0x01 && byte <= 0x0F)
    return byte + 3;
  else if (byte == 0)
    {
      total = 0x0F;
      while ((byte = bit_read_RC (dat)) == 0 && dat->size - dat->byte > 1)
        {
          total += 0xFF;
        }
      return total + byte + 3;
    }
  else if (byte & 0xF0)
    *opcode = byte;

  return 0;
}