KiRegisterNmiSxCallback

CHAR *__stdcall KiRegisterNmiSxCallback(INT64 a1, INT64 a2){
  CHAR *result; 
  CHAR **v5; 
  unsigned __int8 v6; 
  unsigned __int64 v7; 

  result = (CHAR *)ExAllocatePoolWithTag(0x200ui64, 0x20ui64, 1229803083i64);
  v5 = (CHAR **)result;
  if( result )
  {
    *((_QWORD *)result + 1) = a1;
    *((_QWORD *)result + 2) = a2;
    *((_QWORD *)result + 3) = result;
    v6 = KeAcquireSpinLockRaiseToDpc(&KiNmiCallbackListLock);
    *v5 = (CHAR *)KiNmiCallbackListHead;
    KiNmiCallbackListHead = v5;
    v7 = v6;
    KxReleaseSpinLock(&KiNmiCallbackListLock);
    __writecr8(v7);
    return v5[3];
  }
  return result;
}

Referenced by:

KeRegisterNmiCallback