KiInitPrcb
__int64 __fastcall KiInitPrcb(__int64 a1, int a2){
_QWORD *v3;
__int64 v5;
__int64 v6;
__int64 v7;
_QWORD *v8;
__int64 i;
__int64 result;
*(_DWORD *)(a1 + 31776) = 1;
*(_DWORD *)(a1 + 31768) = 0;
*(_DWORD *)(a1 + 32436) = 0;
v3 = (_QWORD *)(a1 + 31872);
*(_QWORD *)(a1 + 32440) = 0i64;
v5 = 32i64;
*(_QWORD *)(a1 + 11528) = 0i64;
v6 = 32i64;
do
{
v3[1] = v3;
*v3 = v3;
v3 += 2;
--v6;
}
while( v6 );
v7 = 0i64;
**(_QWORD **)(a1 + 33864) = 0i64;
*(_DWORD *)(*(_QWORD *)(a1 + 33864) + 8i64) = 0;
*(_DWORD *)(*(_QWORD *)(a1 + 33864) + 608i64) = 0;
*(_QWORD *)(*(_QWORD *)(a1 + 33864) + 616i64) = 0i64;
do
{
v8 = (_QWORD *)(v7 + *(_QWORD *)(a1 + 33864) + 16i64);
v7 += 16i64;
v8[1] = v8;
*v8 = v8;
--v5;
}
while( v5 );
memset(*(_QWORD *)(a1 + 33864) + 528i64, 127i64);
*(_BYTE *)(*(_QWORD *)(a1 + 33864) + 592i64) = 1;
*(_BYTE *)(*(_QWORD *)(a1 + 33864) + 593i64) = *(_BYTE *)(a1 + 209);
for( i = 0i64; i < 2; ++i )
*(_BYTE *)(i + *(_QWORD *)(a1 + 33864) + 594) = 1;
*(_QWORD *)(*(_QWORD *)(a1 + 33864) + 600i64) = *(_QWORD *)(a1 + 200);
*(_QWORD *)(a1 + 56) = *(_QWORD *)(a1 + 33864) + 528i64;
KiInitializeDpcList((_KDPC_LIST *)(a1 + 12480));
*(_QWORD *)(a1 + 12496) = 0i64;
*(_DWORD *)(a1 + 12504) = 0;
*(_DWORD *)(a1 + 12588) = 0;
*(_BYTE *)(a1 + 12586) = 0;
*(_DWORD *)(a1 + 12508) = 0;
*(_DWORD *)(a1 + 12568) = KiMaximumDpcQueueDepth;
*(_DWORD *)(a1 + 12576) = *(_DWORD *)KiMinimumDpcRate;
*(_DWORD *)(a1 + 32404) = KiAdjustDpcThreshold;
KeInitializeDpc((PRKDPC)(a1 + 31648), KiDpcWatchdog, 0i64);
if( !*(_QWORD *)(a1 + 31704) )
*(_WORD *)(a1 + 31650) = a2 + 1280;
*(_BYTE *)(a1 + 31649) = 2;
*(_QWORD *)(a1 + 31752) = a1 + 31744;
*(_QWORD *)(a1 + 31744) = a1 + 31744;
*(_QWORD *)(a1 + 12456) = 1i64;
InitializeSListHead((_SLIST_HEADER *)(a1 + 12416));
*((_QWORD *)KeGetPcr() + 5) = a1 + 1776;
*(_QWORD *)(a1 + 2008) = &CcBcbSpinLock;
*(_QWORD *)(a1 + 2000) = 0i64;
*(_QWORD *)(a1 + 1864) = &CcMasterSpinLock;
*(_QWORD *)(a1 + 1848) = &CcVacbSpinLock;
*(_QWORD *)(a1 + 1880) = &NonPagedPoolLock;
*(_QWORD *)(a1 + 1896) = &IopCancelSpinLock;
*(_QWORD *)(a1 + 1928) = &IopVpbSpinLock;
*(_QWORD *)(a1 + 1944) = &IopDatabaseLock;
*(_QWORD *)(a1 + 1960) = &IopCompletionLock;
*(_QWORD *)(a1 + 1976) = &NtfsStructLock;
*(_QWORD *)(a1 + 1992) = &AfdWorkQueueSpinLock;
*(_QWORD *)(a1 + 1856) = 0i64;
*(_QWORD *)(a1 + 1840) = 0i64;
*(_QWORD *)(a1 + 1872) = 0i64;
*(_QWORD *)(a1 + 1888) = 0i64;
*(_QWORD *)(a1 + 1920) = 0i64;
*(_QWORD *)(a1 + 1936) = 0i64;
*(_QWORD *)(a1 + 1952) = 0i64;
*(_QWORD *)(a1 + 1968) = 0i64;
*(_QWORD *)(a1 + 1984) = 0i64;
*(_QWORD *)(a1 + 2032) = 0i64;
*(_QWORD *)(a1 + 2040) = 0i64;
*(_DWORD *)(a1 + 34272) = (3 * (_WORD)a2) & 0x3FF;
*(_QWORD *)(a1 + 48) = 0i64;
*(_QWORD *)(a1 + 31760) = 0i64;
*(_DWORD *)(a1 + 31712) = 1;
KeInitializeDpc((PRKDPC)(a1 + 34536), (PKDEFERRED_ROUTINE)KiEntropyDpcRoutine, (PVOID)(a1 + 34272));
if( !a2 )
{
KiClockPollCycle = KiClockKeepAliveCycle;
KiReverseStallIpiLock = 0i64;
CcBcbSpinLock = 0i64;
CcMasterSpinLock = 0i64;
CcVacbSpinLock = 0i64;
IopCancelSpinLock = 0i64;
IopCompletionLock = 0i64;
IopDatabaseLock = 0i64;
IopVpbSpinLock = 0i64;
NonPagedPoolLock = 0i64;
NtfsStructLock = 0i64;
AfdWorkQueueSpinLock = 0i64;
*(_DWORD *)&KeSleepingProcessors.Count = 1310740;
memset((INT64)&KeSleepingProcessors.Reserved, 0i64);
}
KiIntSteerInitPrcb(a1);
KeInitializeDpc((PRKDPC)(a1 + 34688), KiAbDeferredProcessingWorker, 0i64);
result = *(_QWORD *)(a1 + 34744);
if( !result )
*(_WORD *)(a1 + 34690) = a2 + 1280;
return result;
}Referenced by:
KiInitializeBootStructures