HalpQueryAcpiResourceRequirements
NTSTATUS __stdcall HalpQueryAcpiResourceRequirements(_IO_RESOURCE_REQUIREMENTS_LIST **Requirements){
NTSTATUS v2;
NTSTATUS result;
int v4;
unsigned int v5;
unsigned int v6;
unsigned int v7;
unsigned int v8;
size_t v9;
VOID **PoolWithTag;
char *v11;
__int64 v12;
INT64 v13;
int v14;
v13 = 0i64;
v14 = 0;
v2 = HalpInterruptModel();
if( v2 > 0 && (v2 <= 4 || v2 == 4096) )
{
result = HalpInterruptGetIrtInfo(&v13);
if( result < 0 )
return result;
v4 = 205;
v5 = 205 - HIDWORD(v13) / HalQueryMaximumProcessorCount();
}
else
{
v5 = 0;
v4 = 0;
}
if( byte_140C50754 )
{
v6 = v4;
v7 = 256;
}
else
{
v6 = -1;
v7 = 0;
}
v8 = v4 + v7 - v5;
v9 = 32 * (v8 - 1) + 72;
PoolWithTag = ExAllocatePoolWithTag(1ui64, v9, 543973704i64);
memset(PoolWithTag, 0i64, v9);
*((_DWORD *)PoolWithTag + 2) = -1;
*(_DWORD *)PoolWithTag = v9;
*((_DWORD *)PoolWithTag + 7) = 1;
*((_DWORD *)PoolWithTag + 1) = 15;
*((_DWORD *)PoolWithTag + 8) = 65537;
*((_DWORD *)PoolWithTag + 9) = v8;
if( v8 )
{
v11 = (char *)PoolWithTag + 42;
v12 = v8;
do
{
if( v5 >= v6 && v5 < v7 )
v5 = v7;
*(_DWORD *)(v11 + 6) = v5;
*(_DWORD *)(v11 + 10) = v5++;
*(_WORD *)(v11 - 1) = 258;
v11 += 32;
--v12;
}
while( v12 );
}
*Requirements = (_IO_RESOURCE_REQUIREMENTS_LIST *)PoolWithTag;
return 0;
}Referenced by:
HalpDispatchPnp
HalpQueryResources