SshpFlushBlockerDataCache
NTSTATUS __stdcall SshpFlushBlockerDataCache(UINT64 *a1){
unsigned int v2;
unsigned int v3;
UINT64 *v4;
unsigned int v5;
__int64 v6;
__int64 v7;
__int64 v8;
unsigned __int16 *v9;
__int64 v10;
__int64 v11;
__int64 v12;
unsigned __int64 v13;
__int64 v14;
__int64 v15;
__int64 v16;
__int64 v17;
char v19;
unsigned int i;
int v21;
int v22;
_EVENT_DATA_DESCRIPTOR v23;
int *v24;
__int64 v25;
v21 = 0;
v19 = 0;
v22 = 0;
if( SshpTraceHandleRegistered )
{
v2 = *((_DWORD *)a1 + 4);
if( v2 )
{
v3 = 0;
v4 = a1 + 1;
i = 0;
do
{
v5 = v3 + 4 * v3 + 2;
v6 = 2i64 * (v5 + 2);
v21 = *(unsigned __int16 *)a1[3 * v3 + 3] >> 1;
v7 = 2i64 * (v5 + 1);
v22 = LOWORD(a1[3 * v3 + 4]) >> 1;
v8 = 2i64 * v5;
*(&v23.Ptr + v8) = (unsigned __int64)v4;
*((_QWORD *)&v23.Size + v8) = 16i64;
*(&v23.Ptr + v7) = (unsigned __int64)&v21;
*((_QWORD *)&v23.Size + v7) = 4i64;
v9 = (unsigned __int16 *)a1[3 * v3 + 3];
v10 = *v9;
*(&v23.Ptr + v6) = *((_QWORD *)v9 + 1);
v11 = 2i64 * (v5 + 3);
*(&v23.Size + 2 * v6) = v10;
*(&v23.Reserved + 2 * v6) = 0;
*(&v23.Ptr + v11) = (unsigned __int64)&v22;
*((_QWORD *)&v23.Size + v11) = 4i64;
LODWORD(v6) = LOWORD(a1[3 * v3 + 4]);
v12 = 2i64 * (v5 + 4);
v13 = a1[3 * ++v3 + 2];
i = v3;
*(&v23.Size + 2 * v12) = v6;
*(&v23.Ptr + v12) = v13;
*(&v23.Reserved + 2 * v12) = 0;
}
while( v3 < v2 );
v19 = SshpSessionId;
*(_QWORD *)&v23.Size = 1i64;
v23.Ptr = (unsigned __int64)&v19;
v25 = 4i64;
v24 = (int *)&i;
v14 = 2i64 * (v2 + 4 * v2 + 2);
*(&v23.Ptr + v14) = (unsigned __int64)&SshpSessionId;
*((_QWORD *)&v23.Size + v14) = 8i64;
SSHSupportEtwWrite(v14, &SLEEPSTUDY_EVT_SCENARIO_BLOCKER_DATA, v10, v3 + 4 * v3 + 3, &v23);
}
}
v15 = 0i64;
for( i = 0; (unsigned int)v15 < *((_DWORD *)a1 + 4); i = v15 )
{
v16 = v15 + 1;
v17 = 3 * v16;
CmpFreeTransientPoolWithTag((VOID *)a1[3 * v16 + 2], *(unsigned int *)a1);
*(_OWORD *)&a1[v17] = 0i64;
a1[v17 + 2] = 0i64;
v15 = i + 1;
}
*((_DWORD *)a1 + 4) = 0;
return v15;
}Referenced by:
SshpSendSessionData