VslGetOnDemandDebugChallenge

INT64 __fastcall VslGetOnDemandDebugChallenge(INT64 a1, UINT8 *a2, UINT64 a3, _DWORD *a4){
  unsigned int v5; 
  INT64 v8; 
  NTSTATUS v9; 
  unsigned int v10; 
  INT64 v11[10]; 
  INT64 result[2]; 
  size_t Size; 
  INT64 v14; 
  UINT8 Src[4096]; 
  v5 = a3;
  memset((INT64)result, 0i64);
  memset((INT64)v11, 0i64);
  v8 = VslpLockPagesForTransfer((INT64)v11, (INT64)Src, 0x1000ui64, 1i64, 0);
  if( (int)v8 >= 0 )
  {
    result[1] = *(_QWORD *)(a1 + 992);
    Size = v11[0];
    v14 = v11[7];
    v9 = VslpEnterIumSecureMode(2u, 18, 0i64, (INT64)result);
    VslpUnlockPagesForTransfer((INT64 **)v11);
    if( v9 >= 0 )
    {
      v10 = Size;
      *a4 = Size;
      if( v10 <= v5 )
      {
        if( a2 )
          memmove(a2, Src, v10);
      }
      else
      {
        return(unsigned int)-1073741789;
      }
    }
    return(unsigned int)v9;
  }
  return v8;
}

Referenced by:

PsIumGetOnDemandDebugChallenge