ADD_MAP_REGISTERS

void __fastcall ADD_MAP_REGISTERS(__int64 a1, unsigned int a2, char a3){
  unsigned __int32 v5; 
  UINT64 Param3; 
  UINT64 v8; 
  UINT64 v9; 
  v5 = a2 + _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 160), a2);
  _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 156), a2);
  Param3 = *(unsigned int *)(a1 + 152);
  if( a2 > (unsigned int)Param3 )
  {
    ViHalPreprocessOptions(
      &Param4,
      (PSTR)"Allocating too many map registers at a time: %x(max %x).",
      0xCui64,
      a2,
      Param3,
      0i64,
      v9);
    VfReportIssueWithOptions(0xE6ui64, 0xCui64, a2, *(unsigned int *)(a1 + 152), 0i64, &Param4);
  }
  if( !a3 )
  {
    v8 = *(unsigned int *)(a1 + 152);
    if( v5 > (unsigned int)v8 )
    {
      ViHalPreprocessOptions(
        &dword_140C12CBC,
        (PSTR)"Allocated too many map registers : %x(max %x).",
        0x15ui64,
        v5,
        v8,
        0i64,
        v9);
      VfReportIssueWithOptions(0xE6ui64, 0x15ui64, v5, *(unsigned int *)(a1 + 152), 0i64, &dword_140C12CBC);
    }
  }
}

Referenced by:

VfAllocateAdapterChannel
VfAllocateAdapterChannelEx
VfAllocateCrashDumpRegisters
VfHalAllocateMapRegisters
ViScatterGatherCallback