HvlpGetEncryptedDataFromSecureKernel

INT64 __fastcall HvlpGetEncryptedDataFromSecureKernel(INT64 a1, CHAR *rdx0, INT64 er8, VOID *a4, INT64 a5){
  _DWORD *v6; 
  int v7; 
  unsigned int v10; 
  unsigned __int8 v11; 
  INT64 result; 
  UINT64 v13; 
  int a3; 
  LONGLONG *v15; 
  v6 = (_DWORD *)a5;
  v7 = er8;
  v15 = 0i64;
  a3 = 0;
  v10 = (unsigned int)HvlpFlags >> 1;
  *(_DWORD *)a5 = 0;
  v11 = (2 * (v10 & 1)) | 1;
  if( BYTE3(HvlpCrashdumpIterationState) != v11 )
  {
    HvlpEndSecurePageListIteration(1i64, 0);
    LOBYTE(HvlpCrashdumpIterationState) = 0;
  }
  if( !(_BYTE)HvlpCrashdumpIterationState )
  {
    LODWORD(v13) = v7;
    result = HvlpStartSecurePageListIteration(1i64, v11, rdx0, a4, v13, &v15);
    if( (int)result < 0 )
      return result;
    *((_QWORD *)&xmmword_140C47320 + 1) = v15;
    LOBYTE(HvlpCrashdumpIterationState) = 1;
    BYTE3(HvlpCrashdumpIterationState) = v11;
  }
  LOBYTE(a5) = 0;
  LODWORD(result) = VslGetSecurePageList(0, a1, &a3, &a5);
  if( (int)result >= 0 )
  {
    *v6 = a3 << 12;
    return 0i64;
  }
  else if( (_DWORD)result == -2147483622 )
  {
    HvlpEndSecurePageListIteration(1i64, 0);
    return 3221226021i64;
  }
  return result;
}

Referenced by:

HvlGetEncryptedData