DWORD L2FileCheck(char *file)
!e7vc[N
{
!e7vc[N
DWORD Check=0xFFFFFFFF;
!e7vc[N
HANDLE hFile;
!e7vc[N
DWORD dwFileSize;
!e7vc[N
DWORD dwNumberOfBytesReadWritten;
!e7vc[N
HANDLE hMemory;
!e7vc[N
LPVOID pMemory;
!e7vc[N
char filename[MAX_PATH];
!e7vc[N
BYTE *temp;
!e7vc[N
BYTE temp1,temp2;
!e7vc[N
int Max=0,Min=0;
!e7vc[N
temp =(unsigned char *)malloc(0x1000);
!e7vc[N
hFile=CreateFile(file, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, 0);
!e7vc[N
if(hFile != INVALID_HANDLE_value)
!e7vc[N
{
!e7vc[N
dwFileSize=GetFileSize(hFile, NULL);
!e7vc[N
hMemory=GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwFileSize);
!e7vc[N
pMemory=GlobalLock(hMemory);
!e7vc[N
Max = (dwFileSize-0x14)/0x1000;
!e7vc[N
Min = (dwFileSize-0x14)%0x1000;
!e7vc[N
for(int j=0;j<Max;j++)
!e7vc[N
{
!e7vc[N
ReadFile(hFile,pMemory,0x1000,&dwNumberOfBytesReadWritten,NULL);
!e7vc[N
memcpy(temp,pMemory,0x1000);
!e7vc[N
for(int k=0;k<0x1000;k++)
!e7vc[N
{
!e7vc[N
temp1=*(BYTE *)(temp+k);
!e7vc[N
temp2=(Check&0x000000FF) ^ temp1;
!e7vc[N
Check=(Check >> 8) ^ FileCheck[temp2];
!e7vc[N
}
!e7vc[N
}
!e7vc[N
ReadFile(hFile,pMemory,Min,&dwNumberOfBytesReadWritten,NULL);
!e7vc[N
memcpy(temp,pMemory,0x1000);
!e7vc[N
for(j=0;j<Min;j++)
!e7vc[N
{
!e7vc[N
BYTE temp1,temp2;
!e7vc[N
temp1=*(BYTE *)(temp+j);
!e7vc[N
temp2=(Check&0x000000FF) ^ temp1;
!e7vc[N
Check=(Check >> 8) ^ FileCheck[temp2];
!e7vc[N
}
!e7vc[N
_asm {
!e7vc[N
push ecx
!e7vc[N
mov ecx,Check
!e7vc[N
not ecx
!e7vc[N
mov Check,ecx
!e7vc[N
pop ecx
!e7vc[N
}
!e7vc[N
CloseHandle(hFile);
!e7vc[N
GlobalUnlock(pMemory);
!e7vc[N
GlobalFree(hMemory);
!e7vc[N
free(temp);
!e7vc[N
return Check;
!e7vc[N
}
!e7vc[N
else
!e7vc[N
{
!e7vc[N
return 0;
!e7vc[N
}
!e7vc[N
}
!e7vc[N