KdpLowWriteContent
UINT8 __stdcall KdpLowWriteContent(UINT64 Index){
char *v1;
int v2;
UINT64 Buffer;
Buffer = 0i64;
++*(&KiSwapEvent + 1155);
v1 = (char *)&KdpBreakpointTable + 40 * (unsigned int)Index;
v2 = *((_DWORD *)v1 + 8);
if( (v2 & 2) != 0 )
{
*((_DWORD *)v1 + 8) = v2 & 0xFFFFFFFD;
return 1;
}
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 )
goto LABEL_7;
if( !(unsigned int)KdpIsBreakpoint((__int64)v1, &Buffer) )
{
KdpOweBreakpoint = 1;
LABEL_7:
*((_DWORD *)v1 + 8) |= 8u;
return 0;
}
if( !(unsigned int)KdpRemoveBreakpoint((__int64)v1, &Buffer) )
{
*((_DWORD *)v1 + 8) |= 8u;
return 0;
}
return(*((_DWORD *)v1 + 8) & 8) == 0;
}Referenced by:
KdpDeleteBreakpoint
KdpSuspendAllBreakpoints