ExpSvmReferenceAsid
NTSTATUS __stdcall ExpSvmReferenceAsid(UINT64 Asid){
ULONG_PTR v1;
ULONG_PTR v2;
ULONG_PTR *v3;
ULONG_PTR v4;
__int64 v5;
ULONG_PTR BugCheckParameter4;
struct _KLOCK_QUEUE_HANDLE LockHandle;
v1 = (unsigned int)Asid;
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock(&qword_140C166D8, &LockHandle);
v2 = 0i64;
v3 = (ULONG_PTR *)&qword_140C166D0[16 * (unsigned int)v1];
if( (unsigned int)v1 >= (unsigned int)dword_140C166C4 )
{
BugCheckParameter4 = 0i64;
LABEL_7:
if( (unsigned int)v1 < (unsigned int)dword_140C166C4 )
v2 = *v3;
KeBugCheckEx(0x158u, v1, (unsigned int)dword_140C166C4, v2, BugCheckParameter4);
}
v4 = *v3;
if( !*v3 || (v5 = v3[1], v5 < 0) )
{
BugCheckParameter4 = v3[1];
goto LABEL_7;
}
v3[1] = v5 + 1;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
return *(_QWORD *)(v4 + 2184);
}Referenced by:
No references.