HalpIommuPopulateExceptionList
INT64 __stdcall HalpIommuPopulateExceptionList(){
unsigned int *v0;
unsigned int v1;
PSTR MemoryInternal;
_QWORD *v4;
unsigned __int64 v5;
__int64 v6;
_QWORD *v7;
v0 = (unsigned int *)KdDebugDevice;
v1 = 0;
if( KdDebugDevice && !*(_DWORD *)(KdDebugDevice + 220) )
{
MemoryInternal = HalpMmAllocateMemoryInternal(0x20ui64, MmCached);
v4 = MemoryInternal;
if( MemoryInternal )
{
*(_OWORD *)MemoryInternal = 0i64;
*((_OWORD *)MemoryInternal + 1) = 0i64;
*((_DWORD *)MemoryInternal + 4) = *((unsigned __int16 *)v0 + 4);
v5 = (unsigned __int64)*v0 << 8;
v4[3] = v5;
v6 = v5 | (8i64 * (v0[1] & 0x1F));
v4[3] = v6;
v4[3] = v6 | (v0[1] >> 5) & 7;
v7 = (_QWORD *)qword_140C49B38;
if( *(__int64 **)qword_140C49B38 != &HalpIommuExceptionList )
__fastfail(3u);
*v4 = &HalpIommuExceptionList;
v4[1] = v7;
*v7 = v4;
qword_140C49B38 = (__int64)v4;
}
else
{
return(unsigned int)-1073741670;
}
}
return v1;
}Referenced by:
HalpIommuInitializeAll