Advertisement
Guest User

Untitled

a guest
Aug 15th, 2018
835
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.83 KB | None | 0 0
  1. __int64 __fastcall SocketControl(__int64 *a1, int a2, __int64 a3, unsigned int a4)
  2. {
  3.   unsigned int v4; // er10
  4.   unsigned int v5; // er11
  5.   __int64 v6; // r9
  6.   __int64 *v7; // rbx
  7.   __int64 result; // rax
  8.   __int64 v9; // rax
  9.   int v10; // er11
  10.   int v11; // er8
  11.   __int64 v12; // rdx
  12.   int v13; // eax
  13.   __int64 v14; // rax
  14.   __int64 v15; // rcx
  15.   __int64 v16; // rax
  16.   __int64 v17; // rax
  17.   __int64 v18; // rax
  18.   __int64 v19; // rax
  19.   signed int v20; // eax
  20.   __int64 v21; // rax
  21.   __int64 v22; // rcx
  22.   __int64 v23; // rax
  23.   int v24; // eax
  24.   signed int v25; // edi
  25.   int v26; // eax
  26.   __int64 v27; // r8
  27.   signed int v28; // eax
  28.   int v29; // [rsp+30h] [rbp-18h]
  29.   __int64 v30; // [rsp+38h] [rbp-10h]
  30.  
  31.   v4 = -1;
  32.   v5 = a4;
  33.   v6 = a3;
  34.   v7 = a1;
  35.   if ( !a1 )
  36.     return sub_14105C390(0);
  37.   switch ( a2 )
  38.   {
  39.     case 'addr':
  40.       if ( a3 )
  41.       {
  42.         if ( v5 == 16 )
  43.           sub_14103BDE0(a3, a1 + 37, 16i64);
  44.       }
  45.       return *((unsigned __int8 *)v7 + 303) | ((*((unsigned __int8 *)v7 + 302) | ((*((unsigned __int8 *)v7 + 301) | ((unsigned int)*((unsigned __int8 *)v7 + 300) << 8)) << 8)) << 8);
  46.     case 'alpn':
  47.       v9 = a1[45];
  48.       if ( v9 )
  49.       {
  50.         if ( a3 )
  51.         {
  52.           sub_14103C0D0(a3, v9 + 38408, v5);
  53.           return 0i64;
  54.         }
  55.         return 0i64;
  56.       }
  57.       goto LABEL_101;
  58.     case 'alrt':
  59.       if ( a3 && v5 == 16 )
  60.       {
  61.         v10 = *((unsigned __int8 *)a1 + 894);
  62.         v29 = *((unsigned __int8 *)a1 + 894);
  63.         v4 = 0;
  64.         v30 = 5416861360i64;
  65.         if ( *((_BYTE *)a1 + 893) )
  66.         {
  67.           v11 = 0;
  68.           v12 = 0i64;
  69.           v13 = 0;
  70.           while ( v13 != v10 )
  71.           {
  72.             ++v12;
  73.             ++v11;
  74.             v13 = *(_DWORD *)&_ImageBase[8 * v12 + 25477976];
  75.             if ( v13 == -1 )
  76.               goto LABEL_21;
  77.           }
  78.           v4 = 1;
  79.           v30 = *(_QWORD *)&_ImageBase[8 * v11 + 25477980];
  80.         }
  81. LABEL_21:
  82.         if ( v4 )
  83.         {
  84.           sub_14103BDE0(v6, &v29, 16i64);
  85.           return (unsigned int)(*((_BYTE *)v7 + 895) != 0) + 1;
  86.         }
  87.       }
  88.       return v4;
  89.     case 'cert':
  90.       if ( a3 && v5 == 452 )
  91.       {
  92.         sub_14103BDE0(a3, a1 + 47, 452i64);
  93.         return 0i64;
  94.       }
  95.       goto LABEL_101;
  96.     case 'cfip':
  97.       return *((_DWORD *)a1 + 88) == 4;
  98.     case 'ciph':
  99.       v14 = a1[45];
  100.       if ( v14 )
  101.       {
  102.         v15 = *(_QWORD *)(v14 + 48);
  103.         if ( v15 )
  104.         {
  105.           if ( a3 )
  106.             sub_14103C0D0(a3, v15 + 16, v5);
  107.           return *(unsigned int *)(*(_QWORD *)(v7[45] + 48) + 12i64);
  108.         }
  109.       }
  110. LABEL_101:
  111.       if ( *v7 )
  112.       {
  113.         if ( a2 != 1937006964 )
  114.           return sub_14105C390(*v7);
  115.         v28 = *((_DWORD *)v7 + 88);
  116.         if ( v28 < 4096 )
  117.         {
  118.           if ( v28 >= 34 )
  119.             return sub_14105C390(*v7);
  120.           return 0i64;
  121.         }
  122.       }
  123.       return v4;
  124.     case 'crpt':
  125.     case 'rsao':
  126.       switch ( *((_DWORD *)a1 + 88) )
  127.       {
  128.         case 0x14:
  129.         case 0x17:
  130.         case 0x1A:
  131.         case 0x1C:
  132.         case 0x1D:
  133.         case 0x1F:
  134.         case 0x21:
  135.           result = 1i64;
  136.           break;
  137.         default:
  138.           return 0;
  139.       }
  140.       break;
  141.     case 'htim':
  142.       v16 = a1[45];
  143.       if ( v16 )
  144.         return *(unsigned int *)(v16 + 16);
  145.       goto LABEL_101;
  146.     case 'ladd':
  147.       if ( a3 && (signed int)v5 >= 16 )
  148.       {
  149.         sub_14103BDE0(a3, a1 + 39, 16i64);
  150.         return 0i64;
  151.       }
  152.       return v4;
  153.     case 'maxr':
  154.       return *((unsigned int *)a1 + 219);
  155.     case 'maxs':
  156.       return *((unsigned int *)a1 + 218);
  157.     case 'recv':
  158.       v17 = a1[45];
  159.       if ( v17 )
  160.         return (unsigned int)(*(_DWORD *)(v17 + 36) - *(_DWORD *)(v17 + 32));
  161.       return 0i64;
  162.     case 'resu':
  163.       v18 = a1[45];
  164.       if ( v18 )
  165.         return *(unsigned __int8 *)(v18 + 924);
  166.       goto LABEL_101;
  167.     case 'salg':
  168.       v19 = a1[45];
  169.       if ( v19 )
  170.       {
  171.         if ( a3 )
  172.         {
  173.           v20 = *(_DWORD *)(v19 + 14000);
  174.           if ( v20 >= 16 )
  175.           {
  176.             sub_14103C0D0(a3, qword_143AB0720[v20 - 16], v5);
  177.             return 1i64;
  178.           }
  179.         }
  180.       }
  181.       goto LABEL_101;
  182.     case 'send':
  183.       v21 = a1[45];
  184.       if ( v21 )
  185.         return (unsigned int)(*(_DWORD *)(v21 + 24) - *(_DWORD *)(v21 + 20));
  186.       return 0i64;
  187.     case 'serr':
  188.       v22 = *a1;
  189.       if ( v22 )
  190.         result = sub_14105C390(v22);
  191.       else
  192.         result = *((unsigned int *)v7 + 216);
  193.       return result;
  194.     case 'sock':
  195.       if ( a3 && v5 == 8 )
  196.       {
  197.         sub_14103BDE0(a3, a1, 8i64);
  198.         return 0i64;
  199.       }
  200.       return v4;
  201.     case 'vers':
  202.       v23 = a1[45];
  203.       if ( !v23 )
  204.         goto LABEL_101;
  205.       if ( a3 )
  206.         sub_14103C0D0(a3, qword_143AB06F8[(unsigned __int8)*(_WORD *)(v23 + 920)], v5);
  207.       result = *(unsigned __int16 *)(v7[45] + 920);
  208.       break;
  209.     case 'fail':
  210.       v24 = *((_DWORD *)a1 + 88);
  211.       if ( !_bittest(&v24, 0xCu) )
  212.         return 0;
  213.       switch ( v24 )
  214.       {
  215.         case 4097:
  216.           return v4;
  217.         case 4098:
  218.           result = 0xFFFFFFF6i64;
  219.           break;
  220.         case 4099:
  221.           result = 0xFFFFFFF5i64;
  222.           break;
  223.         case 4100:
  224.           result = 0xFFFFFFF4i64;
  225.           break;
  226.         case 4101:
  227.           result = 4294967283i64;
  228.           break;
  229.         case 4102:
  230.           result = 4294967282i64;
  231.           break;
  232.         case 4103:
  233.           result = 4294967281i64;
  234.           break;
  235.         case 4104:
  236.           result = 4294967273i64;
  237.           break;
  238.         case 4105:
  239.           result = 4294967276i64;
  240.           break;
  241.         case 4106:
  242.           result = 4294967275i64;
  243.           break;
  244.         case 4107:
  245.           result = 4294967274i64;
  246.           break;
  247.         case 4108:
  248.           result = 4294967272i64;
  249.           break;
  250.         case 4109:
  251.           result = 4294967266i64;
  252.           break;
  253.         case 4110:
  254.           result = 4294967265i64;
  255.           break;
  256.         case 4111:
  257.           result = 4294967271i64;
  258.           break;
  259.         default:
  260.           result = 4294967264i64;
  261.           break;
  262.       }
  263.       break;
  264.     case 'hres':
  265.       v25 = SocketControl(a1, 1936028274, 0i64, 0);
  266.       v26 = SocketControl(v7, 1717660012, 0i64, 0);
  267.       if ( v25 >= -1 )
  268.       {
  269.         if ( v26 )
  270.         {
  271.           LOBYTE(v27) = 1;
  272.           result = sub_14105FFE0(130i64, (unsigned __int16)v26, v27);
  273.         }
  274.         else
  275.         {
  276.           result = sub_14105FFE0(130i64, 0i64, 0i64);
  277.         }
  278.       }
  279.       else
  280.       {
  281.         LOBYTE(v27) = 1;
  282.         result = sub_14105FFE0(128i64, (unsigned __int16)v25, v27);
  283.       }
  284.       return result;
  285.     default:
  286.       goto LABEL_101;
  287.   }
  288.   return result;
  289. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement