KeFindConfigurationNextEntry
__int64 __fastcall KeFindConfigurationNextEntry(__int64 a1, int a2, int a3, int *a4, _QWORD *a5){
__int64 v8;
int v9;
__int64 i;
__int64 result;
__int64 v12;
v8 = a1;
if( a4 )
v9 = *a4;
else
v9 = 0;
if( !a1 )
return 0i64;
while( 2 )
{
if( *a5 )
{
if( v8 == *a5 )
*a5 = 0i64;
LABEL_7:
for( i = *(_QWORD *)(v8 + 16); i; i = *(_QWORD *)(i + 16) )
{
if( *a5 )
{
if( i == *a5 )
*a5 = 0i64;
}
else if( *(_DWORD *)(i + 24) == a2 && *(_DWORD *)(i + 28) == a3 && (a4 != 0i64 ? *(_DWORD *)(i + 40) : 0) == v9 )
{
return i;
}
v12 = *(_QWORD *)(i + 8);
if( v12 )
{
result = KeFindConfigurationNextEntry(v12, a2, a3, a4, a5);
if( result )
return result;
}
}
v8 = *(_QWORD *)(v8 + 8);
if( v8 )
continue;
return 0i64;
}
break;
}
if( *(_DWORD *)(v8 + 24) != a2 || *(_DWORD *)(v8 + 28) != a3 || (a4 != 0i64 ? *(_DWORD *)(v8 + 40) : 0) != v9 )
goto LABEL_7;
return v8;
}Referenced by:
HalpAcpiFindRsdp
KeFindConfigurationEntry
KeFindConfigurationNextEntry