PopDiagTraceActiveCooling
void __fastcall PopDiagTraceActiveCooling(__int64 a1, __int64 a2, EVENT_DESCRIPTOR *a3, unsigned int a4){
char v5;
bool v8;
DEVICE_OBJECT *DeviceAttachmentBaseRefWithTag;
DEVICE_OBJECT *v10;
__int64 v11;
char *v12;
unsigned int v13;
__int64 v14;
__int64 v15;
unsigned int v16;
unsigned int *v17;
unsigned int v18;
EVENT_DESCRIPTOR *v19;
unsigned __int16 v20;
__int16 v21;
unsigned int v22;
union _LARGE_INTEGER LocalTime;
union _LARGE_INTEGER SystemTime;
EVENT_DATA_DESCRIPTOR UserData;
__int64 v26;
int v27;
int v28;
union _LARGE_INTEGER *p_LocalTime;
__int64 v30;
__int16 *v31;
__int64 v32;
char v33;
int *v34;
__int64 v35;
_DWORD v36[10];
v5 = (char)a3;
v21 = 0;
v22 = 0;
v20 = 0;
LocalTime.QuadPart = 0i64;
if( PopDiagHandleRegistered
&& (a4 || EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_ACTIVE_COOLING_DIAGNOSTIC, a3)) )
{
v8 = a4 <= 1;
if( a4 == 1 )
{
if( !EtwEventEnabled(PopDiagHandle, (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_ACTIVE_COOLING_OPERATIONAL, a3) )
return;
v8 = 1;
}
if( v8 )
{
DeviceAttachmentBaseRefWithTag = IoGetDeviceAttachmentBaseRefWithTag((DEVICE_OBJECT *)a2, 0x67446F50ui64);
v10 = DeviceAttachmentBaseRefWithTag;
if( DeviceAttachmentBaseRefWithTag )
v11 = *(_QWORD *)(*((_QWORD *)DeviceAttachmentBaseRefWithTag + 39) + 40i64);
else
v11 = 0i64;
if( v11 )
{
v20 = *(_WORD *)(v11 + 128) >> 1;
UserData.Ptr = (unsigned __int64)&v20;
*(_QWORD *)&UserData.Size = 2i64;
v26 = *(_QWORD *)(v11 + 136);
v27 = 2 * v20;
v28 = 0;
SystemTime = *(union _LARGE_INTEGER *)&KUSER_SHARED_DATA.SystemTime.LowPart;
ExSystemTimeToLocalTime(&SystemTime, &LocalTime);
v30 = 8i64;
p_LocalTime = &LocalTime;
v12 = &v33;
v32 = 2i64;
v13 = 0;
v14 = 10i64;
v21 = v5 != 0;
v31 = &v21;
do
{
v15 = v13;
*(_QWORD *)(v12 - 4) = 4i64;
++v13;
v12 += 16;
v16 = *(_DWORD *)(a1 + 4 * v15 + 36);
v17 = &v36[v15];
*(_QWORD *)(v12 - 28) = v17;
*v17 = v16 / 0xA;
--v14;
}
while( v14 );
v35 = 4i64;
v18 = *(_DWORD *)(a1 + 16) / 0xAu;
v34 = (int *)&v22;
v22 = v18;
v19 = (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_ACTIVE_COOLING_DIAGNOSTIC;
if( a4 )
v19 = (EVENT_DESCRIPTOR *)&POP_ETW_EVENT_ACTIVE_COOLING_OPERATIONAL;
EtwWrite(PopDiagHandle, v19, 0i64, 0xFui64, &UserData);
}
if( v10 )
ObfDereferenceObjectWithTag(v10, 0x67446F50ui64);
}
}
}Referenced by:
PopThermalWorker