Advertisement
Guest User

Untitled

a guest
Jun 2nd, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 16.15 KB | None | 0 0
  1. // <"Pin: checksum failed.", "Pin: no data received.", "Succeeded=", "StatusCode=", "2.093.001">
  2. int __usercall m_login<eax>(int this<ecx>)
  3. {
  4.   login_st *v1; // esi@1
  5.   int result; // eax@4
  6.   int i; // esi@8
  7.   const char **v4; // eax@8
  8.   int v5; // edi@10
  9.   int v6; // esi@11
  10.   const char **v7; // eax@12
  11.   int v8; // esi@13
  12.   int v9; // eax@13
  13.   char v10; // bl@13
  14.   int v11; // edi@14
  15.   const char *v12; // ebx@15
  16.   int v13; // esi@15
  17.   int v14; // eax@17
  18.   char *v15; // eax@29
  19.   char *v16; // ebp@29
  20.   void (__thiscall *String_destructor)(_DWORD); // esi@29
  21.   int v18; // edi@29
  22.   int v19; // eax@29
  23.   int v20; // edi@32
  24.   int v21; // ebp@41
  25.   unsigned __int8 v22; // sf@42
  26.   unsigned __int8 v23; // of@42
  27.   signed int v24; // ebp@50
  28.   int *v25; // edi@50
  29.   int *v26; // eax@52
  30.   int v27; // ecx@53
  31.   int v28; // edi@53
  32.   int v29; // ecx@64
  33.   int v30; // edx@64
  34.   int v31; // edx@69
  35.   void *v32; // eax@70
  36.   void *v33; // eax@70
  37.   void *v34; // eax@70
  38.   int *v35; // ecx@72
  39.   int v36; // ecx@79
  40.   int *v37; // ecx@84
  41.   char v38; // al@84
  42.   char v39; // al@87
  43.   char v40; // al@90
  44.   char v41; // al@93
  45.   char v42; // al@96
  46.   int v43; // eax@112
  47.   int v44; // ebp@112
  48.   int v45; // edi@119
  49.   int *v46; // [sp+58h] [bp-FCh]@79
  50.   int v47; // [sp+5Ch] [bp-F8h]@29
  51.   int v48; // [sp+5Ch] [bp-F8h]@108
  52.   int v49; // [sp+60h] [bp-F4h]@29
  53.   int v50; // [sp+6Ch] [bp-E8h]@31
  54.   int v51; // [sp+70h] [bp-E4h]@37
  55.   int v52; // [sp+74h] [bp-E0h]@14
  56.   int *v53; // [sp+78h] [bp-DCh]@14
  57.   const char *v54; // [sp+7Ch] [bp-D8h]@13
  58.   char v55; // [sp+80h] [bp-D4h]@8
  59.   int tok; // [sp+84h] [bp-D0h]@6
  60.   int v57; // [sp+88h] [bp-CCh]@54
  61.   char v58; // [sp+8Fh] [bp-C5h]@70
  62.   int v59; // [sp+90h] [bp-C4h]@29
  63.   char v60; // [sp+94h] [bp-C0h]@55
  64.   int v61; // [sp+98h] [bp-BCh]@10
  65.   int v62; // [sp+9Ch] [bp-B8h]@29
  66.   char v63; // [sp+A4h] [bp-B0h]@122
  67.   char v64; // [sp+A8h] [bp-ACh]@122
  68.   int pass; // [sp+ACh] [bp-A8h]@6
  69.   char *username; // [sp+B0h] [bp-A4h]@6
  70.   const char *executable; // [sp+B4h] [bp-A0h]@6
  71.   int v68; // [sp+B8h] [bp-9Ch]@1
  72.   int v69; // [sp+BCh] [bp-98h]@29
  73.   char v70; // [sp+C0h] [bp-94h]@122
  74.   int lang; // [sp+C4h] [bp-90h]@6
  75.   int md5; // [sp+C8h] [bp-8Ch]@1
  76.   int v73; // [sp+CCh] [bp-88h]@6
  77.   int v74; // [sp+D0h] [bp-84h]@6
  78.   int v75; // [sp+D4h] [bp-80h]@6
  79.   char v76; // [sp+D8h] [bp-7Ch]@13
  80.   int v77; // [sp+DCh] [bp-78h]@57
  81.   int v78; // [sp+E0h] [bp-74h]@58
  82.   int v79; // [sp+E4h] [bp-70h]@59
  83.   int v80; // [sp+E8h] [bp-6Ch]@60
  84.   int v81; // [sp+ECh] [bp-68h]@61
  85.   char v82; // [sp+F0h] [bp-64h]@122
  86.   int v83; // [sp+F8h] [bp-5Ch]@6
  87.   some_struct sysinfo; // [sp+FCh] [bp-58h]@10
  88.   int v85; // [sp+144h] [bp-10h]@10
  89.   int v86; // [sp+148h] [bp-Ch]@10
  90.   const char *v87; // [sp+14Ch] [bp-8h]@10
  91.   int v88; // [sp+150h] [bp-4h]@10
  92.   const char *v89; // [sp+154h] [bp+0h]@10
  93.   char v90; // [sp+154h] [bp+0h]@29
  94.   const char *v91; // [sp+158h] [bp+4h]@10
  95.  
  96.   v68 = this;
  97.   v1 = m_login_st_new((void *)this);
  98.   md5 = (int)v1;
  99.   if ( v1 )
  100.     InterlockedIncrement((volatile LONG *)v1 - 4);
  101.   if ( WaitForSingleObject(v1->handle, 0xFFFFFFFFu) )
  102.   {
  103.     result = InterlockedDecrement((volatile LONG *)v1 - 4);
  104.     if ( result <= 0 )
  105.       result = (*(int (__cdecl **)(login_st *))(*((_DWORD *)v1 - 3) + 8))(v1);
  106.     return result;
  107.   }
  108.   TX__Registry__Registry(&v74);
  109.   sub_4A29C0(&tok);
  110.   username = (char *)G_NullString_0;
  111.   pass = G_NullString_0;
  112.   executable = (const char *)G_NullString_0;
  113.   v83 = G_NullString_0;
  114.   v75 = G_NullString_0;
  115.   lang = G_NullString_0;
  116.   md5 = G_NullString_0;
  117.   sub_496E30(v1);
  118.   TX__String__operator_(&username, &v1->username);
  119.   TX__String__operator_(&pass, &v1->pass);
  120.   TX__String__operator_(&executable, &v1->executable);
  121.   v73 = v1->field_1C;
  122.   if ( v73 )
  123.     InterlockedIncrement((volatile LONG *)(v73 - 16));
  124.   TX__String__operator_(&lang, &v1->lang);
  125.   TX__String__operator_(&md5, &v1->ExeMD5);
  126.   sub_496E40(v1);
  127.   m_create_token(&tok, AUTH_token);
  128.   m_token_add_I32(&tok, 0xCEu);
  129.   m_token_add_str((int)&tok, username);
  130.   m_token_add_str((int)&tok, (const char *)pass);
  131.   m_token_add_str((int)&tok, executable);
  132.   v4 = (const char **)TX__String__String(&v55, "2.093.001");
  133.   m_token_add_str((int)&tok, *v4);
  134.   TX__String___String(&v55);
  135.   m_token_add_str((int)&tok, (const char *)lang);
  136.   m_token_add_str((int)&tok, (const char *)md5);
  137.   m_random_seed((int)&tok, 8);
  138.   for ( i = dword_68510C; i; i = *(_DWORD *)(i + 28) )
  139.     m_token_add_U32((int)&tok, *(_DWORD *)(i + 4));
  140.   v85 = G_NullString_0;
  141.   v86 = G_NullString_0;
  142.   v87 = (const char *)G_NullString_0;
  143.   v88 = G_NullString_0;
  144.   v89 = (const char *)G_NullString_0;
  145.   v91 = (const char *)G_NullString_0;
  146.   m_get_system_info(&sysinfo);
  147.   m_token_add_str((int)&tok, v87);
  148.   m_token_add_str((int)&tok, v89);
  149.   m_token_add_str((int)&tok, v91);
  150.   v61 = G_NullArray_1;
  151.   m_netbios(&v61);
  152.   m_token_add_I32(&tok, *(_DWORD *)(v61 - 4));
  153.   v5 = *(_DWORD *)(v61 - 4);
  154.   if ( v5 > 0 )
  155.   {
  156.     v6 = 0;
  157.     do
  158.     {
  159.       v7 = (const char **)sub_57E5F0(&v55, v6 + v61);
  160.       m_token_add_str((int)&tok, *v7);
  161.       TX__String___String(&v55);
  162.       v6 += 6;
  163.       --v5;
  164.     }
  165.     while ( v5 );
  166.   }
  167.   v8 = G_NullArray_1;
  168.   v68 = G_NullArray_1;
  169.   v9 = TX__String__String(&v54, off_677B18);
  170.   v10 = TX__Registry__TestOpenKey(&v76, *(_DWORD *)v9);
  171.   TX__String___String(&v54);
  172.   if ( v10 )
  173.   {
  174.     v53 = (int *)G_NullArray_1;
  175.     TX__Registry__EnumerateValues(&v76, &v53, 1);
  176.     v11 = 0;
  177.     v52 = *(v53 - 1);
  178.     if ( v52 > 0 )
  179.     {
  180.       do
  181.       {
  182.         v12 = (const char *)v53[v11];
  183.         v13 = (int)lpScreen;
  184.         if ( lpScreen[0] )
  185.         {
  186.           while ( !_strstr(v12, *(const char **)v13) )
  187.           {
  188.             v14 = *(_DWORD *)(v13 + 4);
  189.             v13 += 4;
  190.             if ( !v14 )
  191.               goto LABEL_18;
  192.           }
  193.         }
  194.         else
  195.         {
  196. LABEL_18:
  197.           TX__Registry__GetValueData(&v76, v53, &v54, v53[v11], G_NullString_0);
  198.           if ( *((_DWORD *)v54 - 1) != 1 )
  199.           {
  200.             m_create_token(&tok, _DATA_token);
  201.             m_token_add_str((int)&tok, (const char *)v53[v11]);
  202.             m_token_add_str((int)&tok, v54);
  203.             m_random_seed((int)&tok, 8);
  204.           }
  205.           TX__String___String(&v54);
  206.         }
  207.         ++v11;
  208.       }
  209.       while ( v11 < v52 );
  210.       v8 = v68;
  211.     }
  212.     if ( InterlockedDecrement((volatile LONG *)v53 - 4) <= 0 )
  213.       (*(void (__cdecl **)(int *))(*(v53 - 3) + 8))(v53);
  214.   }
  215.   m_create_token(&tok, END_token);
  216.   if ( InterlockedDecrement((volatile LONG *)(v8 - 16)) <= 0 )
  217.     (*(void (__cdecl **)(int))(*(_DWORD *)(v8 - 12) + 8))(v8);
  218.   if ( InterlockedDecrement((volatile LONG *)(v61 - 16)) <= 0 )
  219.     (*(void (__cdecl **)(int))(*(_DWORD *)(v61 - 12) + 8))(v61);
  220.   String_destructor = TX__String___String;
  221.   TX__String___String(&v91);
  222.   TX__String___String(&v90);
  223.   TX__String___String(&v88);
  224.   TX__String___String(&v87);
  225.   TX__String___String(&v86);
  226.   TX__String___String(&v85);
  227.   sub_496DC0(1);
  228.   v69 = G_NullString_0;
  229.   m_encrypt_smth((int)&tok, &TRIXXX_RSA_PRIVKEY_1_3, 609);
  230.   v18 = *(_DWORD *)sub_402030(&tok);
  231.   v19 = sub_4A2720(&tok);
  232.   m_base64_enc(v18, v19, (int)&v69);
  233.   v49 = dword_6828A0;
  234.   v59 = G_NullArray_1;
  235.   v47 = dword_6828A8;
  236.   ((void (__thiscall *)(int *))TX__String__String)(&v62);
  237.   TX__String__String(&v61, dword_682898, dword_6828A0);
  238.   v15 = (char *)sub_4064B0(lang);
  239.   v16 = v15;
  240.   username = v15;
  241.   if ( v15 )
  242.     InterlockedIncrement((volatile LONG *)v15 - 4);
  243.   v50 = 0;
  244.   v52 = 0;
  245.   do
  246.   {
  247.     v20 = (*(int (__thiscall **)(char *, int, int))(*(_DWORD *)v16 + 4))(v16, v47, v49);
  248.     if ( v20 )
  249.       InterlockedIncrement((volatile LONG *)(v20 - 16));
  250.     if ( v52 )
  251.     {
  252.       if ( InterlockedDecrement((volatile LONG *)(v52 - 16)) <= 0 )
  253.         (*(void (__cdecl **)(int))(*(_DWORD *)(v52 - 12) + 8))(v52);
  254.     }
  255.     v52 = v20;
  256.     sub_4057C0((void *)v20);
  257.     sub_405820(username, pass);
  258.     sub_405880(v20, (int)&v59);
  259.     TX__String__String(&v53, "D=", v69);
  260.     sub_405890((void *)v20);
  261.     String_destructor(&v51);
  262.     sub_48D560((void *)v20);
  263.     while ( m_download_crap(v16) > 0 && !*(_BYTE *)(v68 + 12) )
  264.       ;
  265.     v53 = (int *)sub_4058A0(v20);
  266.     if ( TX__XlogLevel <= 2 )
  267.     {
  268.       TX__LogStream__pLockInfo(TX__Xerr, TX__XlogLevel);
  269.       v21 = m_HttpQueryStatusCode(v20);
  270.       TX__Stream__operator__("StatusCode=");
  271.       TX__Stream__operator__(TX__Xerr, v21);
  272.       TX__Stream__pWS(TX__Xerr);
  273.       TX__Stream__operator__("Succeeded=");
  274.       TX__Stream__operator__(v53);
  275.       TX__Stream__pLF(TX__Xerr);
  276.       TX__LogStream__pUnlockMessage(TX__Xerr);
  277.       String_destructor = TX__String___String;
  278.       v16 = username;
  279.     }
  280.     v23 = __SETO__(v52 + 1, 2);
  281.     v22 = v52++ - 1 < 0;
  282.   }
  283.   while ( v22 ^ v23 && v53 );
  284.   if ( v20 )
  285.   {
  286.     if ( InterlockedDecrement((volatile LONG *)(v20 - 16)) <= 0 )
  287.       (*(void (__cdecl **)(int))(*(_DWORD *)(v20 - 12) + 8))(v20);
  288.   }
  289.   if ( v16 )
  290.   {
  291.     if ( InterlockedDecrement((volatile LONG *)v16 - 4) <= 0 )
  292.       (*(void (__cdecl **)(char *))(*((_DWORD *)v16 - 3) + 8))(v16);
  293.   }
  294.   v25 = &v62;
  295.   v24 = 2;
  296.   do
  297.   {
  298.     --v25;
  299.     String_destructor(v25);
  300.     --v24;
  301.   }
  302.   while ( v24 );
  303.   v26 = (int *)operator new(0x2Cu, &unk_685230);
  304.   if ( v26 )
  305.   {
  306.     v27 = G_NullString_0;
  307.     *v26 = -1;
  308.     v26[1] = v27;
  309.     v26[2] = v27;
  310.     v26[3] = v27;
  311.     v26[4] = 0;
  312.     v26[5] = 0;
  313.     v26[6] = v27;
  314.     v26[7] = v27;
  315.     v26[8] = v27;
  316.     v26[9] = v27;
  317.     v26[10] = v27;
  318.     v28 = (int)v26;
  319.     InterlockedIncrement((volatile LONG *)v26 - 4);
  320.   }
  321.   else
  322.   {
  323.     v28 = 0;
  324.   }
  325.   *(_DWORD *)v28 = -1;
  326.   if ( (unsigned __int8)m_check_blocks_sha1_sum(&v57) )
  327.   {
  328.     m_decode_auth_response(&v57);
  329.     sub_4A7CE0(&v60);
  330.     sub_4A7D00((int)&v60, v57, *(_DWORD *)(v57 - 4));
  331.     if ( !m_ShopPackCheck_token(AUTH_token)
  332.       || !m_ShopPackCheck_I32(v28)
  333.       || !m_ShopPackCheck_U32(&v60, (int)&v77)
  334.       || !m_ShopPackCheck_U32(&v60, (int)&v78)
  335.       || !m_ShopPackCheck_U32(&v60, (int)&v79)
  336.       || !m_ShopPackCheck_U32(&v60, (int)&v80)
  337.       || !m_ShopPackCheck_U32(&v60, (int)&v81)
  338.       || *(_DWORD *)v28 <= 0 && !m_ShopPackCheck_str(&v60, v28 + 4) )
  339.       goto LABEL_112;
  340.     v29 = v77;
  341.     v30 = v78;
  342.     *(_DWORD *)(v28 + 20) = *(_DWORD *)v28;
  343.     dw_AUTH_1 = v29;
  344.     dw_AUTH_2 = v30;
  345.     dw_AUTH_3 = v79;
  346.     dw_AUTH_4 = v80;
  347.     dw_AUTH_5 = v81;
  348.     v52 = 0;
  349.     if ( !m_ShopPackExpect_Token(&v60, (int)&v52) )
  350.       goto LABEL_105;
  351.     while ( 1 )
  352.     {
  353.       if ( v52 == _DATA_token )
  354.       {
  355.         v51 = G_NullString_0;
  356.         v50 = G_NullString_0;
  357.         if ( !m_ShopPackCheck_str(&v60, (int)&v51) || !m_ShopPackCheck_str(&v60, (int)&v50) )
  358.         {
  359.           String_destructor(&v50);
  360.           v37 = &v51;
  361.           goto LABEL_104;
  362.         }
  363.         if ( *(_DWORD *)(v51 - 4) != 1 )
  364.         {
  365.           v31 = TX__XlogLevel;
  366.           if ( TX__XlogLevel <= 2 )
  367.           {
  368.             TX__LogStream__pLockInfo(TX__Xerr, TX__XlogLevel);
  369.             v58 = 61;
  370.             v32 = sub_4613E0(TX__Xerr, (int)"Set");
  371.             v33 = sub_40E570(v32, (int)&v51);
  372.             v34 = sub_4985A0(v33, (int)&v58);
  373.             sub_4059B0(v34, (int)&v50);
  374.             TX__LogStream__pUnlockMessage(TX__Xerr);
  375.           }
  376.           TX__Registry__SetValueData(&v74, v31, v51, v50);
  377.         }
  378.         String_destructor(&v50);
  379.         v35 = &v51;
  380.       }
  381.       else
  382.       {
  383.         if ( v52 == _URL0_token )
  384.         {
  385.           if ( !m_ShopPackCheck_str(&v60, v28 + 8) )
  386.             goto LABEL_105;
  387.           goto LABEL_100;
  388.         }
  389.         if ( v52 == _URL2_token )
  390.         {
  391.           v50 = G_NullString_0;
  392.           if ( !m_ShopPackCheck_str(&v60, (int)&v50) )
  393.           {
  394.             v37 = &v50;
  395. LABEL_104:
  396.             String_destructor(v37);
  397. LABEL_105:
  398.             m_ShopPackCheck_U32(&v60, (int)&v68);
  399.             dword_685134 = v68;
  400.             goto LABEL_112;
  401.           }
  402.           v46 = &v50;
  403.           v36 = v28 + 12;
  404.         }
  405.         else
  406.         {
  407.           if ( v52 == _GEOK_token )
  408.           {
  409.             v53 = (int *)-1;
  410.             if ( !m_ShopPackCheck_I32((int)&v53) )
  411.               goto LABEL_105;
  412.             *(_DWORD *)(v28 + 16) = v53;
  413.             goto LABEL_100;
  414.           }
  415.           if ( v52 == _GEHA_token )
  416.           {
  417.             v50 = G_NullString_0;
  418.             v38 = m_ShopPackCheck_str(&v60, (int)&v50);
  419.             v37 = &v50;
  420.             if ( !v38 )
  421.               goto LABEL_104;
  422.             v46 = &v50;
  423.             v36 = v28 + 28;
  424.           }
  425.           else
  426.           {
  427.             if ( v52 == _EXIT_token )
  428.             {
  429.               v50 = G_NullString_0;
  430.               v39 = m_ShopPackCheck_str(&v60, (int)&v50);
  431.               v37 = &v50;
  432.               if ( !v39 )
  433.                 goto LABEL_104;
  434.               v46 = &v50;
  435.               v36 = v28 + 24;
  436.             }
  437.             else
  438.             {
  439.               if ( v52 == _UURL_token )
  440.               {
  441.                 v50 = G_NullString_0;
  442.                 v40 = m_ShopPackCheck_str(&v60, (int)&v50);
  443.                 v37 = &v50;
  444.                 if ( !v40 )
  445.                   goto LABEL_104;
  446.                 v46 = &v50;
  447.                 v36 = v28 + 32;
  448.               }
  449.               else
  450.               {
  451.                 if ( v52 == _UMD5_token )
  452.                 {
  453.                   v50 = G_NullString_0;
  454.                   v41 = m_ShopPackCheck_str(&v60, (int)&v50);
  455.                   v37 = &v50;
  456.                   if ( !v41 )
  457.                     goto LABEL_104;
  458.                   v46 = &v50;
  459.                   v36 = v28 + 36;
  460.                 }
  461.                 else
  462.                 {
  463.                   if ( v52 != _INGN_token )
  464.                     goto LABEL_105;
  465.                   v50 = G_NullString_0;
  466.                   v42 = m_ShopPackCheck_str(&v60, (int)&v50);
  467.                   v37 = &v50;
  468.                   if ( !v42 )
  469.                     goto LABEL_104;
  470.                   v46 = &v50;
  471.                   v36 = v28 + 40;
  472.                 }
  473.               }
  474.             }
  475.           }
  476.         }
  477.         TX__String__operator_(v36, v46);
  478.         v35 = &v50;
  479.       }
  480.       String_destructor(v35);
  481. LABEL_100:
  482.       v52 = 0;
  483.       if ( !m_ShopPackExpect_Token(&v60, (int)&v52) )
  484.         goto LABEL_105;
  485.     }
  486.   }
  487.   if ( *(_DWORD *)(v57 - 4) )
  488.   {
  489.     if ( TX__XlogLevel > 5 )
  490.       goto LABEL_112;
  491.     TX__LogStream__pLockError(TX__Xerr, v57);
  492.     v48 = (int)"Pin: checksum failed.";
  493.   }
  494.   else
  495.   {
  496.     if ( TX__XlogLevel > 5 )
  497.       goto LABEL_112;
  498.     TX__LogStream__pLockError(TX__Xerr, v57);
  499.     v48 = (int)"Pin: no data received.";
  500.   }
  501.   TX__Stream__operator__(v48);
  502.   TX__Stream__pLF(TX__Xerr);
  503.   TX__LogStream__pUnlockMessage(TX__Xerr);
  504. LABEL_112:
  505.   InterlockedIncrement((volatile LONG *)(v28 - 16));
  506.   v44 = md5;
  507.   v43 = *(_DWORD *)(md5 + 40);
  508.   if ( v43 )
  509.   {
  510.     if ( InterlockedDecrement((volatile LONG *)(v43 - 16)) <= 0 )
  511.       (*(void (__cdecl **)(_DWORD))(*(_DWORD *)(*(_DWORD *)(v44 + 40) - 12) + 8))(*(_DWORD *)(v44 + 40));
  512.   }
  513.   *(_DWORD *)(v44 + 40) = v28;
  514.   sub_496DC0(3);
  515.   TX__CriticalSection__Enter((login_st *)&unk_6876E0);
  516.   dword_6876B8 |= 0x10u;
  517.   TX__CriticalSection__Leave(&unk_6876E0);
  518.   if ( InterlockedDecrement((volatile LONG *)(v28 - 16)) <= 0 )
  519.     (*(void (__cdecl **)(int))(*(_DWORD *)(v28 - 12) + 8))(v28);
  520.   if ( InterlockedDecrement((volatile LONG *)(v57 - 16)) <= 0 )
  521.     (*(void (__cdecl **)(int))(*(_DWORD *)(v57 - 12) + 8))(v57);
  522.   String_destructor(&executable);
  523.   v45 = lang;
  524.   if ( lang )
  525.   {
  526.     if ( InterlockedDecrement((volatile LONG *)(lang - 16)) <= 0 )
  527.       (*(void (__cdecl **)(int))(*(_DWORD *)(v45 - 12) + 8))(v45);
  528.   }
  529.   String_destructor(&v70);
  530.   String_destructor(&v69);
  531.   String_destructor(&v73);
  532.   String_destructor(&v82);
  533.   String_destructor(&pass);
  534.   String_destructor(&v63);
  535.   String_destructor(&v64);
  536.   if ( InterlockedDecrement((volatile LONG *)v54 - 4) <= 0 )
  537.     (*(void (__cdecl **)(const char *))(*((_DWORD *)v54 - 3) + 8))(v54);
  538.   TX__Registry___Registry(&v74);
  539.   result = InterlockedDecrement((volatile LONG *)(v44 - 16));
  540.   if ( result <= 0 )
  541.     result = (*(int (__cdecl **)(int))(*(_DWORD *)(v44 - 12) + 8))(v44);
  542.   return result;
  543. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement