VslIumEfiRuntimeService
UINT64 __fastcall VslIumEfiRuntimeService(UINT64 a1, INT64 a2, UINT64 a3, _OWORD *a4){
INT64 v5;
unsigned int v6;
UINT64 v8;
__int128 v9;
unsigned __int8 CurrentIrql;
NTSTATUS v11;
__int128 v12;
UINT64 v13;
INT64 v14[10];
INT64 result[5];
__int128 v16;
__int128 v17;
v5 = (unsigned int)a1;
v6 = a3;
memset((INT64)result, 0i64);
memset((INT64)v14, 0i64);
if( a2 )
{
LODWORD(v8) = VslpLockPagesForTransfer((INT64)v14, a2, v6, 2i64, 1);
if( (v8 & 0x80000000) != 0i64 )
return(int)v8;
}
result[2] = v14[0];
result[3] = v14[7];
result[1] = v5;
if( a4 )
{
v9 = a4[1];
v16 = *a4;
v17 = v9;
}
CurrentIrql = KeGetCurrentIrql();
__writecr8(0xFui64);
ExAcquireSpinLockExclusiveAtDpcLevel((INT64 *)&VslpIumEfiLock);
v11 = VslpEnterIumSecureMode(2u, 250, 0i64, (INT64)result);
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&VslpIumEfiLock);
__writecr8(CurrentIrql);
if( a4 )
{
v12 = v17;
*a4 = v16;
a4[1] = v12;
}
if( v11 == -1073741811 )
{
v13 = 0x8000000000000002ui64;
}
else if( v11 == -1073741801 )
{
v13 = 0x8000000000000009ui64;
}
else
{
v13 = result[4];
if( v11 )
v13 = 0x8000000000000003ui64;
}
if( v14[0] )
VslpUnlockPagesForTransfer((INT64 **)v14);
return v13;
}Referenced by:
No references.