VslValidateDynamicCodePages

NTSTATUS __stdcall VslValidateDynamicCodePages(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 v11; 
  NTSTATUS v12; 
  INT64 v13; 
  INT64 v14; 
  INT64 v15; 
  INT64 v16; 
  INT64 v18[14]; 
  INT64 v19; 
  __int16 v20; 
  __int16 v21; 
  __int128 v22; 
  int v23; 
  unsigned __int64 v24; 
  int v25; 
  int v26; 
  INT64 v27; 
  INT64 v28; 
  __int16 v29; 
  __int16 v30; 
  __int128 v31; 
  int v32; 
  unsigned __int64 v33; 
  int v34; 
  int v35; 
  INT64 v36; 

  memset(v18, 0i64, 0x68u);
  v31 = 0i64;
  v32 = 0;
  v36 = 0i64;
  v22 = 0i64;
  v23 = 0;
  v27 = 0i64;
  v8 = 8
     * (((unsigned int)(*(_DWORD *)(a1 + 40) + *(_DWORD *)(a1 + 44)) + 4095i64 + (*(_DWORD *)(a1 + 32) & 0xFFFui64)) >> 12)
     + 48;
  v9 = (v8 + (a1 & 0xFFF) + 4095) >> 12;
  if( v9 > 1 )
    return -1073741811;
  v28 = 0i64;
  v29 = 8 * (v9 + 6);
  v30 = 0;
  v33 = a1 & 0xFFFFFFFFFFFFF000ui64;
  v35 = a1 & 0xFFF;
  v34 = v8;
  MiProbeAndLockPages((INT64)&v28, 0, 0i64);
  v10 = 8
      * (((*(_DWORD *)(a4 + 32) & 0xFFFi64)
        + 4095
        + (unsigned __int64)(unsigned int)(*(_DWORD *)(a4 + 40) + *(_DWORD *)(a4 + 44))) >> 12)
      + 48;
  v11 = (v10 + (a4 & 0xFFF) + 4095) >> 12;
  if( v11 > 1 )
    return -1073741811;
  v19 = 0i64;
  v20 = 8 * (v11 + 6);
  v21 = 0;
  v24 = a4 & 0xFFFFFFFFFFFFF000ui64;
  v26 = a4 & 0xFFF;
  v25 = v10;
  MiProbeAndLockPages((INT64)&v19, 0, 0i64);
  v18[1] = a1;
  v18[2] = v36;
  v18[3] = a4;
  v18[4] = v27;
  v18[5] = a2;
  v18[6] = a3;
  v12 = VslpEnterIumSecureMode(2u, 31, 0i64, (INT64)v18);
  MmUnlockPages((INT64)&v19, v13, v14);
  MmUnlockPages((INT64)&v28, v15, v16);
  return v12;
}

Referenced by:

No references.