PnpNeedToReleaseBootResources
__int64 __fastcall PnpNeedToReleaseBootResources(__int64 a1, _DWORD *a2, _DWORD *a3){
unsigned int v3;
_DWORD *v4;
unsigned int v5;
_CM_PARTIAL_RESOURCE_DESCRIPTOR *v6;
unsigned int v7;
_CM_PARTIAL_RESOURCE_DESCRIPTOR *v8;
unsigned int v9;
unsigned __int8 Type;
__int64 LowPart;
unsigned int v12;
_CM_PARTIAL_RESOURCE_DESCRIPTOR *v13;
ULONG v14;
int v15;
unsigned int v17;
unsigned int Length;
unsigned int v19;
_DWORD *v20;
int v22;
v20 = a2;
v3 = 0;
*a3 = 0;
if( *a2 != 1 )
return v3;
v4 = *(_DWORD **)(a1 + 544);
if( !v4 )
return v3;
v5 = *v4;
if( !*v4 )
return v3;
v6 = (_CM_PARTIAL_RESOURCE_DESCRIPTOR *)(v4 + 1);
v7 = 0;
if( !v5 )
return v3;
while( 1 )
{
v8 = v6 + 1;
v9 = 0;
Length = v6->u.Length;
if( Length )
break;
LABEL_22:
++v7;
v6 = v8;
if( v7 >= v5 )
return v3;
}
while( 1 )
{
Type = v8->Type;
LowPart = 0i64;
if( !v8->Type )
goto LABEL_21;
if( Type != 5 )
break;
LowPart = v8->u.Start.anonymous_0.LowPart;
LABEL_21:
++v9;
v8 = (_CM_PARTIAL_RESOURCE_DESCRIPTOR *)((char *)v8 + LowPart + 20);
if( v9 >= Length )
goto LABEL_22;
}
if( Type >= 8u )
goto LABEL_21;
v12 = 0;
v22 = 0;
v19 = 0;
v17 = a2[4];
if( !v17 )
return 1;
v13 = (_CM_PARTIAL_RESOURCE_DESCRIPTOR *)(a2 + 5);
while( 1 )
{
v14 = 0;
if( v13->Type == 5 )
{
v14 = v13->u.Start.anonymous_0.LowPart;
goto LABEL_15;
}
if( Type == v13->Type )
break;
LABEL_15:
++v12;
v13 = (_CM_PARTIAL_RESOURCE_DESCRIPTOR *)((char *)v13 + v14 + 20);
v19 = v12;
if( v12 >= v17 )
{
v15 = 1;
goto LABEL_18;
}
}
v22 = 1;
if( !(unsigned int)PnpIsRangeWithin(v8, v13) )
{
v12 = v19;
goto LABEL_15;
}
v15 = 0;
LABEL_18:
if( !v22 )
return 1;
if( !v15 )
{
a2 = v20;
LowPart = 0i64;
goto LABEL_21;
}
*a3 = 1;
return v3;
}Referenced by:
IopReleaseFilteredBootResources