MiAddLoaderHalIoPte

NTSTATUS __stdcall MiAddLoaderHalIoPte(INT64 a1, INT64 a2, INT64 a3){
  int v3; 
  UINT64 v4; 
  UINT64 v5; 
  UINT64 v6; 
  __int64 v7; 
  INT64 v9; 
  __int64 v10; 
  int v11; 
  UINT64 v12; 

  v3 = a3;
  LODWORD(v4) = MI_READ_PTE_LOCK_FREE(a2);
  v12 = v4;
  v5 = v4;
  if( (v4 & 1) != 0 )
  {
    v6 = v4;
    MiPteInShadowRange((UINT64)&v12);
    v7 = (v6 >> 12) & 0xFFFFFFFFFi64;
    if( (((unsigned __int64)MmGetPfnDb()[v7].u4._bf_0 >> 50) & 1) == 0 )
    {
      if( (v5 & 0x80u) == 0i64 )
      {
        v9 = 1i64;
      }
      else
      {
        v9 = 512i64;
        if( v3 > 1 )
        {
          v10 = (unsigned int)(v3 - 1);
          do
          {
            v9 <<= 9;
            --v10;
          }
          while( v10 );
        }
      }
      if( ((v5 >> 4) & 1) != 0 || (v5 & 8) == 0 )
        v11 = ((v5 >> 4) & 1) == 0;
      else
        v11 = 2;
      MiReferenceIoPages(1u, v7, v9, v11, 0i64, 0i64);
    }
  }
  return 0;
}

Referenced by:

No references.