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.