Next step is searching for prefixes. This is hard work, so various aspects of this are handled by different modules. And because it's hard, this part of work supports threads, so we can use several processors or several cores of the same processor.
We start with browsing trees and filling tmpstats structure. Once this structure is filled, we continue with evaluating expression given to us by user. We evaluate it for each segmentation of world. If it returns true (any positive number), we evaluate stats, average them with already existent stats and same prefix. For its description take a look at compute.h file. Most of this is handled by compute module. As you can expect, evaluating of expression is the hardest part, so it has separate module named evaluator.
Evaluator just evaluates expressions. Fore details see evaluator.cpp. But for each implemented method it uses functions from functions module. Functions module is the place, where actual algorithms are stored. Everything other is used just to process data, interact with user and call functions from functions module. For list of possible functions take a look at functions.h file.