HalpGetCacheCoherency

CHAR __fastcall HalpGetCacheCoherency(INT64 a1, DEVICE_OBJECT *a2, BYTE *a3){
  INT8 v4; 
  void *Context; 
  CHAR result; 
  INTERFACE v8; 
  __int64 v9; 
  v4 = 0;
  *a3 = 0;
  memset(&v8, 0, sizeof(v8));
  v9 = 0i64;
  if( a1 )
  {
    result = *(_BYTE *)(a1 + 72);
    *a3 = result;
  }
  else if( a2 && IoQueryInterface(a2, 1, &GUID_DMA_CACHE_COHERENCY_INTERFACE, 0x28u, 1u, 0i64, &v8) >= 0 )
  {
    Context = v8.Context;
    *a3 = v9;
    return((__int64(__fastcall *)(void *))v8.InterfaceDereference)(Context);
  }
  else
  {
    *a3 = 1;
    KeSystemFullyCacheCoherent((KDPC *)a1, v4);
    if( !result )
      *a3 = 0;
  }
  return result;
}

Referenced by:

HalGetAdapterV2
HalGetAdapterV3