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