HalpInterruptSetLineSpecificOverride
INT64 __fastcall HalpInterruptSetLineSpecificOverride(UINT64 a1){
__int64 v1;
int v2;
_QWORD *v3;
__int64 v4;
__int64 v6;
char v7;
__int64 *v8;
__int64 *v9;
__int64 v10;
v10 = 0i64;
v2 = HalpInterruptGsiToLine(a1, &v10);
if( v2 >= 0 )
{
v3 = (_QWORD *)HalpMmAllocCtxAlloc(v1, 40i64);
v4 = (__int64)v3;
if( !v3 )
return 3221225626i64;
*v3 = 0i64;
v3[1] = 0i64;
v6 = v10;
*(_QWORD *)(v4 + 16) = v10;
*(_QWORD *)(v4 + 24) = v6;
*(_DWORD *)(v4 + 36) = 2;
*(_DWORD *)(v4 + 32) = 1;
v7 = HalpAcquireHighLevelLock(&HalpInterruptOverridesLock);
v8 = (__int64 *)qword_140C49608;
v9 = &HalpInterruptOverrides;
if( *(__int64 **)qword_140C49608 != &HalpInterruptOverrides )
__fastfail(3u);
*(_QWORD *)v4 = &HalpInterruptOverrides;
LOBYTE(v9) = v7;
*(_QWORD *)(v4 + 8) = v8;
*v8 = v4;
qword_140C49608 = v4;
HalpReleaseHighLevelLock(&HalpInterruptOverridesLock, (UINT64)v9);
}
return(unsigned int)v2;
}Referenced by:
HalpPiix4Detect