PopDiagTraceCsResiliencyExit
NTSTATUS __stdcall PopDiagTraceCsResiliencyExit(
INT64 a1,
INT64 a2,
CHAR a3,
INT64 a4,
INT64 a5,
INT64 a6,
INT64 a7,
INT64 a8){
unsigned __int8 v12;
char v13;
unsigned __int64 v14;
INT64 v15;
NTSTATUS EnergyDrainFromDischage;
int v17;
UINT64 v18;
UINT64 v19;
UINT64 v20;
UINT64 v21;
UINT64 v22;
UINT64 *v23;
__int64 v24;
INT64 v25;
NTSTATUS result;
__int128 v27;
DWORD1(v27) = 0;
v12 = KeAcquireSpinLockRaiseToDpc((UINT64 *)&stru_140C23628 + 115);
v13 = byte_140C22F48;
v14 = v12;
xmmword_140C22F88 = *(_OWORD *)a8;
xmmword_140C22F98 = *(_OWORD *)(a8 + 16);
v15 = a5;
qword_140C22FA8 = *(_QWORD *)(a8 + 32);
if( a5 )
{
EnergyDrainFromDischage = PopBatteryGetEnergyDrainFromDischage(
(_MMPFN *)(unsigned int)dword_140C22F44,
(VOID *)*(unsigned int *)(a2 + 12));
LODWORD(v27) = xmmword_140C22F50 | *(_DWORD *)a4;
*((_QWORD *)&v27 + 1) = *((_QWORD *)&xmmword_140C22F50 + 1) - *(_QWORD *)(a4 + 8);
}
else
{
EnergyDrainFromDischage = 0;
*((_QWORD *)&v27 + 1) = 0i64;
LODWORD(v27) = xmmword_140C22F50;
}
v17 = 0;
if( (_BYTE)word_140C22F42 )
v17 = 2;
if( byte_140C22F41 )
v17 |= 1u;
if( !v13 || !a3 )
v17 |= 4u;
if( HIBYTE(word_140C22F42) )
v17 |= 8u;
if( byte_140C22F71 )
v17 |= 0x10u;
if( byte_140C22F70 )
v17 |= 0x20u;
*(_DWORD *)(a1 + 68) = dword_140C22F6C;
*(_DWORD *)(a1 + 64) = dword_140C22F68;
*(_DWORD *)(a1 + 56) = dword_140C22F60;
*(_DWORD *)(a1 + 60) = dword_140C22F64;
*(_QWORD *)(a1 + 72) = qword_140C22F80;
*(_QWORD *)(a1 + 16) = a6;
*(_DWORD *)(a1 + 32) = EnergyDrainFromDischage;
v18 = PopQpcFrequency;
*(_QWORD *)(a1 + 24) = a7;
*(_DWORD *)a1 = v17;
*(_QWORD *)(a1 + 8) = v15;
*(_OWORD *)(a1 + 40) = v27;
v19 = PpmConvertTime(qword_140C22FC0, v18, 0xF4240ui64);
v20 = PopQpcFrequency;
*(_QWORD *)(a1 + 120) = v19;
v21 = PpmConvertTime(qword_140C22FC8, v20, 0xF4240ui64);
v22 = PopQpcFrequency;
*(_QWORD *)(a1 + 128) = v21;
*(_QWORD *)(a1 + 136) = PpmConvertTime(qword_140C22FD0, v22, 0xF4240ui64);
v23 = (UINT64 *)&unk_140C23030;
v24 = 10i64;
*(_DWORD *)(a1 + 144) = dword_140C22FD8;
*(_OWORD *)(a1 + 80) = xmmword_140C22F88;
*(_OWORD *)(a1 + 96) = xmmword_140C22F98;
*(_QWORD *)(a1 + 112) = qword_140C22FA8;
v25 = a1 - (_QWORD)&unk_140C23030;
do
{
*(UINT64 *)((char *)v23 + v25 + 152) = PpmConvertTime(*v23, PopQpcFrequency, 0xF4240ui64);
++v23;
--v24;
}
while( v24 );
PopCsResiliencyStats[0] = 0;
KxReleaseSpinLock((UINT64 *)&stru_140C23628 + 115);
result = KiIrqlFlags;
__writecr8(v14);
return result;
}Referenced by:
PopSleepstudyCaptureResiliencyStatistics