ExpRemoveCurrentThreadFromThreadHistory

UINT8 __fastcall ExpRemoveCurrentThreadFromThreadHistory(INT64 a1){
  UINT8 result; 
  _ETHREAD *CurrentThread; 
  __int64 v4; 
  result = *(_DWORD *)(a1 + 312) & 7;
  if( result != 4 )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    result = 0;
    while( 1 )
    {
      v4 = result;
      if( *(_ETHREAD **)(a1 + 8i64 * result + 72) == CurrentThread )
        break;
      if( ++result >= 4u )
        return result;
    }
    result = ObfDereferenceObjectWithTag(CurrentThread, 0x746C6644ui64);
    *(_QWORD *)(a1 + 8 * v4 + 72) = 0i64;
  }
  return result;
}

Referenced by:

NtSetInformationWorkerFactory
NtWaitForWorkViaWorkerFactory