PnprAddProcessorResources
__int64 __fastcall PnprAddProcessorResources(__int64 a1, UINT32 a2, int a3, _DWORD **a4){
_DWORD *v4;
int v8;
int v9;
size_t v10;
VOID **PoolWithTag;
VOID **v12;
__int64 v13;
int v14;
int v15;
__int64 result;
__int64 ProcNumber;
ProcNumber = a1;
v4 = *a4;
LODWORD(ProcNumber) = 0;
v8 = v4[4];
if( v8 == v4[3] )
{
v9 = v8 + 4;
v10 = 4 * v8 + 20;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (unsigned int)(4 * (v8 + 4) + 20), 1366322768i64);
v12 = PoolWithTag;
if( !PoolWithTag )
{
v13 = PnprContext;
v14 = *(_DWORD *)(PnprContext + 20984);
if( !v14 )
v14 = 816;
*(_DWORD *)(PnprContext + 20984) = v14;
v15 = *(_DWORD *)(v13 + 20988);
if( !v15 )
v15 = 10;
*(_DWORD *)(v13 + 20988) = v15;
return 3221225626i64;
}
memmove(PoolWithTag, v4, v10);
ExFreePoolWithTag(v4, 0x51706E50u);
v4 = v12;
*((_DWORD *)v12 + 3) = v9;
}
if( a2 != -1 )
{
KeGetProcessorNumberFromIndex(a2, (PROCESSOR_NUMBER *)&ProcNumber);
*(_QWORD *)(*(_QWORD *)v4 + 8i64 * (unsigned __int16)ProcNumber) |= 1i64 << SBYTE2(ProcNumber);
}
v4[v4[4]++ + 5] = a3;
result = 0i64;
*a4 = v4;
return result;
}Referenced by:
PnprAddDeviceResources