Watch and expression functions
For some obscure reasons, watches in OllyDbg are 1-based. That means that to access the first available watch, you must set index in watch functions to 1. Internally, OllyDbg keeps watch expressions as names of type NM_WATCH, where first watch has address 1, next - address 2 and so on. Access to watch expressions using name functions is not recommended, direct deletion or insertion of new watches will bring watch window out of synchronization. Instead, use functions listed below.
int Insertwatch(int indexone,char *text);
int Deletewatch(int indexone);
int Getwatch(int indexone,char *text);
int Expression(t_result *result,char *expression,int a,int b, char *data,ulong database,ulong datasize,ulong threadid);