HalpGetAdapter

char *__fastcall HalpGetAdapter(__int64 a1, _DEVICE_OBJECT *a2, _DWORD *a3){
  __int64 v3; 
  CHAR v7; 
  int v8; 
  int v9; 
  __int64 v10; 
  v3 = 0i64;
  *a3 = 0;
  if( !a2 || (v7 = HalpAreDriversDmarCompatible(a2), v8 = 2, !v7) )
    v8 = 0;
  v9 = *(_DWORD *)a1;
  if( *(_DWORD *)a1 <= 2u && !v8 )
    return HalGetAdapterV2(a1, a2, a3);
  if( v9 == 3 || v9 == 2 && *(_BYTE *)(a1 + 4) && v8 == 2 )
  {
    HalGetAdapterV3((GUID *)a1);
    return(char *)v10;
  }
  return(char *)v3;
}

Referenced by:

HalGetAdapter
HaliGetDmaAdapter