Replace O(N) linear scans through `global_funcs[]` with O(log N) tree lookups for global function resolution. This affects `Global_GetRef`, `ScriptDisp_GetDispID`, `exec_global_code`, and `lookup_global_funcs` in the interpreter. Scripts that use `ExecuteGlobal` to dynamically generate functions (e.g. Visual Pinball's GLF framework generates ~1000 functions at startup) hit pathological O(N) scan behavior on every `GetRef` call and `GetDispID` lookup. With this change, `GetRef` dispatch over 1000 functions drops from 503ms to 58ms (**8.7×**), reaching parity with Windows (62ms). **Benchmark** (`bench_executeglobal.vbs`, 1000 dynamically created functions, best-of-3): | Benchmark | Before | After | Speedup | Windows | |-----------|--------|-------|---------|---------| | GetRef varied x100K | 503 ms | 58 ms | **8.7×** | 62 ms | | GetRef loop x200K | 292 ms | 82 ms | **3.6×** | 125 ms | | GetRef cached x200K | 35 ms | 35 ms | 1.0× | 85 ms | | Direct call x200K | 35 ms | 46 ms | ~1.0× | 31 ms | Depends on !10544 for the fast `vbs_wcsicmp` used in the tree comparator. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10546