VslRetrieveMailbox

NTSTATUS __stdcall VslRetrieveMailbox(
        UINT64 TrustletIdentity,
        _TRUSTLET_MAILBOX_KEY *MailboxKey,
        UINT8 MailboxId,
        VOID *Buffer,
        UINT64 *Length){
  int v6; 
  NTSTATUS result; 
  _TRUSTLET_MAILBOX_KEY v10; 
  NTSTATUS v11; 
  INT64 v12[10]; 
  INT64 v13[14]; 

  v6 = MailboxId;
  memset(v13, 0i64, 0x68u);
  memset(v12, 0i64, 0x48u);
  if( *(_OWORD *)MailboxKey == 0i64 || *Length - 1 > 0x1F9FFF )
    return -1073741811;
  result = VslpLockPagesForTransfer((INT64)v12, (INT64)Buffer, *(unsigned int *)Length, 2i64, 0);
  if( result >= 0 )
  {
    v10 = *MailboxKey;
    v13[1] = v12[0];
    v13[2] = v12[7];
    *(_TRUSTLET_MAILBOX_KEY *)&v13[3] = v10;
    v13[5] = TrustletIdentity;
    LODWORD(v13[6]) = v6;
    v11 = VslpEnterIumSecureMode(2u, 20, 0i64, (INT64)v13);
    VslpUnlockPagesForTransfer((INT64 **)v12);
    if( (int)(v11 + 0x80000000) < 0 || v11 == -1073741789 )
      *Length = v13[8];
    return v11;
  }
  return result;
}

Referenced by:

No references.