HalpPowerInitNvsRegionData
VOID __stdcall HalpPowerInitNvsRegionData(){
__int64 v0;
int v1;
int v2;
unsigned __int64 v3;
unsigned int v4;
__int64 v5;
unsigned int v6;
__int64 v7;
unsigned int v8;
__int64 v9;
__int64 v10;
__int64 v11;
int v12;
v0 = HalpAcpiMultiNode;
v1 = 0;
v2 = 0;
if( HalpAcpiMultiNode )
{
v3 = *(_QWORD *)(HalpAcpiMultiNode + 8);
if( v3 )
{
v4 = 0;
v5 = 0i64;
do
{
if( *(_DWORD *)(HalpAcpiMultiNode + 24 * v5 + 32) == 4 )
{
v1 += *(_DWORD *)(HalpAcpiMultiNode + 24 * v5 + 24);
++v2;
}
v5 = ++v4;
}
while( v4 < v3 );
if( v1 )
{
HalpNvsPreservedDataSize = v1;
v6 = 24 * v2;
HalpNvsRegionCount = v2;
HalpNvsRegionData = (__int64)HalpMmAllocateMemoryInternal((unsigned int)(24 * v2), MmCached);
if( !HalpNvsRegionData )
KeBugCheckEx(0xACu, v6, 1ui64, (ULONG_PTR)"minkernel\\hals\\lib\\power\\pmsleep.c", 0x73Aui64);
v7 = 0i64;
v8 = 0;
if( *(_QWORD *)(v0 + 8) )
{
v9 = 0i64;
do
{
if( *(_DWORD *)(v0 + 24 * v9 + 32) == 4 )
{
v10 = 3 * v7;
v11 = HalpNvsRegionData;
*(_QWORD *)(HalpNvsRegionData + 8 * v10) = *(_QWORD *)(v0 + 24 * v9 + 16);
v12 = *(_DWORD *)(v0 + 24 * v9 + 24);
*(_QWORD *)(v11 + 8 * v10 + 16) = 0i64;
v7 = (unsigned int)(v7 + 1);
*(_DWORD *)(v11 + 8 * v10 + 8) = v12;
}
v9 = ++v8;
}
while( (unsigned __int64)v8 < *(_QWORD *)(v0 + 8) );
}
}
}
}
}Referenced by:
HalpPowerInitDiscard