PnprMapTargetSparePhysicalPages

__int64 __fastcall PnprMapTargetSparePhysicalPages(
        unsigned __int64 a1,
        unsigned __int64 a2,
        unsigned __int64 *a3,
        _QWORD *a4,
        _QWORD *a5){
  __int64 v5; 
  int v6; 
  __int64 v7; 
  __int64 v10; 
  int v11; 
  int v12; 
  __int64 v13; 
  int v14; 
  int v15; 

  LODWORD(v5) = KeGetPcr()->Prcb.Number;
  v6 = 0;
  v7 = (unsigned int)v5;
  if( a1 == 0x7FFFFFFFFFFFFFFFi64
    || (v6 = PnprMapPhysicalPages(*(_QWORD *)(PnprContext + 136) + 24 * v5, a1, a3, a4), v6 >= 0) )
  {
    if( a2 != 0x7FFFFFFFFFFFFFFFi64 )
    {
      v6 = PnprMapPhysicalPages(*(_QWORD *)(PnprContext + 144) + 24 * v7, a2, a3, a5);
      if( v6 < 0 )
      {
        v13 = PnprContext;
        v14 = *(_DWORD *)(PnprContext + 20984);
        if( !v14 )
          v14 = 4235;
        *(_DWORD *)(PnprContext + 20984) = v14;
        v15 = *(_DWORD *)(v13 + 20988);
        if( !v15 )
          v15 = 10;
        *(_DWORD *)(v13 + 20988) = v15;
      }
    }
  }
  else
  {
    v10 = PnprContext;
    v11 = *(_DWORD *)(PnprContext + 20984);
    if( !v11 )
      v11 = 4223;
    *(_DWORD *)(PnprContext + 20984) = v11;
    v12 = *(_DWORD *)(v10 + 20988);
    if( !v12 )
      v12 = 10;
    *(_DWORD *)(v10 + 20988) = v12;
  }
  return(unsigned int)v6;
}

Referenced by:

No references.