HvlpGetPageList

NTSTATUS __stdcall HvlpGetPageList(_HVL_PAGE_LIST_TYPE ListType, UINT64 *BasePage, UINT64 *PageCount){
  char *v3; 
  __int64 v7; 
  NTSTATUS v8; 
  unsigned __int16 v9; 
  unsigned __int64 v10; 

  v3 = (char *)&stru_140C452E0 + 7936;
  *BasePage = 0i64;
  *(_DWORD *)PageCount = 0;
  if( ListType == HvlPageListHibernate )
    v3 = (char *)&stru_140C452E0 + 7904;
  if( !v3[2] )
    return 0;
  v7 = *((_QWORD *)v3 + 1);
  v8 = 261;
  v9 = *(_WORD *)v3;
  if( *(_WORD *)v3 < *(_WORD *)(v7 + 8) )
  {
LABEL_9:
    v10 = *(_QWORD *)(v7 + 8i64 * v9 + 16);
    *BasePage = v10 & 0xFFFFFFFFFFi64;
    *(_DWORD *)PageCount = (v10 >> 40) + 1;
    *(_WORD *)v3 = v9 + 1;
  }
  else
  {
    while( *(_QWORD *)v7 != -1i64 )
    {
      HvlpInvokeGetPageListHypercall((_HVLP_PAGE_LIST_ITERATOR *)v3, *(_QWORD *)v7);
      *(_WORD *)v3 = 0;
      if( *(_WORD *)(v7 + 8) )
      {
        v9 = 0;
        goto LABEL_9;
      }
    }
    return 0;
  }
  return v8;
}

Referenced by:

HvlAddPagesCallbackRoutine
HvlpGetEncryptedDataFromHypervisor
HvlpMarkHypervisorPagesForHibernation