HalpHvRetargetIoApicDeviceInterrupt
NTSTATUS __stdcall HalpHvRetargetIoApicDeviceInterrupt(
UINT64 IoApicId,
_INTERRUPT_LINE_STATE *LineState,
_GROUP_AFFINITY *TargetProcessors,
UINT8 *ReprogramController){
__int128 *v4;
int Mask;
NTSTATUS result;
int v8;
int v9;
unsigned __int64 v10;
__int64 v11[2];
__int128 v12;
__int128 v13;
_BYTE *v14;
v4 = &v12;
v11[0] = 2i64;
v10 = 0x8000000000000000ui64;
v11[1] = *(_QWORD *)&TargetProcessors[2].Group;
Mask = TargetProcessors[3].Mask;
*v14 = 0;
LOBYTE(v10) = IoApicId;
if( *(_DWORD *)&TargetProcessors->Group )
v4 = 0i64;
v13 = 0i64;
LODWORD(v13) = Mask;
v12 = 0i64;
result = ((__int64(__fastcall *)(unsigned __int64, __int64 *, __int128 *, UINT8 *, __int128 *))qword_140C4A178)(
v10,
v11,
&v13,
ReprogramController,
v4);
if( result >= 0 && v4 )
{
v8 = DWORD2(v12);
v9 = HIDWORD(v12);
if( *((_QWORD *)&v12 + 1) != TargetProcessors[2].Mask )
{
*v14 = 1;
LODWORD(TargetProcessors[2].Mask) = v8;
HIDWORD(TargetProcessors[2].Mask) = v9;
}
}
return result;
}Referenced by:
HalpInterruptSetRemappedDestinationHv