CmpStopRMLog

void __fastcall CmpStopRMLog(__int64 a1){
  _ETHREAD *CurrentThread; 
  __int64 v3; 
  CmpLockRegistry();
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquireResourceExclusiveLite(*(ERESOURCE **)(a1 + 128), 1u);
  if( *(_QWORD *)(a1 + 88) )
  {
    if( *(_QWORD *)(a1 + 96) )
    {
      CmpLogCheckpoint(a1, v3, 0);
      ClfsDeleteMarshallingArea(*(PVOID *)(a1 + 96));
      *(_QWORD *)(a1 + 96) = 0i64;
    }
    if( (PVOID)a1 != CmRmSystem && *(_QWORD *)(a1 + 16) == a1 + 16 )
      ClfsDeleteLogByPointer(*(PLOG_FILE_OBJECT *)(a1 + 88));
    ClfsCloseLogFileObject(*(PLOG_FILE_OBJECT *)(a1 + 88));
    *(_QWORD *)(a1 + 88) = 0i64;
  }
  ExReleaseResourceLite(*(PERESOURCE *)(a1 + 128));
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  CmpUnlockRegistry();
}

Referenced by:

CmShutdownCmRM