Advertisement
Guest User

Untitled

a guest
May 20th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.48 KB | None | 0 0
  1. signed int __cdecl ProtoSSLUpdateRecvServerCert(int a1, unsigned __int8 *a2)
  2. {
  3.   _DWORD *v2; // edi
  4.   unsigned __int8 *v3; // eax
  5.   int v4; // ecx
  6.   int v5; // edx
  7.   int v6; // ebx
  8.   int v7; // edx
  9.   int v8; // esi
  10.   int v10; // eax
  11.   size_t v11; // eax
  12.   int v12; // edx
  13.   signed int v13; // [esp+10h] [ebp-1468h]
  14.   int v14; // [esp+14h] [ebp-1464h]
  15.   const void *v15; // [esp+18h] [ebp-1460h]
  16.   _DWORD *v16; // [esp+1Ch] [ebp-145Ch]
  17.   int v17; // [esp+20h] [ebp-1458h]
  18.   int v18; // [esp+24h] [ebp-1454h]
  19.   char v19; // [esp+28h] [ebp-1450h]
  20.   int v20; // [esp+610h] [ebp-E68h]
  21.   int v21; // [esp+A30h] [ebp-A48h]
  22.   char Dst; // [esp+A50h] [ebp-A28h]
  23.  
  24.   v2 = *(_DWORD **)(a1 + 296);
  25.   v16 = *(_DWORD **)(a1 + 296);
  26.   v13 = 0x1006;
  27.   v14 = 0;
  28.   memset(&Dst, 0, 0xA28u);
  29.   memset(&v19, 0, 0xA28u);
  30.   v3 = a2;
  31.   v4 = a2[1];
  32.   v5 = a2[2];
  33.   v6 = v5 | ((v4 | (*a2 << 8)) << 8);
  34.   v17 = v5 | ((v4 | (*a2 << 8)) << 8);
  35.   if ( v6 > 3 )
  36.   {
  37.     while ( 1 )
  38.     {
  39.       v7 = v3[5];
  40.       v8 = v7 | ((v3[4] | (v3[3] << 8)) << 8);
  41.       v18 = v7 | ((v3[4] | (v3[3] << 8)) << 8);
  42.       if ( v8 > v6 - 3 )
  43.         return 0x1006;
  44.       v15 = v2 + 529;
  45.       if ( VerifyCertificate(v2 + 529, (int)(v3 + 6), v8) < 0 )
  46.         return 0x1003;
  47.       if ( v14 )
  48.       {
  49.         if ( !v2[1171] )
  50.           return 0x1005;
  51.         v10 = v2[1172];
  52.         if ( v10 )
  53.         {
  54.           if ( v14 > v10 )
  55.             return 0x1005;
  56.         }
  57.         if ( sub_9A67D0(v2 + 641, &v19, v21) )
  58.           return 0x1005;
  59.         v11 = v2[1037];
  60.         if ( v11 != v20 || sub_9A79D0(v2 + 1038, v11, v2 + 1167, v2[1166]) )
  61.           return 0x1005;
  62.         v6 = v17;
  63.         v8 = v18;
  64.         v2 = v16;
  65.       }
  66.       else if ( sub_9A5C20(a1 + 16, v2 + 737) && sub_9A5D10(a1 + 16) && !*(_BYTE *)(a1 + 776) )
  67.       {
  68.         return 0x1004;
  69.       }
  70.       *(_BYTE *)(a1 + 778) = 0;
  71.       if ( !sub_9A7B30(a1, v15, 0) )
  72.         goto LABEL_30;
  73.       if ( v6 == v8 + 3 )
  74.         break;
  75.       v12 = v14++;
  76.       if ( !v12 )
  77.         qmemcpy(&Dst, v15, 0xA28u);
  78.       qmemcpy(&v19, v15, 0xA28u);
  79.       v6 += -3 - v18;
  80.       a2 += v18 + 3;
  81.       v17 = v6;
  82.       if ( v6 <= 3 )
  83.         return 0x1006;
  84.       v3 = a2;
  85.       v2 = v16;
  86.     }
  87.     if ( !sub_9A8600() )
  88.     {
  89.       v13 = 4;
  90.       goto LABEL_31;
  91.     }
  92.     v13 = 4101;
  93.     if ( *(_BYTE *)(a1 + 776) )
  94. LABEL_30:
  95.       v13 = 21;
  96. LABEL_31:
  97.     if ( v14 && v13 != 4101 )
  98.       qmemcpy(v2 + 529, &Dst, 0xA28u);
  99.   }
  100.   return v13;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement