Resolve identifiers to direct indices during compilation instead of doing runtime `wcsicmp` string scans in `lookup_identifier()`. This adds new opcodes that access local variables, function arguments, class properties, and loop variables by index, eliminating the linear string comparison overhead for the most common cases. **New opcodes:** - `OP_local` / `OP_assign_local` / `OP_set_local` - read/write local vars and args by index - `OP_local_prop` / `OP_assign_local_prop` / `OP_set_local_prop` - read/write class properties by index - `OP_step_local` / `OP_incc_local` - For-loop step/increment with indexed counter - `OP_enumnext_local` - For-Each iteration with indexed loop variable This mirrors jscript's `OP_local` / `bind_local()` optimization (`dlls/jscript/compile.c`) and addresses the FIXME in `lookup_identifier()` noting that class property access should be bound at compile time. Names that cannot be resolved at compile time (globals in Execute/ExecuteGlobal code, dynamic vars, host objects) continue to use the existing string-based path. Patched against Wine master (0c0d2643), measured on two real-world VBScripts (75K-line / 89-class and 37K-line / 17-class), 5 runs each: - Script A (loop/local-heavy): steady-state simulation -7.73 %, full run -4.63 %, top per-timer cumulative wall -6.18 % - Script B (class-method-heavy): steady-state -3.97 %, full run -4.18 %, top per-timer -3.13 % perf confirms the mechanism: lookup_identifier drops 9.52 % → 3.68 % of self-time, with the new interp_local taking 3.30 %. -- v28: vbscript: Bind class properties at compile time. vbscript: Bind For-loop variables at compile time. vbscript: Factor out do_for_step and do_incc from interp_step and interp_incc. vbscript: Bind local variable assignments at compile time. vbscript: Factor out assign_local_var from assign_ident. vbscript: Bind local variables and arguments at compile time. https://gitlab.winehq.org/wine/wine/-/merge_requests/10515