diff --git a/source/D2Hell/src/CRC.cpp b/source/D2Hell/src/CRC.cpp index ef6570b0d..5f8d0cf31 100644 --- a/source/D2Hell/src/CRC.cpp +++ b/source/D2Hell/src/CRC.cpp @@ -4,7 +4,7 @@ // D2Game.0x6FD2A248 uint32_t sgCrc32LookupTable[256] { - 0x0,77073096, 0x0EE0E612C, 0x990951BA, 0x76DC419, 0x706AF48F, 0x0E963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0x0E0D5E91E, 0x97D2D988, 0x9B64C2B, 0x7EB17CBD, 0x0E7B82D07, 0x90BF1D91, + 0x0, 0x77073096, 0x0EE0E612C, 0x990951BA, 0x76DC419, 0x706AF48F, 0x0E963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0x0E0D5E91E, 0x97D2D988, 0x9B64C2B, 0x7EB17CBD, 0x0E7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0x0F3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0x0F4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0x0FD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0x0FA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0x0D56041E4, 0x0A2677172, 0x3C03E4D1, 0x4B04D447, 0x0D20D85FD, 0x0A50AB56B, 0x35B5A8FA, 0x42B2986C, 0x0DBBBC9D6, 0x0ACBCF940, 0x32D86CE3, 0x45DF5C75, 0x0DCD60DCF, 0x0ABD13D59, 0x26D930AC, 0x51DE003A, 0x0C8D75180, 0x0BFD06116, 0x21B4F4B5, 0x56B3C423, 0x0CFBA9599, 0x0B8BDA50F, 0x2802B89E, 0x5F058808, 0x0C60CD9B2, 0x0B10BE924, 0x2F6F7C87, 0x58684C11, 0x0C1611DAB, 0x0B6662D3D, @@ -23,14 +23,15 @@ uint32_t sgCrc32LookupTable[256] }; //D2Game.0x6FD269D3 +//1.14d: 0x006C99F6 uint32_t CRC32_Compute(void* pData, size_t dwSize) { D2_ASSERT(dwSize); uint32_t nCRC32 = 0xFFFFFFFFu; - for (int i = 0; i < dwSize; i++) + for (size_t i = 0; i < dwSize; i++) { const uint8_t nByte = ((uint8_t*)pData)[i]; - nCRC32 = sgCrc32LookupTable[nCRC32 ^ nByte] ^ (nCRC32 >> 8); + nCRC32 = sgCrc32LookupTable[(nCRC32 ^ nByte) & 0xFF] ^ (nCRC32 >> 8); } - return nCRC32; + return ~nCRC32; }