HalpBlkNmiInterrupt

VOID __stdcall HalpBlkNmiInterrupt(UINT64 a1, UINT64 a2, UINT64 a3, UINT64 a4){
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  _M128A v7; 
  _M128A v8; 
  _M128A v9; 
  _M128A v10; 
  _M128A v11; 
  _M128A v12; 
  _KTRAP_FRAME *__shifted(_KTRAP_FRAME,0x80) TrapFrame; 
  unsigned __int8 v14; 
  void *retaddr; 
  __int16 v17; 
  int v18; 
  void *v19; 
  __int16 v20; 
  TrapFrame = KeGetTrapFrame();
  ADJ(TrapFrame)->ExceptionActive = 1;
  ADJ(TrapFrame)->Rax = v4;
  ADJ(TrapFrame)->Rcx = a1;
  ADJ(TrapFrame)->Rdx = a2;
  ADJ(TrapFrame)->R8 = a3;
  ADJ(TrapFrame)->R9 = a4;
  ADJ(TrapFrame)->R10 = v5;
  ADJ(TrapFrame)->R11 = v6;
  ADJ(TrapFrame)->MxCsr = _mm_getcsr();
  _mm_setcsr(0x1F80u);
  ADJ(TrapFrame)->Xmm0 = v7;
  ADJ(TrapFrame)->Xmm1 = v8;
  ADJ(TrapFrame)->Xmm2 = v9;
  ADJ(TrapFrame)->Xmm3 = v10;
  ADJ(TrapFrame)->Xmm4 = v11;
  ADJ(TrapFrame)->Xmm5 = v12;
  HalpBlkMceFastForward((UINT64)ADJ(TrapFrame), 1);
  v14 = _bittestandset(MK_FP(__GS__, 2468i64), 0);
  if( v14
    && (unsigned __int64)HalpBlkNmiInterrupt <= ADJ(TrapFrame)->Rip
    && (unsigned __int64)HalpBlkNmiInterruptEnd > ADJ(TrapFrame)->Rip )
  {
    HalpBlkFatalErrorHalt(0x12u, (UINT64)ADJ(TrapFrame));
  }
  __writegsbyte(0x9A4u, 0);
  _mm_setcsr(ADJ(TrapFrame)->MxCsr);
  __iretq(retaddr, v17, v18, v19, v20);
}

Referenced by:

No references.