PoStoreDiagnosticContext
INT64 __fastcall PoStoreDiagnosticContext(INT64 a1, UINT64 *a2, UINT64 *a3){
UINT64 v3;
INT64 result;
__int64 v8;
UINT64 v9;
unsigned int v10;
bool v11;
UINT8 *v12;
UINT64 v13;
UINT64 v14;
v3 = *a3;
v14 = *a3;
result = PoStoreRequester(a1, (INT64)a2, &v14, 0);
v8 = *(_QWORD *)(a1 + 24);
v9 = v14;
v10 = result;
v11 = (int)result >= 0;
if( v8 )
{
v12 = (UINT8 *)(((unsigned __int64)a2 + v14 + 7) & 0xFFFFFFFFFFFFFFF8ui64);
v13 = v12 - (UINT8 *)a2 + v8;
*a3 = v13;
if( v11 && v3 >= v13 )
{
a2[4] = v12 - (UINT8 *)a2;
*a2 = v13;
memmove(v12, (UINT8 *)((a1 + 39) & 0xFFFFFFFFFFFFFFF8ui64), *(_QWORD *)(a1 + 24));
return v10;
}
else
{
return 3221225507i64;
}
}
else
{
if( (int)result >= 0 )
{
a2[4] = 0i64;
*a2 = v9;
}
*a3 = v9;
}
return result;
}Referenced by:
ExGetNextWakeTime
ExGetWakeTimerList
PopGetPowerRequestDiagnosticBuffer
PopGetPowerRequestListInfo
PopTraceThermalRequestActiveActivity
PopTraceThermalRequestPassiveHistogram