HvlGetCoverageData

BOOL __stdcall HvlGetCoverageData(CHAR a1, UINT64 a2, VOID *a3){
  __int16 v3; 
  bool v5; 
  _MDL *Mdl; 
  _MDL *v7; 
  unsigned __int64 v8; 
  _DWORD *v9; 
  __int16 v10; 
  PHYSICAL_ADDRESS v12[2]; 
  __int128 v13; 
  PHYSICAL_ADDRESS PageInfo[2]; 
  __int128 v15; 
  char v16[144]; 
  char StackBuffer[2064]; 

  v3 = (__int16)a3;
  v5 = 0;
  *(_OWORD *)&PageInfo[0].anonymous_0.LowPart = 0i64;
  v15 = 0i64;
  *(_OWORD *)&v12[0].anonymous_0.LowPart = 0i64;
  v13 = 0i64;
  Mdl = IoAllocateMdl(a3, a2, 0, 0, 0i64);
  v7 = Mdl;
  if( Mdl )
  {
    MmBuildMdlForNonPagedPool(Mdl);
    v8 = ((v3 & 0xFFF) + 4095i64 + (unsigned __int64)v7->ByteCount) >> 12;
    v9 = HvlpAcquireHypercallPage(PageInfo, 1ui64, StackBuffer, 0x408ui64);
    HvlpAcquireHypercallPage(v12, 2ui64, v16, 0x48ui64);
    *v9 = (a1 != 0) + 1;
    v9[1] = v8;
    memmove(v9 + 2, &v7[1], 8 * v8);
    HvcallInitiateHypercall();
    LOWORD(v9) = v10;
    HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)v12);
    HvlpReleaseHypercallPage((_HVLP_HYPERCALL_PAGE_INFO *)PageInfo);
    v5 = (_WORD)v9 == 0;
    IoFreeMdl(v7);
  }
  return v5;
}

Referenced by:

ExpCovQueryHypervisorInformation