SUBTRACT_MAP_REGISTERS

VOID __stdcall SUBTRACT_MAP_REGISTERS(_ADAPTER_INFORMATION *AdapterInformation, UINT64 NumberOfMapRegisters){
  int v3; 
  UINT64 v4; 
  UINT64 v5; 

  v3 = _InterlockedExchangeAdd(AdapterInformation + 40, -(int)NumberOfMapRegisters) - NumberOfMapRegisters;
  if( v3 < 0 )
  {
    v4 = -v3;
    ViHalPreprocessOptions(
      (UINT64 *)((char *)&qword_140C12CB4 + 4),
      (PSTR)"Freed too many map registers: -%x.",
      5ui64,
      v4,
      0i64,
      0i64,
      v5);
    VfReportIssueWithOptions(0xE6ui64, 5u, v4, 0, 0, (UINT64 *)((char *)&qword_140C12CB4 + 4));
  }
  _InterlockedExchange(AdapterInformation + 47, 0);
}

Referenced by:

VfAllocateAdapterChannel
VfAllocateAdapterChannelEx
VfCancelAdapterChannel
VfFreeAdapterChannel
VfFreeAdapterObject
VfFreeMapRegisters
VfPutScatterGatherList
ViAdapterCallback
ViFlushZeroMapRegisterBaseWcbs