MaxtorCoder

ReadWriteBit

Nov 27th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.33 KB | None | 0 0
  1. int __thiscall Packet::WriteReadBitArray(_DWORD *this, _DWORD *a2, int a3)
  2. {
  3.   _DWORD *v3; // esi
  4.   _DWORD *v4; // edi
  5.   int v5; // edx
  6.   unsigned int v6; // edx
  7.   int v7; // ecx
  8.   __int64 v8; // rax
  9.   int *v10; // [esp+14h] [ebp-4h]
  10.   unsigned int v11; // [esp+24h] [ebp+Ch]
  11.  
  12.   v3 = a2;
  13.   v4 = this;
  14.   *a2 = 0;
  15.   v5 = this[2];
  16.   a2[1] = 0;
  17.   if ( v5 )
  18.     v6 = *(_DWORD *)(v5 + 16) - this[3];
  19.   else
  20.     v6 = 0;
  21.   v7 = a3;
  22.   v11 = a3 + v4[4];
  23.   if ( v6 < (v11 + 7) >> 3 )
  24.     return sub_69B480(v4, a2, v7);
  25.   v10 = (int *)v4[3];
  26.   switch ( (unsigned int)(v7 + 7) >> 3 )
  27.   {
  28.     case 1u:
  29.       v8 = (unsigned __int8)sub_69BA50(v4 + 4, (int)(v4 + 3), v7);
  30.       goto LABEL_10;
  31.     case 2u:
  32.       LOWORD(v8) = sub_69BB40(v4[4], (int)v10, v7);
  33.       v4[3] = (char *)v10 + (v11 >> 3);
  34.       v4[4] = v11 & 7;
  35.       v8 = (unsigned __int16)v8;
  36.       goto LABEL_10;
  37.     case 3u:
  38.     case 4u:
  39.       *a2 = sub_69BAD0(v4 + 4, (int)(v4 + 3), v7);
  40.       v4[1] += v4[3] - (_DWORD)v10;
  41.       a2[1] = 0;
  42.       return 0;
  43.     case 5u:
  44.     case 6u:
  45.     case 7u:
  46.     case 8u:
  47.       LODWORD(v8) = sub_484200(v4[4], v10, v7);
  48.       v4[4] = v11 & 7;
  49.       v3 = a2;
  50.       v4[3] = (char *)v10 + (v11 >> 3);
  51. LABEL_10:
  52.       *(_QWORD *)v3 = v8;
  53.       break;
  54.     default:
  55.       break;
  56.   }
  57.   v4[1] += v4[3] - (_DWORD)v10;
  58.   return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment