/* If FirstString is NULL, then ASSERT(). If SecondString is NULL, then ASSERT(). If StartSearchString is NULL, then ASSERT(). If StopSearchString is NULL, then ASSERT(). */
BOOLEAN EFIAPI InternalHiiCompareSubString(IN CHAR16 *FirstString, IN CHAR16 *SecondString, IN CHAR16 *StartSearchString, IN CHAR16 *StopSearchString)
/* If FirstString is NULL, then ASSERT(). If SecondString is NULL, then ASSERT(). If StartSearchString is NULL, then ASSERT(). If StopSearchString is NULL, then ASSERT(). */
BOOLEAN EFIAPI InternalHiiCompareSubString(IN CHAR16 *FirstString, IN CHAR16 *SecondString, IN CHAR16 *StartSearchString, IN CHAR16 *StopSearchString)
{
  CHAR16  *EndFirstString;
  CHAR16  *EndSecondString;
  ASSERT (FirstString != NULL);
  ASSERT (SecondString != NULL);
  ASSERT (StartSearchString != NULL);
  ASSERT (StopSearchString != NULL);
  FirstString = StrStr (FirstString, StartSearchString);
  if (FirstString == NULL) {
    return FALSE;
  }
  SecondString = StrStr (SecondString, StartSearchString);
  if (SecondString == NULL) {
    return FALSE;
  }
  EndFirstString = StrStr (FirstString, StopSearchString);
  if (EndFirstString == NULL) {
    return FALSE;
  }
  EndSecondString = StrStr (SecondString, StopSearchString);
  if (EndSecondString == NULL) {
    return FALSE;
  }
  if ((EndFirstString - FirstString) != (EndSecondString - SecondString)) {
    return FALSE;
  }
  return (BOOLEAN)(StrnCmp (FirstString, SecondString, EndFirstString - FirstString) == 0);
}