IopPortFindSuitableRange
char __fastcall IopPortFindSuitableRange(__int64 a1, unsigned __int64 *a2){
UCHAR AttributeAvailableMask;
unsigned __int64 v4;
__int64 v6;
unsigned __int64 v7;
ULONGLONG v8;
ULONGLONG v9;
AttributeAvailableMask = 0;
v4 = a2[5];
v6 = *(_QWORD *)(v4 + 16);
if( !v6 )
{
a2[1] = *a2;
return 1;
}
v7 = a2[4];
if( (*(_DWORD *)(v7 + 40) & 0xFFFFFFFD) == 0 || (*(_DWORD *)(v7 + 44) & 1) != 0 )
AttributeAvailableMask = 1;
v8 = a2[2];
v9 = a2[3];
if( v8 <= v9
&& (RtlFindRange(
*(PRTL_RANGE_LIST *)(a1 + 48),
v8,
v9,
v6,
*(_QWORD *)(v4 + 24),
*(_DWORD *)(v4 + 36) & 1,
AttributeAvailableMask,
*(PVOID *)(a1 + 328),
*(PRTL_CONFLICT_RANGE_CALLBACK *)(a1 + 336),
a2) >= 0
|| (*(unsigned __int8(__fastcall **)(__int64, unsigned __int64 *))(a1 + 272))(a1, a2)) )
{
a2[1] = *a2 - 1 + *(_QWORD *)(a2[5] + 16);
return 1;
}
return 0;
}Referenced by:
No references.