KdpGetContext
VOID __fastcall KdpGetContext(_DBGKD_MANIPULATE_STATE64 *m, _STRING *AdditionalData, _CONTEXT *Context){
__int64 v4;
int v7;
__int64 v8;
unsigned int ContextFlags;
unsigned int v10;
unsigned __int16 v11;
v4 = *((unsigned __int16 *)m + 3);
if( (unsigned __int16)v4 >= 0x500u )
goto LABEL_11;
v7 = 0;
v8 = (__int64)*(&KiProcessorBlock + v4);
if( !v8 )
goto LABEL_11;
if( (_WORD)v4 != (unsigned __int16)*((_DWORD *)KeGetPcr() + 105) )
Context = *(_CONTEXT **)(v8 + 34240);
ContextFlags = Context->ContextFlags;
v10 = 1256;
if( (ContextFlags & 0x100040) == 1048640 )
v10 = KUSER_SHARED_DATA.XState.Size + 800;
v11 = v10 + 15;
if( v10 + 15 <= AdditionalData->MaximumLength )
{
KdpInitializeExtendedContext((CONTEXT *)AdditionalData->Buffer, ContextFlags);
KdpCopyContext((_CONTEXT *)AdditionalData->Buffer, ContextFlags, Context);
if( (ContextFlags & 0x100040) != 1048640 )
v11 = 1232;
AdditionalData->Length = v11;
}
else
{
LABEL_11:
v7 = -1073741823;
}
*((_DWORD *)m + 2) = v7;
}Referenced by:
KdpGetContextEx
KdpSendWaitContinue