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.