Part of code for decrypt RAS archives from game Max Payne 1/2 (Android / PC). Maybe usefull for someone

Code:
struct RASHeader
{
DWORD dwID;
DWORD dwSeed;
};
Code:
void DecryptWithSeed(unsigned char *pBuffer, int dwSize, int dwSeed)
{
if (!dwSeed)
dwSeed = 1;
if (dwSize > 0)
{
char wSeed = 18;
char pTemp;
for (int i = 0; i < dwSize; ++i)
{
dwSeed = -2 * (dwSeed / 177) + 171 * (dwSeed % 177);
pTemp = ((pBuffer[i] << i % 5) | ((signed int)pBuffer[i] >> (8 - i % 5))) ^ wSeed;
wSeed += 6;
pBuffer[i] = pTemp + dwSeed;
}
}
}