KiIsXSaveFeatureAllowed
char __fastcall KiIsXSaveFeatureAllowed(__int64 a1, unsigned int a2, __int64 a3, __int64 a4){
unsigned int v5;
_DWORD *v6;
__int64 v7;
unsigned __int64 v8;
unsigned int v9;
unsigned __int64 v11;
v5 = 0;
v6 = (_DWORD *)(a1 + *(_QWORD *)(a1 + 16i64 * a2 + 40));
if( !*v6 )
return 0;
while( 1 )
{
v7 = 14i64 * v5;
v8 = *(_QWORD *)&v6[v7 + 2] - *(_QWORD *)a4;
if( !v8 )
v8 = (unsigned int)v6[v7 + 4] - (unsigned __int64)*(unsigned int *)(a4 + 8);
if( !v8 )
break;
if( ++v5 >= *v6 )
return 0;
}
if( *(_QWORD *)&v6[v7 + 14]
&& (v9 = *(_DWORD *)(a4 + 12), ((*(_DWORD *)(a4 + 12) >> 12) & 3) == LOBYTE(v6[v7 + 6]))
&& ((unsigned __int8)v9 >> 4) + ((v9 >> 10) & 0xF0) == LOWORD(v6[v7 + 7])
&& ((v9 >> 8) & 0xF) + ((v9 >> 14) & 0xFF0) == HIWORD(v6[v7 + 6])
&& (v9 & 0xF) == HIWORD(v6[v7 + 7])
&& (v11 = *(_QWORD *)&v6[v7 + 10]) != 0
&& *(_QWORD *)(a4 + 16) <= v11 )
{
return 0;
}
else
{
return 1;
}
}Referenced by:
KiIntersectFeaturesWithPolicy