Guest User

Untitled

a guest
Mar 16th, 2021
400
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 21.32 KB | None | 0 0
  1.  
  2. unsigned __int8 *__fastcall getEncodeBuffer(unsigned __int64 *a1, unsigned __int8 *a2, const char *a3, const char *a4)
  3. {
  4.   const char *v4; // x24
  5.   const char *v5; // x25
  6.   __int64 *v6; // x23
  7.   unsigned __int8 *v7; // x19
  8.   __int64 **v8; // x20
  9.   __int64 v9; // x1
  10.   void *v10; // x0
  11.   unsigned int *v12; // x1
  12.   signed int v13; // w2
  13.   cocos2d::CCFileUtils *v14; // x0
  14.   __int64 v15; // x20
  15.   void *v16; // x0
  16.   unsigned __int8 *v17; // x0
  17.   unsigned int *v18; // x1
  18.   signed int v19; // w2
  19.   int v20; // w0
  20.   __int64 v21; // x0
  21.   __int64 v22; // [xsp+58h] [xbp+58h]
  22.   __int64 v23; // [xsp+68h] [xbp+68h]
  23.   __int64 v24; // [xsp+70h] [xbp+70h]
  24.   unsigned __int8 *v25; // [xsp+78h] [xbp+78h]
  25.   __int64 v26; // [xsp+80h] [xbp+80h]
  26.   __int64 v27; // [xsp+88h] [xbp+88h]
  27.   __int64 v28; // [xsp+90h] [xbp+90h]
  28.  
  29.   v4 = a3;
  30.   v5 = a4;
  31.   v6 = (__int64 *)a1;
  32.   v7 = a2;
  33.   sub_D7153C(&v23, a3, &v28);
  34.   v24 = 0LL;
  35.   v25 = 0LL;
  36.   if ( sub_D725A0(&v23, &unk_DC28A0, 0LL, 3LL) != 0xFFFFFFFFFFFFFFFFLL )
  37.   {
  38.     decBuffer(*v6, v7, (unsigned __int64 *)&v24, &v25);
  39.     if ( v7 )
  40.       operator delete[](v7);
  41.     v8 = `vtable for'MessageBoxPage;
  42.    v7 = v25;
  43.    *v6 = v24;
  44.    goto LABEL_5;
  45.  }
  46.  if ( !v7 )
  47.  {
  48.    v7 = 0LL;
  49.    v8 = `vtable for'MessageBoxPage;
  50.     goto LABEL_5;
  51.   }
  52.   if ( *v7 == 0xEF && v7[1] == 0xFE )
  53.   {
  54.     if ( strcmp(v5, (const char *)&unk_DC28A8) )
  55.     {
  56.       operator delete[](v7);
  57.       v26 = 0LL;
  58.       v15 = cocos2d::CCFileUtils::sharedFileUtils(v14);
  59.       sub_D7153C(&v27, v4, &v22);
  60.       cocos2d::CCFileUtils::getDataFromFile(v15, &v27, 0LL, 0LL);
  61.       v7 = (unsigned __int8 *)cocos2d::CCMutableData::detachBuffer(
  62.                                 (cocos2d::CCMutableData *)&v28,
  63.                                 (unsigned __int64 *)&v26);
  64.       v8 = `vtable for'MessageBoxPage;
  65.      cocos2d::CCMutableData::~CCMutableData((cocos2d::CCMutableData *)&v28);
  66.      v16 = (void *)(v27 - 0x18);
  67.      if ( (__int64 *)(v27 - 0x18) != &qword_11FA2A0 )
  68.      {
  69.        if ( &pthread_create )
  70.        {
  71.          v18 = (unsigned int *)(v27 - 8);
  72.          do
  73.            v19 = __ldaxr(v18);
  74.          while ( __stlxr(v19 - 1, v18) );
  75.        }
  76.        else
  77.        {
  78.          v19 = *(_DWORD *)(v27 - 8);
  79.          *(_DWORD *)(v27 - 8) = v19 - 1;
  80.        }
  81.        if ( v19 <= 0 )
  82.          operator delete(v16);
  83.      }
  84.      *v6 = v26;
  85. LABEL_5:
  86.      v9 = v23;
  87.      v10 = (void *)(v23 - 0x18);
  88.      if ( (__int64 *)(v23 - 0x18) == v8[0x1FD] )
  89.        return v7;
  90.      goto LABEL_10;
  91.    }
  92.    if ( sub_D725A0(&v23, ".txt", 0LL, 4LL) == 0xFFFFFFFFFFFFFFFFLL
  93.      && sub_D725A0(&v23, ".cfg", 0LL, 4LL) == 0xFFFFFFFFFFFFFFFFLL
  94.      && sub_D725A0(&v23, ".json", 0LL, 5LL) == 0xFFFFFFFFFFFFFFFFLL )
  95.    {
  96.      v20 = v7[2];
  97.      if ( v20 == 0x80 )
  98.      {
  99.        v21 = rc4TextureBuffer(*v6, v7, (unsigned __int64 *)v6);
  100.        goto LABEL_35;
  101.      }
  102.      if ( v20 == 0xFF )
  103.      {
  104.        v21 = rc4DocumentBuffer(*v6, v7, (unsigned __int64 *)v6);
  105. LABEL_35:
  106.        v7 = (unsigned __int8 *)v21;
  107.        v8 = `vtable for'MessageBoxPage;
  108.         goto LABEL_5;
  109.       }
  110.     }
  111.     if ( (unsigned __int8)decBuffer(*v6 - 2, v7 + 2, (unsigned __int64 *)&v24, &v25) )
  112.     {
  113.       v8 = `vtable for'MessageBoxPage;
  114.      operator delete[](v7);
  115.      v7 = v25;
  116.      *v6 = v24;
  117.    }
  118.    else
  119.    {
  120.      v17 = v7;
  121.      v8 = `vtable for'MessageBoxPage;
  122.       v7 = 0LL;
  123.       operator delete[](v17);
  124.     }
  125.     goto LABEL_5;
  126.   }
  127.   v9 = v23;
  128.   v10 = (void *)(v23 - 0x18);
  129.   if ( (__int64 *)(v23 - 0x18) == &qword_11FA2A0 )
  130.     return v7;
  131. LABEL_10:
  132.   if ( &pthread_create )
  133.   {
  134.     v12 = (unsigned int *)(v9 - 8);
  135.     do
  136.       v13 = __ldaxr(v12);
  137.     while ( __stlxr(v13 - 1, v12) );
  138.   }
  139.   else
  140.   {
  141.     v13 = *(_DWORD *)(v9 - 8);
  142.     *(_DWORD *)(v9 - 8) = v13 - 1;
  143.   }
  144.   if ( v13 <= 0 )
  145.     operator delete(v10);
  146.   return v7;
  147. }
  148.  
  149.  
  150.  
  151.  
  152.  
  153. __int64 __fastcall rc4TextureBuffer(__int64 a1, unsigned __int8 *a2, unsigned __int64 *a3)
  154. {
  155.   char *v3; // x21
  156.   __int64 v4; // x24
  157.   unsigned __int64 *v5; // x26
  158.   unsigned __int64 v6; // x20
  159.   __int64 v7; // x23
  160.   __int64 v9; // [xsp+50h] [xbp+50h]
  161.  
  162.   v3 = (char *)a2;
  163.   v4 = a1;
  164.   v5 = a3;
  165.   v6 = a1 - 3;
  166.   memset(&v9, 0, 0x108u);
  167.   av_rc4_init((__int64)&v9, (__int64)"nc315XHW^", 0x48);
  168.   v7 = operator new[](v4 - 3);
  169.   if ( v6 > 0x80 )
  170.   {
  171.     av_rc4_crypt((__int64)&v9, v7, v3 + 3, 0x80);
  172.   }
  173.   else
  174.   {
  175.     av_rc4_crypt((__int64)&v9, v7, v3 + 3, v4 - 3);
  176.     if ( v6 <= (unsigned int)(v4 - 3) )
  177.       goto LABEL_3;
  178.   }
  179.   memcpy((void *)(v7 + 0x80), v3 + 0x83, v4 - 0x83);
  180. LABEL_3:
  181.   *v5 = v6;
  182.   if ( v3 )
  183.     operator delete[](v3);
  184.   return v7;
  185. }
  186.  
  187.  
  188.  
  189.  
  190.  
  191. void *__fastcall rc4DocumentBuffer(__int64 a1, unsigned __int8 *a2, unsigned __int64 *a3)
  192. {
  193.   char *v3; // x23
  194.   __int64 v4; // x26
  195.   unsigned __int64 *v5; // x27
  196.   void *v6; // x20
  197.   void *v7; // x22
  198.   void *result; // x0
  199.   unsigned __int64 v9; // [xsp+68h] [xbp+68h]
  200.   __int64 v10; // [xsp+70h] [xbp+70h]
  201.  
  202.   v3 = (char *)a2;
  203.   v4 = a1;
  204.   v5 = a3;
  205.   av_rc4_init((__int64)&v10, (__int64)"nc315XHW^", 0x48);
  206.   v6 = (void *)operator new[](0x100000uLL);
  207.   v7 = (void *)operator new[](v4 - 3);
  208.   av_rc4_crypt((__int64)&v10, (__int64)v7, v3 + 3, v4 - 3);
  209.   v9 = 0x100000LL;
  210.   if ( (unsigned int)uncompress(v6, &v9, v7, v4 - 3) )
  211.   {
  212.     if ( v3 )
  213.       operator delete[](v3);
  214.     operator delete[](v7);
  215.     operator delete[](v6);
  216.     result = 0LL;
  217.   }
  218.   else
  219.   {
  220.     *v5 = v9;
  221.     if ( v3 )
  222.       operator delete[](v3);
  223.     operator delete[](v7);
  224.     result = v6;
  225.   }
  226.   return result;
  227. }
  228.  
  229.  
  230.  
  231.  
  232.  
  233. __int64 __fastcall av_rc4_crypt(__int64 result, __int64 a2, char *a3, int a4)
  234. {
  235.   bool v4; // zf
  236.   bool v5; // nf
  237.   int v6; // w12
  238.   unsigned int v7; // w3
  239.   int v8; // w6
  240.   unsigned __int8 v9; // w7
  241.   __int64 v10; // x5
  242.   __int64 v11; // x8
  243.   char v12; // w4
  244.   char v13; // w5
  245.   char v14; // w4
  246.   char v15; // w9
  247.   unsigned __int8 v16; // w4
  248.  
  249.   v4 = a4 == 0;
  250.   v5 = a4 < 0;
  251.   v6 = *(unsigned __int8 *)(result + 0x100);
  252.   v7 = a4 - 1;
  253.   v8 = *(unsigned __int8 *)(result + 0x104);
  254.   if ( !v5 && !v4 )
  255.   {
  256.     v9 = *(_BYTE *)(result + 0x100);
  257.     v10 = (unsigned __int8)v6;
  258.     v11 = 0LL;
  259.     v12 = *(_BYTE *)(result + (unsigned __int8)v6);
  260.     do
  261.     {
  262.       v15 = *(_BYTE *)(result + (unsigned __int8)v8);
  263.       *(_BYTE *)(result + (unsigned __int8)v8) = v12;
  264.       *(_BYTE *)(result + v10) = v15;
  265.       v16 = v15 + v12;
  266.       if ( a3 )
  267.       {
  268.         v13 = *a3++;
  269.         v14 = *(_BYTE *)(result + v16) ^ v13;
  270.       }
  271.       else
  272.       {
  273.         v14 = *(_BYTE *)(result + v16);
  274.       }
  275.       *(_BYTE *)(a2 + v11++) = v14;
  276.       v10 = ++v9;
  277.       v12 = *(_BYTE *)(result + v9);
  278.       v8 = (unsigned __int8)(v12 + v8);
  279.     }
  280.     while ( v11 != v7 + 1LL );
  281.     v6 = (unsigned __int8)(v7 + v6 + 1);
  282.   }
  283.   *(_DWORD *)(result + 0x100) = v6;
  284.   *(_DWORD *)(result + 0x104) = v8;
  285.   return result;
  286. }
  287.  
  288.  
  289. __int64 __fastcall av_rc4_init(__int64 a1, __int64 a2, int a3)
  290. {
  291.   bool v3; // zf
  292.   unsigned int v4; // w10
  293.   int v5; // w2
  294.   unsigned int v6; // w3
  295.   signed int v7; // w5
  296.   unsigned int v8; // w4
  297.   __int64 v9; // x6
  298.   int v10; // w7
  299.   signed int v11; // w11
  300.   signed int v12; // w3
  301.   int32x4_t v13; // q0
  302.   int8x16_t *v14; // x6
  303.   int32x4_t v15; // q3
  304.   int v16; // w4
  305.   int v17; // w3
  306.   int v18; // w4
  307.   char *v19; // x6
  308.   unsigned __int8 v20; // w4
  309.   signed int v21; // w3
  310.   __int64 v22; // x5
  311.   char v23; // w7
  312.   char v24; // w8
  313.  
  314.   v4 = a3 & 7;
  315.   v3 = v4 == 0;
  316.   v5 = a3 >> 3;
  317.   if ( v3 )
  318.   {
  319.     v6 = -(signed int)a1 & 0xF;
  320.     if ( v6 )
  321.     {
  322.       *(_BYTE *)a1 = 0;
  323.       if ( v6 == 1 )
  324.       {
  325.         v7 = 0xFF;
  326.         v8 = 1;
  327.       }
  328.       else
  329.       {
  330.         *(_BYTE *)(a1 + 1) = 1;
  331.         if ( v6 == 2 )
  332.         {
  333.           v7 = 0xFE;
  334.           v8 = 2;
  335.         }
  336.         else
  337.         {
  338.           *(_BYTE *)(a1 + 2) = 2;
  339.           if ( v6 == 3 )
  340.           {
  341.             v7 = 0xFD;
  342.             v8 = 3;
  343.           }
  344.           else
  345.           {
  346.             *(_BYTE *)(a1 + 3) = 3;
  347.             if ( v6 == 4 )
  348.             {
  349.               v7 = 0xFC;
  350.               v8 = 4;
  351.             }
  352.             else
  353.             {
  354.               *(_BYTE *)(a1 + 4) = 4;
  355.               if ( v6 == 5 )
  356.               {
  357.                 v7 = 0xFB;
  358.                 v8 = 5;
  359.               }
  360.               else
  361.               {
  362.                 *(_BYTE *)(a1 + 5) = 5;
  363.                 if ( v6 == 6 )
  364.                 {
  365.                   v7 = 0xFA;
  366.                   v8 = 6;
  367.                 }
  368.                 else
  369.                 {
  370.                   *(_BYTE *)(a1 + 6) = 6;
  371.                   if ( v6 == 7 )
  372.                   {
  373.                     v7 = 0xF9;
  374.                     v8 = 7;
  375.                   }
  376.                   else
  377.                   {
  378.                     *(_BYTE *)(a1 + 7) = 7;
  379.                     if ( v6 == 8 )
  380.                     {
  381.                       v7 = 0xF8;
  382.                       v8 = 8;
  383.                     }
  384.                     else
  385.                     {
  386.                       *(_BYTE *)(a1 + 8) = 8;
  387.                       if ( v6 == 9 )
  388.                       {
  389.                         v7 = 0xF7;
  390.                         v8 = 9;
  391.                       }
  392.                       else
  393.                       {
  394.                         *(_BYTE *)(a1 + 9) = 9;
  395.                         if ( v6 == 0xA )
  396.                         {
  397.                           v7 = 0xF6;
  398.                           v8 = 0xA;
  399.                         }
  400.                         else
  401.                         {
  402.                           *(_BYTE *)(a1 + 0xA) = 0xA;
  403.                           if ( v6 == 0xB )
  404.                           {
  405.                             v7 = 0xF5;
  406.                             v8 = 0xB;
  407.                           }
  408.                           else
  409.                           {
  410.                             *(_BYTE *)(a1 + 0xB) = 0xB;
  411.                             if ( v6 == 0xC )
  412.                             {
  413.                               v7 = 0xF4;
  414.                               v8 = 0xC;
  415.                             }
  416.                             else
  417.                             {
  418.                               *(_BYTE *)(a1 + 0xC) = 0xC;
  419.                               if ( v6 == 0xD )
  420.                               {
  421.                                 v7 = 0xF3;
  422.                                 v8 = 0xD;
  423.                               }
  424.                               else
  425.                               {
  426.                                 *(_BYTE *)(a1 + 0xD) = 0xD;
  427.                                 if ( v6 == 0xF )
  428.                                 {
  429.                                   v7 = 0xF1;
  430.                                   *(_BYTE *)(a1 + 0xE) = 0xE;
  431.                                   v8 = 0xF;
  432.                                 }
  433.                                 else
  434.                                 {
  435.                                   v7 = 0xF2;
  436.                                   v8 = 0xE;
  437.                                 }
  438.                               }
  439.                             }
  440.                           }
  441.                         }
  442.                       }
  443.                     }
  444.                   }
  445.                 }
  446.               }
  447.             }
  448.           }
  449.         }
  450.       }
  451.       v9 = v6;
  452.       v10 = 0x100 - v6;
  453.       v11 = 0xF;
  454.       v12 = 0xF0;
  455.     }
  456.     else
  457.     {
  458.       v12 = 0x100;
  459.       v8 = 0;
  460.       v7 = 0x100;
  461.       v9 = 0LL;
  462.       v10 = 0x100;
  463.       v11 = 0x10;
  464.     }
  465.     v13 = vdupq_n_s32(v8);
  466.     v14 = (int8x16_t *)(a1 + v9);
  467.     *v14 = vmovn_hight_s16(
  468.              vmovn_s16(
  469.                vmovn_hight_s32(
  470.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0100)),
  471.                  vaddq_s32(v13, (int32x4_t)xmmword_5A0110))),
  472.              vmovn_hight_s32(
  473.                vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0120)),
  474.                vaddq_s32(v13, (int32x4_t)xmmword_5A0130)));
  475.     v14[1] = vmovn_hight_s16(
  476.                vmovn_s16(
  477.                  vmovn_hight_s32(
  478.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0140)),
  479.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0150))),
  480.                vmovn_hight_s32(
  481.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0160)),
  482.                  vaddq_s32(v13, (int32x4_t)xmmword_5A0170)));
  483.     v14[2] = vmovn_hight_s16(
  484.                vmovn_s16(
  485.                  vmovn_hight_s32(
  486.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0180)),
  487.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0190))),
  488.                vmovn_hight_s32(
  489.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A01A0)),
  490.                  vaddq_s32(v13, (int32x4_t)xmmword_5A01B0)));
  491.     v14[3] = vmovn_hight_s16(
  492.                vmovn_s16(
  493.                  vmovn_hight_s32(
  494.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A01C0)),
  495.                    vaddq_s32(v13, (int32x4_t)xmmword_5A01D0))),
  496.                vmovn_hight_s32(
  497.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A01E0)),
  498.                  vaddq_s32(v13, (int32x4_t)xmmword_5A01F0)));
  499.     v14[4] = vmovn_hight_s16(
  500.                vmovn_s16(
  501.                  vmovn_hight_s32(
  502.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0200)),
  503.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0210))),
  504.                vmovn_hight_s32(
  505.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0220)),
  506.                  vaddq_s32(v13, (int32x4_t)xmmword_5A0230)));
  507.     v14[5] = vmovn_hight_s16(
  508.                vmovn_s16(
  509.                  vmovn_hight_s32(
  510.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0240)),
  511.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0250))),
  512.                vmovn_hight_s32(
  513.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0260)),
  514.                  vaddq_s32(v13, (int32x4_t)xmmword_5A0270)));
  515.     v14[6] = vmovn_hight_s16(
  516.                vmovn_s16(
  517.                  vmovn_hight_s32(
  518.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0280)),
  519.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0290))),
  520.                vmovn_hight_s32(
  521.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A02A0)),
  522.                  vaddq_s32(v13, (int32x4_t)xmmword_5A02B0)));
  523.     v14[7] = vmovn_hight_s16(
  524.                vmovn_s16(
  525.                  vmovn_hight_s32(
  526.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A02C0)),
  527.                    vaddq_s32(v13, (int32x4_t)xmmword_5A02D0))),
  528.                vmovn_hight_s32(
  529.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A02E0)),
  530.                  vaddq_s32(v13, (int32x4_t)xmmword_5A02F0)));
  531.     v14[8] = vmovn_hight_s16(
  532.                vmovn_s16(
  533.                  vmovn_hight_s32(
  534.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0300)),
  535.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0310))),
  536.                vmovn_hight_s32(
  537.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0320)),
  538.                  vaddq_s32(v13, (int32x4_t)xmmword_5A0330)));
  539.     v14[9] = vmovn_hight_s16(
  540.                vmovn_s16(
  541.                  vmovn_hight_s32(
  542.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0340)),
  543.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0350))),
  544.                vmovn_hight_s32(
  545.                  vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0360)),
  546.                  vaddq_s32(v13, (int32x4_t)xmmword_5A0370)));
  547.     v14[0xA] = vmovn_hight_s16(
  548.                  vmovn_s16(
  549.                    vmovn_hight_s32(
  550.                      vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0380)),
  551.                      vaddq_s32(v13, (int32x4_t)xmmword_5A0390))),
  552.                  vmovn_hight_s32(
  553.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A03A0)),
  554.                    vaddq_s32(v13, (int32x4_t)xmmword_5A03B0)));
  555.     v14[0xB] = vmovn_hight_s16(
  556.                  vmovn_s16(
  557.                    vmovn_hight_s32(
  558.                      vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A03C0)),
  559.                      vaddq_s32(v13, (int32x4_t)xmmword_5A03D0))),
  560.                  vmovn_hight_s32(
  561.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A03E0)),
  562.                    vaddq_s32(v13, (int32x4_t)xmmword_5A03F0)));
  563.     v14[0xC] = vmovn_hight_s16(
  564.                  vmovn_s16(
  565.                    vmovn_hight_s32(
  566.                      vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0400)),
  567.                      vaddq_s32(v13, (int32x4_t)xmmword_5A0410))),
  568.                  vmovn_hight_s32(
  569.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0420)),
  570.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0430)));
  571.     v14[0xD] = vmovn_hight_s16(
  572.                  vmovn_s16(
  573.                    vmovn_hight_s32(
  574.                      vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0440)),
  575.                      vaddq_s32(v13, (int32x4_t)xmmword_5A0450))),
  576.                  vmovn_hight_s32(
  577.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0460)),
  578.                    vaddq_s32(v13, (int32x4_t)xmmword_5A0470)));
  579.     v15 = vaddq_s32(v13, (int32x4_t)xmmword_5A0480);
  580.     v14[0xE] = vmovn_hight_s16(
  581.                  vmovn_s16(
  582.                    vmovn_hight_s32(
  583.                      vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A0490)),
  584.                      vaddq_s32(v13, (int32x4_t)xmmword_5A04A0))),
  585.                  vmovn_hight_s32(
  586.                    vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A04B0)),
  587.                    vaddq_s32(v13, (int32x4_t)xmmword_5A04C0)));
  588.     if ( v11 == 0x10 )
  589.       v14[0xF] = vmovn_hight_s16(
  590.                    vmovn_s16(vmovn_hight_s32(vmovn_s32(v15), vaddq_s32(v13, (int32x4_t)xmmword_5A04D0))),
  591.                    vmovn_hight_s32(
  592.                      vmovn_s32(vaddq_s32(v13, (int32x4_t)xmmword_5A04E0)),
  593.                      vaddq_s32(v13, (int32x4_t)xmmword_5A04F0)));
  594.     v3 = v10 == v12;
  595.     v16 = v8 + v12;
  596.     v17 = v7 - v12;
  597.     if ( !v3 )
  598.     {
  599.       *(_BYTE *)(a1 + v16) = v16;
  600.       if ( v17 != 1 )
  601.       {
  602.         *(_BYTE *)(a1 + v16 + 1) = v16 + 1;
  603.         if ( v17 != 2 )
  604.         {
  605.           *(_BYTE *)(a1 + v16 + 2) = v16 + 2;
  606.           if ( v17 != 3 )
  607.           {
  608.             *(_BYTE *)(a1 + v16 + 3) = v16 + 3;
  609.             if ( v17 != 4 )
  610.             {
  611.               *(_BYTE *)(a1 + v16 + 4) = v16 + 4;
  612.               if ( v17 != 5 )
  613.               {
  614.                 *(_BYTE *)(a1 + v16 + 5) = v16 + 5;
  615.                 if ( v17 != 6 )
  616.                 {
  617.                   *(_BYTE *)(a1 + v16 + 6) = v16 + 6;
  618.                   if ( v17 != 7 )
  619.                   {
  620.                     *(_BYTE *)(a1 + v16 + 7) = v16 + 7;
  621.                     if ( v17 != 8 )
  622.                     {
  623.                       *(_BYTE *)(a1 + v16 + 8) = v16 + 8;
  624.                       if ( v17 != 9 )
  625.                       {
  626.                         *(_BYTE *)(a1 + v16 + 9) = v16 + 9;
  627.                         if ( v17 != 0xA )
  628.                         {
  629.                           *(_BYTE *)(a1 + v16 + 0xA) = v16 + 0xA;
  630.                           if ( v17 != 0xB )
  631.                           {
  632.                             *(_BYTE *)(a1 + v16 + 0xB) = v16 + 0xB;
  633.                             if ( v17 != 0xC )
  634.                             {
  635.                               *(_BYTE *)(a1 + v16 + 0xC) = v16 + 0xC;
  636.                               if ( v17 != 0xD )
  637.                               {
  638.                                 *(_BYTE *)(a1 + v16 + 0xD) = v16 + 0xD;
  639.                                 v18 = v16 + 0xE;
  640.                                 if ( v17 != 0xE )
  641.                                   *(_BYTE *)(a1 + v18) = v18;
  642.                               }
  643.                             }
  644.                           }
  645.                         }
  646.                       }
  647.                     }
  648.                   }
  649.                 }
  650.               }
  651.             }
  652.           }
  653.         }
  654.       }
  655.     }
  656.     v19 = (char *)a1;
  657.     v20 = 0;
  658.     v21 = 0;
  659.     do
  660.     {
  661.       v22 = v21;
  662.       if ( v5 == v21 )
  663.         v22 = 0LL;
  664.       v23 = *v19;
  665.       v3 = v5 == v21++;
  666.       if ( v3 )
  667.         v21 = 1;
  668.       v20 += v23 + *(_BYTE *)(a2 + v22);
  669.       v24 = *(_BYTE *)(a1 + v20);
  670.       *(_BYTE *)(a1 + v20) = v23;
  671.       *v19++ = v24;
  672.     }
  673.     while ( v19 != (char *)(a1 + 0x100) );
  674.     *(_DWORD *)(a1 + 0x104) = *(unsigned __int8 *)(a1 + 1);
  675.     *(_DWORD *)(a1 + 0x100) = 1;
  676.   }
  677.   else
  678.   {
  679.     v4 = 0xFFFFFFFF;
  680.   }
  681.   return v4;
  682. }
  683.  
  684.  
  685. __int64 __fastcall decBuffer(__int64 a1, unsigned __int8 *a2, unsigned __int64 *a3, unsigned __int8 **a4)
  686. {
  687.   __int64 v4; // x22
  688.   unsigned __int8 *v5; // x21
  689.   unsigned __int64 *v6; // x19
  690.   unsigned __int8 **v7; // x20
  691.   void *v8; // x23
  692.   unsigned __int8 *v9; // x2
  693.   int v10; // w1
  694.   int v11; // w21
  695.   unsigned __int8 *v12; // x0
  696.   __int64 result; // x0
  697.  
  698.   v4 = a1;
  699.   v5 = a2;
  700.   v6 = a3;
  701.   v7 = a4;
  702.   v8 = (void *)operator new[]((unsigned __int64)*a2 << 0xD);
  703.   *v6 = (unsigned __int64)*v5 << 0xD;
  704.   if ( v4 )
  705.   {
  706.     v9 = v5;
  707.     v10 = 0;
  708.     do
  709.     {
  710.       *v9++ ^= aNc315xhw[v10];
  711.       v10 = (v10 + 1) % 9;
  712.     }
  713.     while ( v9 != &v5[v4] );
  714.   }
  715.   v11 = uncompress(v8, v6, v5 + 1, v4 - 1);
  716.   v12 = (unsigned __int8 *)operator new[](*v6);
  717.   *v7 = v12;
  718.   if ( v11 )
  719.   {
  720.     operator delete[](v8);
  721.     result = 0LL;
  722.   }
  723.   else
  724.   {
  725.     memcpy(v12, v8, *v6);
  726.     operator delete[](v8);
  727.     result = 1LL;
  728.   }
  729.   return result;
  730. }
Advertisement
Add Comment
Please, Sign In to add comment