HvlpEndSecurePageListIteration

INT64 *__fastcall HvlpEndSecurePageListIteration(INT64 a1, CHAR a2){
  INT64 *result; 
  _DWORD *v3; 
  _DWORD *v4; 
  UINT8 *v5; 
  int v6; 
  __int64 *v7; 
  unsigned int v8; 
  size_t Size; 
  v4 = v3;
  LODWORD(Size) = 0;
  v5 = (UINT8 *)a2;
  v6 = a1;
  if( (_DWORD)a1 )
  {
    LOBYTE(result) = BYTE2(HvlpIteratorCrashdump);
    v7 = &qword_140C471E8;
  }
  else
  {
    LOBYTE(result) = BYTE2(HvlpIteratorHibernate);
    v7 = &qword_140C471C8;
  }
  if( (_BYTE)result )
  {
    VslEndSecurePageIteration((_DWORD)a1 == 0, &Size);
    if( v4 )
    {
      v8 = Size;
      if( (unsigned int)Size <= *v4 )
      {
        *v4 = Size;
        if( v8 )
          memmove(v5, (UINT8 *)*v7, v8);
      }
    }
    result = (INT64 *)&HvlpIteratorCrashdump;
    if( !v6 )
      result = (INT64 *)&HvlpIteratorHibernate;
    result[1] = 0i64;
    *(_DWORD *)result = 0;
  }
  return result;
}

Referenced by:

HvlAddSecurePagesCallbackRoutine
HvlDiscardSecurePagesFromHibernation
HvlIterateSecurePagesForHibernation
HvlpGetEncryptedDataFromSecureKernel