Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // STR: "Networking", "StartLagCompensation", "CLagCompensationManager::StartLagCompensation with NULL CU
- void __userpurge sub_10308C00(int a1@<ecx>, int a2@<edi>, double a3@<st0>, int a4, int a5, int a6, int a7, int a8)
- {
- int v8; // edx@1
- int v9; // esi@1
- int v10; // edi@5
- int v11; // eax@5
- int v12; // eax@7
- int v13; // esi@7
- _BYTE *v14; // ecx@7
- unsigned int v15; // esi@7
- int v16; // edx@10
- int v17; // ecx@11
- unsigned int *v18; // eax@15
- int v19; // ecx@18
- int v20; // eax@18
- unsigned __int16 v21; // ax@19
- int v22; // ecx@19
- int v23; // eax@20
- _DWORD **v24; // esi@21
- _DWORD *v25; // esi@21
- _DWORD *v26; // ST24_4@22
- int v27; // edx@23
- int v28; // edx@38
- int v29; // eax@40
- unsigned int v30; // ST4C_4@41
- __m128 v31; // xmm1@41
- int v32; // ecx@43
- __m128 v33; // xmm3@47
- __m128 v34; // xmm1@50
- int v35; // edx@50
- unsigned int v36; // eax@53
- float v37; // xmm0_4@55
- int v38; // et1@55
- int v40; // et1@56
- int v42; // et1@57
- int v44; // eax@58
- int v45; // et1@59
- int v47; // et1@60
- int v49; // et1@61
- int v51; // eax@62
- int v52; // eax@65
- int v53; // eax@67
- unsigned __int16 v54; // dx@67
- int v55; // eax@71
- int v56; // ecx@72
- int v57; // eax@72
- _BYTE *v58; // edx@72
- unsigned int v59; // eax@72
- void **v60; // eax@74
- int v61; // ecx@75
- int v62; // ecx@78
- int v63; // [sp+26h] [bp-50h]@1
- bool v64; // [sp+31h] [bp-45h]@36
- int v65; // [sp+32h] [bp-44h]@1
- int v66; // [sp+36h] [bp-40h]@19
- int v67; // [sp+36h] [bp-40h]@67
- _BYTE *v68; // [sp+3Ah] [bp-3Ch]@0
- int v69; // [sp+3Ah] [bp-3Ch]@71
- int v70; // [sp+3Eh] [bp-38h]@5
- int v71; // [sp+3Eh] [bp-38h]@20
- _BYTE *v72; // [sp+3Eh] [bp-38h]@72
- int v73; // [sp+42h] [bp-34h]@1
- int v74; // [sp+42h] [bp-34h]@34
- int i; // [sp+46h] [bp-30h]@18
- void **v76; // [sp+46h] [bp-30h]@74
- float v77; // [sp+4Ah] [bp-2Ch]@44
- float v78; // [sp+4Ah] [bp-2Ch]@50
- float v79; // [sp+4Eh] [bp-28h]@19
- char v80; // [sp+5Ah] [bp-1Ch]@58
- __int128 v81; // [sp+62h] [bp-14h]@1
- int v82; // [sp+72h] [bp-4h]@1
- v8 = *(_WORD *)(a1 + 20);
- v9 = a1 + 4;
- v65 = a1;
- v63 = a2;
- _mm_storeu_si128((__m128i *)&v81, 0i64);
- v82 = 0;
- v73 = a1 + 4;
- while ( (_WORD)v8 != -1 && *(_WORD *)(*(_DWORD *)(a1 + 8) + 16 * (unsigned __int16)v8) != -1 )
- v8 = *(_WORD *)(*(_DWORD *)(a1 + 8) + 16 * (unsigned __int16)v8);
- v10 = DWORD3(v81);
- LOWORD(v11) = v8;
- v70 = (unsigned __int16)v8;
- if ( (unsigned __int16)v8 != 0xFFFF )
- {
- v8 = v81;
- do
- {
- v12 = 2 * (unsigned __int16)v11;
- v13 = *(_DWORD *)(v65 + 8);
- v14 = *(_BYTE **)(v13 + 8 * v12 + 12);
- v15 = *(_DWORD *)(v13 + 8 * v12 + 8);
- v68 = v14;
- if ( v15 != -1
- && dword_10944FF8[6 * (unsigned __int16)v15] == v15 >> 16
- && (&dword_10944FF4)[6 * (unsigned __int16)v15] )
- {
- *v14 = 0;
- sub_10308030(v14 + 48, v8);
- sub_10308030(v68 + 448, v16);
- }
- else
- {
- v17 = v10;
- v68 = (_BYTE *)v10;
- if ( v10 + 1 > SDWORD1(v81) )
- {
- sub_10116F80(v10 - DWORD1(v81) + 1);
- v10 = DWORD3(v81);
- v8 = v81;
- v17 = (int)v68;
- }
- ++v10;
- v82 = v8;
- DWORD3(v81) = v10;
- if ( v10 - v17 - 1 > 0 )
- {
- memmove((void *)(v8 + 4 * v17 + 4), (const void *)(v8 + 4 * v17), 4 * (v10 - v17 - 1));
- v8 = v81;
- v17 = (int)v68;
- }
- v18 = (unsigned int *)(v8 + 4 * v17);
- if ( v18 )
- *v18 = v15;
- }
- v9 = v73;
- LOWORD(v11) = sub_102E5800(v70);
- v8 = v81;
- v11 = (unsigned __int16)v11;
- v70 = v11;
- }
- while ( (unsigned __int16)v11 != 0xFFFF );
- }
- v19 = v81;
- v20 = 0;
- for ( i = 0; v20 < v10; i = v20 )
- {
- v79 = *(float *)(v19 + 4 * v20);
- v21 = sub_1017F7F0(&v79);
- v22 = v21;
- v66 = v21;
- if ( v21 != 0xFFFF )
- {
- v8 = 16 * v21;
- v68 = (_BYTE *)v8;
- v23 = *(_DWORD *)(*(_DWORD *)(v65 + 8) + v8 + 12);
- v71 = v23;
- if ( v23 )
- {
- v24 = (_DWORD **)(v23 + 4);
- sub_1030AF40(v23 + 4);
- v25 = *v24;
- if ( v25 )
- {
- do
- {
- v26 = v25;
- v25 = (_DWORD *)*v25;
- (*(void (__stdcall **)(_DWORD *))(*g_pMemAlloc + 20))(v26);
- }
- while ( v25 );
- v27 = v71;
- *(_DWORD *)(v71 + 4) = 0;
- *(_DWORD *)(v71 + 8) = 0;
- }
- else
- {
- v27 = v71;
- }
- (*(void (__stdcall **)(int))(*g_pMemAlloc + 20))(v27);
- v9 = v73;
- v22 = v66;
- }
- if ( (_WORD)v22 != -1 )
- {
- sub_102E5FA0(v22);
- *(_WORD *)&v68[*(_DWORD *)(v9 + 4)] = v66;
- *(_WORD *)&v68[*(_DWORD *)(v9 + 4) + 2] = *(_WORD *)(v9 + 20);
- v8 = v66;
- --*(_WORD *)(v9 + 18);
- *(_WORD *)(v9 + 20) = v66;
- }
- }
- v19 = v81;
- v20 = i + 1;
- }
- *(_BYTE *)(v65 + 32) = 0;
- *(_DWORD *)(v65 + 36) = a4;
- if ( *(_BYTE *)(a4 + 3156)
- && *(_DWORD *)(dword_1092F7C4 + 24) > 1
- && ((int (__fastcall *)(int (__stdcall ***)(char), int))off_108F9888[13])(&off_108F9888, v8)
- && !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)a4 + 1996))()
- && !((*(_DWORD *)(a4 + 3264) >> 3) & 1) )
- {
- v74 = *(_DWORD *)(a4 + 4028);
- if ( !v74 )
- Error("CLagCompensationManager::StartLagCompensation with NULL CUserCmd!!!\n");
- v64 = *(_DWORD *)(g_VProfCurrentProfile + 4108) != 0;
- if ( v64 )
- CVProfile::EnterScope(g_VProfCurrentProfile, "StartLagCompensation", 0, "Networking", 0, 4);
- *(_BYTE *)(v65 + 72) = 1;
- v28 = *(_DWORD *)(a4 + 28);
- if ( v28 )
- v28 = (v28 - *(_DWORD *)(dword_1092F7C4 + 96)) >> 4;
- v29 = (*(int (__stdcall **)(int, int))(*(_DWORD *)dword_10A2ABB8 + 84))(v28, v63);
- if ( v29 )
- {
- (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v29 + 36))(0);
- *(float *)&v30 = a3;
- v31 = (__m128)v30;
- }
- else
- {
- v31 = (__m128)(unsigned int)v68;
- }
- v32 = a4;
- v31.m128_f32[0] = v31.m128_f32[0] + *(float *)(a4 + 3152);
- if ( (int (__stdcall ***)(char))dword_108F9BBC == &off_108F9BA0 )
- {
- LODWORD(v77) = (unsigned int)&off_108F9BA0 ^ dword_108F9BCC;
- }
- else
- {
- (*(void (__thiscall **)(int))(*(_DWORD *)dword_108F9BBC + 48))(dword_108F9BBC);
- v31 = (__m128)v31.m128_u32[0];
- v32 = a4;
- v77 = a3;
- }
- if ( v31.m128_f32[0] >= 0.0 )
- {
- v33 = (__m128)LODWORD(v77);
- if ( v31.m128_f32[0] <= v77 )
- v33 = v31;
- }
- else
- {
- v33 = 0i64;
- }
- v34 = v33;
- v35 = dword_1092F7C4;
- v78 = (float)((float)*(signed int *)(i + 8) * *(float *)(dword_1092F7C4 + 32)) - *(float *)(v32 + 3152);
- v34.m128_f32[0] = v33.m128_f32[0] - (float)(*(float *)(dword_1092F7C4 + 16) - v78);
- if ( COERCE_FLOAT(_mm_and_ps(v34, (__m128)xmmword_10838B90)) > 0.2 )
- v78 = *(float *)(dword_1092F7C4 + 16) - v33.m128_f32[0];
- if ( (int (__stdcall ***)(char))dword_108F9AB4 == &off_108F9A98 )
- {
- v36 = (unsigned int)&off_108F9A98 ^ dword_108F9AC8;
- }
- else
- {
- v36 = (*(int (**)(void))(*(_DWORD *)dword_108F9AB4 + 52))();
- v35 = dword_1092F7C4;
- }
- v37 = (float)(signed int)v36 * *(float *)(v35 + 32);
- *(_DWORD *)(v65 + 40) = a5;
- *(_DWORD *)(v65 + 44) = *(_DWORD *)a6;
- *(_DWORD *)(v65 + 48) = *(_DWORD *)(a6 + 4);
- *(_DWORD *)(v65 + 52) = *(_DWORD *)(a6 + 8);
- v79 = v37 + v78;
- *(_DWORD *)(v65 + 56) = *(_DWORD *)a7;
- *(_DWORD *)(v65 + 60) = *(_DWORD *)(a7 + 4);
- *(_DWORD *)(v65 + 64) = *(_DWORD *)(a7 + 8);
- *(_DWORD *)(v65 + 68) = a8;
- v38 = *(_DWORD *)(v65 + 44);
- __asm { lahf }
- if ( !__SETP__(_AH & 0x44, 0) )
- {
- v40 = *(_DWORD *)(v65 + 48);
- __asm { lahf }
- if ( !__SETP__(_AH & 0x44, 0) )
- {
- v42 = *(_DWORD *)(v65 + 52);
- __asm { lahf }
- if ( !__SETP__(_AH & 0x44, 0) )
- {
- v44 = (*(int (__stdcall **)(char *))(**(_DWORD **)(v65 + 36) + 512))(&v80);
- v35 = dword_1092F7C4;
- *(_DWORD *)(v65 + 44) = *(_DWORD *)v44;
- *(_DWORD *)(v65 + 48) = *(_DWORD *)(v44 + 4);
- *(_DWORD *)(v65 + 52) = *(_DWORD *)(v44 + 8);
- }
- }
- }
- v45 = *(_DWORD *)(v65 + 56);
- __asm { lahf }
- if ( !__SETP__(_AH & 0x44, 0) )
- {
- v47 = *(_DWORD *)(v65 + 60);
- __asm { lahf }
- if ( !__SETP__(_AH & 0x44, 0) )
- {
- v49 = *(_DWORD *)(v65 + 64);
- __asm { lahf }
- if ( !__SETP__(_AH & 0x44, 0) )
- {
- v51 = (*(int (__fastcall **)(_DWORD, int))(**(_DWORD **)(v65 + 36) + 516))(*(_DWORD *)(v65 + 36), v35);
- v35 = dword_1092F7C4;
- *(_DWORD *)(v65 + 56) = *(_DWORD *)v51;
- *(_DWORD *)(v65 + 60) = *(_DWORD *)(v51 + 4);
- *(_DWORD *)(v65 + 64) = *(_DWORD *)(v51 + 8);
- }
- }
- }
- if ( *(float *)(v65 + 68) <= 0.0 )
- *(_DWORD *)(v65 + 68) = 2139095039;
- v52 = *(_DWORD *)(a4 + 28);
- if ( v52 )
- v52 = (v52 - *(_DWORD *)(v35 + 96)) >> 4;
- v53 = (*(int (__cdecl **)(int))(*(_DWORD *)dword_10A2ABB8 + 320))(v52 - 1);
- v54 = *(_WORD *)(v9 + 16);
- v67 = v53;
- while ( v54 != -1 && *(_WORD *)(*(_DWORD *)(v9 + 4) + 16 * v54) != -1 )
- v54 = *(_WORD *)(*(_DWORD *)(v9 + 4) + 16 * v54);
- LOWORD(v55) = v54;
- v69 = v54;
- if ( v54 != 0xFFFF )
- {
- while ( 1 )
- {
- v56 = (unsigned __int16)v55;
- v57 = *(_DWORD *)(v65 + 8);
- v56 *= 2;
- v58 = *(_BYTE **)(v57 + 8 * v56 + 12);
- v59 = *(_DWORD *)(v57 + 8 * v56 + 8);
- v72 = v58;
- if ( v59 != -1 && dword_10944FF8[6 * (unsigned __int16)v59] == v59 >> 16 )
- {
- v60 = (&dword_10944FF4)[6 * (unsigned __int16)v59];
- v76 = v60;
- if ( v60 )
- {
- v61 = a4;
- if ( (void **)a4 != v60 )
- goto LABEL_78;
- if ( ((int (__thiscall *)(int (__stdcall ***)(char)))off_108F9AF0[13])(&off_108F9AF0) )
- break;
- }
- }
- LABEL_80:
- v55 = (unsigned __int16)sub_102E5800(v69);
- v69 = v55;
- if ( (unsigned __int16)v55 == 0xFFFF )
- goto LABEL_81;
- }
- v61 = a4;
- LABEL_78:
- if ( (unsigned __int8)(*(int (__stdcall **)(void **, int, int))(*(_DWORD *)v61 + 1420))(v76, v74, v67) )
- *v72 = sub_103092C0(v76, v72 + 4, v72 + 48, v72 + 448, v62);
- goto LABEL_80;
- }
- LABEL_81:
- if ( v64 )
- CVProfile::ExitScope(g_VProfCurrentProfile);
- }
- if ( SDWORD2(v81) >= 0 )
- {
- if ( (_DWORD)v81 )
- (*(void (__stdcall **)(_DWORD))(*g_pMemAlloc + 20))(v81);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement