Reconstruct _main_loop from the exact Claude packet using semantic helper names, authentic types, and owner-header prototypes. Keep collision timing declarations behind the collision debug/log boundary so units.obj remains exact.
Retain 18 strict exact-function gains across Actions, Actor Combat, Decals, Game Engine, Object Lights, and Bipeds after removing donor bodies that regressed exact objects, emitted unowned code, or violated source-credibility rules. Name authenticated private symbols, move declarations to owner headers, record honest residual parks, and preserve units.obj at 189/189.
source/cseries/cseries.obj is complete at 26/26 target code owners and
20/20 runtime data owners strict exact. _csstrcasecmp reaches 192 padded
bytes, 11 relocations, normalized SHA-256 9fb7ecf4631bd2d54ae281b836b5f974
242c9527483666ccd00a04fefce84efa, identical to January, with relocations at
the target addresses. Configuration index 359 moves NonMatching -> Matching.
The decisive factor is the order in which the two cursors are first
assigned: assigning the second-string cursor before the first makes VC7
retain it as the advancing induction variable and reconstruct the first
stream from the invariant delta, which is January's topology. Reversing
just those two statements reproduces the previous lane's C1 hash exactly,
confirming the ordering is the whole residual.
The accepted form also removes the obsolete register storage class and the
undefined pointer subtraction between unrelated pointers, and corrects the
comparison polarity to c1 != c2.
Regression gate ok with 25 still_exact, 1 newly_exact, 0 changed_nonexact;
both full builds satisfied; reports regenerated; semantic, parked and
admission audits clean; all 179 tooling tests pass.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Recover the exact error-buffer publication shape, preserve Berth declaration formatting, admit the 10/10 translation unit, and retire only the stale _error compiler-tie park.
Byte-exact, all four functions, whole object. Source was a pure skeleton with
no code; status MISSING work now NonMatching -> Matching.
An iterative quicksort for 2-byte and 4-byte elements with a 30-deep bounds
stack and a selection-sort cutoff at 8. The two code_* symbols are the
selection sorts and take hi in EAX under VC7's custom convention for statics.
The comparator takes values, not pointers, and the zero-extension in the target
pins the 2-byte element type to word rather than short.
Five source-shape findings, each read off the disassembly:
- the swap loads both elements then stores to *best first, which is
temp = *best; *best = *hi; *hi = temp - the mirror of the natural form. That
alone made both selection sorts exact.
- element_count and size are unsigned: the target uses jb, ja and shr where
signed types give jl, jg and sar.
- the source writes lo+1 < j, not the algebraically identical lo < j-1, which
reverses the lea and cmp operands.
- the larger-partition test compares raw byte differences. On word pointers
every element-count form makes MSVC emit two sars or cancel them and mask,
costing 16 bytes; only an explicit byte-basis comparison gives the plain dec.
j-1-lo >= hi-i, j-lo > hi-i and the byte form are integer-identical and only
the last matches.
- depth = 0 is assigned before hi; the reverse order swaps the two stores.
Both qsort bodies went exact from the same five fixes, which is good evidence
the shapes are right rather than coincidental.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* work on breakable_surfaces.c
* squashme asdf
* word
* more
* Correctness changes
Move types definitions to where we know they are, fix includes and formatting, fix bad defines
* Missed this include
* Scoped if
* More
* MAXIMUM_NUMBER_OF_MATERIAL_TYPES
* Enum correctness
---------
Co-authored-by: punpckhdq <121350336+punpckhdq@users.noreply.github.com>