Code:
static BYTE Decryption( BYTE byEncryptionKey, BYTE byData )
{
return ((signed int)(unsigned __int8)(byEncryptionKey ^ ~byData ^ 0x7B) >> 4) | 16 * (unsigned __int8)(byEncryptionKey ^ ~byData ^ 0x7B);
}
Code:
v29 = 1;
for ( i = 0; i < nFileHeaderSize; ++i )
{
v2 = Decryption(byEncryptionKey, *(_BYTE *)(v29 + pCryptHeader));
*(_BYTE *)(i + pHeader) = i % 0x25 ^ v2 ^ 0xD7;
v29 += 2;
}
rest is pretty much straight forward