HvlSetupPhysicalFaultNotificationQueue

__int64 __fastcall HvlSetupPhysicalFaultNotificationQueue(_QWORD *a1, _DWORD *a2){
  VOID *OverlayPages; 
  VOID *v5; 
  unsigned int v6; 
  __int64 v7; 
  __int64 v8; 
  _DWORD *v9; 
  int *v10; 
  int v11; 
  __int16 v12; 
  PHYSICAL_ADDRESS v14[2]; 
  __int128 v15; 
  __int128 PageInfo[2]; 

  memset(PageInfo, 0, sizeof(PageInfo));
  *(_OWORD *)&v14[0].anonymous_0.LowPart = 0i64;
  v15 = 0i64;
  OverlayPages = HvlpAllocateOverlayPages((UINT64)a1);
  v5 = OverlayPages;
  if( OverlayPages )
  {
    memset(OverlayPages, 0i64, 0x1000u);
    LODWORD(v7) = MmGetPhysicalAddress((UINT64)v5);
    v8 = v7;
    v9 = HvlpAcquireHypercallPage((PHYSICAL_ADDRESS *)PageInfo, 1ui64, 0i64, 0x18ui64);
    v10 = (int *)HvlpAcquireHypercallPage(v14, 2ui64, 0i64, 8ui64);
    v9[1] = 0;
    *v9 = 1;
    *((_QWORD *)v9 + 1) = v8 / 4096;
    *((_QWORD *)v9 + 2) = 1i64;
    HvcallInitiateHypercall();
    v11 = *v10;
    LOWORD(v8) = v12;
    HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)v14);
    HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
    if( (_WORD)v8 )
    {
      v6 = -1073741823;
    }
    else
    {
      v6 = 0;
      *a1 = v5;
      v5 = 0i64;
      *a2 = v11 << 12;
    }
    if( v5 )
      MmFreeContiguousMemory(v5);
  }
  else
  {
    return(unsigned int)-1073741670;
  }
  return v6;
}

Referenced by:

KeInitSystem