PopBsdUpdateWorker
VOID __stdcall PopBsdUpdateWorker(){
int v0;
int v1;
int v2;
char v3;
INT64 v4[2];
__int128 v5;
INT64 v6[2];
__int128 v7;
INT64 v8[2];
__int128 v9;
__int128 v10;
*(_OWORD *)v8 = 0i64;
v9 = 0i64;
v10 = 0i64;
*(_OWORD *)v4 = 0i64;
v5 = 0i64;
*(_OWORD *)v6 = 0i64;
v7 = 0i64;
while( 1 )
{
PopAcquireRwLockExclusive(&PopBsdUpdateLock);
v3 = PopBsdUpdateRequests;
if( !PopBsdUpdateRequests )
break;
v0 = PopBsdUpdateRequests & 1;
if( (PopBsdUpdateRequests & 1) != 0 )
{
*(_QWORD *)Buffer = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
*((_DWORD *)Buffer + 2) = RtlComputeCrc32(0i64, (UINT8 *)Buffer, 8ui64);
*(_OWORD *)v4 = *(_OWORD *)&PopBsdPowerTransition;
v5 = *(_OWORD *)Buffer;
}
v1 = v3 & 2;
if( (v3 & 2) != 0 )
{
*(_OWORD *)v6 = *(_OWORD *)&PopBsdPowerTransitionExtension;
v7 = xmmword_140C50498;
}
v2 = v3 & 4;
if( v2 )
{
*(_OWORD *)v8 = *(_OWORD *)&PopBsdPhysicalPowerButtonInfo;
v9 = xmmword_140C502A8;
v10 = xmmword_140C502B8;
}
PopBsdUpdateRequests = 0;
PopReleaseRwLock((UINT64)&PopBsdUpdateLock);
if( v0 )
PopWriteBsdPoInfo(7ui64, (INT64)v4);
if( v1 )
PopWriteBsdPoInfo(0x10ui64, (INT64)v6);
if( v2 )
PopWriteBsdPoInfo(0xEui64, (INT64)v8);
}
PopOkayToQueueNextWorkItem((INT64)&PopBsdUpdateWorkItem);
PopReleaseRwLock((UINT64)&PopBsdUpdateLock);
}Referenced by:
No references.