MiCopyOnWriteCheckConditions

VOID __fastcall MiCopyOnWriteCheckConditions(INT64 a1, INT64 a2){
  _ETHREAD *CurrentThread; 
  __int64 v3; 
  _ETHREAD *v4; 
  if( (_DWORD)a2 == -1073740748 )
  {
    if( (*(_BYTE *)(a1 + 184) & 7) == 0 )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      v3 = *((_QWORD *)CurrentThread + 23);
      v4 = *(_ETHREAD **)(v3 + 1248);
      if( v4 )
      {
        if( v4 != CurrentThread )
        {
          --*((_WORD *)CurrentThread + 243);
          ExAcquirePushLockExclusiveEx(v3 + 1224, 0i64);
          *((_BYTE *)CurrentThread + 1304) |= 1u;
          UNLOCK_ADDRESS_SPACE((__int64)CurrentThread, v3);
        }
      }
    }
  }
  else if( (_DWORD)a2 == -1073741801 && KeGetCurrentIrql() < 2u && (*((_DWORD *)KeGetCurrentThread() + 325) & 0xC) == 0 )
  {
    MiWaitForFreePage(*(_MI_PARTITION **)(qword_140C4E388 + 8i64 * *(unsigned __int16 *)(a1 + 174)), a2);
  }
}

Referenced by:

MiCopyToUserVa
MiLockAweVadsShared
MiLockCode
MiLockDriverPageRange
MiLockPagedAddress
MiMakeProtoPrivate
MiPrepareImagePagesForHotPatch
MiProbeLeafPteAccess
MiSetProtectionOnSection
MiSplitPrivatePage
MiSplitReducedCommitClonePage
MiSystemFault
MiWalkVaRange
MmAccessFault
MmProtectPool
MmReplaceImportEntry