HalpGetCacheCoherency

CHAR __stdcall HalpGetCacheCoherency(INT64 a1, _DEVICE_OBJECT *a2, _BYTE *a3){
  INT8 v4; 
  __int64 v6; 
  CHAR result; 
  __int128 v8; 
  __int128 v9; 
  __int64 v10; 

  v4 = 0;
  *a3 = 0;
  v8 = 0i64;
  v9 = 0i64;
  v10 = 0i64;
  if( a1 )
  {
    result = *(_BYTE *)(a1 + 72);
    *a3 = result;
  }
  else if( a2
         && IoQueryInterface((INT64)a2, 1, (INT64)&GUID_DMA_CACHE_COHERENCY_INTERFACE, 0x28u, 1, 0i64, (INT64)&v8) >= 0 )
  {
    v6 = *((_QWORD *)&v8 + 1);
    *a3 = v10;
    return(*((__int64(__fastcall **)(__int64))&v9 + 1))(v6);
  }
  else
  {
    *a3 = 1;
    KeSystemFullyCacheCoherent((_KDPC *)a1, v4);
    if( !result )
      *a3 = 0;
  }
  return result;
}

Referenced by:

HalGetAdapterV2
HalGetAdapterV3