Там цикл на 32 итерации. Наверняка это можно привести к табличной
форме, но, увы, лень одолела: DWORD Crc32Rev(DWORD CurrentCrc, DWORD DesiredCrc)
{
DWORD Data;
int i;
for(i=0; i<32; i++)
if (DesiredCrc & 0x00000001)
#if 1
DesiredCrc = ((DesiredCrc ^ 0x04C11DB7) >> 1) | 0x80000000; // Long form
#else // or
DesiredCrc = (DesiredCrc >> 1) ^ 0x82608EDB; // Back feeding polynomial
#endif
else
DesiredCrc = (DesiredCrc >> 1);
Data = DesiredCrc ^ CurrentCrc;
return(Data); // Data Pattern to get Desired CRC from Current CRC
}