rem: tolower (*InputStringPntr) == *ThingStartCode && strncasecmp (InputStringPntr, ThingStartCode, ThingStartLength) == 0)
add: *InputStringPntr == *ThingStartCode && memcmp (InputStringPntr, ThingStartCode, ThingStartLength) == 0)
context: static size_t TokenizerUtilRemoveStartEndThing (  char *BufferPntr,  size_t NumberOfBytes,  char PrefixCharacter,  set<string> &WordSet,  const char *ThingStartCode,  const char *ThingEndCode,  bool ReplaceWithSpace){  char *EndOfStringPntr;  bool  FoundAndDeletedThing;  char *InputStringPntr;  char *OutputStringPntr;  int   ThingEndLength;  char *ThingEndPntr;  int   ThingStartLength;  InputStringPntr = BufferPntr;  EndOfStringPntr = InputStringPntr + NumberOfBytes;  OutputStringPntr = InputStringPntr;  ThingStartLength = strlen (ThingStartCode);  ThingEndLength = strlen (ThingEndCode);  if (ThingStartLength <= 0)    return NumberOfBytes; /* Need some things to look for first! */  while (InputStringPntr < EndOfStringPntr)  {    /* Search for the starting marker. */    FoundAndDeletedThing = false;    if (EndOfStringPntr - InputStringPntr >=    ThingStartLength + ThingEndLength /* space remains for start + end */ &&    tolower (*InputStringPntr) == *ThingStartCode &&    strncasecmp (InputStringPntr, ThingStartCode, ThingStartLength) == 0)    {      /* Found the start marker.  Look for the terminating string.  If it is an      empty string, then we've found it right now! */      ThingEndPntr = InputStringPntr + ThingStartLength;      while (EndOfStringPntr - ThingEndPntr >= ThingEndLength)      {        if (ThingEndLength == 0 ||        (tolower (*ThingEndPntr) == *ThingEndCode &&        strncasecmp (ThingEndPntr, ThingEndCode, ThingEndLength) == 0))        {          /* Got the end of the Thing.  First dump the text inbetween the start          and end markers into the words list. */          TokenizerPassGetPlainWords (InputStringPntr + ThingStartLength,            ThingEndPntr - (InputStringPntr + ThingStartLength),            PrefixCharacter, WordSet);          /* Delete by not updating the output pointer while moving the input          pointer to just after the ending tag. */          InputStringPntr = ThingEndPntr + ThingEndLength;          if (ReplaceWithSpace)            *OutputStringPntr++ = ' ';          FoundAndDeletedThing = true;          break;        }        ThingEndPntr++;      } /* End while ThingEndPntr */    }    if (!FoundAndDeletedThing)      *OutputStringPntr++ = *InputStringPntr++;  } /* End while InputStringPntr */  return OutputStringPntr - BufferPntr;}