PopClearTransitionCheckpoints

VOID __stdcall PopClearTransitionCheckpoints(){
  void *v0; 
  __int64 v1; 

  PopAcquireRwLockExclusive((_POP_RW_LOCK *)((char *)&stru_140C23628 + 6168));
  while( 1 )
  {
    v0 = (void *)*(&stru_140C23628 + 775);
    if( (_UNKNOWN *)*(&stru_140C23628 + 775) == (_UNKNOWN *)((char *)&stru_140C23628 + 6200) )
      break;
    if( *(_UNKNOWN **)(*(&stru_140C23628 + 775) + 8i64) != (_UNKNOWN *)((char *)&stru_140C23628 + 6200)
      || (v1 = **(&stru_140C23628 + 775), *(_QWORD *)(**(&stru_140C23628 + 775) + 8i64) != *(&stru_140C23628 + 775)) )
    {
      __fastfail(3u);
    }
    *(&stru_140C23628 + 775) = **(&stru_140C23628 + 775);
    *(_QWORD *)(v1 + 8) = (char *)&stru_140C23628 + 6200;
    ExFreePoolWithTag(v0, 0x50434B50u);
  }
  PopReleaseRwLock((_POP_RW_LOCK *)((char *)&stru_140C23628 + 6168));
}

Referenced by:

PopUnlockAfterSleepWorker