KdpSetContextEx
INT64 __fastcall KdpSetContextEx(INT64 a1, INT64 a2, CONTEXT *a3){
__int64 v4;
unsigned __int64 v6;
__int64 v7;
__int64 v8;
__int64 v9;
__int64 v10;
__int64 v11;
_QWORD v13[5];
UINT64 ContextFlags;
LODWORD(ContextFlags) = 0;
v13[0] = 56i64;
v13[1] = a1;
v4 = *(unsigned __int16 *)(a1 + 6);
if( (unsigned __int16)v4 < 0x500u && *(&KiProcessorBlock + v4) && KdpContextSent )
{
v6 = *(unsigned int *)(a1 + 24);
if( (unsigned int)v6 <= 0x1000
&& (v7 = *(unsigned int *)(a1 + 16), (unsigned int)v7 < (unsigned int)v6)
&& (v8 = *(unsigned int *)(a1 + 20), (_DWORD)v8)
&& v7 + v8 <= v6 )
{
KdpQuickMoveMemory((CHAR *)Context + (unsigned int)v7, *(CHAR **)(a2 + 8), (unsigned int)v8);
if( v10 == v9 )
{
v11 = *(unsigned __int16 *)(a1 + 6);
if( (_WORD)v11 != (unsigned __int16)*((_DWORD *)KeGetPcr() + 105) )
a3 = (CONTEXT *)*((_QWORD *)*(&KiProcessorBlock + v11) + 4280);
KdpSanitizeContextFlags((_CONTEXT *)Context, (unsigned int)v9, &ContextFlags);
KdpCopyContext(a3, (unsigned int)ContextFlags, (_CONTEXT *)Context);
}
*(_DWORD *)(a1 + 8) = 0;
*(_DWORD *)(a1 + 24) = v8;
}
else
{
*(_DWORD *)(a1 + 8) = -1073741811;
}
}
else
{
*(_DWORD *)(a1 + 8) = -1073741823;
}
return KdSendPacket(2i64, v13, 0i64, &KdpContext);
}Referenced by:
KdpSendWaitContinue