SshpFlushBlockerDataCache
INT64 __fastcall SshpFlushBlockerDataCache(UINT64 *a1){
unsigned int v2;
unsigned int v3;
UINT64 *v4;
unsigned int v5;
__int64 v6;
__int64 v7;
__int64 v8;
unsigned __int16 *v9;
UINT64 *v10;
__int64 v11;
__int64 v12;
__int64 v13;
_EPROCESS *v14;
INT64 result;
INT64 v16;
__int64 v17;
char v18;
int i;
int v20;
int v21;
char *v22;
__int64 v23[165];
v20 = 0;
v18 = 0;
v21 = 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);
v20 = *(unsigned __int16 *)a1[3 * v3 + 3] >> 1;
v7 = 2i64 * (v5 + 1);
v21 = LOWORD(a1[3 * v3 + 4]) >> 1;
v8 = 2i64 * v5;
v23[v8 - 1] = (__int64)v4;
v23[v8] = 16i64;
v23[v7 - 1] = (__int64)&v20;
v23[v7] = 4i64;
v9 = (unsigned __int16 *)a1[3 * v3 + 3];
v10 = (UINT64 *)*v9;
v23[v6 - 1] = *((_QWORD *)v9 + 1);
v11 = 2i64 * (v5 + 3);
LODWORD(v23[v6]) = (_DWORD)v10;
HIDWORD(v23[v6]) = 0;
v23[v11 - 1] = (__int64)&v21;
v23[v11] = 4i64;
LODWORD(v6) = LOWORD(a1[3 * v3 + 4]);
v12 = 2i64 * (v5 + 4);
v13 = a1[3 * ++v3 + 2];
i = v3;
LODWORD(v23[v12]) = v6;
v23[v12 - 1] = v13;
HIDWORD(v23[v12]) = 0;
}
while( v3 < v2 );
v18 = SshpSessionId;
v23[0] = 1i64;
v22 = &v18;
v23[2] = 4i64;
v23[1] = (__int64)&i;
v14 = (_EPROCESS *)(2i64 * (v2 + 4 * v2 + 2));
v23[(_QWORD)v14 - 1] = (__int64)&SshpSessionId;
v23[(_QWORD)v14] = 8i64;
SSHSupportEtwWrite(v14, (UINT64 *)&SLEEPSTUDY_EVT_SCENARIO_BLOCKER_DATA.Id, v10);
}
}
result = 0i64;
for( i = 0; (unsigned int)result < *((_DWORD *)a1 + 4); i = result )
{
v16 = result + 1;
v17 = 3 * v16;
CmpFreeTransientPoolWithTag((PVOID)a1[3 * v16 + 2], *(unsigned int *)a1);
*(_OWORD *)&a1[v17] = 0i64;
a1[v17 + 2] = 0i64;
result = (unsigned int)(i + 1);
}
*((_DWORD *)a1 + 4) = 0;
return result;
}Referenced by:
SshpSendSessionData