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