Guest User

Untitled

a guest
May 6th, 2016
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.42 KB | None | 0 0
  1. BYTE *__cdecl sub_51A450(BYTE *pBuffer, signed __int64 dwSize, signed __int64 dwFlag1, int dwFlag2)
  2. {
  3.   BYTE *result;
  4.   int v5;
  5.   int v6;
  6.   int v7;
  7.   int v8;
  8.   BYTE *Buffer;
  9.   int v10;
  10.   unsigned int v11;
  11.   int v12;
  12.   int v13;
  13.   BYTE *v14;
  14.   unsigned int v15;
  15.   signed int v16;
  16.  
  17.   v16 = dwFlag1 % 12;
  18.   if ( dwSize > 0xFFFFFFFFi64 )
  19.   {
  20.     Buffer = pBuffer;
  21.     result = (BYTE *)dwFlag2;
  22.     if ( dwSize >= 12 )
  23.     {
  24.       if ( v16 )
  25.       {
  26.         do
  27.         {
  28.           *Buffer++ ^= *(BYTE *)(v16++ + dwFlag2);
  29.           result = (BYTE *)((unsigned __int64)(dwSize-- - 1) >> 32);
  30.         }
  31.         while ( v16 < 12 );
  32.         v16 = 0;
  33.       }
  34.       if ( dwSize >= 12 )
  35.       {
  36.         v6 = dwSize / 12;
  37.         dwSize -= (unsigned int)(12 * v6);
  38.         v8 = *(DWORD *)dwFlag2;
  39.         v7 = *(DWORD *)(dwFlag2 + 4);
  40.         v5 = *(DWORD *)(dwFlag2 + 8);
  41.         do
  42.         {
  43.           *(DWORD *)Buffer ^= v8;
  44.           *((DWORD *)Buffer + 1) ^= v7;
  45.           result = Buffer;
  46.           *((DWORD *)Buffer + 2) ^= v5;
  47.           Buffer += 12;
  48.           --v6;
  49.         }
  50.         while ( v6 );
  51.       }
  52.     }
  53.     if ( SHIDWORD(dwSize) >= 0 && (SHIDWORD(dwSize) > 0 || (DWORD)dwSize) )
  54.     {
  55.       do
  56.       {
  57.         *Buffer++ ^= *(BYTE *)(v16 + dwFlag2);
  58.         result = (BYTE *)(v16++ + 1);
  59.         if ( v16 == 12 )
  60.           v16 = 0;
  61.         --dwSize;
  62.       }
  63.       while ( SHIDWORD(dwSize) > 0 || SHIDWORD(dwSize) >= 0 && (DWORD)dwSize );
  64.     }
  65.   }
  66.   else
  67.   {
  68.     v15 = dwSize;
  69.     result = pBuffer;
  70.     v14 = pBuffer;
  71.     if ( (unsigned int)dwSize >= 0xC )
  72.     {
  73.       if ( v16 )
  74.       {
  75.         do
  76.         {
  77.           *v14++ ^= *(BYTE *)(v16++ + dwFlag2);
  78.           result = (BYTE *)(v15-- - 1);
  79.         }
  80.         while ( v16 < 12 );
  81.         v16 = 0;
  82.       }
  83.       if ( v15 >= 0xC )
  84.       {
  85.         v11 = v15 / 0xC;
  86.         v15 %= 0xCu;
  87.         v13 = *(DWORD *)dwFlag2;
  88.         v12 = *(DWORD *)(dwFlag2 + 4);
  89.         v10 = *(DWORD *)(dwFlag2 + 8);
  90.         do
  91.         {
  92.           *(DWORD *)v14 ^= v13;
  93.           *((DWORD *)v14 + 1) ^= v12;
  94.           result = v14;
  95.           *((DWORD *)v14 + 2) ^= v10;
  96.           v14 += 12;
  97.           --v11;
  98.         }
  99.         while ( v11 );
  100.       }
  101.     }
  102.     for ( ; v15; --v15 )
  103.     {
  104.       *v14++ ^= *(BYTE *)(v16 + dwFlag2);
  105.       result = (BYTE *)(v16++ + 1);
  106.       if ( v16 == 12 )
  107.         v16 = 0;
  108.     }
  109.   }
  110.   return result;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment