Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2020
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.85 KB | None | 0 0
  1. int __thiscall wtf_WITH_BUFFER(_DWORD *this, _BYTE *inBuf, _BYTE *outBuf, __int64 a4)
  2. {
  3.   int result; // eax
  4.   __int128 v5; // xmm0
  5.   int v6; // esi
  6.   __int128 v7; // xmm0
  7.   int v8; // ebx
  8.   __int128 v9; // xmm0
  9.   int v10; // ecx
  10.   int v11; // edx
  11.   int v12; // edi
  12.   int v13; // ecx
  13.   int v14; // ecx
  14.   int v15; // esi
  15.   int v16; // ecx
  16.   int v17; // edi
  17.   int v18; // eax
  18.   int v19; // edx
  19.   int v20; // ebx
  20.   int v21; // ebx
  21.   int v22; // edi
  22.   int v23; // ecx
  23.   int v24; // ebx
  24.   int v25; // esi
  25.   int v26; // edx
  26.   int v27; // ecx
  27.   int v28; // edx
  28.   int v29; // ebx
  29.   int v30; // edx
  30.   int v31; // ecx
  31.   int v32; // eax
  32.   int v33; // ebx
  33.   int v34; // esi
  34.   int v35; // ecx
  35.   int v36; // ecx
  36.   bool v37; // zf
  37.   unsigned int v38; // eax
  38.   char *v39; // esi
  39.   int v40; // edx
  40.   int v41; // esi
  41.   unsigned int v42; // ebx
  42.   _BYTE *v43; // edi
  43.   unsigned int v44; // edx
  44.   unsigned int v45; // ecx
  45.   _BYTE *v46; // esi
  46.   char v47; // al
  47.   int v48; // esi
  48.   int v49; // kr08_4
  49.   char v50[2]; // [esp+0h] [ebp-E0h]
  50.   char v51[62]; // [esp+2h] [ebp-DEh]
  51.   int v52; // [esp+40h] [ebp-A0h]
  52.   int v53; // [esp+44h] [ebp-9Ch]
  53.   int v54; // [esp+48h] [ebp-98h]
  54.   int v55; // [esp+4Ch] [ebp-94h]
  55.   __int128 v56; // [esp+50h] [ebp-90h]
  56.   __int128 v57; // [esp+60h] [ebp-80h]
  57.   __int128 v58; // [esp+70h] [ebp-70h]
  58.   __int128 v59; // [esp+80h] [ebp-60h]
  59.   __int64 v60; // [esp+90h] [ebp-50h]
  60.   _DWORD *v61; // [esp+98h] [ebp-48h]
  61.   int v62; // [esp+9Ch] [ebp-44h]
  62.   int v63; // [esp+A0h] [ebp-40h]
  63.   int v64; // [esp+A4h] [ebp-3Ch]
  64.   int v65; // [esp+A8h] [ebp-38h]
  65.   int v66; // [esp+ACh] [ebp-34h]
  66.   int v67; // [esp+B0h] [ebp-30h]
  67.   int v68; // [esp+B4h] [ebp-2Ch]
  68.   int v69; // [esp+B8h] [ebp-28h]
  69.   int v70; // [esp+BCh] [ebp-24h]
  70.   int v71; // [esp+C0h] [ebp-20h]
  71.   int v72; // [esp+C4h] [ebp-1Ch]
  72.   int v73; // [esp+C8h] [ebp-18h]
  73.   int v74; // [esp+CCh] [ebp-14h]
  74.   unsigned int v75; // [esp+D0h] [ebp-10h]
  75.   unsigned int v76; // [esp+D4h] [ebp-Ch]
  76.   int v77; // [esp+D8h] [ebp-8h]
  77.   int v78; // [esp+DCh] [ebp-4h]
  78.   int v79; // [esp+F4h] [ebp+14h]
  79.   int v80; // [esp+F4h] [ebp+14h]
  80.   int v81; // [esp+F4h] [ebp+14h]
  81.  
  82.   v75 = a4;
  83.   result = HIDWORD(a4) | a4;
  84.   v61 = this;
  85.   v66 = HIDWORD(a4);
  86.   if ( a4 )
  87.   {
  88.     v52 = (char *)this - v51;
  89.     do
  90.     {
  91.       v5 = *(_OWORD *)this;
  92.       v76 = 10;
  93.       v56 = v5;
  94.       v6 = DWORD1(v56);
  95.       v7 = *((_OWORD *)this + 1);
  96.       v67 = DWORD1(v56);
  97.       v57 = v7;
  98.       v58 = *((_OWORD *)this + 2);
  99.       v8 = HIDWORD(v58);
  100.       v9 = *((_OWORD *)this + 3);
  101.       v10 = v56;
  102.       v77 = HIDWORD(v58);
  103.       v59 = v9;
  104.       v11 = v9;
  105.       v70 = DWORD2(v9);
  106.       v79 = DWORD1(v59);
  107.       v71 = DWORD2(v58);
  108.       v72 = DWORD1(v58);
  109.       v73 = v58;
  110.       v63 = HIDWORD(v57);
  111.       v62 = DWORD1(v57);
  112.       v74 = v57;
  113.       v69 = HIDWORD(v9);
  114.       v12 = DWORD2(v57);
  115.       v64 = HIDWORD(v56);
  116.       v68 = DWORD2(v57);
  117.       v65 = DWORD2(v56);
  118.       v78 = v56;
  119.       do
  120.       {
  121.         v74 ^= __ROL4__(v10 + v11, 7);
  122.         v13 = v73 ^ __ROL4__(v74 + v10, 9);
  123.         v55 = v13;
  124.         v53 = v11 ^ __ROL4__(v13 + v74, 13);
  125.         v78 ^= __ROR4__(v13 + v53, 14);
  126.         v73 = v72 ^ __ROL4__(v6 + v62, 7);
  127.         v14 = v79 ^ __ROL4__(v73 + v62, 9);
  128.         HIDWORD(v60) = v14;
  129.         v15 = v67 ^ __ROL4__(v73 + v14, 13);
  130.         v72 = v62 ^ __ROR4__(v15 + v14, 14);
  131.         v54 = v70 ^ __ROL4__(v12 + v71, 7);
  132.         v16 = v65 ^ __ROL4__(v54 + v71, 9);
  133.         v17 = v68 ^ __ROL4__(v16 + v54, 13);
  134.         v70 = v17;
  135.         v71 ^= __ROR4__(v16 + v17, 14);
  136.         v18 = v64 ^ __ROL4__(v8 + v69, 7);
  137.         v19 = v63 ^ __ROL4__(v18 + v69, 9);
  138.         v20 = v77 ^ __ROL4__(v19 + v18, 13);
  139.         v77 = v20;
  140.         v80 = v69 ^ __ROR4__(v19 + v20, 14);
  141.         v21 = v15 ^ __ROL4__(v18 + v78, 7);
  142.         v67 = v21;
  143.         DWORD1(v56) = v15 ^ __ROL4__(v18 + v78, 7);
  144.         v22 = v16 ^ __ROL4__(v21 + v78, 9);
  145.         v65 = v22;
  146.         DWORD2(v56) = v16 ^ __ROL4__(v21 + v78, 9);
  147.         v23 = v18 ^ __ROL4__(v22 + v21, 13);
  148.         v64 = v23;
  149.         HIDWORD(v56) = v18 ^ __ROL4__(v22 + v21, 13);
  150.         v78 ^= __ROR4__(v22 + v23, 14);
  151.         LODWORD(v56) = v78;
  152.         v24 = v70 ^ __ROL4__(v74 + v72, 7);
  153.         v68 = v24;
  154.         DWORD2(v57) = v70 ^ __ROL4__(v74 + v72, 7);
  155.         v12 = v70 ^ __ROL4__(v74 + v72, 7);
  156.         v25 = v19 ^ __ROL4__(v72 + v24, 9);
  157.         v63 = v25;
  158.         HIDWORD(v57) = v19 ^ __ROL4__(v72 + v24, 9);
  159.         v26 = v74 ^ __ROL4__(v25 + v24, 13);
  160.         v74 = v26;
  161.         LODWORD(v57) = v26;
  162.         v62 = v72 ^ __ROR4__(v26 + v25, 14);
  163.         DWORD1(v57) = v72 ^ __ROR4__(v26 + v25, 14);
  164.         v27 = v73;
  165.         v28 = v77 ^ __ROL4__(v73 + v71, 7);
  166.         v77 = v28;
  167.         HIDWORD(v58) = v28;
  168.         v29 = v55 ^ __ROL4__(v71 + v28, 9);
  169.         v73 = v29;
  170.         v30 = v27 ^ __ROL4__(v29 + v28, 13);
  171.         *(_QWORD *)&v58 = __PAIR__(v30, v29);
  172.         v72 = v30;
  173.         v31 = v71 ^ __ROR4__(v30 + v29, 14);
  174.         v32 = v80;
  175.         v71 = v31;
  176.         DWORD2(v58) = v31;
  177.         v11 = v53 ^ __ROL4__(v80 + v54, 7);
  178.         v33 = HIDWORD(v60) ^ __ROL4__(v80 + v11, 9);
  179.         v79 = v33;
  180.         DWORD1(v59) = v33;
  181.         v34 = v54 ^ __ROL4__(v33 + v11, 13);
  182.         v70 = v34;
  183.         DWORD2(v59) = v54 ^ __ROL4__(v33 + v11, 13);
  184.         v35 = v34 + v33;
  185.         v8 = v77;
  186.         v6 = v67;
  187.         v36 = v32 ^ __ROR4__(v35, 14);
  188.         v37 = v76-- == 1;
  189.         v69 = v36;
  190.         HIDWORD(v59) = v36;
  191.         v10 = v78;
  192.       }
  193.       while ( !v37 );
  194.       LODWORD(v59) = v11;
  195.       v38 = 0;
  196.       do
  197.       {
  198.         v39 = &v51[v38];
  199.         *(_DWORD *)((char *)&v56 + v38) += *(_DWORD *)&v51[v38 + v52];
  200.         v40 = *(_DWORD *)((char *)&v56 + v38);
  201.         *(v39 - 1) = *(_WORD *)((char *)&v56 + v38) >> 8;
  202.         v50[v38] = v40;
  203.         v38 += 4;
  204.         *v39 = BYTE2(v40);
  205.         v39[1] = HIBYTE(v40);
  206.       }
  207.       while ( v38 < 0x40 );
  208.       this = v61;
  209.       v41 = v66;
  210.       v42 = v75;
  211.       v37 = v61[8] == -1;
  212.       ++this[8];
  213.       this[9] += v37;
  214.       if ( v41 < 0 || v41 <= 0 && v42 < 0x40 )
  215.       {
  216.         v76 = v42;
  217.         v81 = v41;
  218.         if ( v41 < 0 || v41 <= 0 && !v42 )
  219.           goto LABEL_17;
  220.       }
  221.       else
  222.       {
  223.         v76 = 64;
  224.         v81 = 0;
  225.       }
  226.       v43 = outBuf;
  227.       v60 = 0i64;
  228.       v44 = 0;
  229.       v45 = 0;
  230.       do
  231.       {
  232.         v46 = inBuf++;
  233.         v47 = *v46 ^ v50[v45];
  234.         v48 = v66;
  235.         *v43++ = v47;
  236.         v44 = (__PAIR__(v44, v45++) + 1) >> 32;
  237.         v49 = v42 - 1;
  238.         v41 = (__PAIR__((unsigned int)v48, v42--) - 1) >> 32;
  239.         v66 = v41;
  240.       }
  241.       while ( (signed __int64)__PAIR__(v44, v45) < __PAIR__(v81, v76) );
  242.       this = v61;
  243.       outBuf = v43;
  244.       v75 = v49;
  245. LABEL_17:
  246.       result = v41 | v42;
  247.     }
  248.     while ( v41 | v42 );
  249.   }
  250.   return result;
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement