Advertisement
Guest User

Untitled

a guest
Jul 19th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.48 KB | None | 0 0
  1. signed int __thiscall sub_100048E7(_DWORD *this, int a2, char a3)
  2. {
  3.   int *v3; // eax
  4.   _DWORD *v4; // ebx
  5.   _DWORD *v5; // edi
  6.   int v6; // eax
  7.   _DWORD *v7; // ecx
  8.   int v8; // eax
  9.   int v9; // ecx
  10.   int v10; // eax
  11.   int v11; // ecx
  12.   int v12; // STD8_4
  13.   int v13; // ecx
  14.   signed int result; // eax
  15.   int v15; // eax
  16.   int v16; // ecx
  17.   int v17; // STCC_4
  18.   int *v18; // eax
  19.   int v19; // STC8_4
  20.   unsigned int v20; // esi
  21.   unsigned int v21; // eax
  22.   signed int v22; // eax
  23.   unsigned int v23; // esi
  24.   unsigned int v24; // eax
  25.   signed int v25; // eax
  26.   unsigned int v26; // esi
  27.   unsigned int v27; // eax
  28.   signed int v28; // eax
  29.   int v29; // ecx
  30.   int v30; // eax
  31.   bool v31; // zf
  32.   signed int v32; // ebp
  33.   unsigned int v33; // esi
  34.   int v34; // eax
  35.   int v35; // eax
  36.   int v36; // edi
  37.   signed int v37; // [esp+D8h] [ebp-6E8h]
  38.   int v39; // [esp+F0h] [ebp-6D0h]
  39.   int v40; // [esp+F4h] [ebp-6CCh]
  40.   int v41; // [esp+F8h] [ebp-6C8h]
  41.   char v42; // [esp+FCh] [ebp-6C4h]
  42.   char v43; // [esp+100h] [ebp-6C0h]
  43.   char v44; // [esp+104h] [ebp-6BCh]
  44.   int v45; // [esp+108h] [ebp-6B8h]
  45.   int v46; // [esp+118h] [ebp-6A8h]
  46.   char v47; // [esp+11Ch] [ebp-6A4h]
  47.   char v48; // [esp+124h] [ebp-69Ch]
  48.   char v49; // [esp+12Ch] [ebp-694h]
  49.   char v50; // [esp+134h] [ebp-68Ch]
  50.   int v51; // [esp+13Ch] [ebp-684h]
  51.   int v52; // [esp+14Ch] [ebp-674h]
  52.   unsigned __int16 v53; // [esp+158h] [ebp-668h]
  53.   int v54; // [esp+15Ch] [ebp-664h]
  54.   char v55; // [esp+180h] [ebp-640h]
  55.   int v56; // [esp+194h] [ebp-62Ch]
  56.   __int16 v57[4]; // [esp+19Ch] [ebp-624h]
  57.   char v58; // [esp+1A4h] [ebp-61Ch]
  58.   __int16 v59; // [esp+3A2h] [ebp-41Eh]
  59.   int v60; // [esp+3A4h] [ebp-41Ch]
  60.   __int64 v61; // [esp+3ACh] [ebp-414h]
  61.   char v62; // [esp+3B4h] [ebp-40Ch]
  62.   WCHAR String; // [esp+5B4h] [ebp-20Ch]
  63.  
  64.   v3 = off_10006288;
  65.   v4 = this;
  66.   v5 = this + 144;
  67.   this[142] = 0;
  68.   *v5 = 0;
  69.   v5[1] = 0;
  70.   v6 = ((int (__stdcall *)(signed int, _DWORD, int))v3[8])(4096, 0, a2);
  71.   v7 = off_1000628C;
  72.   v4[140] = v6;
  73.   if ( (v7[15] != 2 || v7[12] < 6u) && (!v6 || v6 == -1) )
  74.     v4[140] = ((int (__stdcall *)(signed int, _DWORD, int))off_10006288[8])(1024, 0, a2);
  75.   v8 = v4[140];
  76.   if ( !v8 )
  77.   {
  78.     v37 = 67;
  79. LABEL_16:
  80.     v4[141] = ((int (*)(void))off_10006288[7])();
  81.     return v37;
  82.   }
  83.   v4[142] |= 1u;
  84.   v4[139] = a2;
  85.   v4[146] = 0;
  86.   v4[148] = 0;
  87.   if ( dword_100080D4(v8, &v42, &v49, &v47, &v48) )
  88.   {
  89.     v4[142] |= 2u;
  90.     sub_10005ADA(v5, &v42, 4);
  91.     sub_10005ADA(v4 + 145, &v43, 4);
  92.   }
  93.   GetCurrentProcess();
  94.   v9 = 0;
  95.   v40 = 0;
  96.   if ( dword_100081E0 )
  97.   {
  98.     sub_10005668(&v40);
  99.     v9 = v40;
  100.   }
  101.   *((_BYTE *)v4 + 1189) = v9 != 0;
  102.   v10 = 0;
  103.   v40 = 0;
  104.   if ( dword_100081E0 )
  105.   {
  106.     v11 = v4[140];
  107.     sub_10005668(&v40);
  108.     v10 = v40;
  109.   }
  110.   v12 = v4[140];
  111.   *((_BYTE *)v4 + 1188) = v10 != 0;
  112.   ((void (__stdcall *)(int))off_10006288[68])(v12);
  113.   v13 = ((int (__stdcall *)(signed int, _DWORD, int))off_10006288[8])(1040, 0, a2);
  114.   v4[140] = v13;
  115.   if ( !v13 )
  116.   {
  117.     v4[142] |= 0x10000u;
  118.     v37 = 61;
  119.     goto LABEL_16;
  120.   }
  121.   v4[142] |= 4u;
  122.   if ( *((_BYTE *)v4 + 1188) )
  123.   {
  124.     v4[142] |= 0x100u;
  125.     return sub_100042CA(a2, a3);
  126.   }
  127.   v41 = 0;
  128.   ((void (__stdcall *)(int, _DWORD, char *, signed int, int *))off_10006290[119])(v13, 0, &v44, 24, &v41);
  129.   if ( v41 != 24 )
  130.     return 68;
  131.   v15 = v46;
  132.   v16 = v4[142] | 8;
  133.   v4[142] = v16;
  134.   v4[277] = v15;
  135.   if ( !v45 )
  136.   {
  137.     v59 = 0;
  138.     ((void (__stdcall *)(_DWORD, signed int, __int16 *, signed int, int *))off_10006290[119])(
  139.       v4[140],
  140.       27,
  141.       v57,
  142.       520,
  143.       &v40);
  144.     if ( v40 )
  145.       sub_100059D5((char *)v4 + 2190, &v58, 500);
  146.     return 66;
  147.   }
  148.   v39 = 0;
  149.   v17 = v45;
  150.   v18 = off_10006288;
  151.   v19 = v4[140];
  152.   v4[142] = v16 | 0x10;
  153.   ((void (__stdcall *)(int, int, _DWORD *, signed int, int *))v18[139])(v19, v17, v4 + 160, 468, &v39);
  154.   if ( v39 != 468 )
  155.     return 69;
  156.   v4[142] |= 0x20u;
  157.   if ( a3 & 4 )
  158.   {
  159.     ((void (__stdcall *)(_DWORD, _DWORD, _DWORD *, signed int, int *))off_10006288[139])(
  160.       v4[140],
  161.       v4[164],
  162.       v4 + 278,
  163.       76,
  164.       &v39);
  165.     if ( v39 != 76 )
  166.       return 60;
  167.     v59 = 0;
  168.     v20 = *((unsigned __int16 *)v4 + 574);
  169.     if ( (unsigned __int16)v20 >= 0x206u )
  170.       v20 = 518;
  171.     sub_10005AFC(v57, 0, 520);
  172.     ((void (__stdcall *)(_DWORD, _DWORD, __int16 *, unsigned int, int *))off_10006288[139])(
  173.       v4[140],
  174.       v4[288],
  175.       v57,
  176.       v20,
  177.       &v39);
  178.     if ( v39 != v20 )
  179.       return 60;
  180.     v21 = *((unsigned __int16 *)v4 + 574);
  181.     if ( v21 > v20 )
  182.       v22 = 259;
  183.     else
  184.       v22 = v21 >> 1;
  185.     v57[v22] = 0;
  186.     sub_100059D5((char *)v4 + 1190, v57, 500);
  187.     v23 = *((unsigned __int16 *)v4 + 584);
  188.     if ( (unsigned __int16)v23 >= 0x206u )
  189.       v23 = 518;
  190.     sub_10005AFC(v57, 0, 520);
  191.     ((void (__stdcall *)(_DWORD, _DWORD, __int16 *, unsigned int, int *))off_10006288[139])(
  192.       v4[140],
  193.       v4[293],
  194.       v57,
  195.       v23,
  196.       &v39);
  197.     if ( v39 != v23 )
  198.       return 60;
  199.     v24 = *((unsigned __int16 *)v4 + 584);
  200.     if ( v24 > v23 )
  201.       v25 = 259;
  202.     else
  203.       v25 = v24 >> 1;
  204.     v57[v25] = 0;
  205.     sub_100059D5((char *)v4 + 2190, v57, 500);
  206.     v26 = *((unsigned __int16 *)v4 + 588);
  207.     if ( (unsigned __int16)v26 >= 0x206u )
  208.       v26 = 518;
  209.     sub_10005AFC(v57, 0, 520);
  210.     ((void (__stdcall *)(_DWORD, _DWORD, __int16 *, unsigned int, int *))off_10006288[139])(
  211.       v4[140],
  212.       v4[295],
  213.       v57,
  214.       v26,
  215.       &v39);
  216.     if ( v39 != v26 )
  217.       return 60;
  218.     v27 = *((unsigned __int16 *)v4 + 588);
  219.     if ( v27 > v26 )
  220.       v28 = 259;
  221.     else
  222.       v28 = v27 >> 1;
  223.     v57[v28] = 0;
  224.     sub_100059D5((char *)v4 + 3190, v57, 500);
  225.   }
  226.   ((void (__stdcall *)(_DWORD, _DWORD, char *, signed int, int *))off_10006288[139])(v4[140], v4[163], &v55, 28, &v39);
  227.   if ( v39 != 28 )
  228.   {
  229.     v4[142] |= 0x20000u;
  230.     return 60;
  231.   }
  232.   v29 = v56;
  233.   v4[142] |= 0x40u;
  234.   v40 = v29;
  235.   if ( !v29 )
  236.   {
  237.     v4[142] |= 0x40000u;
  238.     return 60;
  239.   }
  240.   if ( !(a3 & 1) )
  241.     return 0;
  242.   ((void (__stdcall *)(_DWORD, int, char *, signed int, int *))off_10006288[139])(v4[140], v29 - 8, &v50, 72, &v39);
  243.   v30 = v4[142] | 0x80;
  244.   v31 = v39 == 72;
  245.   v4[142] = v30;
  246.   if ( !v31 )
  247.   {
  248.     v4[142] = v30 | 0x80000;
  249.     return 60;
  250.   }
  251.   v32 = 1000;
  252.   while ( 1 )
  253.   {
  254.     --v32;
  255.     sub_10005AFC(&v60, 0, 1048);
  256.     v33 = v53;
  257.     v61 = v52;
  258.     v60 = 4096;
  259.     if ( v53 >= 0x206u )
  260.     {
  261.       v4[142] |= 0x200000u;
  262.     }
  263.     else
  264.     {
  265.       v39 = 0;
  266.       ((void (__stdcall *)(_DWORD, int, __int16 *, _DWORD, int *))off_10006288[139])(v4[140], v54, v57, v53, &v39);
  267.       if ( v39 == v33 )
  268.       {
  269.         v57[v33 >> 1] = 0;
  270.         sub_100059D5(&String, v57, 260);
  271.         v34 = sub_10003D00(&String);
  272.         if ( v34 )
  273.           sub_100059D5(&v62, v34, 256);
  274.       }
  275.       else
  276.       {
  277.         v4[142] |= 0x100000u;
  278.       }
  279.     }
  280.     v35 = sub_100059AF((LPVOID)v4[147], 1048 * (v4[146] + 1));
  281.     v36 = 1048 * v4[146];
  282.     v4[147] = v35;
  283.     qmemcpy((void *)(v35 + v36), &v60, 0x418u);
  284.     ++v4[146];
  285.     if ( !v51 || v51 == v40 )
  286.       break;
  287.     ((void (__stdcall *)(_DWORD, int, char *, signed int, int *))off_10006288[139])(v4[140], v51 - 8, &v50, 72, &v39);
  288.     if ( v39 != 72 )
  289.     {
  290.       v4[142] |= 0x400000u;
  291.       break;
  292.     }
  293.     if ( !v52 )
  294.       break;
  295.     if ( v32 <= 0 )
  296.     {
  297.       --v32;
  298.       break;
  299.     }
  300.   }
  301.   result = 0;
  302.   if ( !v32 )
  303.     result = 63;
  304.   return result;
  305. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement