Advertisement
dunkermex

Untitled

Jan 29th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int __thiscall sub_39504F96(_DWORD *this, unsigned __int8 *a2, unsigned int a3)
  2. {
  3.   void *v3; // esp
  4.   int result; // eax
  5.   int v5; // ecx
  6.   int v6; // ecx
  7.   int v7; // ecx
  8.   int v8; // esi
  9.   int v9; // ecx
  10.   int v10; // ecx
  11.   int v11; // ecx
  12.   int v12; // ecx
  13.   int v13; // ecx
  14.   _DWORD *v14; // [esp+4h] [ebp-70050h]
  15.   char v15; // [esp+10h] [ebp-70044h]
  16.   int v16; // [esp+10014h] [ebp-60040h]
  17.   char v17; // [esp+10018h] [ebp-6003Ch]
  18.   unsigned __int16 v18; // [esp+1001Ah] [ebp-6003Ah]
  19.   int v19; // [esp+20018h] [ebp-5003Ch]
  20.   int v20; // [esp+2001Ch] [ebp-50038h]
  21.   char v21; // [esp+20020h] [ebp-50034h]
  22.   int v22; // [esp+60020h] [ebp-10034h]
  23.   int v23; // [esp+60024h] [ebp-10030h]
  24.   char v24; // [esp+60028h] [ebp-1002Ch]
  25.   char v25; // [esp+6002Ah] [ebp-1002Ah]
  26.   int v26; // [esp+70028h] [ebp-2Ch]
  27.   int v27; // [esp+7002Ch] [ebp-28h]
  28.   int *v28; // [esp+70030h] [ebp-24h]
  29.   char v29; // [esp+70037h] [ebp-1Dh]
  30.   int v30; // [esp+70038h] [ebp-1Ch]
  31.   char v31; // [esp+7003Ch] [ebp-18h]
  32.   char v32; // [esp+70047h] [ebp-Dh]
  33.   int v33; // [esp+70050h] [ebp-4h]
  34.  
  35.   v3 = alloca(458824);
  36.   v14 = this;
  37.   result = (int)this;
  38.   if ( this[5] )
  39.   {
  40.     v32 = byte_395CB000[*a2];
  41.     v29 = 0;
  42.     v5 = this[5];
  43.     sub_395804CE(&v30);
  44.     v33 = 0;
  45.     v28 = &v30;
  46.     switch ( v32 )
  47.     {
  48.       case 1:
  49.         v27 = *(unsigned __int16 *)(a2 + 3);
  50.         if ( *(_BYTE *)(*(_DWORD *)off_395C0544 + 172)
  51.           || v27 == 524
  52.           || v27 == 335
  53.           || v27 == 174
  54.           || !(unsigned __int8)sub_39580085(v14[5]) )
  55.         {
  56.           if ( v27 )
  57.           {
  58.             v6 = v14[5];
  59.             sub_39518D8E(a2 + 3, a3 - 3);
  60.           }
  61.           else
  62.           {
  63.             sub_39581A6B(v28, a2 + 3, a3 - 3);
  64.           }
  65.           v29 = 1;
  66.         }
  67.         else
  68.         {
  69.           (*(void (__thiscall **)(_DWORD *, signed int, const char *, _DWORD, _DWORD, _DWORD))(*v14 + 52))(
  70.             v14,
  71.             1,
  72.             "encryption-mv",
  73.             0,
  74.             0,
  75.             0);
  76.         }
  77.         break;
  78.       case 2:
  79.         v7 = v14[5];
  80.         sub_3951296D(a2 + 1, a3 - 1);
  81.         v29 = 1;
  82.         break;
  83.       case 3:
  84.         v26 = 65534;
  85.         v8 = v14[4];
  86.         if ( (unsigned __int8)sub_3957FB31((int)(a2 + 1), &v24, (int)&v26) )
  87.         {
  88.           v9 = v14[5];
  89.           sub_39518D8E(&v25, v26 - 2);
  90.           v29 = 1;
  91.         }
  92.         else
  93.         {
  94.           (*(void (__thiscall **)(_DWORD *, signed int, const char *, _DWORD, _DWORD, _DWORD))(*v14 + 52))(
  95.             v14,
  96.             13,
  97.             "decompress-mv",
  98.             0,
  99.             0,
  100.             0);
  101.         }
  102.         break;
  103.       case 4:
  104.         v22 = 0x40000;
  105.         v23 = 0;
  106.         if ( a3 >= 3 )
  107.         {
  108.           v23 = *(unsigned __int16 *)(a2 + 1);
  109.           if ( (unsigned __int8)sub_3957FC42(a2 + 3, &v21) )
  110.           {
  111.             v10 = v14[5];
  112.             sub_3950D638(v23, &v21, v22);
  113.             v29 = 1;
  114.           }
  115.           else
  116.           {
  117.             (*(void (__thiscall **)(_DWORD *, signed int, const char *, _DWORD, _DWORD, _DWORD))(*v14 + 52))(
  118.               v14,
  119.               13,
  120.               "decompress-mp-body",
  121.               0,
  122.               0,
  123.               0);
  124.           }
  125.         }
  126.         else
  127.         {
  128.           (*(void (__thiscall **)(_DWORD *, signed int, const char *, _DWORD, _DWORD, _DWORD))(*v14 + 52))(
  129.             v14,
  130.             13,
  131.             "decompress-mp-size",
  132.             0,
  133.             0,
  134.             0);
  135.         }
  136.         break;
  137.       case 5:
  138.         v20 = 65534;
  139.         (*(void (__thiscall **)(int))(*(_DWORD *)(v14[5] + 4) + 24))(v14[5] + 4);
  140.         if ( (unsigned __int8)sub_3957FCA7(a2 + 1, &v17) )
  141.         {
  142.           if ( (unsigned __int8)sub_3957FD15() )
  143.           {
  144.             v11 = v14[5];
  145.             if ( (unsigned __int8)sub_3951A1C5(&v17) )
  146.             {
  147.               v19 = v18;
  148.               if ( v18 )
  149.               {
  150.                 v12 = v14[5];
  151.                 sub_39518D8E(&v18, a3 - 3);
  152.               }
  153.               else
  154.               {
  155.                 sub_39581A6B(v28, &v18, a3 - 3);
  156.               }
  157.               v29 = 1;
  158.             }
  159.             else
  160.             {
  161.               (*(void (__thiscall **)(_DWORD *, signed int, const char *, _DWORD, _DWORD, _DWORD))(*v14 + 52))(
  162.                 v14,
  163.                 13,
  164.                 "sequence-mv",
  165.                 0,
  166.                 0,
  167.                 0);
  168.             }
  169.           }
  170.           else
  171.           {
  172.             (*(void (__thiscall **)(_DWORD *, signed int, const char *, _DWORD, _DWORD, _DWORD))(*v14 + 52))(
  173.               v14,
  174.               13,
  175.               "hash-mv",
  176.               0,
  177.               0,
  178.               0);
  179.           }
  180.         }
  181.         else
  182.         {
  183.           (*(void (__thiscall **)(_DWORD *, signed int, const char *, _DWORD, _DWORD, _DWORD))(*v14 + 52))(
  184.             v14,
  185.             13,
  186.             "encryption-mv",
  187.             0,
  188.             0,
  189.             0);
  190.         }
  191.         break;
  192.       case 6:
  193.         v16 = 65534;
  194.         if ( (unsigned __int8)sub_3957FCA7(a2 + 1, &v15) )
  195.         {
  196.           v13 = v14[5];
  197.           sub_3951296D(&v15, a3 - 1);
  198.           v29 = 1;
  199.         }
  200.         else
  201.         {
  202.           (*(void (__thiscall **)(_DWORD *, signed int, const char *, _DWORD, _DWORD, _DWORD))(*v14 + 52))(
  203.             v14,
  204.             13,
  205.             "encryptio-mv",
  206.             0,
  207.             0,
  208.             0);
  209.         }
  210.         break;
  211.     }
  212.     if ( !v29 )
  213.       nullsub_7();
  214.     v33 = -1;
  215.     result = (*(int (__cdecl **)(char *))((v30 & 0xFFFFFFFC) + 4))(&v31);
  216.   }
  217.   return result;
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement