Up-Case Table Directory Entry

Offset Size Description Comments
0 (0x00) 1 EntryType 0x82
1 (0x01) 3 Reserved1
4 (0x04) 4 TableChecksum Up-case Table checksum
8 (0x08) 12 Reserved2
20 (0x14) 4 FirstCluster
24 (0x18) 8 DataLength

The checksum is calculated against DataLength bytes of Up-case Table according to the following code:

UINT32 UpCaseTableChecksum(const unsigned char data[], int bytes)
{
UINT32 checksum = 0;
for (int i = 0; i < bytes; i++)
checksum = (checksum << 31) | (checksum >> 1) + data[i];
return checksum;
}