KxSwitchKernelStackCallout

void __fastcall KxSwitchKernelStackCallout(
        __int64 a1,
        void (*a2)(void),
        __int64 a3,
        __int64 a4,
        int a5,
        int a6,
        __int64 a7){
  _QWORD *v7; 
  _QWORD *v8; 
  unsigned __int64 v9; 
  void *retaddr; 
  __int64 v11; 
  _enable();
  if( a4 )
  {
    v11 = a1;
    if( MmGrowKernelStackEx(&retaddr, a4) )
      goto LABEL_5;
    a1 = v11;
  }
  ((void(__fastcall *)(__int64, void(*)(void), __int64))a2)(a1, a2, a3);
LABEL_5:
  v8 = (_QWORD *)v7[5];
  _disable();
  v7[7] = v8[2];
  v7[6] = v8[3];
  v9 = v8[5];
  v7[5] = v9;
  if( (KiKvaShadow & 1) != 0 )
    __writegsqword(0x9008u, v9);
  else
    *(_QWORD *)(*((_QWORD *)KeGetPcr() + 1) + 4i64) = v9;
  __writegsqword(0x1A8u, v9);
  JUMPOUT(0x1403FE6BCi64);
}

Referenced by:

KiSwitchKernelStackAndCallout