FsRtlInitializeWorkerThread

NTSTATUS __stdcall FsRtlInitializeWorkerThread(){
  unsigned int v0; 
  NTSTATUS result; 
  NTSTATUS v2; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  void *ThreadHandle; 

  memset(&ObjectAttributes.Length + 1, 0, 44);
  ThreadHandle = 0i64;
  v0 = 0;
  ObjectAttributes.Length = 48;
  while( 1 )
  {
    KeInitializeQueue((_KQUEUE *)((char *)&unk_140C47360 + 64 * (unsigned __int64)v0), 0i64);
    result = PsCreateSystemThread(&ThreadHandle, 0x1FFFFFu, &ObjectAttributes, 0, 0i64, FsRtlWorkerThread, (PVOID)v0);
    v2 = result;
    if( result < 0 )
      break;
    ZwClose((_HANDLE)ThreadHandle);
    if( ++v0 >= 2 )
    {
      word_140C47420 = 1;
      qword_140C47430 = (__int64)&qword_140C47428;
      qword_140C47428 = &qword_140C47428;
      result = v2;
      byte_140C47422 = 6;
      dword_140C47424 = 1;
      return result;
    }
  }
  return result;
}

Referenced by:

FsRtlInitSystem