rem: if (*++t) { register int c = tolower(*t); for (; *s && *s != '"'; s++) { if (tolower(*s) == c) if (!soap_tag_cmp(s + 1, t + 1)) return 0; } break;
add: c2 = *++t; if (!c2) return 0; if (c2 >= 'A' && c2 <= 'Z') c2 += 'a' - 'A'; for (;;) { c1 = *s; if (!c1 || c1 == '"') break; if (c1 >= 'A' && c1 <= 'Z') c1 += 'a' - 'A'; if (c1 == c2) if (!soap_tag_cmp(s + 1, t + 1)) return 0; s++;
context: soap_tag_cmp(register const char *s, register const char *t){ for (; *s && *s != '"'; s++, t++)    if (tolower(*s) != tolower(*t))      if (*t != '-')      { if (*t != '*')          return 1;        if (*++t)        { register int c = tolower(*t);          for (; *s && *s != '"'; s++)          { if (tolower(*s) == c)              if (!soap_tag_cmp(s + 1, t + 1))                return 0;          }          break;        }        else          return 0;      }  if (*t == '*' && !t[1])    return 0;  return *t;}