CcWaitForCurrentLazyWriterActivityInternal

NTSTATUS __stdcall CcWaitForCurrentLazyWriterActivityInternal(INT64 FastScan){
  NTSTATUS result; 
  PSLIST_ENTRY v3; 
  PSLIST_ENTRY *v4; 
  __int16 Object; 
  char v6; 
  char v7; 
  int v8; 
  __int64 v9[2]; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  PSLIST_ENTRY v11; 
  v11 = 0i64;
  v7 = 0;
  memset(&LockHandle, 0, sizeof(LockHandle));
  result = CcAllocateWorkQueueEntry(FastScan, &v11);
  if( result >= 0 )
  {
    v3 = v11;
    *((_BYTE *)&v11[7].Next + 8) = 4;
    Object = 0;
    v8 = 0;
    v9[1] = (__int64)v9;
    v9[0] = (__int64)v9;
    v6 = 6;
    v3[1].Next = (_SLIST_ENTRY *)&Object;
    if( (xmmword_140CFB490 & 0x20000) != 0 )
      CcPerfLogWorkItemEnqueue((_LIST_ENTRY *)(FastScan + 272), (_WORK_QUEUE_ENTRY *)v3, 0, 0);
    KeAcquireInStackQueuedSpinLock((UINT64 *)(FastScan + 128), &LockHandle);
    v4 = *(PSLIST_ENTRY **)(FastScan + 280);
    if( *v4 != (PSLIST_ENTRY)(FastScan + 272) )
      __fastfail(3u);
    v3->Next = (_SLIST_ENTRY *)(FastScan + 272);
    *((_QWORD *)&v3->Next + 1) = v4;
    *v4 = v3;
    *(_QWORD *)(FastScan + 280) = v3;
    *(_BYTE *)(FastScan + 633) = 1;
    _InterlockedIncrement((volatile signed __int32 *)(FastScan + 356));
    CcScheduleLazyWriteScan(FastScan, 1u);
    KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
    __writecr8(LockHandle.OldIrql);
    result = KeWaitForSingleObject(&Object, Executive, 0, 0, 0i64);
    _InterlockedDecrement((volatile signed __int32 *)(FastScan + 356));
  }
  return result;
}

Referenced by:

CcExitPartition
CcWaitForCurrentLazyWriterActivityHelper