if (crcTable == null) { crcTable = new int[256]; for (int i = 0; i < 256; i++) { crcTable[i] = i; for (int j = 0; j < 8; j++) { if ((crcTable[i] & 0x1) == 0) { crcTable[i] = (crcTable[i] >> 1) & 0x7FFFFFFF; } else { crcTable[i] = 0xEDB88320 ^ ((crcTable[i] >> 1) & 0x7FFFFFFF); } } } }
int computeCRC() {	if (crcTable == null) {		crcTable = new int[256];		for (int i = 0; i < 256; i++) {			crcTable[i] = i;			for (int j = 0; j < 8; j++) {				if ((crcTable[i] & 0x1) == 0) {					crcTable[i] = (crcTable[i] >> 1) & 0x7FFFFFFF;				} else {					crcTable[i] = 0xEDB88320 ^ ((crcTable[i] >> 1) & 0x7FFFFFFF);				}			}		}		}	int crc = 0xFFFFFFFF;	int start = TYPE_OFFSET;	int stop = DATA_OFFSET + getLength();	for (int i = start; i < stop; i++) {		int index = (crc ^ reference[i]) & 0xFF;		crc =  crcTable[index] ^ ((crc >> 8) & 0x00FFFFFF);	}	return ~crc;}