Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed int PTEA_Decrypt(BYTE * DataDecrypt, int len, BYTE * DataCrypted, uint key[4])
- {
- int v6; // ecx@2
- int v7; // eax@4
- uint v8; // ecx@4
- uint v10; // ecx@5
- uint v11; // eax@5
- uint v12; // ecx@5
- int v13; // esi@5
- uint v14; // ebx@5
- uint v15; // ecx@5
- int v16; // esi@5
- uint v17; // ebx@5
- uint DELTA;
- uint SUM;
- int NumberOfRound;
- uint NewLen;
- if (len > 0)
- {
- v6 = DataCrypted - DataDecrypt;
- NewLen = ((len - 1) >> 3) + 1;
- for (int i = DataCrypted - DataDecrypt;; v6 = i)
- {
- v7 = *(DWORD *)(v6 + DataDecrypt);
- v8 = *(DWORD *)(v6 + DataDecrypt + 4);
- *(DWORD *)DataDecrypt = v7;
- DataDecrypt[4] = v8;
- DELTA = 0xE3779B90;
- SUM = 0x61C88647;
- NumberOfRound = 4;
- do
- {
- v10 = v8 - ((DELTA + *(&key[0] + ((DELTA >> 11) & 3))) ^ (*(DWORD *)DataDecrypt + ((*(DWORD *)DataDecrypt >> 5) ^ 16 * *(DWORD *)DataDecrypt)));
- v11 = DELTA + SUM;
- *(DWORD *)DataDecrypt -= (v11 + *(&key[0] + (v11 & 3))) ^ (v10 + ((v10 >> 5) ^ 16 * v10));
- v12 = v10
- - ((v11 + *(&key[0] + ((v11 >> 11) & 3))) ^ (*(DWORD *)DataDecrypt + ((*(DWORD *)DataDecrypt >> 5) ^ 16 * *(DWORD *)DataDecrypt)));
- v11 += SUM;
- v13 = *(DWORD *)DataDecrypt - ((v11 + *(&key[0] + (v11 & 3))) ^ (v12 + ((v12 >> 5) ^ 16 * v12)));
- v14 = *(DWORD *)DataDecrypt - ((v11 + *(&key[0] + (v11 & 3))) ^ (v12 + ((v12 >> 5) ^ 16 * v12)));
- *(DWORD *)DataDecrypt = v13;
- v15 = v12 - ((v11 + *(&key[0] + ((v11 >> 11) & 3))) ^ (v13 + ((v14 >> 5) ^ 16 * v13)));
- v11 += SUM;
- v16 = *(DWORD *)DataDecrypt - ((v11 + *(&key[0] + (v11 & 3))) ^ (v15 + ((v15 >> 5) ^ 16 * v15)));
- v17 = *(DWORD *)DataDecrypt - ((v11 + *(&key[0] + (v11 & 3))) ^ (v15 + ((v15 >> 5) ^ 16 * v15)));
- *(DWORD *)DataDecrypt = v16;
- v8 = v15 - ((v11 + *(&key[0] + ((v11 >> 11) & 3))) ^ (v16 + ((v17 >> 5) ^ 16 * v16)));
- DELTA = v11 + SUM;
- *(DWORD *)DataDecrypt -= (DELTA + *(&key[0] + (DELTA & 3))) ^ (v8 + ((v8 >> 5) ^ 16 * v8));
- --NumberOfRound;
- }
- while (NumberOfRound);
- *(DWORD *)(DataDecrypt + 4) = v8;
- DataDecrypt += 8;
- if (!--NewLen)
- break;
- }
- }
- return 8;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement