Advertisement
Guest User

Untitled

a guest
Aug 14th, 2018
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.79 KB | None | 0 0
  1. signed int __fastcall Aska::TriListComp::EncodeByHighWatermark(Aska::TriListComp *this, const unsigned __int16 *a2, signed __int8 *a3, unsigned __int16 *a4, unsigned int a5, unsigned int *a6)
  2. {
  3.   Aska::TriListComp *v6; // r8
  4.   const unsigned __int16 *v7; // r4
  5.   unsigned __int16 *v8; // r7
  6.   signed __int8 *v9; // r5
  7.   signed int v10; // r6
  8.   int *v11; // r1
  9.   bool v12; // zf
  10.   unsigned int *v13; // r0
  11.   unsigned int *v14; // r0
  12.   signed int v16; // r0
  13.   Aska::TriListComp *v17; // r12
  14.   int v18; // r1
  15.   int v19; // r2
  16.   unsigned __int16 *v20; // r3
  17.   signed int v21; // r7
  18.   unsigned __int16 v22; // r5
  19.   unsigned __int16 v23; // r6
  20.   int v24; // t1
  21.   int v25; // r5
  22.   int v26; // r7
  23.   unsigned __int16 *v27; // r3
  24.   signed int v28; // r6
  25.   int v29; // r2
  26.   int v30; // t1
  27.   int v31; // r5
  28.   unsigned int v32; // r6
  29.   int v33; // r7
  30.   int v34; // r8
  31.   __int16 v35; // [sp+0h] [bp-80h]
  32.   unsigned __int16 v36; // [sp+2h] [bp-7Eh]
  33.   int (**v37)(); // [sp+4h] [bp-7Ch]
  34.   unsigned __int64 v38; // [sp+8h] [bp-78h]
  35.   __int64 v39; // [sp+10h] [bp-70h]
  36.   int v40; // [sp+18h] [bp-68h]
  37.   int v41; // [sp+1Ch] [bp-64h]
  38.   _DWORD (__fastcall **v42)(Aska::StaticStream *__hidden); // [sp+20h] [bp-60h]
  39.   __int64 v43; // [sp+24h] [bp-5Ch]
  40.   __int64 v44; // [sp+2Ch] [bp-54h]
  41.   int v45; // [sp+34h] [bp-4Ch]
  42.  
  43.   v6 = this;
  44.   v7 = a2;
  45.   v8 = a4;
  46.   v9 = a3;
  47.   v10 = 0;
  48.   v42 = off_1FE09A0;
  49.   v43 = 0LL;
  50.   v44 = 0LL;
  51.   v45 = 0;
  52.   Aska::StaticStream::Open((Aska::StaticStream *)&v42, a3, (unsigned int)a4);
  53.   v12 = v9 == 0;
  54.   if ( !v9 )
  55.     v12 = v8 == 0;
  56.   if ( v12 )
  57.   {
  58.     v10 = 1;
  59.     *(_DWORD *)a5 = 2 * (_DWORD)v7 + 2;
  60.   }
  61.   else
  62.   {
  63.     v11 = (int *)((unsigned int)v8 >> 1);
  64.     if ( (unsigned int)v8 >> 1 >= (unsigned int)v7 + 1 )
  65.     {
  66.       v37 = &off_1FE0FC0;
  67.       v38 = 0LL;
  68.       v39 = 0LL;
  69.       v40 = 8;
  70.       v41 = 0;
  71.       if ( v6 )
  72.       {
  73.         v16 = (signed int)v7;
  74.         v17 = v6;
  75.         v38 = __PAIR__((unsigned int)v7, (unsigned int)v6);
  76.         LODWORD(v39) = v7;
  77.       }
  78.       else
  79.       {
  80.         Aska::TArray<unsigned short,false>::Resize(&v37, v7, 0);
  81.         v17 = (Aska::TriListComp *)v38;
  82.         v16 = v39;
  83.       }
  84.       if ( v16 >= 2 )
  85.       {
  86.         v18 = 0;
  87.         v20 = (unsigned __int16 *)((char *)v17 + 2);
  88.         v19 = *(unsigned __int16 *)v17;
  89.         v21 = 1;
  90.         v22 = *(_WORD *)v17;
  91.         do
  92.         {
  93.           v24 = *v20;
  94.           ++v20;
  95.           v23 = v24;
  96.           ++v21;
  97.           v25 = v22 - v24;
  98.           if ( v25 < 0 )
  99.             v25 = -v25;
  100.           if ( v25 > v18 )
  101.             v18 = v25;
  102.           v22 = v23;
  103.         }
  104.         while ( v16 != v21 );
  105.         v26 = v18 - 1;
  106.         if ( (unsigned int)(v18 - 1) <= 0xFFFD )
  107.         {
  108.           if ( v16 < 1 )
  109.           {
  110. LABEL_47:
  111.             v36 = v18;
  112.             if ( (unsigned __int16)v18 != 0xFFFF )
  113.             {
  114.               v10 = 0;
  115.               if ( ((int (__fastcall *)(_DWORD (__fastcall ***)(Aska::StaticStream *__hidden), unsigned __int16 *, signed int, signed int))v42[6])(
  116.                      &v42,
  117.                      &v36,
  118.                      2,
  119.                      1) != 1 )
  120.               {
  121. LABEL_57:
  122.                 LODWORD(v39) = 0;
  123.                 goto LABEL_6;
  124.               }
  125.               if ( !v7 )
  126.               {
  127. LABEL_55:
  128.                 *(_DWORD *)a5 = v42[3]((Aska::StaticStream *)&v42);
  129.                 v10 = 1;
  130.                 goto LABEL_57;
  131.               }
  132.               v31 = 0;
  133.               v32 = 0;
  134.               v33 = v36 - 1;
  135.               while ( 1 )
  136.               {
  137.                 v34 = *(unsigned __int16 *)(v38 + v31);
  138.                 v35 = v33 - v34;
  139.                 if ( ((int (__fastcall *)(_DWORD (__fastcall ***)(Aska::StaticStream *__hidden), __int16 *, signed int, signed int, _DWORD, int (**)()))v42[6])(
  140.                        &v42,
  141.                        &v35,
  142.                        2,
  143.                        1,
  144.                        *(_DWORD *)&v35,
  145.                        v37) != 1 )
  146.                   break;
  147.                 v31 += 2;
  148.                 ++v32;
  149.                 if ( v33 <= v36 + v34 )
  150.                   v33 = v36 + v34;
  151.                 if ( v32 >= (unsigned int)v7 )
  152.                   goto LABEL_55;
  153.               }
  154. LABEL_56:
  155.               v10 = 0;
  156.               goto LABEL_57;
  157.             }
  158. LABEL_44:
  159.             v35 = -1;
  160.             if ( ((int (__fastcall *)(_DWORD (__fastcall ***)(Aska::StaticStream *__hidden), __int16 *, signed int, signed int, _DWORD, int (**)()))v42[6])(
  161.                    &v42,
  162.                    &v35,
  163.                    2,
  164.                    1,
  165.                    *(_DWORD *)&v35,
  166.                    v37) == 1 )
  167.             {
  168.               v10 = 0;
  169.               if ( (const unsigned __int16 *)((int (__fastcall *)(_DWORD (__fastcall ***)(Aska::StaticStream *__hidden), Aska::TriListComp *, signed int, const unsigned __int16 *))v42[6])(
  170.                                                &v42,
  171.                                                v6,
  172.                                                2,
  173.                                                v7) != v7 )
  174.                 goto LABEL_57;
  175.               goto LABEL_55;
  176.             }
  177.             goto LABEL_56;
  178.           }
  179.           if ( v19 <= v26 )
  180.           {
  181.             v27 = (unsigned __int16 *)((char *)v17 + 2);
  182.             v28 = 1;
  183.             do
  184.             {
  185.               v29 = v19 + v18;
  186.               if ( v26 <= v29 )
  187.                 v26 = v29;
  188.               if ( v26 >= 0x10000 )
  189.                 break;
  190.               if ( v28 >= v16 )
  191.                 goto LABEL_47;
  192.               v30 = *v27;
  193.               ++v27;
  194.               v19 = v30;
  195.               ++v28;
  196.             }
  197.             while ( v30 <= v26 );
  198.           }
  199.         }
  200.       }
  201.       v36 = -1;
  202.       goto LABEL_44;
  203.     }
  204.   }
  205. LABEL_6:
  206.   v42 = off_1FE09A0;
  207.   v13 = (unsigned int *)HIDWORD(v44);
  208.   if ( !HIDWORD(v44) )
  209.     goto LABEL_60;
  210.   __dmb(0xBu);
  211.   do
  212.     v11 = (int *)__ldrex(v13);
  213.   while ( __strex((unsigned int)v11 - 1, v13) );
  214.   __dmb(0xBu);
  215.   if ( v11 == (int *)((char *)&dword_0 + 1) )
  216.   {
  217. LABEL_60:
  218.     if ( (_DWORD)v44 )
  219.       operator delete[]((void *)v44);
  220.     if ( HIDWORD(v44) )
  221.       Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v44), v11);
  222.   }
  223.   v44 = 0LL;
  224.   v14 = (unsigned int *)HIDWORD(v43);
  225.   if ( !HIDWORD(v43) )
  226.     goto LABEL_61;
  227.   __dmb(0xBu);
  228.   do
  229.     v11 = (int *)__ldrex(v14);
  230.   while ( __strex((unsigned int)v11 - 1, v14) );
  231.   __dmb(0xBu);
  232.   if ( v11 == (int *)((char *)&dword_0 + 1) )
  233.   {
  234. LABEL_61:
  235.     if ( (_DWORD)v43 )
  236.       operator delete[]((void *)v43);
  237.     if ( HIDWORD(v43) )
  238.       Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v43), v11);
  239.   }
  240.   LODWORD(v43) = 0;
  241.   return v10;
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement