Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. signed int PTEA_Decrypt(BYTE * DataDecrypt, int len, BYTE * DataCrypted, uint key[4])
  2. {
  3. int v6; // ecx@2
  4. int v7; // eax@4
  5. uint v8; // ecx@4
  6.  
  7. uint v10; // ecx@5
  8. uint v11; // eax@5
  9. uint v12; // ecx@5
  10. int v13; // esi@5
  11. uint v14; // ebx@5
  12. uint v15; // ecx@5
  13. int v16; // esi@5
  14. uint v17; // ebx@5
  15.  
  16. uint DELTA;
  17. uint SUM;
  18. int NumberOfRound;
  19. uint NewLen;
  20.  
  21. if (len > 0)
  22. {
  23. v6 = DataCrypted - DataDecrypt;
  24. NewLen = ((len - 1) >> 3) + 1;
  25. for (int i = DataCrypted - DataDecrypt;; v6 = i)
  26. {
  27. v7 = *(DWORD *)(v6 + DataDecrypt);
  28. v8 = *(DWORD *)(v6 + DataDecrypt + 4);
  29. *(DWORD *)DataDecrypt = v7;
  30. DataDecrypt[4] = v8;
  31. DELTA = 0xE3779B90;
  32. SUM = 0x61C88647;
  33. NumberOfRound = 4;
  34. do
  35. {
  36. v10 = v8 - ((DELTA + *(&key[0] + ((DELTA >> 11) & 3))) ^ (*(DWORD *)DataDecrypt + ((*(DWORD *)DataDecrypt >> 5) ^ 16 * *(DWORD *)DataDecrypt)));
  37. v11 = DELTA + SUM;
  38. *(DWORD *)DataDecrypt -= (v11 + *(&key[0] + (v11 & 3))) ^ (v10 + ((v10 >> 5) ^ 16 * v10));
  39. v12 = v10
  40. - ((v11 + *(&key[0] + ((v11 >> 11) & 3))) ^ (*(DWORD *)DataDecrypt + ((*(DWORD *)DataDecrypt >> 5) ^ 16 * *(DWORD *)DataDecrypt)));
  41. v11 += SUM;
  42. v13 = *(DWORD *)DataDecrypt - ((v11 + *(&key[0] + (v11 & 3))) ^ (v12 + ((v12 >> 5) ^ 16 * v12)));
  43. v14 = *(DWORD *)DataDecrypt - ((v11 + *(&key[0] + (v11 & 3))) ^ (v12 + ((v12 >> 5) ^ 16 * v12)));
  44. *(DWORD *)DataDecrypt = v13;
  45. v15 = v12 - ((v11 + *(&key[0] + ((v11 >> 11) & 3))) ^ (v13 + ((v14 >> 5) ^ 16 * v13)));
  46. v11 += SUM;
  47. v16 = *(DWORD *)DataDecrypt - ((v11 + *(&key[0] + (v11 & 3))) ^ (v15 + ((v15 >> 5) ^ 16 * v15)));
  48. v17 = *(DWORD *)DataDecrypt - ((v11 + *(&key[0] + (v11 & 3))) ^ (v15 + ((v15 >> 5) ^ 16 * v15)));
  49. *(DWORD *)DataDecrypt = v16;
  50. v8 = v15 - ((v11 + *(&key[0] + ((v11 >> 11) & 3))) ^ (v16 + ((v17 >> 5) ^ 16 * v16)));
  51. DELTA = v11 + SUM;
  52. *(DWORD *)DataDecrypt -= (DELTA + *(&key[0] + (DELTA & 3))) ^ (v8 + ((v8 >> 5) ^ 16 * v8));
  53.  
  54. --NumberOfRound;
  55. }
  56. while (NumberOfRound);
  57.  
  58. *(DWORD *)(DataDecrypt + 4) = v8;
  59.  
  60. DataDecrypt += 8;
  61.  
  62. if (!--NewLen)
  63. break;
  64. }
  65. }
  66. return 8;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement