/* If PcdMaximumAsciiStringLength is not zero, and SearchString or String contains more than PcdMaximumAsciiStringLength Unicode characters not including the Null-terminator, then ASSERT(). */
CHAR8* EFIAPI AsciiStrStr(IN CONST CHAR8 *String, IN CONST CHAR8 *SearchString)
/* If PcdMaximumAsciiStringLength is not zero, and SearchString or String contains more than PcdMaximumAsciiStringLength Unicode characters not including the Null-terminator, then ASSERT(). */
CHAR8* EFIAPI AsciiStrStr(IN CONST CHAR8 *String, IN CONST CHAR8 *SearchString)
{
  CONST CHAR8  *FirstMatch;
  CONST CHAR8  *SearchStringTmp;
  ASSERT (AsciiStrSize (String) != 0);
  ASSERT (AsciiStrSize (SearchString) != 0);
  if (*SearchString == '\0') {
    return (CHAR8 *)String;
  }
  while (*String != '\0') {
    SearchStringTmp = SearchString;
    FirstMatch      = String;
    while (  (*String == *SearchStringTmp)
          && (*String != '\0'))
    {
      String++;
      SearchStringTmp++;
    }
    if (*SearchStringTmp == '\0') {
      return (CHAR8 *)FirstMatch;
    }
    if (*String == '\0') {
      return NULL;
    }
    String = FirstMatch + 1;
  }
  return NULL;
}