+ // Start a new index and add it to the hash
+ if (isspace(Stop[0]) == 0)
+ {
+ Indexes[TagCount++] = Stop - Section;
+ unsigned char A = tolower(Stop[0]) - 'a';
+ unsigned char B = tolower(Stop[1]) - 'a';
+ unsigned char C = tolower(Stop[3]) - 'a';
+ AlphaIndexes[((A + C/3)%26) + 26*((B + C/2)%26)] = TagCount;
+ }
+
+ Stop = (const char *)memchr(Stop,'\n',End - Stop);
+
+ if (Stop == 0)
+ return false;
+ for (; Stop[1] == '\r' && Stop+1 < End; Stop++);
+
+ // Double newline marks the end of the record
+ if (Stop+1 < End && Stop[1] == '\n')