HalpBlkApicWrite

EXCEPTION_REGISTRATION_RECORD *__fastcall HalpBlkApicWrite(INT64 a1, UINT64 a2){
  __int64 v2; 
  EXCEPTION_REGISTRATION_RECORD *result; 
  v2 = *(_QWORD *)KeGetPcr();
  if( *(_BYTE *)(v2 + 41) || *(_BYTE *)(v2 + 40) )
  {
    result = (EXCEPTION_REGISTRATION_RECORD *)(unsigned int)a2;
    __writemsr(((int)a1 >> 4) + 2048, (unsigned int)a2);
  }
  else
  {
    result = *(EXCEPTION_REGISTRATION_RECORD **)(*(_QWORD *)KeGetPcr() + 32i64);
    *(_DWORD *)((char *)&result->Next + (int)a1) = a2;
  }
  return result;
}

Referenced by:

HalpBlkApicEndOfInterrupt
HalpBlkApicInitializeLocalUnit