KiInitializeIdleThread

VOID __fastcall KiInitializeIdleThread(_ETHREAD *Thread, VOID *KernelStack, _EPROCESS *Process, _KPRCB *Prcb){
  __int16 v7; 
  __int64 v8; 
  int v9; 
  _QWORD *v10; 
  _QWORD *v11; 
  *((_DWORD *)Thread + 20) = 0;
  KeInitThread(Thread, KernelStack, KiIdleLoop);
  *((_DWORD *)Thread + 29) &= ~0x4000u;
  KeStartThread((_KTHREAD *)Thread, 0i64, 0i64);
  *((_DWORD *)Thread + 134) = *((_DWORD *)Prcb + 9);
  *((_BYTE *)Thread + 388) = 2;
  v7 = *((unsigned __int8 *)Prcb + 208);
  *((_WORD *)Thread + 280) = v7;
  v8 = *((_QWORD *)Prcb + 25);
  *((_QWORD *)Thread + 69) = v8;
  v9 = *((_DWORD *)Prcb + 9);
  *((_DWORD *)Thread + 29) |= 8u;
  *((_DWORD *)Thread + 49) = v9;
  *((_DWORD *)Thread + 147) = v9;
  *((_WORD *)Thread + 292) = v7;
  *((_QWORD *)Thread + 72) = v8;
  *((_BYTE *)Thread + 113) = 1;
  *((_BYTE *)Thread + 390) = 2;
  *((_QWORD *)Thread + 138) = KiIdleLoop;
  *((_QWORD *)Thread + 154) = KiIdleLoop;
  **((_BYTE **)Prcb + 7) = 127;
  *((_BYTE *)Thread + 195) = 127;
  if( *((_DWORD *)Prcb + 9) )
  {
    if( KiSchedulerAssistThreadFlagEnabled )
      _interlockedbittestandset((volatile signed __int32 *)Thread, 0x16u);
  }
  else
  {
    qword_140D23FE8 = (__int64)&qword_140D23FE0;
    qword_140D23FE0 = (__int64)&qword_140D23FE0;
    _InterlockedOr(&dword_140D23E60, 0x8000u);
    _InterlockedOr(&dword_140D2427C, 0x400000u);
  }
  *((_QWORD *)Thread + 173) = (char *)Thread + 1376;
  *((_QWORD *)Thread + 172) = (char *)Thread + 1376;
  *((_QWORD *)Thread + 175) = (char *)Thread + 1392;
  *((_QWORD *)Thread + 174) = (char *)Thread + 1392;
  *((_QWORD *)Thread + 176) = 0i64;
  v10 = (_QWORD *)((char *)Thread + 1256);
  v11 = (_QWORD *)qword_140D23FE8;
  if( *(__int64 **)qword_140D23FE8 != &qword_140D23FE0 )
    __fastfail(3u);
  *v10 = &qword_140D23FE0;
  v10[1] = v11;
  *v11 = v10;
  qword_140D23FE8 = (__int64)v10;
  _InterlockedOr64(
    (volatile signed __int64 *)Process
  + ((unsigned __int64)(unsigned int)KiProcessorIndexToNumberMappingTable[*((unsigned int *)Prcb + 9)] >> 6)
  + 47,
    1i64 << (KiProcessorIndexToNumberMappingTable[*((unsigned int *)Prcb + 9)] & 0x3F));
}

Referenced by:

KiInitializeKernel