KeSynchronizeUmsThread

VOID __stdcall KeSynchronizeUmsThread(_ETHREAD *Thread, INT8 a2){
  void *Object; 

  Object = Thread->Tcb.WaitBlock[3].Object;
  if( a2 )
  {
    KeInsertQueue(*((_KQUEUE **)Object + 4), *((_LIST_ENTRY **)Object + 5));
    *((_DWORD *)Object + 20) |= 2u;
    *((_QWORD *)Object + 9) = 0i64;
    KiLeaveGuardedRegionUnsafe((__int64)Thread);
  }
  else
  {
    KiCopyUchToStagingArea((INT64)Thread, *((INT64 **)Object + 9));
    *((_QWORD *)Object + 9) = 0i64;
    KiSwapToUmsThreadContinue();
  }
}

Referenced by:

PspRundownUmsThreadForApcDelivery