Guest User

Untitled

a guest
Jun 18th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. int fval, work, right, leftt;
  2. int round;
  3. int keysi = 0;
  4.  
  5. leftt = inInts[0];
  6. right = inInts[1];
  7.  
  8. work = ((leftt >> 4) ^ right) & 0x0f0f0f0f;
  9. right ^= work;
  10. leftt ^= (work << 4);
  11.  
  12. work = ((leftt >> 16) ^ right) & 0x0000ffff;
  13. right ^= work;
  14. leftt ^= (work << 16);
  15.  
  16. work = ((right >> 2) ^ leftt) & 0x33333333;
  17. leftt ^= work;
  18. right ^= (work << 2);
  19.  
  20. work = ((right >> 8) ^ leftt) & 0x00ff00ff;
  21. leftt ^= work;
  22. right ^= (work << 8);
  23. right = (right << 1) | ((right >> 31) & 1);
  24.  
  25. work = (leftt ^ right) & 0xaaaaaaaa;
  26. leftt ^= work;
  27. right ^= work;
  28. leftt = (leftt << 1) | ((leftt >> 31) & 1);
  29.  
  30. for ( round = 0; round < 8; ++round )
  31. {
  32. work = (right << 28) | (right >> 4);
  33. work ^= keys[keysi++];
  34. fval = SP7[ work & 0x0000003f ];
  35. fval |= SP5[(work >> 8) & 0x0000003f ];
  36. fval |= SP3[(work >> 16) & 0x0000003f ];
  37. fval |= SP1[(work >> 24) & 0x0000003f ];
  38. work = right ^ keys[keysi++];
  39. fval |= SP8[ work & 0x0000003f ];
  40. fval |= SP6[(work >> 8) & 0x0000003f ];
  41. fval |= SP4[(work >> 16) & 0x0000003f ];
  42. fval |= SP2[(work >> 24) & 0x0000003f ];
  43. leftt ^= fval;
  44. work = (leftt << 28) | (leftt >>> 4);
  45. work ^= keys[keysi++];
  46. fval = SP7[ work & 0x0000003f ];
  47. fval |= SP5[(work >> 8) & 0x0000003f ];
  48. fval |= SP3[(work >> 16) & 0x0000003f ];
  49. fval |= SP1[(work >> 24) & 0x0000003f ];
  50. work = leftt ^ keys[keysi++];
  51. fval |= SP8[ work & 0x0000003f ];
  52. fval |= SP6[(work >> 8) & 0x0000003f ];
  53. fval |= SP4[(work >> 16) & 0x0000003f ];
  54. fval |= SP2[(work >> 24) & 0x0000003f ];
  55. right ^= fval;
  56. }
  57.  
  58. right = (right << 31) | (right >> 1);
  59. work = (leftt ^ right) & 0xaaaaaaaa;
  60. leftt ^= work;
  61. right ^= work;
  62. leftt = (leftt << 31) | (leftt >> 1);
  63. work = ((leftt >> 8) ^ right) & 0x00ff00ff;
  64. right ^= work;
  65. leftt ^= (work << 8);
  66. work = ((leftt >> 2) ^ right) & 0x33333333;
  67. right ^= work;
  68. leftt ^= (work << 2);
  69. work = ((right >> 16) ^ leftt) & 0x0000ffff;
  70. leftt ^= work;
  71. right ^= (work << 16);
  72. work = ((right >> 4) ^ leftt) & 0x0f0f0f0f;
  73. leftt ^= work;
  74. right ^= (work << 4);
  75. outInts[0] = right;
  76. outInts[1] = leftt;
Add Comment
Please, Sign In to add comment