diff --git a/.run/backlog.jsonl b/.run/backlog.jsonl index 7d6573ab7..2b926f32f 100644 --- a/.run/backlog.jsonl +++ b/.run/backlog.jsonl @@ -6707,3 +6707,4 @@ {"ts": "2026-07-22 14:07:44", "addr": null, "name": "func_801365B8", "reach": null, "klass": "schedule", "nins": null, "status": "failed", "closeness": null, "where_stuck": "none \u2014 MATCH (155/155). Two levers: (1) the three D_8012672x tail globals MUST be", "best_draft": ".run/backlog_drafts/func_801365B8.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-22 14:08:23", "addr": null, "name": "func_80165CA0", "reach": null, "klass": "regalloc-order", "nins": null, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (99 ins, match_one masked)", "best_draft": ".run/backlog_drafts/func_80165CA0.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null} {"ts": "2026-07-22 14:09:43", "addr": null, "name": "func_80191C50", "reach": null, "klass": "schedule", "nins": null, "status": "near", "closeness": 9, "where_stuck": "close=9 \u2014 only the case-7 sp20[] setup window (0x80192380..0x801923A4): gcc's list scheduler picks the D_80126B62 lui 2nd (its extra `addiu -0x38` gives that chain +1 priority) where the target picks D_80126B66 2nd (LUID/program order); everything else (710/710 ins, frame 0x40, $s0/$s1, jtbl, 3 entity loops, 8 sync blocks, cross-jumped L4AC tail) is byte-identical.", "best_draft": ".run/backlog_drafts/func_80191C50.c", "binary": "ov_SC06_018", "source": "worker", "residual": [[460, "3c030000 lui\tv1,0x0", "3c028012 lui $v0, %hi(D_80126B5E)"], [461, "94630000 lhu\tv1,0(v1)", "94426b5e lhu $v0, %lo(D_80126B5E)($v0)"], [462, "3c020000 lui\tv0,0x0", "3c038012 lui $v1, %hi(D_80126B66)"], [463, "94420000 lhu\tv0,0(v0)", "94636b66 lhu $v1, %lo(D_80126B66)($v1)"], [464, "3c040000 lui\ta0,0x0", "a7a20020 sh $v0, 0x20($sp)"], [465, "94840000 lhu\ta0,0(a0)", "3c028012 lui $v0, %hi(D_80126B62)"], [466, "2442ffc8 addiu\tv0,v0,-56", "94426b62 lhu $v0, %lo(D_80126B62)($v0)"], [467, "a7a30020 sh\tv1,32(sp)", "a7a30024 sh $v1, 0x24($sp)"], [468, "a7a40024 sh\ta0,36(sp)", "2442ffc8 addiu $v0, $v0, -0x38"]], "passes_tried": null} +{"ts": "2026-07-22 17:25:00", "addr": null, "name": "func_80133AB0", "reach": null, "klass": "plumbing", "nins": null, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (per-location family member; ov_SC01_077 sibling adapted with this overlay's D_* symbols)", "best_draft": ".run/backlog_drafts/func_80133AB0.c", "binary": "ov_SC06_018", "source": "worker", "residual": null, "passes_tried": null} diff --git a/docs/backlog.md b/docs/backlog.md index ffe8f6cd9..cf35e5f3f 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -2,7 +2,7 @@ > Generated by `tools/backlog.py render` from `.run/backlog.jsonl`. These are functions the Phase-21 automation got **close** on but did NOT byte-match. The whole-binary byte-gate is the sole arbiter (G3/P9): **byte-matches bank and are NOT listed here** — only genuine near-misses/blockers are. Ranked by hand-session priority: **reach** (×N propagation leverage) → **closeness** (match_one mismatch count, lower = closer) → **size**. Each row's `best_draft` is the closest C the machine reached — resume from there. -**Open near-misses:** 1738 · by status {'near': 1660, 'failed': 78} · by class {'STUB': 4, 'plumbing': 13, 'other': 8, 'WAVE': 27, 'schedule': 33, 'struct': 26, 'PINS': 4, 'regalloc-order': 28, 'remat': 3, 'O0': 2, 'O1': 1, 'STRUCT': 3, 'iv-combine': 2, None: 1581, 'loose-typing': 3} +**Open near-misses:** 1738 · by status {'near': 1661, 'failed': 77} · by class {'STUB': 4, 'plumbing': 14, 'other': 8, 'WAVE': 27, 'schedule': 32, 'struct': 26, 'PINS': 4, 'regalloc-order': 28, 'remat': 3, 'O0': 2, 'O1': 1, 'STRUCT': 3, 'iv-combine': 2, None: 1581, 'loose-typing': 3} | # | addr | reach | class | nins | status | closeness | where it stuck | best draft | |--:|------|------:|-------|-----:|--------|----------:|----------------|------------| @@ -394,1353 +394,1353 @@ | 386 | func_800CFE60 | None | | None | near | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_800CFE60.c` | | 387 | func_800D0214 | None | | None | near | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_800D0214.c` | | 388 | func_80165CA0 | None | regalloc-order | None | near | 0 | none — MATCH (99 ins, match_one masked) | `.run/backlog_drafts/func_80165CA0.c` | -| 389 | func_80161D20 | 1 | struct | 14 | near | 1 | none — MATCH (array-of-u16 %lo-fold, §18) | `.run/backlog_drafts/func_80161D20.c` | -| 390 | func_8017F714 | 1 | plumbing | 27 | near | 1 | none — MATCH (27/27 ins, match_one verified) | `.run/backlog_drafts/func_8017F714.c` | -| 391 | func_80142A10 | 1 | struct | 28 | near | 1 | none — MATCH (pending byte-gate) | `.run/backlog_drafts/func_80142A10.c` | -| 392 | func_80161C24 | 1 | struct | 29 | near | 1 | none — MATCH (array-of-struct %lo-fold; even/odd u16 fields at off 0/2, stride 4) | `.run/backlog_drafts/func_80161C24.c` | -| 393 | func_80184C0C | 1 | struct | 48 | near | 1 | none — MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34) | `.run/backlog_drafts/func_80184C0C.c` | -| 394 | func_801803B0 | 1 | other | 51 | near | 1 | none — MATCH expected; simple if/else, no call-crossing locals beyond param in $s0 | `.run/backlog_drafts/func_801803B0.c` | -| 395 | func_8015FBE0 | 1 | schedule | 58 | near | 1 | none — MATCH | `.run/backlog_drafts/func_8015FBE0.c` | -| 396 | func_8017F114 | 1 | regalloc-order | 75 | near | 1 | none — MATCH | `.run/backlog_drafts/func_8017F114.c` | -| 397 | func_801807D8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801807D8.c` | -| 398 | func_80180AD0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180AD0.c` | -| 399 | func_8017FDB0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FDB0.c` | -| 400 | func_80180720 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180720.c` | -| 401 | func_80184A28 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184A28.c` | -| 402 | func_80183AFC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80183AFC.c` | -| 403 | func_8017EE50 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EE50.c` | -| 404 | func_80181FF8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80181FF8.c` | -| 405 | func_801832F4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801832F4.c` | -| 406 | func_8017FE4C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FE4C.c` | -| 407 | func_801827C4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801827C4.c` | -| 408 | func_80182B68 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182B68.c` | -| 409 | func_80185E38 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80185E38.c` | -| 410 | func_8017FD70 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FD70.c` | -| 411 | func_801811D4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801811D4.c` | -| 412 | func_801819DC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801819DC.c` | -| 413 | func_8018ADF8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018ADF8.c` | -| 414 | func_80186554 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80186554.c` | -| 415 | func_80180C44 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180C44.c` | -| 416 | func_801873FC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801873FC.c` | -| 417 | func_80183FB4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80183FB4.c` | -| 418 | func_80180E7C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180E7C.c` | -| 419 | func_801835FC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801835FC.c` | -| 420 | func_801892B4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801892B4.c` | -| 421 | func_80184970 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184970.c` | -| 422 | func_801863D4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801863D4.c` | -| 423 | func_80181540 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80181540.c` | -| 424 | func_801809D4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801809D4.c` | -| 425 | func_801802A4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801802A4.c` | -| 426 | func_801830A8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801830A8.c` | -| 427 | func_8017E858 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017E858.c` | -| 428 | func_80186BD4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80186BD4.c` | -| 429 | func_8017FB98 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FB98.c` | -| 430 | func_8017EE14 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EE14.c` | -| 431 | func_80181DA0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80181DA0.c` | -| 432 | func_80187840 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80187840.c` | -| 433 | func_80184E58 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184E58.c` | -| 434 | func_80184354 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184354.c` | -| 435 | func_8018011C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018011C.c` | -| 436 | func_8017E29C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017E29C.c` | -| 437 | func_8017D930 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017D930.c` | -| 438 | func_80182A8C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182A8C.c` | -| 439 | func_80181FCC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80181FCC.c` | -| 440 | func_801893E0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801893E0.c` | -| 441 | func_80186908 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80186908.c` | -| 442 | func_80189DC4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80189DC4.c` | -| 443 | func_80182AB0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182AB0.c` | -| 444 | func_80183EA4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80183EA4.c` | -| 445 | func_8018B344 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018B344.c` | -| 446 | func_80188858 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80188858.c` | -| 447 | func_8018773C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018773C.c` | -| 448 | func_80182E9C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182E9C.c` | -| 449 | func_8017F378 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017F378.c` | -| 450 | func_80184BAC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184BAC.c` | -| 451 | func_801852D4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801852D4.c` | -| 452 | func_80189B60 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80189B60.c` | -| 453 | func_8018445C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018445C.c` | -| 454 | func_8018AA08 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018AA08.c` | -| 455 | func_80182CEC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182CEC.c` | -| 456 | func_8017FBB4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FBB4.c` | -| 457 | func_8018C8A0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018C8A0.c` | -| 458 | func_8018944C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018944C.c` | -| 459 | func_8018A598 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018A598.c` | -| 460 | func_8017EA40 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EA40.c` | -| 461 | func_801826C8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801826C8.c` | -| 462 | func_801854C0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801854C0.c` | -| 463 | func_8017EC64 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EC64.c` | -| 464 | func_80184C94 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184C94.c` | -| 465 | func_80185CE4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80185CE4.c` | -| 466 | func_8017EA68 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EA68.c` | -| 467 | func_80180074 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180074.c` | -| 468 | func_801847E4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801847E4.c` | -| 469 | func_80182470 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182470.c` | -| 470 | func_8017E3D8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017E3D8.c` | -| 471 | func_8018386C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018386C.c` | -| 472 | func_80187A0C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80187A0C.c` | -| 473 | func_8018893C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018893C.c` | -| 474 | func_80186AE8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80186AE8.c` | -| 475 | func_80185BEC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80185BEC.c` | -| 476 | func_801900B0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801900B0.c` | -| 477 | func_80180AA4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180AA4.c` | -| 478 | func_8017BFC8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017BFC8.c` | -| 479 | func_8016EC0C | 1 | schedule | 88 | near | 2 | none — MATCH (88 ins). Sparse switch(uVar2) = gcc's beq-pivot+slti comparison | `.run/backlog_drafts/func_8016EC0C.c` | -| 480 | func_8017F6B0 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017F6B0.c` | -| 481 | func_8017DDFC | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017DDFC.c` | -| 482 | func_801817DC | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801817DC.c` | -| 483 | func_80182264 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80182264.c` | -| 484 | func_80181834 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80181834.c` | -| 485 | func_8018558C | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8018558C.c` | -| 486 | func_801843CC | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801843CC.c` | -| 487 | func_8017FC8C | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017FC8C.c` | -| 488 | func_80183228 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80183228.c` | -| 489 | func_80183118 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80183118.c` | -| 490 | func_8017E404 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017E404.c` | -| 491 | func_80183B4C | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80183B4C.c` | -| 492 | func_801879B0 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801879B0.c` | -| 493 | func_801828C8 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801828C8.c` | -| 494 | func_8017FA80 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017FA80.c` | -| 495 | func_8017E874 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017E874.c` | -| 496 | func_80185000 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80185000.c` | -| 497 | func_80180F18 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80180F18.c` | -| 498 | func_8018C658 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8018C658.c` | -| 499 | func_80180BF0 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80180BF0.c` | -| 500 | func_80184294 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80184294.c` | -| 501 | func_80183F48 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80183F48.c` | -| 502 | func_80180834 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80180834.c` | -| 503 | func_8018BA9C | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8018BA9C.c` | -| 504 | func_80186DAC | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80186DAC.c` | -| 505 | func_8017EE78 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017EE78.c` | -| 506 | func_801804C8 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801804C8.c` | -| 507 | func_80171B4C | 1 | schedule | 70 | near | 3 | 3-off in the tail only (body+prologue MATCH via $s1 pin on arg1). gcc fills the | `.run/backlog_drafts/func_80171B4C.c` | -| 508 | func_8017D468 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017D468.c` | -| 509 | func_8017DCE4 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017DCE4.c` | -| 510 | func_8017F510 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017F510.c` | -| 511 | func_801816FC | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801816FC.c` | -| 512 | func_8017DE90 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017DE90.c` | -| 513 | func_80190480 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80190480.c` | -| 514 | func_8018AFDC | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018AFDC.c` | -| 515 | func_80180D34 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80180D34.c` | -| 516 | func_8017F38C | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017F38C.c` | -| 517 | func_8017D938 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017D938.c` | -| 518 | func_8018AE6C | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018AE6C.c` | -| 519 | func_80181720 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80181720.c` | -| 520 | func_80183BC8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80183BC8.c` | -| 521 | func_8017F0C0 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017F0C0.c` | -| 522 | func_8018D4B4 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018D4B4.c` | -| 523 | func_801874E8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801874E8.c` | -| 524 | func_80183320 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80183320.c` | -| 525 | func_801857D4 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801857D4.c` | -| 526 | func_8018A184 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018A184.c` | -| 527 | func_8018B234 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018B234.c` | -| 528 | func_8017F534 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017F534.c` | -| 529 | func_801861DC | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801861DC.c` | -| 530 | func_801896EC | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801896EC.c` | -| 531 | func_80184CD8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80184CD8.c` | -| 532 | func_8018C7C8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018C7C8.c` | -| 533 | func_80187B80 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80187B80.c` | -| 534 | func_80181060 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80181060.c` | -| 535 | func_801806C8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801806C8.c` | -| 536 | func_8018CA10 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018CA10.c` | -| 537 | func_8018672C | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018672C.c` | -| 538 | func_801894B0 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801894B0.c` | -| 539 | func_80184D98 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80184D98.c` | -| 540 | func_8018B1E0 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018B1E0.c` | -| 541 | func_80184870 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80184870.c` | -| 542 | func_8017E6B0 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017E6B0.c` | -| 543 | func_801549F8 | None | schedule | None | near | 3 | 3-off at -O2 (match_one + gate flags). The n=byte keep-alive copy (addu $a3,$v0,$zero) emits BEFORE the hoisted jtbl (lui/addiu $t0); target emits it AFTER. Pure RTL emission order — a preheader source-statement is always chained before a hoisted loop-invariant, and gcc-2.7.2-psx runs no active delay-slot/list scheduler here (load-delay nops stay unfilled) to reorder them. Not reachable by any source reordering tried (~20 forms). The instruction itself is byte-identical; only its position among 3 independent preheader insns differs. Permuter can't run (pycparser rejects the register __asm__ pin) -> human/RTL-level lever needed. | `.run/backlog_drafts/func_801549F8.c` | -| 544 | func_80188484 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80188484.c` | -| 545 | func_8017F8E4 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017F8E4.c` | -| 546 | func_80187074 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80187074.c` | -| 547 | func_8017FF90 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017FF90.c` | -| 548 | func_8017FAE0 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017FAE0.c` | -| 549 | func_8017E918 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017E918.c` | -| 550 | func_80180ED4 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80180ED4.c` | -| 551 | func_80183444 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80183444.c` | -| 552 | func_80186700 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80186700.c` | -| 553 | func_8017E004 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017E004.c` | -| 554 | func_80183710 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80183710.c` | -| 555 | func_80181CD8 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80181CD8.c` | -| 556 | func_80184880 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80184880.c` | -| 557 | func_8018CC04 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018CC04.c` | -| 558 | func_8017DED8 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017DED8.c` | -| 559 | func_80181ECC | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80181ECC.c` | -| 560 | func_80182E5C | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80182E5C.c` | -| 561 | func_8018B2F4 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018B2F4.c` | -| 562 | func_80183638 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80183638.c` | -| 563 | func_8018455C | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018455C.c` | -| 564 | func_80181B08 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80181B08.c` | -| 565 | func_801823F0 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_801823F0.c` | -| 566 | func_80188510 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80188510.c` | -| 567 | func_80181A44 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80181A44.c` | -| 568 | func_80182CD4 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80182CD4.c` | -| 569 | func_8018119C | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018119C.c` | -| 570 | func_8018C394 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018C394.c` | -| 571 | func_80135260 | 1 | other | 136 | near | 5 | none — MATCH | `.run/backlog_drafts/func_80135260.c` | -| 572 | func_801803F0 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801803F0.c` | -| 573 | func_80180710 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80180710.c` | -| 574 | func_8017F7D8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F7D8.c` | -| 575 | func_80181B8C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80181B8C.c` | -| 576 | func_80180564 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80180564.c` | -| 577 | func_801809F4 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801809F4.c` | -| 578 | func_8017F250 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F250.c` | -| 579 | func_8017F66C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F66C.c` | -| 580 | func_8017F76C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F76C.c` | -| 581 | func_80181E18 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80181E18.c` | -| 582 | func_801852C8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801852C8.c` | -| 583 | func_80180100 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80180100.c` | -| 584 | func_80181EF0 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80181EF0.c` | -| 585 | func_801821B8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801821B8.c` | -| 586 | func_8018312C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8018312C.c` | -| 587 | func_8018DA98 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8018DA98.c` | -| 588 | func_8017F11C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F11C.c` | -| 589 | func_80182810 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80182810.c` | -| 590 | func_8017FDA8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017FDA8.c` | -| 591 | func_80182938 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80182938.c` | -| 592 | func_8018517C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8018517C.c` | -| 593 | func_80182B18 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80182B18.c` | -| 594 | func_8017DA90 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017DA90.c` | -| 595 | func_80181BB4 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80181BB4.c` | -| 596 | func_801869E0 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801869E0.c` | -| 597 | func_80185338 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80185338.c` | -| 598 | func_80185978 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80185978.c` | -| 599 | func_80183904 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80183904.c` | -| 600 | func_80185E54 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80185E54.c` | -| 601 | func_80187DAC | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80187DAC.c` | -| 602 | func_80183DB8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80183DB8.c` | -| 603 | func_80180AE8 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80180AE8.c` | -| 604 | func_8017D398 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017D398.c` | -| 605 | func_80184A58 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80184A58.c` | -| 606 | func_80182280 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80182280.c` | -| 607 | func_80180744 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80180744.c` | -| 608 | func_8017FA64 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017FA64.c` | -| 609 | func_8017EB58 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017EB58.c` | -| 610 | func_8017F4CC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017F4CC.c` | -| 611 | func_8017D624 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017D624.c` | -| 612 | func_80181C78 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80181C78.c` | -| 613 | func_801855DC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801855DC.c` | -| 614 | func_8017FCD4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017FCD4.c` | -| 615 | func_80183158 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80183158.c` | -| 616 | func_80182E2C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80182E2C.c` | -| 617 | func_8017F704 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017F704.c` | -| 618 | func_80185C20 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80185C20.c` | -| 619 | func_8017E06C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017E06C.c` | -| 620 | func_8017FA20 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017FA20.c` | -| 621 | func_80187AD4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80187AD4.c` | -| 622 | func_8018595C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8018595C.c` | -| 623 | func_8018423C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8018423C.c` | -| 624 | func_80185B20 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80185B20.c` | -| 625 | func_80181BD8 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80181BD8.c` | -| 626 | func_801802CC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801802CC.c` | -| 627 | func_8017E2C4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017E2C4.c` | -| 628 | func_80185A8C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80185A8C.c` | -| 629 | func_8017F0EC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017F0EC.c` | -| 630 | func_80180FFC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80180FFC.c` | -| 631 | func_8017DFFC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017DFFC.c` | -| 632 | func_80188F80 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80188F80.c` | -| 633 | func_8017F088 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017F088.c` | -| 634 | func_801805D8 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801805D8.c` | -| 635 | func_80181FF4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80181FF4.c` | -| 636 | func_80189240 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80189240.c` | -| 637 | func_80184618 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80184618.c` | -| 638 | func_8018413C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8018413C.c` | -| 639 | func_801816E0 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801816E0.c` | -| 640 | func_801811F0 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801811F0.c` | -| 641 | func_801819A0 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801819A0.c` | -| 642 | func_8018A698 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8018A698.c` | -| 643 | func_801855F0 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801855F0.c` | -| 644 | func_8017ED3C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017ED3C.c` | -| 645 | func_8017ECB4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017ECB4.c` | -| 646 | func_80182048 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80182048.c` | -| 647 | func_80181230 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80181230.c` | -| 648 | func_801810BC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801810BC.c` | -| 649 | func_80186A28 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80186A28.c` | -| 650 | func_80186A88 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80186A88.c` | -| 651 | func_80180F4C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80180F4C.c` | -| 652 | func_80186C88 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80186C88.c` | -| 653 | func_80182988 | None | loose-typing | None | near | 6 | none — MATCH (0x5c store must be unsigned short so 0xaa10 stays +43536 → ori, not addiu/sign-extend) | `.run/backlog_drafts/func_80182988.c` | -| 654 | func_801815D8 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_801815D8.c` | -| 655 | func_80189898 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80189898.c` | -| 656 | func_8017CF40 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017CF40.c` | -| 657 | func_8017FF6C | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017FF6C.c` | -| 658 | func_8017DB84 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017DB84.c` | -| 659 | func_8018B184 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018B184.c` | -| 660 | func_80182198 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80182198.c` | -| 661 | func_8018B5C0 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018B5C0.c` | -| 662 | func_80180458 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80180458.c` | -| 663 | func_8018D7CC | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018D7CC.c` | -| 664 | func_80185C6C | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80185C6C.c` | -| 665 | func_8018B450 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018B450.c` | -| 666 | func_8018146C | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018146C.c` | -| 667 | func_8017C104 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017C104.c` | -| 668 | func_80186D5C | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80186D5C.c` | -| 669 | func_80185AEC | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80185AEC.c` | -| 670 | func_80180410 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80180410.c` | -| 671 | func_80185DB8 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80185DB8.c` | -| 672 | func_80180754 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80180754.c` | -| 673 | func_80186720 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80186720.c` | -| 674 | func_8017EA60 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017EA60.c` | -| 675 | func_8017F710 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017F710.c` | -| 676 | func_80184990 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80184990.c` | -| 677 | func_80185344 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80185344.c` | -| 678 | func_801828DC | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_801828DC.c` | -| 679 | func_80184688 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80184688.c` | -| 680 | func_80182230 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80182230.c` | -| 681 | func_80183184 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80183184.c` | -| 682 | func_80185F24 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80185F24.c` | -| 683 | func_80189858 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80189858.c` | -| 684 | func_8017FFF0 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017FFF0.c` | -| 685 | func_8017E908 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017E908.c` | -| 686 | func_8017CF9C | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017CF9C.c` | -| 687 | func_8017D8AC | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017D8AC.c` | -| 688 | func_801832B0 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801832B0.c` | -| 689 | func_801813B8 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801813B8.c` | -| 690 | func_80184734 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80184734.c` | -| 691 | func_801825C8 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801825C8.c` | -| 692 | func_80182A5C | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80182A5C.c` | -| 693 | func_80182E30 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80182E30.c` | -| 694 | func_80183430 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80183430.c` | -| 695 | func_80186120 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80186120.c` | -| 696 | func_8018108C | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8018108C.c` | -| 697 | func_801848B0 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801848B0.c` | -| 698 | func_80181688 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80181688.c` | -| 699 | func_80181034 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80181034.c` | -| 700 | func_80188508 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80188508.c` | -| 701 | func_80187370 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80187370.c` | -| 702 | func_8018D330 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8018D330.c` | -| 703 | func_80186A70 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80186A70.c` | -| 704 | func_8017DBE4 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017DBE4.c` | -| 705 | func_8017F474 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017F474.c` | -| 706 | func_8017E804 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017E804.c` | -| 707 | func_80182D50 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80182D50.c` | -| 708 | func_801843B8 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801843B8.c` | -| 709 | func_80183D60 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80183D60.c` | -| 710 | func_80181C84 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80181C84.c` | -| 711 | func_801842D4 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801842D4.c` | -| 712 | func_80185EB4 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80185EB4.c` | -| 713 | func_80188690 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80188690.c` | -| 714 | func_80185F20 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80185F20.c` | -| 715 | func_80183FD8 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80183FD8.c` | -| 716 | func_8018F658 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8018F658.c` | -| 717 | func_8017F228 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017F228.c` | -| 718 | func_801801F4 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801801F4.c` | -| 719 | func_8017F358 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017F358.c` | -| 720 | func_80180E9C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180E9C.c` | -| 721 | func_8017BEBC | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017BEBC.c` | -| 722 | func_80180854 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180854.c` | -| 723 | func_80180E54 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180E54.c` | -| 724 | func_8017F7F4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017F7F4.c` | -| 725 | func_8017EF28 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017EF28.c` | -| 726 | func_801816E4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801816E4.c` | -| 727 | func_8017D400 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017D400.c` | -| 728 | func_8017D6E8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017D6E8.c` | -| 729 | func_8017E4F8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017E4F8.c` | -| 730 | func_801829F4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801829F4.c` | -| 731 | func_801822A8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801822A8.c` | -| 732 | func_8017E954 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017E954.c` | -| 733 | func_80181F84 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80181F84.c` | -| 734 | func_801827FC | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801827FC.c` | -| 735 | func_8017FE88 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017FE88.c` | -| 736 | func_801806B8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801806B8.c` | -| 737 | func_80180EC0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180EC0.c` | -| 738 | func_80181C4C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80181C4C.c` | -| 739 | func_801817A4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801817A4.c` | -| 740 | func_8017E52C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017E52C.c` | -| 741 | func_801805B0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801805B0.c` | -| 742 | func_8018897C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018897C.c` | -| 743 | func_8018AA88 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018AA88.c` | -| 744 | func_8017FED4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017FED4.c` | -| 745 | func_801835F0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801835F0.c` | -| 746 | func_8017CCD4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017CCD4.c` | -| 747 | func_801858C4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801858C4.c` | -| 748 | func_8018C310 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018C310.c` | -| 749 | func_80182AD4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80182AD4.c` | -| 750 | func_8018868C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018868C.c` | -| 751 | func_8017F624 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017F624.c` | -| 752 | func_8017FEB4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017FEB4.c` | -| 753 | func_80182298 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80182298.c` | -| 754 | func_80187114 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80187114.c` | -| 755 | func_80184590 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80184590.c` | -| 756 | func_80186B08 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80186B08.c` | -| 757 | func_80181B34 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80181B34.c` | -| 758 | func_801860F8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801860F8.c` | -| 759 | func_8017FFD8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017FFD8.c` | -| 760 | func_80188BF8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80188BF8.c` | -| 761 | func_80183BD0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80183BD0.c` | -| 762 | func_801860F4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801860F4.c` | -| 763 | func_80183628 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80183628.c` | -| 764 | func_8018964C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018964C.c` | -| 765 | func_801854C8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801854C8.c` | -| 766 | func_80184664 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80184664.c` | -| 767 | func_80185528 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80185528.c` | -| 768 | func_80187454 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80187454.c` | -| 769 | func_8017F7BC | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017F7BC.c` | -| 770 | func_801830C8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801830C8.c` | -| 771 | func_8017D4F0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017D4F0.c` | -| 772 | func_801825E8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801825E8.c` | -| 773 | func_8018C3EC | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018C3EC.c` | -| 774 | func_80183C1C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80183C1C.c` | -| 775 | func_80180C3C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180C3C.c` | -| 776 | func_80191C50 | None | schedule | None | near | 9 | close=9 — only the case-7 sp20[] setup window (0x80192380..0x801923A4): gcc's list scheduler picks the D_80126B62 lui 2nd (its extra `addiu -0x38` gives that chain +1 priority) where the target picks D_80126B66 2nd (LUID/program order); everything else (710/710 ins, frame 0x40, $s0/$s1, jtbl, 3 entity loops, 8 sync blocks, cross-jumped L4AC tail) is byte-identical. | `.run/backlog_drafts/func_80191C50.c` | -| 777 | func_80185A00 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185A00.c` | -| 778 | func_8017FCC0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017FCC0.c` | -| 779 | func_8017F2D0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F2D0.c` | -| 780 | func_801833C8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801833C8.c` | -| 781 | func_8017FFD0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017FFD0.c` | -| 782 | func_80180E34 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180E34.c` | -| 783 | func_801844C4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801844C4.c` | -| 784 | func_8018AB24 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018AB24.c` | -| 785 | func_80188C84 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80188C84.c` | -| 786 | func_8017E184 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017E184.c` | -| 787 | func_80181434 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80181434.c` | -| 788 | func_80181A70 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80181A70.c` | -| 789 | func_8017DF88 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017DF88.c` | -| 790 | func_801841D0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801841D0.c` | -| 791 | func_80184204 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80184204.c` | -| 792 | func_8018534C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018534C.c` | -| 793 | func_80184940 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80184940.c` | -| 794 | func_80180B60 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180B60.c` | -| 795 | func_8017FB0C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017FB0C.c` | -| 796 | func_8017E72C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017E72C.c` | -| 797 | func_80189C4C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80189C4C.c` | -| 798 | func_8017E670 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017E670.c` | -| 799 | func_80180014 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180014.c` | -| 800 | func_80180B90 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180B90.c` | -| 801 | func_801848E8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801848E8.c` | -| 802 | func_8017E094 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017E094.c` | -| 803 | func_8018082C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018082C.c` | -| 804 | func_8018373C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018373C.c` | -| 805 | func_8017DF48 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017DF48.c` | -| 806 | func_80182724 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80182724.c` | -| 807 | func_8018257C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018257C.c` | -| 808 | func_80182EC0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80182EC0.c` | -| 809 | func_80188E8C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80188E8C.c` | -| 810 | func_801806E0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801806E0.c` | -| 811 | func_8018A5A4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018A5A4.c` | -| 812 | func_80181AC0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80181AC0.c` | -| 813 | func_801841A0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801841A0.c` | -| 814 | func_80183744 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80183744.c` | -| 815 | func_8018924C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018924C.c` | -| 816 | func_80185778 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185778.c` | -| 817 | func_801870B4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801870B4.c` | -| 818 | func_80185E3C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185E3C.c` | -| 819 | func_8017F5E8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F5E8.c` | -| 820 | func_801823D4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801823D4.c` | -| 821 | func_80186EE4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80186EE4.c` | -| 822 | func_80180AF4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180AF4.c` | -| 823 | func_801831FC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801831FC.c` | -| 824 | func_801862D4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801862D4.c` | -| 825 | func_80184578 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80184578.c` | -| 826 | func_8017F804 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F804.c` | -| 827 | func_80183888 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80183888.c` | -| 828 | func_8017F2EC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F2EC.c` | -| 829 | func_80187224 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80187224.c` | -| 830 | func_801850F8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801850F8.c` | -| 831 | func_80183F7C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80183F7C.c` | -| 832 | func_801800DC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801800DC.c` | -| 833 | func_80182190 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80182190.c` | -| 834 | func_80185C90 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185C90.c` | -| 835 | func_80182380 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80182380.c` | -| 836 | func_8018EDB8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018EDB8.c` | -| 837 | func_80190298 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80190298.c` | -| 838 | func_8018311C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018311C.c` | -| 839 | func_8018A594 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018A594.c` | -| 840 | func_8017DED0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017DED0.c` | -| 841 | func_8018228C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018228C.c` | -| 842 | func_80188738 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80188738.c` | -| 843 | func_801889E0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801889E0.c` | -| 844 | func_8017DEEC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017DEEC.c` | -| 845 | func_80183FAC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80183FAC.c` | -| 846 | func_8017F300 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F300.c` | -| 847 | func_80184794 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80184794.c` | -| 848 | func_80185648 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185648.c` | -| 849 | func_80186D64 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80186D64.c` | -| 850 | func_8018151C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018151C.c` | -| 851 | func_8016E9EC | 1 | schedule | 53 | near | 11 | 11 left — all GNU scheduler/canon tie-breaks (regs all match via pins): (a) prologue hoists `addiu a1,0x1C` into the save block; (b) first lbu reads $a0 not $s1 (incoming-arg still live); (c) iCopy copy `addu s4,s0` lands early (scheduler) vs target's func_800D2CA8 delay-slot; (d) `addu a2,s2,s3` vs target `s3,s2` commutative-canon (unflippable w/o breaking load order). Permuter can't run (register __asm__ pins rejected, cookbook §5a). | `.run/backlog_drafts/func_8016E9EC.c` | -| 852 | func_8017F7E8 | 1 | WAVE | 177 | near | 11 | WAVE: 11 mismatch | `.run/backlog_drafts/func_8017F7E8.c` | -| 853 | func_801824D0 | 1 | WAVE | 181 | near | 11 | WAVE: 11 mismatch | `.run/backlog_drafts/func_801824D0.c` | -| 854 | func_80182F4C | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80182F4C.c` | -| 855 | func_801835C8 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_801835C8.c` | -| 856 | func_8017D6C4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017D6C4.c` | -| 857 | func_80181960 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80181960.c` | -| 858 | func_8017D7C8 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017D7C8.c` | -| 859 | func_8017F67C | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017F67C.c` | -| 860 | func_80181724 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80181724.c` | -| 861 | func_8017F450 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017F450.c` | -| 862 | func_8017F128 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017F128.c` | -| 863 | func_80180154 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80180154.c` | -| 864 | func_80180240 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80180240.c` | -| 865 | func_80185274 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80185274.c` | -| 866 | func_801833D4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_801833D4.c` | -| 867 | func_80184028 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80184028.c` | -| 868 | func_80180EA8 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80180EA8.c` | -| 869 | func_8018F91C | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8018F91C.c` | -| 870 | func_801835F4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_801835F4.c` | -| 871 | func_80187404 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80187404.c` | -| 872 | func_801848B4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_801848B4.c` | -| 873 | func_8017E5D4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017E5D4.c` | -| 874 | func_80182118 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80182118.c` | -| 875 | func_8017E2C0 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017E2C0.c` | -| 876 | func_80181744 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80181744.c` | -| 877 | func_8017EECC | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017EECC.c` | -| 878 | func_80182F78 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80182F78.c` | -| 879 | func_8017F154 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017F154.c` | -| 880 | func_8017DC94 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017DC94.c` | -| 881 | func_80180CD0 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80180CD0.c` | -| 882 | func_8013C964 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8013C964.c` | -| 883 | func_8013B568 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8013B568.c` | -| 884 | func_8018150C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018150C.c` | -| 885 | func_801803A4 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801803A4.c` | -| 886 | func_8017D7F8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017D7F8.c` | -| 887 | func_8017FFFC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017FFFC.c` | -| 888 | func_8018766C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018766C.c` | -| 889 | func_8017DFF8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017DFF8.c` | -| 890 | func_8017D08C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017D08C.c` | -| 891 | func_8017DE40 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017DE40.c` | -| 892 | func_8017DBD8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017DBD8.c` | -| 893 | func_801833BC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801833BC.c` | -| 894 | func_8017F574 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017F574.c` | -| 895 | func_80187344 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80187344.c` | -| 896 | func_80183AC8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80183AC8.c` | -| 897 | func_80181C08 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80181C08.c` | -| 898 | func_801822C8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801822C8.c` | -| 899 | func_80181388 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80181388.c` | -| 900 | func_80185C2C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80185C2C.c` | -| 901 | func_80183BEC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80183BEC.c` | -| 902 | func_801846EC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801846EC.c` | -| 903 | func_80184DB4 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80184DB4.c` | -| 904 | func_8018AE08 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018AE08.c` | -| 905 | func_80184698 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80184698.c` | -| 906 | func_80184718 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80184718.c` | -| 907 | func_8018134C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018134C.c` | -| 908 | func_8017F4BC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017F4BC.c` | -| 909 | func_80181070 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80181070.c` | -| 910 | func_801810A4 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801810A4.c` | -| 911 | func_801810D8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801810D8.c` | -| 912 | func_801819CC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801819CC.c` | -| 913 | func_80180554 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80180554.c` | -| 914 | func_80181E5C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80181E5C.c` | -| 915 | func_80189DDC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80189DDC.c` | -| 916 | func_8018ABE0 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018ABE0.c` | -| 917 | func_80189A60 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80189A60.c` | -| 918 | func_8018278C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018278C.c` | -| 919 | func_801827C0 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801827C0.c` | -| 920 | func_80186A58 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80186A58.c` | -| 921 | func_8017F2BC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017F2BC.c` | -| 922 | func_8017DEA4 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017DEA4.c` | -| 923 | func_8017F184 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017F184.c` | -| 924 | func_80185F58 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80185F58.c` | -| 925 | func_8018A3C8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8018A3C8.c` | -| 926 | func_8017EA20 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017EA20.c` | -| 927 | func_80180528 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80180528.c` | -| 928 | func_80180BCC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80180BCC.c` | -| 929 | func_801818EC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801818EC.c` | -| 930 | func_8017DA3C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017DA3C.c` | -| 931 | func_8017EDA8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017EDA8.c` | -| 932 | func_801816CC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801816CC.c` | -| 933 | func_8017D914 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D914.c` | -| 934 | func_801828A8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801828A8.c` | -| 935 | func_8017FD58 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017FD58.c` | -| 936 | func_8017F830 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017F830.c` | -| 937 | func_801807B8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801807B8.c` | -| 938 | func_8018276C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8018276C.c` | -| 939 | func_80183AF8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80183AF8.c` | -| 940 | func_801858D0 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801858D0.c` | -| 941 | func_80180C34 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80180C34.c` | -| 942 | func_80182D3C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80182D3C.c` | -| 943 | func_8018BDA4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8018BDA4.c` | -| 944 | func_8017C8E4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017C8E4.c` | -| 945 | func_80186D30 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80186D30.c` | -| 946 | func_80182D6C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80182D6C.c` | -| 947 | func_8017E84C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017E84C.c` | -| 948 | func_8017F094 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017F094.c` | -| 949 | func_8017F0D8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017F0D8.c` | -| 950 | func_8017D670 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D670.c` | -| 951 | func_8017D3BC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D3BC.c` | -| 952 | func_8017E358 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017E358.c` | -| 953 | func_80180420 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80180420.c` | -| 954 | func_8017CFE4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017CFE4.c` | -| 955 | func_8017E35C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017E35C.c` | -| 956 | func_801834E4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801834E4.c` | -| 957 | func_801811B4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801811B4.c` | -| 958 | func_8017D0D4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D0D4.c` | -| 959 | func_8017E060 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017E060.c` | -| 960 | func_8017D0F4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D0F4.c` | -| 961 | func_8017DEC4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017DEC4.c` | -| 962 | func_801811DC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801811DC.c` | -| 963 | func_8017D6A4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D6A4.c` | -| 964 | func_8017D348 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D348.c` | -| 965 | func_8017CDBC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017CDBC.c` | -| 966 | func_80187BAC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80187BAC.c` | -| 967 | func_8017D224 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D224.c` | -| 968 | func_80161CD0 | 1 | regalloc-order | 20 | near | 14 | param_2 must survive the call in $s0; try plain C first then pin to $16 | `.run/backlog_drafts/func_80161CD0.c` | -| 969 | func_80180D10 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80180D10.c` | -| 970 | func_8018316C | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8018316C.c` | -| 971 | func_8017E808 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017E808.c` | -| 972 | func_8017EDC4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017EDC4.c` | -| 973 | func_80180654 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80180654.c` | -| 974 | func_8017C6F4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017C6F4.c` | -| 975 | func_8017E4F0 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017E4F0.c` | -| 976 | func_8018B2DC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8018B2DC.c` | -| 977 | func_80183398 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80183398.c` | -| 978 | func_801812F0 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801812F0.c` | -| 979 | func_80181468 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181468.c` | -| 980 | func_80184384 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80184384.c` | -| 981 | func_8018A934 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8018A934.c` | -| 982 | func_8018B50C | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8018B50C.c` | -| 983 | func_80182844 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80182844.c` | -| 984 | func_801884AC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801884AC.c` | -| 985 | func_80181B90 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181B90.c` | -| 986 | func_80185F98 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80185F98.c` | -| 987 | func_80185EEC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80185EEC.c` | -| 988 | func_80186DE8 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80186DE8.c` | -| 989 | func_801838EC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801838EC.c` | -| 990 | func_80182348 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80182348.c` | -| 991 | func_80185CD4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80185CD4.c` | -| 992 | func_801892C0 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801892C0.c` | -| 993 | func_801859E4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801859E4.c` | -| 994 | func_80184B70 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80184B70.c` | -| 995 | func_801871C4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801871C4.c` | -| 996 | func_80189504 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80189504.c` | -| 997 | func_8017C918 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017C918.c` | -| 998 | func_80181DC4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181DC4.c` | -| 999 | func_8017D63C | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017D63C.c` | -| 1000 | func_801813F0 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801813F0.c` | -| 1001 | func_80181F6C | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181F6C.c` | -| 1002 | func_8017EA04 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017EA04.c` | -| 1003 | func_8017EF68 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017EF68.c` | -| 1004 | func_8017EBA8 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017EBA8.c` | -| 1005 | func_80185404 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80185404.c` | -| 1006 | func_8017D7C4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017D7C4.c` | -| 1007 | func_80181CBC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181CBC.c` | -| 1008 | func_8017D974 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017D974.c` | -| 1009 | func_80180950 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80180950.c` | -| 1010 | func_80181784 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181784.c` | -| 1011 | func_8017FFE8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017FFE8.c` | -| 1012 | func_80183DC4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80183DC4.c` | -| 1013 | func_801820F0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_801820F0.c` | -| 1014 | func_8018B0EC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8018B0EC.c` | -| 1015 | func_801803F4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_801803F4.c` | -| 1016 | func_8017E818 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E818.c` | -| 1017 | func_80181B0C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181B0C.c` | -| 1018 | func_80184010 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80184010.c` | -| 1019 | func_8018648C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8018648C.c` | -| 1020 | func_8017F138 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F138.c` | -| 1021 | func_8017D9B8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D9B8.c` | -| 1022 | func_8017F3C0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F3C0.c` | -| 1023 | func_80180DB0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80180DB0.c` | -| 1024 | func_8017E290 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E290.c` | -| 1025 | func_8017EDC8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017EDC8.c` | -| 1026 | func_80181A94 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181A94.c` | -| 1027 | func_8017E318 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E318.c` | -| 1028 | func_80181B44 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181B44.c` | -| 1029 | func_8017D1B4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D1B4.c` | -| 1030 | func_8017E778 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E778.c` | -| 1031 | func_80180D5C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80180D5C.c` | -| 1032 | func_8017CDB8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CDB8.c` | -| 1033 | func_8017CE20 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CE20.c` | -| 1034 | func_8017CE40 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CE40.c` | -| 1035 | func_8017D220 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D220.c` | -| 1036 | func_8017E89C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E89C.c` | -| 1037 | func_8017E8DC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E8DC.c` | -| 1038 | func_80183718 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80183718.c` | -| 1039 | func_8017EB1C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017EB1C.c` | -| 1040 | func_80181028 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181028.c` | -| 1041 | func_8017DACC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DACC.c` | -| 1042 | func_8018533C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8018533C.c` | -| 1043 | func_8017D104 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D104.c` | -| 1044 | func_8017F268 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F268.c` | -| 1045 | func_8017F120 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F120.c` | -| 1046 | func_80185A68 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80185A68.c` | -| 1047 | func_8017CE48 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CE48.c` | -| 1048 | func_8017CEB0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CEB0.c` | -| 1049 | func_80180E88 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80180E88.c` | -| 1050 | func_801801C4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_801801C4.c` | -| 1051 | func_8017CEEC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CEEC.c` | -| 1052 | func_8017CDDC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CDDC.c` | -| 1053 | func_8017DDD8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DDD8.c` | -| 1054 | func_8017DD9C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DD9C.c` | -| 1055 | func_8017DF80 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DF80.c` | -| 1056 | func_8017D49C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D49C.c` | -| 1057 | func_8017F5E0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F5E0.c` | -| 1058 | func_8017DFCC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DFCC.c` | -| 1059 | func_80181C1C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181C1C.c` | -| 1060 | func_8017D22C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D22C.c` | -| 1061 | func_8018338C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8018338C.c` | -| 1062 | func_8017EEB8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017EEB8.c` | -| 1063 | func_8017E9F4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E9F4.c` | -| 1064 | func_8017E6CC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E6CC.c` | -| 1065 | func_8017F3A8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F3A8.c` | -| 1066 | func_8017D040 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D040.c` | -| 1067 | func_8017E7AC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E7AC.c` | -| 1068 | func_8017E304 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E304.c` | -| 1069 | func_8017D084 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D084.c` | -| 1070 | func_8017D19C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D19C.c` | -| 1071 | func_8017E700 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E700.c` | -| 1072 | func_8013C938 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8013C938.c` | -| 1073 | func_8017E0F0 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017E0F0.c` | -| 1074 | func_8017E7D8 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017E7D8.c` | -| 1075 | func_80183988 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80183988.c` | -| 1076 | func_80184154 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80184154.c` | -| 1077 | func_80182D78 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80182D78.c` | -| 1078 | func_80183074 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80183074.c` | -| 1079 | func_80184EA4 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80184EA4.c` | -| 1080 | func_8017F920 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017F920.c` | -| 1081 | func_80180EDC | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80180EDC.c` | -| 1082 | func_80187A8C | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80187A8C.c` | -| 1083 | func_8017F1F8 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017F1F8.c` | -| 1084 | func_8017EC84 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017EC84.c` | -| 1085 | func_8017E9CC | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017E9CC.c` | -| 1086 | func_8017EAE0 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017EAE0.c` | -| 1087 | func_80186984 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80186984.c` | -| 1088 | func_8017F414 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017F414.c` | -| 1089 | func_8017E090 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017E090.c` | -| 1090 | func_801853F8 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_801853F8.c` | -| 1091 | func_8017F20C | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017F20C.c` | -| 1092 | func_80182654 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80182654.c` | -| 1093 | func_8017CDE4 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017CDE4.c` | -| 1094 | func_8017DFAC | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017DFAC.c` | -| 1095 | func_8017EF1C | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017EF1C.c` | -| 1096 | func_8017EEF4 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017EEF4.c` | -| 1097 | func_8017E814 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017E814.c` | -| 1098 | func_80184EE0 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80184EE0.c` | -| 1099 | func_8017FA44 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017FA44.c` | -| 1100 | func_80182D1C | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80182D1C.c` | -| 1101 | func_8018384C | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8018384C.c` | -| 1102 | func_8017E950 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017E950.c` | -| 1103 | func_8017CDD8 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017CDD8.c` | -| 1104 | func_80180890 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80180890.c` | -| 1105 | func_8017D5F8 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017D5F8.c` | -| 1106 | func_80180D74 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80180D74.c` | -| 1107 | func_8017F568 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017F568.c` | -| 1108 | func_80180D14 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80180D14.c` | -| 1109 | func_80183C58 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80183C58.c` | -| 1110 | func_8018208C | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8018208C.c` | -| 1111 | func_8017FD6C | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017FD6C.c` | -| 1112 | func_801877DC | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_801877DC.c` | -| 1113 | func_8017D010 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017D010.c` | -| 1114 | func_8017D84C | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017D84C.c` | -| 1115 | func_8017BF34 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017BF34.c` | -| 1116 | func_8017DA10 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017DA10.c` | -| 1117 | func_80189630 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80189630.c` | -| 1118 | func_80184630 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80184630.c` | -| 1119 | func_80185334 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80185334.c` | -| 1120 | func_8017DDB0 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017DDB0.c` | -| 1121 | func_8017E850 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017E850.c` | -| 1122 | func_8017DCF4 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017DCF4.c` | -| 1123 | func_8017D988 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017D988.c` | -| 1124 | func_80182E38 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80182E38.c` | -| 1125 | func_80183138 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80183138.c` | -| 1126 | func_80180B54 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80180B54.c` | -| 1127 | func_8017DC2C | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017DC2C.c` | -| 1128 | func_8017D600 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017D600.c` | -| 1129 | func_8017F6C4 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017F6C4.c` | -| 1130 | func_8017E9E4 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017E9E4.c` | -| 1131 | func_801827D4 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_801827D4.c` | -| 1132 | func_80185888 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80185888.c` | -| 1133 | func_80180574 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80180574.c` | -| 1134 | func_80183F1C | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80183F1C.c` | -| 1135 | func_8017FFCC | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017FFCC.c` | -| 1136 | func_80182344 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80182344.c` | -| 1137 | func_801811F4 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_801811F4.c` | -| 1138 | func_80180DB8 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80180DB8.c` | -| 1139 | func_8017D184 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017D184.c` | -| 1140 | func_8017F160 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017F160.c` | -| 1141 | func_8017F4D0 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017F4D0.c` | -| 1142 | func_8018033C | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8018033C.c` | -| 1143 | func_80181138 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80181138.c` | -| 1144 | func_8017E048 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017E048.c` | -| 1145 | func_8017F3BC | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017F3BC.c` | -| 1146 | func_80180DEC | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80180DEC.c` | -| 1147 | func_801845B4 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_801845B4.c` | -| 1148 | func_80181C74 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80181C74.c` | -| 1149 | func_80182234 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80182234.c` | -| 1150 | func_8017FF30 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017FF30.c` | -| 1151 | func_80185288 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80185288.c` | -| 1152 | func_8017E890 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017E890.c` | -| 1153 | func_8017D174 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017D174.c` | -| 1154 | func_8017CD9C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017CD9C.c` | -| 1155 | func_8018555C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8018555C.c` | -| 1156 | func_801826EC | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_801826EC.c` | -| 1157 | func_8017DB00 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017DB00.c` | -| 1158 | func_80181054 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_80181054.c` | -| 1159 | func_8017F87C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017F87C.c` | -| 1160 | func_8017D704 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017D704.c` | -| 1161 | func_80180AD8 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_80180AD8.c` | -| 1162 | func_8018774C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8018774C.c` | -| 1163 | func_8017DE7C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017DE7C.c` | -| 1164 | func_8017FA00 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017FA00.c` | -| 1165 | func_8018B6F4 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8018B6F4.c` | -| 1166 | func_8017EEC8 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017EEC8.c` | -| 1167 | func_8017E134 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017E134.c` | -| 1168 | func_8017C6B8 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017C6B8.c` | -| 1169 | func_801871E8 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_801871E8.c` | -| 1170 | func_80188668 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_80188668.c` | -| 1171 | func_8017DB44 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017DB44.c` | -| 1172 | func_80187050 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_80187050.c` | -| 1173 | func_8017DD18 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017DD18.c` | -| 1174 | func_8018288C | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8018288C.c` | -| 1175 | func_8017E1C8 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017E1C8.c` | -| 1176 | func_8017D308 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017D308.c` | -| 1177 | func_8017EAC8 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017EAC8.c` | -| 1178 | func_8017D8B0 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017D8B0.c` | -| 1179 | func_8017F080 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017F080.c` | -| 1180 | func_8017CD14 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017CD14.c` | -| 1181 | func_80180548 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_80180548.c` | -| 1182 | func_8017DE78 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017DE78.c` | -| 1183 | func_80185A18 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80185A18.c` | -| 1184 | func_8017D990 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017D990.c` | -| 1185 | func_8017FF2C | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017FF2C.c` | -| 1186 | func_801803E0 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_801803E0.c` | -| 1187 | func_8017D828 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017D828.c` | -| 1188 | func_80180E18 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80180E18.c` | -| 1189 | func_8017DC08 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017DC08.c` | -| 1190 | func_80184388 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80184388.c` | -| 1191 | func_80187C64 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80187C64.c` | -| 1192 | func_8018A030 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8018A030.c` | -| 1193 | func_8017D688 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017D688.c` | -| 1194 | func_8017FA90 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017FA90.c` | -| 1195 | func_8017F320 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017F320.c` | -| 1196 | func_801813AC | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_801813AC.c` | -| 1197 | func_80181478 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80181478.c` | -| 1198 | func_801868E0 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_801868E0.c` | -| 1199 | func_8018AB74 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8018AB74.c` | -| 1200 | func_8017DE70 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017DE70.c` | -| 1201 | func_8013BC7C | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8013BC7C.c` | -| 1202 | func_8018A640 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8018A640.c` | -| 1203 | func_8012E364 | 1 | regalloc-order | 67 | near | 23 | 23/67 masked. Structure+idioms exact (barrier fixes the late D9498 load; k=0x1000 CSE'd into $a3 hoisted to the blez delay slot; 6 register pins land arg/$a2, k/$a3, D9498/$v1, temp_a1/$a1, var_v0(_2)/$v0). Residual is the discontinuous q<->temp_v0 reuse chain (q reuses $v0 but target puts it in $a0 reusing x's dead reg; every whole-function pin that forces q->$a0 chains hi>>5 or var_v0 wrong) + 2nd-half schedule (0x2C lhu interleaved before the +k addu; the abs copies temp_v1->$v0 via addu-move). Permuter-class (register renaming) but pins block pycparser -> hand/human finish. | `.run/backlog_drafts/func_8012E364.c` | -| 1204 | func_8017E5A0 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017E5A0.c` | -| 1205 | func_8017DC54 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017DC54.c` | -| 1206 | func_8017F480 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017F480.c` | -| 1207 | func_8017EF7C | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017EF7C.c` | -| 1208 | func_80182FF0 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_80182FF0.c` | -| 1209 | func_80182EE8 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_80182EE8.c` | -| 1210 | func_8017E240 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017E240.c` | -| 1211 | func_8017CE94 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017CE94.c` | -| 1212 | func_8017D2A4 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017D2A4.c` | -| 1213 | func_8017FAC8 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017FAC8.c` | -| 1214 | func_80181E1C | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_80181E1C.c` | -| 1215 | func_80181F60 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_80181F60.c` | -| 1216 | func_8018381C | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8018381C.c` | -| 1217 | func_80182488 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80182488.c` | -| 1218 | func_8017F500 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017F500.c` | -| 1219 | func_8017D1E0 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017D1E0.c` | -| 1220 | func_8017DDBC | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017DDBC.c` | -| 1221 | func_8017F1BC | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017F1BC.c` | -| 1222 | func_8017D384 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017D384.c` | -| 1223 | func_8017EFB0 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017EFB0.c` | -| 1224 | func_80182708 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80182708.c` | -| 1225 | func_8017F8A8 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017F8A8.c` | -| 1226 | func_8017EBEC | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017EBEC.c` | -| 1227 | func_801850A0 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_801850A0.c` | -| 1228 | func_80184DE8 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80184DE8.c` | -| 1229 | func_801834B4 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_801834B4.c` | -| 1230 | func_8018333C | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8018333C.c` | -| 1231 | func_8018056C | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8018056C.c` | -| 1232 | func_80182154 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80182154.c` | -| 1233 | func_80182C68 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80182C68.c` | -| 1234 | func_8017EA18 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017EA18.c` | -| 1235 | func_80180EB8 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80180EB8.c` | -| 1236 | func_801856F0 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_801856F0.c` | -| 1237 | func_8018DFDC | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8018DFDC.c` | -| 1238 | func_801827A8 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_801827A8.c` | -| 1239 | func_8017CFC4 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017CFC4.c` | -| 1240 | func_8017D7A4 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017D7A4.c` | -| 1241 | func_8017D790 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017D790.c` | -| 1242 | func_80182514 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80182514.c` | -| 1243 | func_8018545C | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8018545C.c` | -| 1244 | func_8017D3B8 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017D3B8.c` | -| 1245 | func_80189FCC | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80189FCC.c` | -| 1246 | func_80181134 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80181134.c` | -| 1247 | func_8017FE10 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017FE10.c` | -| 1248 | func_8017DB64 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017DB64.c` | -| 1249 | func_80185AF8 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80185AF8.c` | -| 1250 | func_80182E34 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80182E34.c` | -| 1251 | func_8017D864 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017D864.c` | -| 1252 | func_8017DB70 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017DB70.c` | -| 1253 | func_80180FD0 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80180FD0.c` | -| 1254 | func_8017FB68 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017FB68.c` | -| 1255 | func_8018ACB4 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8018ACB4.c` | -| 1256 | func_8017EBF4 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017EBF4.c` | -| 1257 | func_80180A5C | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_80180A5C.c` | -| 1258 | func_801830EC | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_801830EC.c` | -| 1259 | func_801804F4 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_801804F4.c` | -| 1260 | func_8017E6C0 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017E6C0.c` | -| 1261 | func_8017DD64 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017DD64.c` | -| 1262 | func_8017F024 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017F024.c` | -| 1263 | func_80181254 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_80181254.c` | -| 1264 | func_80181020 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80181020.c` | -| 1265 | func_80184A1C | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80184A1C.c` | -| 1266 | func_801825EC | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_801825EC.c` | -| 1267 | func_80184430 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80184430.c` | -| 1268 | func_80185934 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80185934.c` | -| 1269 | func_8017E4B0 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_8017E4B0.c` | -| 1270 | func_801841B0 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_801841B0.c` | -| 1271 | func_80180D28 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80180D28.c` | -| 1272 | func_8017E1F4 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_8017E1F4.c` | -| 1273 | func_80182C24 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80182C24.c` | -| 1274 | func_8017DAD0 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017DAD0.c` | -| 1275 | func_8017EE08 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017EE08.c` | -| 1276 | func_80183C4C | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80183C4C.c` | -| 1277 | func_80181300 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80181300.c` | -| 1278 | func_8017E218 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017E218.c` | -| 1279 | func_8017F8AC | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017F8AC.c` | -| 1280 | func_80180E98 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80180E98.c` | -| 1281 | func_8017D21C | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017D21C.c` | -| 1282 | func_80188650 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80188650.c` | -| 1283 | func_801810C0 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_801810C0.c` | -| 1284 | func_8017D004 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017D004.c` | -| 1285 | func_80183A18 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80183A18.c` | -| 1286 | func_80182324 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80182324.c` | -| 1287 | func_80183A24 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80183A24.c` | -| 1288 | func_8017D404 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017D404.c` | -| 1289 | func_80182544 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80182544.c` | -| 1290 | func_80180CA0 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80180CA0.c` | -| 1291 | func_8017ED0C | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_8017ED0C.c` | -| 1292 | func_8017FB4C | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_8017FB4C.c` | -| 1293 | func_801840C0 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_801840C0.c` | -| 1294 | func_8017F344 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_8017F344.c` | -| 1295 | func_80180214 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80180214.c` | -| 1296 | func_801803DC | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_801803DC.c` | -| 1297 | func_80181304 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80181304.c` | -| 1298 | func_8018B9DC | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_8018B9DC.c` | -| 1299 | func_80180840 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80180840.c` | -| 1300 | func_80182E08 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_80182E08.c` | -| 1301 | func_8018AF0C | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8018AF0C.c` | -| 1302 | func_8017F750 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8017F750.c` | -| 1303 | func_8018133C | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8018133C.c` | -| 1304 | func_80183C10 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_80183C10.c` | -| 1305 | func_80180B2C | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_80180B2C.c` | -| 1306 | func_8017D894 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8017D894.c` | -| 1307 | func_8017D1DC | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8017D1DC.c` | -| 1308 | func_8017D9A8 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8017D9A8.c` | -| 1309 | func_801845E8 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_801845E8.c` | -| 1310 | func_8017CE0C | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017CE0C.c` | -| 1311 | func_80182268 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_80182268.c` | -| 1312 | func_8018337C | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8018337C.c` | -| 1313 | func_801800F4 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_801800F4.c` | -| 1314 | func_80181990 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_80181990.c` | -| 1315 | func_8017D8C8 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017D8C8.c` | -| 1316 | func_80184AA8 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_80184AA8.c` | -| 1317 | func_8017E9EC | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017E9EC.c` | -| 1318 | func_80182D18 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_80182D18.c` | -| 1319 | func_8017D524 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017D524.c` | -| 1320 | func_8017D784 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017D784.c` | -| 1321 | func_80139BE0 | 1 | loose-typing | 39 | near | 32 | target has redundant andi a1,v0,0xff (uchar zero-extend) gcc proves away; else identical | `.run/backlog_drafts/func_80139BE0.c` | -| 1322 | func_801856E4 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_801856E4.c` | -| 1323 | func_8017D1D0 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017D1D0.c` | -| 1324 | func_8017EEFC | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017EEFC.c` | -| 1325 | func_8017FC50 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017FC50.c` | -| 1326 | func_8017D554 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017D554.c` | -| 1327 | func_80183018 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_80183018.c` | -| 1328 | func_8017F370 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017F370.c` | -| 1329 | func_8018739C | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8018739C.c` | -| 1330 | func_8017DBC0 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017DBC0.c` | -| 1331 | func_80182000 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_80182000.c` | -| 1332 | func_8017E55C | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017E55C.c` | -| 1333 | func_80182600 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_80182600.c` | -| 1334 | func_8017FCE8 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017FCE8.c` | -| 1335 | func_8017FEC8 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017FEC8.c` | -| 1336 | func_8017D874 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017D874.c` | -| 1337 | func_8017FACC | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017FACC.c` | -| 1338 | func_8017F7F8 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017F7F8.c` | -| 1339 | func_8017FB78 | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_8017FB78.c` | -| 1340 | func_80181A40 | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_80181A40.c` | -| 1341 | func_801800D4 | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_801800D4.c` | -| 1342 | func_80182E1C | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_80182E1C.c` | -| 1343 | func_80181F4C | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_80181F4C.c` | -| 1344 | func_8017EEB0 | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_8017EEB0.c` | -| 1345 | func_8017BF14 | None | | None | near | 34 | residual: 34 mismatch | `.run/backlog_drafts/func_8017BF14.c` | -| 1346 | func_801859A0 | None | | None | near | 34 | residual: 34 mismatch | `.run/backlog_drafts/func_801859A0.c` | -| 1347 | func_8017F8E0 | None | | None | near | 34 | residual: 34 mismatch | `.run/backlog_drafts/func_8017F8E0.c` | -| 1348 | func_8017E740 | None | | None | near | 34 | residual: 34 mismatch | `.run/backlog_drafts/func_8017E740.c` | -| 1349 | func_8017FB54 | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017FB54.c` | -| 1350 | func_8017D804 | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017D804.c` | -| 1351 | func_8017DA0C | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017DA0C.c` | -| 1352 | func_80180030 | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_80180030.c` | -| 1353 | func_8017E038 | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017E038.c` | -| 1354 | func_8017E32C | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017E32C.c` | -| 1355 | func_80181090 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_80181090.c` | -| 1356 | func_8017EC78 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_8017EC78.c` | -| 1357 | func_8017E79C | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_8017E79C.c` | -| 1358 | func_80182A08 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_80182A08.c` | -| 1359 | func_8017F0E8 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_8017F0E8.c` | -| 1360 | func_8017D294 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_8017D294.c` | -| 1361 | func_80189B38 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_80189B38.c` | -| 1362 | func_80180F08 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_80180F08.c` | -| 1363 | func_8017D024 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017D024.c` | -| 1364 | func_8017EB5C | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017EB5C.c` | -| 1365 | func_8017EB4C | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017EB4C.c` | -| 1366 | func_8017EAD8 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017EAD8.c` | -| 1367 | func_8017D29C | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017D29C.c` | -| 1368 | func_8017D450 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017D450.c` | -| 1369 | func_8017E230 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017E230.c` | -| 1370 | func_8017DA00 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017DA00.c` | -| 1371 | func_8017E6FC | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017E6FC.c` | -| 1372 | func_8017FE08 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017FE08.c` | -| 1373 | func_8017D80C | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017D80C.c` | -| 1374 | func_8018263C | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8018263C.c` | -| 1375 | func_80186FA8 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_80186FA8.c` | -| 1376 | func_80180A38 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_80180A38.c` | -| 1377 | func_8017D740 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017D740.c` | -| 1378 | func_8017DD44 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017DD44.c` | -| 1379 | func_8017E840 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017E840.c` | -| 1380 | func_8017D1F0 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017D1F0.c` | -| 1381 | func_8017E014 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017E014.c` | -| 1382 | func_8017D09C | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017D09C.c` | -| 1383 | func_8017EC70 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017EC70.c` | -| 1384 | func_80180C2C | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_80180C2C.c` | -| 1385 | func_8017ECC0 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017ECC0.c` | -| 1386 | func_8017F724 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017F724.c` | -| 1387 | func_8017E36C | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017E36C.c` | -| 1388 | func_8018ACD4 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8018ACD4.c` | -| 1389 | func_80148E54 | 1 | regalloc-order | 67 | near | 40 | 67/67 ins, structure+branches+block-order+body-reload all match; residual is pure register-allocation order (permuter-eligible, no register-pins). (1) masked first-angle folds andi->$s1; target keeps it in $a0 then copies addu $s1,$a0 lazily into the beq delay-slot (the s1-copy schedules 1 slot later). (2) the 0x80 const is CSE-held in $a2 across both test+body; target re-materializes 0x80 in $v0 per block (it gets clobbered by `srl v0,v1,8`), which both renames the compare regs ($v0 not $a2) AND fills the body's reload load-delay slot (mine emits a nop there). (3) single-exit ret funnels $v1->$v0 (move v0,v1) where target writes $v0 directly. All three are gcc regalloc/value-prop tie-breaks no C reshape steered (tried: $v0 pin, temp-split, low-mask-reuse compare, memory-clobber-vs-volatile reload) — leave for the permuter. | `.run/backlog_drafts/func_80148E54.c` | -| 1390 | func_8017ED80 | None | | None | near | 40 | residual: 40 mismatch | `.run/backlog_drafts/func_8017ED80.c` | -| 1391 | func_8017E4C8 | None | | None | near | 40 | residual: 40 mismatch | `.run/backlog_drafts/func_8017E4C8.c` | -| 1392 | func_80180850 | None | | None | near | 40 | residual: 40 mismatch | `.run/backlog_drafts/func_80180850.c` | -| 1393 | func_80181438 | None | | None | near | 40 | residual: 40 mismatch | `.run/backlog_drafts/func_80181438.c` | -| 1394 | func_8017D0BC | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8017D0BC.c` | -| 1395 | func_8017E94C | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8017E94C.c` | -| 1396 | func_8017E170 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8017E170.c` | -| 1397 | func_8018043C | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8018043C.c` | -| 1398 | func_8018A3F0 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8018A3F0.c` | -| 1399 | func_80183364 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_80183364.c` | -| 1400 | func_801824F0 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_801824F0.c` | -| 1401 | func_8017F4A0 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8017F4A0.c` | -| 1402 | func_801877E4 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_801877E4.c` | -| 1403 | func_80183F4C | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_80183F4C.c` | -| 1404 | func_80186044 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_80186044.c` | -| 1405 | func_80180010 | None | | None | near | 42 | residual: 42 mismatch | `.run/backlog_drafts/func_80180010.c` | -| 1406 | func_8017E824 | None | | None | near | 42 | residual: 42 mismatch | `.run/backlog_drafts/func_8017E824.c` | -| 1407 | func_80183598 | None | | None | near | 42 | residual: 42 mismatch | `.run/backlog_drafts/func_80183598.c` | -| 1408 | func_8017ECF4 | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8017ECF4.c` | -| 1409 | func_8018118C | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8018118C.c` | -| 1410 | func_8018FB8C | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8018FB8C.c` | -| 1411 | func_8017D6D0 | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8017D6D0.c` | -| 1412 | func_8017D96C | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8017D96C.c` | -| 1413 | func_8017DF44 | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8017DF44.c` | -| 1414 | func_801812FC | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_801812FC.c` | -| 1415 | func_8017E578 | None | | None | near | 44 | residual: 44 mismatch | `.run/backlog_drafts/func_8017E578.c` | -| 1416 | func_80185C70 | None | | None | near | 44 | residual: 44 mismatch | `.run/backlog_drafts/func_80185C70.c` | -| 1417 | func_8017F90C | None | | None | near | 44 | residual: 44 mismatch | `.run/backlog_drafts/func_8017F90C.c` | -| 1418 | func_8017D6FC | None | | None | near | 44 | residual: 44 mismatch | `.run/backlog_drafts/func_8017D6FC.c` | -| 1419 | func_8017E7D0 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_8017E7D0.c` | -| 1420 | func_80189304 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_80189304.c` | -| 1421 | func_8017D01C | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_8017D01C.c` | -| 1422 | func_8017E380 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_8017E380.c` | -| 1423 | func_80180A88 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_80180A88.c` | -| 1424 | func_8017E9D8 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_8017E9D8.c` | -| 1425 | func_80189DB4 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_80189DB4.c` | -| 1426 | func_8018001C | None | | None | near | 46 | residual: 46 mismatch | `.run/backlog_drafts/func_8018001C.c` | -| 1427 | func_8017F2A0 | None | | None | near | 46 | residual: 46 mismatch | `.run/backlog_drafts/func_8017F2A0.c` | -| 1428 | func_8017EF24 | None | | None | near | 46 | residual: 46 mismatch | `.run/backlog_drafts/func_8017EF24.c` | -| 1429 | func_8018ADA4 | None | | None | near | 46 | residual: 46 mismatch | `.run/backlog_drafts/func_8018ADA4.c` | -| 1430 | func_80185EA8 | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_80185EA8.c` | -| 1431 | func_8018912C | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_8018912C.c` | -| 1432 | func_80188BEC | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_80188BEC.c` | -| 1433 | func_801804DC | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_801804DC.c` | -| 1434 | func_801808D8 | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_801808D8.c` | -| 1435 | func_8017E8D0 | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_8017E8D0.c` | -| 1436 | func_8017DF0C | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_8017DF0C.c` | -| 1437 | func_801846AC | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_801846AC.c` | -| 1438 | func_801805DC | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_801805DC.c` | -| 1439 | func_80184D0C | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_80184D0C.c` | -| 1440 | func_8017D900 | 1 | plumbing | 35 | near | 48 | none — expect MATCH (STUB: ordered global stores + single tail call, sibling of func_8017D840) | `.run/backlog_drafts/func_8017D900.c` | -| 1441 | func_8017F84C | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_8017F84C.c` | -| 1442 | func_8017EF54 | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_8017EF54.c` | -| 1443 | func_80181CE0 | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_80181CE0.c` | -| 1444 | func_8017FCF0 | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_8017FCF0.c` | -| 1445 | func_8017D6F0 | None | | None | near | 49 | residual: 49 mismatch | `.run/backlog_drafts/func_8017D6F0.c` | -| 1446 | func_8017DF40 | None | | None | near | 49 | residual: 49 mismatch | `.run/backlog_drafts/func_8017DF40.c` | -| 1447 | func_8017E968 | None | | None | near | 49 | residual: 49 mismatch | `.run/backlog_drafts/func_8017E968.c` | -| 1448 | func_801845EC | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_801845EC.c` | -| 1449 | func_8017F4C4 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_8017F4C4.c` | -| 1450 | func_80188BB0 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_80188BB0.c` | -| 1451 | func_80181B78 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_80181B78.c` | -| 1452 | func_8017DE74 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_8017DE74.c` | -| 1453 | func_80183D48 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_80183D48.c` | -| 1454 | func_8017EC08 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_8017EC08.c` | -| 1455 | func_80184130 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_80184130.c` | -| 1456 | func_80181124 | None | | None | near | 52 | residual: 52 mismatch | `.run/backlog_drafts/func_80181124.c` | -| 1457 | func_8017FB48 | None | | None | near | 52 | residual: 52 mismatch | `.run/backlog_drafts/func_8017FB48.c` | -| 1458 | func_80186A0C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_80186A0C.c` | -| 1459 | func_8017F050 | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8017F050.c` | -| 1460 | func_8018592C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8018592C.c` | -| 1461 | func_8018CFF4 | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8018CFF4.c` | -| 1462 | func_8017D4B4 | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8017D4B4.c` | -| 1463 | func_8017DB6C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8017DB6C.c` | -| 1464 | func_8018048C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8018048C.c` | -| 1465 | func_8017D57C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8017D57C.c` | -| 1466 | func_8018465C | None | | None | near | 54 | residual: 54 mismatch | `.run/backlog_drafts/func_8018465C.c` | -| 1467 | func_80183C54 | None | | None | near | 54 | residual: 54 mismatch | `.run/backlog_drafts/func_80183C54.c` | -| 1468 | func_80180D58 | None | | None | near | 54 | residual: 54 mismatch | `.run/backlog_drafts/func_80180D58.c` | -| 1469 | func_80180B7C | None | | None | near | 54 | residual: 54 mismatch | `.run/backlog_drafts/func_80180B7C.c` | -| 1470 | func_8017F7B8 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_8017F7B8.c` | -| 1471 | func_8017FE54 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_8017FE54.c` | -| 1472 | func_8017ED60 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_8017ED60.c` | -| 1473 | func_80183C9C | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_80183C9C.c` | -| 1474 | func_801802BC | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_801802BC.c` | -| 1475 | func_80182030 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_80182030.c` | -| 1476 | func_80180204 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_80180204.c` | -| 1477 | func_801824F8 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_801824F8.c` | -| 1478 | func_8017EE2C | None | | None | near | 56 | residual: 56 mismatch | `.run/backlog_drafts/func_8017EE2C.c` | -| 1479 | func_80181DEC | None | | None | near | 57 | residual: 57 mismatch | `.run/backlog_drafts/func_80181DEC.c` | -| 1480 | func_8017E524 | None | | None | near | 57 | residual: 57 mismatch | `.run/backlog_drafts/func_8017E524.c` | -| 1481 | func_8017E8CC | None | | None | near | 57 | residual: 57 mismatch | `.run/backlog_drafts/func_8017E8CC.c` | -| 1482 | func_8018A538 | None | | None | near | 57 | residual: 57 mismatch | `.run/backlog_drafts/func_8018A538.c` | -| 1483 | func_80177DA8 | 1 | remat | 63 | near | 58 | gcc narrows `&0xfffffeff` on a 16-bit (lhu) value to `andi 0xfeff` (inline), but target hoisted -0x101 into $t4 (and-reg) in the loop preheader — a gcc-2.7.2 LICM-before-combine pass-ordering quirk unsteerable from C; that 1-ins gap cascades the constant-reg numbering + tail reassoc. Secondary: single-IV loop ptr anchors at +0xA (short, 2 accesses) not +0xC (byte) like target. | `.run/backlog_drafts/func_80177DA8.c` | -| 1484 | func_8017ECB0 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_8017ECB0.c` | -| 1485 | func_801898C8 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_801898C8.c` | -| 1486 | func_80184920 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_80184920.c` | -| 1487 | func_80182EA0 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_80182EA0.c` | -| 1488 | func_8017F1C4 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_8017F1C4.c` | -| 1489 | func_80181A5C | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_80181A5C.c` | -| 1490 | func_8017D544 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_8017D544.c` | -| 1491 | func_8017EA2C | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_8017EA2C.c` | -| 1492 | func_80182BF4 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_80182BF4.c` | -| 1493 | func_80180D38 | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_80180D38.c` | -| 1494 | func_8017F24C | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_8017F24C.c` | -| 1495 | func_8017D4CC | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_8017D4CC.c` | -| 1496 | func_80183624 | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_80183624.c` | -| 1497 | func_8017FB10 | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_8017FB10.c` | -| 1498 | func_80180B50 | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_80180B50.c` | -| 1499 | func_8018567C | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_8018567C.c` | -| 1500 | func_8017E75C | None | | None | near | 61 | residual: 61 mismatch | `.run/backlog_drafts/func_8017E75C.c` | -| 1501 | func_80184778 | None | | None | near | 61 | residual: 61 mismatch | `.run/backlog_drafts/func_80184778.c` | -| 1502 | func_8017EEE0 | None | | None | near | 62 | residual: 62 mismatch | `.run/backlog_drafts/func_8017EEE0.c` | -| 1503 | func_80188204 | None | | None | near | 62 | residual: 62 mismatch | `.run/backlog_drafts/func_80188204.c` | -| 1504 | func_8017F25C | None | | None | near | 62 | residual: 62 mismatch | `.run/backlog_drafts/func_8017F25C.c` | -| 1505 | func_8017EB74 | None | | None | near | 63 | residual: 63 mismatch | `.run/backlog_drafts/func_8017EB74.c` | -| 1506 | func_8017E798 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017E798.c` | -| 1507 | func_8017D610 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017D610.c` | -| 1508 | func_8017CD10 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017CD10.c` | -| 1509 | func_8017F1A0 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017F1A0.c` | -| 1510 | func_8017D928 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017D928.c` | -| 1511 | func_8018656C | None | | None | near | 65 | residual: 65 mismatch | `.run/backlog_drafts/func_8018656C.c` | -| 1512 | func_8013B598 | 1 | O0 | 66 | near | 66 | WAVE: 66 mismatch | `.run/backlog_drafts/func_8013B598.c` | -| 1513 | func_80184854 | None | | None | near | 66 | residual: 66 mismatch | `.run/backlog_drafts/func_80184854.c` | -| 1514 | func_80185B5C | None | | None | near | 67 | residual: 67 mismatch | `.run/backlog_drafts/func_80185B5C.c` | -| 1515 | func_8017E910 | None | | None | near | 68 | residual: 68 mismatch | `.run/backlog_drafts/func_8017E910.c` | -| 1516 | func_80182378 | None | | None | near | 69 | residual: 69 mismatch | `.run/backlog_drafts/func_80182378.c` | -| 1517 | func_80183544 | None | | None | near | 69 | residual: 69 mismatch | `.run/backlog_drafts/func_80183544.c` | -| 1518 | func_8018434C | None | | None | near | 69 | residual: 69 mismatch | `.run/backlog_drafts/func_8018434C.c` | -| 1519 | func_80180224 | None | | None | near | 71 | residual: 71 mismatch | `.run/backlog_drafts/func_80180224.c` | -| 1520 | func_80184238 | None | | None | near | 72 | residual: 72 mismatch | `.run/backlog_drafts/func_80184238.c` | -| 1521 | func_801866B0 | None | | None | near | 72 | residual: 72 mismatch | `.run/backlog_drafts/func_801866B0.c` | -| 1522 | func_8017D9E4 | None | | None | near | 73 | residual: 73 mismatch | `.run/backlog_drafts/func_8017D9E4.c` | -| 1523 | func_80181344 | None | | None | near | 73 | residual: 73 mismatch | `.run/backlog_drafts/func_80181344.c` | -| 1524 | func_80189B3C | None | | None | near | 74 | residual: 74 mismatch | `.run/backlog_drafts/func_80189B3C.c` | -| 1525 | func_80182B90 | None | | None | near | 74 | residual: 74 mismatch | `.run/backlog_drafts/func_80182B90.c` | -| 1526 | func_8018165C | None | | None | near | 74 | residual: 74 mismatch | `.run/backlog_drafts/func_8018165C.c` | -| 1527 | func_8017F468 | None | | None | near | 74 | residual: 74 mismatch | `.run/backlog_drafts/func_8017F468.c` | -| 1528 | func_8017DAB4 | None | | None | near | 75 | residual: 75 mismatch | `.run/backlog_drafts/func_8017DAB4.c` | -| 1529 | func_80181500 | None | | None | near | 75 | residual: 75 mismatch | `.run/backlog_drafts/func_80181500.c` | -| 1530 | func_801814A8 | None | | None | near | 76 | residual: 76 mismatch | `.run/backlog_drafts/func_801814A8.c` | -| 1531 | func_8017E81C | None | | None | near | 76 | residual: 76 mismatch | `.run/backlog_drafts/func_8017E81C.c` | -| 1532 | func_8018474C | None | | None | near | 76 | residual: 76 mismatch | `.run/backlog_drafts/func_8018474C.c` | -| 1533 | func_80184DDC | None | | None | near | 77 | residual: 77 mismatch | `.run/backlog_drafts/func_80184DDC.c` | -| 1534 | func_8017E2F4 | None | | None | near | 77 | residual: 77 mismatch | `.run/backlog_drafts/func_8017E2F4.c` | -| 1535 | func_8017EDBC | None | | None | near | 78 | residual: 78 mismatch | `.run/backlog_drafts/func_8017EDBC.c` | -| 1536 | func_8017E5F0 | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_8017E5F0.c` | -| 1537 | func_801815AC | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_801815AC.c` | -| 1538 | func_8017D54C | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_8017D54C.c` | -| 1539 | func_80181260 | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_80181260.c` | -| 1540 | func_801805D0 | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_801805D0.c` | -| 1541 | func_8016B6BC | 1 | schedule | 94 | near | 80 | 12-off, all in the last 12 ins (tail). First 82 ins byte-match. Target materializes | `.run/backlog_drafts/func_8016B6BC.c` | -| 1542 | func_8017F290 | 1 | regalloc-order | 86 | near | 81 | none — MATCH. Two levers: (1) hold &D_801270CC in a `int *state` local so its | `.run/backlog_drafts/func_8017F290.c` | -| 1543 | func_80181068 | None | | None | near | 81 | residual: 81 mismatch | `.run/backlog_drafts/func_80181068.c` | -| 1544 | func_80184E00 | None | | None | near | 82 | residual: 82 mismatch | `.run/backlog_drafts/func_80184E00.c` | -| 1545 | func_8017EB88 | None | | None | near | 82 | residual: 82 mismatch | `.run/backlog_drafts/func_8017EB88.c` | -| 1546 | func_8017FB3C | None | | None | near | 82 | residual: 82 mismatch | `.run/backlog_drafts/func_8017FB3C.c` | -| 1547 | func_8017F840 | None | | None | near | 82 | residual: 82 mismatch | `.run/backlog_drafts/func_8017F840.c` | -| 1548 | func_8017DA9C | None | | None | near | 83 | residual: 83 mismatch | `.run/backlog_drafts/func_8017DA9C.c` | -| 1549 | func_801829F0 | None | | None | near | 83 | residual: 83 mismatch | `.run/backlog_drafts/func_801829F0.c` | -| 1550 | func_8017FBA4 | None | | None | near | 83 | residual: 83 mismatch | `.run/backlog_drafts/func_8017FBA4.c` | -| 1551 | func_801848AC | None | | None | near | 84 | residual: 84 mismatch | `.run/backlog_drafts/func_801848AC.c` | -| 1552 | func_8017DC9C | None | | None | near | 84 | residual: 84 mismatch | `.run/backlog_drafts/func_8017DC9C.c` | -| 1553 | func_801840FC | None | | None | near | 85 | residual: 85 mismatch | `.run/backlog_drafts/func_801840FC.c` | -| 1554 | func_80186094 | None | | None | near | 85 | residual: 85 mismatch | `.run/backlog_drafts/func_80186094.c` | -| 1555 | func_801847FC | None | | None | near | 86 | residual: 86 mismatch | `.run/backlog_drafts/func_801847FC.c` | -| 1556 | func_8018006C | None | | None | near | 86 | residual: 86 mismatch | `.run/backlog_drafts/func_8018006C.c` | -| 1557 | func_8017DFD8 | None | | None | near | 87 | residual: 87 mismatch | `.run/backlog_drafts/func_8017DFD8.c` | -| 1558 | func_8017D1F8 | None | | None | near | 87 | residual: 87 mismatch | `.run/backlog_drafts/func_8017D1F8.c` | -| 1559 | func_8017CE68 | None | | None | near | 87 | residual: 87 mismatch | `.run/backlog_drafts/func_8017CE68.c` | -| 1560 | func_8017D7D0 | None | | None | near | 88 | residual: 88 mismatch | `.run/backlog_drafts/func_8017D7D0.c` | -| 1561 | func_80181838 | None | | None | near | 88 | residual: 88 mismatch | `.run/backlog_drafts/func_80181838.c` | -| 1562 | func_801821D4 | None | | None | near | 90 | residual: 90 mismatch | `.run/backlog_drafts/func_801821D4.c` | -| 1563 | func_8017F0A8 | None | | None | near | 90 | residual: 90 mismatch | `.run/backlog_drafts/func_8017F0A8.c` | -| 1564 | func_8018AD3C | None | | None | near | 90 | residual: 90 mismatch | `.run/backlog_drafts/func_8018AD3C.c` | -| 1565 | func_8017DD5C | None | | None | near | 90 | residual: 90 mismatch | `.run/backlog_drafts/func_8017DD5C.c` | -| 1566 | func_8017EDC0 | None | | None | near | 91 | residual: 91 mismatch | `.run/backlog_drafts/func_8017EDC0.c` | -| 1567 | func_801807DC | None | | None | near | 92 | residual: 92 mismatch | `.run/backlog_drafts/func_801807DC.c` | -| 1568 | func_80180170 | None | | None | near | 92 | residual: 92 mismatch | `.run/backlog_drafts/func_80180170.c` | -| 1569 | func_8017D98C | 1 | plumbing | 31 | near | 93 | none — MATCH (expected): straight global stores + tail call; const 0x140 reused for two halves | `.run/backlog_drafts/func_8017D98C.c` | -| 1570 | func_8017EFFC | None | | None | near | 93 | residual: 93 mismatch | `.run/backlog_drafts/func_8017EFFC.c` | -| 1571 | func_8017D940 | None | | None | near | 94 | residual: 94 mismatch | `.run/backlog_drafts/func_8017D940.c` | -| 1572 | func_8017D934 | None | | None | near | 95 | residual: 95 mismatch | `.run/backlog_drafts/func_8017D934.c` | -| 1573 | func_8017DAB8 | None | | None | near | 97 | residual: 97 mismatch | `.run/backlog_drafts/func_8017DAB8.c` | -| 1574 | func_80180040 | None | | None | near | 97 | residual: 97 mismatch | `.run/backlog_drafts/func_80180040.c` | -| 1575 | func_8017FBE0 | None | | None | near | 97 | residual: 97 mismatch | `.run/backlog_drafts/func_8017FBE0.c` | -| 1576 | func_8017F240 | 1 | regalloc-order | 20 | near | 98 | none — MATCH (base &D_801270D0 pinned to $s0 holds across call; one lui/addiu reused for load+store) | `.run/backlog_drafts/func_8017F240.c` | -| 1577 | func_801863B0 | None | | None | near | 98 | residual: 98 mismatch | `.run/backlog_drafts/func_801863B0.c` | -| 1578 | func_80182728 | None | | None | near | 98 | residual: 98 mismatch | `.run/backlog_drafts/func_80182728.c` | -| 1579 | func_8018038C | None | | None | near | 100 | residual: 100 mismatch | `.run/backlog_drafts/func_8018038C.c` | -| 1580 | func_8017D808 | None | | None | near | 102 | residual: 102 mismatch | `.run/backlog_drafts/func_8017D808.c` | -| 1581 | func_8017D238 | None | | None | near | 102 | residual: 102 mismatch | `.run/backlog_drafts/func_8017D238.c` | -| 1582 | func_80182D10 | None | | None | near | 102 | residual: 102 mismatch | `.run/backlog_drafts/func_80182D10.c` | -| 1583 | func_8017EC74 | None | | None | near | 102 | residual: 102 mismatch | `.run/backlog_drafts/func_8017EC74.c` | -| 1584 | func_8017DC40 | None | | None | near | 104 | residual: 104 mismatch | `.run/backlog_drafts/func_8017DC40.c` | -| 1585 | func_80180F34 | None | | None | near | 105 | residual: 105 mismatch | `.run/backlog_drafts/func_80180F34.c` | -| 1586 | func_80181C44 | None | | None | near | 105 | residual: 105 mismatch | `.run/backlog_drafts/func_80181C44.c` | -| 1587 | func_8017F96C | None | | None | near | 106 | residual: 106 mismatch | `.run/backlog_drafts/func_8017F96C.c` | -| 1588 | func_8017EFEC | None | | None | near | 107 | residual: 107 mismatch | `.run/backlog_drafts/func_8017EFEC.c` | -| 1589 | func_80182BC8 | None | | None | near | 107 | residual: 107 mismatch | `.run/backlog_drafts/func_80182BC8.c` | -| 1590 | func_8017F69C | None | | None | near | 107 | residual: 107 mismatch | `.run/backlog_drafts/func_8017F69C.c` | -| 1591 | func_80184828 | None | | None | near | 109 | residual: 109 mismatch | `.run/backlog_drafts/func_80184828.c` | -| 1592 | func_8017F3E4 | None | | None | near | 110 | residual: 110 mismatch | `.run/backlog_drafts/func_8017F3E4.c` | -| 1593 | func_8017DAF4 | None | | None | near | 111 | residual: 111 mismatch | `.run/backlog_drafts/func_8017DAF4.c` | -| 1594 | func_8017FE9C | None | | None | near | 111 | residual: 111 mismatch | `.run/backlog_drafts/func_8017FE9C.c` | -| 1595 | func_8017F768 | None | | None | near | 112 | residual: 112 mismatch | `.run/backlog_drafts/func_8017F768.c` | -| 1596 | func_8017F3B8 | None | | None | near | 112 | residual: 112 mismatch | `.run/backlog_drafts/func_8017F3B8.c` | -| 1597 | func_8017D508 | None | | None | near | 113 | residual: 113 mismatch | `.run/backlog_drafts/func_8017D508.c` | -| 1598 | func_8017BEF8 | None | | None | near | 113 | residual: 113 mismatch | `.run/backlog_drafts/func_8017BEF8.c` | -| 1599 | func_8018788C | None | | None | near | 113 | residual: 113 mismatch | `.run/backlog_drafts/func_8018788C.c` | -| 1600 | func_8017E978 | None | | None | near | 115 | residual: 115 mismatch | `.run/backlog_drafts/func_8017E978.c` | -| 1601 | func_80181858 | None | | None | near | 117 | residual: 117 mismatch | `.run/backlog_drafts/func_80181858.c` | -| 1602 | func_80184CD0 | None | | None | near | 118 | residual: 118 mismatch | `.run/backlog_drafts/func_80184CD0.c` | -| 1603 | func_8017E8F8 | None | | None | near | 120 | residual: 120 mismatch | `.run/backlog_drafts/func_8017E8F8.c` | -| 1604 | func_80184358 | None | | None | near | 121 | residual: 121 mismatch | `.run/backlog_drafts/func_80184358.c` | -| 1605 | func_8017F074 | None | | None | near | 121 | residual: 121 mismatch | `.run/backlog_drafts/func_8017F074.c` | -| 1606 | func_8017D890 | None | | None | near | 124 | residual: 124 mismatch | `.run/backlog_drafts/func_8017D890.c` | -| 1607 | func_8017DECC | None | | None | near | 125 | residual: 125 mismatch | `.run/backlog_drafts/func_8017DECC.c` | -| 1608 | func_80185020 | None | | None | near | 125 | residual: 125 mismatch | `.run/backlog_drafts/func_80185020.c` | -| 1609 | func_8017DD2C | None | | None | near | 125 | residual: 125 mismatch | `.run/backlog_drafts/func_8017DD2C.c` | -| 1610 | func_801884BC | None | | None | near | 125 | residual: 125 mismatch | `.run/backlog_drafts/func_801884BC.c` | -| 1611 | func_801821F8 | None | | None | near | 126 | residual: 126 mismatch | `.run/backlog_drafts/func_801821F8.c` | -| 1612 | func_801892CC | None | | None | near | 127 | residual: 127 mismatch | `.run/backlog_drafts/func_801892CC.c` | -| 1613 | func_8017EB00 | None | | None | near | 127 | residual: 127 mismatch | `.run/backlog_drafts/func_8017EB00.c` | -| 1614 | func_8017E538 | None | | None | near | 128 | residual: 128 mismatch | `.run/backlog_drafts/func_8017E538.c` | -| 1615 | func_8017D50C | None | | None | near | 128 | residual: 128 mismatch | `.run/backlog_drafts/func_8017D50C.c` | -| 1616 | func_801803F8 | None | | None | near | 129 | residual: 129 mismatch | `.run/backlog_drafts/func_801803F8.c` | -| 1617 | func_80185E68 | 1 | STRUCT | 132 | near | 131 | STRUCT: 131 mismatch | `.run/backlog_drafts/func_80185E68.c` | -| 1618 | func_80188754 | None | | None | near | 131 | residual: 131 mismatch | `.run/backlog_drafts/func_80188754.c` | -| 1619 | func_8017E378 | None | | None | near | 134 | residual: 134 mismatch | `.run/backlog_drafts/func_8017E378.c` | -| 1620 | func_80185730 | None | | None | near | 136 | residual: 136 mismatch | `.run/backlog_drafts/func_80185730.c` | -| 1621 | func_8018523C | None | | None | near | 136 | residual: 136 mismatch | `.run/backlog_drafts/func_8018523C.c` | -| 1622 | func_80186530 | None | | None | near | 139 | residual: 139 mismatch | `.run/backlog_drafts/func_80186530.c` | -| 1623 | func_80184F08 | None | regalloc-order | None | near | 141 | none — MATCH (145/145 ins, match_one confirmed) | `.run/backlog_drafts/func_80184F08.c` | -| 1624 | func_80185668 | None | | None | near | 142 | residual: 142 mismatch | `.run/backlog_drafts/func_80185668.c` | -| 1625 | func_8017DB0C | None | | None | near | 142 | residual: 142 mismatch | `.run/backlog_drafts/func_8017DB0C.c` | -| 1626 | func_801814B0 | None | | None | near | 144 | residual: 144 mismatch | `.run/backlog_drafts/func_801814B0.c` | -| 1627 | func_801801A4 | None | | None | near | 148 | residual: 148 mismatch | `.run/backlog_drafts/func_801801A4.c` | -| 1628 | func_80180868 | None | | None | near | 148 | residual: 148 mismatch | `.run/backlog_drafts/func_80180868.c` | -| 1629 | func_801829BC | None | | None | near | 150 | residual: 150 mismatch | `.run/backlog_drafts/func_801829BC.c` | -| 1630 | func_8017FBE8 | None | | None | near | 151 | residual: 151 mismatch | `.run/backlog_drafts/func_8017FBE8.c` | -| 1631 | func_8018200C | None | | None | near | 152 | residual: 152 mismatch | `.run/backlog_drafts/func_8018200C.c` | -| 1632 | func_80181984 | None | | None | near | 153 | residual: 153 mismatch | `.run/backlog_drafts/func_80181984.c` | -| 1633 | func_80183280 | None | | None | near | 154 | residual: 154 mismatch | `.run/backlog_drafts/func_80183280.c` | -| 1634 | func_80184CA0 | None | | None | near | 162 | residual: 162 mismatch | `.run/backlog_drafts/func_80184CA0.c` | -| 1635 | func_8017FA54 | None | | None | near | 166 | residual: 166 mismatch | `.run/backlog_drafts/func_8017FA54.c` | -| 1636 | func_8017D708 | None | | None | near | 166 | residual: 166 mismatch | `.run/backlog_drafts/func_8017D708.c` | -| 1637 | func_8017E6EC | None | | None | near | 172 | residual: 172 mismatch | `.run/backlog_drafts/func_8017E6EC.c` | -| 1638 | func_8017D5DC | None | | None | near | 173 | residual: 173 mismatch | `.run/backlog_drafts/func_8017D5DC.c` | -| 1639 | func_8017D47C | None | | None | near | 173 | residual: 173 mismatch | `.run/backlog_drafts/func_8017D47C.c` | -| 1640 | func_8017F40C | None | | None | near | 174 | residual: 174 mismatch | `.run/backlog_drafts/func_8017F40C.c` | -| 1641 | func_80184210 | None | | None | near | 176 | residual: 176 mismatch | `.run/backlog_drafts/func_80184210.c` | -| 1642 | func_80185E34 | None | | None | near | 185 | residual: 185 mismatch | `.run/backlog_drafts/func_80185E34.c` | -| 1643 | func_80180568 | None | | None | near | 185 | residual: 185 mismatch | `.run/backlog_drafts/func_80180568.c` | -| 1644 | func_801809C4 | None | | None | near | 190 | residual: 190 mismatch | `.run/backlog_drafts/func_801809C4.c` | -| 1645 | func_8013BD74 | 1 | struct | 198 | near | 192 | none — MATCH | `.run/backlog_drafts/func_8013BD74.c` | -| 1646 | func_80183D84 | None | | None | near | 192 | residual: 192 mismatch | `.run/backlog_drafts/func_80183D84.c` | -| 1647 | func_80183FEC | None | | None | near | 198 | residual: 198 mismatch | `.run/backlog_drafts/func_80183FEC.c` | -| 1648 | func_801823B8 | None | | None | near | 204 | residual: 204 mismatch | `.run/backlog_drafts/func_801823B8.c` | -| 1649 | func_801826C4 | None | | None | near | 207 | residual: 207 mismatch | `.run/backlog_drafts/func_801826C4.c` | -| 1650 | func_8017E374 | None | | None | near | 234 | residual: 234 mismatch | `.run/backlog_drafts/func_8017E374.c` | -| 1651 | func_8018C3F8 | None | | None | near | 236 | residual: 236 mismatch | `.run/backlog_drafts/func_8018C3F8.c` | -| 1652 | func_80183438 | None | | None | near | 237 | residual: 237 mismatch | `.run/backlog_drafts/func_80183438.c` | -| 1653 | func_8017E7D4 | None | | None | near | 241 | residual: 241 mismatch | `.run/backlog_drafts/func_8017E7D4.c` | -| 1654 | func_80183BF8 | None | | None | near | 258 | residual: 258 mismatch | `.run/backlog_drafts/func_80183BF8.c` | -| 1655 | func_8017EB30 | None | | None | near | 278 | residual: 278 mismatch | `.run/backlog_drafts/func_8017EB30.c` | -| 1656 | func_801804A0 | None | | None | near | 280 | residual: 280 mismatch | `.run/backlog_drafts/func_801804A0.c` | -| 1657 | func_80187EDC | None | | None | near | 296 | residual: 296 mismatch | `.run/backlog_drafts/func_80187EDC.c` | -| 1658 | func_8017F554 | None | | None | near | 299 | residual: 299 mismatch | `.run/backlog_drafts/func_8017F554.c` | -| 1659 | func_8017FEF0 | None | | None | near | 304 | residual: 304 mismatch | `.run/backlog_drafts/func_8017FEF0.c` | -| 1660 | func_80181670 | None | | None | near | 311 | residual: 311 mismatch | `.run/backlog_drafts/func_80181670.c` | -| 1661 | func_801833F0 | None | | None | near | 328 | residual: 328 mismatch | `.run/backlog_drafts/func_801833F0.c` | -| 1662 | func_80181128 | None | | None | near | 385 | residual: 385 mismatch | `.run/backlog_drafts/func_80181128.c` | -| 1663 | func_8017EA84 | None | | None | near | 578 | residual: 578 mismatch | `.run/backlog_drafts/func_8017EA84.c` | -| 1664 | func_8018057C | None | | None | near | 897 | residual: 897 mismatch | `.run/backlog_drafts/func_8018057C.c` | -| 1665 | func_80184A68 | 1 | regalloc-order | 33 | failed | | none — MATCH | `.run/backlog_drafts/func_80184A68.c` | -| 1666 | func_80159A20 | 1 | struct | 58 | failed | | none — MATCH. Key lever: block tail-MERGE (gcc shared `bne ...,$L1` cross-jump) by making the two return-tests STRUCTURALLY DIFFERENT — positive `if(==){goto mask;} return;` per branch (not `if(!=) return;`), so neither tail can merge. Then fix block ORDER by inverting the outer test (`if(d!=1)` makes the ==4/return path the inline fall-through, the d==1/p[2] path the forward `beq`-target block — matching the target layout). | `.run/backlog_drafts/func_80159A20.c` | -| 1667 | func_80180B64 | 1 | struct | 75 | failed | | none — MATCH (75 ins, relocation-masked) | `.run/backlog_drafts/func_80180B64.c` | -| 1668 | func_801789AC | 1 | struct | 91 | failed | | none — MATCH (91 ins, relocation-masked) | `.run/backlog_drafts/func_801789AC.c` | -| 1669 | func_80183DE0 | 1 | regalloc-order | 91 | failed | | testing if(!=1) layout + counter-before-pointer init order | `.run/backlog_drafts/func_80183DE0.c` | -| 1670 | func_80182C9C | 1 | schedule | 101 | failed | | none — MATCH (101 ins). Inner-switch break-to-shared-tail must be written as | `.run/backlog_drafts/func_80182C9C.c` | -| 1671 | func_80183FB8 | 1 | loose-typing | 101 | failed | | none — MATCH (relocation-masked match_one, 101/101 ins) | `.run/backlog_drafts/func_80183FB8.c` | -| 1672 | func_80185BA4 | 1 | WAVE | 177 | failed | | won't compile standalone (loose-typing / missing decl) | | -| 1673 | func_8014D820 | 1 | WAVE | 304 | failed | | won't compile standalone (loose-typing / missing decl) | | -| 1674 | func_8017D8DC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017D8DC.c` | -| 1675 | func_80187750 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80187750.c` | -| 1676 | func_8017FFEC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017FFEC.c` | -| 1677 | func_80184018 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184018.c` | -| 1678 | func_8017DC18 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017DC18.c` | -| 1679 | func_801853CC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801853CC.c` | -| 1680 | func_80181894 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181894.c` | -| 1681 | func_8018BFBC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018BFBC.c` | -| 1682 | func_801807F4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801807F4.c` | -| 1683 | func_8017FFC8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017FFC8.c` | -| 1684 | func_8017E99C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E99C.c` | -| 1685 | func_80180294 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180294.c` | -| 1686 | func_80184504 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184504.c` | -| 1687 | func_80180B1C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180B1C.c` | -| 1688 | func_8017E76C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E76C.c` | -| 1689 | func_8017F29C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F29C.c` | -| 1690 | func_8018253C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018253C.c` | -| 1691 | func_8017F00C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F00C.c` | -| 1692 | func_801802B0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801802B0.c` | -| 1693 | func_80181FDC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181FDC.c` | -| 1694 | func_8017DB3C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017DB3C.c` | -| 1695 | func_801854DC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801854DC.c` | -| 1696 | func_8017DA1C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017DA1C.c` | -| 1697 | func_80180D04 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180D04.c` | -| 1698 | func_8017BF20 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017BF20.c` | -| 1699 | func_8017FFC4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017FFC4.c` | -| 1700 | func_8017C004 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017C004.c` | -| 1701 | func_8017E2F0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E2F0.c` | -| 1702 | func_8017F4D4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F4D4.c` | -| 1703 | func_8018358C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018358C.c` | -| 1704 | func_801841E4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801841E4.c` | -| 1705 | func_80181738 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181738.c` | -| 1706 | func_801873D8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801873D8.c` | -| 1707 | func_80181E90 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181E90.c` | -| 1708 | func_80185628 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80185628.c` | -| 1709 | func_80182384 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80182384.c` | -| 1710 | func_80184268 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184268.c` | -| 1711 | func_80184234 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184234.c` | -| 1712 | func_801829D8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801829D8.c` | -| 1713 | func_80181A78 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181A78.c` | -| 1714 | func_80186E58 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80186E58.c` | -| 1715 | func_80183BF0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80183BF0.c` | -| 1716 | func_80180EC4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180EC4.c` | -| 1717 | func_801805D4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801805D4.c` | -| 1718 | func_8017EA1C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017EA1C.c` | -| 1719 | func_80181FA4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181FA4.c` | -| 1720 | func_80184558 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184558.c` | -| 1721 | func_8017F098 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F098.c` | -| 1722 | func_801822CC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801822CC.c` | -| 1723 | func_80185BA8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80185BA8.c` | -| 1724 | func_8018E710 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018E710.c` | -| 1725 | func_80183F80 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80183F80.c` | -| 1726 | func_80182D9C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80182D9C.c` | -| 1727 | func_80183028 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80183028.c` | -| 1728 | func_80183104 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80183104.c` | -| 1729 | func_801831EC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801831EC.c` | -| 1730 | func_8018326C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018326C.c` | -| 1731 | func_8018305C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018305C.c` | -| 1732 | func_801852D0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801852D0.c` | -| 1733 | func_8014D820 | None | schedule | None | failed | | structurally complete (LCS 228/304, exact 304-ins count; all calls/consts/control-flow/ | `.run/backlog_drafts/func_8014D820.c` | -| 1734 | func_8017E3F4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E3F4.c` | -| 1735 | func_800D1658 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_800D1658.c` | -| 1736 | func_800D1984 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_800D1984.c` | -| 1737 | func_800D24A0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_800D24A0.c` | -| 1738 | func_801365B8 | None | schedule | None | failed | | none — MATCH (155/155). Two levers: (1) the three D_8012672x tail globals MUST be | `.run/backlog_drafts/func_801365B8.c` | +| 389 | func_80133AB0 | None | plumbing | None | near | 0 | none — MATCH (per-location family member; ov_SC01_077 sibling adapted with this overlay's D_* symbols) | `.run/backlog_drafts/func_80133AB0.c` | +| 390 | func_80161D20 | 1 | struct | 14 | near | 1 | none — MATCH (array-of-u16 %lo-fold, §18) | `.run/backlog_drafts/func_80161D20.c` | +| 391 | func_8017F714 | 1 | plumbing | 27 | near | 1 | none — MATCH (27/27 ins, match_one verified) | `.run/backlog_drafts/func_8017F714.c` | +| 392 | func_80142A10 | 1 | struct | 28 | near | 1 | none — MATCH (pending byte-gate) | `.run/backlog_drafts/func_80142A10.c` | +| 393 | func_80161C24 | 1 | struct | 29 | near | 1 | none — MATCH (array-of-struct %lo-fold; even/odd u16 fields at off 0/2, stride 4) | `.run/backlog_drafts/func_80161C24.c` | +| 394 | func_80184C0C | 1 | struct | 48 | near | 1 | none — MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34) | `.run/backlog_drafts/func_80184C0C.c` | +| 395 | func_801803B0 | 1 | other | 51 | near | 1 | none — MATCH expected; simple if/else, no call-crossing locals beyond param in $s0 | `.run/backlog_drafts/func_801803B0.c` | +| 396 | func_8015FBE0 | 1 | schedule | 58 | near | 1 | none — MATCH | `.run/backlog_drafts/func_8015FBE0.c` | +| 397 | func_8017F114 | 1 | regalloc-order | 75 | near | 1 | none — MATCH | `.run/backlog_drafts/func_8017F114.c` | +| 398 | func_801807D8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801807D8.c` | +| 399 | func_80180AD0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180AD0.c` | +| 400 | func_8017FDB0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FDB0.c` | +| 401 | func_80180720 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180720.c` | +| 402 | func_80184A28 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184A28.c` | +| 403 | func_80183AFC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80183AFC.c` | +| 404 | func_8017EE50 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EE50.c` | +| 405 | func_80181FF8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80181FF8.c` | +| 406 | func_801832F4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801832F4.c` | +| 407 | func_8017FE4C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FE4C.c` | +| 408 | func_801827C4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801827C4.c` | +| 409 | func_80182B68 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182B68.c` | +| 410 | func_80185E38 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80185E38.c` | +| 411 | func_8017FD70 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FD70.c` | +| 412 | func_801811D4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801811D4.c` | +| 413 | func_801819DC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801819DC.c` | +| 414 | func_8018ADF8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018ADF8.c` | +| 415 | func_80186554 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80186554.c` | +| 416 | func_80180C44 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180C44.c` | +| 417 | func_801873FC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801873FC.c` | +| 418 | func_80183FB4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80183FB4.c` | +| 419 | func_80180E7C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180E7C.c` | +| 420 | func_801835FC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801835FC.c` | +| 421 | func_801892B4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801892B4.c` | +| 422 | func_80184970 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184970.c` | +| 423 | func_801863D4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801863D4.c` | +| 424 | func_80181540 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80181540.c` | +| 425 | func_801809D4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801809D4.c` | +| 426 | func_801802A4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801802A4.c` | +| 427 | func_801830A8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801830A8.c` | +| 428 | func_8017E858 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017E858.c` | +| 429 | func_80186BD4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80186BD4.c` | +| 430 | func_8017FB98 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FB98.c` | +| 431 | func_8017EE14 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EE14.c` | +| 432 | func_80181DA0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80181DA0.c` | +| 433 | func_80187840 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80187840.c` | +| 434 | func_80184E58 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184E58.c` | +| 435 | func_80184354 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184354.c` | +| 436 | func_8018011C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018011C.c` | +| 437 | func_8017E29C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017E29C.c` | +| 438 | func_8017D930 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017D930.c` | +| 439 | func_80182A8C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182A8C.c` | +| 440 | func_80181FCC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80181FCC.c` | +| 441 | func_801893E0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801893E0.c` | +| 442 | func_80186908 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80186908.c` | +| 443 | func_80189DC4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80189DC4.c` | +| 444 | func_80182AB0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182AB0.c` | +| 445 | func_80183EA4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80183EA4.c` | +| 446 | func_8018B344 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018B344.c` | +| 447 | func_80188858 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80188858.c` | +| 448 | func_8018773C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018773C.c` | +| 449 | func_80182E9C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182E9C.c` | +| 450 | func_8017F378 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017F378.c` | +| 451 | func_80184BAC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184BAC.c` | +| 452 | func_801852D4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801852D4.c` | +| 453 | func_80189B60 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80189B60.c` | +| 454 | func_8018445C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018445C.c` | +| 455 | func_8018AA08 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018AA08.c` | +| 456 | func_80182CEC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182CEC.c` | +| 457 | func_8017FBB4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017FBB4.c` | +| 458 | func_8018C8A0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018C8A0.c` | +| 459 | func_8018944C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018944C.c` | +| 460 | func_8018A598 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018A598.c` | +| 461 | func_8017EA40 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EA40.c` | +| 462 | func_801826C8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801826C8.c` | +| 463 | func_801854C0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801854C0.c` | +| 464 | func_8017EC64 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EC64.c` | +| 465 | func_80184C94 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80184C94.c` | +| 466 | func_80185CE4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80185CE4.c` | +| 467 | func_8017EA68 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017EA68.c` | +| 468 | func_80180074 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180074.c` | +| 469 | func_801847E4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801847E4.c` | +| 470 | func_80182470 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80182470.c` | +| 471 | func_8017E3D8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017E3D8.c` | +| 472 | func_8018386C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018386C.c` | +| 473 | func_80187A0C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80187A0C.c` | +| 474 | func_8018893C | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8018893C.c` | +| 475 | func_80186AE8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80186AE8.c` | +| 476 | func_80185BEC | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80185BEC.c` | +| 477 | func_801900B0 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_801900B0.c` | +| 478 | func_80180AA4 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_80180AA4.c` | +| 479 | func_8017BFC8 | None | | None | near | 1 | residual: 1 mismatch | `.run/backlog_drafts/func_8017BFC8.c` | +| 480 | func_8016EC0C | 1 | schedule | 88 | near | 2 | none — MATCH (88 ins). Sparse switch(uVar2) = gcc's beq-pivot+slti comparison | `.run/backlog_drafts/func_8016EC0C.c` | +| 481 | func_8017F6B0 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017F6B0.c` | +| 482 | func_8017DDFC | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017DDFC.c` | +| 483 | func_801817DC | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801817DC.c` | +| 484 | func_80182264 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80182264.c` | +| 485 | func_80181834 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80181834.c` | +| 486 | func_8018558C | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8018558C.c` | +| 487 | func_801843CC | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801843CC.c` | +| 488 | func_8017FC8C | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017FC8C.c` | +| 489 | func_80183228 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80183228.c` | +| 490 | func_80183118 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80183118.c` | +| 491 | func_8017E404 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017E404.c` | +| 492 | func_80183B4C | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80183B4C.c` | +| 493 | func_801879B0 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801879B0.c` | +| 494 | func_801828C8 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801828C8.c` | +| 495 | func_8017FA80 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017FA80.c` | +| 496 | func_8017E874 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017E874.c` | +| 497 | func_80185000 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80185000.c` | +| 498 | func_80180F18 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80180F18.c` | +| 499 | func_8018C658 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8018C658.c` | +| 500 | func_80180BF0 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80180BF0.c` | +| 501 | func_80184294 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80184294.c` | +| 502 | func_80183F48 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80183F48.c` | +| 503 | func_80180834 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80180834.c` | +| 504 | func_8018BA9C | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8018BA9C.c` | +| 505 | func_80186DAC | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_80186DAC.c` | +| 506 | func_8017EE78 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_8017EE78.c` | +| 507 | func_801804C8 | None | | None | near | 2 | residual: 2 mismatch | `.run/backlog_drafts/func_801804C8.c` | +| 508 | func_80171B4C | 1 | schedule | 70 | near | 3 | 3-off in the tail only (body+prologue MATCH via $s1 pin on arg1). gcc fills the | `.run/backlog_drafts/func_80171B4C.c` | +| 509 | func_8017D468 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017D468.c` | +| 510 | func_8017DCE4 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017DCE4.c` | +| 511 | func_8017F510 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017F510.c` | +| 512 | func_801816FC | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801816FC.c` | +| 513 | func_8017DE90 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017DE90.c` | +| 514 | func_80190480 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80190480.c` | +| 515 | func_8018AFDC | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018AFDC.c` | +| 516 | func_80180D34 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80180D34.c` | +| 517 | func_8017F38C | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017F38C.c` | +| 518 | func_8017D938 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017D938.c` | +| 519 | func_8018AE6C | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018AE6C.c` | +| 520 | func_80181720 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80181720.c` | +| 521 | func_80183BC8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80183BC8.c` | +| 522 | func_8017F0C0 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017F0C0.c` | +| 523 | func_8018D4B4 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018D4B4.c` | +| 524 | func_801874E8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801874E8.c` | +| 525 | func_80183320 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80183320.c` | +| 526 | func_801857D4 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801857D4.c` | +| 527 | func_8018A184 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018A184.c` | +| 528 | func_8018B234 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018B234.c` | +| 529 | func_8017F534 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017F534.c` | +| 530 | func_801861DC | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801861DC.c` | +| 531 | func_801896EC | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801896EC.c` | +| 532 | func_80184CD8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80184CD8.c` | +| 533 | func_8018C7C8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018C7C8.c` | +| 534 | func_80187B80 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80187B80.c` | +| 535 | func_80181060 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80181060.c` | +| 536 | func_801806C8 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801806C8.c` | +| 537 | func_8018CA10 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018CA10.c` | +| 538 | func_8018672C | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018672C.c` | +| 539 | func_801894B0 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_801894B0.c` | +| 540 | func_80184D98 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80184D98.c` | +| 541 | func_8018B1E0 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8018B1E0.c` | +| 542 | func_80184870 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_80184870.c` | +| 543 | func_8017E6B0 | None | | None | near | 3 | residual: 3 mismatch | `.run/backlog_drafts/func_8017E6B0.c` | +| 544 | func_801549F8 | None | schedule | None | near | 3 | 3-off at -O2 (match_one + gate flags). The n=byte keep-alive copy (addu $a3,$v0,$zero) emits BEFORE the hoisted jtbl (lui/addiu $t0); target emits it AFTER. Pure RTL emission order — a preheader source-statement is always chained before a hoisted loop-invariant, and gcc-2.7.2-psx runs no active delay-slot/list scheduler here (load-delay nops stay unfilled) to reorder them. Not reachable by any source reordering tried (~20 forms). The instruction itself is byte-identical; only its position among 3 independent preheader insns differs. Permuter can't run (pycparser rejects the register __asm__ pin) -> human/RTL-level lever needed. | `.run/backlog_drafts/func_801549F8.c` | +| 545 | func_80188484 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80188484.c` | +| 546 | func_8017F8E4 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017F8E4.c` | +| 547 | func_80187074 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80187074.c` | +| 548 | func_8017FF90 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017FF90.c` | +| 549 | func_8017FAE0 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017FAE0.c` | +| 550 | func_8017E918 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017E918.c` | +| 551 | func_80180ED4 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80180ED4.c` | +| 552 | func_80183444 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80183444.c` | +| 553 | func_80186700 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80186700.c` | +| 554 | func_8017E004 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017E004.c` | +| 555 | func_80183710 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80183710.c` | +| 556 | func_80181CD8 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80181CD8.c` | +| 557 | func_80184880 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80184880.c` | +| 558 | func_8018CC04 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018CC04.c` | +| 559 | func_8017DED8 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8017DED8.c` | +| 560 | func_80181ECC | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80181ECC.c` | +| 561 | func_80182E5C | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80182E5C.c` | +| 562 | func_8018B2F4 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018B2F4.c` | +| 563 | func_80183638 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80183638.c` | +| 564 | func_8018455C | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018455C.c` | +| 565 | func_80181B08 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80181B08.c` | +| 566 | func_801823F0 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_801823F0.c` | +| 567 | func_80188510 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80188510.c` | +| 568 | func_80181A44 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80181A44.c` | +| 569 | func_80182CD4 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_80182CD4.c` | +| 570 | func_8018119C | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018119C.c` | +| 571 | func_8018C394 | None | | None | near | 4 | residual: 4 mismatch | `.run/backlog_drafts/func_8018C394.c` | +| 572 | func_80135260 | 1 | other | 136 | near | 5 | none — MATCH | `.run/backlog_drafts/func_80135260.c` | +| 573 | func_801803F0 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801803F0.c` | +| 574 | func_80180710 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80180710.c` | +| 575 | func_8017F7D8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F7D8.c` | +| 576 | func_80181B8C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80181B8C.c` | +| 577 | func_80180564 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80180564.c` | +| 578 | func_801809F4 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801809F4.c` | +| 579 | func_8017F250 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F250.c` | +| 580 | func_8017F66C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F66C.c` | +| 581 | func_8017F76C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F76C.c` | +| 582 | func_80181E18 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80181E18.c` | +| 583 | func_801852C8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801852C8.c` | +| 584 | func_80180100 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80180100.c` | +| 585 | func_80181EF0 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80181EF0.c` | +| 586 | func_801821B8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801821B8.c` | +| 587 | func_8018312C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8018312C.c` | +| 588 | func_8018DA98 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8018DA98.c` | +| 589 | func_8017F11C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017F11C.c` | +| 590 | func_80182810 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80182810.c` | +| 591 | func_8017FDA8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017FDA8.c` | +| 592 | func_80182938 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80182938.c` | +| 593 | func_8018517C | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8018517C.c` | +| 594 | func_80182B18 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80182B18.c` | +| 595 | func_8017DA90 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_8017DA90.c` | +| 596 | func_80181BB4 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80181BB4.c` | +| 597 | func_801869E0 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_801869E0.c` | +| 598 | func_80185338 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80185338.c` | +| 599 | func_80185978 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80185978.c` | +| 600 | func_80183904 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80183904.c` | +| 601 | func_80185E54 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80185E54.c` | +| 602 | func_80187DAC | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80187DAC.c` | +| 603 | func_80183DB8 | None | | None | near | 5 | residual: 5 mismatch | `.run/backlog_drafts/func_80183DB8.c` | +| 604 | func_80180AE8 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80180AE8.c` | +| 605 | func_8017D398 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017D398.c` | +| 606 | func_80184A58 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80184A58.c` | +| 607 | func_80182280 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80182280.c` | +| 608 | func_80180744 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80180744.c` | +| 609 | func_8017FA64 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017FA64.c` | +| 610 | func_8017EB58 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017EB58.c` | +| 611 | func_8017F4CC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017F4CC.c` | +| 612 | func_8017D624 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017D624.c` | +| 613 | func_80181C78 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80181C78.c` | +| 614 | func_801855DC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801855DC.c` | +| 615 | func_8017FCD4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017FCD4.c` | +| 616 | func_80183158 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80183158.c` | +| 617 | func_80182E2C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80182E2C.c` | +| 618 | func_8017F704 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017F704.c` | +| 619 | func_80185C20 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80185C20.c` | +| 620 | func_8017E06C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017E06C.c` | +| 621 | func_8017FA20 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017FA20.c` | +| 622 | func_80187AD4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80187AD4.c` | +| 623 | func_8018595C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8018595C.c` | +| 624 | func_8018423C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8018423C.c` | +| 625 | func_80185B20 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80185B20.c` | +| 626 | func_80181BD8 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80181BD8.c` | +| 627 | func_801802CC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801802CC.c` | +| 628 | func_8017E2C4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017E2C4.c` | +| 629 | func_80185A8C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80185A8C.c` | +| 630 | func_8017F0EC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017F0EC.c` | +| 631 | func_80180FFC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80180FFC.c` | +| 632 | func_8017DFFC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017DFFC.c` | +| 633 | func_80188F80 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80188F80.c` | +| 634 | func_8017F088 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017F088.c` | +| 635 | func_801805D8 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801805D8.c` | +| 636 | func_80181FF4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80181FF4.c` | +| 637 | func_80189240 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80189240.c` | +| 638 | func_80184618 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80184618.c` | +| 639 | func_8018413C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8018413C.c` | +| 640 | func_801816E0 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801816E0.c` | +| 641 | func_801811F0 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801811F0.c` | +| 642 | func_801819A0 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801819A0.c` | +| 643 | func_8018A698 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8018A698.c` | +| 644 | func_801855F0 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801855F0.c` | +| 645 | func_8017ED3C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017ED3C.c` | +| 646 | func_8017ECB4 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_8017ECB4.c` | +| 647 | func_80182048 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80182048.c` | +| 648 | func_80181230 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80181230.c` | +| 649 | func_801810BC | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_801810BC.c` | +| 650 | func_80186A28 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80186A28.c` | +| 651 | func_80186A88 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80186A88.c` | +| 652 | func_80180F4C | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80180F4C.c` | +| 653 | func_80186C88 | None | | None | near | 6 | residual: 6 mismatch | `.run/backlog_drafts/func_80186C88.c` | +| 654 | func_80182988 | None | loose-typing | None | near | 6 | none — MATCH (0x5c store must be unsigned short so 0xaa10 stays +43536 → ori, not addiu/sign-extend) | `.run/backlog_drafts/func_80182988.c` | +| 655 | func_801815D8 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_801815D8.c` | +| 656 | func_80189898 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80189898.c` | +| 657 | func_8017CF40 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017CF40.c` | +| 658 | func_8017FF6C | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017FF6C.c` | +| 659 | func_8017DB84 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017DB84.c` | +| 660 | func_8018B184 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018B184.c` | +| 661 | func_80182198 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80182198.c` | +| 662 | func_8018B5C0 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018B5C0.c` | +| 663 | func_80180458 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80180458.c` | +| 664 | func_8018D7CC | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018D7CC.c` | +| 665 | func_80185C6C | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80185C6C.c` | +| 666 | func_8018B450 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018B450.c` | +| 667 | func_8018146C | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8018146C.c` | +| 668 | func_8017C104 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017C104.c` | +| 669 | func_80186D5C | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80186D5C.c` | +| 670 | func_80185AEC | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80185AEC.c` | +| 671 | func_80180410 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80180410.c` | +| 672 | func_80185DB8 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80185DB8.c` | +| 673 | func_80180754 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80180754.c` | +| 674 | func_80186720 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80186720.c` | +| 675 | func_8017EA60 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017EA60.c` | +| 676 | func_8017F710 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_8017F710.c` | +| 677 | func_80184990 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80184990.c` | +| 678 | func_80185344 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80185344.c` | +| 679 | func_801828DC | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_801828DC.c` | +| 680 | func_80184688 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80184688.c` | +| 681 | func_80182230 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80182230.c` | +| 682 | func_80183184 | None | | None | near | 7 | residual: 7 mismatch | `.run/backlog_drafts/func_80183184.c` | +| 683 | func_80185F24 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80185F24.c` | +| 684 | func_80189858 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80189858.c` | +| 685 | func_8017FFF0 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017FFF0.c` | +| 686 | func_8017E908 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017E908.c` | +| 687 | func_8017CF9C | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017CF9C.c` | +| 688 | func_8017D8AC | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017D8AC.c` | +| 689 | func_801832B0 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801832B0.c` | +| 690 | func_801813B8 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801813B8.c` | +| 691 | func_80184734 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80184734.c` | +| 692 | func_801825C8 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801825C8.c` | +| 693 | func_80182A5C | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80182A5C.c` | +| 694 | func_80182E30 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80182E30.c` | +| 695 | func_80183430 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80183430.c` | +| 696 | func_80186120 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80186120.c` | +| 697 | func_8018108C | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8018108C.c` | +| 698 | func_801848B0 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801848B0.c` | +| 699 | func_80181688 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80181688.c` | +| 700 | func_80181034 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80181034.c` | +| 701 | func_80188508 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80188508.c` | +| 702 | func_80187370 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80187370.c` | +| 703 | func_8018D330 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8018D330.c` | +| 704 | func_80186A70 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80186A70.c` | +| 705 | func_8017DBE4 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017DBE4.c` | +| 706 | func_8017F474 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017F474.c` | +| 707 | func_8017E804 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017E804.c` | +| 708 | func_80182D50 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80182D50.c` | +| 709 | func_801843B8 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801843B8.c` | +| 710 | func_80183D60 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80183D60.c` | +| 711 | func_80181C84 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80181C84.c` | +| 712 | func_801842D4 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801842D4.c` | +| 713 | func_80185EB4 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80185EB4.c` | +| 714 | func_80188690 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80188690.c` | +| 715 | func_80185F20 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80185F20.c` | +| 716 | func_80183FD8 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_80183FD8.c` | +| 717 | func_8018F658 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8018F658.c` | +| 718 | func_8017F228 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_8017F228.c` | +| 719 | func_801801F4 | None | | None | near | 8 | residual: 8 mismatch | `.run/backlog_drafts/func_801801F4.c` | +| 720 | func_8017F358 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017F358.c` | +| 721 | func_80180E9C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180E9C.c` | +| 722 | func_8017BEBC | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017BEBC.c` | +| 723 | func_80180854 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180854.c` | +| 724 | func_80180E54 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180E54.c` | +| 725 | func_8017F7F4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017F7F4.c` | +| 726 | func_8017EF28 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017EF28.c` | +| 727 | func_801816E4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801816E4.c` | +| 728 | func_8017D400 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017D400.c` | +| 729 | func_8017D6E8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017D6E8.c` | +| 730 | func_8017E4F8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017E4F8.c` | +| 731 | func_801829F4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801829F4.c` | +| 732 | func_801822A8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801822A8.c` | +| 733 | func_8017E954 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017E954.c` | +| 734 | func_80181F84 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80181F84.c` | +| 735 | func_801827FC | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801827FC.c` | +| 736 | func_8017FE88 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017FE88.c` | +| 737 | func_801806B8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801806B8.c` | +| 738 | func_80180EC0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180EC0.c` | +| 739 | func_80181C4C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80181C4C.c` | +| 740 | func_801817A4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801817A4.c` | +| 741 | func_8017E52C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017E52C.c` | +| 742 | func_801805B0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801805B0.c` | +| 743 | func_8018897C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018897C.c` | +| 744 | func_8018AA88 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018AA88.c` | +| 745 | func_8017FED4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017FED4.c` | +| 746 | func_801835F0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801835F0.c` | +| 747 | func_8017CCD4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017CCD4.c` | +| 748 | func_801858C4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801858C4.c` | +| 749 | func_8018C310 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018C310.c` | +| 750 | func_80182AD4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80182AD4.c` | +| 751 | func_8018868C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018868C.c` | +| 752 | func_8017F624 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017F624.c` | +| 753 | func_8017FEB4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017FEB4.c` | +| 754 | func_80182298 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80182298.c` | +| 755 | func_80187114 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80187114.c` | +| 756 | func_80184590 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80184590.c` | +| 757 | func_80186B08 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80186B08.c` | +| 758 | func_80181B34 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80181B34.c` | +| 759 | func_801860F8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801860F8.c` | +| 760 | func_8017FFD8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017FFD8.c` | +| 761 | func_80188BF8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80188BF8.c` | +| 762 | func_80183BD0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80183BD0.c` | +| 763 | func_801860F4 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801860F4.c` | +| 764 | func_80183628 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80183628.c` | +| 765 | func_8018964C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018964C.c` | +| 766 | func_801854C8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801854C8.c` | +| 767 | func_80184664 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80184664.c` | +| 768 | func_80185528 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80185528.c` | +| 769 | func_80187454 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80187454.c` | +| 770 | func_8017F7BC | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017F7BC.c` | +| 771 | func_801830C8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801830C8.c` | +| 772 | func_8017D4F0 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8017D4F0.c` | +| 773 | func_801825E8 | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_801825E8.c` | +| 774 | func_8018C3EC | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_8018C3EC.c` | +| 775 | func_80183C1C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80183C1C.c` | +| 776 | func_80180C3C | None | | None | near | 9 | residual: 9 mismatch | `.run/backlog_drafts/func_80180C3C.c` | +| 777 | func_80191C50 | None | schedule | None | near | 9 | close=9 — only the case-7 sp20[] setup window (0x80192380..0x801923A4): gcc's list scheduler picks the D_80126B62 lui 2nd (its extra `addiu -0x38` gives that chain +1 priority) where the target picks D_80126B66 2nd (LUID/program order); everything else (710/710 ins, frame 0x40, $s0/$s1, jtbl, 3 entity loops, 8 sync blocks, cross-jumped L4AC tail) is byte-identical. | `.run/backlog_drafts/func_80191C50.c` | +| 778 | func_80185A00 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185A00.c` | +| 779 | func_8017FCC0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017FCC0.c` | +| 780 | func_8017F2D0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F2D0.c` | +| 781 | func_801833C8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801833C8.c` | +| 782 | func_8017FFD0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017FFD0.c` | +| 783 | func_80180E34 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180E34.c` | +| 784 | func_801844C4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801844C4.c` | +| 785 | func_8018AB24 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018AB24.c` | +| 786 | func_80188C84 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80188C84.c` | +| 787 | func_8017E184 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017E184.c` | +| 788 | func_80181434 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80181434.c` | +| 789 | func_80181A70 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80181A70.c` | +| 790 | func_8017DF88 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017DF88.c` | +| 791 | func_801841D0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801841D0.c` | +| 792 | func_80184204 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80184204.c` | +| 793 | func_8018534C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018534C.c` | +| 794 | func_80184940 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80184940.c` | +| 795 | func_80180B60 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180B60.c` | +| 796 | func_8017FB0C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017FB0C.c` | +| 797 | func_8017E72C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017E72C.c` | +| 798 | func_80189C4C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80189C4C.c` | +| 799 | func_8017E670 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017E670.c` | +| 800 | func_80180014 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180014.c` | +| 801 | func_80180B90 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180B90.c` | +| 802 | func_801848E8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801848E8.c` | +| 803 | func_8017E094 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017E094.c` | +| 804 | func_8018082C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018082C.c` | +| 805 | func_8018373C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018373C.c` | +| 806 | func_8017DF48 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017DF48.c` | +| 807 | func_80182724 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80182724.c` | +| 808 | func_8018257C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018257C.c` | +| 809 | func_80182EC0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80182EC0.c` | +| 810 | func_80188E8C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80188E8C.c` | +| 811 | func_801806E0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801806E0.c` | +| 812 | func_8018A5A4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018A5A4.c` | +| 813 | func_80181AC0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80181AC0.c` | +| 814 | func_801841A0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801841A0.c` | +| 815 | func_80183744 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80183744.c` | +| 816 | func_8018924C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018924C.c` | +| 817 | func_80185778 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185778.c` | +| 818 | func_801870B4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801870B4.c` | +| 819 | func_80185E3C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185E3C.c` | +| 820 | func_8017F5E8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F5E8.c` | +| 821 | func_801823D4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801823D4.c` | +| 822 | func_80186EE4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80186EE4.c` | +| 823 | func_80180AF4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80180AF4.c` | +| 824 | func_801831FC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801831FC.c` | +| 825 | func_801862D4 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801862D4.c` | +| 826 | func_80184578 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80184578.c` | +| 827 | func_8017F804 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F804.c` | +| 828 | func_80183888 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80183888.c` | +| 829 | func_8017F2EC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F2EC.c` | +| 830 | func_80187224 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80187224.c` | +| 831 | func_801850F8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801850F8.c` | +| 832 | func_80183F7C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80183F7C.c` | +| 833 | func_801800DC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801800DC.c` | +| 834 | func_80182190 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80182190.c` | +| 835 | func_80185C90 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185C90.c` | +| 836 | func_80182380 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80182380.c` | +| 837 | func_8018EDB8 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018EDB8.c` | +| 838 | func_80190298 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80190298.c` | +| 839 | func_8018311C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018311C.c` | +| 840 | func_8018A594 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018A594.c` | +| 841 | func_8017DED0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017DED0.c` | +| 842 | func_8018228C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018228C.c` | +| 843 | func_80188738 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80188738.c` | +| 844 | func_801889E0 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_801889E0.c` | +| 845 | func_8017DEEC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017DEEC.c` | +| 846 | func_80183FAC | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80183FAC.c` | +| 847 | func_8017F300 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8017F300.c` | +| 848 | func_80184794 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80184794.c` | +| 849 | func_80185648 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80185648.c` | +| 850 | func_80186D64 | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_80186D64.c` | +| 851 | func_8018151C | None | | None | near | 10 | residual: 10 mismatch | `.run/backlog_drafts/func_8018151C.c` | +| 852 | func_8016E9EC | 1 | schedule | 53 | near | 11 | 11 left — all GNU scheduler/canon tie-breaks (regs all match via pins): (a) prologue hoists `addiu a1,0x1C` into the save block; (b) first lbu reads $a0 not $s1 (incoming-arg still live); (c) iCopy copy `addu s4,s0` lands early (scheduler) vs target's func_800D2CA8 delay-slot; (d) `addu a2,s2,s3` vs target `s3,s2` commutative-canon (unflippable w/o breaking load order). Permuter can't run (register __asm__ pins rejected, cookbook §5a). | `.run/backlog_drafts/func_8016E9EC.c` | +| 853 | func_8017F7E8 | 1 | WAVE | 177 | near | 11 | WAVE: 11 mismatch | `.run/backlog_drafts/func_8017F7E8.c` | +| 854 | func_801824D0 | 1 | WAVE | 181 | near | 11 | WAVE: 11 mismatch | `.run/backlog_drafts/func_801824D0.c` | +| 855 | func_80182F4C | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80182F4C.c` | +| 856 | func_801835C8 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_801835C8.c` | +| 857 | func_8017D6C4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017D6C4.c` | +| 858 | func_80181960 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80181960.c` | +| 859 | func_8017D7C8 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017D7C8.c` | +| 860 | func_8017F67C | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017F67C.c` | +| 861 | func_80181724 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80181724.c` | +| 862 | func_8017F450 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017F450.c` | +| 863 | func_8017F128 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017F128.c` | +| 864 | func_80180154 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80180154.c` | +| 865 | func_80180240 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80180240.c` | +| 866 | func_80185274 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80185274.c` | +| 867 | func_801833D4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_801833D4.c` | +| 868 | func_80184028 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80184028.c` | +| 869 | func_80180EA8 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80180EA8.c` | +| 870 | func_8018F91C | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8018F91C.c` | +| 871 | func_801835F4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_801835F4.c` | +| 872 | func_80187404 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80187404.c` | +| 873 | func_801848B4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_801848B4.c` | +| 874 | func_8017E5D4 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017E5D4.c` | +| 875 | func_80182118 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80182118.c` | +| 876 | func_8017E2C0 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017E2C0.c` | +| 877 | func_80181744 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80181744.c` | +| 878 | func_8017EECC | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017EECC.c` | +| 879 | func_80182F78 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80182F78.c` | +| 880 | func_8017F154 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017F154.c` | +| 881 | func_8017DC94 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_8017DC94.c` | +| 882 | func_80180CD0 | None | | None | near | 11 | residual: 11 mismatch | `.run/backlog_drafts/func_80180CD0.c` | +| 883 | func_8013C964 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8013C964.c` | +| 884 | func_8013B568 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8013B568.c` | +| 885 | func_8018150C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018150C.c` | +| 886 | func_801803A4 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801803A4.c` | +| 887 | func_8017D7F8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017D7F8.c` | +| 888 | func_8017FFFC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017FFFC.c` | +| 889 | func_8018766C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018766C.c` | +| 890 | func_8017DFF8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017DFF8.c` | +| 891 | func_8017D08C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017D08C.c` | +| 892 | func_8017DE40 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017DE40.c` | +| 893 | func_8017DBD8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017DBD8.c` | +| 894 | func_801833BC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801833BC.c` | +| 895 | func_8017F574 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017F574.c` | +| 896 | func_80187344 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80187344.c` | +| 897 | func_80183AC8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80183AC8.c` | +| 898 | func_80181C08 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80181C08.c` | +| 899 | func_801822C8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801822C8.c` | +| 900 | func_80181388 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80181388.c` | +| 901 | func_80185C2C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80185C2C.c` | +| 902 | func_80183BEC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80183BEC.c` | +| 903 | func_801846EC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801846EC.c` | +| 904 | func_80184DB4 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80184DB4.c` | +| 905 | func_8018AE08 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018AE08.c` | +| 906 | func_80184698 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80184698.c` | +| 907 | func_80184718 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80184718.c` | +| 908 | func_8018134C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018134C.c` | +| 909 | func_8017F4BC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017F4BC.c` | +| 910 | func_80181070 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80181070.c` | +| 911 | func_801810A4 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801810A4.c` | +| 912 | func_801810D8 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801810D8.c` | +| 913 | func_801819CC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801819CC.c` | +| 914 | func_80180554 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80180554.c` | +| 915 | func_80181E5C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80181E5C.c` | +| 916 | func_80189DDC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80189DDC.c` | +| 917 | func_8018ABE0 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018ABE0.c` | +| 918 | func_80189A60 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80189A60.c` | +| 919 | func_8018278C | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8018278C.c` | +| 920 | func_801827C0 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_801827C0.c` | +| 921 | func_80186A58 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_80186A58.c` | +| 922 | func_8017F2BC | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017F2BC.c` | +| 923 | func_8017DEA4 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017DEA4.c` | +| 924 | func_8017F184 | None | | None | near | 12 | residual: 12 mismatch | `.run/backlog_drafts/func_8017F184.c` | +| 925 | func_80185F58 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80185F58.c` | +| 926 | func_8018A3C8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8018A3C8.c` | +| 927 | func_8017EA20 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017EA20.c` | +| 928 | func_80180528 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80180528.c` | +| 929 | func_80180BCC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80180BCC.c` | +| 930 | func_801818EC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801818EC.c` | +| 931 | func_8017DA3C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017DA3C.c` | +| 932 | func_8017EDA8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017EDA8.c` | +| 933 | func_801816CC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801816CC.c` | +| 934 | func_8017D914 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D914.c` | +| 935 | func_801828A8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801828A8.c` | +| 936 | func_8017FD58 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017FD58.c` | +| 937 | func_8017F830 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017F830.c` | +| 938 | func_801807B8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801807B8.c` | +| 939 | func_8018276C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8018276C.c` | +| 940 | func_80183AF8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80183AF8.c` | +| 941 | func_801858D0 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801858D0.c` | +| 942 | func_80180C34 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80180C34.c` | +| 943 | func_80182D3C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80182D3C.c` | +| 944 | func_8018BDA4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8018BDA4.c` | +| 945 | func_8017C8E4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017C8E4.c` | +| 946 | func_80186D30 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80186D30.c` | +| 947 | func_80182D6C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80182D6C.c` | +| 948 | func_8017E84C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017E84C.c` | +| 949 | func_8017F094 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017F094.c` | +| 950 | func_8017F0D8 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017F0D8.c` | +| 951 | func_8017D670 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D670.c` | +| 952 | func_8017D3BC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D3BC.c` | +| 953 | func_8017E358 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017E358.c` | +| 954 | func_80180420 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80180420.c` | +| 955 | func_8017CFE4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017CFE4.c` | +| 956 | func_8017E35C | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017E35C.c` | +| 957 | func_801834E4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801834E4.c` | +| 958 | func_801811B4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801811B4.c` | +| 959 | func_8017D0D4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D0D4.c` | +| 960 | func_8017E060 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017E060.c` | +| 961 | func_8017D0F4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D0F4.c` | +| 962 | func_8017DEC4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017DEC4.c` | +| 963 | func_801811DC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_801811DC.c` | +| 964 | func_8017D6A4 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D6A4.c` | +| 965 | func_8017D348 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D348.c` | +| 966 | func_8017CDBC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017CDBC.c` | +| 967 | func_80187BAC | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_80187BAC.c` | +| 968 | func_8017D224 | None | | None | near | 13 | residual: 13 mismatch | `.run/backlog_drafts/func_8017D224.c` | +| 969 | func_80161CD0 | 1 | regalloc-order | 20 | near | 14 | param_2 must survive the call in $s0; try plain C first then pin to $16 | `.run/backlog_drafts/func_80161CD0.c` | +| 970 | func_80180D10 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80180D10.c` | +| 971 | func_8018316C | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8018316C.c` | +| 972 | func_8017E808 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017E808.c` | +| 973 | func_8017EDC4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017EDC4.c` | +| 974 | func_80180654 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80180654.c` | +| 975 | func_8017C6F4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017C6F4.c` | +| 976 | func_8017E4F0 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017E4F0.c` | +| 977 | func_8018B2DC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8018B2DC.c` | +| 978 | func_80183398 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80183398.c` | +| 979 | func_801812F0 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801812F0.c` | +| 980 | func_80181468 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181468.c` | +| 981 | func_80184384 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80184384.c` | +| 982 | func_8018A934 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8018A934.c` | +| 983 | func_8018B50C | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8018B50C.c` | +| 984 | func_80182844 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80182844.c` | +| 985 | func_801884AC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801884AC.c` | +| 986 | func_80181B90 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181B90.c` | +| 987 | func_80185F98 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80185F98.c` | +| 988 | func_80185EEC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80185EEC.c` | +| 989 | func_80186DE8 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80186DE8.c` | +| 990 | func_801838EC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801838EC.c` | +| 991 | func_80182348 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80182348.c` | +| 992 | func_80185CD4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80185CD4.c` | +| 993 | func_801892C0 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801892C0.c` | +| 994 | func_801859E4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801859E4.c` | +| 995 | func_80184B70 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80184B70.c` | +| 996 | func_801871C4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801871C4.c` | +| 997 | func_80189504 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80189504.c` | +| 998 | func_8017C918 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017C918.c` | +| 999 | func_80181DC4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181DC4.c` | +| 1000 | func_8017D63C | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017D63C.c` | +| 1001 | func_801813F0 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_801813F0.c` | +| 1002 | func_80181F6C | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181F6C.c` | +| 1003 | func_8017EA04 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017EA04.c` | +| 1004 | func_8017EF68 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017EF68.c` | +| 1005 | func_8017EBA8 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017EBA8.c` | +| 1006 | func_80185404 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80185404.c` | +| 1007 | func_8017D7C4 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017D7C4.c` | +| 1008 | func_80181CBC | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80181CBC.c` | +| 1009 | func_8017D974 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_8017D974.c` | +| 1010 | func_80180950 | None | | None | near | 14 | residual: 14 mismatch | `.run/backlog_drafts/func_80180950.c` | +| 1011 | func_80181784 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181784.c` | +| 1012 | func_8017FFE8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017FFE8.c` | +| 1013 | func_80183DC4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80183DC4.c` | +| 1014 | func_801820F0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_801820F0.c` | +| 1015 | func_8018B0EC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8018B0EC.c` | +| 1016 | func_801803F4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_801803F4.c` | +| 1017 | func_8017E818 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E818.c` | +| 1018 | func_80181B0C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181B0C.c` | +| 1019 | func_80184010 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80184010.c` | +| 1020 | func_8018648C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8018648C.c` | +| 1021 | func_8017F138 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F138.c` | +| 1022 | func_8017D9B8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D9B8.c` | +| 1023 | func_8017F3C0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F3C0.c` | +| 1024 | func_80180DB0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80180DB0.c` | +| 1025 | func_8017E290 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E290.c` | +| 1026 | func_8017EDC8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017EDC8.c` | +| 1027 | func_80181A94 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181A94.c` | +| 1028 | func_8017E318 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E318.c` | +| 1029 | func_80181B44 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181B44.c` | +| 1030 | func_8017D1B4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D1B4.c` | +| 1031 | func_8017E778 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E778.c` | +| 1032 | func_80180D5C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80180D5C.c` | +| 1033 | func_8017CDB8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CDB8.c` | +| 1034 | func_8017CE20 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CE20.c` | +| 1035 | func_8017CE40 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CE40.c` | +| 1036 | func_8017D220 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D220.c` | +| 1037 | func_8017E89C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E89C.c` | +| 1038 | func_8017E8DC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E8DC.c` | +| 1039 | func_80183718 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80183718.c` | +| 1040 | func_8017EB1C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017EB1C.c` | +| 1041 | func_80181028 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181028.c` | +| 1042 | func_8017DACC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DACC.c` | +| 1043 | func_8018533C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8018533C.c` | +| 1044 | func_8017D104 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D104.c` | +| 1045 | func_8017F268 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F268.c` | +| 1046 | func_8017F120 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F120.c` | +| 1047 | func_80185A68 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80185A68.c` | +| 1048 | func_8017CE48 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CE48.c` | +| 1049 | func_8017CEB0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CEB0.c` | +| 1050 | func_80180E88 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80180E88.c` | +| 1051 | func_801801C4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_801801C4.c` | +| 1052 | func_8017CEEC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CEEC.c` | +| 1053 | func_8017CDDC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017CDDC.c` | +| 1054 | func_8017DDD8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DDD8.c` | +| 1055 | func_8017DD9C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DD9C.c` | +| 1056 | func_8017DF80 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DF80.c` | +| 1057 | func_8017D49C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D49C.c` | +| 1058 | func_8017F5E0 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F5E0.c` | +| 1059 | func_8017DFCC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017DFCC.c` | +| 1060 | func_80181C1C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_80181C1C.c` | +| 1061 | func_8017D22C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D22C.c` | +| 1062 | func_8018338C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8018338C.c` | +| 1063 | func_8017EEB8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017EEB8.c` | +| 1064 | func_8017E9F4 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E9F4.c` | +| 1065 | func_8017E6CC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E6CC.c` | +| 1066 | func_8017F3A8 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017F3A8.c` | +| 1067 | func_8017D040 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D040.c` | +| 1068 | func_8017E7AC | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E7AC.c` | +| 1069 | func_8017E304 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E304.c` | +| 1070 | func_8017D084 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D084.c` | +| 1071 | func_8017D19C | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017D19C.c` | +| 1072 | func_8017E700 | None | | None | near | 15 | residual: 15 mismatch | `.run/backlog_drafts/func_8017E700.c` | +| 1073 | func_8013C938 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8013C938.c` | +| 1074 | func_8017E0F0 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017E0F0.c` | +| 1075 | func_8017E7D8 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017E7D8.c` | +| 1076 | func_80183988 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80183988.c` | +| 1077 | func_80184154 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80184154.c` | +| 1078 | func_80182D78 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80182D78.c` | +| 1079 | func_80183074 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80183074.c` | +| 1080 | func_80184EA4 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80184EA4.c` | +| 1081 | func_8017F920 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017F920.c` | +| 1082 | func_80180EDC | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80180EDC.c` | +| 1083 | func_80187A8C | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80187A8C.c` | +| 1084 | func_8017F1F8 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017F1F8.c` | +| 1085 | func_8017EC84 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017EC84.c` | +| 1086 | func_8017E9CC | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017E9CC.c` | +| 1087 | func_8017EAE0 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017EAE0.c` | +| 1088 | func_80186984 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80186984.c` | +| 1089 | func_8017F414 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017F414.c` | +| 1090 | func_8017E090 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017E090.c` | +| 1091 | func_801853F8 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_801853F8.c` | +| 1092 | func_8017F20C | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017F20C.c` | +| 1093 | func_80182654 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_80182654.c` | +| 1094 | func_8017CDE4 | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017CDE4.c` | +| 1095 | func_8017DFAC | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017DFAC.c` | +| 1096 | func_8017EF1C | None | | None | near | 16 | residual: 16 mismatch | `.run/backlog_drafts/func_8017EF1C.c` | +| 1097 | func_8017EEF4 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017EEF4.c` | +| 1098 | func_8017E814 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017E814.c` | +| 1099 | func_80184EE0 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80184EE0.c` | +| 1100 | func_8017FA44 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017FA44.c` | +| 1101 | func_80182D1C | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80182D1C.c` | +| 1102 | func_8018384C | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8018384C.c` | +| 1103 | func_8017E950 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017E950.c` | +| 1104 | func_8017CDD8 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017CDD8.c` | +| 1105 | func_80180890 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80180890.c` | +| 1106 | func_8017D5F8 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017D5F8.c` | +| 1107 | func_80180D74 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80180D74.c` | +| 1108 | func_8017F568 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_8017F568.c` | +| 1109 | func_80180D14 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80180D14.c` | +| 1110 | func_80183C58 | None | | None | near | 17 | residual: 17 mismatch | `.run/backlog_drafts/func_80183C58.c` | +| 1111 | func_8018208C | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8018208C.c` | +| 1112 | func_8017FD6C | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017FD6C.c` | +| 1113 | func_801877DC | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_801877DC.c` | +| 1114 | func_8017D010 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017D010.c` | +| 1115 | func_8017D84C | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017D84C.c` | +| 1116 | func_8017BF34 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017BF34.c` | +| 1117 | func_8017DA10 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017DA10.c` | +| 1118 | func_80189630 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80189630.c` | +| 1119 | func_80184630 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80184630.c` | +| 1120 | func_80185334 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80185334.c` | +| 1121 | func_8017DDB0 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017DDB0.c` | +| 1122 | func_8017E850 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017E850.c` | +| 1123 | func_8017DCF4 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017DCF4.c` | +| 1124 | func_8017D988 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017D988.c` | +| 1125 | func_80182E38 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80182E38.c` | +| 1126 | func_80183138 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80183138.c` | +| 1127 | func_80180B54 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_80180B54.c` | +| 1128 | func_8017DC2C | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017DC2C.c` | +| 1129 | func_8017D600 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017D600.c` | +| 1130 | func_8017F6C4 | None | | None | near | 18 | residual: 18 mismatch | `.run/backlog_drafts/func_8017F6C4.c` | +| 1131 | func_8017E9E4 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017E9E4.c` | +| 1132 | func_801827D4 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_801827D4.c` | +| 1133 | func_80185888 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80185888.c` | +| 1134 | func_80180574 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80180574.c` | +| 1135 | func_80183F1C | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80183F1C.c` | +| 1136 | func_8017FFCC | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017FFCC.c` | +| 1137 | func_80182344 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80182344.c` | +| 1138 | func_801811F4 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_801811F4.c` | +| 1139 | func_80180DB8 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80180DB8.c` | +| 1140 | func_8017D184 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017D184.c` | +| 1141 | func_8017F160 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017F160.c` | +| 1142 | func_8017F4D0 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017F4D0.c` | +| 1143 | func_8018033C | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8018033C.c` | +| 1144 | func_80181138 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80181138.c` | +| 1145 | func_8017E048 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017E048.c` | +| 1146 | func_8017F3BC | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017F3BC.c` | +| 1147 | func_80180DEC | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80180DEC.c` | +| 1148 | func_801845B4 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_801845B4.c` | +| 1149 | func_80181C74 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80181C74.c` | +| 1150 | func_80182234 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80182234.c` | +| 1151 | func_8017FF30 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_8017FF30.c` | +| 1152 | func_80185288 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80185288.c` | +| 1153 | func_8017E890 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017E890.c` | +| 1154 | func_8017D174 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017D174.c` | +| 1155 | func_8017CD9C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017CD9C.c` | +| 1156 | func_8018555C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8018555C.c` | +| 1157 | func_801826EC | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_801826EC.c` | +| 1158 | func_8017DB00 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017DB00.c` | +| 1159 | func_80181054 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_80181054.c` | +| 1160 | func_8017F87C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017F87C.c` | +| 1161 | func_8017D704 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017D704.c` | +| 1162 | func_80180AD8 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_80180AD8.c` | +| 1163 | func_8018774C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8018774C.c` | +| 1164 | func_8017DE7C | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017DE7C.c` | +| 1165 | func_8017FA00 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017FA00.c` | +| 1166 | func_8018B6F4 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8018B6F4.c` | +| 1167 | func_8017EEC8 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017EEC8.c` | +| 1168 | func_8017E134 | None | | None | near | 20 | residual: 20 mismatch | `.run/backlog_drafts/func_8017E134.c` | +| 1169 | func_8017C6B8 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017C6B8.c` | +| 1170 | func_801871E8 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_801871E8.c` | +| 1171 | func_80188668 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_80188668.c` | +| 1172 | func_8017DB44 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017DB44.c` | +| 1173 | func_80187050 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_80187050.c` | +| 1174 | func_8017DD18 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017DD18.c` | +| 1175 | func_8018288C | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8018288C.c` | +| 1176 | func_8017E1C8 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017E1C8.c` | +| 1177 | func_8017D308 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017D308.c` | +| 1178 | func_8017EAC8 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017EAC8.c` | +| 1179 | func_8017D8B0 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017D8B0.c` | +| 1180 | func_8017F080 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017F080.c` | +| 1181 | func_8017CD14 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017CD14.c` | +| 1182 | func_80180548 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_80180548.c` | +| 1183 | func_8017DE78 | None | | None | near | 21 | residual: 21 mismatch | `.run/backlog_drafts/func_8017DE78.c` | +| 1184 | func_80185A18 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80185A18.c` | +| 1185 | func_8017D990 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017D990.c` | +| 1186 | func_8017FF2C | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017FF2C.c` | +| 1187 | func_801803E0 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_801803E0.c` | +| 1188 | func_8017D828 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017D828.c` | +| 1189 | func_80180E18 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80180E18.c` | +| 1190 | func_8017DC08 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017DC08.c` | +| 1191 | func_80184388 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80184388.c` | +| 1192 | func_80187C64 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80187C64.c` | +| 1193 | func_8018A030 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8018A030.c` | +| 1194 | func_8017D688 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017D688.c` | +| 1195 | func_8017FA90 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017FA90.c` | +| 1196 | func_8017F320 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017F320.c` | +| 1197 | func_801813AC | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_801813AC.c` | +| 1198 | func_80181478 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_80181478.c` | +| 1199 | func_801868E0 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_801868E0.c` | +| 1200 | func_8018AB74 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8018AB74.c` | +| 1201 | func_8017DE70 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8017DE70.c` | +| 1202 | func_8013BC7C | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8013BC7C.c` | +| 1203 | func_8018A640 | None | | None | near | 22 | residual: 22 mismatch | `.run/backlog_drafts/func_8018A640.c` | +| 1204 | func_8012E364 | 1 | regalloc-order | 67 | near | 23 | 23/67 masked. Structure+idioms exact (barrier fixes the late D9498 load; k=0x1000 CSE'd into $a3 hoisted to the blez delay slot; 6 register pins land arg/$a2, k/$a3, D9498/$v1, temp_a1/$a1, var_v0(_2)/$v0). Residual is the discontinuous q<->temp_v0 reuse chain (q reuses $v0 but target puts it in $a0 reusing x's dead reg; every whole-function pin that forces q->$a0 chains hi>>5 or var_v0 wrong) + 2nd-half schedule (0x2C lhu interleaved before the +k addu; the abs copies temp_v1->$v0 via addu-move). Permuter-class (register renaming) but pins block pycparser -> hand/human finish. | `.run/backlog_drafts/func_8012E364.c` | +| 1205 | func_8017E5A0 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017E5A0.c` | +| 1206 | func_8017DC54 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017DC54.c` | +| 1207 | func_8017F480 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017F480.c` | +| 1208 | func_8017EF7C | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017EF7C.c` | +| 1209 | func_80182FF0 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_80182FF0.c` | +| 1210 | func_80182EE8 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_80182EE8.c` | +| 1211 | func_8017E240 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017E240.c` | +| 1212 | func_8017CE94 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017CE94.c` | +| 1213 | func_8017D2A4 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017D2A4.c` | +| 1214 | func_8017FAC8 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8017FAC8.c` | +| 1215 | func_80181E1C | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_80181E1C.c` | +| 1216 | func_80181F60 | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_80181F60.c` | +| 1217 | func_8018381C | None | | None | near | 23 | residual: 23 mismatch | `.run/backlog_drafts/func_8018381C.c` | +| 1218 | func_80182488 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80182488.c` | +| 1219 | func_8017F500 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017F500.c` | +| 1220 | func_8017D1E0 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017D1E0.c` | +| 1221 | func_8017DDBC | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017DDBC.c` | +| 1222 | func_8017F1BC | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017F1BC.c` | +| 1223 | func_8017D384 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017D384.c` | +| 1224 | func_8017EFB0 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017EFB0.c` | +| 1225 | func_80182708 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80182708.c` | +| 1226 | func_8017F8A8 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017F8A8.c` | +| 1227 | func_8017EBEC | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017EBEC.c` | +| 1228 | func_801850A0 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_801850A0.c` | +| 1229 | func_80184DE8 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80184DE8.c` | +| 1230 | func_801834B4 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_801834B4.c` | +| 1231 | func_8018333C | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8018333C.c` | +| 1232 | func_8018056C | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8018056C.c` | +| 1233 | func_80182154 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80182154.c` | +| 1234 | func_80182C68 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80182C68.c` | +| 1235 | func_8017EA18 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_8017EA18.c` | +| 1236 | func_80180EB8 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_80180EB8.c` | +| 1237 | func_801856F0 | None | | None | near | 24 | residual: 24 mismatch | `.run/backlog_drafts/func_801856F0.c` | +| 1238 | func_8018DFDC | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8018DFDC.c` | +| 1239 | func_801827A8 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_801827A8.c` | +| 1240 | func_8017CFC4 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017CFC4.c` | +| 1241 | func_8017D7A4 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017D7A4.c` | +| 1242 | func_8017D790 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017D790.c` | +| 1243 | func_80182514 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80182514.c` | +| 1244 | func_8018545C | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8018545C.c` | +| 1245 | func_8017D3B8 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017D3B8.c` | +| 1246 | func_80189FCC | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80189FCC.c` | +| 1247 | func_80181134 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80181134.c` | +| 1248 | func_8017FE10 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017FE10.c` | +| 1249 | func_8017DB64 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017DB64.c` | +| 1250 | func_80185AF8 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80185AF8.c` | +| 1251 | func_80182E34 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80182E34.c` | +| 1252 | func_8017D864 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017D864.c` | +| 1253 | func_8017DB70 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_8017DB70.c` | +| 1254 | func_80180FD0 | None | | None | near | 25 | residual: 25 mismatch | `.run/backlog_drafts/func_80180FD0.c` | +| 1255 | func_8017FB68 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017FB68.c` | +| 1256 | func_8018ACB4 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8018ACB4.c` | +| 1257 | func_8017EBF4 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017EBF4.c` | +| 1258 | func_80180A5C | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_80180A5C.c` | +| 1259 | func_801830EC | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_801830EC.c` | +| 1260 | func_801804F4 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_801804F4.c` | +| 1261 | func_8017E6C0 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017E6C0.c` | +| 1262 | func_8017DD64 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017DD64.c` | +| 1263 | func_8017F024 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_8017F024.c` | +| 1264 | func_80181254 | None | | None | near | 26 | residual: 26 mismatch | `.run/backlog_drafts/func_80181254.c` | +| 1265 | func_80181020 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80181020.c` | +| 1266 | func_80184A1C | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80184A1C.c` | +| 1267 | func_801825EC | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_801825EC.c` | +| 1268 | func_80184430 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80184430.c` | +| 1269 | func_80185934 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80185934.c` | +| 1270 | func_8017E4B0 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_8017E4B0.c` | +| 1271 | func_801841B0 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_801841B0.c` | +| 1272 | func_80180D28 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_80180D28.c` | +| 1273 | func_8017E1F4 | None | | None | near | 27 | residual: 27 mismatch | `.run/backlog_drafts/func_8017E1F4.c` | +| 1274 | func_80182C24 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80182C24.c` | +| 1275 | func_8017DAD0 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017DAD0.c` | +| 1276 | func_8017EE08 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017EE08.c` | +| 1277 | func_80183C4C | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80183C4C.c` | +| 1278 | func_80181300 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80181300.c` | +| 1279 | func_8017E218 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017E218.c` | +| 1280 | func_8017F8AC | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017F8AC.c` | +| 1281 | func_80180E98 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80180E98.c` | +| 1282 | func_8017D21C | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017D21C.c` | +| 1283 | func_80188650 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80188650.c` | +| 1284 | func_801810C0 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_801810C0.c` | +| 1285 | func_8017D004 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017D004.c` | +| 1286 | func_80183A18 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80183A18.c` | +| 1287 | func_80182324 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80182324.c` | +| 1288 | func_80183A24 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_80183A24.c` | +| 1289 | func_8017D404 | None | | None | near | 28 | residual: 28 mismatch | `.run/backlog_drafts/func_8017D404.c` | +| 1290 | func_80182544 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80182544.c` | +| 1291 | func_80180CA0 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80180CA0.c` | +| 1292 | func_8017ED0C | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_8017ED0C.c` | +| 1293 | func_8017FB4C | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_8017FB4C.c` | +| 1294 | func_801840C0 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_801840C0.c` | +| 1295 | func_8017F344 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_8017F344.c` | +| 1296 | func_80180214 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80180214.c` | +| 1297 | func_801803DC | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_801803DC.c` | +| 1298 | func_80181304 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80181304.c` | +| 1299 | func_8018B9DC | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_8018B9DC.c` | +| 1300 | func_80180840 | None | | None | near | 29 | residual: 29 mismatch | `.run/backlog_drafts/func_80180840.c` | +| 1301 | func_80182E08 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_80182E08.c` | +| 1302 | func_8018AF0C | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8018AF0C.c` | +| 1303 | func_8017F750 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8017F750.c` | +| 1304 | func_8018133C | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8018133C.c` | +| 1305 | func_80183C10 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_80183C10.c` | +| 1306 | func_80180B2C | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_80180B2C.c` | +| 1307 | func_8017D894 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8017D894.c` | +| 1308 | func_8017D1DC | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8017D1DC.c` | +| 1309 | func_8017D9A8 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_8017D9A8.c` | +| 1310 | func_801845E8 | None | | None | near | 30 | residual: 30 mismatch | `.run/backlog_drafts/func_801845E8.c` | +| 1311 | func_8017CE0C | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017CE0C.c` | +| 1312 | func_80182268 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_80182268.c` | +| 1313 | func_8018337C | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8018337C.c` | +| 1314 | func_801800F4 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_801800F4.c` | +| 1315 | func_80181990 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_80181990.c` | +| 1316 | func_8017D8C8 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017D8C8.c` | +| 1317 | func_80184AA8 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_80184AA8.c` | +| 1318 | func_8017E9EC | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017E9EC.c` | +| 1319 | func_80182D18 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_80182D18.c` | +| 1320 | func_8017D524 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017D524.c` | +| 1321 | func_8017D784 | None | | None | near | 31 | residual: 31 mismatch | `.run/backlog_drafts/func_8017D784.c` | +| 1322 | func_80139BE0 | 1 | loose-typing | 39 | near | 32 | target has redundant andi a1,v0,0xff (uchar zero-extend) gcc proves away; else identical | `.run/backlog_drafts/func_80139BE0.c` | +| 1323 | func_801856E4 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_801856E4.c` | +| 1324 | func_8017D1D0 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017D1D0.c` | +| 1325 | func_8017EEFC | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017EEFC.c` | +| 1326 | func_8017FC50 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017FC50.c` | +| 1327 | func_8017D554 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017D554.c` | +| 1328 | func_80183018 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_80183018.c` | +| 1329 | func_8017F370 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017F370.c` | +| 1330 | func_8018739C | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8018739C.c` | +| 1331 | func_8017DBC0 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017DBC0.c` | +| 1332 | func_80182000 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_80182000.c` | +| 1333 | func_8017E55C | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017E55C.c` | +| 1334 | func_80182600 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_80182600.c` | +| 1335 | func_8017FCE8 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017FCE8.c` | +| 1336 | func_8017FEC8 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017FEC8.c` | +| 1337 | func_8017D874 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017D874.c` | +| 1338 | func_8017FACC | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017FACC.c` | +| 1339 | func_8017F7F8 | None | | None | near | 32 | residual: 32 mismatch | `.run/backlog_drafts/func_8017F7F8.c` | +| 1340 | func_8017FB78 | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_8017FB78.c` | +| 1341 | func_80181A40 | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_80181A40.c` | +| 1342 | func_801800D4 | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_801800D4.c` | +| 1343 | func_80182E1C | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_80182E1C.c` | +| 1344 | func_80181F4C | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_80181F4C.c` | +| 1345 | func_8017EEB0 | None | | None | near | 33 | residual: 33 mismatch | `.run/backlog_drafts/func_8017EEB0.c` | +| 1346 | func_8017BF14 | None | | None | near | 34 | residual: 34 mismatch | `.run/backlog_drafts/func_8017BF14.c` | +| 1347 | func_801859A0 | None | | None | near | 34 | residual: 34 mismatch | `.run/backlog_drafts/func_801859A0.c` | +| 1348 | func_8017F8E0 | None | | None | near | 34 | residual: 34 mismatch | `.run/backlog_drafts/func_8017F8E0.c` | +| 1349 | func_8017E740 | None | | None | near | 34 | residual: 34 mismatch | `.run/backlog_drafts/func_8017E740.c` | +| 1350 | func_8017FB54 | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017FB54.c` | +| 1351 | func_8017D804 | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017D804.c` | +| 1352 | func_8017DA0C | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017DA0C.c` | +| 1353 | func_80180030 | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_80180030.c` | +| 1354 | func_8017E038 | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017E038.c` | +| 1355 | func_8017E32C | None | | None | near | 35 | residual: 35 mismatch | `.run/backlog_drafts/func_8017E32C.c` | +| 1356 | func_80181090 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_80181090.c` | +| 1357 | func_8017EC78 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_8017EC78.c` | +| 1358 | func_8017E79C | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_8017E79C.c` | +| 1359 | func_80182A08 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_80182A08.c` | +| 1360 | func_8017F0E8 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_8017F0E8.c` | +| 1361 | func_8017D294 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_8017D294.c` | +| 1362 | func_80189B38 | None | | None | near | 36 | residual: 36 mismatch | `.run/backlog_drafts/func_80189B38.c` | +| 1363 | func_80180F08 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_80180F08.c` | +| 1364 | func_8017D024 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017D024.c` | +| 1365 | func_8017EB5C | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017EB5C.c` | +| 1366 | func_8017EB4C | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017EB4C.c` | +| 1367 | func_8017EAD8 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017EAD8.c` | +| 1368 | func_8017D29C | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017D29C.c` | +| 1369 | func_8017D450 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017D450.c` | +| 1370 | func_8017E230 | None | | None | near | 37 | residual: 37 mismatch | `.run/backlog_drafts/func_8017E230.c` | +| 1371 | func_8017DA00 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017DA00.c` | +| 1372 | func_8017E6FC | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017E6FC.c` | +| 1373 | func_8017FE08 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017FE08.c` | +| 1374 | func_8017D80C | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017D80C.c` | +| 1375 | func_8018263C | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8018263C.c` | +| 1376 | func_80186FA8 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_80186FA8.c` | +| 1377 | func_80180A38 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_80180A38.c` | +| 1378 | func_8017D740 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017D740.c` | +| 1379 | func_8017DD44 | None | | None | near | 38 | residual: 38 mismatch | `.run/backlog_drafts/func_8017DD44.c` | +| 1380 | func_8017E840 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017E840.c` | +| 1381 | func_8017D1F0 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017D1F0.c` | +| 1382 | func_8017E014 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017E014.c` | +| 1383 | func_8017D09C | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017D09C.c` | +| 1384 | func_8017EC70 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017EC70.c` | +| 1385 | func_80180C2C | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_80180C2C.c` | +| 1386 | func_8017ECC0 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017ECC0.c` | +| 1387 | func_8017F724 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017F724.c` | +| 1388 | func_8017E36C | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8017E36C.c` | +| 1389 | func_8018ACD4 | None | | None | near | 39 | residual: 39 mismatch | `.run/backlog_drafts/func_8018ACD4.c` | +| 1390 | func_80148E54 | 1 | regalloc-order | 67 | near | 40 | 67/67 ins, structure+branches+block-order+body-reload all match; residual is pure register-allocation order (permuter-eligible, no register-pins). (1) masked first-angle folds andi->$s1; target keeps it in $a0 then copies addu $s1,$a0 lazily into the beq delay-slot (the s1-copy schedules 1 slot later). (2) the 0x80 const is CSE-held in $a2 across both test+body; target re-materializes 0x80 in $v0 per block (it gets clobbered by `srl v0,v1,8`), which both renames the compare regs ($v0 not $a2) AND fills the body's reload load-delay slot (mine emits a nop there). (3) single-exit ret funnels $v1->$v0 (move v0,v1) where target writes $v0 directly. All three are gcc regalloc/value-prop tie-breaks no C reshape steered (tried: $v0 pin, temp-split, low-mask-reuse compare, memory-clobber-vs-volatile reload) — leave for the permuter. | `.run/backlog_drafts/func_80148E54.c` | +| 1391 | func_8017ED80 | None | | None | near | 40 | residual: 40 mismatch | `.run/backlog_drafts/func_8017ED80.c` | +| 1392 | func_8017E4C8 | None | | None | near | 40 | residual: 40 mismatch | `.run/backlog_drafts/func_8017E4C8.c` | +| 1393 | func_80180850 | None | | None | near | 40 | residual: 40 mismatch | `.run/backlog_drafts/func_80180850.c` | +| 1394 | func_80181438 | None | | None | near | 40 | residual: 40 mismatch | `.run/backlog_drafts/func_80181438.c` | +| 1395 | func_8017D0BC | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8017D0BC.c` | +| 1396 | func_8017E94C | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8017E94C.c` | +| 1397 | func_8017E170 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8017E170.c` | +| 1398 | func_8018043C | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8018043C.c` | +| 1399 | func_8018A3F0 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8018A3F0.c` | +| 1400 | func_80183364 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_80183364.c` | +| 1401 | func_801824F0 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_801824F0.c` | +| 1402 | func_8017F4A0 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_8017F4A0.c` | +| 1403 | func_801877E4 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_801877E4.c` | +| 1404 | func_80183F4C | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_80183F4C.c` | +| 1405 | func_80186044 | None | | None | near | 41 | residual: 41 mismatch | `.run/backlog_drafts/func_80186044.c` | +| 1406 | func_80180010 | None | | None | near | 42 | residual: 42 mismatch | `.run/backlog_drafts/func_80180010.c` | +| 1407 | func_8017E824 | None | | None | near | 42 | residual: 42 mismatch | `.run/backlog_drafts/func_8017E824.c` | +| 1408 | func_80183598 | None | | None | near | 42 | residual: 42 mismatch | `.run/backlog_drafts/func_80183598.c` | +| 1409 | func_8017ECF4 | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8017ECF4.c` | +| 1410 | func_8018118C | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8018118C.c` | +| 1411 | func_8018FB8C | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8018FB8C.c` | +| 1412 | func_8017D6D0 | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8017D6D0.c` | +| 1413 | func_8017D96C | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8017D96C.c` | +| 1414 | func_8017DF44 | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_8017DF44.c` | +| 1415 | func_801812FC | None | | None | near | 43 | residual: 43 mismatch | `.run/backlog_drafts/func_801812FC.c` | +| 1416 | func_8017E578 | None | | None | near | 44 | residual: 44 mismatch | `.run/backlog_drafts/func_8017E578.c` | +| 1417 | func_80185C70 | None | | None | near | 44 | residual: 44 mismatch | `.run/backlog_drafts/func_80185C70.c` | +| 1418 | func_8017F90C | None | | None | near | 44 | residual: 44 mismatch | `.run/backlog_drafts/func_8017F90C.c` | +| 1419 | func_8017D6FC | None | | None | near | 44 | residual: 44 mismatch | `.run/backlog_drafts/func_8017D6FC.c` | +| 1420 | func_8017E7D0 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_8017E7D0.c` | +| 1421 | func_80189304 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_80189304.c` | +| 1422 | func_8017D01C | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_8017D01C.c` | +| 1423 | func_8017E380 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_8017E380.c` | +| 1424 | func_80180A88 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_80180A88.c` | +| 1425 | func_8017E9D8 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_8017E9D8.c` | +| 1426 | func_80189DB4 | None | | None | near | 45 | residual: 45 mismatch | `.run/backlog_drafts/func_80189DB4.c` | +| 1427 | func_8018001C | None | | None | near | 46 | residual: 46 mismatch | `.run/backlog_drafts/func_8018001C.c` | +| 1428 | func_8017F2A0 | None | | None | near | 46 | residual: 46 mismatch | `.run/backlog_drafts/func_8017F2A0.c` | +| 1429 | func_8017EF24 | None | | None | near | 46 | residual: 46 mismatch | `.run/backlog_drafts/func_8017EF24.c` | +| 1430 | func_8018ADA4 | None | | None | near | 46 | residual: 46 mismatch | `.run/backlog_drafts/func_8018ADA4.c` | +| 1431 | func_80185EA8 | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_80185EA8.c` | +| 1432 | func_8018912C | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_8018912C.c` | +| 1433 | func_80188BEC | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_80188BEC.c` | +| 1434 | func_801804DC | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_801804DC.c` | +| 1435 | func_801808D8 | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_801808D8.c` | +| 1436 | func_8017E8D0 | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_8017E8D0.c` | +| 1437 | func_8017DF0C | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_8017DF0C.c` | +| 1438 | func_801846AC | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_801846AC.c` | +| 1439 | func_801805DC | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_801805DC.c` | +| 1440 | func_80184D0C | None | | None | near | 47 | residual: 47 mismatch | `.run/backlog_drafts/func_80184D0C.c` | +| 1441 | func_8017D900 | 1 | plumbing | 35 | near | 48 | none — expect MATCH (STUB: ordered global stores + single tail call, sibling of func_8017D840) | `.run/backlog_drafts/func_8017D900.c` | +| 1442 | func_8017F84C | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_8017F84C.c` | +| 1443 | func_8017EF54 | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_8017EF54.c` | +| 1444 | func_80181CE0 | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_80181CE0.c` | +| 1445 | func_8017FCF0 | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_8017FCF0.c` | +| 1446 | func_8017D6F0 | None | | None | near | 49 | residual: 49 mismatch | `.run/backlog_drafts/func_8017D6F0.c` | +| 1447 | func_8017DF40 | None | | None | near | 49 | residual: 49 mismatch | `.run/backlog_drafts/func_8017DF40.c` | +| 1448 | func_8017E968 | None | | None | near | 49 | residual: 49 mismatch | `.run/backlog_drafts/func_8017E968.c` | +| 1449 | func_801845EC | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_801845EC.c` | +| 1450 | func_8017F4C4 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_8017F4C4.c` | +| 1451 | func_80188BB0 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_80188BB0.c` | +| 1452 | func_80181B78 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_80181B78.c` | +| 1453 | func_8017DE74 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_8017DE74.c` | +| 1454 | func_80183D48 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_80183D48.c` | +| 1455 | func_8017EC08 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_8017EC08.c` | +| 1456 | func_80184130 | None | | None | near | 50 | residual: 50 mismatch | `.run/backlog_drafts/func_80184130.c` | +| 1457 | func_80181124 | None | | None | near | 52 | residual: 52 mismatch | `.run/backlog_drafts/func_80181124.c` | +| 1458 | func_8017FB48 | None | | None | near | 52 | residual: 52 mismatch | `.run/backlog_drafts/func_8017FB48.c` | +| 1459 | func_80186A0C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_80186A0C.c` | +| 1460 | func_8017F050 | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8017F050.c` | +| 1461 | func_8018592C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8018592C.c` | +| 1462 | func_8018CFF4 | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8018CFF4.c` | +| 1463 | func_8017D4B4 | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8017D4B4.c` | +| 1464 | func_8017DB6C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8017DB6C.c` | +| 1465 | func_8018048C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8018048C.c` | +| 1466 | func_8017D57C | None | | None | near | 53 | residual: 53 mismatch | `.run/backlog_drafts/func_8017D57C.c` | +| 1467 | func_8018465C | None | | None | near | 54 | residual: 54 mismatch | `.run/backlog_drafts/func_8018465C.c` | +| 1468 | func_80183C54 | None | | None | near | 54 | residual: 54 mismatch | `.run/backlog_drafts/func_80183C54.c` | +| 1469 | func_80180D58 | None | | None | near | 54 | residual: 54 mismatch | `.run/backlog_drafts/func_80180D58.c` | +| 1470 | func_80180B7C | None | | None | near | 54 | residual: 54 mismatch | `.run/backlog_drafts/func_80180B7C.c` | +| 1471 | func_8017F7B8 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_8017F7B8.c` | +| 1472 | func_8017FE54 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_8017FE54.c` | +| 1473 | func_8017ED60 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_8017ED60.c` | +| 1474 | func_80183C9C | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_80183C9C.c` | +| 1475 | func_801802BC | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_801802BC.c` | +| 1476 | func_80182030 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_80182030.c` | +| 1477 | func_80180204 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_80180204.c` | +| 1478 | func_801824F8 | None | | None | near | 55 | residual: 55 mismatch | `.run/backlog_drafts/func_801824F8.c` | +| 1479 | func_8017EE2C | None | | None | near | 56 | residual: 56 mismatch | `.run/backlog_drafts/func_8017EE2C.c` | +| 1480 | func_80181DEC | None | | None | near | 57 | residual: 57 mismatch | `.run/backlog_drafts/func_80181DEC.c` | +| 1481 | func_8017E524 | None | | None | near | 57 | residual: 57 mismatch | `.run/backlog_drafts/func_8017E524.c` | +| 1482 | func_8017E8CC | None | | None | near | 57 | residual: 57 mismatch | `.run/backlog_drafts/func_8017E8CC.c` | +| 1483 | func_8018A538 | None | | None | near | 57 | residual: 57 mismatch | `.run/backlog_drafts/func_8018A538.c` | +| 1484 | func_80177DA8 | 1 | remat | 63 | near | 58 | gcc narrows `&0xfffffeff` on a 16-bit (lhu) value to `andi 0xfeff` (inline), but target hoisted -0x101 into $t4 (and-reg) in the loop preheader — a gcc-2.7.2 LICM-before-combine pass-ordering quirk unsteerable from C; that 1-ins gap cascades the constant-reg numbering + tail reassoc. Secondary: single-IV loop ptr anchors at +0xA (short, 2 accesses) not +0xC (byte) like target. | `.run/backlog_drafts/func_80177DA8.c` | +| 1485 | func_8017ECB0 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_8017ECB0.c` | +| 1486 | func_801898C8 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_801898C8.c` | +| 1487 | func_80184920 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_80184920.c` | +| 1488 | func_80182EA0 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_80182EA0.c` | +| 1489 | func_8017F1C4 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_8017F1C4.c` | +| 1490 | func_80181A5C | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_80181A5C.c` | +| 1491 | func_8017D544 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_8017D544.c` | +| 1492 | func_8017EA2C | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_8017EA2C.c` | +| 1493 | func_80182BF4 | None | | None | near | 58 | residual: 58 mismatch | `.run/backlog_drafts/func_80182BF4.c` | +| 1494 | func_80180D38 | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_80180D38.c` | +| 1495 | func_8017F24C | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_8017F24C.c` | +| 1496 | func_8017D4CC | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_8017D4CC.c` | +| 1497 | func_80183624 | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_80183624.c` | +| 1498 | func_8017FB10 | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_8017FB10.c` | +| 1499 | func_80180B50 | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_80180B50.c` | +| 1500 | func_8018567C | None | | None | near | 59 | residual: 59 mismatch | `.run/backlog_drafts/func_8018567C.c` | +| 1501 | func_8017E75C | None | | None | near | 61 | residual: 61 mismatch | `.run/backlog_drafts/func_8017E75C.c` | +| 1502 | func_80184778 | None | | None | near | 61 | residual: 61 mismatch | `.run/backlog_drafts/func_80184778.c` | +| 1503 | func_8017EEE0 | None | | None | near | 62 | residual: 62 mismatch | `.run/backlog_drafts/func_8017EEE0.c` | +| 1504 | func_80188204 | None | | None | near | 62 | residual: 62 mismatch | `.run/backlog_drafts/func_80188204.c` | +| 1505 | func_8017F25C | None | | None | near | 62 | residual: 62 mismatch | `.run/backlog_drafts/func_8017F25C.c` | +| 1506 | func_8017EB74 | None | | None | near | 63 | residual: 63 mismatch | `.run/backlog_drafts/func_8017EB74.c` | +| 1507 | func_8017E798 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017E798.c` | +| 1508 | func_8017D610 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017D610.c` | +| 1509 | func_8017CD10 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017CD10.c` | +| 1510 | func_8017F1A0 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017F1A0.c` | +| 1511 | func_8017D928 | None | | None | near | 64 | residual: 64 mismatch | `.run/backlog_drafts/func_8017D928.c` | +| 1512 | func_8018656C | None | | None | near | 65 | residual: 65 mismatch | `.run/backlog_drafts/func_8018656C.c` | +| 1513 | func_8013B598 | 1 | O0 | 66 | near | 66 | WAVE: 66 mismatch | `.run/backlog_drafts/func_8013B598.c` | +| 1514 | func_80184854 | None | | None | near | 66 | residual: 66 mismatch | `.run/backlog_drafts/func_80184854.c` | +| 1515 | func_80185B5C | None | | None | near | 67 | residual: 67 mismatch | `.run/backlog_drafts/func_80185B5C.c` | +| 1516 | func_8017E910 | None | | None | near | 68 | residual: 68 mismatch | `.run/backlog_drafts/func_8017E910.c` | +| 1517 | func_80182378 | None | | None | near | 69 | residual: 69 mismatch | `.run/backlog_drafts/func_80182378.c` | +| 1518 | func_80183544 | None | | None | near | 69 | residual: 69 mismatch | `.run/backlog_drafts/func_80183544.c` | +| 1519 | func_8018434C | None | | None | near | 69 | residual: 69 mismatch | `.run/backlog_drafts/func_8018434C.c` | +| 1520 | func_80180224 | None | | None | near | 71 | residual: 71 mismatch | `.run/backlog_drafts/func_80180224.c` | +| 1521 | func_80184238 | None | | None | near | 72 | residual: 72 mismatch | `.run/backlog_drafts/func_80184238.c` | +| 1522 | func_801866B0 | None | | None | near | 72 | residual: 72 mismatch | `.run/backlog_drafts/func_801866B0.c` | +| 1523 | func_8017D9E4 | None | | None | near | 73 | residual: 73 mismatch | `.run/backlog_drafts/func_8017D9E4.c` | +| 1524 | func_80181344 | None | | None | near | 73 | residual: 73 mismatch | `.run/backlog_drafts/func_80181344.c` | +| 1525 | func_80189B3C | None | | None | near | 74 | residual: 74 mismatch | `.run/backlog_drafts/func_80189B3C.c` | +| 1526 | func_80182B90 | None | | None | near | 74 | residual: 74 mismatch | `.run/backlog_drafts/func_80182B90.c` | +| 1527 | func_8018165C | None | | None | near | 74 | residual: 74 mismatch | `.run/backlog_drafts/func_8018165C.c` | +| 1528 | func_8017F468 | None | | None | near | 74 | residual: 74 mismatch | `.run/backlog_drafts/func_8017F468.c` | +| 1529 | func_8017DAB4 | None | | None | near | 75 | residual: 75 mismatch | `.run/backlog_drafts/func_8017DAB4.c` | +| 1530 | func_80181500 | None | | None | near | 75 | residual: 75 mismatch | `.run/backlog_drafts/func_80181500.c` | +| 1531 | func_801814A8 | None | | None | near | 76 | residual: 76 mismatch | `.run/backlog_drafts/func_801814A8.c` | +| 1532 | func_8017E81C | None | | None | near | 76 | residual: 76 mismatch | `.run/backlog_drafts/func_8017E81C.c` | +| 1533 | func_8018474C | None | | None | near | 76 | residual: 76 mismatch | `.run/backlog_drafts/func_8018474C.c` | +| 1534 | func_80184DDC | None | | None | near | 77 | residual: 77 mismatch | `.run/backlog_drafts/func_80184DDC.c` | +| 1535 | func_8017E2F4 | None | | None | near | 77 | residual: 77 mismatch | `.run/backlog_drafts/func_8017E2F4.c` | +| 1536 | func_8017EDBC | None | | None | near | 78 | residual: 78 mismatch | `.run/backlog_drafts/func_8017EDBC.c` | +| 1537 | func_8017E5F0 | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_8017E5F0.c` | +| 1538 | func_801815AC | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_801815AC.c` | +| 1539 | func_8017D54C | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_8017D54C.c` | +| 1540 | func_80181260 | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_80181260.c` | +| 1541 | func_801805D0 | None | | None | near | 79 | residual: 79 mismatch | `.run/backlog_drafts/func_801805D0.c` | +| 1542 | func_8016B6BC | 1 | schedule | 94 | near | 80 | 12-off, all in the last 12 ins (tail). First 82 ins byte-match. Target materializes | `.run/backlog_drafts/func_8016B6BC.c` | +| 1543 | func_8017F290 | 1 | regalloc-order | 86 | near | 81 | none — MATCH. Two levers: (1) hold &D_801270CC in a `int *state` local so its | `.run/backlog_drafts/func_8017F290.c` | +| 1544 | func_80181068 | None | | None | near | 81 | residual: 81 mismatch | `.run/backlog_drafts/func_80181068.c` | +| 1545 | func_80184E00 | None | | None | near | 82 | residual: 82 mismatch | `.run/backlog_drafts/func_80184E00.c` | +| 1546 | func_8017EB88 | None | | None | near | 82 | residual: 82 mismatch | `.run/backlog_drafts/func_8017EB88.c` | +| 1547 | func_8017FB3C | None | | None | near | 82 | residual: 82 mismatch | `.run/backlog_drafts/func_8017FB3C.c` | +| 1548 | func_8017F840 | None | | None | near | 82 | residual: 82 mismatch | `.run/backlog_drafts/func_8017F840.c` | +| 1549 | func_8017DA9C | None | | None | near | 83 | residual: 83 mismatch | `.run/backlog_drafts/func_8017DA9C.c` | +| 1550 | func_801829F0 | None | | None | near | 83 | residual: 83 mismatch | `.run/backlog_drafts/func_801829F0.c` | +| 1551 | func_8017FBA4 | None | | None | near | 83 | residual: 83 mismatch | `.run/backlog_drafts/func_8017FBA4.c` | +| 1552 | func_801848AC | None | | None | near | 84 | residual: 84 mismatch | `.run/backlog_drafts/func_801848AC.c` | +| 1553 | func_8017DC9C | None | | None | near | 84 | residual: 84 mismatch | `.run/backlog_drafts/func_8017DC9C.c` | +| 1554 | func_801840FC | None | | None | near | 85 | residual: 85 mismatch | `.run/backlog_drafts/func_801840FC.c` | +| 1555 | func_80186094 | None | | None | near | 85 | residual: 85 mismatch | `.run/backlog_drafts/func_80186094.c` | +| 1556 | func_801847FC | None | | None | near | 86 | residual: 86 mismatch | `.run/backlog_drafts/func_801847FC.c` | +| 1557 | func_8018006C | None | | None | near | 86 | residual: 86 mismatch | `.run/backlog_drafts/func_8018006C.c` | +| 1558 | func_8017DFD8 | None | | None | near | 87 | residual: 87 mismatch | `.run/backlog_drafts/func_8017DFD8.c` | +| 1559 | func_8017D1F8 | None | | None | near | 87 | residual: 87 mismatch | `.run/backlog_drafts/func_8017D1F8.c` | +| 1560 | func_8017CE68 | None | | None | near | 87 | residual: 87 mismatch | `.run/backlog_drafts/func_8017CE68.c` | +| 1561 | func_8017D7D0 | None | | None | near | 88 | residual: 88 mismatch | `.run/backlog_drafts/func_8017D7D0.c` | +| 1562 | func_80181838 | None | | None | near | 88 | residual: 88 mismatch | `.run/backlog_drafts/func_80181838.c` | +| 1563 | func_801821D4 | None | | None | near | 90 | residual: 90 mismatch | `.run/backlog_drafts/func_801821D4.c` | +| 1564 | func_8017F0A8 | None | | None | near | 90 | residual: 90 mismatch | `.run/backlog_drafts/func_8017F0A8.c` | +| 1565 | func_8018AD3C | None | | None | near | 90 | residual: 90 mismatch | `.run/backlog_drafts/func_8018AD3C.c` | +| 1566 | func_8017DD5C | None | | None | near | 90 | residual: 90 mismatch | `.run/backlog_drafts/func_8017DD5C.c` | +| 1567 | func_8017EDC0 | None | | None | near | 91 | residual: 91 mismatch | `.run/backlog_drafts/func_8017EDC0.c` | +| 1568 | func_801807DC | None | | None | near | 92 | residual: 92 mismatch | `.run/backlog_drafts/func_801807DC.c` | +| 1569 | func_80180170 | None | | None | near | 92 | residual: 92 mismatch | `.run/backlog_drafts/func_80180170.c` | +| 1570 | func_8017D98C | 1 | plumbing | 31 | near | 93 | none — MATCH (expected): straight global stores + tail call; const 0x140 reused for two halves | `.run/backlog_drafts/func_8017D98C.c` | +| 1571 | func_8017EFFC | None | | None | near | 93 | residual: 93 mismatch | `.run/backlog_drafts/func_8017EFFC.c` | +| 1572 | func_8017D940 | None | | None | near | 94 | residual: 94 mismatch | `.run/backlog_drafts/func_8017D940.c` | +| 1573 | func_8017D934 | None | | None | near | 95 | residual: 95 mismatch | `.run/backlog_drafts/func_8017D934.c` | +| 1574 | func_8017DAB8 | None | | None | near | 97 | residual: 97 mismatch | `.run/backlog_drafts/func_8017DAB8.c` | +| 1575 | func_80180040 | None | | None | near | 97 | residual: 97 mismatch | `.run/backlog_drafts/func_80180040.c` | +| 1576 | func_8017FBE0 | None | | None | near | 97 | residual: 97 mismatch | `.run/backlog_drafts/func_8017FBE0.c` | +| 1577 | func_8017F240 | 1 | regalloc-order | 20 | near | 98 | none — MATCH (base &D_801270D0 pinned to $s0 holds across call; one lui/addiu reused for load+store) | `.run/backlog_drafts/func_8017F240.c` | +| 1578 | func_801863B0 | None | | None | near | 98 | residual: 98 mismatch | `.run/backlog_drafts/func_801863B0.c` | +| 1579 | func_80182728 | None | | None | near | 98 | residual: 98 mismatch | `.run/backlog_drafts/func_80182728.c` | +| 1580 | func_8018038C | None | | None | near | 100 | residual: 100 mismatch | `.run/backlog_drafts/func_8018038C.c` | +| 1581 | func_8017D808 | None | | None | near | 102 | residual: 102 mismatch | `.run/backlog_drafts/func_8017D808.c` | +| 1582 | func_8017D238 | None | | None | near | 102 | residual: 102 mismatch | `.run/backlog_drafts/func_8017D238.c` | +| 1583 | func_80182D10 | None | | None | near | 102 | residual: 102 mismatch | `.run/backlog_drafts/func_80182D10.c` | +| 1584 | func_8017EC74 | None | | None | near | 102 | residual: 102 mismatch | `.run/backlog_drafts/func_8017EC74.c` | +| 1585 | func_8017DC40 | None | | None | near | 104 | residual: 104 mismatch | `.run/backlog_drafts/func_8017DC40.c` | +| 1586 | func_80180F34 | None | | None | near | 105 | residual: 105 mismatch | `.run/backlog_drafts/func_80180F34.c` | +| 1587 | func_80181C44 | None | | None | near | 105 | residual: 105 mismatch | `.run/backlog_drafts/func_80181C44.c` | +| 1588 | func_8017F96C | None | | None | near | 106 | residual: 106 mismatch | `.run/backlog_drafts/func_8017F96C.c` | +| 1589 | func_8017EFEC | None | | None | near | 107 | residual: 107 mismatch | `.run/backlog_drafts/func_8017EFEC.c` | +| 1590 | func_80182BC8 | None | | None | near | 107 | residual: 107 mismatch | `.run/backlog_drafts/func_80182BC8.c` | +| 1591 | func_8017F69C | None | | None | near | 107 | residual: 107 mismatch | `.run/backlog_drafts/func_8017F69C.c` | +| 1592 | func_80184828 | None | | None | near | 109 | residual: 109 mismatch | `.run/backlog_drafts/func_80184828.c` | +| 1593 | func_8017F3E4 | None | | None | near | 110 | residual: 110 mismatch | `.run/backlog_drafts/func_8017F3E4.c` | +| 1594 | func_8017DAF4 | None | | None | near | 111 | residual: 111 mismatch | `.run/backlog_drafts/func_8017DAF4.c` | +| 1595 | func_8017FE9C | None | | None | near | 111 | residual: 111 mismatch | `.run/backlog_drafts/func_8017FE9C.c` | +| 1596 | func_8017F768 | None | | None | near | 112 | residual: 112 mismatch | `.run/backlog_drafts/func_8017F768.c` | +| 1597 | func_8017F3B8 | None | | None | near | 112 | residual: 112 mismatch | `.run/backlog_drafts/func_8017F3B8.c` | +| 1598 | func_8017D508 | None | | None | near | 113 | residual: 113 mismatch | `.run/backlog_drafts/func_8017D508.c` | +| 1599 | func_8017BEF8 | None | | None | near | 113 | residual: 113 mismatch | `.run/backlog_drafts/func_8017BEF8.c` | +| 1600 | func_8018788C | None | | None | near | 113 | residual: 113 mismatch | `.run/backlog_drafts/func_8018788C.c` | +| 1601 | func_8017E978 | None | | None | near | 115 | residual: 115 mismatch | `.run/backlog_drafts/func_8017E978.c` | +| 1602 | func_80181858 | None | | None | near | 117 | residual: 117 mismatch | `.run/backlog_drafts/func_80181858.c` | +| 1603 | func_80184CD0 | None | | None | near | 118 | residual: 118 mismatch | `.run/backlog_drafts/func_80184CD0.c` | +| 1604 | func_8017E8F8 | None | | None | near | 120 | residual: 120 mismatch | `.run/backlog_drafts/func_8017E8F8.c` | +| 1605 | func_80184358 | None | | None | near | 121 | residual: 121 mismatch | `.run/backlog_drafts/func_80184358.c` | +| 1606 | func_8017F074 | None | | None | near | 121 | residual: 121 mismatch | `.run/backlog_drafts/func_8017F074.c` | +| 1607 | func_8017D890 | None | | None | near | 124 | residual: 124 mismatch | `.run/backlog_drafts/func_8017D890.c` | +| 1608 | func_8017DECC | None | | None | near | 125 | residual: 125 mismatch | `.run/backlog_drafts/func_8017DECC.c` | +| 1609 | func_80185020 | None | | None | near | 125 | residual: 125 mismatch | `.run/backlog_drafts/func_80185020.c` | +| 1610 | func_8017DD2C | None | | None | near | 125 | residual: 125 mismatch | `.run/backlog_drafts/func_8017DD2C.c` | +| 1611 | func_801884BC | None | | None | near | 125 | residual: 125 mismatch | `.run/backlog_drafts/func_801884BC.c` | +| 1612 | func_801821F8 | None | | None | near | 126 | residual: 126 mismatch | `.run/backlog_drafts/func_801821F8.c` | +| 1613 | func_801892CC | None | | None | near | 127 | residual: 127 mismatch | `.run/backlog_drafts/func_801892CC.c` | +| 1614 | func_8017EB00 | None | | None | near | 127 | residual: 127 mismatch | `.run/backlog_drafts/func_8017EB00.c` | +| 1615 | func_8017E538 | None | | None | near | 128 | residual: 128 mismatch | `.run/backlog_drafts/func_8017E538.c` | +| 1616 | func_8017D50C | None | | None | near | 128 | residual: 128 mismatch | `.run/backlog_drafts/func_8017D50C.c` | +| 1617 | func_801803F8 | None | | None | near | 129 | residual: 129 mismatch | `.run/backlog_drafts/func_801803F8.c` | +| 1618 | func_80185E68 | 1 | STRUCT | 132 | near | 131 | STRUCT: 131 mismatch | `.run/backlog_drafts/func_80185E68.c` | +| 1619 | func_80188754 | None | | None | near | 131 | residual: 131 mismatch | `.run/backlog_drafts/func_80188754.c` | +| 1620 | func_8017E378 | None | | None | near | 134 | residual: 134 mismatch | `.run/backlog_drafts/func_8017E378.c` | +| 1621 | func_80185730 | None | | None | near | 136 | residual: 136 mismatch | `.run/backlog_drafts/func_80185730.c` | +| 1622 | func_8018523C | None | | None | near | 136 | residual: 136 mismatch | `.run/backlog_drafts/func_8018523C.c` | +| 1623 | func_80186530 | None | | None | near | 139 | residual: 139 mismatch | `.run/backlog_drafts/func_80186530.c` | +| 1624 | func_80184F08 | None | regalloc-order | None | near | 141 | none — MATCH (145/145 ins, match_one confirmed) | `.run/backlog_drafts/func_80184F08.c` | +| 1625 | func_80185668 | None | | None | near | 142 | residual: 142 mismatch | `.run/backlog_drafts/func_80185668.c` | +| 1626 | func_8017DB0C | None | | None | near | 142 | residual: 142 mismatch | `.run/backlog_drafts/func_8017DB0C.c` | +| 1627 | func_801814B0 | None | | None | near | 144 | residual: 144 mismatch | `.run/backlog_drafts/func_801814B0.c` | +| 1628 | func_801801A4 | None | | None | near | 148 | residual: 148 mismatch | `.run/backlog_drafts/func_801801A4.c` | +| 1629 | func_80180868 | None | | None | near | 148 | residual: 148 mismatch | `.run/backlog_drafts/func_80180868.c` | +| 1630 | func_801829BC | None | | None | near | 150 | residual: 150 mismatch | `.run/backlog_drafts/func_801829BC.c` | +| 1631 | func_8017FBE8 | None | | None | near | 151 | residual: 151 mismatch | `.run/backlog_drafts/func_8017FBE8.c` | +| 1632 | func_8018200C | None | | None | near | 152 | residual: 152 mismatch | `.run/backlog_drafts/func_8018200C.c` | +| 1633 | func_80181984 | None | | None | near | 153 | residual: 153 mismatch | `.run/backlog_drafts/func_80181984.c` | +| 1634 | func_80183280 | None | | None | near | 154 | residual: 154 mismatch | `.run/backlog_drafts/func_80183280.c` | +| 1635 | func_80184CA0 | None | | None | near | 162 | residual: 162 mismatch | `.run/backlog_drafts/func_80184CA0.c` | +| 1636 | func_8017FA54 | None | | None | near | 166 | residual: 166 mismatch | `.run/backlog_drafts/func_8017FA54.c` | +| 1637 | func_8017D708 | None | | None | near | 166 | residual: 166 mismatch | `.run/backlog_drafts/func_8017D708.c` | +| 1638 | func_8017E6EC | None | | None | near | 172 | residual: 172 mismatch | `.run/backlog_drafts/func_8017E6EC.c` | +| 1639 | func_8017D5DC | None | | None | near | 173 | residual: 173 mismatch | `.run/backlog_drafts/func_8017D5DC.c` | +| 1640 | func_8017D47C | None | | None | near | 173 | residual: 173 mismatch | `.run/backlog_drafts/func_8017D47C.c` | +| 1641 | func_8017F40C | None | | None | near | 174 | residual: 174 mismatch | `.run/backlog_drafts/func_8017F40C.c` | +| 1642 | func_80184210 | None | | None | near | 176 | residual: 176 mismatch | `.run/backlog_drafts/func_80184210.c` | +| 1643 | func_80185E34 | None | | None | near | 185 | residual: 185 mismatch | `.run/backlog_drafts/func_80185E34.c` | +| 1644 | func_80180568 | None | | None | near | 185 | residual: 185 mismatch | `.run/backlog_drafts/func_80180568.c` | +| 1645 | func_801809C4 | None | | None | near | 190 | residual: 190 mismatch | `.run/backlog_drafts/func_801809C4.c` | +| 1646 | func_8013BD74 | 1 | struct | 198 | near | 192 | none — MATCH | `.run/backlog_drafts/func_8013BD74.c` | +| 1647 | func_80183D84 | None | | None | near | 192 | residual: 192 mismatch | `.run/backlog_drafts/func_80183D84.c` | +| 1648 | func_80183FEC | None | | None | near | 198 | residual: 198 mismatch | `.run/backlog_drafts/func_80183FEC.c` | +| 1649 | func_801823B8 | None | | None | near | 204 | residual: 204 mismatch | `.run/backlog_drafts/func_801823B8.c` | +| 1650 | func_801826C4 | None | | None | near | 207 | residual: 207 mismatch | `.run/backlog_drafts/func_801826C4.c` | +| 1651 | func_8017E374 | None | | None | near | 234 | residual: 234 mismatch | `.run/backlog_drafts/func_8017E374.c` | +| 1652 | func_8018C3F8 | None | | None | near | 236 | residual: 236 mismatch | `.run/backlog_drafts/func_8018C3F8.c` | +| 1653 | func_80183438 | None | | None | near | 237 | residual: 237 mismatch | `.run/backlog_drafts/func_80183438.c` | +| 1654 | func_8017E7D4 | None | | None | near | 241 | residual: 241 mismatch | `.run/backlog_drafts/func_8017E7D4.c` | +| 1655 | func_80183BF8 | None | | None | near | 258 | residual: 258 mismatch | `.run/backlog_drafts/func_80183BF8.c` | +| 1656 | func_8017EB30 | None | | None | near | 278 | residual: 278 mismatch | `.run/backlog_drafts/func_8017EB30.c` | +| 1657 | func_801804A0 | None | | None | near | 280 | residual: 280 mismatch | `.run/backlog_drafts/func_801804A0.c` | +| 1658 | func_80187EDC | None | | None | near | 296 | residual: 296 mismatch | `.run/backlog_drafts/func_80187EDC.c` | +| 1659 | func_8017F554 | None | | None | near | 299 | residual: 299 mismatch | `.run/backlog_drafts/func_8017F554.c` | +| 1660 | func_8017FEF0 | None | | None | near | 304 | residual: 304 mismatch | `.run/backlog_drafts/func_8017FEF0.c` | +| 1661 | func_80181670 | None | | None | near | 311 | residual: 311 mismatch | `.run/backlog_drafts/func_80181670.c` | +| 1662 | func_801833F0 | None | | None | near | 328 | residual: 328 mismatch | `.run/backlog_drafts/func_801833F0.c` | +| 1663 | func_80181128 | None | | None | near | 385 | residual: 385 mismatch | `.run/backlog_drafts/func_80181128.c` | +| 1664 | func_8017EA84 | None | | None | near | 578 | residual: 578 mismatch | `.run/backlog_drafts/func_8017EA84.c` | +| 1665 | func_8018057C | None | | None | near | 897 | residual: 897 mismatch | `.run/backlog_drafts/func_8018057C.c` | +| 1666 | func_80184A68 | 1 | regalloc-order | 33 | failed | | none — MATCH | `.run/backlog_drafts/func_80184A68.c` | +| 1667 | func_80159A20 | 1 | struct | 58 | failed | | none — MATCH. Key lever: block tail-MERGE (gcc shared `bne ...,$L1` cross-jump) by making the two return-tests STRUCTURALLY DIFFERENT — positive `if(==){goto mask;} return;` per branch (not `if(!=) return;`), so neither tail can merge. Then fix block ORDER by inverting the outer test (`if(d!=1)` makes the ==4/return path the inline fall-through, the d==1/p[2] path the forward `beq`-target block — matching the target layout). | `.run/backlog_drafts/func_80159A20.c` | +| 1668 | func_80180B64 | 1 | struct | 75 | failed | | none — MATCH (75 ins, relocation-masked) | `.run/backlog_drafts/func_80180B64.c` | +| 1669 | func_801789AC | 1 | struct | 91 | failed | | none — MATCH (91 ins, relocation-masked) | `.run/backlog_drafts/func_801789AC.c` | +| 1670 | func_80183DE0 | 1 | regalloc-order | 91 | failed | | testing if(!=1) layout + counter-before-pointer init order | `.run/backlog_drafts/func_80183DE0.c` | +| 1671 | func_80182C9C | 1 | schedule | 101 | failed | | none — MATCH (101 ins). Inner-switch break-to-shared-tail must be written as | `.run/backlog_drafts/func_80182C9C.c` | +| 1672 | func_80183FB8 | 1 | loose-typing | 101 | failed | | none — MATCH (relocation-masked match_one, 101/101 ins) | `.run/backlog_drafts/func_80183FB8.c` | +| 1673 | func_80185BA4 | 1 | WAVE | 177 | failed | | won't compile standalone (loose-typing / missing decl) | | +| 1674 | func_8014D820 | 1 | WAVE | 304 | failed | | won't compile standalone (loose-typing / missing decl) | | +| 1675 | func_8017D8DC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017D8DC.c` | +| 1676 | func_80187750 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80187750.c` | +| 1677 | func_8017FFEC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017FFEC.c` | +| 1678 | func_80184018 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184018.c` | +| 1679 | func_8017DC18 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017DC18.c` | +| 1680 | func_801853CC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801853CC.c` | +| 1681 | func_80181894 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181894.c` | +| 1682 | func_8018BFBC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018BFBC.c` | +| 1683 | func_801807F4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801807F4.c` | +| 1684 | func_8017FFC8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017FFC8.c` | +| 1685 | func_8017E99C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E99C.c` | +| 1686 | func_80180294 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180294.c` | +| 1687 | func_80184504 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184504.c` | +| 1688 | func_80180B1C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180B1C.c` | +| 1689 | func_8017E76C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E76C.c` | +| 1690 | func_8017F29C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F29C.c` | +| 1691 | func_8018253C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018253C.c` | +| 1692 | func_8017F00C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F00C.c` | +| 1693 | func_801802B0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801802B0.c` | +| 1694 | func_80181FDC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181FDC.c` | +| 1695 | func_8017DB3C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017DB3C.c` | +| 1696 | func_801854DC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801854DC.c` | +| 1697 | func_8017DA1C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017DA1C.c` | +| 1698 | func_80180D04 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180D04.c` | +| 1699 | func_8017BF20 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017BF20.c` | +| 1700 | func_8017FFC4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017FFC4.c` | +| 1701 | func_8017C004 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017C004.c` | +| 1702 | func_8017E2F0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E2F0.c` | +| 1703 | func_8017F4D4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F4D4.c` | +| 1704 | func_8018358C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018358C.c` | +| 1705 | func_801841E4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801841E4.c` | +| 1706 | func_80181738 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181738.c` | +| 1707 | func_801873D8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801873D8.c` | +| 1708 | func_80181E90 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181E90.c` | +| 1709 | func_80185628 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80185628.c` | +| 1710 | func_80182384 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80182384.c` | +| 1711 | func_80184268 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184268.c` | +| 1712 | func_80184234 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184234.c` | +| 1713 | func_801829D8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801829D8.c` | +| 1714 | func_80181A78 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181A78.c` | +| 1715 | func_80186E58 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80186E58.c` | +| 1716 | func_80183BF0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80183BF0.c` | +| 1717 | func_80180EC4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180EC4.c` | +| 1718 | func_801805D4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801805D4.c` | +| 1719 | func_8017EA1C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017EA1C.c` | +| 1720 | func_80181FA4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181FA4.c` | +| 1721 | func_80184558 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80184558.c` | +| 1722 | func_8017F098 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F098.c` | +| 1723 | func_801822CC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801822CC.c` | +| 1724 | func_80185BA8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80185BA8.c` | +| 1725 | func_8018E710 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018E710.c` | +| 1726 | func_80183F80 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80183F80.c` | +| 1727 | func_80182D9C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80182D9C.c` | +| 1728 | func_80183028 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80183028.c` | +| 1729 | func_80183104 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80183104.c` | +| 1730 | func_801831EC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801831EC.c` | +| 1731 | func_8018326C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018326C.c` | +| 1732 | func_8018305C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018305C.c` | +| 1733 | func_801852D0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801852D0.c` | +| 1734 | func_8014D820 | None | schedule | None | failed | | structurally complete (LCS 228/304, exact 304-ins count; all calls/consts/control-flow/ | `.run/backlog_drafts/func_8014D820.c` | +| 1735 | func_8017E3F4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E3F4.c` | +| 1736 | func_800D1658 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_800D1658.c` | +| 1737 | func_800D1984 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_800D1984.c` | +| 1738 | func_800D24A0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_800D24A0.c` | diff --git a/docs/decision-log.md b/docs/decision-log.md index 96e65c1af..4748db864 100644 --- a/docs/decision-log.md +++ b/docs/decision-log.md @@ -1523,3 +1523,46 @@ a null oracle for "was the right question asked". Concretely: a gate must ASSERT against belongs to the binary it just built (R32-style — assert the premise, not just the result). That assertion would have failed loudly on the first non-077 CLI run in June. This is the fourth wall in one session, and the fifth this phase, to resolve to our own tooling rather than gcc-2.7.2. + +--- + +## 2026-07-22 (Phase 29, SESSION-11) — the fresh-exemplar sweep is FAMILY-SPECIFIC, not a blanket mechanical ×137 + +**Context + belief.** SESSION-10 closed on a strong claim: "sweeps only pay when they RIDE a fresh ×1 crack; +the discriminator is the exemplar's PROVENANCE — every success templated from a core freshly banked ×1 today, +every refusal from an ov_SC01_077 exemplar." The plan was to crack ov_SC06_018 exemplars fresh and sweep their +h_seq families (Task-5 measured ~1.59pp of fresh families for this one overlay). + +**The experiment.** Two families SESSION-10 had swept 0/137 from an ov077 exemplar — `func_801365B8` (0/133) +and `func_80133AB0` (0/137) — were cracked FRESH in ov_SC06_018 (agent drafts, whole-binary byte-gated ×1), +then swept via `family_sweep --hseq --source ov_SC06_018 --allow-pins` from the fresh exemplar. + +**The result (byte-gated, R22 140/140).** SPLIT: `func_801365B8` → **132/132 siblings banked** (thesis +confirmed — a fresh non-ov077 exemplar unlocked the whole family ov077 could not). `func_80133AB0` → **0/136, +reverted clean** (thesis refuted for this family — the members diverge in more than reloc symbols; no fresh +exemplar remaps into them). + +**The refined finding.** A fresh ×1 crack is **necessary but not sufficient**. The fresh-exemplar sweep is +**family-specific** — the whole-binary byte-gate arbitrates each family, and on this 2-family thesis sample +the sweep rate was ~50%. The SESSION-10 provenance claim holds DIRECTIONALLY (func_801365B8 swept where ov077 +refused) but overstated it as a mechanical ×137. **Consequence:** the ~1.5pp "fresh families" campaign +estimate must be discounted — cracking generates sweep fuel for SOME families, not all, and only the gate +says which. The honest yield model is (families that crack) × (per-family sweep probability), not +(families) × (reach). + +**Why the difference (hypothesis, not yet exhaustively byte-proven).** func_801365B8's members differ only in +per-overlay reloc symbols over a uniform pinned regalloc → the fresh pinned exemplar templates cleanly. +func_80133AB0's members carry per-location immediate/codegen divergence the single exemplar does not share. + +**Tooling caught in the act (R33 — fix the instrument).** The `family_sweep --source` override only searched +`members`, but a freshly-banked source member moves to `matched_members` after a sig-regen, so the override +silently missed it and would have templated from ov077 (a false refutation). Fixed to search both lists — +without it the thesis test would have "confirmed" SESSION-10's refusal for the wrong reason. Second fix: +`cdecl._depth0_spans` now consumes `\`-continuations, so a raw-draft `#define` macro no longer trips +audit-cdecl (the committed, cpp-expanded source was never affected — the gate was reading scratch). + +**Hindsight better-path.** Test the sweep-from-fresh mechanism on ONE family before scoping a 95-target +campaign around it. The calibration cost ~1 wave and delivered a load-bearing correction to the yield model — +exactly the probe-before-scaling discipline (Phase-15/R35). Carry it forward: every fresh core crack this +phase must be followed by a gate-arbitrated sweep attempt, and the sweep's 0/N is data (per-member wall), +not a tooling artifact — provided the tools (`--source`, cdecl) are themselves verified first. diff --git a/docs/family-hseq.md b/docs/family-hseq.md index b38ccd341..fff567873 100644 --- a/docs/family-hseq.md +++ b/docs/family-hseq.md @@ -2,11 +2,11 @@ > Generated by `tools/family_hseq.py` from the 134 overlay sigs + per-overlay src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter. -**Fleet (overlays):** 88.4% fn / 78.7% instr / 67.9% distinct-code matched. Unmatched: 40,898 instances / 2,780,867 ins (22,812 distinct classes). +**Fleet (overlays):** 88.4% fn / 78.7% instr / 67.9% distinct-code matched. Unmatched: 40,896 instances / 2,780,575 ins (22,810 distinct classes). **Tail cross-check (Phase-25 close):** 27,621 tail fns / 1,106,172 ins → 577 h_seq families ≥2, **161 substantial (nins≥80) / 619,509 ins**. -**Full frontier (all unmatched by h_seq):** 2731 target families (≥2 members or a matched sibling) + 3780 singletons (Step-D residue). Substantial: **568 families / 1,486,476 templatable ins**, 70 with a matched sibling (zero-crack). Substantial member classes: 9,388 PURE · 40 IMM · 6 STRUCT-excluded. +**Full frontier (all unmatched by h_seq):** 2731 target families (≥2 members or a matched sibling) + 3780 singletons (Step-D residue). Substantial: **568 families / 1,486,184 templatable ins**, 70 with a matched sibling (zero-crack). Substantial member classes: 9,386 PURE · 40 IMM · 6 STRUCT-excluded. ## Top substantial families (by templatable byte-weight) @@ -30,10 +30,10 @@ | 15 | 165 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80178004 draft-ov077 | 22,770 | | 16 | 154 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | Y | 0x8013c0f8 matched-ov077 | 21,098 | | 17 | 154 | 136 (136/0/0) | 1/136 | per-location | PURE | 2 | · | 0x80144090 matched-ov077 | 20,944 | -| 18 | 155 | 133 (133/0/0) | 1/133 | per-location | PURE | 5 | · | 0x801365b8 matched-ov077 | 20,615 | +| 18 | 155 | 132 (132/0/0) | 1/132 | per-location | PURE | 6 | · | 0x801365b8 matched-ov077 | 20,460 | | 19 | 147 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80177b5c draft-ov077 | 20,286 | -| 20 | 137 | 137 (137/0/0) | 1/137 | per-location | PURE | 1 | · | 0x80133ab0 matched-ov077 | 18,769 | -| 21 | 136 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135260 draft-ov077 | 18,768 | +| 20 | 136 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x80135260 draft-ov077 | 18,768 | +| 21 | 137 | 136 (136/0/0) | 1/136 | per-location | PURE | 2 | · | 0x80133ab0 matched-ov077 | 18,632 | | 22 | 125 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | Y | 0x8012aaac draft-ov077 | 17,250 | | 23 | 123 | 138 (138/0/0) | 1/138 | per-location | PURE | 0 | · | 0x80174cb0 draft-ov077 | 16,974 | | 24 | 3338 | 5 (5/0/0) | 3/5 | cross-address | PURE | 0 | · | 0x8017d960 modal | 16,690 | diff --git a/docs/progress.fleet.md b/docs/progress.fleet.md index 6ec2bfd66..638d13f03 100644 --- a/docs/progress.fleet.md +++ b/docs/progress.fleet.md @@ -4,157 +4,157 @@ # cross-binary collapsible-byte leverage: docs/duplicates.cross.md. # THREE progress metrics (all matter — see the labels): -FLEET fn-count byte-ident: 311769 / 353722 = 88.14% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) -FLEET instr-weighted : 10299493 / 13141652 = 78.4% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) -FLEET distinct-code(uniq): 3782990 / 5634875 = 67.1% (64633/87459 unique fns; the DISTINCT-RE number) +FLEET fn-count byte-ident: 311903 / 353722 = 88.18% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) +FLEET instr-weighted : 10320245 / 13141652 = 78.5% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number) +FLEET distinct-code(uniq): 3802502 / 5634875 = 67.5% (64759/87459 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 436 / 60201 = 0.7% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-06-14; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift) - (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 10299057 / 13081451 = 78.7%) + (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 10319809 / 13081451 = 78.9%) -FLEET REAL substantive : 309914 (of which dedup-shared 234571 via 1849 groups / 234615 instances) +FLEET REAL substantive : 310048 (of which dedup-shared 234571 via 1849 groups / 234615 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) -FLEET INCLUDE_ASM stubs : 41946 +FLEET INCLUDE_ASM stubs : 41812 FLEET matchable : 353722 | binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % | |---|---:|---:|---:|---:|---:|---:| | main | 54 | 2 | 959 | 1055 | 2096 | 50.3% | | resident | 129 | 0 | 0 | 131 | 145 | 90.3% | -| ov_SC01_000 | 2225 | 1707 | 0 | 2225 | 2403 | 92.6% | -| ov_SC01_001 | 2225 | 1707 | 0 | 2227 | 2466 | 90.3% | -| ov_SC01_004 | 2217 | 1698 | 0 | 2218 | 2414 | 91.9% | -| ov_SC01_005 | 2246 | 1720 | 0 | 2246 | 2503 | 89.7% | -| ov_SC01_006 | 2246 | 1720 | 0 | 2246 | 2503 | 89.7% | -| ov_SC01_008 | 2217 | 1698 | 0 | 2219 | 2426 | 91.5% | -| ov_SC01_009 | 2242 | 1699 | 0 | 2243 | 2507 | 89.5% | -| ov_SC01_074 | 2220 | 1699 | 0 | 2222 | 2425 | 91.6% | +| ov_SC01_000 | 2226 | 1707 | 0 | 2226 | 2403 | 92.6% | +| ov_SC01_001 | 2226 | 1707 | 0 | 2228 | 2466 | 90.3% | +| ov_SC01_004 | 2218 | 1698 | 0 | 2219 | 2414 | 91.9% | +| ov_SC01_005 | 2247 | 1720 | 0 | 2247 | 2503 | 89.8% | +| ov_SC01_006 | 2247 | 1720 | 0 | 2247 | 2503 | 89.8% | +| ov_SC01_008 | 2218 | 1698 | 0 | 2220 | 2426 | 91.5% | +| ov_SC01_009 | 2243 | 1699 | 0 | 2244 | 2507 | 89.5% | +| ov_SC01_074 | 2221 | 1699 | 0 | 2223 | 2425 | 91.7% | | ov_SC01_077 | 2411 | 1667 | 0 | 2413 | 2585 | 93.3% | -| ov_SC01_080 | 2259 | 1702 | 0 | 2259 | 2512 | 89.9% | -| ov_SC01_084 | 2266 | 1702 | 0 | 2271 | 2579 | 88.1% | -| ov_SC02_000 | 2319 | 1737 | 0 | 2319 | 2683 | 86.4% | -| ov_SC02_003 | 2319 | 1737 | 0 | 2319 | 2683 | 86.4% | -| ov_SC02_004 | 2225 | 1702 | 0 | 2225 | 2401 | 92.7% | -| ov_SC02_005 | 2332 | 1698 | 0 | 2342 | 2927 | 80.0% | -| ov_SC02_011 | 2343 | 1705 | 0 | 2354 | 2893 | 81.4% | -| ov_SC02_015 | 2226 | 1704 | 0 | 2226 | 2414 | 92.2% | -| ov_SC02_016 | 2257 | 1704 | 0 | 2260 | 2545 | 88.8% | -| ov_SC02_017 | 2303 | 1704 | 0 | 2311 | 2732 | 84.6% | -| ov_SC02_021 | 2232 | 1704 | 0 | 2232 | 2437 | 91.6% | -| ov_SC02_026 | 2247 | 1702 | 0 | 2253 | 2572 | 87.6% | -| ov_SC02_027 | 2270 | 1702 | 0 | 2279 | 2692 | 84.7% | -| ov_SC02_028 | 2271 | 1702 | 0 | 2281 | 2701 | 84.5% | -| ov_SC02_031 | 2257 | 1703 | 0 | 2262 | 2562 | 88.3% | -| ov_SC02_035 | 2233 | 1702 | 0 | 2236 | 2520 | 88.7% | -| ov_SC02_039 | 2218 | 1702 | 0 | 2218 | 2416 | 91.8% | -| ov_SC02_041 | 2253 | 1702 | 0 | 2256 | 2561 | 88.1% | -| ov_SC03_001 | 2354 | 1703 | 0 | 2371 | 2869 | 82.6% | -| ov_SC03_002 | 2280 | 1707 | 0 | 2295 | 2631 | 87.2% | -| ov_SC03_003 | 2228 | 1702 | 0 | 2229 | 2423 | 92.0% | -| ov_SC03_006 | 2293 | 1708 | 0 | 2302 | 2767 | 83.2% | -| ov_SC03_007 | 2273 | 1702 | 0 | 2277 | 2623 | 86.8% | -| ov_SC03_010 | 2234 | 1702 | 0 | 2234 | 2470 | 90.4% | -| ov_SC03_011 | 2242 | 1702 | 0 | 2248 | 2527 | 89.0% | -| ov_SC03_012 | 2220 | 1702 | 0 | 2221 | 2406 | 92.3% | -| ov_SC03_013 | 2239 | 1702 | 0 | 2239 | 2492 | 89.8% | -| ov_SC03_014 | 2298 | 1727 | 0 | 2298 | 2685 | 85.6% | -| ov_SC03_015 | 2298 | 1727 | 0 | 2298 | 2685 | 85.6% | -| ov_SC03_023 | 2226 | 1702 | 0 | 2227 | 2435 | 91.5% | -| ov_SC03_024 | 2285 | 1707 | 0 | 2292 | 2641 | 86.8% | -| ov_SC03_028 | 2266 | 1702 | 0 | 2270 | 2664 | 85.2% | -| ov_SC03_029 | 2268 | 1704 | 0 | 2278 | 2644 | 86.2% | -| ov_SC03_030 | 2241 | 1707 | 0 | 2243 | 2495 | 89.9% | -| ov_SC03_031 | 2238 | 1702 | 0 | 2241 | 2514 | 89.1% | -| ov_SC03_089 | 2252 | 1702 | 0 | 2259 | 2581 | 87.5% | -| ov_SC03_090 | 2254 | 1702 | 0 | 2262 | 2625 | 86.2% | -| ov_SC03_091 | 2257 | 1702 | 0 | 2265 | 2640 | 85.8% | -| ov_SC03_092 | 2268 | 1702 | 0 | 2280 | 2587 | 88.1% | -| ov_SC03_093 | 2244 | 1702 | 0 | 2248 | 2563 | 87.7% | -| ov_SC03_094 | 2239 | 1702 | 0 | 2245 | 2577 | 87.1% | -| ov_SC03_095 | 2229 | 1702 | 0 | 2232 | 2474 | 90.2% | -| ov_SC03_096 | 2229 | 1702 | 0 | 2232 | 2465 | 90.5% | -| ov_SC03_097 | 2258 | 1702 | 0 | 2265 | 2603 | 87.0% | -| ov_SC03_098 | 2237 | 1702 | 0 | 2240 | 2541 | 88.2% | -| ov_SC03_099 | 2230 | 1702 | 0 | 2233 | 2504 | 89.2% | -| ov_SC03_100 | 2240 | 1702 | 0 | 2244 | 2539 | 88.4% | -| ov_SC03_101 | 2240 | 1702 | 0 | 2244 | 2528 | 88.8% | -| ov_SC03_102 | 2232 | 1702 | 0 | 2235 | 2492 | 89.7% | -| ov_SC03_103 | 2235 | 1704 | 0 | 2238 | 2510 | 89.2% | -| ov_SC03_104 | 2260 | 1702 | 0 | 2267 | 2616 | 86.7% | -| ov_SC03_105 | 2254 | 1702 | 0 | 2261 | 2597 | 87.1% | -| ov_SC03_108 | 2222 | 1702 | 0 | 2222 | 2443 | 91.0% | -| ov_SC03_109 | 2223 | 1702 | 0 | 2225 | 2424 | 91.8% | -| ov_SC03_110 | 2228 | 1702 | 0 | 2228 | 2468 | 90.3% | -| ov_SC03_111 | 2240 | 1702 | 0 | 2243 | 2510 | 89.4% | -| ov_SC03_112 | 2233 | 1704 | 0 | 2235 | 2526 | 88.5% | -| ov_SC03_113 | 2226 | 1704 | 0 | 2229 | 2468 | 90.3% | -| ov_SC03_114 | 2216 | 1702 | 0 | 2218 | 2415 | 91.8% | -| ov_SC03_115 | 2233 | 1702 | 0 | 2235 | 2472 | 90.4% | -| ov_SC03_116 | 2223 | 1702 | 0 | 2226 | 2438 | 91.3% | -| ov_SC03_117 | 2251 | 1702 | 0 | 2257 | 2557 | 88.3% | -| ov_SC03_118 | 2298 | 1726 | 0 | 2299 | 2685 | 85.6% | -| ov_SC03_119 | 2297 | 1726 | 0 | 2298 | 2685 | 85.6% | -| ov_SC03_121 | 2230 | 1702 | 0 | 2233 | 2459 | 90.8% | -| ov_SC03_124 | 2310 | 1698 | 0 | 2330 | 2741 | 85.0% | -| ov_SC03_125 | 2267 | 1702 | 0 | 2279 | 2588 | 88.1% | -| ov_SC03_126 | 2229 | 1704 | 0 | 2229 | 2423 | 92.0% | -| ov_SC04_000 | 2245 | 1706 | 0 | 2254 | 2546 | 88.5% | -| ov_SC04_002 | 2261 | 1702 | 0 | 2265 | 2636 | 85.9% | -| ov_SC04_003 | 2239 | 1702 | 0 | 2243 | 2502 | 89.6% | -| ov_SC04_004 | 2248 | 1702 | 0 | 2250 | 2558 | 88.0% | -| ov_SC04_005 | 2256 | 1702 | 0 | 2262 | 2612 | 86.6% | -| ov_SC04_006 | 2229 | 1702 | 0 | 2231 | 2454 | 90.9% | -| ov_SC04_007 | 2249 | 1702 | 0 | 2253 | 2569 | 87.7% | -| ov_SC04_008 | 2219 | 1702 | 0 | 2219 | 2415 | 91.9% | -| ov_SC04_009 | 2235 | 1702 | 0 | 2238 | 2441 | 91.7% | -| ov_SC04_010 | 2226 | 1702 | 0 | 2227 | 2419 | 92.1% | -| ov_SC04_011 | 2282 | 1702 | 0 | 2288 | 2803 | 81.6% | -| ov_SC04_012 | 2222 | 1702 | 0 | 2223 | 2420 | 91.9% | -| ov_SC04_015 | 2287 | 1703 | 0 | 2298 | 2611 | 88.0% | -| ov_SC04_016 | 2225 | 1702 | 0 | 2227 | 2440 | 91.3% | -| ov_SC04_018 | 2337 | 1737 | 0 | 2337 | 2857 | 81.8% | -| ov_SC04_019 | 2343 | 1737 | 0 | 2343 | 2857 | 82.0% | -| ov_SC04_020 | 2254 | 1702 | 0 | 2266 | 2567 | 88.3% | -| ov_SC04_021 | 2230 | 1704 | 0 | 2230 | 2423 | 92.0% | -| ov_SC05_000 | 2226 | 1706 | 0 | 2229 | 2422 | 92.0% | -| ov_SC05_001 | 2249 | 1702 | 0 | 2254 | 2574 | 87.6% | -| ov_SC05_002 | 2231 | 1702 | 0 | 2234 | 2442 | 91.5% | -| ov_SC05_003 | 2228 | 1702 | 0 | 2229 | 2481 | 89.8% | -| ov_SC05_004 | 2223 | 1702 | 0 | 2225 | 2464 | 90.3% | -| ov_SC05_005 | 2230 | 1702 | 0 | 2231 | 2491 | 89.6% | -| ov_SC05_006 | 2222 | 1702 | 0 | 2222 | 2430 | 91.4% | -| ov_SC05_007 | 2232 | 1702 | 0 | 2237 | 2482 | 90.1% | -| ov_SC05_008 | 2249 | 1702 | 0 | 2251 | 2543 | 88.5% | -| ov_SC05_009 | 2227 | 1702 | 0 | 2231 | 2438 | 91.5% | -| ov_SC05_010 | 2253 | 1702 | 0 | 2257 | 2588 | 87.2% | -| ov_SC05_011 | 2225 | 1702 | 0 | 2226 | 2409 | 92.4% | -| ov_SC05_017 | 2333 | 1699 | 0 | 2344 | 2842 | 82.5% | -| ov_SC05_018 | 2280 | 1702 | 0 | 2293 | 2673 | 85.8% | -| ov_SC05_019 | 2230 | 1704 | 0 | 2230 | 2423 | 92.0% | -| ov_SC06_000 | 2292 | 1711 | 0 | 2295 | 2691 | 85.3% | -| ov_SC06_006 | 2245 | 1702 | 0 | 2246 | 2511 | 89.4% | -| ov_SC06_008 | 2255 | 1704 | 0 | 2261 | 2542 | 88.9% | -| ov_SC06_010 | 2238 | 1702 | 0 | 2243 | 2517 | 89.1% | -| ov_SC06_011 | 2234 | 1702 | 0 | 2238 | 2468 | 90.7% | -| ov_SC06_013 | 2227 | 1702 | 0 | 2228 | 2425 | 91.9% | -| ov_SC06_014 | 2233 | 1702 | 0 | 2235 | 2453 | 91.1% | -| ov_SC06_015 | 2230 | 1702 | 0 | 2230 | 2421 | 92.1% | -| ov_SC06_016 | 2248 | 1702 | 0 | 2250 | 2549 | 88.3% | -| ov_SC06_018 | 2247 | 1705 | 0 | 2254 | 2665 | 84.6% | -| ov_SC06_020 | 2237 | 1704 | 0 | 2238 | 2518 | 88.9% | -| ov_SC06_022 | 2251 | 1702 | 0 | 2259 | 2642 | 85.5% | -| ov_SC06_024 | 2257 | 1702 | 0 | 2263 | 2667 | 84.9% | -| ov_SC06_025 | 2248 | 1702 | 0 | 2253 | 2572 | 87.6% | -| ov_SC06_027 | 2216 | 1702 | 0 | 2217 | 2408 | 92.1% | -| ov_SC06_029 | 2274 | 1702 | 0 | 2286 | 2662 | 85.9% | -| ov_SC06_030 | 2229 | 1702 | 0 | 2229 | 2456 | 90.8% | -| ov_SC06_032 | 2241 | 1703 | 0 | 2248 | 2658 | 84.6% | -| ov_SC06_033 | 2244 | 1703 | 0 | 2251 | 2631 | 85.6% | -| ov_SC07_000 | 2244 | 1706 | 0 | 2246 | 2521 | 89.1% | -| ov_SC07_001 | 2229 | 1702 | 0 | 2231 | 2454 | 90.9% | -| ov_SC07_002 | 2256 | 1702 | 0 | 2260 | 2579 | 87.6% | +| ov_SC01_080 | 2260 | 1702 | 0 | 2260 | 2512 | 90.0% | +| ov_SC01_084 | 2267 | 1702 | 0 | 2272 | 2579 | 88.1% | +| ov_SC02_000 | 2320 | 1737 | 0 | 2320 | 2683 | 86.5% | +| ov_SC02_003 | 2320 | 1737 | 0 | 2320 | 2683 | 86.5% | +| ov_SC02_004 | 2226 | 1702 | 0 | 2226 | 2401 | 92.7% | +| ov_SC02_005 | 2333 | 1698 | 0 | 2343 | 2927 | 80.0% | +| ov_SC02_011 | 2344 | 1705 | 0 | 2355 | 2893 | 81.4% | +| ov_SC02_015 | 2227 | 1704 | 0 | 2227 | 2414 | 92.3% | +| ov_SC02_016 | 2258 | 1704 | 0 | 2261 | 2545 | 88.8% | +| ov_SC02_017 | 2304 | 1704 | 0 | 2312 | 2732 | 84.6% | +| ov_SC02_021 | 2233 | 1704 | 0 | 2233 | 2437 | 91.6% | +| ov_SC02_026 | 2248 | 1702 | 0 | 2254 | 2572 | 87.6% | +| ov_SC02_027 | 2271 | 1702 | 0 | 2280 | 2692 | 84.7% | +| ov_SC02_028 | 2272 | 1702 | 0 | 2282 | 2701 | 84.5% | +| ov_SC02_031 | 2258 | 1703 | 0 | 2263 | 2562 | 88.3% | +| ov_SC02_035 | 2234 | 1702 | 0 | 2237 | 2520 | 88.8% | +| ov_SC02_039 | 2219 | 1702 | 0 | 2219 | 2416 | 91.8% | +| ov_SC02_041 | 2254 | 1702 | 0 | 2257 | 2561 | 88.1% | +| ov_SC03_001 | 2355 | 1703 | 0 | 2372 | 2869 | 82.7% | +| ov_SC03_002 | 2281 | 1707 | 0 | 2296 | 2631 | 87.3% | +| ov_SC03_003 | 2229 | 1702 | 0 | 2230 | 2423 | 92.0% | +| ov_SC03_006 | 2294 | 1708 | 0 | 2303 | 2767 | 83.2% | +| ov_SC03_007 | 2274 | 1702 | 0 | 2278 | 2623 | 86.8% | +| ov_SC03_010 | 2235 | 1702 | 0 | 2235 | 2470 | 90.5% | +| ov_SC03_011 | 2243 | 1702 | 0 | 2249 | 2527 | 89.0% | +| ov_SC03_012 | 2221 | 1702 | 0 | 2222 | 2406 | 92.4% | +| ov_SC03_013 | 2240 | 1702 | 0 | 2240 | 2492 | 89.9% | +| ov_SC03_014 | 2299 | 1727 | 0 | 2299 | 2685 | 85.6% | +| ov_SC03_015 | 2299 | 1727 | 0 | 2299 | 2685 | 85.6% | +| ov_SC03_023 | 2227 | 1702 | 0 | 2228 | 2435 | 91.5% | +| ov_SC03_024 | 2286 | 1707 | 0 | 2293 | 2641 | 86.8% | +| ov_SC03_028 | 2267 | 1702 | 0 | 2271 | 2664 | 85.2% | +| ov_SC03_029 | 2269 | 1704 | 0 | 2279 | 2644 | 86.2% | +| ov_SC03_030 | 2242 | 1707 | 0 | 2244 | 2495 | 89.9% | +| ov_SC03_031 | 2239 | 1702 | 0 | 2242 | 2514 | 89.2% | +| ov_SC03_089 | 2253 | 1702 | 0 | 2260 | 2581 | 87.6% | +| ov_SC03_090 | 2255 | 1702 | 0 | 2263 | 2625 | 86.2% | +| ov_SC03_091 | 2258 | 1702 | 0 | 2266 | 2640 | 85.8% | +| ov_SC03_092 | 2269 | 1702 | 0 | 2281 | 2587 | 88.2% | +| ov_SC03_093 | 2245 | 1702 | 0 | 2249 | 2563 | 87.7% | +| ov_SC03_094 | 2240 | 1702 | 0 | 2246 | 2577 | 87.2% | +| ov_SC03_095 | 2230 | 1702 | 0 | 2233 | 2474 | 90.3% | +| ov_SC03_096 | 2230 | 1702 | 0 | 2233 | 2465 | 90.6% | +| ov_SC03_097 | 2259 | 1702 | 0 | 2266 | 2603 | 87.1% | +| ov_SC03_098 | 2238 | 1702 | 0 | 2241 | 2541 | 88.2% | +| ov_SC03_099 | 2231 | 1702 | 0 | 2234 | 2504 | 89.2% | +| ov_SC03_100 | 2241 | 1702 | 0 | 2245 | 2539 | 88.4% | +| ov_SC03_101 | 2241 | 1702 | 0 | 2245 | 2528 | 88.8% | +| ov_SC03_102 | 2233 | 1702 | 0 | 2236 | 2492 | 89.7% | +| ov_SC03_103 | 2236 | 1704 | 0 | 2239 | 2510 | 89.2% | +| ov_SC03_104 | 2261 | 1702 | 0 | 2268 | 2616 | 86.7% | +| ov_SC03_105 | 2255 | 1702 | 0 | 2262 | 2597 | 87.1% | +| ov_SC03_108 | 2223 | 1702 | 0 | 2223 | 2443 | 91.0% | +| ov_SC03_109 | 2224 | 1702 | 0 | 2226 | 2424 | 91.8% | +| ov_SC03_110 | 2229 | 1702 | 0 | 2229 | 2468 | 90.3% | +| ov_SC03_111 | 2241 | 1702 | 0 | 2244 | 2510 | 89.4% | +| ov_SC03_112 | 2234 | 1704 | 0 | 2236 | 2526 | 88.5% | +| ov_SC03_113 | 2227 | 1704 | 0 | 2230 | 2468 | 90.4% | +| ov_SC03_114 | 2217 | 1702 | 0 | 2219 | 2415 | 91.9% | +| ov_SC03_115 | 2234 | 1702 | 0 | 2236 | 2472 | 90.5% | +| ov_SC03_116 | 2224 | 1702 | 0 | 2227 | 2438 | 91.3% | +| ov_SC03_117 | 2252 | 1702 | 0 | 2258 | 2557 | 88.3% | +| ov_SC03_118 | 2299 | 1726 | 0 | 2300 | 2685 | 85.7% | +| ov_SC03_119 | 2298 | 1726 | 0 | 2299 | 2685 | 85.6% | +| ov_SC03_121 | 2231 | 1702 | 0 | 2234 | 2459 | 90.8% | +| ov_SC03_124 | 2311 | 1698 | 0 | 2331 | 2741 | 85.0% | +| ov_SC03_125 | 2268 | 1702 | 0 | 2280 | 2588 | 88.1% | +| ov_SC03_126 | 2230 | 1704 | 0 | 2230 | 2423 | 92.0% | +| ov_SC04_000 | 2246 | 1706 | 0 | 2255 | 2546 | 88.6% | +| ov_SC04_002 | 2262 | 1702 | 0 | 2266 | 2636 | 86.0% | +| ov_SC04_003 | 2240 | 1702 | 0 | 2244 | 2502 | 89.7% | +| ov_SC04_004 | 2249 | 1702 | 0 | 2251 | 2558 | 88.0% | +| ov_SC04_005 | 2257 | 1702 | 0 | 2263 | 2612 | 86.6% | +| ov_SC04_006 | 2230 | 1702 | 0 | 2232 | 2454 | 91.0% | +| ov_SC04_007 | 2250 | 1702 | 0 | 2254 | 2569 | 87.7% | +| ov_SC04_008 | 2220 | 1702 | 0 | 2220 | 2415 | 91.9% | +| ov_SC04_009 | 2236 | 1702 | 0 | 2239 | 2441 | 91.7% | +| ov_SC04_010 | 2227 | 1702 | 0 | 2228 | 2419 | 92.1% | +| ov_SC04_011 | 2283 | 1702 | 0 | 2289 | 2803 | 81.7% | +| ov_SC04_012 | 2223 | 1702 | 0 | 2224 | 2420 | 91.9% | +| ov_SC04_015 | 2288 | 1703 | 0 | 2299 | 2611 | 88.1% | +| ov_SC04_016 | 2226 | 1702 | 0 | 2228 | 2440 | 91.3% | +| ov_SC04_018 | 2338 | 1737 | 0 | 2338 | 2857 | 81.8% | +| ov_SC04_019 | 2344 | 1737 | 0 | 2344 | 2857 | 82.0% | +| ov_SC04_020 | 2255 | 1702 | 0 | 2267 | 2567 | 88.3% | +| ov_SC04_021 | 2231 | 1704 | 0 | 2231 | 2423 | 92.1% | +| ov_SC05_000 | 2227 | 1706 | 0 | 2230 | 2422 | 92.1% | +| ov_SC05_001 | 2250 | 1702 | 0 | 2255 | 2574 | 87.6% | +| ov_SC05_002 | 2232 | 1702 | 0 | 2235 | 2442 | 91.5% | +| ov_SC05_003 | 2229 | 1702 | 0 | 2230 | 2481 | 89.9% | +| ov_SC05_004 | 2224 | 1702 | 0 | 2226 | 2464 | 90.3% | +| ov_SC05_005 | 2231 | 1702 | 0 | 2232 | 2491 | 89.6% | +| ov_SC05_006 | 2223 | 1702 | 0 | 2223 | 2430 | 91.5% | +| ov_SC05_007 | 2233 | 1702 | 0 | 2238 | 2482 | 90.2% | +| ov_SC05_008 | 2250 | 1702 | 0 | 2252 | 2543 | 88.6% | +| ov_SC05_009 | 2228 | 1702 | 0 | 2232 | 2438 | 91.6% | +| ov_SC05_010 | 2254 | 1702 | 0 | 2258 | 2588 | 87.2% | +| ov_SC05_011 | 2226 | 1702 | 0 | 2227 | 2409 | 92.4% | +| ov_SC05_017 | 2334 | 1699 | 0 | 2345 | 2842 | 82.5% | +| ov_SC05_018 | 2281 | 1702 | 0 | 2294 | 2673 | 85.8% | +| ov_SC05_019 | 2231 | 1704 | 0 | 2231 | 2423 | 92.1% | +| ov_SC06_000 | 2293 | 1711 | 0 | 2296 | 2691 | 85.3% | +| ov_SC06_006 | 2246 | 1702 | 0 | 2247 | 2511 | 89.5% | +| ov_SC06_008 | 2256 | 1704 | 0 | 2262 | 2542 | 89.0% | +| ov_SC06_010 | 2239 | 1702 | 0 | 2244 | 2517 | 89.2% | +| ov_SC06_011 | 2235 | 1702 | 0 | 2239 | 2468 | 90.7% | +| ov_SC06_013 | 2228 | 1702 | 0 | 2229 | 2425 | 91.9% | +| ov_SC06_014 | 2234 | 1702 | 0 | 2236 | 2453 | 91.2% | +| ov_SC06_015 | 2231 | 1702 | 0 | 2231 | 2421 | 92.2% | +| ov_SC06_016 | 2249 | 1702 | 0 | 2251 | 2549 | 88.3% | +| ov_SC06_018 | 2249 | 1705 | 0 | 2256 | 2665 | 84.7% | +| ov_SC06_020 | 2238 | 1704 | 0 | 2239 | 2518 | 88.9% | +| ov_SC06_022 | 2252 | 1702 | 0 | 2260 | 2642 | 85.5% | +| ov_SC06_024 | 2258 | 1702 | 0 | 2264 | 2667 | 84.9% | +| ov_SC06_025 | 2249 | 1702 | 0 | 2254 | 2572 | 87.6% | +| ov_SC06_027 | 2217 | 1702 | 0 | 2218 | 2408 | 92.1% | +| ov_SC06_029 | 2275 | 1702 | 0 | 2287 | 2662 | 85.9% | +| ov_SC06_030 | 2230 | 1702 | 0 | 2230 | 2456 | 90.8% | +| ov_SC06_032 | 2242 | 1703 | 0 | 2249 | 2658 | 84.6% | +| ov_SC06_033 | 2245 | 1703 | 0 | 2252 | 2631 | 85.6% | +| ov_SC07_000 | 2245 | 1706 | 0 | 2247 | 2521 | 89.1% | +| ov_SC07_001 | 2230 | 1702 | 0 | 2232 | 2454 | 91.0% | +| ov_SC07_002 | 2257 | 1702 | 0 | 2261 | 2579 | 87.7% | | ov_SC07_006 | 1997 | 1549 | 0 | 2077 | 2456 | 84.6% | | ov_SC07_007 | 2014 | 1550 | 0 | 2098 | 2614 | 80.3% | -| ov_SC07_008 | 2213 | 1702 | 0 | 2213 | 2386 | 92.7% | -| ov_SC07_009 | 2223 | 1702 | 0 | 2225 | 2430 | 91.6% | +| ov_SC07_008 | 2214 | 1702 | 0 | 2214 | 2386 | 92.8% | +| ov_SC07_009 | 2224 | 1702 | 0 | 2226 | 2430 | 91.6% | | ov_SC07_010 | 2025 | 1550 | 0 | 2108 | 2526 | 83.5% | | ov_SC07_011 | 2013 | 1549 | 0 | 2093 | 2450 | 85.4% | diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index dab992363..1b404e1a8 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -1330,3 +1330,40 @@ conditional) · main-EXE/B9 + GLM/B6 + resident's 14 walls (P30) · behemoths B7 > **CARRIED:** 5 t5wave cracks still blocked (2 DIFF, 2 CC1-FAIL, 1 §57) at `.run/giants/t5wave_*` — do > NOT re-draft. **HYGIENE:** a bankless `family_sweep` leaves byte-neutral NSD churn on matched code — > `git checkout -- src/` after a 0-bank sweep (§57a NB); 133 such files reverted at this checkpoint. + +- **✅ 2026-07-22 (SESSION-11, ultracode) — ov_SC06_018 CRACK-WAVE CALIBRATION + the fresh-exemplar-sweep + thesis MEASURED (it is FAMILY-SPECIFIC, not universal). Fleet 78.4→78.5% instr · 67.1→67.5% distinct · + 88.14→88.18% fn-count.** + **Scoping (R33/R35 — corrected the SESSION-10 assumptions vs the bytes via `corpus`):** the ov_SC06_018 + prefetch (`.run/ov_SC06_018_funcs.txt`) = **95 genuine stubs, ALL with cached Ghidra-C**, all substantial + (80–710 ins), **94/95 in jr-carve files but only 12 with an in-body jtbl** (83 bank via plain harvest_verify). + Total family leverage **≈201k ins-instances ≈1.54pp** (confirms Task-5's 1.59pp), concentrated in **5 top + shared-region families** (reach 133–138 ≈115k). Manifest `.run/wave_sc06018_scope.json`. + **Wave (new `tools/workflows/wave_binary.js`, binary-aware; 8-target calibration, 8 xHigh drafters): + 7/8 match_one MATCH, 1 near** (func_80181468 close=70, regalloc-coalescing → permuter fuel). + **BANKED (whole-binary byte-gate, R22 clean-fleet 140/140):** + - **func_801365B8 (155, reach 133) ×138** — the THESIS TEST. SESSION-10 refused this family 0/133 from an + ov077 exemplar; cracked FRESH in ov_SC06_018 + `family_sweep --hseq --source ov_SC06_018 --allow-pins` → + **132/132 siblings banked** (+the ov_SC06_018 ×1). **THESIS CONFIRMED for this family.** (~+20.6k ins.) + - **func_80133AB0 (137, reach 137) ×1** — the OTHER SESSION-10 refusal (0/137). Cracked fresh + banked ×1 + (needed a §17a-1 byte-neutral cast reconcile of the banked caller `func_801343C4`: `int(int,s16,s16,int)` + view preserved via a call-site cast so the def's canonical `s32(s16,s16,s16,s32)` could splice). BUT the + family **sweep FAILED 0/136 even from the fresh exemplar** (reverted clean) — **THESIS REFUTED for this + family**: genuine per-member divergence beyond reloc symbols. + **⇒ THE REFINED FINDING (R14/R31, → decision-log): the fresh-exemplar sweep is FAMILY-SPECIFIC.** A fresh + ×1 crack is NECESSARY but NOT SUFFICIENT; the whole-binary byte-gate arbitrates each family. 1 of 2 + thesis-test families swept (~50% on this tiny sample) → **the ~1.5pp campaign estimate must be discounted** + (not every fresh crack unlocks its family). The SESSION-10 "provenance is the discriminator" thesis holds + DIRECTIONALLY (func_801365B8 swept where ov077 couldn't) but is not a blanket mechanical ×137. + **Tooling fixes (R33, all this session):** (1) `family_sweep --source` override now searches + `matched_members` too (a freshly-banked source member leaves `members` after a sig-regen → the override was + silently missing it → templated from ov077 → refuse); (2) `cdecl._depth0_spans` consumes `\`-continuations + so a raw-draft `#define` macro body no longer leaks bogus "declarations" (audit-cdecl was choking on the + func_80191C50 draft's `XFER` macro; committed source is cpp-expanded so was never affected). + **⚠️ PHANTOM BANK (trust source, not the report — SESSION-10 class):** `gate_stage` reported func_8017D648 + banked but source stayed INCLUDE_ASM. NOT actually banked — needs a real re-bank (callee-conflict reconcile). + **PENDING (staged, next block):** re-bank func_8017D648 (reach 82) + sweep · the **3 high-reach jtbl families** + func_80135EB0/80135260/8012AAAC (×137 each ≈76k ins, members.json staged `.run/jtbl_members_*.json`; need the + §8e exemplar bank then `jtbl_family_bank`) · func_80191C50 ×3 · the near-miss func_80181468 (permuter) · the + **~87 untested ov_SC06_018 targets** (a full wave, gate/bank/sweep). tools-health green (dedup 1849/0, + C1 234615). Commit this block; Drew pushes. diff --git a/src/ov_SC01_000/ov_SC01_000_jr_80135D20.c b/src/ov_SC01_000/ov_SC01_000_jr_80135D20.c index d3c7f8b9f..9b8982790 100644 --- a/src/ov_SC01_000/ov_SC01_000_jr_80135D20.c +++ b/src/ov_SC01_000/ov_SC01_000_jr_80135D20.c @@ -852,7 +852,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F198/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F1A0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F19C; +extern u8 D_8017F198; +extern s16 *D_8017F1A0; +extern u8 D_8017F1A4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F198)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F1A4)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F1A4)[0]; + var_v1 = (*(s16 **)&D_8017F198)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F198; + b4 = D_8017F1A0; + b8 = *(s16 **)&D_8017F1A4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F19C)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F19C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F1A0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F1A0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_001/ov_SC01_001_jr_80135D20.c b/src/ov_SC01_001/ov_SC01_001_jr_80135D20.c index 2b19109be..31743272a 100644 --- a/src/ov_SC01_001/ov_SC01_001_jr_80135D20.c +++ b/src/ov_SC01_001/ov_SC01_001_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80183DE8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80183DF0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80183DEC; +extern u8 D_80183DE8; +extern s16 *D_80183DF0; +extern u8 D_80183DF4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80183DE8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80183DF4)[0]; + } else { + var_a3 = (*(s16 **)&D_80183DF4)[0]; + var_v1 = (*(s16 **)&D_80183DE8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80183DE8; + b4 = D_80183DF0; + b8 = *(s16 **)&D_80183DF4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80183DEC)[1]; + b4[2] = (s16) (*(u16 **)&D_80183DEC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80183DF0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80183DF0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_004/ov_SC01_004_jr_80135D20.c b/src/ov_SC01_004/ov_SC01_004_jr_80135D20.c index e9dd49b9d..f80378414 100644 --- a/src/ov_SC01_004/ov_SC01_004_jr_80135D20.c +++ b/src/ov_SC01_004/ov_SC01_004_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F7AC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F7B4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F7B0; +extern u8 D_8017F7AC; +extern s16 *D_8017F7B4; +extern u8 D_8017F7B8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F7AC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F7B8)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F7B8)[0]; + var_v1 = (*(s16 **)&D_8017F7AC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F7AC; + b4 = D_8017F7B4; + b8 = *(s16 **)&D_8017F7B8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F7B0)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F7B0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F7B4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F7B4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_005/ov_SC01_005_jr_80135D20.c b/src/ov_SC01_005/ov_SC01_005_jr_80135D20.c index 850fbb286..8488b7e41 100644 --- a/src/ov_SC01_005/ov_SC01_005_jr_80135D20.c +++ b/src/ov_SC01_005/ov_SC01_005_jr_80135D20.c @@ -841,7 +841,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80182940/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182948 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182944; +extern u8 D_80182940; +extern s16 *D_80182948; +extern u8 D_8018294C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80182940)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018294C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018294C)[0]; + var_v1 = (*(s16 **)&D_80182940)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80182940; + b4 = D_80182948; + b8 = *(s16 **)&D_8018294C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182944)[1]; + b4[2] = (s16) (*(u16 **)&D_80182944)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182948, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182948, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_006/ov_SC01_006_jr_80135D20.c b/src/ov_SC01_006/ov_SC01_006_jr_80135D20.c index ebdbd1693..00b075aaa 100644 --- a/src/ov_SC01_006/ov_SC01_006_jr_80135D20.c +++ b/src/ov_SC01_006/ov_SC01_006_jr_80135D20.c @@ -841,7 +841,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80182940/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182948 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182944; +extern u8 D_80182940; +extern s16 *D_80182948; +extern u8 D_8018294C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80182940)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018294C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018294C)[0]; + var_v1 = (*(s16 **)&D_80182940)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80182940; + b4 = D_80182948; + b8 = *(s16 **)&D_8018294C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182944)[1]; + b4[2] = (s16) (*(u16 **)&D_80182944)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182948, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182948, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_008/ov_SC01_008_jr_80135D20.c b/src/ov_SC01_008/ov_SC01_008_jr_80135D20.c index 30632660d..ae3478e10 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_80135D20.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017FD20/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017FD28 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017FD24; +extern u8 D_8017FD20; +extern s16 *D_8017FD28; +extern u8 D_8017FD2C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017FD20)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017FD2C)[0]; + } else { + var_a3 = (*(s16 **)&D_8017FD2C)[0]; + var_v1 = (*(s16 **)&D_8017FD20)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017FD20; + b4 = D_8017FD28; + b8 = *(s16 **)&D_8017FD2C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017FD24)[1]; + b4[2] = (s16) (*(u16 **)&D_8017FD24)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017FD28, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017FD28, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_009/ov_SC01_009_jr_80135D20.c b/src/ov_SC01_009/ov_SC01_009_jr_80135D20.c index 5d51b5f9c..2c3b03809 100644 --- a/src/ov_SC01_009/ov_SC01_009_jr_80135D20.c +++ b/src/ov_SC01_009/ov_SC01_009_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80182F08/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182F10 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182F0C; +extern u8 D_80182F08; +extern s16 *D_80182F10; +extern u8 D_80182F14; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80182F08)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182F14)[0]; + } else { + var_a3 = (*(s16 **)&D_80182F14)[0]; + var_v1 = (*(s16 **)&D_80182F08)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80182F08; + b4 = D_80182F10; + b8 = *(s16 **)&D_80182F14; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182F0C)[1]; + b4[2] = (s16) (*(u16 **)&D_80182F0C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182F10, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182F10, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_074/ov_SC01_074_jr_80135D20.c b/src/ov_SC01_074/ov_SC01_074_jr_80135D20.c index fd776f466..c26ddfd2a 100644 --- a/src/ov_SC01_074/ov_SC01_074_jr_80135D20.c +++ b/src/ov_SC01_074/ov_SC01_074_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017EB88/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017EB90 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017EB8C; +extern u8 D_8017EB88; +extern s16 *D_8017EB90; +extern u8 D_8017EB94; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017EB88)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017EB94)[0]; + } else { + var_a3 = (*(s16 **)&D_8017EB94)[0]; + var_v1 = (*(s16 **)&D_8017EB88)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017EB88; + b4 = D_8017EB90; + b8 = *(s16 **)&D_8017EB94; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017EB8C)[1]; + b4[2] = (s16) (*(u16 **)&D_8017EB8C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017EB90, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017EB90, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_080/ov_SC01_080_jr_80135D20.c b/src/ov_SC01_080/ov_SC01_080_jr_80135D20.c index 9c392f420..2eb878a89 100644 --- a/src/ov_SC01_080/ov_SC01_080_jr_80135D20.c +++ b/src/ov_SC01_080/ov_SC01_080_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80183AE8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80183AF0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80183AEC; +extern u8 D_80183AE8; +extern s16 *D_80183AF0; +extern u8 D_80183AF4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80183AE8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80183AF4)[0]; + } else { + var_a3 = (*(s16 **)&D_80183AF4)[0]; + var_v1 = (*(s16 **)&D_80183AE8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80183AE8; + b4 = D_80183AF0; + b8 = *(s16 **)&D_80183AF4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80183AEC)[1]; + b4[2] = (s16) (*(u16 **)&D_80183AEC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80183AF0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80183AF0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC01_084/ov_SC01_084_jr_80135D20.c b/src/ov_SC01_084/ov_SC01_084_jr_80135D20.c index 9431f03bc..9aea83732 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_80135D20.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80186DDC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80186DE4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80186DE0; +extern u8 D_80186DDC; +extern s16 *D_80186DE4; +extern u8 D_80186DE8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80186DDC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80186DE8)[0]; + } else { + var_a3 = (*(s16 **)&D_80186DE8)[0]; + var_v1 = (*(s16 **)&D_80186DDC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80186DDC; + b4 = D_80186DE4; + b8 = *(s16 **)&D_80186DE8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80186DE0)[1]; + b4[2] = (s16) (*(u16 **)&D_80186DE0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80186DE4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80186DE4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_000/ov_SC02_000_jr_80135D20.c b/src/ov_SC02_000/ov_SC02_000_jr_80135D20.c index 797bdba1b..fca514e1d 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_80135D20.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018B18C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018B194 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018B190; +extern u8 D_8018B18C; +extern s16 *D_8018B194; +extern u8 D_8018B198; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018B18C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018B198)[0]; + } else { + var_a3 = (*(s16 **)&D_8018B198)[0]; + var_v1 = (*(s16 **)&D_8018B18C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018B18C; + b4 = D_8018B194; + b8 = *(s16 **)&D_8018B198; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018B190)[1]; + b4[2] = (s16) (*(u16 **)&D_8018B190)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018B194, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018B194, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80135D20.c b/src/ov_SC02_003/ov_SC02_003_jr_80135D20.c index 5be15b9bd..9304dbf62 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_80135D20.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018B18C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018B194 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018B190; +extern u8 D_8018B18C; +extern s16 *D_8018B194; +extern u8 D_8018B198; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018B18C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018B198)[0]; + } else { + var_a3 = (*(s16 **)&D_8018B198)[0]; + var_v1 = (*(s16 **)&D_8018B18C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018B18C; + b4 = D_8018B194; + b8 = *(s16 **)&D_8018B198; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018B190)[1]; + b4[2] = (s16) (*(u16 **)&D_8018B190)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018B194, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018B194, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_004/ov_SC02_004_jr_80135D20.c b/src/ov_SC02_004/ov_SC02_004_jr_80135D20.c index d056695ea..c8fc96698 100644 --- a/src/ov_SC02_004/ov_SC02_004_jr_80135D20.c +++ b/src/ov_SC02_004/ov_SC02_004_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E26C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E274 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E270; +extern u8 D_8017E26C; +extern s16 *D_8017E274; +extern u8 D_8017E278; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E26C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E278)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E278)[0]; + var_v1 = (*(s16 **)&D_8017E26C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E26C; + b4 = D_8017E274; + b8 = *(s16 **)&D_8017E278; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E270)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E270)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E274, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E274, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_005/ov_SC02_005_jr_80135D20.c b/src/ov_SC02_005/ov_SC02_005_jr_80135D20.c index 04cc4f449..3dba7a8cf 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_80135D20.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80190E70/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80190E78 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80190E74; +extern u8 D_80190E70; +extern s16 *D_80190E78; +extern u8 D_80190E7C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80190E70)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80190E7C)[0]; + } else { + var_a3 = (*(s16 **)&D_80190E7C)[0]; + var_v1 = (*(s16 **)&D_80190E70)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80190E70; + b4 = D_80190E78; + b8 = *(s16 **)&D_80190E7C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80190E74)[1]; + b4[2] = (s16) (*(u16 **)&D_80190E74)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80190E78, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80190E78, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_011/ov_SC02_011_jr_80135D20.c b/src/ov_SC02_011/ov_SC02_011_jr_80135D20.c index f8355cfee..35e4c99d9 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_80135D20.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801912C0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801912C8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801912C4; +extern u8 D_801912C0; +extern s16 *D_801912C8; +extern u8 D_801912CC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801912C0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801912CC)[0]; + } else { + var_a3 = (*(s16 **)&D_801912CC)[0]; + var_v1 = (*(s16 **)&D_801912C0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801912C0; + b4 = D_801912C8; + b8 = *(s16 **)&D_801912CC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801912C4)[1]; + b4[2] = (s16) (*(u16 **)&D_801912C4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801912C8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801912C8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_015/ov_SC02_015_jr_80135D20.c b/src/ov_SC02_015/ov_SC02_015_jr_80135D20.c index f269cf3de..41664c087 100644 --- a/src/ov_SC02_015/ov_SC02_015_jr_80135D20.c +++ b/src/ov_SC02_015/ov_SC02_015_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E7D4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E7DC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E7D8; +extern u8 D_8017E7D4; +extern s16 *D_8017E7DC; +extern u8 D_8017E7E0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E7D4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E7E0)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E7E0)[0]; + var_v1 = (*(s16 **)&D_8017E7D4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E7D4; + b4 = D_8017E7DC; + b8 = *(s16 **)&D_8017E7E0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E7D8)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E7D8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E7DC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E7DC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_016/ov_SC02_016_jr_80135D20.c b/src/ov_SC02_016/ov_SC02_016_jr_80135D20.c index 9a3288b38..0099565ce 100644 --- a/src/ov_SC02_016/ov_SC02_016_jr_80135D20.c +++ b/src/ov_SC02_016/ov_SC02_016_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80184A0C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80184A14 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80184A10; +extern u8 D_80184A0C; +extern s16 *D_80184A14; +extern u8 D_80184A18; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80184A0C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80184A18)[0]; + } else { + var_a3 = (*(s16 **)&D_80184A18)[0]; + var_v1 = (*(s16 **)&D_80184A0C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80184A0C; + b4 = D_80184A14; + b8 = *(s16 **)&D_80184A18; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80184A10)[1]; + b4[2] = (s16) (*(u16 **)&D_80184A10)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80184A14, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80184A14, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_017/ov_SC02_017_jr_80135D20.c b/src/ov_SC02_017/ov_SC02_017_jr_80135D20.c index c2a621017..070621c83 100644 --- a/src/ov_SC02_017/ov_SC02_017_jr_80135D20.c +++ b/src/ov_SC02_017/ov_SC02_017_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018AA64/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018AA6C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018AA68; +extern u8 D_8018AA64; +extern s16 *D_8018AA6C; +extern u8 D_8018AA70; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018AA64)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018AA70)[0]; + } else { + var_a3 = (*(s16 **)&D_8018AA70)[0]; + var_v1 = (*(s16 **)&D_8018AA64)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018AA64; + b4 = D_8018AA6C; + b8 = *(s16 **)&D_8018AA70; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018AA68)[1]; + b4[2] = (s16) (*(u16 **)&D_8018AA68)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018AA6C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018AA6C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_021/ov_SC02_021_jr_80135D20.c b/src/ov_SC02_021/ov_SC02_021_jr_80135D20.c index 569f67911..ebca7f7a5 100644 --- a/src/ov_SC02_021/ov_SC02_021_jr_80135D20.c +++ b/src/ov_SC02_021/ov_SC02_021_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80180058/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80180060 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018005C; +extern u8 D_80180058; +extern s16 *D_80180060; +extern u8 D_80180064; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80180058)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80180064)[0]; + } else { + var_a3 = (*(s16 **)&D_80180064)[0]; + var_v1 = (*(s16 **)&D_80180058)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80180058; + b4 = D_80180060; + b8 = *(s16 **)&D_80180064; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018005C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018005C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80180060, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80180060, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_026/ov_SC02_026_jr_80135D20.c b/src/ov_SC02_026/ov_SC02_026_jr_80135D20.c index 0ac4c839b..72c70d5e7 100644 --- a/src/ov_SC02_026/ov_SC02_026_jr_80135D20.c +++ b/src/ov_SC02_026/ov_SC02_026_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801866AC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801866B4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801866B0; +extern u8 D_801866AC; +extern s16 *D_801866B4; +extern u8 D_801866B8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801866AC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801866B8)[0]; + } else { + var_a3 = (*(s16 **)&D_801866B8)[0]; + var_v1 = (*(s16 **)&D_801866AC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801866AC; + b4 = D_801866B4; + b8 = *(s16 **)&D_801866B8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801866B0)[1]; + b4[2] = (s16) (*(u16 **)&D_801866B0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801866B4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801866B4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_027/ov_SC02_027_jr_80135D20.c b/src/ov_SC02_027/ov_SC02_027_jr_80135D20.c index c5f92b8fb..b1e982e44 100644 --- a/src/ov_SC02_027/ov_SC02_027_jr_80135D20.c +++ b/src/ov_SC02_027/ov_SC02_027_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018B7D0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018B7D8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018B7D4; +extern u8 D_8018B7D0; +extern s16 *D_8018B7D8; +extern u8 D_8018B7DC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018B7D0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018B7DC)[0]; + } else { + var_a3 = (*(s16 **)&D_8018B7DC)[0]; + var_v1 = (*(s16 **)&D_8018B7D0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018B7D0; + b4 = D_8018B7D8; + b8 = *(s16 **)&D_8018B7DC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018B7D4)[1]; + b4[2] = (s16) (*(u16 **)&D_8018B7D4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018B7D8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018B7D8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_028/ov_SC02_028_jr_80135D20.c b/src/ov_SC02_028/ov_SC02_028_jr_80135D20.c index f01ca1894..62bfd8948 100644 --- a/src/ov_SC02_028/ov_SC02_028_jr_80135D20.c +++ b/src/ov_SC02_028/ov_SC02_028_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018B9D4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018B9DC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018B9D8; +extern u8 D_8018B9D4; +extern s16 *D_8018B9DC; +extern u8 D_8018B9E0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018B9D4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018B9E0)[0]; + } else { + var_a3 = (*(s16 **)&D_8018B9E0)[0]; + var_v1 = (*(s16 **)&D_8018B9D4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018B9D4; + b4 = D_8018B9DC; + b8 = *(s16 **)&D_8018B9E0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018B9D8)[1]; + b4[2] = (s16) (*(u16 **)&D_8018B9D8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018B9DC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018B9DC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_031/ov_SC02_031_jr_80135D20.c b/src/ov_SC02_031/ov_SC02_031_jr_80135D20.c index a0679bca3..780b2e814 100644 --- a/src/ov_SC02_031/ov_SC02_031_jr_80135D20.c +++ b/src/ov_SC02_031/ov_SC02_031_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80185200/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80185208 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80185204; +extern u8 D_80185200; +extern s16 *D_80185208; +extern u8 D_8018520C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80185200)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018520C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018520C)[0]; + var_v1 = (*(s16 **)&D_80185200)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80185200; + b4 = D_80185208; + b8 = *(s16 **)&D_8018520C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80185204)[1]; + b4[2] = (s16) (*(u16 **)&D_80185204)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80185208, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80185208, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_035/ov_SC02_035_jr_80135D20.c b/src/ov_SC02_035/ov_SC02_035_jr_80135D20.c index 2fc2c0913..47a26bab2 100644 --- a/src/ov_SC02_035/ov_SC02_035_jr_80135D20.c +++ b/src/ov_SC02_035/ov_SC02_035_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80184A60/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80184A68 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80184A64; +extern u8 D_80184A60; +extern s16 *D_80184A68; +extern u8 D_80184A6C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80184A60)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80184A6C)[0]; + } else { + var_a3 = (*(s16 **)&D_80184A6C)[0]; + var_v1 = (*(s16 **)&D_80184A60)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80184A60; + b4 = D_80184A68; + b8 = *(s16 **)&D_80184A6C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80184A64)[1]; + b4[2] = (s16) (*(u16 **)&D_80184A64)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80184A68, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80184A68, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_039/ov_SC02_039_jr_80135D20.c b/src/ov_SC02_039/ov_SC02_039_jr_80135D20.c index 5077bc69f..8881b6b42 100644 --- a/src/ov_SC02_039/ov_SC02_039_jr_80135D20.c +++ b/src/ov_SC02_039/ov_SC02_039_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F68C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F694 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F690; +extern u8 D_8017F68C; +extern s16 *D_8017F694; +extern u8 D_8017F698; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F68C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F698)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F698)[0]; + var_v1 = (*(s16 **)&D_8017F68C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F68C; + b4 = D_8017F694; + b8 = *(s16 **)&D_8017F698; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F690)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F690)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F694, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F694, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC02_041/ov_SC02_041_jr_80135D20.c b/src/ov_SC02_041/ov_SC02_041_jr_80135D20.c index 1e998b32e..64181f788 100644 --- a/src/ov_SC02_041/ov_SC02_041_jr_80135D20.c +++ b/src/ov_SC02_041/ov_SC02_041_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018535C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80185364 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80185360; +extern u8 D_8018535C; +extern s16 *D_80185364; +extern u8 D_80185368; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018535C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80185368)[0]; + } else { + var_a3 = (*(s16 **)&D_80185368)[0]; + var_v1 = (*(s16 **)&D_8018535C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018535C; + b4 = D_80185364; + b8 = *(s16 **)&D_80185368; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80185360)[1]; + b4[2] = (s16) (*(u16 **)&D_80185360)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80185364, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80185364, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_001/ov_SC03_001_jr_80135D20.c b/src/ov_SC03_001/ov_SC03_001_jr_80135D20.c index 391cb3e5e..c18982389 100644 --- a/src/ov_SC03_001/ov_SC03_001_jr_80135D20.c +++ b/src/ov_SC03_001/ov_SC03_001_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018DA9C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018DAA4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018DAA0; +extern u8 D_8018DA9C; +extern s16 *D_8018DAA4; +extern u8 D_8018DAA8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018DA9C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018DAA8)[0]; + } else { + var_a3 = (*(s16 **)&D_8018DAA8)[0]; + var_v1 = (*(s16 **)&D_8018DA9C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018DA9C; + b4 = D_8018DAA4; + b8 = *(s16 **)&D_8018DAA8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018DAA0)[1]; + b4[2] = (s16) (*(u16 **)&D_8018DAA0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018DAA4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018DAA4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_002/ov_SC03_002_jr_80135D20.c b/src/ov_SC03_002/ov_SC03_002_jr_80135D20.c index 315614fcb..b68a48cf2 100644 --- a/src/ov_SC03_002/ov_SC03_002_jr_80135D20.c +++ b/src/ov_SC03_002/ov_SC03_002_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80185A8C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80185A94 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80185A90; +extern u8 D_80185A8C; +extern s16 *D_80185A94; +extern u8 D_80185A98; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80185A8C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80185A98)[0]; + } else { + var_a3 = (*(s16 **)&D_80185A98)[0]; + var_v1 = (*(s16 **)&D_80185A8C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80185A8C; + b4 = D_80185A94; + b8 = *(s16 **)&D_80185A98; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80185A90)[1]; + b4[2] = (s16) (*(u16 **)&D_80185A90)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80185A94, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80185A94, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_003/ov_SC03_003_jr_80135D20.c b/src/ov_SC03_003/ov_SC03_003_jr_80135D20.c index 8efd62b85..737e5c87c 100644 --- a/src/ov_SC03_003/ov_SC03_003_jr_80135D20.c +++ b/src/ov_SC03_003/ov_SC03_003_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F854/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F85C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F858; +extern u8 D_8017F854; +extern s16 *D_8017F85C; +extern u8 D_8017F860; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F854)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F860)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F860)[0]; + var_v1 = (*(s16 **)&D_8017F854)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F854; + b4 = D_8017F85C; + b8 = *(s16 **)&D_8017F860; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F858)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F858)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F85C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F85C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_006/ov_SC03_006_jr_80135D20.c b/src/ov_SC03_006/ov_SC03_006_jr_80135D20.c index db42edb60..95691987f 100644 --- a/src/ov_SC03_006/ov_SC03_006_jr_80135D20.c +++ b/src/ov_SC03_006/ov_SC03_006_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018CB70/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018CB78 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018CB74; +extern u8 D_8018CB70; +extern s16 *D_8018CB78; +extern u8 D_8018CB7C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018CB70)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018CB7C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018CB7C)[0]; + var_v1 = (*(s16 **)&D_8018CB70)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018CB70; + b4 = D_8018CB78; + b8 = *(s16 **)&D_8018CB7C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018CB74)[1]; + b4[2] = (s16) (*(u16 **)&D_8018CB74)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018CB78, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018CB78, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_007/ov_SC03_007_jr_80135D20.c b/src/ov_SC03_007/ov_SC03_007_jr_80135D20.c index 6e6b6925b..1b4a888c7 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_80135D20.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80187968/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80187970 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018796C; +extern u8 D_80187968; +extern s16 *D_80187970; +extern u8 D_80187974; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80187968)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80187974)[0]; + } else { + var_a3 = (*(s16 **)&D_80187974)[0]; + var_v1 = (*(s16 **)&D_80187968)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80187968; + b4 = D_80187970; + b8 = *(s16 **)&D_80187974; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018796C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018796C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80187970, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80187970, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_010/ov_SC03_010_jr_80135D20.c b/src/ov_SC03_010/ov_SC03_010_jr_80135D20.c index 7d4708ecc..12a2c1744 100644 --- a/src/ov_SC03_010/ov_SC03_010_jr_80135D20.c +++ b/src/ov_SC03_010/ov_SC03_010_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80180488/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80180490 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018048C; +extern u8 D_80180488; +extern s16 *D_80180490; +extern u8 D_80180494; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80180488)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80180494)[0]; + } else { + var_a3 = (*(s16 **)&D_80180494)[0]; + var_v1 = (*(s16 **)&D_80180488)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80180488; + b4 = D_80180490; + b8 = *(s16 **)&D_80180494; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018048C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018048C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80180490, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80180490, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_011/ov_SC03_011_jr_80135D20.c b/src/ov_SC03_011/ov_SC03_011_jr_80135D20.c index e9562d60b..c15dc5b50 100644 --- a/src/ov_SC03_011/ov_SC03_011_jr_80135D20.c +++ b/src/ov_SC03_011/ov_SC03_011_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801817F8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80181800 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801817FC; +extern u8 D_801817F8; +extern s16 *D_80181800; +extern u8 D_80181804; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801817F8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80181804)[0]; + } else { + var_a3 = (*(s16 **)&D_80181804)[0]; + var_v1 = (*(s16 **)&D_801817F8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801817F8; + b4 = D_80181800; + b8 = *(s16 **)&D_80181804; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801817FC)[1]; + b4[2] = (s16) (*(u16 **)&D_801817FC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80181800, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80181800, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_012/ov_SC03_012_jr_80135D20.c b/src/ov_SC03_012/ov_SC03_012_jr_80135D20.c index 2eba1b375..44a7ac64c 100644 --- a/src/ov_SC03_012/ov_SC03_012_jr_80135D20.c +++ b/src/ov_SC03_012/ov_SC03_012_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E6D8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E6E0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E6DC; +extern u8 D_8017E6D8; +extern s16 *D_8017E6E0; +extern u8 D_8017E6E4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E6D8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E6E4)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E6E4)[0]; + var_v1 = (*(s16 **)&D_8017E6D8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E6D8; + b4 = D_8017E6E0; + b8 = *(s16 **)&D_8017E6E4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E6DC)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E6DC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E6E0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E6E0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_013/ov_SC03_013_jr_80135D20.c b/src/ov_SC03_013/ov_SC03_013_jr_80135D20.c index cf531e8f9..97ed3bacc 100644 --- a/src/ov_SC03_013/ov_SC03_013_jr_80135D20.c +++ b/src/ov_SC03_013/ov_SC03_013_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801814C0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801814C8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801814C4; +extern u8 D_801814C0; +extern s16 *D_801814C8; +extern u8 D_801814CC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801814C0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801814CC)[0]; + } else { + var_a3 = (*(s16 **)&D_801814CC)[0]; + var_v1 = (*(s16 **)&D_801814C0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801814C0; + b4 = D_801814C8; + b8 = *(s16 **)&D_801814CC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801814C4)[1]; + b4[2] = (s16) (*(u16 **)&D_801814C4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801814C8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801814C8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_014/ov_SC03_014_jr_80135D20.c b/src/ov_SC03_014/ov_SC03_014_jr_80135D20.c index 1116e7110..817b2980d 100644 --- a/src/ov_SC03_014/ov_SC03_014_jr_80135D20.c +++ b/src/ov_SC03_014/ov_SC03_014_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018BAFC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018BB04 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018BB00; +extern u8 D_8018BAFC; +extern s16 *D_8018BB04; +extern u8 D_8018BB08; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018BAFC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018BB08)[0]; + } else { + var_a3 = (*(s16 **)&D_8018BB08)[0]; + var_v1 = (*(s16 **)&D_8018BAFC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018BAFC; + b4 = D_8018BB04; + b8 = *(s16 **)&D_8018BB08; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018BB00)[1]; + b4[2] = (s16) (*(u16 **)&D_8018BB00)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018BB04, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018BB04, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80135D20.c b/src/ov_SC03_015/ov_SC03_015_jr_80135D20.c index bf0d6966f..5042a2fd7 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_80135D20.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018BAFC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018BB04 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018BB00; +extern u8 D_8018BAFC; +extern s16 *D_8018BB04; +extern u8 D_8018BB08; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018BAFC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018BB08)[0]; + } else { + var_a3 = (*(s16 **)&D_8018BB08)[0]; + var_v1 = (*(s16 **)&D_8018BAFC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018BAFC; + b4 = D_8018BB04; + b8 = *(s16 **)&D_8018BB08; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018BB00)[1]; + b4[2] = (s16) (*(u16 **)&D_8018BB00)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018BB04, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018BB04, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_023/ov_SC03_023_jr_80135D20.c b/src/ov_SC03_023/ov_SC03_023_jr_80135D20.c index 77b270b25..a6ba57ba1 100644 --- a/src/ov_SC03_023/ov_SC03_023_jr_80135D20.c +++ b/src/ov_SC03_023/ov_SC03_023_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F478/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F480 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F47C; +extern u8 D_8017F478; +extern s16 *D_8017F480; +extern u8 D_8017F484; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F478)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F484)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F484)[0]; + var_v1 = (*(s16 **)&D_8017F478)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F478; + b4 = D_8017F480; + b8 = *(s16 **)&D_8017F484; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F47C)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F47C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F480, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F480, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_024/ov_SC03_024_jr_80135D20.c b/src/ov_SC03_024/ov_SC03_024_jr_80135D20.c index 54fadbfe6..4588620ac 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_80135D20.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018749C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801874A4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801874A0; +extern u8 D_8018749C; +extern s16 *D_801874A4; +extern u8 D_801874A8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018749C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801874A8)[0]; + } else { + var_a3 = (*(s16 **)&D_801874A8)[0]; + var_v1 = (*(s16 **)&D_8018749C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018749C; + b4 = D_801874A4; + b8 = *(s16 **)&D_801874A8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801874A0)[1]; + b4[2] = (s16) (*(u16 **)&D_801874A0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801874A4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801874A4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_028/ov_SC03_028_jr_80135D20.c b/src/ov_SC03_028/ov_SC03_028_jr_80135D20.c index dc6a22440..b109bf676 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_80135D20.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018BF68/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018BF70 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018BF6C; +extern u8 D_8018BF68; +extern s16 *D_8018BF70; +extern u8 D_8018BF74; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018BF68)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018BF74)[0]; + } else { + var_a3 = (*(s16 **)&D_8018BF74)[0]; + var_v1 = (*(s16 **)&D_8018BF68)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018BF68; + b4 = D_8018BF70; + b8 = *(s16 **)&D_8018BF74; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018BF6C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018BF6C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018BF70, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018BF70, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_029/ov_SC03_029_jr_80135D20.c b/src/ov_SC03_029/ov_SC03_029_jr_80135D20.c index 420ae5dd1..0461e4df0 100644 --- a/src/ov_SC03_029/ov_SC03_029_jr_80135D20.c +++ b/src/ov_SC03_029/ov_SC03_029_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80187DA0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80187DA8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80187DA4; +extern u8 D_80187DA0; +extern s16 *D_80187DA8; +extern u8 D_80187DAC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80187DA0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80187DAC)[0]; + } else { + var_a3 = (*(s16 **)&D_80187DAC)[0]; + var_v1 = (*(s16 **)&D_80187DA0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80187DA0; + b4 = D_80187DA8; + b8 = *(s16 **)&D_80187DAC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80187DA4)[1]; + b4[2] = (s16) (*(u16 **)&D_80187DA4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80187DA8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80187DA8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_030/ov_SC03_030_jr_80135D20.c b/src/ov_SC03_030/ov_SC03_030_jr_80135D20.c index 68805a15e..cd731a0ef 100644 --- a/src/ov_SC03_030/ov_SC03_030_jr_80135D20.c +++ b/src/ov_SC03_030/ov_SC03_030_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801823DC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801823E4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801823E0; +extern u8 D_801823DC; +extern s16 *D_801823E4; +extern u8 D_801823E8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801823DC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801823E8)[0]; + } else { + var_a3 = (*(s16 **)&D_801823E8)[0]; + var_v1 = (*(s16 **)&D_801823DC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801823DC; + b4 = D_801823E4; + b8 = *(s16 **)&D_801823E8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801823E0)[1]; + b4[2] = (s16) (*(u16 **)&D_801823E0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801823E4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801823E4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_031/ov_SC03_031_jr_80135D20.c b/src/ov_SC03_031/ov_SC03_031_jr_80135D20.c index 50954f574..b93edd8b0 100644 --- a/src/ov_SC03_031/ov_SC03_031_jr_80135D20.c +++ b/src/ov_SC03_031/ov_SC03_031_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801828F8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182900 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801828FC; +extern u8 D_801828F8; +extern s16 *D_80182900; +extern u8 D_80182904; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801828F8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182904)[0]; + } else { + var_a3 = (*(s16 **)&D_80182904)[0]; + var_v1 = (*(s16 **)&D_801828F8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801828F8; + b4 = D_80182900; + b8 = *(s16 **)&D_80182904; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801828FC)[1]; + b4[2] = (s16) (*(u16 **)&D_801828FC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182900, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182900, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_089/ov_SC03_089_jr_80135D20.c b/src/ov_SC03_089/ov_SC03_089_jr_80135D20.c index c0461f974..1a9b2cdfe 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_80135D20.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80189BF4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80189BFC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80189BF8; +extern u8 D_80189BF4; +extern s16 *D_80189BFC; +extern u8 D_80189C00; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80189BF4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80189C00)[0]; + } else { + var_a3 = (*(s16 **)&D_80189C00)[0]; + var_v1 = (*(s16 **)&D_80189BF4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80189BF4; + b4 = D_80189BFC; + b8 = *(s16 **)&D_80189C00; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80189BF8)[1]; + b4[2] = (s16) (*(u16 **)&D_80189BF8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80189BFC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80189BFC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_090/ov_SC03_090_jr_80135D20.c b/src/ov_SC03_090/ov_SC03_090_jr_80135D20.c index 7dfda84cc..75662f8bf 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_80135D20.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018C018/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018C020 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018C01C; +extern u8 D_8018C018; +extern s16 *D_8018C020; +extern u8 D_8018C024; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018C018)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018C024)[0]; + } else { + var_a3 = (*(s16 **)&D_8018C024)[0]; + var_v1 = (*(s16 **)&D_8018C018)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018C018; + b4 = D_8018C020; + b8 = *(s16 **)&D_8018C024; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018C01C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018C01C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018C020, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018C020, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_091/ov_SC03_091_jr_80135D20.c b/src/ov_SC03_091/ov_SC03_091_jr_80135D20.c index 9d2620290..e7ea09d39 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_80135D20.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018CEC0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018CEC8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018CEC4; +extern u8 D_8018CEC0; +extern s16 *D_8018CEC8; +extern u8 D_8018CECC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018CEC0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018CECC)[0]; + } else { + var_a3 = (*(s16 **)&D_8018CECC)[0]; + var_v1 = (*(s16 **)&D_8018CEC0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018CEC0; + b4 = D_8018CEC8; + b8 = *(s16 **)&D_8018CECC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018CEC4)[1]; + b4[2] = (s16) (*(u16 **)&D_8018CEC4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018CEC8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018CEC8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_092/ov_SC03_092_jr_80135D20.c b/src/ov_SC03_092/ov_SC03_092_jr_80135D20.c index bf83672cc..1e2e11377 100644 --- a/src/ov_SC03_092/ov_SC03_092_jr_80135D20.c +++ b/src/ov_SC03_092/ov_SC03_092_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80185290/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80185298 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80185294; +extern u8 D_80185290; +extern s16 *D_80185298; +extern u8 D_8018529C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80185290)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018529C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018529C)[0]; + var_v1 = (*(s16 **)&D_80185290)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80185290; + b4 = D_80185298; + b8 = *(s16 **)&D_8018529C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80185294)[1]; + b4[2] = (s16) (*(u16 **)&D_80185294)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80185298, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80185298, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_093/ov_SC03_093_jr_80135D20.c b/src/ov_SC03_093/ov_SC03_093_jr_80135D20.c index 9ffc33279..0f65a0d7d 100644 --- a/src/ov_SC03_093/ov_SC03_093_jr_80135D20.c +++ b/src/ov_SC03_093/ov_SC03_093_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80186468/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80186470 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018646C; +extern u8 D_80186468; +extern s16 *D_80186470; +extern u8 D_80186474; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80186468)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80186474)[0]; + } else { + var_a3 = (*(s16 **)&D_80186474)[0]; + var_v1 = (*(s16 **)&D_80186468)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80186468; + b4 = D_80186470; + b8 = *(s16 **)&D_80186474; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018646C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018646C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80186470, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80186470, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_094/ov_SC03_094_jr_80135D20.c b/src/ov_SC03_094/ov_SC03_094_jr_80135D20.c index b7e16a970..44eeb5279 100644 --- a/src/ov_SC03_094/ov_SC03_094_jr_80135D20.c +++ b/src/ov_SC03_094/ov_SC03_094_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80187E64/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80187E6C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80187E68; +extern u8 D_80187E64; +extern s16 *D_80187E6C; +extern u8 D_80187E70; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80187E64)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80187E70)[0]; + } else { + var_a3 = (*(s16 **)&D_80187E70)[0]; + var_v1 = (*(s16 **)&D_80187E64)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80187E64; + b4 = D_80187E6C; + b8 = *(s16 **)&D_80187E70; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80187E68)[1]; + b4[2] = (s16) (*(u16 **)&D_80187E68)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80187E6C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80187E6C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_095/ov_SC03_095_jr_80135D20.c b/src/ov_SC03_095/ov_SC03_095_jr_80135D20.c index bd9b591db..154e6edcc 100644 --- a/src/ov_SC03_095/ov_SC03_095_jr_80135D20.c +++ b/src/ov_SC03_095/ov_SC03_095_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801814C4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801814CC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801814C8; +extern u8 D_801814C4; +extern s16 *D_801814CC; +extern u8 D_801814D0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801814C4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801814D0)[0]; + } else { + var_a3 = (*(s16 **)&D_801814D0)[0]; + var_v1 = (*(s16 **)&D_801814C4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801814C4; + b4 = D_801814CC; + b8 = *(s16 **)&D_801814D0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801814C8)[1]; + b4[2] = (s16) (*(u16 **)&D_801814C8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801814CC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801814CC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_096/ov_SC03_096_jr_80135D20.c b/src/ov_SC03_096/ov_SC03_096_jr_80135D20.c index f5cc7350a..04475b473 100644 --- a/src/ov_SC03_096/ov_SC03_096_jr_80135D20.c +++ b/src/ov_SC03_096/ov_SC03_096_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80181044/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018104C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80181048; +extern u8 D_80181044; +extern s16 *D_8018104C; +extern u8 D_80181050; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80181044)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80181050)[0]; + } else { + var_a3 = (*(s16 **)&D_80181050)[0]; + var_v1 = (*(s16 **)&D_80181044)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80181044; + b4 = D_8018104C; + b8 = *(s16 **)&D_80181050; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80181048)[1]; + b4[2] = (s16) (*(u16 **)&D_80181048)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018104C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018104C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_097/ov_SC03_097_jr_80135D20.c b/src/ov_SC03_097/ov_SC03_097_jr_80135D20.c index 93d9e72f5..ecf3695d6 100644 --- a/src/ov_SC03_097/ov_SC03_097_jr_80135D20.c +++ b/src/ov_SC03_097/ov_SC03_097_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80186424/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018642C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80186428; +extern u8 D_80186424; +extern s16 *D_8018642C; +extern u8 D_80186430; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80186424)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80186430)[0]; + } else { + var_a3 = (*(s16 **)&D_80186430)[0]; + var_v1 = (*(s16 **)&D_80186424)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80186424; + b4 = D_8018642C; + b8 = *(s16 **)&D_80186430; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80186428)[1]; + b4[2] = (s16) (*(u16 **)&D_80186428)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018642C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018642C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_098/ov_SC03_098_jr_80135D20.c b/src/ov_SC03_098/ov_SC03_098_jr_80135D20.c index 378cadc1f..992cc15e3 100644 --- a/src/ov_SC03_098/ov_SC03_098_jr_80135D20.c +++ b/src/ov_SC03_098/ov_SC03_098_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801858B0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801858B8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801858B4; +extern u8 D_801858B0; +extern s16 *D_801858B8; +extern u8 D_801858BC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801858B0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801858BC)[0]; + } else { + var_a3 = (*(s16 **)&D_801858BC)[0]; + var_v1 = (*(s16 **)&D_801858B0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801858B0; + b4 = D_801858B8; + b8 = *(s16 **)&D_801858BC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801858B4)[1]; + b4[2] = (s16) (*(u16 **)&D_801858B4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801858B8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801858B8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_099/ov_SC03_099_jr_80135D20.c b/src/ov_SC03_099/ov_SC03_099_jr_80135D20.c index 4e122a6e7..3fc7dd90f 100644 --- a/src/ov_SC03_099/ov_SC03_099_jr_80135D20.c +++ b/src/ov_SC03_099/ov_SC03_099_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801839B0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801839B8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801839B4; +extern u8 D_801839B0; +extern s16 *D_801839B8; +extern u8 D_801839BC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801839B0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801839BC)[0]; + } else { + var_a3 = (*(s16 **)&D_801839BC)[0]; + var_v1 = (*(s16 **)&D_801839B0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801839B0; + b4 = D_801839B8; + b8 = *(s16 **)&D_801839BC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801839B4)[1]; + b4[2] = (s16) (*(u16 **)&D_801839B4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801839B8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801839B8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_100/ov_SC03_100_jr_80135D20.c b/src/ov_SC03_100/ov_SC03_100_jr_80135D20.c index c18a02b3d..6182118a9 100644 --- a/src/ov_SC03_100/ov_SC03_100_jr_80135D20.c +++ b/src/ov_SC03_100/ov_SC03_100_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80184E7C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80184E84 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80184E80; +extern u8 D_80184E7C; +extern s16 *D_80184E84; +extern u8 D_80184E88; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80184E7C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80184E88)[0]; + } else { + var_a3 = (*(s16 **)&D_80184E88)[0]; + var_v1 = (*(s16 **)&D_80184E7C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80184E7C; + b4 = D_80184E84; + b8 = *(s16 **)&D_80184E88; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80184E80)[1]; + b4[2] = (s16) (*(u16 **)&D_80184E80)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80184E84, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80184E84, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_101/ov_SC03_101_jr_80135D20.c b/src/ov_SC03_101/ov_SC03_101_jr_80135D20.c index 96892e17f..6d710dd10 100644 --- a/src/ov_SC03_101/ov_SC03_101_jr_80135D20.c +++ b/src/ov_SC03_101/ov_SC03_101_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80183E58/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80183E60 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80183E5C; +extern u8 D_80183E58; +extern s16 *D_80183E60; +extern u8 D_80183E64; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80183E58)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80183E64)[0]; + } else { + var_a3 = (*(s16 **)&D_80183E64)[0]; + var_v1 = (*(s16 **)&D_80183E58)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80183E58; + b4 = D_80183E60; + b8 = *(s16 **)&D_80183E64; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80183E5C)[1]; + b4[2] = (s16) (*(u16 **)&D_80183E5C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80183E60, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80183E60, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_102/ov_SC03_102_jr_80135D20.c b/src/ov_SC03_102/ov_SC03_102_jr_80135D20.c index fe1cc2e9e..9b88bab32 100644 --- a/src/ov_SC03_102/ov_SC03_102_jr_80135D20.c +++ b/src/ov_SC03_102/ov_SC03_102_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80186710/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80186718 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80186714; +extern u8 D_80186710; +extern s16 *D_80186718; +extern u8 D_8018671C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80186710)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018671C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018671C)[0]; + var_v1 = (*(s16 **)&D_80186710)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80186710; + b4 = D_80186718; + b8 = *(s16 **)&D_8018671C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80186714)[1]; + b4[2] = (s16) (*(u16 **)&D_80186714)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80186718, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80186718, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_103/ov_SC03_103_jr_80135D20.c b/src/ov_SC03_103/ov_SC03_103_jr_80135D20.c index 002ab9298..4616e1c20 100644 --- a/src/ov_SC03_103/ov_SC03_103_jr_80135D20.c +++ b/src/ov_SC03_103/ov_SC03_103_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801846C0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801846C8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801846C4; +extern u8 D_801846C0; +extern s16 *D_801846C8; +extern u8 D_801846CC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801846C0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801846CC)[0]; + } else { + var_a3 = (*(s16 **)&D_801846CC)[0]; + var_v1 = (*(s16 **)&D_801846C0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801846C0; + b4 = D_801846C8; + b8 = *(s16 **)&D_801846CC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801846C4)[1]; + b4[2] = (s16) (*(u16 **)&D_801846C4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801846C8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801846C8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_104/ov_SC03_104_jr_80135D20.c b/src/ov_SC03_104/ov_SC03_104_jr_80135D20.c index fbee73dce..60d8af81a 100644 --- a/src/ov_SC03_104/ov_SC03_104_jr_80135D20.c +++ b/src/ov_SC03_104/ov_SC03_104_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018B250/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018B258 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018B254; +extern u8 D_8018B250; +extern s16 *D_8018B258; +extern u8 D_8018B25C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018B250)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018B25C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018B25C)[0]; + var_v1 = (*(s16 **)&D_8018B250)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018B250; + b4 = D_8018B258; + b8 = *(s16 **)&D_8018B25C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018B254)[1]; + b4[2] = (s16) (*(u16 **)&D_8018B254)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018B258, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018B258, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_105/ov_SC03_105_jr_80135D20.c b/src/ov_SC03_105/ov_SC03_105_jr_80135D20.c index 4a356eece..272393648 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_80135D20.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018A8D8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018A8E0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018A8DC; +extern u8 D_8018A8D8; +extern s16 *D_8018A8E0; +extern u8 D_8018A8E4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018A8D8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018A8E4)[0]; + } else { + var_a3 = (*(s16 **)&D_8018A8E4)[0]; + var_v1 = (*(s16 **)&D_8018A8D8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018A8D8; + b4 = D_8018A8E0; + b8 = *(s16 **)&D_8018A8E4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018A8DC)[1]; + b4[2] = (s16) (*(u16 **)&D_8018A8DC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018A8E0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018A8E0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_108/ov_SC03_108_jr_80135D20.c b/src/ov_SC03_108/ov_SC03_108_jr_80135D20.c index e6b654f1a..7f109526b 100644 --- a/src/ov_SC03_108/ov_SC03_108_jr_80135D20.c +++ b/src/ov_SC03_108/ov_SC03_108_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80181230/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80181238 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80181234; +extern u8 D_80181230; +extern s16 *D_80181238; +extern u8 D_8018123C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80181230)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018123C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018123C)[0]; + var_v1 = (*(s16 **)&D_80181230)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80181230; + b4 = D_80181238; + b8 = *(s16 **)&D_8018123C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80181234)[1]; + b4[2] = (s16) (*(u16 **)&D_80181234)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80181238, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80181238, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_109/ov_SC03_109_jr_80135D20.c b/src/ov_SC03_109/ov_SC03_109_jr_80135D20.c index 7bef9735e..14bf1dc92 100644 --- a/src/ov_SC03_109/ov_SC03_109_jr_80135D20.c +++ b/src/ov_SC03_109/ov_SC03_109_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E8DC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E8E4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E8E0; +extern u8 D_8017E8DC; +extern s16 *D_8017E8E4; +extern u8 D_8017E8E8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E8DC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E8E8)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E8E8)[0]; + var_v1 = (*(s16 **)&D_8017E8DC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E8DC; + b4 = D_8017E8E4; + b8 = *(s16 **)&D_8017E8E8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E8E0)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E8E0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E8E4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E8E4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_110/ov_SC03_110_jr_80135D20.c b/src/ov_SC03_110/ov_SC03_110_jr_80135D20.c index a22e5c4d4..13e90cf4a 100644 --- a/src/ov_SC03_110/ov_SC03_110_jr_80135D20.c +++ b/src/ov_SC03_110/ov_SC03_110_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801822FC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182304 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182300; +extern u8 D_801822FC; +extern s16 *D_80182304; +extern u8 D_80182308; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801822FC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182308)[0]; + } else { + var_a3 = (*(s16 **)&D_80182308)[0]; + var_v1 = (*(s16 **)&D_801822FC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801822FC; + b4 = D_80182304; + b8 = *(s16 **)&D_80182308; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182300)[1]; + b4[2] = (s16) (*(u16 **)&D_80182300)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182304, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182304, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_111/ov_SC03_111_jr_80135D20.c b/src/ov_SC03_111/ov_SC03_111_jr_80135D20.c index 7e1f71172..456a9ef8b 100644 --- a/src/ov_SC03_111/ov_SC03_111_jr_80135D20.c +++ b/src/ov_SC03_111/ov_SC03_111_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80184EB0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80184EB8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80184EB4; +extern u8 D_80184EB0; +extern s16 *D_80184EB8; +extern u8 D_80184EBC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80184EB0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80184EBC)[0]; + } else { + var_a3 = (*(s16 **)&D_80184EBC)[0]; + var_v1 = (*(s16 **)&D_80184EB0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80184EB0; + b4 = D_80184EB8; + b8 = *(s16 **)&D_80184EBC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80184EB4)[1]; + b4[2] = (s16) (*(u16 **)&D_80184EB4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80184EB8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80184EB8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_112/ov_SC03_112_jr_80135D20.c b/src/ov_SC03_112/ov_SC03_112_jr_80135D20.c index b75cbf471..2821fd23c 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_80135D20.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80185CB8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80185CC0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80185CBC; +extern u8 D_80185CB8; +extern s16 *D_80185CC0; +extern u8 D_80185CC4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80185CB8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80185CC4)[0]; + } else { + var_a3 = (*(s16 **)&D_80185CC4)[0]; + var_v1 = (*(s16 **)&D_80185CB8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80185CB8; + b4 = D_80185CC0; + b8 = *(s16 **)&D_80185CC4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80185CBC)[1]; + b4[2] = (s16) (*(u16 **)&D_80185CBC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80185CC0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80185CC0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_113/ov_SC03_113_jr_80135D20.c b/src/ov_SC03_113/ov_SC03_113_jr_80135D20.c index da415cec9..83794b500 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_80135D20.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80183368/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80183370 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018336C; +extern u8 D_80183368; +extern s16 *D_80183370; +extern u8 D_80183374; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80183368)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80183374)[0]; + } else { + var_a3 = (*(s16 **)&D_80183374)[0]; + var_v1 = (*(s16 **)&D_80183368)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80183368; + b4 = D_80183370; + b8 = *(s16 **)&D_80183374; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018336C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018336C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80183370, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80183370, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_114/ov_SC03_114_jr_80135D20.c b/src/ov_SC03_114/ov_SC03_114_jr_80135D20.c index 135d136f4..ffc69765e 100644 --- a/src/ov_SC03_114/ov_SC03_114_jr_80135D20.c +++ b/src/ov_SC03_114/ov_SC03_114_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017EFD0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017EFD8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017EFD4; +extern u8 D_8017EFD0; +extern s16 *D_8017EFD8; +extern u8 D_8017EFDC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017EFD0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017EFDC)[0]; + } else { + var_a3 = (*(s16 **)&D_8017EFDC)[0]; + var_v1 = (*(s16 **)&D_8017EFD0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017EFD0; + b4 = D_8017EFD8; + b8 = *(s16 **)&D_8017EFDC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017EFD4)[1]; + b4[2] = (s16) (*(u16 **)&D_8017EFD4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017EFD8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017EFD8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_115/ov_SC03_115_jr_80135D20.c b/src/ov_SC03_115/ov_SC03_115_jr_80135D20.c index 68e42746b..7918b3db7 100644 --- a/src/ov_SC03_115/ov_SC03_115_jr_80135D20.c +++ b/src/ov_SC03_115/ov_SC03_115_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80180A3C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80180A44 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80180A40; +extern u8 D_80180A3C; +extern s16 *D_80180A44; +extern u8 D_80180A48; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80180A3C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80180A48)[0]; + } else { + var_a3 = (*(s16 **)&D_80180A48)[0]; + var_v1 = (*(s16 **)&D_80180A3C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80180A3C; + b4 = D_80180A44; + b8 = *(s16 **)&D_80180A48; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80180A40)[1]; + b4[2] = (s16) (*(u16 **)&D_80180A40)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80180A44, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80180A44, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_116/ov_SC03_116_jr_80135D20.c b/src/ov_SC03_116/ov_SC03_116_jr_80135D20.c index d0e003675..fefd01fb5 100644 --- a/src/ov_SC03_116/ov_SC03_116_jr_80135D20.c +++ b/src/ov_SC03_116/ov_SC03_116_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80182E40/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182E48 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182E44; +extern u8 D_80182E40; +extern s16 *D_80182E48; +extern u8 D_80182E4C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80182E40)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182E4C)[0]; + } else { + var_a3 = (*(s16 **)&D_80182E4C)[0]; + var_v1 = (*(s16 **)&D_80182E40)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80182E40; + b4 = D_80182E48; + b8 = *(s16 **)&D_80182E4C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182E44)[1]; + b4[2] = (s16) (*(u16 **)&D_80182E44)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182E48, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182E48, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_117/ov_SC03_117_jr_80135D20.c b/src/ov_SC03_117/ov_SC03_117_jr_80135D20.c index 6d1a4b1f5..98829b6f2 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_80135D20.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80184E4C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80184E54 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80184E50; +extern u8 D_80184E4C; +extern s16 *D_80184E54; +extern u8 D_80184E58; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80184E4C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80184E58)[0]; + } else { + var_a3 = (*(s16 **)&D_80184E58)[0]; + var_v1 = (*(s16 **)&D_80184E4C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80184E4C; + b4 = D_80184E54; + b8 = *(s16 **)&D_80184E58; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80184E50)[1]; + b4[2] = (s16) (*(u16 **)&D_80184E50)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80184E54, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80184E54, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_118/ov_SC03_118_jr_80135D20.c b/src/ov_SC03_118/ov_SC03_118_jr_80135D20.c index d9670b229..23bdadcfa 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_80135D20.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80189EF8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80189F00 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80189EFC; +extern u8 D_80189EF8; +extern s16 *D_80189F00; +extern u8 D_80189F04; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80189EF8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80189F04)[0]; + } else { + var_a3 = (*(s16 **)&D_80189F04)[0]; + var_v1 = (*(s16 **)&D_80189EF8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80189EF8; + b4 = D_80189F00; + b8 = *(s16 **)&D_80189F04; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80189EFC)[1]; + b4[2] = (s16) (*(u16 **)&D_80189EFC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80189F00, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80189F00, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80135D20.c b/src/ov_SC03_119/ov_SC03_119_jr_80135D20.c index 462b73278..b2532c002 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_80135D20.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80189EF8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80189F00 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80189EFC; +extern u8 D_80189EF8; +extern s16 *D_80189F00; +extern u8 D_80189F04; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80189EF8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80189F04)[0]; + } else { + var_a3 = (*(s16 **)&D_80189F04)[0]; + var_v1 = (*(s16 **)&D_80189EF8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80189EF8; + b4 = D_80189F00; + b8 = *(s16 **)&D_80189F04; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80189EFC)[1]; + b4[2] = (s16) (*(u16 **)&D_80189EFC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80189F00, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80189F00, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_121/ov_SC03_121_jr_80135D20.c b/src/ov_SC03_121/ov_SC03_121_jr_80135D20.c index b5939fbbe..547dae8b9 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_80135D20.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80182714/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018271C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182718; +extern u8 D_80182714; +extern s16 *D_8018271C; +extern u8 D_80182720; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80182714)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182720)[0]; + } else { + var_a3 = (*(s16 **)&D_80182720)[0]; + var_v1 = (*(s16 **)&D_80182714)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80182714; + b4 = D_8018271C; + b8 = *(s16 **)&D_80182720; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182718)[1]; + b4[2] = (s16) (*(u16 **)&D_80182718)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018271C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018271C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_124/ov_SC03_124_jr_80135D20.c b/src/ov_SC03_124/ov_SC03_124_jr_80135D20.c index 5148ec1f9..9eba469eb 100644 --- a/src/ov_SC03_124/ov_SC03_124_jr_80135D20.c +++ b/src/ov_SC03_124/ov_SC03_124_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018B140/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018B148 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018B144; +extern u8 D_8018B140; +extern s16 *D_8018B148; +extern u8 D_8018B14C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018B140)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018B14C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018B14C)[0]; + var_v1 = (*(s16 **)&D_8018B140)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018B140; + b4 = D_8018B148; + b8 = *(s16 **)&D_8018B14C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018B144)[1]; + b4[2] = (s16) (*(u16 **)&D_8018B144)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018B148, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018B148, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_125/ov_SC03_125_jr_80135D20.c b/src/ov_SC03_125/ov_SC03_125_jr_80135D20.c index 9850d154f..e272d9533 100644 --- a/src/ov_SC03_125/ov_SC03_125_jr_80135D20.c +++ b/src/ov_SC03_125/ov_SC03_125_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80184310/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80184318 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80184314; +extern u8 D_80184310; +extern s16 *D_80184318; +extern u8 D_8018431C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80184310)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018431C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018431C)[0]; + var_v1 = (*(s16 **)&D_80184310)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80184310; + b4 = D_80184318; + b8 = *(s16 **)&D_8018431C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80184314)[1]; + b4[2] = (s16) (*(u16 **)&D_80184314)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80184318, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80184318, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC03_126/ov_SC03_126_jr_80135D20.c b/src/ov_SC03_126/ov_SC03_126_jr_80135D20.c index 62bab6636..9fee1b0e3 100644 --- a/src/ov_SC03_126/ov_SC03_126_jr_80135D20.c +++ b/src/ov_SC03_126/ov_SC03_126_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F808/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F810 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F80C; +extern u8 D_8017F808; +extern s16 *D_8017F810; +extern u8 D_8017F814; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F808)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F814)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F814)[0]; + var_v1 = (*(s16 **)&D_8017F808)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F808; + b4 = D_8017F810; + b8 = *(s16 **)&D_8017F814; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F80C)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F80C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F810, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F810, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_000/ov_SC04_000_jr_80135D20.c b/src/ov_SC04_000/ov_SC04_000_jr_80135D20.c index bbbe324e5..caa3ae46c 100644 --- a/src/ov_SC04_000/ov_SC04_000_jr_80135D20.c +++ b/src/ov_SC04_000/ov_SC04_000_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80183814/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018381C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80183818; +extern u8 D_80183814; +extern s16 *D_8018381C; +extern u8 D_80183820; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80183814)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80183820)[0]; + } else { + var_a3 = (*(s16 **)&D_80183820)[0]; + var_v1 = (*(s16 **)&D_80183814)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80183814; + b4 = D_8018381C; + b8 = *(s16 **)&D_80183820; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80183818)[1]; + b4[2] = (s16) (*(u16 **)&D_80183818)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018381C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018381C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_002/ov_SC04_002_jr_80135D20.c b/src/ov_SC04_002/ov_SC04_002_jr_80135D20.c index b3aed547a..1721707b5 100644 --- a/src/ov_SC04_002/ov_SC04_002_jr_80135D20.c +++ b/src/ov_SC04_002/ov_SC04_002_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80188980/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80188988 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80188984; +extern u8 D_80188980; +extern s16 *D_80188988; +extern u8 D_8018898C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80188980)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018898C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018898C)[0]; + var_v1 = (*(s16 **)&D_80188980)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80188980; + b4 = D_80188988; + b8 = *(s16 **)&D_8018898C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80188984)[1]; + b4[2] = (s16) (*(u16 **)&D_80188984)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80188988, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80188988, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_003/ov_SC04_003_jr_80135D20.c b/src/ov_SC04_003/ov_SC04_003_jr_80135D20.c index e1c2f2e44..eb6b35dcc 100644 --- a/src/ov_SC04_003/ov_SC04_003_jr_80135D20.c +++ b/src/ov_SC04_003/ov_SC04_003_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018271C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182724 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182720; +extern u8 D_8018271C; +extern s16 *D_80182724; +extern u8 D_80182728; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018271C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182728)[0]; + } else { + var_a3 = (*(s16 **)&D_80182728)[0]; + var_v1 = (*(s16 **)&D_8018271C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018271C; + b4 = D_80182724; + b8 = *(s16 **)&D_80182728; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182720)[1]; + b4[2] = (s16) (*(u16 **)&D_80182720)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182724, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182724, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_004/ov_SC04_004_jr_80135D20.c b/src/ov_SC04_004/ov_SC04_004_jr_80135D20.c index 84d2eb95b..92b2edc85 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_80135D20.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80184C50/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80184C58 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80184C54; +extern u8 D_80184C50; +extern s16 *D_80184C58; +extern u8 D_80184C5C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80184C50)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80184C5C)[0]; + } else { + var_a3 = (*(s16 **)&D_80184C5C)[0]; + var_v1 = (*(s16 **)&D_80184C50)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80184C50; + b4 = D_80184C58; + b8 = *(s16 **)&D_80184C5C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80184C54)[1]; + b4[2] = (s16) (*(u16 **)&D_80184C54)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80184C58, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80184C58, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_005/ov_SC04_005_jr_80135D20.c b/src/ov_SC04_005/ov_SC04_005_jr_80135D20.c index 49b0cc411..0bd33481c 100644 --- a/src/ov_SC04_005/ov_SC04_005_jr_80135D20.c +++ b/src/ov_SC04_005/ov_SC04_005_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80188084/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018808C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80188088; +extern u8 D_80188084; +extern s16 *D_8018808C; +extern u8 D_80188090; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80188084)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80188090)[0]; + } else { + var_a3 = (*(s16 **)&D_80188090)[0]; + var_v1 = (*(s16 **)&D_80188084)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80188084; + b4 = D_8018808C; + b8 = *(s16 **)&D_80188090; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80188088)[1]; + b4[2] = (s16) (*(u16 **)&D_80188088)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018808C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018808C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_006/ov_SC04_006_jr_80135D20.c b/src/ov_SC04_006/ov_SC04_006_jr_80135D20.c index b9215a308..f53e3cc6e 100644 --- a/src/ov_SC04_006/ov_SC04_006_jr_80135D20.c +++ b/src/ov_SC04_006/ov_SC04_006_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80180164/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018016C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80180168; +extern u8 D_80180164; +extern s16 *D_8018016C; +extern u8 D_80180170; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80180164)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80180170)[0]; + } else { + var_a3 = (*(s16 **)&D_80180170)[0]; + var_v1 = (*(s16 **)&D_80180164)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80180164; + b4 = D_8018016C; + b8 = *(s16 **)&D_80180170; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80180168)[1]; + b4[2] = (s16) (*(u16 **)&D_80180168)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018016C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018016C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_007/ov_SC04_007_jr_80135D20.c b/src/ov_SC04_007/ov_SC04_007_jr_80135D20.c index 7f81b1b42..bc1b7c78d 100644 --- a/src/ov_SC04_007/ov_SC04_007_jr_80135D20.c +++ b/src/ov_SC04_007/ov_SC04_007_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018611C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80186124 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80186120; +extern u8 D_8018611C; +extern s16 *D_80186124; +extern u8 D_80186128; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018611C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80186128)[0]; + } else { + var_a3 = (*(s16 **)&D_80186128)[0]; + var_v1 = (*(s16 **)&D_8018611C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018611C; + b4 = D_80186124; + b8 = *(s16 **)&D_80186128; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80186120)[1]; + b4[2] = (s16) (*(u16 **)&D_80186120)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80186124, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80186124, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_008/ov_SC04_008_jr_80135D20.c b/src/ov_SC04_008/ov_SC04_008_jr_80135D20.c index 8a1506919..0af1e15c8 100644 --- a/src/ov_SC04_008/ov_SC04_008_jr_80135D20.c +++ b/src/ov_SC04_008/ov_SC04_008_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F054/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F05C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F058; +extern u8 D_8017F054; +extern s16 *D_8017F05C; +extern u8 D_8017F060; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F054)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F060)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F060)[0]; + var_v1 = (*(s16 **)&D_8017F054)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F054; + b4 = D_8017F05C; + b8 = *(s16 **)&D_8017F060; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F058)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F058)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F05C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F05C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_009/ov_SC04_009_jr_80135D20.c b/src/ov_SC04_009/ov_SC04_009_jr_80135D20.c index 79c4ecc78..21283074c 100644 --- a/src/ov_SC04_009/ov_SC04_009_jr_80135D20.c +++ b/src/ov_SC04_009/ov_SC04_009_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F080/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F088 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F084; +extern u8 D_8017F080; +extern s16 *D_8017F088; +extern u8 D_8017F08C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F080)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F08C)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F08C)[0]; + var_v1 = (*(s16 **)&D_8017F080)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F080; + b4 = D_8017F088; + b8 = *(s16 **)&D_8017F08C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F084)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F084)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F088, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F088, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_010/ov_SC04_010_jr_80135D20.c b/src/ov_SC04_010/ov_SC04_010_jr_80135D20.c index a4affebb2..b42fc46c8 100644 --- a/src/ov_SC04_010/ov_SC04_010_jr_80135D20.c +++ b/src/ov_SC04_010/ov_SC04_010_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E72C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E734 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E730; +extern u8 D_8017E72C; +extern s16 *D_8017E734; +extern u8 D_8017E738; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E72C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E738)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E738)[0]; + var_v1 = (*(s16 **)&D_8017E72C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E72C; + b4 = D_8017E734; + b8 = *(s16 **)&D_8017E738; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E730)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E730)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E734, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E734, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_011/ov_SC04_011_jr_80135D20.c b/src/ov_SC04_011/ov_SC04_011_jr_80135D20.c index 59c746059..ba64860b9 100644 --- a/src/ov_SC04_011/ov_SC04_011_jr_80135D20.c +++ b/src/ov_SC04_011/ov_SC04_011_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801909BC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801909C4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801909C0; +extern u8 D_801909BC; +extern s16 *D_801909C4; +extern u8 D_801909C8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801909BC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801909C8)[0]; + } else { + var_a3 = (*(s16 **)&D_801909C8)[0]; + var_v1 = (*(s16 **)&D_801909BC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801909BC; + b4 = D_801909C4; + b8 = *(s16 **)&D_801909C8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801909C0)[1]; + b4[2] = (s16) (*(u16 **)&D_801909C0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801909C4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801909C4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_012/ov_SC04_012_jr_80135D20.c b/src/ov_SC04_012/ov_SC04_012_jr_80135D20.c index 5dd94f7f7..25f2cd723 100644 --- a/src/ov_SC04_012/ov_SC04_012_jr_80135D20.c +++ b/src/ov_SC04_012/ov_SC04_012_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017EB90/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017EB98 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017EB94; +extern u8 D_8017EB90; +extern s16 *D_8017EB98; +extern u8 D_8017EB9C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017EB90)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017EB9C)[0]; + } else { + var_a3 = (*(s16 **)&D_8017EB9C)[0]; + var_v1 = (*(s16 **)&D_8017EB90)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017EB90; + b4 = D_8017EB98; + b8 = *(s16 **)&D_8017EB9C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017EB94)[1]; + b4[2] = (s16) (*(u16 **)&D_8017EB94)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017EB98, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017EB98, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_015/ov_SC04_015_jr_80135D20.c b/src/ov_SC04_015/ov_SC04_015_jr_80135D20.c index 14508cd84..74980b214 100644 --- a/src/ov_SC04_015/ov_SC04_015_jr_80135D20.c +++ b/src/ov_SC04_015/ov_SC04_015_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80184AC8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80184AD0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80184ACC; +extern u8 D_80184AC8; +extern s16 *D_80184AD0; +extern u8 D_80184AD4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80184AC8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80184AD4)[0]; + } else { + var_a3 = (*(s16 **)&D_80184AD4)[0]; + var_v1 = (*(s16 **)&D_80184AC8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80184AC8; + b4 = D_80184AD0; + b8 = *(s16 **)&D_80184AD4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80184ACC)[1]; + b4[2] = (s16) (*(u16 **)&D_80184ACC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80184AD0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80184AD0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_016/ov_SC04_016_jr_80135D20.c b/src/ov_SC04_016/ov_SC04_016_jr_80135D20.c index e9162eb12..e39d3b849 100644 --- a/src/ov_SC04_016/ov_SC04_016_jr_80135D20.c +++ b/src/ov_SC04_016/ov_SC04_016_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018058C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80180594 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80180590; +extern u8 D_8018058C; +extern s16 *D_80180594; +extern u8 D_80180598; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018058C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80180598)[0]; + } else { + var_a3 = (*(s16 **)&D_80180598)[0]; + var_v1 = (*(s16 **)&D_8018058C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018058C; + b4 = D_80180594; + b8 = *(s16 **)&D_80180598; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80180590)[1]; + b4[2] = (s16) (*(u16 **)&D_80180590)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80180594, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80180594, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_018/ov_SC04_018_jr_80135D20.c b/src/ov_SC04_018/ov_SC04_018_jr_80135D20.c index 7e0abfbac..8d6914c27 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_80135D20.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018D7A4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018D7AC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018D7A8; +extern u8 D_8018D7A4; +extern s16 *D_8018D7AC; +extern u8 D_8018D7B0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018D7A4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018D7B0)[0]; + } else { + var_a3 = (*(s16 **)&D_8018D7B0)[0]; + var_v1 = (*(s16 **)&D_8018D7A4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018D7A4; + b4 = D_8018D7AC; + b8 = *(s16 **)&D_8018D7B0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018D7A8)[1]; + b4[2] = (s16) (*(u16 **)&D_8018D7A8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018D7AC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018D7AC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80135D20.c b/src/ov_SC04_019/ov_SC04_019_jr_80135D20.c index dcfc6894e..0836c88c4 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_80135D20.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018D7A4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018D7AC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018D7A8; +extern u8 D_8018D7A4; +extern s16 *D_8018D7AC; +extern u8 D_8018D7B0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018D7A4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018D7B0)[0]; + } else { + var_a3 = (*(s16 **)&D_8018D7B0)[0]; + var_v1 = (*(s16 **)&D_8018D7A4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018D7A4; + b4 = D_8018D7AC; + b8 = *(s16 **)&D_8018D7B0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018D7A8)[1]; + b4[2] = (s16) (*(u16 **)&D_8018D7A8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018D7AC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018D7AC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_020/ov_SC04_020_jr_80135D20.c b/src/ov_SC04_020/ov_SC04_020_jr_80135D20.c index 3661be495..8d55aa481 100644 --- a/src/ov_SC04_020/ov_SC04_020_jr_80135D20.c +++ b/src/ov_SC04_020/ov_SC04_020_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801838DC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801838E4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801838E0; +extern u8 D_801838DC; +extern s16 *D_801838E4; +extern u8 D_801838E8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801838DC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801838E8)[0]; + } else { + var_a3 = (*(s16 **)&D_801838E8)[0]; + var_v1 = (*(s16 **)&D_801838DC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801838DC; + b4 = D_801838E4; + b8 = *(s16 **)&D_801838E8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801838E0)[1]; + b4[2] = (s16) (*(u16 **)&D_801838E0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801838E4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801838E4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC04_021/ov_SC04_021_jr_80135D20.c b/src/ov_SC04_021/ov_SC04_021_jr_80135D20.c index 2850b0d47..a2ade8312 100644 --- a/src/ov_SC04_021/ov_SC04_021_jr_80135D20.c +++ b/src/ov_SC04_021/ov_SC04_021_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F808/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F810 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F80C; +extern u8 D_8017F808; +extern s16 *D_8017F810; +extern u8 D_8017F814; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F808)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F814)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F814)[0]; + var_v1 = (*(s16 **)&D_8017F808)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F808; + b4 = D_8017F810; + b8 = *(s16 **)&D_8017F814; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F80C)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F80C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F810, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F810, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_000/ov_SC05_000_jr_80135D20.c b/src/ov_SC05_000/ov_SC05_000_jr_80135D20.c index ae42a58d6..508f200e3 100644 --- a/src/ov_SC05_000/ov_SC05_000_jr_80135D20.c +++ b/src/ov_SC05_000/ov_SC05_000_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E81C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E824 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E820; +extern u8 D_8017E81C; +extern s16 *D_8017E824; +extern u8 D_8017E828; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E81C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E828)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E828)[0]; + var_v1 = (*(s16 **)&D_8017E81C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E81C; + b4 = D_8017E824; + b8 = *(s16 **)&D_8017E828; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E820)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E820)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E824, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E824, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_001/ov_SC05_001_jr_80135D20.c b/src/ov_SC05_001/ov_SC05_001_jr_80135D20.c index b06dfb534..1038b72b2 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_80135D20.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80185FF8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80186000 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80185FFC; +extern u8 D_80185FF8; +extern s16 *D_80186000; +extern u8 D_80186004; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80185FF8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80186004)[0]; + } else { + var_a3 = (*(s16 **)&D_80186004)[0]; + var_v1 = (*(s16 **)&D_80185FF8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80185FF8; + b4 = D_80186000; + b8 = *(s16 **)&D_80186004; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80185FFC)[1]; + b4[2] = (s16) (*(u16 **)&D_80185FFC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80186000, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80186000, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_002/ov_SC05_002_jr_80135D20.c b/src/ov_SC05_002/ov_SC05_002_jr_80135D20.c index 44650a682..b41871048 100644 --- a/src/ov_SC05_002/ov_SC05_002_jr_80135D20.c +++ b/src/ov_SC05_002/ov_SC05_002_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801807B8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801807C0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801807BC; +extern u8 D_801807B8; +extern s16 *D_801807C0; +extern u8 D_801807C4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801807B8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801807C4)[0]; + } else { + var_a3 = (*(s16 **)&D_801807C4)[0]; + var_v1 = (*(s16 **)&D_801807B8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801807B8; + b4 = D_801807C0; + b8 = *(s16 **)&D_801807C4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801807BC)[1]; + b4[2] = (s16) (*(u16 **)&D_801807BC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801807C0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801807C0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_003/ov_SC05_003_jr_80135D20.c b/src/ov_SC05_003/ov_SC05_003_jr_80135D20.c index 14ea31b72..9fc21e2b1 100644 --- a/src/ov_SC05_003/ov_SC05_003_jr_80135D20.c +++ b/src/ov_SC05_003/ov_SC05_003_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80182AF0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182AF8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182AF4; +extern u8 D_80182AF0; +extern s16 *D_80182AF8; +extern u8 D_80182AFC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80182AF0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182AFC)[0]; + } else { + var_a3 = (*(s16 **)&D_80182AFC)[0]; + var_v1 = (*(s16 **)&D_80182AF0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80182AF0; + b4 = D_80182AF8; + b8 = *(s16 **)&D_80182AFC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182AF4)[1]; + b4[2] = (s16) (*(u16 **)&D_80182AF4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182AF8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182AF8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_004/ov_SC05_004_jr_80135D20.c b/src/ov_SC05_004/ov_SC05_004_jr_80135D20.c index 8f759cdcc..432864258 100644 --- a/src/ov_SC05_004/ov_SC05_004_jr_80135D20.c +++ b/src/ov_SC05_004/ov_SC05_004_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80181BFC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80181C04 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80181C00; +extern u8 D_80181BFC; +extern s16 *D_80181C04; +extern u8 D_80181C08; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80181BFC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80181C08)[0]; + } else { + var_a3 = (*(s16 **)&D_80181C08)[0]; + var_v1 = (*(s16 **)&D_80181BFC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80181BFC; + b4 = D_80181C04; + b8 = *(s16 **)&D_80181C08; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80181C00)[1]; + b4[2] = (s16) (*(u16 **)&D_80181C00)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80181C04, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80181C04, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_005/ov_SC05_005_jr_80135D20.c b/src/ov_SC05_005/ov_SC05_005_jr_80135D20.c index 50ee86da8..389979fbb 100644 --- a/src/ov_SC05_005/ov_SC05_005_jr_80135D20.c +++ b/src/ov_SC05_005/ov_SC05_005_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801829D0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801829D8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801829D4; +extern u8 D_801829D0; +extern s16 *D_801829D8; +extern u8 D_801829DC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801829D0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801829DC)[0]; + } else { + var_a3 = (*(s16 **)&D_801829DC)[0]; + var_v1 = (*(s16 **)&D_801829D0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801829D0; + b4 = D_801829D8; + b8 = *(s16 **)&D_801829DC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801829D4)[1]; + b4[2] = (s16) (*(u16 **)&D_801829D4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801829D8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801829D8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_006/ov_SC05_006_jr_80135D20.c b/src/ov_SC05_006/ov_SC05_006_jr_80135D20.c index 5dc219445..a42bbb8c3 100644 --- a/src/ov_SC05_006/ov_SC05_006_jr_80135D20.c +++ b/src/ov_SC05_006/ov_SC05_006_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F9F0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F9F8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F9F4; +extern u8 D_8017F9F0; +extern s16 *D_8017F9F8; +extern u8 D_8017F9FC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F9F0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F9FC)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F9FC)[0]; + var_v1 = (*(s16 **)&D_8017F9F0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F9F0; + b4 = D_8017F9F8; + b8 = *(s16 **)&D_8017F9FC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F9F4)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F9F4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F9F8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F9F8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_007/ov_SC05_007_jr_80135D20.c b/src/ov_SC05_007/ov_SC05_007_jr_80135D20.c index c9e6be2fe..d20dd65f0 100644 --- a/src/ov_SC05_007/ov_SC05_007_jr_80135D20.c +++ b/src/ov_SC05_007/ov_SC05_007_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80180FEC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80180FF4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80180FF0; +extern u8 D_80180FEC; +extern s16 *D_80180FF4; +extern u8 D_80180FF8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80180FEC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80180FF8)[0]; + } else { + var_a3 = (*(s16 **)&D_80180FF8)[0]; + var_v1 = (*(s16 **)&D_80180FEC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80180FEC; + b4 = D_80180FF4; + b8 = *(s16 **)&D_80180FF8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80180FF0)[1]; + b4[2] = (s16) (*(u16 **)&D_80180FF0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80180FF4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80180FF4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_008/ov_SC05_008_jr_80135D20.c b/src/ov_SC05_008/ov_SC05_008_jr_80135D20.c index 5c2d3cea2..31f8b13d0 100644 --- a/src/ov_SC05_008/ov_SC05_008_jr_80135D20.c +++ b/src/ov_SC05_008/ov_SC05_008_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80182F44/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182F4C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182F48; +extern u8 D_80182F44; +extern s16 *D_80182F4C; +extern u8 D_80182F50; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80182F44)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182F50)[0]; + } else { + var_a3 = (*(s16 **)&D_80182F50)[0]; + var_v1 = (*(s16 **)&D_80182F44)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80182F44; + b4 = D_80182F4C; + b8 = *(s16 **)&D_80182F50; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182F48)[1]; + b4[2] = (s16) (*(u16 **)&D_80182F48)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182F4C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182F4C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_009/ov_SC05_009_jr_80135D20.c b/src/ov_SC05_009/ov_SC05_009_jr_80135D20.c index 3a92544a2..0faf1be69 100644 --- a/src/ov_SC05_009/ov_SC05_009_jr_80135D20.c +++ b/src/ov_SC05_009/ov_SC05_009_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F054/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F05C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F058; +extern u8 D_8017F054; +extern s16 *D_8017F05C; +extern u8 D_8017F060; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F054)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F060)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F060)[0]; + var_v1 = (*(s16 **)&D_8017F054)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F054; + b4 = D_8017F05C; + b8 = *(s16 **)&D_8017F060; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F058)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F058)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F05C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F05C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_010/ov_SC05_010_jr_80135D20.c b/src/ov_SC05_010/ov_SC05_010_jr_80135D20.c index 4f6f0664b..a4bc0729a 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_80135D20.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80188F30/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80188F38 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80188F34; +extern u8 D_80188F30; +extern s16 *D_80188F38; +extern u8 D_80188F3C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80188F30)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80188F3C)[0]; + } else { + var_a3 = (*(s16 **)&D_80188F3C)[0]; + var_v1 = (*(s16 **)&D_80188F30)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80188F30; + b4 = D_80188F38; + b8 = *(s16 **)&D_80188F3C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80188F34)[1]; + b4[2] = (s16) (*(u16 **)&D_80188F34)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80188F38, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80188F38, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_011/ov_SC05_011_jr_80135D20.c b/src/ov_SC05_011/ov_SC05_011_jr_80135D20.c index 8fd0db245..19176aa1f 100644 --- a/src/ov_SC05_011/ov_SC05_011_jr_80135D20.c +++ b/src/ov_SC05_011/ov_SC05_011_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E2A8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E2B0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E2AC; +extern u8 D_8017E2A8; +extern s16 *D_8017E2B0; +extern u8 D_8017E2B4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E2A8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E2B4)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E2B4)[0]; + var_v1 = (*(s16 **)&D_8017E2A8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E2A8; + b4 = D_8017E2B0; + b8 = *(s16 **)&D_8017E2B4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E2AC)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E2AC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E2B0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E2B0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_017/ov_SC05_017_jr_80135D20.c b/src/ov_SC05_017/ov_SC05_017_jr_80135D20.c index 8dbcec3d7..f9b8a8b02 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_80135D20.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018D768/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018D770 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018D76C; +extern u8 D_8018D768; +extern s16 *D_8018D770; +extern u8 D_8018D774; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018D768)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018D774)[0]; + } else { + var_a3 = (*(s16 **)&D_8018D774)[0]; + var_v1 = (*(s16 **)&D_8018D768)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018D768; + b4 = D_8018D770; + b8 = *(s16 **)&D_8018D774; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018D76C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018D76C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018D770, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018D770, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_018/ov_SC05_018_jr_80135D20.c b/src/ov_SC05_018/ov_SC05_018_jr_80135D20.c index 9487cbbbf..5ae8946de 100644 --- a/src/ov_SC05_018/ov_SC05_018_jr_80135D20.c +++ b/src/ov_SC05_018/ov_SC05_018_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80186EC4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80186ECC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80186EC8; +extern u8 D_80186EC4; +extern s16 *D_80186ECC; +extern u8 D_80186ED0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80186EC4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80186ED0)[0]; + } else { + var_a3 = (*(s16 **)&D_80186ED0)[0]; + var_v1 = (*(s16 **)&D_80186EC4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80186EC4; + b4 = D_80186ECC; + b8 = *(s16 **)&D_80186ED0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80186EC8)[1]; + b4[2] = (s16) (*(u16 **)&D_80186EC8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80186ECC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80186ECC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC05_019/ov_SC05_019_jr_80135D20.c b/src/ov_SC05_019/ov_SC05_019_jr_80135D20.c index fbeb99a48..b47645f7d 100644 --- a/src/ov_SC05_019/ov_SC05_019_jr_80135D20.c +++ b/src/ov_SC05_019/ov_SC05_019_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F808/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F810 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F80C; +extern u8 D_8017F808; +extern s16 *D_8017F810; +extern u8 D_8017F814; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F808)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F814)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F814)[0]; + var_v1 = (*(s16 **)&D_8017F808)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F808; + b4 = D_8017F810; + b8 = *(s16 **)&D_8017F814; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F80C)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F80C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F810, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F810, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_000/ov_SC06_000_jr_80135D20.c b/src/ov_SC06_000/ov_SC06_000_jr_80135D20.c index 73403d3a4..f2dbfc446 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_80135D20.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80188818/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80188820 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018881C; +extern u8 D_80188818; +extern s16 *D_80188820; +extern u8 D_80188824; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80188818)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80188824)[0]; + } else { + var_a3 = (*(s16 **)&D_80188824)[0]; + var_v1 = (*(s16 **)&D_80188818)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80188818; + b4 = D_80188820; + b8 = *(s16 **)&D_80188824; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018881C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018881C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80188820, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80188820, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_006/ov_SC06_006_jr_80135D20.c b/src/ov_SC06_006/ov_SC06_006_jr_80135D20.c index a3661bae8..044551a4a 100644 --- a/src/ov_SC06_006/ov_SC06_006_jr_80135D20.c +++ b/src/ov_SC06_006/ov_SC06_006_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018233C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182344 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182340; +extern u8 D_8018233C; +extern s16 *D_80182344; +extern u8 D_80182348; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018233C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182348)[0]; + } else { + var_a3 = (*(s16 **)&D_80182348)[0]; + var_v1 = (*(s16 **)&D_8018233C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018233C; + b4 = D_80182344; + b8 = *(s16 **)&D_80182348; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182340)[1]; + b4[2] = (s16) (*(u16 **)&D_80182340)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182344, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182344, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_008/ov_SC06_008_jr_80135D20.c b/src/ov_SC06_008/ov_SC06_008_jr_80135D20.c index b6f86c786..5280cc582 100644 --- a/src/ov_SC06_008/ov_SC06_008_jr_80135D20.c +++ b/src/ov_SC06_008/ov_SC06_008_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80185DA4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80185DAC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80185DA8; +extern u8 D_80185DA4; +extern s16 *D_80185DAC; +extern u8 D_80185DB0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80185DA4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80185DB0)[0]; + } else { + var_a3 = (*(s16 **)&D_80185DB0)[0]; + var_v1 = (*(s16 **)&D_80185DA4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80185DA4; + b4 = D_80185DAC; + b8 = *(s16 **)&D_80185DB0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80185DA8)[1]; + b4[2] = (s16) (*(u16 **)&D_80185DA8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80185DAC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80185DAC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_010/ov_SC06_010_jr_80135D20.c b/src/ov_SC06_010/ov_SC06_010_jr_80135D20.c index 6013102b4..d03dd14ee 100644 --- a/src/ov_SC06_010/ov_SC06_010_jr_80135D20.c +++ b/src/ov_SC06_010/ov_SC06_010_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80186F80/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80186F88 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80186F84; +extern u8 D_80186F80; +extern s16 *D_80186F88; +extern u8 D_80186F8C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80186F80)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80186F8C)[0]; + } else { + var_a3 = (*(s16 **)&D_80186F8C)[0]; + var_v1 = (*(s16 **)&D_80186F80)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80186F80; + b4 = D_80186F88; + b8 = *(s16 **)&D_80186F8C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80186F84)[1]; + b4[2] = (s16) (*(u16 **)&D_80186F84)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80186F88, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80186F88, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_011/ov_SC06_011_jr_80135D20.c b/src/ov_SC06_011/ov_SC06_011_jr_80135D20.c index 35cde9061..903232996 100644 --- a/src/ov_SC06_011/ov_SC06_011_jr_80135D20.c +++ b/src/ov_SC06_011/ov_SC06_011_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801809E0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801809E8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801809E4; +extern u8 D_801809E0; +extern s16 *D_801809E8; +extern u8 D_801809EC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801809E0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801809EC)[0]; + } else { + var_a3 = (*(s16 **)&D_801809EC)[0]; + var_v1 = (*(s16 **)&D_801809E0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801809E0; + b4 = D_801809E8; + b8 = *(s16 **)&D_801809EC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801809E4)[1]; + b4[2] = (s16) (*(u16 **)&D_801809E4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801809E8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801809E8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_013/ov_SC06_013_jr_80135D20.c b/src/ov_SC06_013/ov_SC06_013_jr_80135D20.c index 0ea29bde5..a7d6c21b3 100644 --- a/src/ov_SC06_013/ov_SC06_013_jr_80135D20.c +++ b/src/ov_SC06_013/ov_SC06_013_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F15C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F164 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F160; +extern u8 D_8017F15C; +extern s16 *D_8017F164; +extern u8 D_8017F168; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F15C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F168)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F168)[0]; + var_v1 = (*(s16 **)&D_8017F15C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F15C; + b4 = D_8017F164; + b8 = *(s16 **)&D_8017F168; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F160)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F160)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F164, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F164, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_014/ov_SC06_014_jr_80135D20.c b/src/ov_SC06_014/ov_SC06_014_jr_80135D20.c index 29cfc0f52..bcfd5c8c1 100644 --- a/src/ov_SC06_014/ov_SC06_014_jr_80135D20.c +++ b/src/ov_SC06_014/ov_SC06_014_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801804C0/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801804C8 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801804C4; +extern u8 D_801804C0; +extern s16 *D_801804C8; +extern u8 D_801804CC; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801804C0)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801804CC)[0]; + } else { + var_a3 = (*(s16 **)&D_801804CC)[0]; + var_v1 = (*(s16 **)&D_801804C0)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801804C0; + b4 = D_801804C8; + b8 = *(s16 **)&D_801804CC; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801804C4)[1]; + b4[2] = (s16) (*(u16 **)&D_801804C4)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801804C8, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801804C8, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_015/ov_SC06_015_jr_80135D20.c b/src/ov_SC06_015/ov_SC06_015_jr_80135D20.c index b15b7282e..4fb9729d9 100644 --- a/src/ov_SC06_015/ov_SC06_015_jr_80135D20.c +++ b/src/ov_SC06_015/ov_SC06_015_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017F018/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017F020 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017F01C; +extern u8 D_8017F018; +extern s16 *D_8017F020; +extern u8 D_8017F024; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017F018)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017F024)[0]; + } else { + var_a3 = (*(s16 **)&D_8017F024)[0]; + var_v1 = (*(s16 **)&D_8017F018)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017F018; + b4 = D_8017F020; + b8 = *(s16 **)&D_8017F024; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017F01C)[1]; + b4[2] = (s16) (*(u16 **)&D_8017F01C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017F020, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017F020, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_016/ov_SC06_016_jr_80135D20.c b/src/ov_SC06_016/ov_SC06_016_jr_80135D20.c index 6ddc3ccef..a1e993109 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_80135D20.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80185428/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80185430 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018542C; +extern u8 D_80185428; +extern s16 *D_80185430; +extern u8 D_80185434; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80185428)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80185434)[0]; + } else { + var_a3 = (*(s16 **)&D_80185434)[0]; + var_v1 = (*(s16 **)&D_80185428)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80185428; + b4 = D_80185430; + b8 = *(s16 **)&D_80185434; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018542C)[1]; + b4[2] = (s16) (*(u16 **)&D_8018542C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80185430, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80185430, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c b/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c index 983075b50..6a05f4b5a 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c @@ -2098,7 +2098,100 @@ after: -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8012ACE0", func_80133AB0); +// @class: plumbing +// @stuck: none — MATCH (per-location family member; ov_SC01_077 sibling adapted with this overlay's D_* symbols) +#include "common.h" + +typedef struct Map_80133AB0 { + u16 ox; /* 0x00 */ + u16 oy; /* 0x02 */ + u16 w; /* 0x04 */ + u16 h; /* 0x06 */ + u16 *cells; /* 0x08 */ + void *p0C; /* 0x0C */ + void *p10; /* 0x10 */ + u8 *p14; /* 0x14 */ + u8 *p18; /* 0x18 */ + u8 *p1C; /* 0x1C */ +} Map_80133AB0; + +s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3) +{ + extern u8 D_80193B68; + extern u8 D_80193B64; + extern u8 D_80193B70; + extern u16 D_801D3C58; + extern s16 D_801D3C54; + extern s32 func_80133CD4(); + + Map_80133AB0 *map = (Map_80133AB0 *)arg3; + u16 *pA = (*(u16 * *)&D_80193B68); + u16 *pB = (*(u16 * *)&D_80193B64); + u16 *pC = (*(u16 * *)&D_80193B70); + register int zr __asm__("$0"); + u32 X, Y, cell, Xc, Yc; + u16 k, off; + int cnt; + u16 *cp, *lst; + u8 *s0; + u16 raw; + u32 hib; + register int harg __asm__("$4"); + s32 ret; + void *p0C, *p10; + u8 *p14, *p18, *p1C; + u16 *cells; + + pC[0] = pA[0] - pB[0]; + pC[1] = pA[1] - pB[1]; + pC[2] = pA[2] - pB[2]; + + X = ((((u16)x + 0x8000) >> 7) & 0x1ff) - map->ox; + __asm__("addu %0,%1,$zero" : "=r"(Xc) : "r"(X)); + if (!((X & 0xffff) < map->w)) + return 0; + Y = ((((u16)y + 0x8000) >> 7) & 0x1ff) - map->oy; + __asm__("addu %0,%1,$zero" : "=r"(Yc) : "r"(Y)); + if (!((Y & 0xffff) < map->h)) + return 0; + + cell = (Yc & 0xffff) * map->w + (Xc & 0xffff); + cells = map->cells; + p14 = map->p14; + p0C = map->p0C; + p10 = map->p10; + p18 = map->p18; + p1C = map->p1C; + k = cell * 2; + cp = (u16 *)(k * 2 + (u32)cells); + off = cp[0]; + cnt = cp[1]; + lst = (u16 *)(p14 + off); + + while (((cnt-- + zr) & 0xffff) != 0) { + raw = *lst; + hib = raw & 0x8000; + harg = hib + zr; + if (hib == 0) { + s0 = p18 + raw * 18; + } else { + s0 = p1C + (raw & 0x7fff) * 22; + } + ret = (s16)func_80133CD4((s16)(harg | flag), s0, p10, p0C); + if (ret != 0) { + if (ret > 0) + D_801D3C58 = *(u16 *)s0; + return 1; + } + lst++; + if (D_801D3C54 != 0) { + D_801D3C58 = *(u16 *)s0; + return 0; + } + } + return 0; +} + s32 func_80133CD4(arg0, cmd, base, arr) @@ -2288,7 +2381,7 @@ DEFINE_func_8013435C() /* dedup: shared engine-core @0x8013435C (src/shared) */ s32 func_801343C4(s32 angle, s32 p1, s32 p2) { - extern int func_80133AB0(int, s16, s16, int); + extern s32 func_80133AB0(s16, s16, s16, s32); extern s16 * D_80193B64; extern s16 * D_80193B68; extern u16 D_801D3C58; @@ -2315,7 +2408,7 @@ s32 func_801343C4(s32 angle, s32 p1, s32 p2) __asm__ __volatile__("" ::: "memory"); D_801D3C58 = 0; D_801D3C54 = 0; - if (func_80133AB0(sangle, a1v, a2v, d94)) { + if (((int(*)(int, s16, s16, int))func_80133AB0)(sangle, a1v, a2v, d94)) { setdst: pb0u = (u16 *)D_80193B68; ((u16 *)p2)[0] = pb0u[0]; @@ -2332,7 +2425,7 @@ s32 func_801343C4(s32 angle, s32 p1, s32 p2) (pacs[2] & 0xFF80) == (pb0s[2] & 0xFF80)) { return 0; } - if (func_80133AB0(sangle, b0, pb0s[2], D_801D3C48)) { + if (((int(*)(int, s16, s16, int))func_80133AB0)(sangle, b0, pb0s[2], D_801D3C48)) { goto setdst; } return 0; diff --git a/src/ov_SC06_018/ov_SC06_018_jr_80135D20.c b/src/ov_SC06_018/ov_SC06_018_jr_80135D20.c index 190027867..b32bbb4a4 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_80135D20.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_80135D20.c @@ -998,7 +998,96 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_80135D20", func_801365B8); +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80193B64/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80193B6C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80193B68; +extern u8 D_80193B64; +extern s16 *D_80193B6C; +extern u8 D_80193B70; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80193B64)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80193B70)[0]; + } else { + var_a3 = (*(s16 **)&D_80193B70)[0]; + var_v1 = (*(s16 **)&D_80193B64)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80193B64; + b4 = D_80193B6C; + b8 = *(s16 **)&D_80193B70; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80193B68)[1]; + b4[2] = (s16) (*(u16 **)&D_80193B68)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80193B6C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80193B6C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_020/ov_SC06_020_jr_80135D20.c b/src/ov_SC06_020/ov_SC06_020_jr_80135D20.c index 35817139c..786be6213 100644 --- a/src/ov_SC06_020/ov_SC06_020_jr_80135D20.c +++ b/src/ov_SC06_020/ov_SC06_020_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801855EC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801855F4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801855F0; +extern u8 D_801855EC; +extern s16 *D_801855F4; +extern u8 D_801855F8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801855EC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801855F8)[0]; + } else { + var_a3 = (*(s16 **)&D_801855F8)[0]; + var_v1 = (*(s16 **)&D_801855EC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801855EC; + b4 = D_801855F4; + b8 = *(s16 **)&D_801855F8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801855F0)[1]; + b4[2] = (s16) (*(u16 **)&D_801855F0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801855F4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801855F4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_022/ov_SC06_022_jr_80135D20.c b/src/ov_SC06_022/ov_SC06_022_jr_80135D20.c index 493695adb..d1f865ecc 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_80135D20.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018D8A8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018D8B0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018D8AC; +extern u8 D_8018D8A8; +extern s16 *D_8018D8B0; +extern u8 D_8018D8B4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018D8A8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018D8B4)[0]; + } else { + var_a3 = (*(s16 **)&D_8018D8B4)[0]; + var_v1 = (*(s16 **)&D_8018D8A8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018D8A8; + b4 = D_8018D8B0; + b8 = *(s16 **)&D_8018D8B4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018D8AC)[1]; + b4[2] = (s16) (*(u16 **)&D_8018D8AC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018D8B0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018D8B0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_024/ov_SC06_024_jr_80135D20.c b/src/ov_SC06_024/ov_SC06_024_jr_80135D20.c index 2bddfd300..c62c97333 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_80135D20.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018FD80/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018FD88 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018FD84; +extern u8 D_8018FD80; +extern s16 *D_8018FD88; +extern u8 D_8018FD8C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018FD80)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018FD8C)[0]; + } else { + var_a3 = (*(s16 **)&D_8018FD8C)[0]; + var_v1 = (*(s16 **)&D_8018FD80)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018FD80; + b4 = D_8018FD88; + b8 = *(s16 **)&D_8018FD8C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018FD84)[1]; + b4[2] = (s16) (*(u16 **)&D_8018FD84)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018FD88, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018FD88, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_025/ov_SC06_025_jr_80135D20.c b/src/ov_SC06_025/ov_SC06_025_jr_80135D20.c index 5b1d2c765..4afdfa9f0 100644 --- a/src/ov_SC06_025/ov_SC06_025_jr_80135D20.c +++ b/src/ov_SC06_025/ov_SC06_025_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80185224/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018522C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80185228; +extern u8 D_80185224; +extern s16 *D_8018522C; +extern u8 D_80185230; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80185224)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80185230)[0]; + } else { + var_a3 = (*(s16 **)&D_80185230)[0]; + var_v1 = (*(s16 **)&D_80185224)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80185224; + b4 = D_8018522C; + b8 = *(s16 **)&D_80185230; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80185228)[1]; + b4[2] = (s16) (*(u16 **)&D_80185228)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018522C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018522C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_027/ov_SC06_027_jr_80135D20.c b/src/ov_SC06_027/ov_SC06_027_jr_80135D20.c index 94f2e28a2..30540552e 100644 --- a/src/ov_SC06_027/ov_SC06_027_jr_80135D20.c +++ b/src/ov_SC06_027/ov_SC06_027_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E564/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E56C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E568; +extern u8 D_8017E564; +extern s16 *D_8017E56C; +extern u8 D_8017E570; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E564)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E570)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E570)[0]; + var_v1 = (*(s16 **)&D_8017E564)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E564; + b4 = D_8017E56C; + b8 = *(s16 **)&D_8017E570; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E568)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E568)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E56C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E56C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_029/ov_SC06_029_jr_80135D20.c b/src/ov_SC06_029/ov_SC06_029_jr_80135D20.c index a6747a744..34c2df0c8 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_80135D20.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8018CAF8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8018CB00 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8018CAFC; +extern u8 D_8018CAF8; +extern s16 *D_8018CB00; +extern u8 D_8018CB04; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8018CAF8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8018CB04)[0]; + } else { + var_a3 = (*(s16 **)&D_8018CB04)[0]; + var_v1 = (*(s16 **)&D_8018CAF8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8018CAF8; + b4 = D_8018CB00; + b8 = *(s16 **)&D_8018CB04; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8018CAFC)[1]; + b4[2] = (s16) (*(u16 **)&D_8018CAFC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8018CB00, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8018CB00, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_030/ov_SC06_030_jr_80135D20.c b/src/ov_SC06_030/ov_SC06_030_jr_80135D20.c index 0809b0145..ae7d2e99b 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_80135D20.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801823E8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801823F0 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801823EC; +extern u8 D_801823E8; +extern s16 *D_801823F0; +extern u8 D_801823F4; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801823E8)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801823F4)[0]; + } else { + var_a3 = (*(s16 **)&D_801823F4)[0]; + var_v1 = (*(s16 **)&D_801823E8)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801823E8; + b4 = D_801823F0; + b8 = *(s16 **)&D_801823F4; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801823EC)[1]; + b4[2] = (s16) (*(u16 **)&D_801823EC)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801823F0, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801823F0, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_032/ov_SC06_032_jr_80135D20.c b/src/ov_SC06_032/ov_SC06_032_jr_80135D20.c index a42dd1bbc..1706874cc 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_80135D20.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_801938B4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_801938BC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_801938B8; +extern u8 D_801938B4; +extern s16 *D_801938BC; +extern u8 D_801938C0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_801938B4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_801938C0)[0]; + } else { + var_a3 = (*(s16 **)&D_801938C0)[0]; + var_v1 = (*(s16 **)&D_801938B4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_801938B4; + b4 = D_801938BC; + b8 = *(s16 **)&D_801938C0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_801938B8)[1]; + b4[2] = (s16) (*(u16 **)&D_801938B8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_801938BC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_801938BC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC06_033/ov_SC06_033_jr_80135D20.c b/src/ov_SC06_033/ov_SC06_033_jr_80135D20.c index afffa9040..c2b4cea01 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_80135D20.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80191DC4/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80191DCC file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80191DC8; +extern u8 D_80191DC4; +extern s16 *D_80191DCC; +extern u8 D_80191DD0; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80191DC4)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80191DD0)[0]; + } else { + var_a3 = (*(s16 **)&D_80191DD0)[0]; + var_v1 = (*(s16 **)&D_80191DC4)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80191DC4; + b4 = D_80191DCC; + b8 = *(s16 **)&D_80191DD0; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80191DC8)[1]; + b4[2] = (s16) (*(u16 **)&D_80191DC8)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80191DCC, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80191DCC, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC07_000/ov_SC07_000_jr_80135D20.c b/src/ov_SC07_000/ov_SC07_000_jr_80135D20.c index 44685698f..1d7186108 100644 --- a/src/ov_SC07_000/ov_SC07_000_jr_80135D20.c +++ b/src/ov_SC07_000/ov_SC07_000_jr_80135D20.c @@ -840,7 +840,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80182C0C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80182C14 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80182C10; +extern u8 D_80182C0C; +extern s16 *D_80182C14; +extern u8 D_80182C18; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80182C0C)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80182C18)[0]; + } else { + var_a3 = (*(s16 **)&D_80182C18)[0]; + var_v1 = (*(s16 **)&D_80182C0C)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80182C0C; + b4 = D_80182C14; + b8 = *(s16 **)&D_80182C18; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80182C10)[1]; + b4[2] = (s16) (*(u16 **)&D_80182C10)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80182C14, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80182C14, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC07_001/ov_SC07_001_jr_80135D20.c b/src/ov_SC07_001/ov_SC07_001_jr_80135D20.c index 9f0730899..fe405f6f6 100644 --- a/src/ov_SC07_001/ov_SC07_001_jr_80135D20.c +++ b/src/ov_SC07_001/ov_SC07_001_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80181ABC/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80181AC4 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80181AC0; +extern u8 D_80181ABC; +extern s16 *D_80181AC4; +extern u8 D_80181AC8; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80181ABC)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80181AC8)[0]; + } else { + var_a3 = (*(s16 **)&D_80181AC8)[0]; + var_v1 = (*(s16 **)&D_80181ABC)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80181ABC; + b4 = D_80181AC4; + b8 = *(s16 **)&D_80181AC8; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80181AC0)[1]; + b4[2] = (s16) (*(u16 **)&D_80181AC0)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80181AC4, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80181AC4, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC07_002/ov_SC07_002_jr_80135D20.c b/src/ov_SC07_002/ov_SC07_002_jr_80135D20.c index b5b14bca0..1c5fa50c5 100644 --- a/src/ov_SC07_002/ov_SC07_002_jr_80135D20.c +++ b/src/ov_SC07_002/ov_SC07_002_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_80186D78/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_80186D80 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_80186D7C; +extern u8 D_80186D78; +extern s16 *D_80186D80; +extern u8 D_80186D84; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_80186D78)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_80186D84)[0]; + } else { + var_a3 = (*(s16 **)&D_80186D84)[0]; + var_v1 = (*(s16 **)&D_80186D78)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_80186D78; + b4 = D_80186D80; + b8 = *(s16 **)&D_80186D84; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_80186D7C)[1]; + b4[2] = (s16) (*(u16 **)&D_80186D7C)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_80186D80, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_80186D80, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC07_008/ov_SC07_008_jr_80135D20.c b/src/ov_SC07_008/ov_SC07_008_jr_80135D20.c index 9568c7879..21aecc537 100644 --- a/src/ov_SC07_008/ov_SC07_008_jr_80135D20.c +++ b/src/ov_SC07_008/ov_SC07_008_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017D890/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017D898 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017D894; +extern u8 D_8017D890; +extern s16 *D_8017D898; +extern u8 D_8017D89C; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017D890)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017D89C)[0]; + } else { + var_a3 = (*(s16 **)&D_8017D89C)[0]; + var_v1 = (*(s16 **)&D_8017D890)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017D890; + b4 = D_8017D898; + b8 = *(s16 **)&D_8017D89C; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017D894)[1]; + b4[2] = (s16) (*(u16 **)&D_8017D894)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017D898, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017D898, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/src/ov_SC07_009/ov_SC07_009_jr_80135D20.c b/src/ov_SC07_009/ov_SC07_009_jr_80135D20.c index d14a02882..bf30666b7 100644 --- a/src/ov_SC07_009/ov_SC07_009_jr_80135D20.c +++ b/src/ov_SC07_009/ov_SC07_009_jr_80135D20.c @@ -838,7 +838,98 @@ s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { } -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_80135D20", func_801365B8); + + +// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). +// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). + +// D_8017E334/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). +// D_8017E33C file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` +// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs +// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). +extern u8 D_8017E338; +extern u8 D_8017E334; +extern s16 *D_8017E33C; +extern u8 D_8017E340; +extern u8 D_80126720[]; + +s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { + extern u8 D_801152A8[]; + extern s16 D_801152AA; + extern s16 D_801152AC; + extern s16 D_80126722; + extern s16 D_80126724; + u16 *ac; + s16 *b8; + s16 *b4; + s16 temp_v0; + s16 temp_v1; + s32 var_a3; + s32 temp_a1; + s32 var_a1; + s32 var_v0; + s32 var_v1; + s32 a1c; + s32 a2c; + s32 cond; + register u32 zr __asm__("$0"); + + __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); + cond = arg1 & 1; + a2c = arg2 + zr; + if (!cond) { + var_v1 = (s16) arg2 - (*(s16 **)&D_8017E334)[0]; + var_a1 = var_v1; + var_a3 = -(*(s16 **)&D_8017E340)[0]; + } else { + var_a3 = (*(s16 **)&D_8017E340)[0]; + var_v1 = (*(s16 **)&D_8017E334)[0] - (s16) arg2; + var_a1 = -var_v1; + } + ac = *(u16 **)&D_8017E334; + b4 = D_8017E33C; + b8 = *(s16 **)&D_8017E340; + b4[0] = ac[0] + var_a1; + temp_a1 = -var_v1; + b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; + temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; + b4[2] = temp_v0; + var_v0 = 0; + if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { + return var_v0; + } + temp_v1 = b4[1]; + if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { + return var_v0; + } + if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { + return var_v0; + } + __asm__("" :: "r"(a1c)); + __asm__("" :: "r"(a1c)); + if (a1c & 0x8000) { + b4[1] = (s16) (*(u16 **)&D_8017E338)[1]; + b4[2] = (s16) (*(u16 **)&D_8017E338)[2]; + } + D_801152AC = 0; + D_801152AA = 0; + if ((a1c & 1) != 0) { + *(s16 *)D_801152A8 = 0xFFF; + M2C_FIELD(D_8017E33C, s16 *, 0) = a2c + 2; + } else { + *(s16 *)D_801152A8 = -0xFFF; + M2C_FIELD(D_8017E33C, s16 *, 0) = a2c - 2; + } + *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); + D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); + var_v0 = 1; + D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); + return var_v0; +} + // @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) diff --git a/tools/cdecl.py b/tools/cdecl.py index c8456f083..8899ea54a 100644 --- a/tools/cdecl.py +++ b/tools/cdecl.py @@ -200,7 +200,14 @@ def _depth0_spans(text): # skip a whole preprocessor line line_start = m.rfind('\n', 0, i) + 1 if m[line_start:i].strip() == '' and ch == '#': + # Skip the whole LOGICAL preprocessor line, consuming \-continuations: a multi-line + # #define macro body is NOT a sequence of file-scope statements, so a raw-draft scan + # that stops at the first '\n' leaks the continuation lines as bogus declarations + # ('declaration with no declared name'). cpp-derived src TUs never hit this (the macro + # is already expanded); only the raw .run/drafts* scan does. (R33 — Phase-29.) i = m.find('\n', i) + while i > 0 and m[i - 1] == '\\': + i = m.find('\n', i + 1) if i < 0: break continue diff --git a/tools/family_sweep.py b/tools/family_sweep.py index b67265074..c101f8369 100644 --- a/tools/family_sweep.py +++ b/tools/family_sweep.py @@ -277,7 +277,10 @@ def hseq_sweep(a): if a.source and a.source != family_hseq.EX_OV: n_over = 0 for f in manifest["families"]: - for m in f.get("members", []): + # A freshly-banked member sits in matched_members (family_hseq moves matched + # members out of `members` after a sig-regen), so search BOTH lists (Phase-29 crack-wave + # fix: the fresh-exemplar sweep is the whole point of --source, and the member is matched). + for m in list(f.get("members", [])) + list(f.get("matched_members", [])): if m[0] == a.source and int(m[1], 16) not in stubs.get(a.source, {}): f["exemplar"] = dict(f["exemplar"], ov=m[0], addr=m[1], kind="matched") n_over += 1 diff --git a/tools/workflows/wave_binary.js b/tools/workflows/wave_binary.js new file mode 100644 index 000000000..c3720542b --- /dev/null +++ b/tools/workflows/wave_binary.js @@ -0,0 +1,92 @@ +export const meta = { + name: 'wave-binary', + description: 'Binary-aware crack wave: fan out toolkit-aware drafter agents over a target batch in ANY binary (not just ov_SC01_077). Each target carries its own asm subdir + cached Ghidra-C + jtbl/o0 flags + an optional matched-ov077 sibling to adapt. Drafting only; the orchestrator runs the byte-gate/bank/sweep serially afterward.', + phases: [ + { title: 'Draft', detail: 'one xHigh drafter agent per target' }, + ], +} + +// args = { binary, targets: [{name, addr, nins, reach, asm, asm_subdir, ghidra_c, own_jtbl, o0, sibling_ov077, kind}], draftDir } +// Returns { draftDir, n, matched, near, drafted: [{fn,status,closeness,klass,where_stuck}] }. +// The whole-binary byte-gate / sweep / propagate is run by the ORCHESTRATOR after this returns +// (it mutates+commits the byte-locked tree, must be serial, and its build loop can exceed an agent Bash timeout). + +const DRAFT_SCHEMA = { + type: 'object', additionalProperties: false, + required: ['fn', 'status'], + properties: { + fn: { type: 'string' }, + status: { type: 'string', enum: ['match', 'near', 'fail'] }, + closeness: { type: 'integer', description: 'final match_one mismatch count; 0 if MATCH' }, + klass: { type: 'string', description: 'residual class: regalloc-order|schedule|struct|loose-typing|plumbing|jtbl|other' }, + where_stuck: { type: 'string', description: 'one line: what is still off (for the backlog)' }, + }, +} + +function drafterPrompt(t, binary, draftDir) { + const o0flag = t.o0 ? ' --o0' : '' + const o0note = t.o0 + ? `\n-O0 TARGET (this fn is compiled -O0 by a Makefile target-specific CC1FLAGS). Your match_one self-check MUST pass --o0 (included below) or you iterate against the WRONG build step. Read COOKBOOK §18: the classic -O0 residual is the %lo-fold on indexed global access — the CRACK is the ARRAY-OF-STRUCT idiom (\`extern Struct base[];\` sizeof==stride, then \`base[i].field\`; NOT \`*(T*)(&sym+i*stride)\`). At -O0 there is no DCE.\n` + : '' + const jtblnote = t.own_jtbl + ? `\nHAS AN IN-BODY JUMP TABLE (computed jump). Write a C \`switch\` whose case set + default matches the target's dispatch; gcc-2.7.2 emits a jump table when the cases are dense (CASE_VALUES_THRESHOLD). Read COOKBOOK §8/§8e for the jtbl idioms. The whole-binary BANK of a jtbl fn needs a rodata carve (the orchestrator handles that) — your job is byte-correct C for the body incl. the switch.\n` + : '' + const sibnote = t.sibling_ov077 + ? `\n★ THERE IS AN ALREADY-MATCHED SIBLING. This function is a per-location family member: the SAME function at address ${t.sibling_ov077} in overlay ov_SC01_077 is ALREADY byte-matched. Its C is your STARTING POINT — find it and ADAPT it to THIS overlay's bytes: + - Find the matched C: \`grep -n "DEFINE_func_${t.name.replace('func_','').toUpperCase()}\\|func_${t.sibling_ov077.replace('0x','')}" src/shared/engine_core.h src/ov_SC01_077/*.c\` (the body is a DEFINE_func_* macro or an inline def). + - This overlay's variant differs from ov_SC01_077 ONLY in per-location constants: immediate values, data-symbol addresses (D_*), and callee targets. The CONTROL FLOW / structure is identical. + - Read THIS overlay's target asm below and rewrite the sibling's C with THIS overlay's exact immediates/symbols. Verify every literal against the asm; the sibling's ov_SC01_077 immediates are WRONG for this overlay. + - This is the phase's key experiment: a member cracked fresh HERE (not remapped from ov_SC01_077) is expected to sweep across the whole family. Be exact.\n` + : '' + const giant = t.nins > 150 + ? `\nGIANT (>150 ins) — READ COOKBOOK §27. (1) The Ghidra-C body structure is usually correct — start there (or the matched sibling above). (2) ARG-ARITY is the #1 giant blocker: declare each callee to the ACTUAL call site (count $a0-$a3 set before each jal), not a canonical guess. (3) grep src/shared/engine_core.h for an already-matched DEFINE_func_* in the same idiom family and mirror its proven C. (4) §17-pin a whole-register regalloc SHIFT, but leave the last-mile regalloc-COALESCING residual for the gate+permuter — get STRUCTURALLY matched and keep the best draft.\n` + : '' + return `Match ONE MIPS function for the Brave Fencer Musashi PS1 matching decompilation, in overlay ${binary}.${o0note}${jtblnote}${sibnote}${giant} +GOAL: write C that the pinned compiler (gcc-2.7.2-psx -O2 -G0 -mips1 -mcpu=3000 -mgas -msoft-float -fgnu-linker + maspsx --aspsx-version=2.56 --expand-div) compiles to BYTE-IDENTICAL machine code for THIS overlay (${binary}). + +TARGET: ${t.name} @ ${t.addr} — ${t.nins} instructions, cross-overlay family reach ${t.reach}. +- Target asm (THE ground truth — ${binary}'s bytes): ${t.asm} + (each line "/* off vaddr w0 w1 */ mnemonic ..." is the exact encoded instruction.) +- Ghidra-C reference (types/locals/callee names — a scaffold, NOT byte-accurate): ${t.ghidra_c} + +THE TOOLKIT (docs/matching-cookbook.md §17–§20, §8, §27, §31 — read the relevant sections; high-leverage moves): +- Register-allocation ORDER: if a call-crossing local lands in the wrong saved reg, PIN it: \`register s32 v __asm__("$16");\` ($16=$s0…). Add a scheduling barrier if the schedule is off. Highest-reach lever. +- Array-of-struct %lo-fold (§18): indexed global access -> \`extern Struct base[];\` (sizeof==stride) + \`base[i].field\`; do NOT materialize \`&sym\`. +- for vs do-while + statement/for-update ORDER (§17) control the branch/delay-slot schedule — pick the form the target's branch layout implies. +- Declaration plumbing: don't over-fret callee extern types — the gate's canon_resident_calls + cast_call_sites + sig_unify reconcile most extern/arity mismatches. Focus on BODY codegen. + +PROCESS (you have Bash + Read + Write): +0. Read the LIVE cookbook docs/matching-cookbook.md (the relevant §§ above; it accrues newly-distilled idioms between waves). +1. Read the target asm and the Ghidra-C (and the matched sibling if one is named above). +2. Write your best C (the function definition + any externs it needs) to: ${draftDir}/${t.name}.c + Write ONLY this one draft file. Do NOT edit docs/, src/, config/, or any other tracked file (the orchestrator owns all cookbook/src edits; a drafter appending to the cookbook injects UNVERIFIED idioms). + START the file with TWO comment lines (the gate reads them for the flywheel + backlog): + // @class: + // @stuck: +3. Self-check (fast relocation-masked proxy for the byte-gate): + .venv/bin/python tools/match_one.py ${t.name} --c ${draftDir}/${t.name}.c --asm-subdir ${t.asm_subdir}${o0flag} + - "MATCH (N ins)" => byte-identical (relocation-masked). You nailed it. Stop. + - "N mismatched" => N instructions differ. Apply the toolkit, iterate to reduce N. +4. Iterate several times; KEEP THE BEST draft in the file (always leave a file, even if imperfect — the whole-binary gate + permuter may finish it; a close near-miss is logged for a human). +5. Return: { fn, status (match|near|fail), closeness (final mismatch count), klass, where_stuck }. + +The whole-binary byte-gate (run later by the orchestrator) is the sole arbiter — match_one is a proxy, but a MATCH there almost always banks. Be rigorous; never fabricate a MATCH you did not observe with match_one.` +} + +const A = typeof args === 'string' ? JSON.parse(args) : (args || {}) +const binary = A.binary || 'ov_SC01_077' +const targets = A.targets || [] +const draftDir = A.draftDir || `.run/drafts-${binary}` +if (!targets.length) { log('wave-binary: no targets'); return { draftDir, n: 0, drafted: [] } } + +log(`wave-binary: drafting ${targets.length} targets in ${binary} -> ${draftDir} (xHigh agents)`) +phase('Draft') +const drafted = (await parallel(targets.map(t => () => + agent(drafterPrompt(t, binary, draftDir), { label: `draft:${t.name}`, phase: 'Draft', schema: DRAFT_SCHEMA, effort: 'xhigh' }) + .then(r => (r ? { ...r, fn: r.fn || t.name } : null)) +))).filter(Boolean) + +const matched = drafted.filter(d => d.status === 'match').length +const near = drafted.filter(d => d.status === 'near').length +log(`wave-binary: ${drafted.length}/${targets.length} drafted; self-assessed match=${matched} near=${near}`) +return { draftDir, n: drafted.length, matched, near, drafted }