PopRecordPhysicalPowerButton
VOID __fastcall PopRecordPhysicalPowerButton(UINT64 State){
char v1;
__int64 v2;
v1 = State;
PopAcquireRwLockExclusive(&PopBsdUpdateLock);
v2 = 1i64 << ((dword_140C206F8 + dword_140C206FC) & 0x3F);
if( v1 )
{
PopBsdPhysicalPowerButtonInfo = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
++*((_DWORD *)&PopBsdPhysicalPowerButtonInfo + 2);
qword_140C20700 |= v2;
*((_WORD *)&PopBsdPhysicalPowerButtonInfo + 6) = KUSER_SHARED_DATA.BootId;
*((_BYTE *)&PopBsdPhysicalPowerButtonInfo + 14) = PopBsdLastPowerWatchdogStage;
qword_140C20708 = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
++dword_140C206F8;
LOBYTE(xmmword_140C502B8) = PopBsdCurrentCsPhase;
DWORD1(xmmword_140C502B8) = PopBsdTransitionLatestCheckpointId;
DWORD2(xmmword_140C502B8) = PopBsdTransitionLatestCheckpointType;
HIDWORD(xmmword_140C502B8) = PopBsdTransitionLatestCheckpointSeqNumber;
*((_BYTE *)&PopBsdPhysicalPowerButtonInfo + 15) = *((_BYTE *)&PopBsdPhysicalPowerButtonInfo + 15) & 0xFC | PopBsdPowerWatchdogArmed & 1 | (2 * (PopBsdShutdownInProgress & 1));
}
else
{
*(_QWORD *)&xmmword_140C502A8 = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
++DWORD2(xmmword_140C502A8);
qword_140C20700 &= ~v2;
++dword_140C206FC;
WORD6(xmmword_140C502A8) = KUSER_SHARED_DATA.BootId;
qword_140C20710 = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
}
if( dword_140C206F8 < (unsigned int)dword_140C206FC || (unsigned int)(dword_140C206F8 - dword_140C206FC) > 1 )
byte_140C20728 = 1;
PopBsdHandleRequest(4i64);
PopReleaseRwLock((UINT64)&PopBsdUpdateLock);
}Referenced by:
PopPowerButtonWorkCallback