PnprMapTargetSparePhysicalPages
INT64 __fastcall PnprMapTargetSparePhysicalPages(
_LARGE_INTEGER TargetPhysicalAddress,
_LARGE_INTEGER SparePhysicalAddress,
_LARGE_INTEGER *NumberOfBytes,
VOID **TargetAddress,
VOID **SpareAddress){
__int64 v5;
int v6;
__int64 v7;
UINT64 v10;
int v11;
int v12;
UINT64 v13;
int v14;
int v15;
LODWORD(v5) = *((_DWORD *)KeGetPcr() + 105);
v6 = 0;
v7 = (unsigned int)v5;
if( TargetPhysicalAddress.QuadPart == 0x7FFFFFFFFFFFFFFFi64
|| (v6 = PnprMapPhysicalPages(
(INT64 *)(*(_QWORD *)(PnprContext + 136) + 24 * v5),
TargetPhysicalAddress.QuadPart,
(UINT64 *)&NumberOfBytes->QuadPart),
v6 >= 0) )
{
if( SparePhysicalAddress.QuadPart != 0x7FFFFFFFFFFFFFFFi64 )
{
v6 = PnprMapPhysicalPages(
(INT64 *)(*(_QWORD *)(PnprContext + 144) + 24 * v7),
SparePhysicalAddress.QuadPart,
(UINT64 *)&NumberOfBytes->QuadPart);
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.