HvlpSetupPageListIteration

INT64 *__fastcall HvlpSetupPageListIteration(INT64 a1, CHAR a2){
  int *v3; 
  PVOID v4; 
  PVOID v5; 
  INT64 *result; 
  v3 = &HvlpIteratorCrashdump;
  if( !(_DWORD)a1 )
    v3 = &HvlpIteratorHibernate;
  *v3 = 0;
  if( (_DWORD)a1 == 1 )
  {
    v4 = HvlpFallbackScratchPage;
    v5 = HvlpHibernateScratchPage;
  }
  else
  {
    v4 = HvlpHibernateScratchPage;
    v5 = HvlpFallbackScratchPage;
  }
  if( !v4 )
    v4 = v5;
  *((_QWORD *)v3 + 1) = v4;
  if( !v4 )
    return 0i64;
  *((PHYSICAL_ADDRESS *)v3 + 2) = MmGetPhysicalAddress(v4);
  result = (INT64 *)v3;
  *((_BYTE *)v3 + 3) = a2;
  *((_BYTE *)v3 + 2) = 1;
  return result;
}

Referenced by:

HvlpStartPageListIteration
HvlpStartSecurePageListIteration