VfHalAllocateMapRegisters

__int64 __fastcall VfHalAllocateMapRegisters(ULONG_PTR a1, __int64 a2, unsigned int a3, char **a4){
  __int64 v5; 
  unsigned int v6; 
  INT64 v8; 
  int MapRegisters; 
  LIST_ENTRY *AdapterInformationInternal; 
  CHAR *MapRegisterFile; 
  v5 = a3;
  v6 = a2;
  if( !VfRealHalAllocateMapRegisters )
    return 3221225473i64;
  MapRegisters = VfRealHalAllocateMapRegisters(a1, a2, a3);
  if( MapRegisters >= 0 )
  {
    LOBYTE(v8) = 1;
    AdapterInformationInternal = ViGetAdapterInformationInternal((DMA_ADAPTER *)a1, v8);
    if( AdapterInformationInternal )
    {
      if( (_DWORD)v5 )
      {
        do
        {
          if( BYTE1(AdapterInformationInternal[2].Flink)
            || (MapRegisterFile = ViAllocateMapRegisterFile((INT64)AdapterInformationInternal, v6)) == 0i64 )
          {
            if( !*a4 )
              *a4 = (char *)-559026163i64;
          }
          else
          {
            *((_QWORD *)MapRegisterFile + 6) = *a4;
            *a4 = MapRegisterFile;
          }
          ADD_MAP_REGISTERS((__int64)AdapterInformationInternal, v6, 1);
          a4 += 2;
          --v5;
        }
        while( v5 );
      }
    }
  }
  return(unsigned int)MapRegisters;
}

Referenced by:

No references.