HalpInterruptSetLineSpecificOverride
NTSTATUS __stdcall HalpInterruptSetLineSpecificOverride(UINT64 a1){
_HALP_ALLOC_CONTEXT *v1;
int v2;
UINT8 *v3;
UINT8 *v4;
_INTERRUPT_LINE v6;
char v7;
UINT8 **v8;
char *v9;
_INTERRUPT_LINE Line;
Line = 0i64;
v2 = HalpInterruptGsiToLine(a1, &Line);
if( v2 >= 0 )
{
v3 = HalpMmAllocCtxAlloc(v1, 0x28ui64);
v4 = v3;
if( !v3 )
return -1073741670;
*(_QWORD *)v3 = 0i64;
*((_QWORD *)v3 + 1) = 0i64;
v6 = Line;
*((_INTERRUPT_LINE *)v4 + 2) = Line;
*((_INTERRUPT_LINE *)v4 + 3) = v6;
*((_DWORD *)v4 + 9) = 2;
*((_DWORD *)v4 + 8) = 1;
v7 = HalpAcquireHighLevelLock((UINT64 *)&CmpDummyThreadEvent + 891);
v8 = (UINT8 **)*(&CmpDummyThreadEvent + 889);
v9 = (char *)&CmpDummyThreadEvent + 7104;
if( (_UNKNOWN *)**(&CmpDummyThreadEvent + 889) != (_UNKNOWN *)((char *)&CmpDummyThreadEvent + 7104) )
__fastfail(3u);
*(_QWORD *)v4 = (char *)&CmpDummyThreadEvent + 7104;
LOBYTE(v9) = v7;
*((_QWORD *)v4 + 1) = v8;
*v8 = v4;
*(&CmpDummyThreadEvent + 889) = v4;
HalpReleaseHighLevelLock((UINT64 *)&CmpDummyThreadEvent + 891, (UINT64)v9);
}
return v2;
}Referenced by:
HalpPiix4Detect