Advertisement
Guest User

Untitled

a guest
Aug 13th, 2018
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.77 KB | None | 0 0
  1. signed int __fastcall Aska::TriListComp::EncodeBySimpleLossLessCompression(__int64 this, signed __int8 *a2, unsigned __int16 *a3, unsigned int a4, unsigned int *a5)
  2. {
  3.   unsigned int v5; // r9
  4.   signed __int8 *v6; // r8
  5.   unsigned __int16 *v7; // r7
  6.   unsigned int v8; // r10
  7.   signed int v9; // r12
  8.   __int64 *v10; // r5
  9.   unsigned int v11; // r4
  10.   int v12; // r0
  11.   int v13; // r3
  12.   int v14; // r6
  13.   unsigned int v15; // r2
  14.   bool v16; // zf
  15.   signed int v17; // lr
  16.   int v18; // r1
  17.   int v19; // r7
  18.   int v20; // r8
  19.   bool v21; // zf
  20.   unsigned int v22; // r7
  21.   __int16 v23; // r1
  22.   __int16 v24; // r0
  23.   int v25; // r6
  24.   signed int v26; // r7
  25.   int v27; // r11
  26.   bool v28; // zf
  27.   bool v29; // zf
  28.   bool v30; // zf
  29.   bool v31; // zf
  30.   bool v32; // zf
  31.   signed int v33; // r6
  32.   signed int v34; // r6
  33.   signed int v35; // r7
  34.   unsigned int v36; // r0
  35.   int v37; // r2
  36.   unsigned int v38; // r1
  37.   unsigned int v39; // r2
  38.   int v40; // r7
  39.   bool v41; // nf
  40.   int *v42; // r1
  41.   unsigned int *v43; // r0
  42.   int *v44; // r1
  43.   unsigned int *v45; // r0
  44.   unsigned int *v46; // r0
  45.   __int64 v48; // [sp+0h] [bp-B0h]
  46.   Aska::TSharedPointerCode *v49; // [sp+8h] [bp-A8h]
  47.   __int64 v50; // [sp+Ch] [bp-A4h]
  48.   __int64 v51; // [sp+18h] [bp-98h]
  49.   __int64 v52; // [sp+20h] [bp-90h]
  50.   _DWORD (__fastcall **v53)(Aska::StaticStream *__hidden); // [sp+2Ch] [bp-84h]
  51.   __int64 v54; // [sp+30h] [bp-80h]
  52.   __int64 v55; // [sp+38h] [bp-78h]
  53.   int v56; // [sp+40h] [bp-70h]
  54.   int (**v57)(); // [sp+54h] [bp-5Ch]
  55.   __int64 v58; // [sp+58h] [bp-58h]
  56.   __int64 v59; // [sp+60h] [bp-50h]
  57.   int v60; // [sp+68h] [bp-48h]
  58.   int v61; // [sp+6Ch] [bp-44h]
  59.   __int16 v62; // [sp+70h] [bp-40h]
  60.   __int16 v63; // [sp+72h] [bp-3Eh]
  61.   __int16 v64; // [sp+74h] [bp-3Ch]
  62.   __int16 v65; // [sp+76h] [bp-3Ah]
  63.  
  64.   v5 = HIDWORD(this);
  65.   v6 = a2;
  66.   v7 = a3;
  67.   v57 = &off_1FE0FC0;
  68.   v58 = 0LL;
  69.   v59 = 0LL;
  70.   v60 = 8;
  71.   v61 = 0;
  72.   if ( (_DWORD)this )
  73.   {
  74.     v58 = this;
  75.     LODWORD(v59) = HIDWORD(this);
  76.   }
  77.   else
  78.   {
  79.     Aska::TArray<unsigned short,false>::Resize(&v57, HIDWORD(this), 0);
  80.   }
  81.   v8 = 0;
  82.   v53 = off_1FE09A0;
  83.   v54 = 0LL;
  84.   v55 = 0LL;
  85.   v56 = 0;
  86.   Aska::StaticStream::Open((Aska::StaticStream *)&v53, v6, (unsigned int)v7);
  87.   v10 = &v48;
  88.   *(__int64 *)((char *)&v48 + 4) = 0LL;
  89.   v50 = 0LL;
  90.   v48 = (unsigned int)off_203130C;
  91.   if ( v7 )
  92.     v10 = (__int64 *)&v53;
  93.   if ( v6 )
  94.     v10 = (__int64 *)&v53;
  95.   v51 = 0LL;
  96.   v52 = 0LL;
  97.   if ( v5 )
  98.   {
  99.     while ( 1 )
  100.     {
  101.       v11 = v8 + 3;
  102.       if ( v8 + 3 >= (unsigned int)v59 )
  103.         goto LABEL_68;
  104.       v12 = v58 + 2 * v8;
  105.       v13 = *(unsigned __int16 *)(v58 + 2 * v8);
  106.       v14 = *(unsigned __int16 *)(v12 + 2);
  107.       if ( v13 == v14 )
  108.         goto LABEL_68;
  109.       v15 = *(unsigned __int16 *)(v12 + 4);
  110.       v16 = v14 == v15;
  111.       if ( v14 != v15 )
  112.         v16 = v15 == v13;
  113.       if ( v16 )
  114.         goto LABEL_68;
  115.       v17 = 2;
  116.       v18 = v58 + 2 * v11;
  117.       v19 = *(unsigned __int16 *)(v58 + 2 * v11);
  118.       v20 = *(unsigned __int16 *)(v18 + 2);
  119.       v21 = v19 == v14;
  120.       if ( v19 == v14 )
  121.         v21 = v20 == v13;
  122.       if ( v21 )
  123.       {
  124.         v22 = *(unsigned __int16 *)(v12 + 2);
  125.         v15 = *(unsigned __int16 *)(v58 + 2 * v8);
  126.         v9 = 2;
  127.         goto LABEL_19;
  128.       }
  129.       v27 = *(unsigned __int16 *)(v18 + 4);
  130.       v28 = v20 == v14;
  131.       if ( v20 == v14 )
  132.         v28 = v27 == v13;
  133.       if ( v28 )
  134.       {
  135.         v22 = *(unsigned __int16 *)(v12 + 2);
  136.         v15 = *(unsigned __int16 *)(v58 + 2 * v8);
  137.         v9 = 2;
  138. LABEL_33:
  139.         v17 = 0;
  140.         goto LABEL_19;
  141.       }
  142.       v29 = v19 == v13;
  143.       if ( v19 == v13 )
  144.         v29 = v27 == v14;
  145.       if ( v29 )
  146.         break;
  147.       v30 = v19 == v15;
  148.       if ( v19 == v15 )
  149.       {
  150.         v9 = 0;
  151.         v30 = v20 == v14;
  152.       }
  153.       if ( !v30 )
  154.       {
  155.         v31 = v20 == v15;
  156.         v9 = 0;
  157.         if ( v20 == v15 )
  158.           v31 = v27 == v14;
  159.         if ( v31 )
  160.         {
  161.           v22 = *(unsigned __int16 *)(v12 + 4);
  162.           v15 = *(unsigned __int16 *)(v12 + 2);
  163.           goto LABEL_33;
  164.         }
  165.         v32 = v19 == v14;
  166.         if ( v19 == v14 )
  167.           v32 = v27 == v15;
  168.         if ( !v32 )
  169.         {
  170.           v33 = 0;
  171.           if ( v20 != v15 )
  172.             v33 = 1;
  173.           v9 = 1;
  174.           if ( v19 == v13 && v33 != 1 )
  175.             goto LABEL_106;
  176.           v34 = 0;
  177.           if ( v27 != v15 )
  178.             v34 = 1;
  179.           v17 = 0;
  180.           if ( v20 != v13 || v34 == 1 )
  181.           {
  182.             v16 = v19 == v15;
  183.             v35 = 0;
  184.             if ( !v16 )
  185.               v35 = 1;
  186.             if ( v27 != v13 )
  187.               goto LABEL_68;
  188.             v16 = v35 == 0;
  189.             v9 = 1;
  190.             v22 = *(unsigned __int16 *)(v58 + 2 * v8);
  191.             v17 = 1;
  192.             if ( !v16 )
  193.               goto LABEL_68;
  194.           }
  195.           else
  196.           {
  197. LABEL_106:
  198.             v22 = *(unsigned __int16 *)(v58 + 2 * v8);
  199.           }
  200.           goto LABEL_19;
  201.         }
  202.         v22 = *(unsigned __int16 *)(v12 + 4);
  203.         v15 = *(unsigned __int16 *)(v12 + 2);
  204.         goto LABEL_39;
  205.       }
  206.       v22 = *(unsigned __int16 *)(v12 + 4);
  207.       v15 = *(unsigned __int16 *)(v12 + 2);
  208. LABEL_19:
  209.       v23 = *(_WORD *)(v18 + 2 * v17);
  210.       v24 = *(_WORD *)(v12 + 2 * v9);
  211.       if ( v15 >= v22 )
  212.       {
  213.         v62 = v22;
  214.         v63 = v15;
  215.         v64 = v23;
  216.         v65 = v24;
  217.       }
  218.       else
  219.       {
  220.         v62 = v15;
  221.         v63 = v22;
  222.         v64 = v24;
  223.         v65 = v23;
  224.       }
  225.       v25 = 4;
  226.       if ( (*(int (__fastcall **)(__int64 *, __int16 *, signed int, signed int, _DWORD))(*(_DWORD *)v10 + 24))(
  227.              v10,
  228.              &v62,
  229.              2,
  230.              4,
  231.              v48) != 4 )
  232.       {
  233.         v25 = (*(int (__fastcall **)(__int64 *))(*(_DWORD *)v10 + 40))(v10);
  234.         if ( v25 >= 0 )
  235.           v25 = -961;
  236.       }
  237.       v26 = 0;
  238.       if ( v25 < 0 )
  239.         goto LABEL_79;
  240.       if ( v25 >= 1 )
  241.       {
  242.         v11 = v8 + 6;
  243.         goto LABEL_77;
  244.       }
  245. LABEL_68:
  246.       v37 = v58 + 2 * v8;
  247.       v36 = *(unsigned __int16 *)(v58 + 2 * v8);
  248.       v38 = *(unsigned __int16 *)(v37 + 4);
  249.       v39 = *(unsigned __int16 *)(v37 + 2);
  250.       if ( v36 >= v39 )
  251.       {
  252.         v62 = *(_WORD *)(v58 + 2 * v8);
  253.         v63 = v39;
  254.         v64 = v38;
  255.       }
  256.       else if ( v39 >= v38 )
  257.       {
  258.         v62 = v39;
  259.         v63 = v38;
  260.         v64 = v36;
  261.       }
  262.       else
  263.       {
  264.         v62 = v38;
  265.         v63 = v36;
  266.         v64 = v39;
  267.       }
  268.       v40 = 3;
  269.       if ( (*(int (__fastcall **)(__int64 *, __int16 *, signed int, signed int, _DWORD))(*(_DWORD *)v10 + 24))(
  270.              v10,
  271.              &v62,
  272.              2,
  273.              3,
  274.              v48) != 3 )
  275.       {
  276.         v40 = (*(int (__fastcall **)(__int64 *))(*(_DWORD *)v10 + 40))(v10);
  277.         if ( v40 >= 0 )
  278.           v40 = -961;
  279.       }
  280.       v41 = v40 < 0;
  281.       v26 = 0;
  282.       if ( v41 )
  283.         goto LABEL_79;
  284. LABEL_77:
  285.       v8 = v11;
  286.       if ( v11 >= v5 )
  287.         goto LABEL_78;
  288.     }
  289.     v22 = *(unsigned __int16 *)(v12 + 2);
  290.     v15 = *(unsigned __int16 *)(v58 + 2 * v8);
  291.     v9 = 2;
  292. LABEL_39:
  293.     v17 = 1;
  294.     goto LABEL_19;
  295.   }
  296. LABEL_78:
  297.   *(_DWORD *)a4 = (*(int (__fastcall **)(__int64 *))(*(_DWORD *)v10 + 12))(v10);
  298.   v26 = 1;
  299. LABEL_79:
  300.   v42 = (int *)0xFFFFD4E4;
  301.   LODWORD(v48) = off_1FDEAFC;
  302.   v43 = (unsigned int *)v49;
  303.   if ( !v49 )
  304.     goto LABEL_107;
  305.   __dmb(0xBu);
  306.   do
  307.     v42 = (int *)__ldrex(v43);
  308.   while ( __strex((unsigned int)v42 - 1, v43) );
  309.   __dmb(0xBu);
  310.   if ( v42 == (int *)((char *)&dword_0 + 1) )
  311.   {
  312. LABEL_107:
  313.     if ( HIDWORD(v48) )
  314.       (*(void (__cdecl **)(_DWORD))(*(_DWORD *)HIDWORD(v48) + 4))(HIDWORD(v48));
  315.     if ( v49 )
  316.       Aska::TSharedPointerCode::DeleteCounter(v49, v42);
  317.   }
  318.   v44 = 0;
  319.   HIDWORD(v48) = 0;
  320.   v53 = off_1FE09A0;
  321.   v45 = (unsigned int *)HIDWORD(v55);
  322.   if ( !HIDWORD(v55) )
  323.     goto LABEL_108;
  324.   __dmb(0xBu);
  325.   do
  326.     v44 = (int *)__ldrex(v45);
  327.   while ( __strex((unsigned int)v44 - 1, v45) );
  328.   __dmb(0xBu);
  329.   if ( v44 == (int *)((char *)&dword_0 + 1) )
  330.   {
  331. LABEL_108:
  332.     if ( (_DWORD)v55 )
  333.       operator delete[]((void *)v55);
  334.     if ( HIDWORD(v55) )
  335.       Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v55), v44);
  336.   }
  337.   v55 = 0LL;
  338.   v46 = (unsigned int *)HIDWORD(v54);
  339.   if ( !HIDWORD(v54) )
  340.     goto LABEL_109;
  341.   __dmb(0xBu);
  342.   do
  343.     v44 = (int *)__ldrex(v46);
  344.   while ( __strex((unsigned int)v44 - 1, v46) );
  345.   __dmb(0xBu);
  346.   if ( v44 == (int *)((char *)&dword_0 + 1) )
  347.   {
  348. LABEL_109:
  349.     if ( (_DWORD)v54 )
  350.       operator delete[]((void *)v54);
  351.     if ( HIDWORD(v54) )
  352.       Aska::TSharedPointerCode::DeleteCounter((Aska::TSharedPointerCode *)HIDWORD(v54), v44);
  353.   }
  354.   return v26;
  355. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement