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;
}