text: public virtual int Find(char[] key, int start){int d;char p = m_root;int i = start;char c;while (p != 0){if (m_sc[p] == 0xFFFF){if (StrCmp(key, i, m_kv.Array, m_lo[p]) == 0){return m_eq[p];}else{return -1;}}c = key[i];d = c - m_sc[p];if (d == 0){if (c == 0){return m_eq[p];}i++;p = m_eq[p];}else if (d < 0){p = m_lo[p];}else{p = m_hi[p];}}return -1;}