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