VslCapturePgoData

NTSTATUS __stdcall VslCapturePgoData(size_t Size, VOID *a2){
  unsigned __int64 v3; 
  INT64 v4; 
  int v5; 
  unsigned int v6; 
  INT64 v8[10]; 
  INT64 v9[14]; 

  v3 = *(_QWORD *)&Size;
  memset(v9, 0i64, 0x68u);
  memset(v8, 0i64, 0x48u);
  v4 = 0i64;
  v5 = 0;
  memset(a2, 0i64, v3);
  if( v3 )
  {
    while( 1 )
    {
      v6 = v3;
      if( 2072576 - ((unsigned __int16)a2 & 0xFFFu) < v3 )
        v6 = 2072576 - ((unsigned __int16)a2 & 0xFFF);
      v5 = VslpLockPagesForTransfer((INT64)v8, (INT64)a2, v6, 1i64, 0);
      if( v5 < 0 )
        break;
      v9[2] = v8[0];
      v9[3] = v8[7];
      v9[1] = v4;
      v5 = VslpEnterIumSecureMode(2u, 74, 0i64, (INT64)v9);
      VslpUnlockPagesForTransfer((INT64 **)v8);
      if( v5 == -2147483622 )
        return 0;
      if( v5 >= 0 )
      {
        a2 = (char *)a2 + v6;
        v4 += v6;
        v3 -= v6;
        if( v3 )
          continue;
      }
      return v5;
    }
  }
  return v5;
}

Referenced by:

No references.