MaxtorCoder

Packet::WriteBits

Nov 27th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.34 KB | None | 0 0
  1. int __usercall Packet::WriteBits@<eax>(unsigned int *a1@<edx>, _DWORD **a2@<ecx>, int a3, int a4, unsigned int a5)
  2. {
  3.   unsigned int *v5; // esi
  4.   signed int v6; // ebx
  5.   int v7; // edx
  6.   signed int v8; // ebx
  7.   unsigned int v9; // eax
  8.   _DWORD *v10; // edi
  9.   signed int v11; // ecx
  10.   signed int v12; // esi
  11.   int v13; // ecx
  12.   int v14; // edx
  13.   char v15; // al
  14.   _DWORD *v16; // edx
  15.   int result; // eax
  16.   int *v18; // [esp+Ch] [ebp-8h]
  17.   _DWORD *v19; // [esp+10h] [ebp-4h]
  18.  
  19.   v5 = a1;
  20.   v18 = (int *)a1;
  21.   v19 = a2;
  22.   if ( a5 >= 0x40 )
  23.   {
  24.     v8 = -1;
  25.   }
  26.   else
  27.   {
  28.     v6 = 0;
  29.     if ( a5 >= 0x20 )
  30.       v6 = 1 << a5;
  31.     v7 = v6 ^ (1 << a5);
  32.     if ( a5 >= 0x40 )
  33.       v6 ^= 1 << a5;
  34.     v8 = (__PAIR__((unsigned int)v6, v7) - 1) >> 32;
  35.   }
  36.   v9 = *v5;
  37.   v10 = *a2;
  38.   v11 = 1 << *v5;
  39.   v12 = 0;
  40.   if ( v9 >= 0x20 )
  41.     v12 = v11;
  42.   v13 = v12 ^ v11;
  43.   if ( v9 >= 0x40 )
  44.     v12 = v13;
  45.   v10[1] &= (__PAIR__((unsigned int)v12, v13) - 1) >> 32;
  46.   *v10 &= v13 - 1;
  47.   *v10 |= sub_B900E0(*v18, a4 & v8);
  48.   v10[1] |= v14;
  49.   if ( ((*v18 + a5 + 7) & 0xFFFFFFF8) <= 0x40 )
  50.   {
  51.     v16 = v19;
  52.   }
  53.   else
  54.   {
  55.     v15 = sub_A83520(64 - *v18, a4);
  56.     v16 = v19;
  57.     *(_BYTE *)(*v19 + 8) = v15;
  58.   }
  59.   *v16 += (a5 + *v18) >> 3;
  60.   result = ((_BYTE)a5 + (unsigned __int8)*v18) & 7;
  61.   *v18 = result;
  62.   return result;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment