REDIVIVUS

Proposals / #731

Type the Windows path-cost propagation context in its existing EAX slot

applied · by Commit-Will · submitted 2026-11-01, applied 2026-11-02

Ghidra v1804 · 39698f0

Win 0067afe0 receives D2DrlgPathSearchCtxStrc* in its existing EAX formal, currently int32_t. Its complete472-byte body indexes the propagation queue at context+12232 and reads/updates its count+13032, exactly matching the existing13036-byte object. The sole caller0067b200 preserves its original context in ESI, then MOV EAX,ESI0067b347 supplies it before CALL0067b349. That context is independently traced through every expansion call to the exact frame object in0067b850. Retype only EAX:4, naming the context pSearchCtx and preserving the existing EDX node input, all custom slots, cdecl, void return and locals. Initial PUSH ECX allocates a local; ECX is overwritten from the context count before semantic use, so the old comment does not justify adding a formal. Complete target, caller and native context/node producer bytes are verified against the original Windows PE. No pending metadata, shared field, Mac pair or runtime behavior change is used.

Changes 2, applied together

  1. Retype variable win 0x0067afe0 EAX

    typeint32_t→D2DrlgPathSearchCtxStrc *
  2. Rename variable win 0x0067afe0 EAX

    namenParam→pSearchCtx