HalpTscAdvSynchCalculateRemoteDeltas
char __fastcall HalpTscAdvSynchCalculateRemoteDeltas(
INT64 *a1,
__int64 *a2,
unsigned int *a3,
__int64 a4,
int a5,
unsigned int a6){
INT64 *v6;
__int64 v8;
unsigned int *v10;
unsigned int v11;
struct _KPRCB *CurrentPrcb;
int *v13;
INT64 v14;
__int64 v15;
int v16;
REGHANDLE v17;
int v19;
unsigned int v20;
int v21;
__int64 v22;
unsigned int *v23;
__int64 v24;
_EVENT_DATA_DESCRIPTOR UserData;
int *v26;
__int64 v27;
__int64 *v28;
__int64 v29;
int *v30;
__int64 v31;
v6 = (INT64 *)qword_140C4A400;
v8 = qword_140C4A3D0;
v23 = a3;
v10 = a3;
v22 = qword_140C4A3D0;
v11 = 0;
*a1 = 0i64;
*a2 = 0i64;
CurrentPrcb = KeGetCurrentPrcb();
*a3 = CurrentPrcb->Number;
if( a6 )
{
v13 = (int *)v8;
do
{
CurrentPrcb = KeGetCurrentPrcb();
if( v11 == CurrentPrcb->Number )
{
*v6 = 0i64;
*v13 = 0;
}
else
{
v14 = HalpTscAdvSynchCalculateRemoteDelta(
v11,
(unsigned int)HalpTscRequestedIterations,
(_DWORD *)(v8 + 4i64 * v11));
*v6 = v14;
if( v14 < *a1 )
*a1 = v14;
v15 = *v6;
if( *v6 > *a2 )
{
*a2 = v15;
*v10 = v11;
v15 = *v6;
}
v16 = *v13;
v24 = v15;
v21 = v16;
LODWORD(CurrentPrcb) = KeGetCurrentPrcb()->Number;
v19 = (int)CurrentPrcb;
v20 = v11;
if( byte_140C4A328 )
{
v17 = qword_140C4A320;
LOBYTE(CurrentPrcb) = EtwEventEnabled(qword_140C4A320, &HAL_ETW_EVENT_TIMER_PROC_DELTA_REPORT);
if( (_BYTE)CurrentPrcb )
{
v29 = 8i64;
*(_QWORD *)&UserData.Size = 4i64;
UserData.Ptr = (unsigned __int64)&v19;
v27 = 4i64;
v26 = (int *)&v20;
v31 = 4i64;
v28 = &v24;
v30 = &v21;
LOBYTE(CurrentPrcb) = EtwWriteEx(v17, &HAL_ETW_EVENT_TIMER_PROC_DELTA_REPORT, 0i64, 0, 0, 0, 4u, &UserData);
}
v10 = v23;
}
v8 = v22;
}
++v11;
++v13;
++v6;
}
while( v11 < a6 );
}
return(char)CurrentPrcb;
}Referenced by:
HalpTscAdvSynchLeader