VslPrepareSecureImageRelocations
NTSTATUS __stdcall VslPrepareSecureImageRelocations(
INT64 a1,
INT64 a2,
INT64 a3,
INT64 a4,
INT64 a5,
UINT64 a6,
INT64 a7,
INT64 a8){
unsigned __int64 v10;
unsigned __int64 v11;
NTSTATUS result;
int v13;
INT64 v16[10];
INT64 v17[10];
INT64 v18[10];
INT64 v19[14];
memset(v19, 0i64, 0x68u);
memset(v16, 0i64, 0x48u);
memset(v18, 0i64, 0x48u);
memset(v17, 0i64, 0x48u);
v10 = ((unsigned __int64)(a3 & 0xFFF) + a4 + 4095) >> 12;
if( v10 > 0x1FA )
return -1073741811;
v11 = ((unsigned __int64)(a7 & 0xFFF) + a8 + 4095) >> 12;
if( v11 > 0x1FA )
return -1073741811;
if( !v10 || (result = VslpLockPagesForTransfer((INT64)v16, a3, (unsigned int)a4, 0i64, 0), result >= 0) )
{
if( v11 )
{
v13 = VslpLockPagesForTransfer((INT64)v17, a7, (unsigned int)a8, 0i64, 0);
if( v13 < 0 )
{
LABEL_7:
VslpUnlockPagesForTransfer((INT64 **)v16);
return v13;
}
v13 = VslpLockPagesForTransfer((INT64)v18, a5, (unsigned int)a6, 0i64, 0);
if( v13 < 0 )
{
VslpUnlockPagesForTransfer((INT64 **)v17);
goto LABEL_7;
}
}
v19[1] = a1;
v19[2] = a2;
v19[3] = v16[0];
v19[4] = v16[7];
v19[5] = v18[0];
v19[6] = v18[7];
v19[7] = v17[0];
v19[8] = v17[7];
v13 = VslpEnterIumSecureMode(2u, 28, 0i64, (INT64)v19);
if( v11 )
{
VslpUnlockPagesForTransfer((INT64 **)v17);
VslpUnlockPagesForTransfer((INT64 **)v18);
}
if( !v10 )
return v13;
goto LABEL_7;
}
return result;
}Referenced by:
No references.