C compatability from d-p (#519)
This commit is contained in:
parent
47bf82b059
commit
b5f69dccdc
39 changed files with 258 additions and 342 deletions
|
|
@ -6,9 +6,12 @@ DWORD hashtable[1280];
|
|||
|
||||
void __fastcall Decrypt(void *block, DWORD size, DWORD key)
|
||||
{
|
||||
DWORD *castBlock = (DWORD *)block;
|
||||
DWORD seed = 0xEEEEEEEE;
|
||||
for (DWORD i = 0; i < (size >> 2); i++) {
|
||||
DWORD *castBlock;
|
||||
DWORD seed, i;
|
||||
|
||||
castBlock = (DWORD *)block;
|
||||
seed = 0xEEEEEEEE;
|
||||
for (i = 0; i < (size >> 2); i++) {
|
||||
seed += hashtable[0x400 + (key & 0xFF)];
|
||||
*castBlock ^= seed + key;
|
||||
seed += *castBlock + (seed << 5) + 3;
|
||||
|
|
@ -19,10 +22,13 @@ void __fastcall Decrypt(void *block, DWORD size, DWORD key)
|
|||
|
||||
void __fastcall Encrypt(void *block, DWORD size, DWORD key)
|
||||
{
|
||||
DWORD *castBlock = (DWORD *)block;
|
||||
DWORD seed = 0xEEEEEEEE;
|
||||
for (DWORD i = 0; i < (size >> 2); i++) {
|
||||
DWORD ch = *castBlock;
|
||||
DWORD *castBlock;
|
||||
DWORD seed, i, ch;
|
||||
|
||||
castBlock = (DWORD *)block;
|
||||
seed = 0xEEEEEEEE;
|
||||
for (i = 0; i < (size >> 2); i++) {
|
||||
ch = *castBlock;
|
||||
seed += hashtable[0x400 + (key & 0xFF)];
|
||||
*castBlock ^= seed + key;
|
||||
seed += ch + (seed << 5) + 3;
|
||||
|
|
@ -34,8 +40,10 @@ void __fastcall Encrypt(void *block, DWORD size, DWORD key)
|
|||
DWORD __fastcall Hash(const char *s, int type)
|
||||
{
|
||||
char ch;
|
||||
DWORD seed1 = 0x7FED7FED;
|
||||
DWORD seed2 = 0xEEEEEEEE;
|
||||
DWORD seed1, seed2;
|
||||
|
||||
seed1 = 0x7FED7FED;
|
||||
seed2 = 0xEEEEEEEE;
|
||||
while (s != NULL && *s) {
|
||||
ch = *s++;
|
||||
ch = toupper(ch);
|
||||
|
|
@ -47,12 +55,15 @@ DWORD __fastcall Hash(const char *s, int type)
|
|||
|
||||
void __cdecl InitHash()
|
||||
{
|
||||
DWORD seed = 0x00100001;
|
||||
DWORD seed, ch;
|
||||
int i, j;
|
||||
|
||||
for (int i = 0; i < 256; i++) {
|
||||
for (int j = 0; j < 5; j++) {
|
||||
seed = 0x00100001;
|
||||
|
||||
for ( i = 0; i < 256; i++) {
|
||||
for ( j = 0; j < 5; j++) {
|
||||
seed = (125 * seed + 3) % 0x2AAAAB;
|
||||
DWORD ch = (seed & 0xFFFF);
|
||||
ch = (seed & 0xFFFF);
|
||||
seed = (125 * seed + 3) % 0x2AAAAB;
|
||||
hashtable[i + j * 256] = ch << 16 | (seed & 0xFFFF);
|
||||
}
|
||||
|
|
@ -61,24 +72,28 @@ void __cdecl InitHash()
|
|||
|
||||
int __fastcall PkwareCompress(void *buf, int size)
|
||||
{
|
||||
BYTE *srcData = (BYTE *)buf;
|
||||
char *ptr = (char *)DiabloAllocPtr(CMP_BUFFER_SIZE);
|
||||
BYTE *srcData, *destData;
|
||||
char *ptr;
|
||||
unsigned int destSize, type, dsize;
|
||||
TDataInfo param;
|
||||
|
||||
unsigned int destSize = 2 * size;
|
||||
srcData = (BYTE *)buf;
|
||||
ptr = (char *)DiabloAllocPtr(CMP_BUFFER_SIZE);
|
||||
|
||||
destSize = 2 * size;
|
||||
if (destSize < 8192)
|
||||
destSize = 8192;
|
||||
|
||||
BYTE *destData = (BYTE *)DiabloAllocPtr(destSize);
|
||||
destData = (BYTE *)DiabloAllocPtr(destSize);
|
||||
|
||||
TDataInfo param;
|
||||
param.srcData = srcData;
|
||||
param.srcOffset = 0;
|
||||
param.destData = destData;
|
||||
param.destOffset = 0;
|
||||
param.size = size;
|
||||
|
||||
unsigned int type = 0;
|
||||
unsigned int dsize = 4096;
|
||||
type = 0;
|
||||
dsize = 4096;
|
||||
implode(PkwareBufferRead, PkwareBufferWrite, ptr, ¶m, &type, &dsize);
|
||||
|
||||
if (param.destOffset < size) {
|
||||
|
|
@ -94,9 +109,11 @@ int __fastcall PkwareCompress(void *buf, int size)
|
|||
|
||||
unsigned int __cdecl PkwareBufferRead(char *buf, unsigned int *size, void *param)
|
||||
{
|
||||
TDataInfo *pInfo = (TDataInfo *)param;
|
||||
|
||||
TDataInfo *pInfo;
|
||||
DWORD sSize;
|
||||
|
||||
pInfo = (TDataInfo *)param;
|
||||
|
||||
if (*size >= pInfo->size - pInfo->srcOffset) {
|
||||
sSize = pInfo->size - pInfo->srcOffset;
|
||||
} else {
|
||||
|
|
@ -111,7 +128,9 @@ unsigned int __cdecl PkwareBufferRead(char *buf, unsigned int *size, void *param
|
|||
|
||||
void __cdecl PkwareBufferWrite(char *buf, unsigned int *size, void *param)
|
||||
{
|
||||
TDataInfo *pInfo = (TDataInfo *)param;
|
||||
TDataInfo *pInfo;
|
||||
|
||||
pInfo = (TDataInfo *)param;
|
||||
|
||||
memcpy(pInfo->destData + pInfo->destOffset, buf, *size);
|
||||
pInfo->destOffset += *size;
|
||||
|
|
@ -119,11 +138,14 @@ void __cdecl PkwareBufferWrite(char *buf, unsigned int *size, void *param)
|
|||
|
||||
void __fastcall PkwareDecompress(void *param, int recv_size, int dwMaxBytes)
|
||||
{
|
||||
char *ptr = (char *)DiabloAllocPtr(CMP_BUFFER_SIZE);
|
||||
BYTE *pbInBuff = (BYTE *)param;
|
||||
BYTE *pbOutBuff = DiabloAllocPtr(dwMaxBytes);
|
||||
|
||||
char *ptr;
|
||||
BYTE *pbInBuff, *pbOutBuff;
|
||||
TDataInfo info;
|
||||
|
||||
ptr = (char *)DiabloAllocPtr(CMP_BUFFER_SIZE);
|
||||
pbInBuff = (BYTE *)param;
|
||||
pbOutBuff = DiabloAllocPtr(dwMaxBytes);
|
||||
|
||||
info.srcData = pbInBuff;
|
||||
info.srcOffset = 0;
|
||||
info.destData = pbOutBuff;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue