+ Key key = pos.key();
+ Thread* th = pos.this_thread();
+ Eval::Entry* e = th->evalTable[key];
+
+ // If e->key matches the position's hash key, it means that we have analysed
+ // this node before, and we can simply return the information we found the last
+ // time instead of recomputing it.
+ if (e->key == key)
+ {
+ margin = Value(e->margins[pos.side_to_move()]);
+ return e->value;
+ }
+
+ // Otherwise we overwrite current content with this node info.
+ e->key = key;
+