MmSetGraphicsPtes
NTSTATUS __stdcall MmSetGraphicsPtes(UINT64 P2, UINT64 P3, UINT64 *a3, UINT64 a4, INT64 a5, INT64 a6){
UINT64 v10;
_ETHREAD *CurrentThread;
unsigned __int64 v12;
int v13;
INT64 v14;
_MMVAD_SHORT *v15;
int v17;
NTSTATUS v18;
_MMPTE *AwePageSizeFromVa;
_MMPTE *v20;
unsigned __int64 v21;
__int64 v22;
UINT64 v23;
__int64 v24;
INT64 v25;
INT64 v26;
if( P2 >= 0xFFFF800000000000ui64 || (v10 = P2 + P3, P2 + P3 <= P2) || v10 >= 0xFFFF800000000000ui64 )
KeBugCheckEx(0x1Au, (PVOID)0xA000, (PVOID)P2, (PVOID)P3, 0i64);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
LODWORD(v26) = 0;
v12 = v10 - 1;
v13 = 0;
LODWORD(v14) = MiObtainReferencedVadEx(P2, 0, &v26);
v15 = (_MMVAD_SHORT *)v14;
if( !v14 )
return v26;
v17 = *(_DWORD *)(v14 + 48);
if( (v17 & 0x1100000) == 17825792 )
{
if( v12 > (((*(unsigned int *)(v14 + 28) | ((unsigned __int64)*(unsigned __int8 *)(v14 + 33) << 32)) << 12) | 0xFFF) )
{
v18 = -1073741584;
goto LABEL_35;
}
if( (v17 & 0x70) == 48 )
{
v13 = 1;
MiLockAweVadsExclusive((INT64)CurrentThread);
AwePageSizeFromVa = MiGetAwePageSizeFromVa(P2);
if( !AwePageSizeFromVa )
{
v18 = -1073741585;
goto LABEL_34;
}
}
else
{
if( (v17 & 0x500000) != 5242880 )
goto LABEL_32;
LODWORD(v20) = MiGetVadPageSize(v14);
AwePageSizeFromVa = v20;
}
if( (a6 & 0xFFFFFFFE) != 0 )
{
v18 = -1073741580;
goto LABEL_33;
}
if( (_DWORD)a5 )
{
v18 = -1073741581;
goto LABEL_33;
}
v21 = (_QWORD)AwePageSizeFromVa << 12;
if( a4 != v21 )
{
v18 = -1073741582;
goto LABEL_33;
}
v22 = v21 - 1;
if( ((v21 - 1) & P2) == 0 && (v22 & P3) == 0 )
{
if( a3 )
{
if( (a6 & 1) != 0 )
{
v23 = 1i64;
goto LABEL_27;
}
v23 = P3 / v21;
if( P3 / v21 )
{
LABEL_27:
v24 = 0i64;
while( (v22 & a3[v24]) == 0 )
{
if( ++v24 >= v23 )
goto LABEL_30;
}
v18 = -1073741583;
LABEL_33:
if( !v13 )
goto LABEL_35;
LABEL_34:
MiUnlockAweVadsExclusive(&CurrentThread->Tcb);
goto LABEL_35;
}
}
LABEL_30:
v18 = MiSetGraphicsPtes(P2, P3, a3, a4, v25, a6);
goto LABEL_33;
}
LABEL_32:
v18 = -1073741585;
goto LABEL_33;
}
v18 = -1073741585;
LABEL_35:
MiUnlockAndDereferenceVad(v15);
return v18;
}Referenced by:
No references.