PopCreatePowerThread

NTSTATUS __fastcall PopCreatePowerThread(KSTART_ROUTINE *a1, void *a2){
  NTSTATUS result; 
  NTSTATUS v3; 
  UINT64 Tag; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  void *ThreadHandle; 
  PVOID Object; 

  memset(&ObjectAttributes.Length + 1, 0, 20);
  memset(&ObjectAttributes.Attributes + 1, 0, 20);
  Object = 0i64;
  ThreadHandle = 0i64;
  ObjectAttributes.Length = 48;
  ObjectAttributes.Attributes = 512;
  result = PsCreateSystemThread(&ThreadHandle, 0x1FFFFFu, &ObjectAttributes, 0, 0i64, a1, a2);
  if( result >= 0 )
  {
    LODWORD(Tag) = 1917415248;
    v3 = ObReferenceObjectByHandleWithTag(
           ThreadHandle,
           0x1FFFFFui64,
           (_OBJECT_TYPE *)PsThreadType,
           0,
           Tag,
           &Object,
           0i64);
    ZwClose((_HANDLE)ThreadHandle);
    if( v3 >= 0 )
    {
      KeSetActualBasePriorityThread((_KTHREAD *)Object, 13i64);
      ObfDereferenceObjectWithTag(Object, 0x72496F50ui64);
    }
    return 0;
  }
  return result;
}

Referenced by:

PopCreateDynamicIrpWorker