# R4-V0 — Ghidra ground-truth decompiles (patchmem.gpr, fetched live 2026-07-03) Authoritative resolutions for the two pins the BN pseudo-C garbled. Fetched via the Ghidra MCP while the V0 pin workflow ran; these OVERRIDE any textual adjudication that disagrees. ## P3 — `heading_diff` 0x00528fb0: the TurnLeft mirror EXISTS ```c float __cdecl heading_diff(float param_1, float param_2, ulong param_3) { float fVar1; fVar1 = param_1 - param_2; if (ABS(param_1 - param_2) < F_EPSILON) { fVar1 = 0.0f; } if (fVar1 < -F_EPSILON) { fVar1 = fVar1 + 360.0f; // ___real_43b40000 } if ((F_EPSILON < fVar1) && (param_3 != 0x6500000d)) { fVar1 = 360.0f - fVar1; // the mirror — NOT-TurnRight only } return fVar1; } ``` Adjudication of the research contradiction: - `r4-moveto-decomp.md` §5g ("turn-command arg UNUSED") is **WRONG** — the arg gates the mirror. - `r4-ace-moveto.md`'s suspicion (an x87-garbled `360−diff` TurnLeft branch) is **CONFIRMED**: the mirror applies whenever the turn command is not TurnRight (0x6500000d), i.e. the TurnLeft direction measures the complementary angle. Port verbatim with the epsilon literal 0.000199999995f (F_EPSILON). ## P2 — `MovementParameters::get_desired_heading` 0x0052aad0: ACE-shaped constants CONFIRMED ```c float __thiscall MovementParameters::get_desired_heading( MovementParameters* this, ulong command, int movingAway) { if ((command == 0x44000007) || (command == 0x45000005)) { // Run/WalkForward if (movingAway == 0) return 0.0f; } else { if (command != 0x45000006) // not WalkBackward return 0.0f; if (movingAway != 0) return 0.0f; } return 180.0f; // ___real_43340000 } ``` Truth table: forward+towards → 0°; forward+away → 180°; backward+towards → 180°; backward+away → 0°; any other command → 0°.