DimitarSerg

vdisk_b36

Jul 9th, 2015
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.75 KB | None | 0 0
  1. signed int __stdcall sub_1000BB10(int a1, int a2, int a3, int a4, int a5, int a6, int a7)
  2. {
  3.   unsigned int v7; // edi@2
  4.   unsigned int v8; // ecx@5
  5.   unsigned int v9; // eax@5
  6.   int v10; // edx@6
  7.   unsigned int v11; // ecx@7
  8.   char v12; // cl@8
  9.   int v13; // edx@12
  10.   unsigned int v14; // ecx@12
  11.   int v15; // eax@13
  12.   int v16; // ebx@13
  13.   int v17; // esi@14
  14.   DWORD v18; // eax@14
  15.   unsigned int v19; // edi@19
  16.   unsigned int v20; // esi@19
  17.   int v21; // eax@19
  18.   int v22; // ecx@20
  19.   int v23; // edi@23
  20.   int v24; // ebx@24
  21.   unsigned int v25; // eax@24
  22.   int v26; // edx@24
  23.   int v27; // eax@32
  24.   unsigned int v28; // eax@39
  25.   int v29; // ebx@47
  26.   int v30; // esi@48
  27.   DWORD v31; // eax@48
  28.   int v32; // eax@50
  29.   int v33; // ebx@50
  30.   int v34; // esi@51
  31.   DWORD v35; // eax@51
  32.   char v36; // cl@52
  33.   unsigned int v37; // eax@52
  34.   char v38; // dl@53
  35.   int v39; // eax@56
  36.   char *v40; // ecx@56
  37.   signed int v41; // edx@56
  38.   char v42; // bl@62
  39.   signed int v43; // eax@67
  40.   unsigned __int8 v44; // cl@69
  41.   unsigned int v46; // [sp+Ch] [bp-9Ch]@15
  42.   __int64 v47; // [sp+10h] [bp-98h]@20
  43.   unsigned int v48; // [sp+1Ch] [bp-8Ch]@20
  44.   unsigned int v49; // [sp+20h] [bp-88h]@19
  45.   __int16 *v50; // [sp+24h] [bp-84h]@23
  46.   __int16 *v51; // [sp+28h] [bp-80h]@19
  47.   unsigned int v52; // [sp+2Ch] [bp-7Ch]@22
  48.   int v53; // [sp+30h] [bp-78h]@1
  49.   int v54; // [sp+34h] [bp-74h]@1
  50.   int v55; // [sp+38h] [bp-70h]@24
  51.   int v56; // [sp+3Ch] [bp-6Ch]@1
  52.   int v57; // [sp+40h] [bp-68h]@1
  53.   int v58; // [sp+44h] [bp-64h]@20
  54.   int v59; // [sp+48h] [bp-60h]@1
  55.   int v60; // [sp+4Ch] [bp-5Ch]@1
  56.   unsigned __int8 v61; // [sp+50h] [bp-58h]@15
  57.   int v62; // [sp+51h] [bp-57h]@15
  58.   int v63; // [sp+55h] [bp-53h]@15
  59.   int v64; // [sp+59h] [bp-4Fh]@15
  60.   __int16 v65; // [sp+5Dh] [bp-4Bh]@15
  61.   __int16 v66; // [sp+60h] [bp-48h]@12
  62.   char v67; // [sp+62h] [bp-46h]@12
  63.  
  64.   v53 = a2;
  65.   v59 = a3;
  66.   v57 = a4;
  67.   v60 = a5;
  68.   v56 = a6;
  69.   v54 = a7;
  70.   if ( a1 )
  71.   {
  72.     if ( wcslen((const unsigned __int16 *)a1) == 25 )
  73.     {
  74.       v8 = 0;
  75.       v9 = 0;
  76.       do
  77.       {
  78.         v10 = *(_WORD *)(a1 + 2 * v9++);
  79.         v8 += v10;
  80.       }
  81.       while ( v9 < 0x18 );
  82.       v11 = v8 % 0x24;
  83.       if ( v11 < 0x24 )
  84.         v12 = byte_10029730[v11];
  85.       else
  86.         v12 = 0;
  87.       if ( *(_WORD *)(a1 + 48) == v12 )
  88.       {
  89.         v66 = 0;
  90.         memset(&v67, 0, 0x3Eu);
  91.         v7 = sub_10019570(&v66, 32, a1);
  92.         if ( v7 & 0x3FF )
  93.         {
  94.           v15 = sub_100026C0(v14, v13);
  95.           v16 = v15;
  96.           if ( v15 )
  97.           {
  98.             v17 = *(_DWORD *)v15 + 24;
  99.             v18 = GetLastError();
  100.             (*(void (__cdecl **)(int, signed int, signed int, _DWORD, _DWORD, signed int, DWORD, unsigned int, unsigned int))v17)(
  101.               v16,
  102.               1,
  103.               43008,
  104.               L"FUN-->%s,LINE-->%d. Err=%d,Ret=0x%x(line:%d)\n",
  105.               L"CLicense::GetSerialNoInfo",
  106.               116,
  107.               v18,
  108.               v7,
  109.               v7 >> 20);
  110.           }
  111.         }
  112.         else
  113.         {
  114.           v62 = 0;
  115.           v63 = 0;
  116.           v64 = 0;
  117.           v65 = 0;
  118.           v46 = 0;
  119.           v61 = 0;
  120.           if ( &v61 )
  121.           {
  122.             v14 = (unsigned int)&v66;
  123.             if ( &v66 )
  124.             {
  125.               v19 = 0;
  126.               v20 = 0;
  127.               v13 = 0;
  128.               v49 = 0;
  129.               v21 = 0;
  130.               v51 = &v66;
  131.               while ( 1 )
  132.               {
  133.                 v22 = v21 + 8;
  134.                 v47 = 0i64;
  135.                 v48 = 8;
  136.                 v58 = v21 + 8;
  137.                 if ( (unsigned int)(v21 + 8) > 0x18 )
  138.                 {
  139.                   v22 = 24 - v21;
  140.                   v48 = 24 - v21;
  141.                 }
  142.                 v52 = 0;
  143.                 if ( v48 > 0 )
  144.                 {
  145.                   v23 = 0;
  146.                   v50 = v51;
  147.                   do
  148.                   {
  149.                     v24 = (unsigned __int16)*v50;
  150.                     v55 = v24;
  151.                     v25 = 0;
  152.                     v26 = (unsigned __int16)v24;
  153.                     while ( 1 )
  154.                     {
  155.                       v22 = byte_10029730[v25];
  156.                       if ( v26 == v22 || (unsigned __int16)(v24 - 97) <= 0x19u && v26 - 32 == v22 )
  157.                         break;
  158.                       ++v25;
  159.                       if ( v25 >= 36 )
  160.                         goto LABEL_36;
  161.                       LOWORD(v24) = v55;
  162.                     }
  163.                     if ( v25 == -1 )
  164.                     {
  165. LABEL_36:
  166.                       v46 = 0x10C0CC01;
  167.                       break;
  168.                     }
  169.                     if ( v25 < v20 )
  170.                       v27 = v25 - v20 + 36;
  171.                     else
  172.                       v27 = v25 - v20;
  173.                     v20 = (v27 + v20) % 0x24;
  174.                     v22 = v23;
  175.                     v47 |= (unsigned __int64)(unsigned int)v27 << v23;
  176.                     ++v50;
  177.                     v23 += 5;
  178.                     ++v52;
  179.                   }
  180.                   while ( v52 < v48 );
  181.                   v19 = v49;
  182.                   v13 = 0;
  183.                 }
  184.                 if ( v46 & 0x3FF )
  185.                   break;
  186.                 v14 = (5 * v48 + 7) >> 3;
  187.                 v28 = 0;
  188.                 if ( v14 > 0 )
  189.                 {
  190.                   while ( v19 < 0xF )
  191.                   {
  192.                     *(&v61 + v19++) = *((_BYTE *)&v47 + v28++);
  193.                     if ( v28 >= v14 )
  194.                       goto LABEL_44;
  195.                   }
  196.                   v46 = 0x1210C80D;
  197. LABEL_44:
  198.                   v49 = v19;
  199.                 }
  200.                 v21 = v58;
  201.                 v51 += 8;
  202.                 if ( (unsigned int)v58 >= 0x18 )
  203.                   goto LABEL_49;
  204.               }
  205.               v29 = sub_100026C0(v22, 0);
  206.               if ( v29 )
  207.               {
  208.                 v30 = *(_DWORD *)v29 + 24;
  209.                 v31 = GetLastError();
  210.                 (*(void (__cdecl **)(int, signed int, signed int, _DWORD, _DWORD, signed int, DWORD, unsigned int, unsigned int))v30)(
  211.                   v29,
  212.                   1,
  213.                   51200,
  214.                   L"FUN-->%s,LINE-->%d. Err=%d,Ret=0x%x(line:%d)\n",
  215.                   L"DeCodeString",
  216.                   284,
  217.                   v31,
  218.                   v46,
  219.                   v46 >> 20);
  220.               }
  221.             }
  222.             else
  223.             {
  224.               v46 = 0xF40C809;
  225.             }
  226.           }
  227.           else
  228.           {
  229.             v46 = 0xF30C809;
  230.           }
  231. LABEL_49:
  232.           v7 = v46;
  233.           if ( v46 & 0x3FF )
  234.           {
  235.             v32 = sub_100026C0(v14, v13);
  236.             v33 = v32;
  237.             if ( v32 )
  238.             {
  239.               v34 = *(_DWORD *)v32 + 24;
  240.               v35 = GetLastError();
  241.               (*(void (__cdecl **)(int, signed int, signed int, _DWORD, _DWORD, signed int, DWORD, unsigned int, unsigned int))v34)(
  242.                 v33,
  243.                 1,
  244.                 43008,
  245.                 L"FUN-->%s,LINE-->%d. Err=%d,Ret=0x%x(line:%d)\n",
  246.                 L"CLicense::GetSerialNoInfo",
  247.                 126,
  248.                 v35,
  249.                 v46,
  250.                 v46 >> 20);
  251.             }
  252.           }
  253.           else
  254.           {
  255.             v36 = 0;
  256.             v37 = 0;
  257.             do
  258.             {
  259.               v38 = *(&v61 + v37++);
  260.               v36 += v38;
  261.             }
  262.             while ( v37 < 0xE );
  263.             if ( HIBYTE(v65) == v36 )
  264.             {
  265.               v39 = 0;
  266.               v40 = (char *)&v61;
  267.               v41 = 11;
  268.               do
  269.               {
  270.                 v39 = (unsigned __int16)word_10029758[(unsigned __int8)(*v40++ ^ BYTE1(v39))] ^ (v39 << 8);
  271.                 --v41;
  272.               }
  273.               while ( v41 );
  274.               if ( BYTE2(v64) == (_BYTE)v39 )
  275.               {
  276.                 if ( (_BYTE)v65 == BYTE1(v39) )
  277.                 {
  278.                   v42 = ((unsigned __int8)v62 >> 5) & 1;
  279.                   if ( v62 & 0x40 )
  280.                     v42 |= 2u;
  281.                   if ( BYTE3(v64) & 0x80 )
  282.                     v42 |= 4u;
  283.                   if ( v42 == 1 )
  284.                   {
  285.                     LOWORD(v47) = 0;
  286.                     *(_DWORD *)((char *)&v47 + 2) = 0;
  287.                     WORD3(v47) = 0;
  288.                     sub_10019D60(v40);
  289.                     v43 = (unsigned __int8)(v47 + 48);
  290.                     if ( BYTE2(v62) > v43 )
  291.                       return 0xA90A80B;
  292.                     v44 = BYTE1(v62);
  293.                     if ( BYTE2(v62) == v43 && (unsigned __int8)(BYTE1(v62) & 0xF) > BYTE2(v47) )
  294.                       return 0xAF0A80B;
  295.                   }
  296.                   else
  297.                   {
  298.                     v44 = BYTE1(v62);
  299.                   }
  300.                   *(_WORD *)v53 = v61 | (unsigned __int16)(BYTE3(v64) << 8);
  301.                   *(_WORD *)v59 = BYTE1(v63);
  302.                   if ( v57 )
  303.                     *(_BYTE *)v57 = v42;
  304.                   if ( v60 )
  305.                     *(_WORD *)v60 = BYTE3(v62);
  306.                   if ( v54 )
  307.                     *(_BYTE *)v54 = (v44 >> 4) + (BYTE3(v63) & 0xF0);
  308.                   if ( v56 )
  309.                     *(_DWORD *)v56 = (unsigned int)(unsigned __int8)v62 >> 7;
  310.                 }
  311.                 else
  312.                 {
  313.                   v7 = 0x930A80B;
  314.                 }
  315.               }
  316.               else
  317.               {
  318.                 v7 = 0x8E0A80B;
  319.               }
  320.             }
  321.             else
  322.             {
  323.               v7 = 0x870A80B;
  324.             }
  325.           }
  326.         }
  327.       }
  328.       else
  329.       {
  330.         v7 = 0x6E0A80B;
  331.       }
  332.     }
  333.     else
  334.     {
  335.       v7 = 0x640A809;
  336.     }
  337.   }
  338.   else
  339.   {
  340.     v7 = 0x620A809;
  341.   }
  342.   return v7;
  343. }
Advertisement
Add Comment
Please, Sign In to add comment