KdpLowRestoreBreakpoint
UINT8 __stdcall KdpLowRestoreBreakpoint(UINT64 Index){
char *v1;
int v2;
int inserted;
int v5;
UINT64 Buffer;
Buffer = 0i64;
++*(&KiSwapEvent + 1155);
v1 = (char *)&KdpBreakpointTable + 40 * (unsigned int)Index;
v2 = *((_DWORD *)v1 + 8);
if( (v2 & 8) == 0 )
{
if( (v2 & 0x10) == 0 && (unsigned int)KdpIsBreakpoint((__int64)v1, v1 + 24) == 1 )
return 1;
if( KdpCopyCodeStream(
*(_QWORD *)v1 & ~(unsigned __int64)(unsigned __int8)v1[37],
&Buffer,
(VOID *)(unsigned __int8)v1[36],
4ui64) >= 0 )
{
inserted = KdpInsertBreakpoint((__int64)v1, &Buffer);
v5 = *((_DWORD *)v1 + 8);
if( inserted )
{
*((_DWORD *)v1 + 8) = v5 ^ ((unsigned __int8)inserted ^ (unsigned __int8)v5) & 2;
return 1;
}
*((_DWORD *)v1 + 8) = v5 | 2;
}
else
{
*((_DWORD *)v1 + 8) |= 2u;
}
return 0;
}
*((_DWORD *)v1 + 8) = v2 & 0xFFFFFFF7;
return 1;
}Referenced by:
KdpRestoreAllBreakpoints