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