ViCtxEqualExtendedState
UINT8 __stdcall ViCtxEqualExtendedState(XSAVE_AREA *Left, XSAVE_AREA *Right){
char v2;
unsigned __int64 v5;
unsigned int v6;
unsigned int *i;
v5 = KUSER_SHARED_DATA.XState.EnabledFeatures & Right->Header.Mask & Left->Header.Mask;
if( (v5 & 1) == 0
|| v2
|| Left->LegacyState.ControlWord == Right->LegacyState.ControlWord
&& Left->LegacyState.StatusWord == Right->LegacyState.StatusWord
&& Left->LegacyState.TagWord == Right->LegacyState.TagWord
&& !memcmp(Left->LegacyState.FloatRegisters, Right->LegacyState.FloatRegisters, 0x80ui64) )
{
v6 = 2;
if( (v5 & 2) == 0
|| Left->LegacyState.MxCsr == Right->LegacyState.MxCsr
&& Left->LegacyState.MxCsr_Mask == Right->LegacyState.MxCsr_Mask
&& !memcmp(&Left->LegacyState.XmmRegisters[6], &Right->LegacyState.XmmRegisters[6], 0xA0ui64) )
{
for( i = (_DWORD *)(&KUSER_SHARED_DATA + 1028);
!_bittest64((const __int64 *)&v5, v6) || !memcmp((char *)Left + *(i - 1), (char *)Right + *(i - 1), *i);
i += 2 )
{
if( ++v6 >= 0x40 )
return 1;
}
}
}
return 0;
}Referenced by:
ViCtxCheckAndReleaseIsrState