MiShutdownSystem

INT64 __fastcall MiShutdownSystem(){
  INT64 result; 
  UINT64 v1; 
  _ETHREAD *CurrentThread; 
  INT64 v3; 
  _ETHREAD *Lock; 
  PVOID *v5; 
  _ETHREAD *v6; 
  UINT8 *v7; 
  UINT64 v8; 
  UINT8 *v9; 
  UINT8 *v10; 
  PVOID v11; 
  if( !dword_140C4E404 )
  {
    CcNotifyWriteBehind(v1);
    MiFlushAllFilesystemPages();
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --*((_WORD *)CurrentThread + 243);
    ExAcquirePushLockExclusiveEx((UINT64)&qword_140C50ED0, 0i64);
    dword_140C4E404 = 1;
    if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&qword_140C50ED0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((volatile INT64 *)&qword_140C50ED0);
    KeAbPostRelease(&qword_140C50ED0);
    KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
    KeSetEvent(&stru_140C50B28, 0);
    if( byte_140C4E402 == 1 )
    {
      if( (MiFlags & 4) == 0 )
        MmLockPagableSectionByHandle(ExPageLockHandle);
      MiZeroAllPageFiles();
      if( (MiFlags & 4) == 0 )
        MmUnlockPagableImageSection(ExPageLockHandle, v3);
    }
    LODWORD(result) = MiDeleteAllHardwareEnclaves();
  }
  if( PopShutdownCleanly )
  {
    Lock = MmAcquireLoadLock();
    v5 = (PVOID *)PsLoadedModuleList;
    v6 = Lock;
    while( v5 != &PsLoadedModuleList )
    {
      v7 = (UINT8 *)v5[17];
      if( v7 != (UINT8 *)1 && v7 != (UINT8 *)-2i64 && ((unsigned __int8)v7 & 1) == 0 )
      {
        v8 = 8i64 * *(_QWORD *)v7 + 8;
        LODWORD(v9) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
        v10 = v9;
        if( !v9 )
        {
          PopShutdownCleanly = 0;
          break;
        }
        memmove(v9, v7, v8);
        MiFreeLoadedImportList(v7);
        v5[17] = v10;
      }
      v11 = v5[10];
      if( v11 )
      {
        ExFreePoolWithTag(v11, 0);
        v5[10] = 0i64;
      }
      v5 = (PVOID *)*v5;
    }
    MmReleaseLoadLock(v6);
    result = MiDeletePagingFiles((__int64)&MiSystemPartition);
  }
  LOBYTE(result) = 1;
  return result;
}

Referenced by:

MmShutdownSystem