daily pastebin goal
19%
SHARE
TWEET

Untitled

a guest Nov 14th, 2017 114 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const unsigned __int16 *__fastcall Aska::IdxBufComp::GenerateCompressedIndices(Aska::IdxBufComp *this, const unsigned __int16 *a2, unsigned int a3, unsigned __int8 *a4, unsigned int a5, unsigned int *a6)
  2. {
  3.   Aska::IdxBufComp *v6; // r5
  4.   unsigned __int8 *v7; // r4
  5.   const unsigned __int16 *v8; // r6
  6.   unsigned __int8 *v9; // r7
  7.   Aska::BitStreamWriter *v10; // r0
  8.   signed int v11; // r9
  9.   unsigned int v12; // r7
  10.   unsigned int v13; // r11
  11.   unsigned int v14; // r10
  12.   int v15; // r1
  13.   signed int v16; // r2
  14.   int v17; // r0
  15.   int v18; // r1
  16.   signed int v19; // r3
  17.   signed int v20; // r0
  18.   int v21; // r0
  19.   unsigned __int16 *v22; // r4
  20.   int v23; // t1
  21.   unsigned __int16 *v24; // r1
  22.   int v25; // r3
  23.   signed int v26; // r0
  24.   bool v27; // cf
  25.   unsigned int v29; // [sp+4h] [bp-64h]
  26.   unsigned __int8 v30[4]; // [sp+8h] [bp-60h]
  27.   unsigned __int8 v31[4]; // [sp+Ch] [bp-5Ch]
  28.   unsigned __int8 v32[4]; // [sp+10h] [bp-58h]
  29.   char v33; // [sp+14h] [bp-54h]
  30.   unsigned __int8 v34[4]; // [sp+40h] [bp-28h]
  31.  
  32.   v6 = this;
  33.   v7 = (unsigned __int8 *)a3;
  34.   v8 = a2;
  35.   v9 = a4;
  36.   v29 = a3;
  37.   *(_DWORD *)v34 = a2;
  38.   v10 = (Aska::BitStreamWriter *)Aska::BitStreamWriter::BitStreamWriter((Aska::BitStreamWriter *)&v33);
  39.   Aska::BitStreamWriter::Borrow(v10, v7, (unsigned int)v9);
  40.   if ( v7 )
  41.   {
  42.     v8 = 0;
  43.     if ( Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, v34, 0x20u) != 1
  44.       || Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, (const unsigned __int8 *)v6, 0x10u) != 1 )
  45.     {
  46.       goto LABEL_37;
  47.     }
  48.     v8 = *(const unsigned __int16 **)v34;
  49.   }
  50.   v11 = 48;
  51.   *(_DWORD *)v32 = *(unsigned __int16 *)v6;
  52.   if ( (unsigned int)v8 < 2 )
  53.   {
  54. LABEL_36:
  55.     v8 = (_WORD *)(&dword_0 + 1);
  56.     *(_DWORD *)a5 = (unsigned int)(v11 + 7) >> 3;
  57.   }
  58.   else
  59.   {
  60.     v11 = 48;
  61.     v12 = 3;
  62.     v13 = 1;
  63.     while ( 1 )
  64.     {
  65.       v14 = v13;
  66.       if ( v13 < (unsigned int)v8 )
  67.       {
  68.         v15 = *(_DWORD *)v32;
  69.         v14 = v13;
  70.         do
  71.         {
  72.           v16 = 64;
  73.           v17 = *((unsigned __int16 *)v6 + v14);
  74.           v18 = (v17 - v15) ^ ((v17 - v15) >> 31);
  75.           do
  76.           {
  77.             v19 = 0;
  78.             if ( !v16 )
  79.               break;
  80.             v19 = --v16;
  81.           }
  82.           while ( !(v18 & (1 << v16)) );
  83.           if ( v19 + 2 > v12 )
  84.             break;
  85.           ++v14;
  86.           v15 = v17;
  87.         }
  88.         while ( v14 < (unsigned int)v8 );
  89.       }
  90.       v11 += 16;
  91.       *(_DWORD *)v31 = v14 - v13;
  92.       v20 = v11;
  93.       if ( v7 )
  94.         v20 = Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, v31, 0x10u);
  95.       v8 = 0;
  96.       if ( !v20 )
  97.         break;
  98.       if ( v14 > v13 )
  99.       {
  100.         v21 = *(_DWORD *)v32;
  101.         if ( v7 )
  102.         {
  103.           v22 = (unsigned __int16 *)((char *)v6 + 2 * v13);
  104.           while ( 1 )
  105.           {
  106.             *(_DWORD *)v30 = *v22 - v21;
  107.             if ( Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, v30, v12) != 1 )
  108.               break;
  109.             v23 = *v22;
  110.             ++v22;
  111.             v21 = v23;
  112.             ++v13;
  113.             v11 += v12;
  114.             *(_DWORD *)v32 = v23;
  115.             if ( v13 >= v14 )
  116.               goto LABEL_26;
  117.           }
  118.         }
  119.         else
  120.         {
  121.           v24 = (unsigned __int16 *)((char *)v6 + 2 * v13);
  122.           while ( 1 )
  123.           {
  124.             v25 = *v24;
  125.             *(_DWORD *)v30 = v25 - v21;
  126.             if ( -v12 == v11 )
  127.               break;
  128.             ++v13;
  129.             v11 += v12;
  130.             ++v24;
  131.             v21 = v25;
  132.             *(_DWORD *)v32 = v25;
  133.             if ( v13 >= v14 )
  134.               goto LABEL_26;
  135.           }
  136.         }
  137.         break;
  138.       }
  139. LABEL_26:
  140.       if ( v12 < 5 )
  141.       {
  142.         v7 = (unsigned __int8 *)v29;
  143.       }
  144.       else
  145.       {
  146.         v7 = (unsigned __int8 *)v29;
  147.         v11 += 16;
  148.         *(_DWORD *)v32 = *((unsigned __int16 *)v6 + v13);
  149.         v26 = v11;
  150.         if ( v29 )
  151.           v26 = Aska::BitStreamWriter::WriteBits((Aska::BitStreamWriter *)&v33, v32, 0x10u);
  152.         if ( !v26 )
  153.           break;
  154.         ++v13;
  155.         v12 = 2;
  156.       }
  157.       v27 = ++v12 >= 0x1F;
  158.       if ( v12 <= 0x1F )
  159.       {
  160.         v8 = *(const unsigned __int16 **)v34;
  161.         v27 = v13 >= *(_DWORD *)v34;
  162.       }
  163.       if ( v27 )
  164.         goto LABEL_36;
  165.     }
  166.   }
  167. LABEL_37:
  168.   Aska::BitStreamWriter::~BitStreamWriter((Aska::BitStreamWriter *)&v33);
  169.   return v8;
  170. }
RAW Paste Data
Top