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.