Advertisement
ReactiioN_Dev

[CSGO] - ForceFullUpdate( )

Mar 31st, 2015
955
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.81 KB | None | 0 0
  1. // (c) ReactiioN, 31.03.2015
  2. void ForceFullUpdate( void )
  3. {
  4.     DWORD dwClientState = *( DWORD* )( ( DWORD )GetModuleHandleA( "engine.dll" ) + ( 0x1055B434 - 0x10000000 ) ); // v3
  5.     if( *( DWORD* )( dwClientState + 0x154 ) != -1 )
  6.     {
  7.         *( DWORD* )( dwClientState + 0x154 ) = -1;
  8.     }
  9. }
  10.  
  11. // IDA engine.dll "connection problem" dump
  12. double __usercall sub_100EFFF0@<st0>(char a1@<cl>, double result@<st0>, float a3@<xmm0>)
  13. {
  14.   int v3; // edi@1 // dwClientState wird initialisiert
  15.   char v4; // bh@1
  16.   double v5; // st6@2
  17.   char v6; // al@2
  18.   char v7; // bl@3
  19.   int v8; // eax@8
  20.   int v9; // esi@18
  21.   char v10; // al@18
  22.   int v11; // ecx@26
  23.   float v12; // xmm0_4@27
  24.   int v13; // ecx@32
  25.   int v14; // eax@37
  26.   bool v15; // zf@37
  27.   __m128 v16; // xmm2@38
  28.   __m128 v17; // xmm3@38
  29.   __m128d v18; // xmm0@40
  30.   __m128d v19; // xmm1@40
  31.   char v20; // [sp+28h] [bp-48h]@36
  32.   float v21; // [sp+68h] [bp-8h]@1
  33.   float v22; // [sp+6Ch] [bp-4h]@16
  34.  
  35.   v3 = dword_1055B434; // engine.dll + ( 1055B434 - 10000000 )
  36.   v4 = a1;
  37.   v21 = a3;
  38.   if ( *(_DWORD *)(dword_1055B434 + 232) >= 2 )
  39.   {
  40.     v5 = sub_1021FFE0();
  41.     if ( v6 )
  42.     {
  43.       v7 = 1;
  44.       if ( (unsigned __int8)(*(int (**)(void))(*off_1055A720 + 24))() )
  45.       {
  46.         if ( !*(_BYTE *)(v3 + 19608) )
  47.           return result;
  48.         v7 = 0;
  49.       }
  50.       if ( !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v3 + 148) + 24))()
  51.         || ((int (__stdcall ***)(char))dword_10566F44 != &off_10566F28 ? (v8 = (*(int (**)(void))(*(_DWORD *)dword_10566F44
  52.                                                                                                 + 52))()) : (v8 = dword_10566F58),
  53.             v8) )
  54.       {
  55.         if ( *(double *)(v3 + 240) > *(double *)&qword_107F3ED8
  56.           || !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v3 + 148) + 232))()
  57.           || !v4 )
  58.           v7 = 0;
  59.       }
  60.       if ( *(_DWORD *)(v3 + 232) == 6 )
  61.       {
  62.         LODWORD(v22) = *(_DWORD *)(v3 + 19580) + *(_DWORD *)(v3 + 19584) + 1;
  63.         if ( dword_105670EC <= 0 || *(_DWORD *)(dword_1055B434 + 232) )
  64.         {
  65.           v9 = *(_DWORD *)dword_107F15E8;
  66.           v10 = sub_10103EB0(v3 + 8);
  67.           (*(void (__thiscall **)(int, float, _DWORD, _DWORD))(v9 + 84))(
  68.             dword_107F15E8,
  69.             LODWORD(v22),
  70.             *(float *)&dword_105670E8 - v21,
  71.             v10 == 0);
  72.           if ( (unsigned __int8)(**off_1055A71C)[4]() )
  73.             ((void (__stdcall *)(_DWORD))(**off_1055A71C)[9])(LODWORD(v22));
  74.         }
  75.         if ( !v7 )
  76.         {
  77.           (*(void (**)(void))(**(_DWORD **)(v3 + 148) + 188))();
  78.           ++*(_DWORD *)(v3 + 19584);
  79.           return result;
  80.         }
  81.         v5 = sub_100EFDA0();
  82.       }
  83.       if ( v7 )
  84.       {
  85.         if ( !(unsigned __int8)(*(int (__usercall **)@<eax>(double@<st0>))(**(_DWORD **)(v3 + 148) + 28))(result)
  86.           || (unsigned __int8)(*(int (**)(void))(*off_1055A720 + 24))()
  87.           || *(_DWORD *)(v3 + 232) != 6 )
  88.         {
  89.           v13 = dword_1055AB14;
  90.           if ( (int (__stdcall ***)(char))dword_1055AB14 != &off_1055AAF8 )
  91.           {
  92.             (*(void (**)(void))(*(_DWORD *)dword_1055AB14 + 48))();
  93.             v13 = dword_1055AB14;
  94.             v21 = result;
  95.           }
  96.           (*(void (__stdcall **)(signed int))(*(_DWORD *)v13 + 60))(-1082130432);
  97.         }
  98.         else
  99.         {
  100.           (*(void (**)(void))(**(_DWORD **)(v3 + 148) + 104))();
  101.           v11 = *(_DWORD *)(v3 + 148);
  102.           v22 = result;
  103.           (*(void (**)(void))(*(_DWORD *)v11 + 88))();
  104.           v21 = result;
  105.           if ( (float)(v22 - v21) == 0.0 )
  106.           {
  107.             v12 = 0.0;
  108.           }
  109.           else
  110.           {
  111.             (*(void (**)(void))(**(_DWORD **)(v3 + 148) + 88))();
  112.             v21 = result;
  113.             v12 = v22 - v21;
  114.           }
  115.           (*(void (__stdcall **)(float))(*(_DWORD *)dword_1055AB14 + 60))(LODWORD(v12));
  116.           (*(void (__thiscall **)(int *))(dword_107C46C0 + 168))(&dword_107C46C0);
  117.           if ( *(_DWORD *)(v3 + 340) != -1 ) // dwClientState + 0x154 != -1
  118.           {
  119.             sub_100B5D40(v3 + 8);
  120.             *(_DWORD *)(v3 + 340) = -1; // dwClientState + 0x154 = -1
  121.             DevMsg("Requesting full game update (%s)...\n", "connection problem");
  122.           }
  123.         }
  124.         if ( *(_DWORD *)(v3 + 232) == 6 )
  125.         {
  126.           sub_100F2150(*(_DWORD *)(v3 + 340), dword_107F3D28);
  127.           (*(void (__stdcall **)(char *, _DWORD, _DWORD))(**(_DWORD **)(v3 + 148) + 168))(&v20, 0, 0);
  128.           sub_100C0280(&v20);
  129.         }
  130.         v14 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 148) + 192))(0);
  131.         v15 = *(_DWORD *)(v3 + 232) == 6;
  132.         *(_DWORD *)(v3 + 19580) = v14;
  133.         *(_DWORD *)(v3 + 19584) = 0;
  134.         if ( v15 )
  135.         {
  136.           (*(void (__thiscall **)(int *))(dword_1077F928 + 48))(&dword_1077F928);
  137.           v16 = (__m128)1065353216i64;
  138.           v21 = v5;
  139.           v16.m128_f32[0] = 1.0 / v21;
  140.           v17 = (__m128)(unsigned int)dword_105670E8;
  141.           if ( (float)(1.0 / v21) <= *(float *)&dword_105670E8 )
  142.             v17 = v16;
  143.           v18 = 0i64;
  144.           v19 = (__m128d)(unsigned __int64)qword_107F3ED8;
  145.           v19.m128d_f64[0] = *(double *)&qword_107F3ED8 - *(double *)(v3 + 240);
  146.           if ( v19.m128d_f64[0] >= 0.0 )
  147.           {
  148.             if ( v19.m128d_f64[0] <= COERCE_DOUBLE(_mm_cvtps_pd(v17)) )
  149.               v18 = v19;
  150.             else
  151.               v18 = _mm_cvtps_pd(v17);
  152.           }
  153.           *(double *)(v3 + 240) = COERCE_DOUBLE(_mm_cvtps_pd(v16))
  154.                                 + *(double *)&qword_107F3ED8
  155.                                 - COERCE_DOUBLE(_mm_cvtps_pd(_mm_cvtpd_ps(v18)));
  156.         }
  157.         else
  158.         {
  159.           *(double *)(v3 + 240) = *(double *)&qword_107F3ED8 + 0.2;
  160.         }
  161.       }
  162.     }
  163.   }
  164.   return result;
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement