phase-37: T3 (in progress) — the engine's first bank: tools/struct_layout.py (the layout engine + the writer + the naming invariant), delever_oracle's LINKED mode (the build's own ld on the candidate object; f3 known-true + negative; the snapshot guard that caught T2's contaminated build/ object), tools/restruct.py (rungs S/S2/S+A/X/R/D/L, the ledger, inflight restore, selftest 48/48 + --real 51/51); rung D batch t3d1 on ov_SC04_011: 258 units — 242 canonical / 6 K&R marked / 16 kept | R22 check-all: 218 passed, 0 failed of 218 | 🛑 T3 in progress (S107)

This commit is contained in:
Drew T
2026-09-12 09:39:44 -06:00
parent 775a3eafb6
commit 21d2ccc141
40 changed files with 5054 additions and 861 deletions
+2
View File
@@ -559,6 +559,8 @@ unsloth_compiled_cache/
/.run/P37/restruct/*
!/.run/P37/restruct/*.log
!/.run/P37/restruct/*.json
# the argcheck rows cached on the src stamp — regenerable (a trailing comment on a pattern line is PART of the pattern: own line)
/.run/P37/restruct/argcheck_cache.json
/.run/P37/restruct/inflight.json
/.run/P37/restruct/includers_cache.json
!/.run/P37/restruct/*.jsonl
+154 -154
View File
@@ -1,7 +1,7 @@
{
"head": "db212f167",
"head": "775a3eafb",
"stamp": "e34b6679685f",
"generated": "2026-09-11 22:44",
"generated": "2026-09-12 08:50",
"aliases": [
"main",
"md_SC07_004",
@@ -21,177 +21,177 @@
"main": {
"objects": 85,
"identical": 85,
"seconds": 9.177000000000001,
"mean_s": 0.108
"seconds": 6.561000000000001,
"mean_s": 0.077
},
"md_SC07_004": {
"objects": 1,
"identical": 1,
"seconds": 0.504,
"mean_s": 0.504
"seconds": 0.506,
"mean_s": 0.506
},
"ov_SC02_005": {
"objects": 33,
"identical": 33,
"seconds": 5.014000000000002,
"mean_s": 0.152
"seconds": 4.772999999999999,
"mean_s": 0.145
},
"ov_SC04_011": {
"objects": 28,
"identical": 28,
"seconds": 4.561,
"mean_s": 0.163
"seconds": 3.776,
"mean_s": 0.135
}
},
"per_object_seconds": {
"build/src/800.o": 0.662,
"build/src/800_b.o": 0.21,
"build/src/800_b_2.o": 0.365,
"build/src/800_b_o0a.o": 0.19,
"build/src/800_c.o": 0.312,
"build/src/800b2.o": 0.258,
"build/src/apicard1.o": 0.246,
"build/src/apicard2.o": 0.243,
"build/src/apicard3.o": 0.253,
"build/src/apicard4.o": 0.243,
"build/src/apicard5.o": 0.242,
"build/src/apicard6.o": 0.244,
"build/src/apicard7.o": 0.237,
"build/src/boot.o": 0.272,
"build/src/gap.o": 0.236,
"build/src/libapi1.o": 0.225,
"build/src/libapi2.o": 0.066,
"build/src/libc2_1.o": 0.067,
"build/src/libc2_2.o": 0.061,
"build/src/libcd1.o": 0.111,
"build/src/libcd2.o": 0.067,
"build/src/libetc.o": 0.06,
"build/src/libgpu.o": 0.071,
"build/src/libgpu2.o": 0.073,
"build/src/libgs1.o": 0.097,
"build/src/libgs2.o": 0.066,
"build/src/libgs3.o": 0.056,
"build/src/libgs4.o": 0.094,
"build/src/libgs5.o": 0.059,
"build/src/libgs6.o": 0.084,
"build/src/libgs7.o": 0.06,
"build/src/libgs8.o": 0.068,
"build/src/libgte1.o": 0.067,
"build/src/libgte10.o": 0.061,
"build/src/libgte11.o": 0.06,
"build/src/libgte12.o": 0.059,
"build/src/libgte13.o": 0.072,
"build/src/libgte14.o": 0.066,
"build/src/libgte15.o": 0.066,
"build/src/libgte16.o": 0.073,
"build/src/libgte17.o": 0.068,
"build/src/libgte18.o": 0.067,
"build/src/libgte19.o": 0.068,
"build/src/libgte2.o": 0.072,
"build/src/libgte20.o": 0.073,
"build/src/libgte21.o": 0.068,
"build/src/libgte22.o": 0.067,
"build/src/libgte23.o": 0.066,
"build/src/800.o": 0.719,
"build/src/800_b.o": 0.076,
"build/src/800_b_2.o": 0.286,
"build/src/800_b_o0a.o": 0.076,
"build/src/800_c.o": 0.178,
"build/src/800b2.o": 0.068,
"build/src/apicard1.o": 0.065,
"build/src/apicard2.o": 0.064,
"build/src/apicard3.o": 0.069,
"build/src/apicard4.o": 0.071,
"build/src/apicard5.o": 0.073,
"build/src/apicard6.o": 0.069,
"build/src/apicard7.o": 0.059,
"build/src/boot.o": 0.103,
"build/src/gap.o": 0.086,
"build/src/libapi1.o": 0.062,
"build/src/libapi2.o": 0.057,
"build/src/libc2_1.o": 0.061,
"build/src/libc2_2.o": 0.062,
"build/src/libcd1.o": 0.075,
"build/src/libcd2.o": 0.06,
"build/src/libetc.o": 0.07,
"build/src/libgpu.o": 0.062,
"build/src/libgpu2.o": 0.065,
"build/src/libgs1.o": 0.07,
"build/src/libgs2.o": 0.063,
"build/src/libgs3.o": 0.061,
"build/src/libgs4.o": 0.056,
"build/src/libgs5.o": 0.058,
"build/src/libgs6.o": 0.077,
"build/src/libgs7.o": 0.062,
"build/src/libgs8.o": 0.061,
"build/src/libgte1.o": 0.065,
"build/src/libgte10.o": 0.065,
"build/src/libgte11.o": 0.063,
"build/src/libgte12.o": 0.06,
"build/src/libgte13.o": 0.066,
"build/src/libgte14.o": 0.067,
"build/src/libgte15.o": 0.071,
"build/src/libgte16.o": 0.054,
"build/src/libgte17.o": 0.066,
"build/src/libgte18.o": 0.065,
"build/src/libgte19.o": 0.061,
"build/src/libgte2.o": 0.062,
"build/src/libgte20.o": 0.06,
"build/src/libgte21.o": 0.062,
"build/src/libgte22.o": 0.066,
"build/src/libgte23.o": 0.063,
"build/src/libgte24.o": 0.067,
"build/src/libgte25.o": 0.068,
"build/src/libgte26.o": 0.066,
"build/src/libgte25.o": 0.062,
"build/src/libgte26.o": 0.062,
"build/src/libgte27.o": 0.065,
"build/src/libgte28.o": 0.067,
"build/src/libgte29.o": 0.063,
"build/src/libgte3.o": 0.07,
"build/src/libgte30.o": 0.067,
"build/src/libgte4.o": 0.063,
"build/src/libgte5.o": 0.066,
"build/src/libgte6.o": 0.061,
"build/src/libgte7.o": 0.067,
"build/src/libgte8.o": 0.066,
"build/src/libgte9.o": 0.062,
"build/src/libmcrd1.o": 0.075,
"build/src/libmcrd2.o": 0.067,
"build/src/libpad1.o": 0.075,
"build/src/libpad2.o": 0.075,
"build/src/sgap.o": 0.069,
"build/src/sgap_2.o": 0.065,
"build/src/sgap_3.o": 0.075,
"build/src/sgap_4.o": 0.074,
"build/src/sgap_5.o": 0.066,
"build/src/sgap_6.o": 0.062,
"build/src/sgap_8.o": 0.073,
"build/src/snd1.o": 0.076,
"build/src/snd10.o": 0.063,
"build/src/snd11.o": 0.064,
"build/src/snd12.o": 0.062,
"build/src/snd2.o": 0.07,
"build/src/snd3.o": 0.067,
"build/src/snd4.o": 0.07,
"build/src/snd5.o": 0.068,
"build/src/snd6.o": 0.067,
"build/src/snd7.o": 0.069,
"build/src/libgte28.o": 0.054,
"build/src/libgte29.o": 0.068,
"build/src/libgte3.o": 0.061,
"build/src/libgte30.o": 0.065,
"build/src/libgte4.o": 0.055,
"build/src/libgte5.o": 0.067,
"build/src/libgte6.o": 0.065,
"build/src/libgte7.o": 0.058,
"build/src/libgte8.o": 0.062,
"build/src/libgte9.o": 0.066,
"build/src/libmcrd1.o": 0.072,
"build/src/libmcrd2.o": 0.063,
"build/src/libpad1.o": 0.066,
"build/src/libpad2.o": 0.071,
"build/src/sgap.o": 0.061,
"build/src/sgap_2.o": 0.067,
"build/src/sgap_3.o": 0.062,
"build/src/sgap_4.o": 0.075,
"build/src/sgap_5.o": 0.064,
"build/src/sgap_6.o": 0.065,
"build/src/sgap_8.o": 0.069,
"build/src/snd1.o": 0.064,
"build/src/snd10.o": 0.062,
"build/src/snd11.o": 0.063,
"build/src/snd12.o": 0.063,
"build/src/snd2.o": 0.076,
"build/src/snd3.o": 0.053,
"build/src/snd4.o": 0.066,
"build/src/snd5.o": 0.065,
"build/src/snd6.o": 0.081,
"build/src/snd7.o": 0.062,
"build/src/snd8.o": 0.067,
"build/src/snd9.o": 0.069,
"build/src/md_SC07_004/md_SC07_004.o": 0.504,
"build/src/ov_SC02_005/ov_SC02_005.o": 0.127,
"build/src/ov_SC02_005/ov_SC02_005_after.o": 0.53,
"build/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.o": 0.402,
"build/src/ov_SC02_005/ov_SC02_005_jr_80135888.o": 0.058,
"build/src/ov_SC02_005/ov_SC02_005_jr_80135A4C.o": 0.059,
"build/src/ov_SC02_005/ov_SC02_005_jr_80135D20.o": 0.142,
"build/src/ov_SC02_005/ov_SC02_005_jr_801380E0.o": 0.169,
"build/src/ov_SC02_005/ov_SC02_005_jr_8013C98C.o": 0.123,
"build/src/ov_SC02_005/ov_SC02_005_jr_8013F350.o": 0.082,
"build/src/ov_SC02_005/ov_SC02_005_jr_8013FFD8.o": 0.071,
"build/src/ov_SC02_005/ov_SC02_005_jr_80140608.o": 0.19,
"build/src/ov_SC02_005/ov_SC02_005_jr_8015444C.o": 0.073,
"build/src/ov_SC02_005/ov_SC02_005_jr_80154C24.o": 0.171,
"build/src/ov_SC02_005/ov_SC02_005_jr_801588CC.o": 0.099,
"build/src/ov_SC02_005/ov_SC02_005_jr_80159C84.o": 0.074,
"build/src/ov_SC02_005/ov_SC02_005_jr_8015A3C8.o": 0.087,
"build/src/ov_SC02_005/ov_SC02_005_jr_8015AE2C.o": 0.1,
"build/src/ov_SC02_005/ov_SC02_005_jr_8015C32C.o": 0.474,
"build/src/ov_SC02_005/ov_SC02_005_jr_8016AB6C.o": 0.281,
"build/src/ov_SC02_005/ov_SC02_005_jr_80171B4C.o": 0.11,
"build/src/ov_SC02_005/ov_SC02_005_jr_801734BC.o": 0.209,
"build/src/ov_SC02_005/ov_SC02_005_jr_801789AC.o": 0.058,
"build/src/ov_SC02_005/ov_SC02_005_jr_80178D40.o": 0.101,
"build/src/ov_SC02_005/ov_SC02_005_jr_8017A4AC.o": 0.091,
"build/src/ov_SC02_005/ov_SC02_005_jr_8017AE2C.o": 0.115,
"build/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.o": 0.177,
"build/src/ov_SC02_005/ov_SC02_005_jr_80181984.o": 0.064,
"build/src/ov_SC02_005/ov_SC02_005_jr_80181D30.o": 0.146,
"build/src/ov_SC02_005/ov_SC02_005_jr_80185060.o": 0.073,
"build/src/ov_SC02_005/ov_SC02_005_jr_80185E80.o": 0.313,
"build/src/ov_SC02_005/ov_SC02_005_jr_8018EA04.o": 0.11,
"build/src/ov_SC02_005/ov_SC02_005_o0b.o": 0.062,
"build/src/ov_SC02_005/ov_SC02_005_o0c.o": 0.073,
"build/src/ov_SC04_011/ov_SC04_011.o": 0.131,
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.521,
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.51,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.05,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.053,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.119,
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.155,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.107,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.072,
"build/src/snd9.o": 0.067,
"build/src/md_SC07_004/md_SC07_004.o": 0.506,
"build/src/ov_SC02_005/ov_SC02_005.o": 0.126,
"build/src/ov_SC02_005/ov_SC02_005_after.o": 0.525,
"build/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.o": 0.395,
"build/src/ov_SC02_005/ov_SC02_005_jr_80135888.o": 0.062,
"build/src/ov_SC02_005/ov_SC02_005_jr_80135A4C.o": 0.06,
"build/src/ov_SC02_005/ov_SC02_005_jr_80135D20.o": 0.129,
"build/src/ov_SC02_005/ov_SC02_005_jr_801380E0.o": 0.167,
"build/src/ov_SC02_005/ov_SC02_005_jr_8013C98C.o": 0.121,
"build/src/ov_SC02_005/ov_SC02_005_jr_8013F350.o": 0.079,
"build/src/ov_SC02_005/ov_SC02_005_jr_8013FFD8.o": 0.07,
"build/src/ov_SC02_005/ov_SC02_005_jr_80140608.o": 0.183,
"build/src/ov_SC02_005/ov_SC02_005_jr_8015444C.o": 0.076,
"build/src/ov_SC02_005/ov_SC02_005_jr_80154C24.o": 0.157,
"build/src/ov_SC02_005/ov_SC02_005_jr_801588CC.o": 0.098,
"build/src/ov_SC02_005/ov_SC02_005_jr_80159C84.o": 0.066,
"build/src/ov_SC02_005/ov_SC02_005_jr_8015A3C8.o": 0.071,
"build/src/ov_SC02_005/ov_SC02_005_jr_8015AE2C.o": 0.092,
"build/src/ov_SC02_005/ov_SC02_005_jr_8015C32C.o": 0.461,
"build/src/ov_SC02_005/ov_SC02_005_jr_8016AB6C.o": 0.264,
"build/src/ov_SC02_005/ov_SC02_005_jr_80171B4C.o": 0.098,
"build/src/ov_SC02_005/ov_SC02_005_jr_801734BC.o": 0.193,
"build/src/ov_SC02_005/ov_SC02_005_jr_801789AC.o": 0.059,
"build/src/ov_SC02_005/ov_SC02_005_jr_80178D40.o": 0.102,
"build/src/ov_SC02_005/ov_SC02_005_jr_8017A4AC.o": 0.064,
"build/src/ov_SC02_005/ov_SC02_005_jr_8017AE2C.o": 0.111,
"build/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.o": 0.167,
"build/src/ov_SC02_005/ov_SC02_005_jr_80181984.o": 0.062,
"build/src/ov_SC02_005/ov_SC02_005_jr_80181D30.o": 0.138,
"build/src/ov_SC02_005/ov_SC02_005_jr_80185060.o": 0.068,
"build/src/ov_SC02_005/ov_SC02_005_jr_80185E80.o": 0.274,
"build/src/ov_SC02_005/ov_SC02_005_jr_8018EA04.o": 0.115,
"build/src/ov_SC02_005/ov_SC02_005_o0b.o": 0.052,
"build/src/ov_SC02_005/ov_SC02_005_o0c.o": 0.068,
"build/src/ov_SC04_011/ov_SC04_011.o": 0.133,
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.415,
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.335,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.046,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.056,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.101,
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.158,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.117,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.074,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.065,
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.175,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.073,
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.167,
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.087,
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.065,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.065,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.094,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.357,
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.351,
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.105,
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.321,
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.064,
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.095,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.073,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.099,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.473,
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.058,
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.056
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.161,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.065,
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.168,
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.079,
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.058,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.064,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.078,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.338,
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.2,
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.101,
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.164,
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.058,
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.089,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.054,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.09,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.405,
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.053,
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.051
},
"ok": true,
"seconds": 2.3
"seconds": 2.0
}
+476
View File
@@ -0,0 +1,476 @@
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, undefined_*_auto.txt).
disc-extract: up to date — extracted/retail/ matches the committed manifest (sha1 e5c6019249dec3c71bb2cf40658a78439dddb037)
splat 0.41.0 (powered by spimdisasm 1.41.0)
0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 100%|██████████| 1096/1096 [00:00<00:00, 222408.30it/s]
0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 100%|██████████| 47/47 [00:00<00:00, 516053.11it/s]
0%| | 0/2 [00:00<?, ?it/s]
Scanning header: 0%| | 0/2 [00:00<?, ?it/s]
Scanning main: 0%| | 0/2 [00:00<?, ?it/s]
Rodata segment '800' may belong to the text segment '800'
Based on the usage from the function LzssDecodeSector to the symbol jtbl_80072A38
The rodata segment '800' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x6324C, .rodata]
- [0x63388, .rodata]
- [0x633FC, .rodata]
Rodata segment '800_b' may belong to the text segment '800_b'
Based on the usage from the function func_8002B0B4 to the symbol jtbl_80072E44
Rodata segment '800_b_2' may belong to the text segment '800_b_2'
Based on the usage from the function func_8002DC68 to the symbol jtbl_80072F3C
The rodata segment '800_b_2' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x63920, .rodata]
Rodata segment '800_c' may belong to the text segment '800_c'
Based on the usage from the function func_80035270 to the symbol jtbl_800732A0
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.65it/s]
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.65it/s]
0%| | 0/2 [00:00<?, ?it/s]
Splitting header: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 100%|██████████| 2/2 [00:00<00:00, 2.64it/s]
Splitting main: 100%|██████████| 2/2 [00:00<00:00, 2.64it/s]
0%| | 0/2 [00:00<?, ?it/s]
Linker script header: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 100%|██████████| 2/2 [00:00<00:00, 100.09it/s]
Split 340 KB (82.28%) in defined segments
header: 2 KB (0.50%) 1 split, 0 cached
c: 338 KB (81.78%) 85 split, 0 cached
unknown: 0 B (0.00%) from unknown bin files
ld_interleave --order: .main island = 8 pieces [53198.data.o, 800.o, 63470.data.o, 800_b.o, 800_b_2.o, 63940.data.o, 800_c.o, 63C4C.data.o]; pre=0 text=85 empties=166 bss=85
[ OK ] resident
[ OK ] ov_SC05_000
[ OK ] ov_SC01_000
[ OK ] ov_SC04_000
[ OK ] ov_SC06_000
[ OK ] ov_SC03_002
[ OK ] ov_SC01_005
[ OK ] ov_SC01_006
[ OK ] ov_SC02_000
[ OK ] ov_SC02_003
[ OK ] ov_SC04_019
[ OK ] ov_SC03_001
[ OK ] ov_SC01_077
[ OK ] ov_SC04_018
[ OK ] ov_SC01_001
[ OK ] ov_SC03_006
[ OK ] ov_SC01_004
[ OK ] ov_SC01_074
[ OK ] ov_SC01_008
[ OK ] ov_SC07_000
[ OK ] ov_SC02_004
[ OK ] ov_SC02_015
[ OK ] ov_SC02_021
[ OK ] ov_SC01_009
[ OK ] ov_SC01_080
[ OK ] ov_SC01_084
[ OK ] ov_SC02_016
[ OK ] ov_SC02_005
[ OK ] ov_SC02_026
[ OK ] ov_SC02_028
[ OK ] ov_SC02_031
[ OK ] ov_SC02_011
[ OK ] ov_SC02_027
[ OK ] ov_SC02_039
[ OK ] ov_SC02_035
[ OK ] ov_SC03_003
[ OK ] ov_SC02_017
[ OK ] ov_SC02_041
[ OK ] ov_SC03_012
[ OK ] ov_SC03_010
[ OK ] ov_SC03_011
[ OK ] ov_SC03_013
[ OK ] ov_SC03_023
[ OK ] ov_SC03_007
[ OK ] ov_SC03_024
[ OK ] ov_SC03_089
[ OK ] ov_SC03_031
[ OK ] ov_SC03_029
[ OK ] ov_SC03_015
[ OK ] ov_SC03_014
[ OK ] ov_SC03_090
[ OK ] ov_SC03_092
[ OK ] ov_SC03_028
[ OK ] ov_SC03_030
[ OK ] ov_SC03_091
[ OK ] ov_SC03_095
[ OK ] ov_SC03_093
[ OK ] ov_SC03_096
[ OK ] ov_SC03_094
[ OK ] ov_SC03_097
[ OK ] ov_SC03_101
[ OK ] ov_SC03_098
[ OK ] ov_SC03_109
[ OK ] ov_SC03_108
[ OK ] ov_SC03_110
[ OK ] ov_SC03_099
[ OK ] ov_SC03_100
[ OK ] ov_SC03_102
[ OK ] ov_SC03_113
[ OK ] ov_SC03_104
[ OK ] ov_SC03_103
[ OK ] ov_SC03_105
[ OK ] ov_SC03_111
[ OK ] ov_SC03_114
[ OK ] ov_SC03_112
[ OK ] ov_SC03_115
[ OK ] ov_SC03_116
[ OK ] ov_SC03_126
[ OK ] ov_SC04_008
[ OK ] ov_SC04_003
[ OK ] ov_SC03_121
[ OK ] ov_SC04_009
[ OK ] ov_SC04_006
[ OK ] ov_SC03_117
[ OK ] ov_SC03_125
[ OK ] ov_SC04_004
[ OK ] ov_SC03_119
[ OK ] ov_SC03_118
[ OK ] ov_SC04_007
[ OK ] ov_SC04_002
[ OK ] ov_SC04_005
[ OK ] ov_SC04_010
[ OK ] ov_SC03_124
[ OK ] ov_SC04_012
[ OK ] ov_SC04_021
[ OK ] ov_SC05_006
[ OK ] ov_SC04_016
[ OK ] ov_SC05_002
[ OK ] ov_SC04_015
[ OK ] ov_SC05_004
[ OK ] ov_SC05_007
[ OK ] ov_SC04_020
[ OK ] ov_SC05_008
[ OK ] ov_SC05_001
[ OK ] ov_SC05_009
[ OK ] ov_SC05_003
[ OK ] ov_SC05_005
[ OK ] ov_SC04_011
[ OK ] ov_SC05_011
[ OK ] ov_SC05_010
[ OK ] ov_SC05_019
[ OK ] ov_SC06_015
[ OK ] ov_SC06_013
[ OK ] ov_SC06_014
[ OK ] ov_SC06_008
[ OK ] ov_SC06_010
[ OK ] ov_SC06_016
[ OK ] ov_SC06_011
[ OK ] ov_SC05_017
[ OK ] ov_SC06_020
[ OK ] ov_SC05_018
[ OK ] ov_SC06_018
[ OK ] ov_SC06_022
[ OK ] ov_SC06_025
[ OK ] ov_SC06_027
[ OK ] ov_SC06_006
[ OK ] ov_SC07_008
[ OK ] ov_SC07_002
[ OK ] ov_SC06_024
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] md_MAIN_016
[ OK ] md_MAIN_015
[ OK ] md_MAIN_017
[ OK ] ov_SC07_001
[ OK ] ov_SC07_009
[ OK ] ov_SC06_030
[ OK ] md_MAIN_018
[ OK ] md_MAIN_019
[ OK ] md_MAIN_020
[ OK ] md_MAIN_021
[ OK ] md_MAIN_022
[ OK ] md_MAIN_023
[ OK ] md_MAIN_024
[ OK ] md_MAIN_025
[ OK ] md_MAIN_027
[ OK ] md_MAIN_026
[ OK ] ov_SC06_032
[ OK ] md_MAIN_028
[ OK ] ov_SC06_033
[ OK ] md_MAIN_029
[ OK ] md_MAIN_030
[ OK ] md_MAIN_031
[ OK ] md_MAIN_033
[ OK ] md_MAIN_032
[ OK ] md_MAIN_034
[ OK ] md_MAIN_035
[ OK ] md_MAIN_037
[ OK ] md_MAIN_036
[ OK ] md_MAIN_038
[ OK ] ov_MAIN_012
[ OK ] md_MAIN_039
[ OK ] md_MAIN_041
[ OK ] md_MAIN_040
[ OK ] ov_SC06_029
[ OK ] md_MAIN_042
[ OK ] md_MAIN_043
[ OK ] ov_SC07_011
[ OK ] md_MAIN_045
[ OK ] md_MAIN_044
[ OK ] md_MAIN_047
[ OK ] md_MAIN_046
[ OK ] md_MAIN_008
[ OK ] md_MAIN_001
[ OK ] ov_SC07_010
[ OK ] md_MAIN_011
[ OK ] md_SC03_074
[ OK ] md_SC03_073
[ OK ] md_SC03_075
[ OK ] md_SC03_078
[ OK ] md_SC03_077
[ OK ] ov_SC03_107
[ OK ] md_SC03_076
[ OK ] md_SC03_132
[ OK ] md_SC03_133
[ OK ] md_SC03_079
[ OK ] ov_SC07_007
[ OK ] md_SC03_137
[ OK ] md_SC03_134
[ OK ] md_SC03_135
[ OK ] md_SC03_136
[ OK ] md_MAIN_003
[ OK ] md_SC04_024
[ OK ] md_SC03_138
[ OK ] md_SC04_029
[ OK ] md_SC04_025
[ OK ] md_SC04_028
[ OK ] md_SC04_026
[ OK ] md_SC05_023
[ OK ] md_SC04_027
[ OK ] md_SC05_024
[ OK ] md_SC05_025
[ OK ] md_SC04_030
[ OK ] md_MAIN_007
[ OK ] md_SC05_028
[ OK ] md_MAIN_009
[ OK ] md_SC05_027
[ OK ] md_SC03_053
[ OK ] md_SC05_026
[ OK ] md_SC03_054
[ OK ] md_SC03_056
[ OK ] md_SC05_029
[ OK ] ov_SC02_037
[ OK ] ov_SC07_006
[ OK ] md_SC02_009
[ OK ] md_SC07_004
[ OK ] md_SC07_003
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
[ OK ] resident
[ OK ] ov_SC05_000
[ OK ] ov_SC01_000
[ OK ] ov_SC04_000
[ OK ] ov_SC01_005
[ OK ] ov_SC01_006
[ OK ] ov_SC01_001
[ OK ] ov_SC03_002
[ OK ] ov_SC03_006
[ OK ] ov_SC06_000
[ OK ] ov_SC04_018
[ OK ] ov_SC01_077
[ OK ] ov_SC04_019
[ OK ] ov_SC03_001
[ OK ] ov_SC02_000
[ OK ] ov_SC02_003
[ OK ] ov_SC01_004
[ OK ] ov_SC01_074
[ OK ] ov_SC01_008
[ OK ] ov_SC07_000
[ OK ] ov_SC01_080
[ OK ] ov_SC02_004
[ OK ] ov_SC01_009
[ OK ] ov_SC02_015
[ OK ] ov_SC01_084
[ OK ] ov_SC02_021
[ OK ] ov_SC02_016
[ OK ] ov_SC02_026
[ OK ] ov_SC02_011
[ OK ] ov_SC02_017
[ OK ] ov_SC02_005
[ OK ] ov_SC02_039
[ OK ] ov_SC02_031
[ OK ] ov_SC02_041
[ OK ] ov_SC02_027
[ OK ] ov_SC02_035
[ OK ] ov_SC03_003
[ OK ] ov_SC02_028
[ OK ] ov_SC03_010
[ OK ] ov_SC03_012
[ OK ] ov_SC03_007
[ OK ] ov_SC03_011
[ OK ] ov_SC03_023
[ OK ] ov_SC03_013
[ OK ] ov_SC03_014
[ OK ] ov_SC03_015
[ OK ] ov_SC03_031
[ OK ] ov_SC03_030
[ OK ] ov_SC03_024
[ OK ] ov_SC03_029
[ OK ] ov_SC03_089
[ OK ] ov_SC03_092
[ OK ] ov_SC03_028
[ OK ] ov_SC03_090
[ OK ] ov_SC03_093
[ OK ] ov_SC03_095
[ OK ] ov_SC03_096
[ OK ] ov_SC03_094
[ OK ] ov_SC03_091
[ OK ] main
[ OK ] ov_SC03_098
[ OK ] ov_SC03_097
[ OK ] ov_SC03_099
[ OK ] ov_SC03_100
[ OK ] ov_SC03_101
[ OK ] ov_SC03_102
[ OK ] ov_SC03_103
[ OK ] ov_SC03_109
[ OK ] ov_SC03_108
[ OK ] ov_SC03_110
[ OK ] ov_SC03_111
[ OK ] ov_SC03_104
[ OK ] ov_SC03_113
[ OK ] ov_SC03_105
[ OK ] ov_SC03_114
[ OK ] ov_SC03_112
[ OK ] ov_SC03_115
[ OK ] ov_SC03_116
[ OK ] ov_SC03_117
[ OK ] ov_SC03_121
[ OK ] ov_SC03_118
[ OK ] ov_SC03_119
[ OK ] ov_SC03_125
[ OK ] ov_SC03_126
[ OK ] ov_SC04_003
[ OK ] ov_SC04_002
[ OK ] ov_SC03_124
[ OK ] ov_SC04_004
[ OK ] ov_SC04_008
[ OK ] ov_SC04_006
[ OK ] ov_SC04_005
[ OK ] ov_SC04_007
[ OK ] ov_SC04_009
[ OK ] ov_SC04_010
[ OK ] ov_SC04_012
[ OK ] ov_SC04_016
[ OK ] ov_SC04_021
[ OK ] ov_SC04_015
[ OK ] ov_SC04_011
[ OK ] ov_SC04_020
[ OK ] ov_SC05_006
[ OK ] ov_SC05_002
[ OK ] ov_SC05_003
[ OK ] ov_SC05_004
[ OK ] ov_SC05_001
[ OK ] ov_SC05_005
[ OK ] ov_SC05_007
[ OK ] ov_SC05_009
[ OK ] ov_SC05_008
[ OK ] ov_SC05_010
[ OK ] ov_SC05_011
[ OK ] ov_SC05_019
[ OK ] ov_SC06_013
[ OK ] ov_SC06_008
[ OK ] ov_SC05_018
[ OK ] ov_SC06_006
[ OK ] ov_SC06_015
[ OK ] ov_SC06_011
[ OK ] ov_SC06_014
[ OK ] ov_SC06_010
[ OK ] ov_SC06_016
[ OK ] ov_SC05_017
[ OK ] ov_SC06_020
[ OK ] ov_SC06_018
[ OK ] ov_SC06_022
[ OK ] ov_SC06_024
[ OK ] ov_SC06_025
[ OK ] ov_SC06_027
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] ov_SC07_009
[ OK ] ov_SC07_008
[ OK ] md_MAIN_015
[ OK ] ov_SC07_001
[ OK ] md_MAIN_016
[ OK ] md_MAIN_017
[ OK ] ov_SC06_030
[ OK ] md_MAIN_018
[ OK ] ov_SC07_002
[ OK ] md_MAIN_019
[ OK ] md_MAIN_020
[ OK ] md_MAIN_021
[ OK ] md_MAIN_022
[ OK ] md_MAIN_023
[ OK ] md_MAIN_024
[ OK ] md_MAIN_025
[ OK ] md_MAIN_026
[ OK ] md_MAIN_027
[ OK ] md_MAIN_029
[ OK ] md_MAIN_030
[ OK ] md_MAIN_028
[ OK ] ov_SC06_029
[ OK ] md_MAIN_031
[ OK ] md_MAIN_032
[ OK ] ov_SC07_010
[ OK ] md_MAIN_033
[ OK ] md_MAIN_035
[ OK ] md_MAIN_036
[ OK ] md_MAIN_034
[ OK ] ov_SC07_007
[ OK ] md_MAIN_039
[ OK ] md_MAIN_037
[ OK ] md_MAIN_038
[ OK ] md_MAIN_040
[ OK ] md_MAIN_041
[ OK ] md_MAIN_042
[ OK ] ov_SC07_006
[ OK ] md_MAIN_043
[ OK ] md_MAIN_045
[ OK ] md_MAIN_044
[ OK ] md_MAIN_047
[ OK ] md_MAIN_001
[ OK ] md_MAIN_046
[ OK ] md_MAIN_008
[ OK ] ov_MAIN_012
[ OK ] md_MAIN_011
[ OK ] ov_SC06_032
[ OK ] md_SC03_073
[ OK ] ov_SC07_011
[ OK ] md_SC03_074
[ OK ] ov_SC06_033
[ OK ] md_SC03_075
[ OK ] md_SC03_078
[ OK ] md_SC03_079
[ OK ] md_SC03_077
[ OK ] md_SC03_132
[ OK ] md_SC03_076
[ OK ] md_SC03_133
[ OK ] md_SC03_137
[ OK ] md_SC03_134
[ OK ] md_SC07_003
[ OK ] md_SC03_138
[ OK ] md_SC04_024
[ OK ] md_SC03_136
[ OK ] md_SC04_025
[ OK ] md_SC04_026
[ OK ] md_SC03_135
[ OK ] md_MAIN_003
[ OK ] md_SC04_029
[ OK ] md_SC05_023
[ OK ] md_SC04_030
+476
View File
@@ -0,0 +1,476 @@
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, undefined_*_auto.txt).
disc-extract: up to date — extracted/retail/ matches the committed manifest (sha1 e5c6019249dec3c71bb2cf40658a78439dddb037)
splat 0.41.0 (powered by spimdisasm 1.41.0)
0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 100%|██████████| 1096/1096 [00:00<00:00, 188655.03it/s]
0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 100%|██████████| 47/47 [00:00<00:00, 619912.86it/s]
0%| | 0/2 [00:00<?, ?it/s]
Scanning header: 0%| | 0/2 [00:00<?, ?it/s]
Scanning main: 0%| | 0/2 [00:00<?, ?it/s]
Rodata segment '800' may belong to the text segment '800'
Based on the usage from the function LzssDecodeSector to the symbol jtbl_80072A38
The rodata segment '800' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x6324C, .rodata]
- [0x63388, .rodata]
- [0x633FC, .rodata]
Rodata segment '800_b' may belong to the text segment '800_b'
Based on the usage from the function func_8002B0B4 to the symbol jtbl_80072E44
Rodata segment '800_b_2' may belong to the text segment '800_b_2'
Based on the usage from the function func_8002DC68 to the symbol jtbl_80072F3C
The rodata segment '800_b_2' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
File split suggestions for this segment will follow in config yaml format:
- [0x63920, .rodata]
Rodata segment '800_c' may belong to the text segment '800_c'
Based on the usage from the function func_80035270 to the symbol jtbl_800732A0
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.54it/s]
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.54it/s]
0%| | 0/2 [00:00<?, ?it/s]
Splitting header: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 100%|██████████| 2/2 [00:00<00:00, 2.79it/s]
Splitting main: 100%|██████████| 2/2 [00:00<00:00, 2.79it/s]
0%| | 0/2 [00:00<?, ?it/s]
Linker script header: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 100%|██████████| 2/2 [00:00<00:00, 98.84it/s]
Split 340 KB (82.28%) in defined segments
header: 2 KB (0.50%) 1 split, 0 cached
c: 338 KB (81.78%) 85 split, 0 cached
unknown: 0 B (0.00%) from unknown bin files
ld_interleave --order: .main island = 8 pieces [53198.data.o, 800.o, 63470.data.o, 800_b.o, 800_b_2.o, 63940.data.o, 800_c.o, 63C4C.data.o]; pre=0 text=85 empties=166 bss=85
[ OK ] ov_SC05_000
[ OK ] resident
[ OK ] ov_SC01_000
[ OK ] ov_SC04_000
[ OK ] ov_SC06_000
[ OK ] ov_SC03_002
[ OK ] ov_SC01_006
[ OK ] ov_SC01_005
[ OK ] ov_SC01_077
[ OK ] ov_SC04_019
[ OK ] ov_SC02_003
[ OK ] ov_SC02_000
[ OK ] ov_SC04_018
[ OK ] ov_SC03_001
[ OK ] ov_SC01_001
[ OK ] ov_SC03_006
[ OK ] ov_SC01_004
[ OK ] ov_SC01_074
[ OK ] ov_SC01_008
[ OK ] ov_SC07_000
[ OK ] ov_SC02_004
[ OK ] ov_SC02_015
[ OK ] ov_SC02_021
[ OK ] ov_SC01_080
[ OK ] ov_SC01_009
[ OK ] ov_SC01_084
[ OK ] ov_SC02_016
[ OK ] ov_SC02_005
[ OK ] ov_SC02_031
[ OK ] ov_SC02_026
[ OK ] ov_SC02_039
[ OK ] ov_SC02_027
[ OK ] ov_SC02_028
[ OK ] ov_SC02_035
[ OK ] ov_SC03_003
[ OK ] ov_SC02_011
[ OK ] ov_SC02_017
[ OK ] ov_SC02_041
[ OK ] ov_SC03_012
[ OK ] ov_SC03_010
[ OK ] ov_SC03_011
[ OK ] ov_SC03_013
[ OK ] ov_SC03_023
[ OK ] ov_SC03_007
[ OK ] ov_SC03_024
[ OK ] ov_SC03_089
[ OK ] ov_SC03_031
[ OK ] ov_SC03_029
[ OK ] ov_SC03_014
[ OK ] ov_SC03_015
[ OK ] ov_SC03_090
[ OK ] ov_SC03_092
[ OK ] ov_SC03_030
[ OK ] ov_SC03_095
[ OK ] ov_SC03_028
[ OK ] ov_SC03_091
[ OK ] ov_SC03_093
[ OK ] ov_SC03_096
[ OK ] ov_SC03_094
[ OK ] ov_SC03_097
[ OK ] ov_SC03_101
[ OK ] ov_SC03_098
[ OK ] ov_SC03_108
[ OK ] ov_SC03_099
[ OK ] ov_SC03_109
[ OK ] ov_SC03_100
[ OK ] ov_SC03_102
[ OK ] ov_SC03_110
[ OK ] ov_SC03_104
[ OK ] ov_SC03_105
[ OK ] ov_SC03_103
[ OK ] ov_SC03_113
[ OK ] ov_SC03_112
[ OK ] ov_SC03_111
[ OK ] ov_SC03_114
[ OK ] ov_SC03_115
[ OK ] ov_SC03_116
[ OK ] ov_SC03_126
[ OK ] ov_SC04_003
[ OK ] ov_SC03_121
[ OK ] ov_SC04_008
[ OK ] ov_SC04_006
[ OK ] ov_SC04_009
[ OK ] ov_SC03_117
[ OK ] ov_SC03_118
[ OK ] ov_SC03_125
[ OK ] ov_SC04_004
[ OK ] ov_SC03_119
[ OK ] ov_SC04_005
[ OK ] ov_SC04_002
[ OK ] ov_SC04_007
[ OK ] ov_SC03_124
[ OK ] ov_SC04_010
[ OK ] ov_SC04_012
[ OK ] ov_SC04_021
[ OK ] ov_SC04_016
[ OK ] ov_SC05_006
[ OK ] ov_SC05_004
[ OK ] ov_SC05_002
[ OK ] ov_SC05_001
[ OK ] ov_SC05_009
[ OK ] ov_SC04_020
[ OK ] ov_SC05_003
[ OK ] ov_SC05_007
[ OK ] ov_SC04_015
[ OK ] ov_SC05_008
[ OK ] ov_SC05_005
[ OK ] ov_SC04_011
[ OK ] ov_SC05_010
[ OK ] ov_SC05_011
[ OK ] ov_SC05_019
[ OK ] ov_SC06_013
[ OK ] ov_SC06_015
[ OK ] ov_SC06_008
[ OK ] ov_SC06_011
[ OK ] ov_SC06_014
[ OK ] ov_SC06_010
[ OK ] ov_SC06_016
[ OK ] ov_SC05_017
[ OK ] ov_SC06_020
[ OK ] ov_SC05_018
[ OK ] ov_SC06_018
[ OK ] ov_SC06_025
[ OK ] ov_SC06_027
[ OK ] ov_SC06_022
[ OK ] ov_SC06_006
[ OK ] ov_SC06_024
[ OK ] ov_SC07_008
[ OK ] md_MAIN_013
[ OK ] ov_SC07_002
[ OK ] md_MAIN_014
[ OK ] md_MAIN_015
[ OK ] md_MAIN_016
[ OK ] ov_SC07_001
[ OK ] md_MAIN_018
[ OK ] md_MAIN_017
[ OK ] md_MAIN_019
[ OK ] md_MAIN_020
[ OK ] md_MAIN_021
[ OK ] md_MAIN_022
[ OK ] md_MAIN_023
[ OK ] md_MAIN_024
[ OK ] ov_SC06_030
[ OK ] ov_SC07_009
[ OK ] md_MAIN_025
[ OK ] md_MAIN_026
[ OK ] md_MAIN_027
[ OK ] md_MAIN_028
[ OK ] md_MAIN_029
[ OK ] ov_MAIN_012
[ OK ] md_MAIN_030
[ OK ] ov_SC06_032
[ OK ] md_MAIN_031
[ OK ] md_MAIN_032
[ OK ] ov_SC06_033
[ OK ] md_MAIN_033
[ OK ] ov_SC07_011
[ OK ] md_MAIN_034
[ OK ] md_MAIN_035
[ OK ] md_MAIN_036
[ OK ] md_MAIN_039
[ OK ] md_MAIN_038
[ OK ] md_MAIN_040
[ OK ] md_MAIN_037
[ OK ] ov_SC06_029
[ OK ] md_MAIN_042
[ OK ] md_MAIN_041
[ OK ] md_MAIN_043
[ OK ] md_MAIN_046
[ OK ] md_MAIN_044
[ OK ] md_MAIN_045
[ OK ] md_MAIN_008
[ OK ] md_MAIN_047
[ OK ] md_MAIN_011
[ OK ] md_MAIN_001
[ OK ] ov_SC07_010
[ OK ] md_SC03_073
[ OK ] md_SC03_078
[ OK ] md_SC03_075
[ OK ] md_SC03_074
[ OK ] md_SC03_077
[ OK ] ov_SC03_107
[ OK ] md_SC03_076
[ OK ] md_SC03_132
[ OK ] md_SC03_079
[ OK ] md_SC03_133
[ OK ] md_SC03_134
[ OK ] md_SC03_137
[ OK ] md_SC03_135
[ OK ] md_SC03_136
[ OK ] md_SC04_024
[ OK ] md_MAIN_003
[ OK ] md_SC04_025
[ OK ] md_SC04_026
[ OK ] ov_SC07_007
[ OK ] md_SC03_138
[ OK ] md_SC04_029
[ OK ] md_SC04_028
[ OK ] md_SC04_027
[ OK ] md_SC05_023
[ OK ] md_SC04_030
[ OK ] md_SC05_028
[ OK ] md_MAIN_009
[ OK ] md_MAIN_007
[ OK ] md_SC05_027
[ OK ] md_SC03_053
[ OK ] md_SC05_024
[ OK ] md_SC05_025
[ OK ] md_SC05_029
[ OK ] md_SC05_026
[ OK ] md_SC03_056
[ OK ] md_SC03_054
[ OK ] md_SC02_009
[ OK ] ov_SC02_037
[ OK ] ov_SC07_006
[ OK ] md_SC07_004
[ OK ] md_SC07_003
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
[ OK ] resident
[ OK ] ov_SC05_000
[ OK ] ov_SC01_000
[ OK ] ov_SC04_000
[ OK ] ov_SC01_005
[ OK ] ov_SC01_001
[ OK ] ov_SC01_006
[ OK ] ov_SC03_002
[ OK ] ov_SC03_006
[ OK ] ov_SC06_000
[ OK ] ov_SC04_019
[ OK ] ov_SC01_077
[ OK ] ov_SC04_018
[ OK ] ov_SC02_000
[ OK ] ov_SC03_001
[ OK ] ov_SC02_003
[ OK ] ov_SC01_004
[ OK ] ov_SC01_074
[ OK ] ov_SC07_000
[ OK ] ov_SC01_008
[ OK ] ov_SC02_004
[ OK ] ov_SC01_080
[ OK ] ov_SC01_009
[ OK ] ov_SC02_015
[ OK ] ov_SC01_084
[ OK ] ov_SC02_016
[ OK ] ov_SC02_021
[ OK ] ov_SC02_026
[ OK ] ov_SC02_011
[ OK ] ov_SC02_017
[ OK ] ov_SC02_005
[ OK ] ov_SC02_039
[ OK ] ov_SC02_031
[ OK ] ov_SC02_035
[ OK ] ov_SC02_027
[ OK ] ov_SC02_041
[ OK ] ov_SC03_003
[ OK ] ov_SC02_028
[ OK ] ov_SC03_010
[ OK ] ov_SC03_012
[ OK ] ov_SC03_007
[ OK ] ov_SC03_011
[ OK ] ov_SC03_023
[ OK ] ov_SC03_013
[ OK ] ov_SC03_015
[ OK ] ov_SC03_014
[ OK ] ov_SC03_030
[ OK ] ov_SC03_024
[ OK ] ov_SC03_031
[ OK ] ov_SC03_029
[ OK ] ov_SC03_089
[ OK ] ov_SC03_090
[ OK ] ov_SC03_028
[ OK ] ov_SC03_092
[ OK ] ov_SC03_093
[ OK ] ov_SC03_095
[ OK ] ov_SC03_091
[ OK ] ov_SC03_094
[ OK ] ov_SC03_096
[ OK ] main
[ OK ] ov_SC03_098
[ OK ] ov_SC03_097
[ OK ] ov_SC03_100
[ OK ] ov_SC03_103
[ OK ] ov_SC03_109
[ OK ] ov_SC03_102
[ OK ] ov_SC03_099
[ OK ] ov_SC03_114
[ OK ] ov_SC03_113
[ OK ] ov_SC03_101
[ OK ] ov_SC03_108
[ OK ] ov_SC03_112
[ OK ] ov_SC03_116
[ OK ] ov_SC03_115
[ OK ] ov_SC03_105
[ OK ] ov_SC03_110
[ OK ] ov_SC03_104
[ OK ] ov_SC03_111
[ OK ] ov_SC03_121
[ OK ] ov_SC03_117
[ OK ] ov_SC04_008
[ OK ] ov_SC04_004
[ OK ] ov_SC03_125
[ OK ] ov_SC04_010
[ OK ] ov_SC03_119
[ OK ] ov_SC04_006
[ OK ] ov_SC04_003
[ OK ] ov_SC03_126
[ OK ] ov_SC03_118
[ OK ] ov_SC03_124
[ OK ] ov_SC04_009
[ OK ] ov_SC04_011
[ OK ] ov_SC04_007
[ OK ] ov_SC04_012
[ OK ] ov_SC04_002
[ OK ] ov_SC04_005
[ OK ] ov_SC04_015
[ OK ] ov_SC04_021
[ OK ] ov_SC04_016
[ OK ] ov_SC04_020
[ OK ] ov_SC05_002
[ OK ] ov_SC05_001
[ OK ] ov_SC05_006
[ OK ] ov_SC05_009
[ OK ] ov_SC05_011
[ OK ] ov_SC05_005
[ OK ] ov_SC05_003
[ OK ] ov_SC05_004
[ OK ] ov_SC05_008
[ OK ] ov_SC05_007
[ OK ] ov_SC05_010
[ OK ] ov_SC05_017
[ OK ] ov_SC05_019
[ OK ] ov_SC05_018
[ OK ] ov_SC06_006
[ OK ] ov_SC06_008
[ OK ] ov_SC06_013
[ OK ] ov_SC06_011
[ OK ] ov_SC06_015
[ OK ] ov_SC06_010
[ OK ] ov_SC06_014
[ OK ] ov_SC06_016
[ OK ] ov_SC06_020
[ OK ] ov_SC06_025
[ OK ] ov_SC06_022
[ OK ] ov_SC06_027
[ OK ] ov_SC06_024
[ OK ] ov_SC06_018
[ OK ] md_MAIN_013
[ OK ] md_MAIN_014
[ OK ] md_MAIN_015
[ OK ] md_MAIN_016
[ OK ] md_MAIN_017
[ OK ] md_MAIN_018
[ OK ] md_MAIN_019
[ OK ] md_MAIN_020
[ OK ] md_MAIN_021
[ OK ] md_MAIN_022
[ OK ] md_MAIN_023
[ OK ] md_MAIN_024
[ OK ] md_MAIN_025
[ OK ] md_MAIN_026
[ OK ] md_MAIN_027
[ OK ] md_MAIN_028
[ OK ] md_MAIN_029
[ OK ] md_MAIN_030
[ OK ] ov_SC06_029
[ OK ] ov_SC06_030
[ OK ] md_MAIN_031
[ OK ] md_MAIN_032
[ OK ] ov_SC07_009
[ OK ] ov_SC07_008
[ OK ] md_MAIN_033
[ OK ] md_MAIN_034
[ OK ] ov_SC07_001
[ OK ] md_MAIN_035
[ OK ] md_MAIN_037
[ OK ] md_MAIN_036
[ OK ] md_MAIN_038
[ OK ] md_MAIN_039
[ OK ] md_MAIN_040
[ OK ] md_MAIN_041
[ OK ] md_MAIN_042
[ OK ] ov_SC07_002
[ OK ] md_MAIN_043
[ OK ] md_MAIN_044
[ OK ] md_MAIN_045
[ OK ] md_MAIN_046
[ OK ] md_MAIN_001
[ OK ] md_MAIN_008
[ OK ] md_MAIN_047
[ OK ] md_MAIN_011
[ OK ] ov_SC07_010
[ OK ] ov_SC07_006
[ OK ] md_SC03_073
[ OK ] md_SC03_074
[ OK ] md_SC03_075
[ OK ] ov_SC07_007
[ OK ] md_SC03_078
[ OK ] md_SC07_003
[ OK ] ov_MAIN_012
[ OK ] ov_SC06_032
[ OK ] md_SC03_077
[ OK ] md_SC03_079
[ OK ] md_SC03_076
[ OK ] md_SC03_132
[ OK ] md_SC03_133
[ OK ] md_SC03_134
[ OK ] ov_SC03_107
[ OK ] ov_SC06_033
[ OK ] md_SC03_137
[ OK ] md_MAIN_003
[ OK ] md_SC03_138
[ OK ] md_SC04_024
[ OK ] md_SC04_025
[ OK ] md_SC04_026
[ OK ] ov_SC07_011
[ OK ] md_SC03_136
[ OK ] md_SC03_135
[ OK ] md_SC04_029
[ OK ] ov_SC02_037
+62
View File
@@ -0,0 +1,62 @@
09:13:57 apply t3d1 rung D: 27 files, control src/ov_SC04_011/ov_SC04_011_jr_8017D494.c IDENTICAL (0.39 s), calibration 775a3eafb
09:27:34 apply t3d1 rung D: 27 files, control src/ov_SC04_011/ov_SC04_011_jr_8017D494.c IDENTICAL (0.51 s), calibration 775a3eafb
09:27:37 src/ov_SC04_011/ov_SC04_011_jr_80159C84.c: IDENTICAL · rows 6 · compiles 2 · 0.5 s · canon 6 promoted 0 K&R 0 kept 0
09:27:37 src/ov_SC04_011/ov_SC04_011_jr_801588CC.c: IDENTICAL · rows 6 · compiles 2 · 0.2 s · canon 6 promoted 0 K&R 0 kept 0
09:27:38 src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c: IDENTICAL · rows 8 · compiles 2 · 0.2 s · canon 8 promoted 0 K&R 0 kept 0
09:27:38 unit 5: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c:1710: parse error before `*'
src/ov_SC04_011/ov_SC04_011_j
09:27:38 unit 5: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_801789AC.c:1711: parse error before `*'
src/ov_SC04_011/ov_SC04_011_j
09:27:38 src/ov_SC04_011/ov_SC04_011_jr_8015444C.c: IDENTICAL · rows 6 · compiles 2 · 0.1 s · canon 6 promoted 0 K&R 0 kept 0
09:27:38 src/ov_SC04_011/ov_SC04_011_jr_80154C24.c: IDENTICAL · rows 6 · compiles 2 · 0.3 s · canon 6 promoted 0 K&R 0 kept 0
09:27:39 unit 5: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c:1708: parse error before `*'
src/ov_SC04_011/ov_SC04_011_j
09:27:39 unit 5: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_80178D40.c:1710: parse error before `*'
src/ov_SC04_011/ov_SC04_011_j
09:27:39 unit 6: COMPILE-ERROR src/ov_SC04_011/../shared/ov/func_8015BEC4.h:5: too few arguments to function `func_8015AE2C' [build
09:27:39 src/ov_SC04_011/ov_SC04_011_jr_8013F350.c: IDENTICAL · rows 6 · compiles 2 · 0.1 s · canon 6 promoted 0 K&R 0 kept 0
09:27:39 unit 5: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c:1712: parse error before `*'
src/ov_SC04_011/ov_SC04_011_j
09:27:39 src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c: IDENTICAL · rows 7 · compiles 9 · 1.1 s · canon 6 promoted 0 K&R 1 kept 1
09:27:39 src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c: IDENTICAL · rows 6 · compiles 2 · 0.2 s · canon 6 promoted 0 K&R 0 kept 0
09:27:40 src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c: IDENTICAL · rows 13 · compiles 15 · 2.2 s · canon 12 promoted 0 K&R 0 kept 1
09:27:40 src/ov_SC04_011/ov_SC04_011_jr_801789AC.c: IDENTICAL · rows 15 · compiles 17 · 1.9 s · canon 14 promoted 0 K&R 0 kept 1
09:27:40 src/ov_SC04_011/ov_SC04_011_jr_80140608.c: IDENTICAL · rows 6 · compiles 2 · 0.4 s · canon 6 promoted 0 K&R 0 kept 0
09:27:40 unit 5: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_801734BC.c:1713: parse error before `*'
src/ov_SC04_011/ov_SC04_011_j
09:27:40 src/ov_SC04_011/ov_SC04_011_o0c.c: IDENTICAL · rows 5 · compiles 2 · 0.2 s · canon 5 promoted 0 K&R 0 kept 0
09:27:40 unit 6: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c:1260: too few arguments to function `func_8013D53C'
src/ov
09:27:40 src/ov_SC04_011/ov_SC04_011_jr_80135D20.c: IDENTICAL · rows 4 · compiles 2 · 0.3 s · canon 4 promoted 0 K&R 0 kept 0
09:27:40 src/ov_SC04_011/ov_SC04_011_jr_80178D40.c: IDENTICAL · rows 13 · compiles 15 · 2.1 s · canon 12 promoted 0 K&R 0 kept 1
09:27:41 src/ov_SC04_011/ov_SC04_011_jr_80135888.c: IDENTICAL · rows 4 · compiles 2 · 0.2 s · canon 4 promoted 0 K&R 0 kept 0
09:27:41 unit 7: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c:1124: too few arguments to function `func_8013D9B0'
src/ov
09:27:41 src/ov_SC04_011/ov_SC04_011_jr_80135A4C.c: IDENTICAL · rows 4 · compiles 2 · 0.2 s · canon 4 promoted 0 K&R 0 kept 0
09:27:41 src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c: IDENTICAL · rows 13 · compiles 15 · 2.3 s · canon 12 promoted 0 K&R 0 kept 1
09:27:41 src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c: IDENTICAL · rows 9 · compiles 11 · 1.9 s · canon 7 promoted 0 K&R 2 kept 2
09:27:41 src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c: IDENTICAL · rows 13 · compiles 15 · 2.4 s · canon 12 promoted 0 K&R 0 kept 1
09:27:41 src/ov_SC04_011/ov_SC04_011_jr_801380E0.c: IDENTICAL · rows 4 · compiles 2 · 0.4 s · canon 4 promoted 0 K&R 0 kept 0
09:27:41 src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c: IDENTICAL · rows 6 · compiles 2 · 0.7 s · canon 6 promoted 0 K&R 0 kept 0
09:27:41 src/ov_SC04_011/ov_SC04_011_after.c: IDENTICAL · rows 10 · compiles 2 · 1.0 s · canon 10 promoted 0 K&R 0 kept 0
09:27:41 src/ov_SC04_011/ov_SC04_011.c: IDENTICAL · rows 2 · compiles 2 · 0.3 s · canon 2 promoted 0 K&R 0 kept 0
09:27:42 src/ov_SC04_011/ov_SC04_011_jr_801734BC.c: IDENTICAL · rows 11 · compiles 13 · 3.1 s · canon 10 promoted 0 K&R 0 kept 1
09:27:42 unit 11: COMPILE-ERROR src/ov_SC04_011/../shared/ov/func_8016AE5C__te4eb1475.h:8: too few arguments to function `func_8016B
09:27:42 unit 5: COMPILE-ERROR 1546 | #define NULL 0
|
include/common.h:41: note: this is the location of the previous defi
09:27:43 unit 12: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c:2454: too few arguments to function `func_8016BF50'
src/ov
09:27:43 unit 6: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:1708: parse error before `*'
src/ov_SC04_011/ov_SC04_011_j
09:27:43 src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c: IDENTICAL · rows 13 · compiles 15 · 4.5 s · canon 11 promoted 0 K&R 1 kept 2
09:27:46 unit 13: COMPILE-ERROR 1546 | #define NULL 0
|
include/common.h:41: note: this is the location of the previous defi
09:27:47 src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c: IDENTICAL · rows 15 · compiles 17 · 8.0 s · canon 13 promoted 0 K&R 1 kept 2
09:27:56 unit 32: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:
src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:
09:28:03 unit 46: COMPILE-ERROR src/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:
src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:
09:28:05 src/ov_SC04_011/ov_SC04_011_jr_8017D494.c: IDENTICAL · rows 47 · compiles 49 · 24.8 s · canon 44 promoted 0 K&R 1 kept 3
09:28:05 restruct: batch t3d1 rung D — 27 files (TUs; 27 drawable) · 258 declaration units: 242 canonical / 0 promoted / 6 K&R marked / 16 kept · compiles 223 in 31 s wall · final 27/27 identical · written 27 files
+227
View File
@@ -0,0 +1,227 @@
{
"label": "t3d1",
"rung": "D",
"generated": "2026-09-12 09:28",
"headers": false,
"batch": 27,
"only": [
"ov_SC04_011"
],
"files": 27,
"drawable_files": 27,
"wall_s": 31.5,
"calib": {
"head": "775a3eafb",
"stamp": "e34b6679685f"
},
"compiles": 223,
"members": 0,
"kept": 16,
"skipped": 0,
"levers_off": 0,
"canon": 242,
"promoted": 0,
"kr": 6,
"folded": 0,
"refused": 0,
"renames": 0,
"units": 258,
"bodies": 0,
"seconds": 59.634565353393555,
"rows": 258,
"written": 27,
"final_ok": 27,
"final_bad": 0,
"no_recipe": 0,
"per_file": [
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c",
"final": "IDENTICAL",
"written": true,
"rows": 47,
"compiles": 49
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c",
"final": "IDENTICAL",
"written": true,
"rows": 15,
"compiles": 17
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c",
"final": "IDENTICAL",
"written": true,
"rows": 13,
"compiles": 15
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c",
"final": "IDENTICAL",
"written": true,
"rows": 13,
"compiles": 15
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c",
"final": "IDENTICAL",
"written": true,
"rows": 13,
"compiles": 15
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c",
"final": "IDENTICAL",
"written": true,
"rows": 13,
"compiles": 15
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c",
"final": "IDENTICAL",
"written": true,
"rows": 11,
"compiles": 13
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c",
"final": "IDENTICAL",
"written": true,
"rows": 13,
"compiles": 15
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c",
"final": "IDENTICAL",
"written": true,
"rows": 15,
"compiles": 17
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c",
"final": "IDENTICAL",
"written": true,
"rows": 7,
"compiles": 9
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_801588CC.c",
"final": "IDENTICAL",
"written": true,
"rows": 6,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_80159C84.c",
"final": "IDENTICAL",
"written": true,
"rows": 6,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c",
"final": "IDENTICAL",
"written": true,
"rows": 8,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8015444C.c",
"final": "IDENTICAL",
"written": true,
"rows": 6,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c",
"final": "IDENTICAL",
"written": true,
"rows": 6,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c",
"final": "IDENTICAL",
"written": true,
"rows": 9,
"compiles": 11
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8013F350.c",
"final": "IDENTICAL",
"written": true,
"rows": 6,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c",
"final": "IDENTICAL",
"written": true,
"rows": 6,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_80140608.c",
"final": "IDENTICAL",
"written": true,
"rows": 6,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_after.c",
"final": "IDENTICAL",
"written": true,
"rows": 10,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_o0c.c",
"final": "IDENTICAL",
"written": true,
"rows": 5,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_80135D20.c",
"final": "IDENTICAL",
"written": true,
"rows": 4,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c",
"final": "IDENTICAL",
"written": true,
"rows": 6,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_80135888.c",
"final": "IDENTICAL",
"written": true,
"rows": 4,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_80135A4C.c",
"final": "IDENTICAL",
"written": true,
"rows": 4,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011_jr_801380E0.c",
"final": "IDENTICAL",
"written": true,
"rows": 4,
"compiles": 2
},
{
"tu": "src/ov_SC04_011/ov_SC04_011.c",
"final": "IDENTICAL",
"written": true,
"rows": 2,
"compiles": 2
}
]
}
+258
View File
@@ -0,0 +1,258 @@
{"ts": "2026-09-12 09:27:36", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80159C84.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [250], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "b79fbf1ea625", "nhash_after": "0f2b7009c152", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:36", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80159C84.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [249], "ansi": "u32 a0, u32 a1", "nhash_before": "3fd1f74adcc0", "nhash_after": "fe5448b24d47", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:36", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80159C84.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [247], "ansi": "u32 a0", "nhash_before": "0097562d1c0f", "nhash_after": "b2aa67aff0e1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:36", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80159C84.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [248], "ansi": "s32 a0", "nhash_before": "d382e8d70d64", "nhash_after": "a55df4fb18ec", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:36", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80159C84.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [246], "ansi": "u32 a0", "nhash_before": "387b45b782f1", "nhash_after": "39e4a90cb72d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:36", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80159C84.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [363, 1004], "ansi": "s32 arg0", "nhash_before": "dee48b44a8f0", "nhash_after": "165c3a466227", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801588CC.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [250], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "b79fbf1ea625", "nhash_after": "0f2b7009c152", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801588CC.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [249], "ansi": "u32 a0, u32 a1", "nhash_before": "3fd1f74adcc0", "nhash_after": "fe5448b24d47", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801588CC.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [247], "ansi": "u32 a0", "nhash_before": "0097562d1c0f", "nhash_after": "b2aa67aff0e1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801588CC.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [248], "ansi": "s32 a0", "nhash_before": "d382e8d70d64", "nhash_after": "a55df4fb18ec", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801588CC.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [246], "ansi": "u32 a0", "nhash_before": "387b45b782f1", "nhash_after": "39e4a90cb72d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801588CC.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [363, 1005], "ansi": "s32 arg0", "nhash_before": "57e0a00c366f", "nhash_after": "cea5dda391c8", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [250], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "b79fbf1ea625", "nhash_after": "0f2b7009c152", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [249], "ansi": "u32 a0, u32 a1", "nhash_before": "3fd1f74adcc0", "nhash_after": "fe5448b24d47", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [247], "ansi": "u32 a0", "nhash_before": "0097562d1c0f", "nhash_after": "b2aa67aff0e1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [248], "ansi": "s32 a0", "nhash_before": "d382e8d70d64", "nhash_after": "a55df4fb18ec", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [246], "ansi": "u32 a0", "nhash_before": "387b45b782f1", "nhash_after": "39e4a90cb72d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [363, 996], "ansi": "s32 arg0", "nhash_before": "de473b02131e", "nhash_after": "01ee5348afa4", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c", "unit": "decl:func_8015ACC4", "callee": "func_8015ACC4", "header": false, "defn_tu": "src/shared/ov/func_8015ACC4.h", "decls": 1, "lines": [329], "ansi": "s32 *arg0", "nhash_before": "472e1c93ddc2", "nhash_after": "5620d6e0b0dd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:37", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.c", "unit": "decl:func_8015AD08", "callee": "func_8015AD08", "header": false, "defn_tu": "src/shared/ov/func_8015AD08.h", "decls": 1, "lines": [327], "ansi": "void *arg0", "nhash_before": "2646056b250b", "nhash_after": "c0cfb3196a0c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015444C.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [250], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "b79fbf1ea625", "nhash_after": "0f2b7009c152", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015444C.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [249], "ansi": "u32 a0, u32 a1", "nhash_before": "3fd1f74adcc0", "nhash_after": "fe5448b24d47", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015444C.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [247], "ansi": "u32 a0", "nhash_before": "0097562d1c0f", "nhash_after": "b2aa67aff0e1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015444C.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [248], "ansi": "s32 a0", "nhash_before": "d382e8d70d64", "nhash_after": "a55df4fb18ec", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015444C.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [246], "ansi": "u32 a0", "nhash_before": "387b45b782f1", "nhash_after": "39e4a90cb72d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015444C.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 1, "lines": [363], "ansi": "s32 arg0", "nhash_before": "dd4dbc765f40", "nhash_after": "9a2d4fffba3d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [250], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "b79fbf1ea625", "nhash_after": "0f2b7009c152", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [249], "ansi": "u32 a0, u32 a1", "nhash_before": "3fd1f74adcc0", "nhash_after": "fe5448b24d47", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [247], "ansi": "u32 a0", "nhash_before": "0097562d1c0f", "nhash_after": "b2aa67aff0e1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [248], "ansi": "s32 a0", "nhash_before": "d382e8d70d64", "nhash_after": "a55df4fb18ec", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [246], "ansi": "u32 a0", "nhash_before": "387b45b782f1", "nhash_after": "39e4a90cb72d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 1, "lines": [363], "ansi": "s32 arg0", "nhash_before": "dd4dbc765f40", "nhash_after": "9a2d4fffba3d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013F350.c", "unit": "decl:func_80015D4C", "callee": "func_80015D4C", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [732], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "70bb06bd7984", "nhash_after": "36a2c7049935", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013F350.c", "unit": "decl:func_80015F04", "callee": "func_80015F04", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [733], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "1253ef4a5f0f", "nhash_after": "e8ac4cfebae7", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013F350.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [382, 384], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "1c1599d1e587", "nhash_after": "c61ad5c9d4db", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013F350.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [459, 465, 529], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "3d7ecfcde25b", "nhash_after": "330740d2886c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013F350.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [583], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "05b34e1c77ac", "nhash_after": "dbced5782c7f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:38", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013F350.c", "unit": "decl:func_8013D53C", "callee": "func_8013D53C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "decls": 1, "lines": [819], "ansi": "void *arg0v", "nhash_before": "7e4b6e01cb59", "nhash_after": "73d86c9aaf34", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [250], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "b79fbf1ea625", "nhash_after": "0f2b7009c152", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [249], "ansi": "u32 a0, u32 a1", "nhash_before": "3fd1f74adcc0", "nhash_after": "fe5448b24d47", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [247], "ansi": "u32 a0", "nhash_before": "0097562d1c0f", "nhash_after": "b2aa67aff0e1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [248], "ansi": "s32 a0", "nhash_before": "d382e8d70d64", "nhash_after": "a55df4fb18ec", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [246], "ansi": "u32 a0", "nhash_before": "387b45b782f1", "nhash_after": "39e4a90cb72d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 3, "lines": [363, 996, 1201], "ansi": "s32 arg0", "nhash_before": "ab8d5c91bc4b", "nhash_after": "021fae6ade93", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1515], "ansi": "s32 arg0", "nhash_before": "99da047e4a2f", "nhash_after": "99da047e4a2f", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/../shared/ov/func_8015BEC4.h:5: too few arguments to function `func_8015AE2C' [build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o]"}, "verdict": "DECL-KEPT", "cause": "K&R site: the calls pass [1] arguments, the definition takes s32 arg0 \u2014 kept `()`, marked", "kr": true}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c", "unit": "decl:func_80015D4C", "callee": "func_80015D4C", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [733], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "1253ef4a5f0f", "nhash_after": "e8ac4cfebae7", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c", "unit": "decl:func_80015F04", "callee": "func_80015F04", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [734], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "b445b7676e92", "nhash_after": "c418480d6795", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [385, 387], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "69beb736b082", "nhash_after": "8364e59b95a0", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [462, 468, 532], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "a388c634da40", "nhash_after": "f5559d5d0f93", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [586], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "400184fbe8aa", "nhash_after": "70e16bcd36b2", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.c", "unit": "decl:func_8013D53C", "callee": "func_8013D53C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "decls": 1, "lines": [819], "ansi": "void *arg0v", "nhash_before": "7e4b6e01cb59", "nhash_after": "73d86c9aaf34", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [262], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "f15905d4809f", "nhash_after": "c9f8cce85db3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [261], "ansi": "u32 a0, u32 a1", "nhash_before": "2e63b2fbf4c9", "nhash_after": "4e4eb3972f0b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [259], "ansi": "u32 a0", "nhash_before": "44853e32df44", "nhash_after": "00ad5c1ad4cc", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [260], "ansi": "s32 a0", "nhash_before": "6c37f0ea0d4a", "nhash_after": "13344261fa4f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [258], "ansi": "u32 a0", "nhash_before": "afd6cbd00650", "nhash_after": "294095eb091c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_800D20C0", "callee": "func_800D20C0", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 2, "lines": [1710, 1866], "ansi": "Pos800D20C0 *arg0, SVECTOR *arg1, s16 arg2", "nhash_before": "be96ebe1830c", "nhash_after": "be96ebe1830c", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c:1710: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c:1866: parse error before `*' [build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o]"}, "verdict": "DECL-KEPT", "cause": "compile: src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c:1710: parse error before `*'"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [375, 1002], "ansi": "s32 arg0", "nhash_before": "f8028fd3b861", "nhash_after": "a5a3651047b6", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1194], "ansi": "s32 arg0", "nhash_before": "78e5d1668983", "nhash_after": "09eb833ce3c0", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_8015D01C", "callee": "func_8015D01C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1234, 1239], "ansi": "int param_1", "nhash_before": "f98e560369ff", "nhash_after": "1fa8f8cdb82c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_80160EA4", "callee": "func_80160EA4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1411, 1414], "ansi": "void *a0", "nhash_before": "6d705ea79f0d", "nhash_after": "a80de42c5c89", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_80166994", "callee": "func_80166994", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1692, 1718], "ansi": "s32 param_1, int param_2, int param_3, int param_4", "nhash_before": "709f7c358d03", "nhash_after": "14b34c62687c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_80175184", "callee": "func_80175184", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 3, "lines": [2443, 2445, 2449], "ansi": "s32* arg0", "nhash_before": "8a19b1060e63", "nhash_after": "704025fe7a99", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.c", "unit": "decl:func_80178840", "callee": "func_80178840", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 1, "lines": [2530], "ansi": "int param_1", "nhash_before": "d6b3d522199d", "nhash_after": "b58bc66859c0", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [257], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "f5284dba19fa", "nhash_after": "74c3aee152b5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [256], "ansi": "u32 a0, u32 a1", "nhash_before": "d215e7b9857b", "nhash_after": "11a79ae1a949", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [254], "ansi": "u32 a0", "nhash_before": "b23b65f871f4", "nhash_after": "3538d475129d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [255], "ansi": "s32 a0", "nhash_before": "c555a517bb3c", "nhash_after": "e95e891eac73", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [253], "ansi": "u32 a0", "nhash_before": "0008315972a8", "nhash_after": "5ec742e5412f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_800D20C0", "callee": "func_800D20C0", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 2, "lines": [1711, 1868], "ansi": "Pos800D20C0 *arg0, SVECTOR *arg1, s16 arg2", "nhash_before": "54e2cac4895b", "nhash_after": "54e2cac4895b", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c:1711: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_801789AC.c:1868: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_801789AC.c: At top level: ["}, "verdict": "DECL-KEPT", "cause": "compile: src/ov_SC04_011/ov_SC04_011_jr_801789AC.c:1711: parse error before `*'"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [370, 1003], "ansi": "s32 arg0", "nhash_before": "8f2e55a563e7", "nhash_after": "d66d3e227a8f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1195], "ansi": "s32 arg0", "nhash_before": "cf19243506bf", "nhash_after": "be51871add80", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_8015D01C", "callee": "func_8015D01C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1235, 1240], "ansi": "int param_1", "nhash_before": "75f3aeb26d09", "nhash_after": "604b2b1c3dc3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80160EA4", "callee": "func_80160EA4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1412, 1415], "ansi": "void *a0", "nhash_before": "9c7ed927126e", "nhash_after": "165262f618f5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80166994", "callee": "func_80166994", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1693, 1719], "ansi": "s32 param_1, int param_2, int param_3, int param_4", "nhash_before": "b6de790b75bb", "nhash_after": "a3e69d116484", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80175184", "callee": "func_80175184", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 3, "lines": [2463, 2465, 2469], "ansi": "s32* arg0", "nhash_before": "c78ccc5300a8", "nhash_after": "917c1fe49262", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80178840", "callee": "func_80178840", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 2, "lines": [2574, 2576], "ansi": "int param_1", "nhash_before": "0c2516649860", "nhash_after": "3fa84e56c157", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80178BF8", "callee": "func_80178BF8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "decls": 2, "lines": [2664, 2683], "ansi": "void", "nhash_before": "dd1d20d74ae8", "nhash_after": "36591dadff11", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:39", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "unit": "decl:func_80178CBC", "callee": "func_80178CBC", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801789AC.c", "decls": 3, "lines": [2592, 2665, 2684], "ansi": "s32 arg0, s32 arg1", "nhash_before": "d894cd6eec5b", "nhash_after": "867e6339529f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80140608.c", "unit": "decl:func_80015D4C", "callee": "func_80015D4C", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [728], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "8ddf5ea19713", "nhash_after": "e8cf564a83d8", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80140608.c", "unit": "decl:func_80015F04", "callee": "func_80015F04", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [729], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "9e37801c921b", "nhash_after": "2972f959489f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80140608.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [380, 382], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "0b39667ba17d", "nhash_after": "4108af32a9b5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80140608.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [457, 463, 527], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "f2890b60a264", "nhash_after": "82ad7a9c6e40", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80140608.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [581], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "035588602d9c", "nhash_after": "6c08cb80a73c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80140608.c", "unit": "decl:func_8013D53C", "callee": "func_8013D53C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "decls": 1, "lines": [814], "ansi": "void *arg0v", "nhash_before": "cf2a1a35fda7", "nhash_after": "004385d6fa3e", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_o0c.c", "unit": "decl:func_80015D4C", "callee": "func_80015D4C", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [729], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "9e37801c921b", "nhash_after": "2972f959489f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_o0c.c", "unit": "decl:func_80015F04", "callee": "func_80015F04", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [730], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "fc47838328fb", "nhash_after": "ad3e2d01ebd1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_o0c.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [376, 378], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "739082144903", "nhash_after": "a34b42b82abb", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_o0c.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [453, 459, 523], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "ee017aedc4b9", "nhash_after": "2dc097f4b966", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_o0c.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [577], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "2461e8581742", "nhash_after": "473f385a3817", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135D20.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [386, 388], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "a5f93b3dcc5d", "nhash_after": "1a6a332b9d3b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135D20.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [465, 471, 539], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "da66cf92ab56", "nhash_after": "9ace3bb7a9cd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135D20.c", "unit": "decl:func_80131E00", "callee": "func_80131E00", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [456, 541], "ansi": "struct S80131E00 *a0, s32 a1", "nhash_before": "5d42f226e687", "nhash_after": "64c4b867f9cd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135D20.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [600], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "52cb0135f1af", "nhash_after": "186596622a70", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [262], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "f15905d4809f", "nhash_after": "c9f8cce85db3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [261], "ansi": "u32 a0, u32 a1", "nhash_before": "2e63b2fbf4c9", "nhash_after": "4e4eb3972f0b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [259], "ansi": "u32 a0", "nhash_before": "44853e32df44", "nhash_after": "00ad5c1ad4cc", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [260], "ansi": "s32 a0", "nhash_before": "6c37f0ea0d4a", "nhash_after": "13344261fa4f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [258], "ansi": "u32 a0", "nhash_before": "afd6cbd00650", "nhash_after": "294095eb091c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_800D20C0", "callee": "func_800D20C0", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 2, "lines": [1710, 1866], "ansi": "Pos800D20C0 *arg0, SVECTOR *arg1, s16 arg2", "nhash_before": "be96ebe1830c", "nhash_after": "be96ebe1830c", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c:1710: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_80178D40.c:1866: parse error before `*'\nsrc/ov_SC04_011/../shared/ov/func_80179D30.h: At top level"}, "verdict": "DECL-KEPT", "cause": "compile: src/ov_SC04_011/ov_SC04_011_jr_80178D40.c:1710: parse error before `*'"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [375, 1002], "ansi": "s32 arg0", "nhash_before": "f8028fd3b861", "nhash_after": "a5a3651047b6", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1194], "ansi": "s32 arg0", "nhash_before": "78e5d1668983", "nhash_after": "09eb833ce3c0", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_8015D01C", "callee": "func_8015D01C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1234, 1239], "ansi": "int param_1", "nhash_before": "f98e560369ff", "nhash_after": "1fa8f8cdb82c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_80160EA4", "callee": "func_80160EA4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1411, 1414], "ansi": "void *a0", "nhash_before": "6d705ea79f0d", "nhash_after": "a80de42c5c89", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_80166994", "callee": "func_80166994", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1692, 1718], "ansi": "s32 param_1, int param_2, int param_3, int param_4", "nhash_before": "709f7c358d03", "nhash_after": "14b34c62687c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_80175184", "callee": "func_80175184", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 3, "lines": [2443, 2445, 2449], "ansi": "s32* arg0", "nhash_before": "8a19b1060e63", "nhash_after": "704025fe7a99", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80178D40.c", "unit": "decl:func_80178840", "callee": "func_80178840", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 1, "lines": [2530], "ansi": "int param_1", "nhash_before": "d6b3d522199d", "nhash_after": "b58bc66859c0", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135888.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [386, 388], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "a5f93b3dcc5d", "nhash_after": "1a6a332b9d3b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135888.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [465, 471, 539], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "da66cf92ab56", "nhash_after": "9ace3bb7a9cd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135888.c", "unit": "decl:func_80131E00", "callee": "func_80131E00", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [456, 541], "ansi": "struct S80131E00 *a0, s32 a1", "nhash_before": "5d42f226e687", "nhash_after": "64c4b867f9cd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135888.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [600], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "52cb0135f1af", "nhash_after": "186596622a70", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135A4C.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [386, 388], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "a5f93b3dcc5d", "nhash_after": "1a6a332b9d3b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135A4C.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [465, 471, 539], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "da66cf92ab56", "nhash_after": "9ace3bb7a9cd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135A4C.c", "unit": "decl:func_80131E00", "callee": "func_80131E00", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [456, 541], "ansi": "struct S80131E00 *a0, s32 a1", "nhash_before": "5d42f226e687", "nhash_after": "64c4b867f9cd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135A4C.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [600], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "52cb0135f1af", "nhash_after": "186596622a70", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [262], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "f15905d4809f", "nhash_after": "c9f8cce85db3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [261], "ansi": "u32 a0, u32 a1", "nhash_before": "2e63b2fbf4c9", "nhash_after": "4e4eb3972f0b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [259], "ansi": "u32 a0", "nhash_before": "44853e32df44", "nhash_after": "00ad5c1ad4cc", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [260], "ansi": "s32 a0", "nhash_before": "6c37f0ea0d4a", "nhash_after": "13344261fa4f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [258], "ansi": "u32 a0", "nhash_before": "afd6cbd00650", "nhash_after": "294095eb091c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_800D20C0", "callee": "func_800D20C0", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 2, "lines": [1708, 1864], "ansi": "Pos800D20C0 *arg0, SVECTOR *arg1, s16 arg2", "nhash_before": "ebed1df43af6", "nhash_after": "ebed1df43af6", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c:1708: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c:1864: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c: At top level: ["}, "verdict": "DECL-KEPT", "cause": "compile: src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c:1708: parse error before `*'"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [375, 1000], "ansi": "s32 arg0", "nhash_before": "86b89ff35719", "nhash_after": "5567e1334f08", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1192], "ansi": "s32 arg0", "nhash_before": "02c5888c8931", "nhash_after": "45ad41efaa34", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_8015D01C", "callee": "func_8015D01C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1232, 1237], "ansi": "int param_1", "nhash_before": "b5158f3a6a64", "nhash_after": "8a3c707e7611", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_80160EA4", "callee": "func_80160EA4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1409, 1412], "ansi": "void *a0", "nhash_before": "6fb61c77f8b7", "nhash_after": "48d3be47dc1c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_80166994", "callee": "func_80166994", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1690, 1716], "ansi": "s32 param_1, int param_2, int param_3, int param_4", "nhash_before": "b813aad60a70", "nhash_after": "58da33963406", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_80175184", "callee": "func_80175184", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 3, "lines": [2441, 2443, 2447], "ansi": "s32* arg0", "nhash_before": "4bad8f0137c4", "nhash_after": "0bba0dab45be", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:40", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.c", "unit": "decl:func_80178840", "callee": "func_80178840", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 1, "lines": [2528], "ansi": "int param_1", "nhash_before": "86fa340623e2", "nhash_after": "cc8881d8843d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_80015D4C", "callee": "func_80015D4C", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [730], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "fc47838328fb", "nhash_after": "ad3e2d01ebd1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_80015F04", "callee": "func_80015F04", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [731], "ansi": "s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8", "nhash_before": "568e0380d2c5", "nhash_after": "0362cab91cb4", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_80028620", "callee": "func_80028620", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [1041], "ansi": "s32 a0, void *a1", "nhash_before": "cefb52eef0a8", "nhash_after": "bf1ad8dfd8c8", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [377, 379], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "9c839c8d0167", "nhash_after": "02e7e50dc702", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [454, 460, 524], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "36894a8a1dc5", "nhash_after": "b7ec34320e03", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [578], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "88b787150d06", "nhash_after": "0dfc71b31536", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_8013D53C", "callee": "func_8013D53C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "decls": 1, "lines": [1239], "ansi": "void *arg0v", "nhash_before": "2671e1db4b13", "nhash_after": "2671e1db4b13", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c:1260: too few arguments to function `func_8013D53C'\nsrc/ov_SC04_011/../shared/ov/func_8013EA54.h: At top level: [build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C"}, "verdict": "DECL-KEPT", "cause": "K&R site: the calls pass [0] arguments, the definition takes void *arg0v \u2014 kept `()`, marked", "kr": true}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_8013D9B0", "callee": "func_8013D9B0", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "decls": 3, "lines": [919, 1092, 1120], "ansi": "int param_1", "nhash_before": "d494afca9a73", "nhash_after": "d494afca9a73", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c:1124: too few arguments to function `func_8013D9B0'\nsrc/ov_SC04_011/../shared/ov/func_8013EA54.h: At top level: [build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C"}, "verdict": "DECL-KEPT", "cause": "K&R site: the calls pass [0, 1] arguments, the definition takes int param_1 \u2014 kept `()`, marked", "kr": true}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "unit": "decl:func_8013DBE4", "callee": "func_8013DBE4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "decls": 1, "lines": [918], "ansi": "int param_1", "nhash_before": "6b1b774f8eb6", "nhash_after": "0c7ad7b80dc5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [257], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "f5284dba19fa", "nhash_after": "74c3aee152b5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [256], "ansi": "u32 a0, u32 a1", "nhash_before": "d215e7b9857b", "nhash_after": "11a79ae1a949", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [254], "ansi": "u32 a0", "nhash_before": "b23b65f871f4", "nhash_after": "3538d475129d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [255], "ansi": "s32 a0", "nhash_before": "c555a517bb3c", "nhash_after": "e95e891eac73", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [253], "ansi": "u32 a0", "nhash_before": "0008315972a8", "nhash_after": "5ec742e5412f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_800D20C0", "callee": "func_800D20C0", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 2, "lines": [1712, 1889], "ansi": "Pos800D20C0 *arg0, SVECTOR *arg1, s16 arg2", "nhash_before": "abb0e1864854", "nhash_after": "abb0e1864854", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c:1712: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_80171B4C.c:1889: parse error before `*' [build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o]"}, "verdict": "DECL-KEPT", "cause": "compile: src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c:1712: parse error before `*'"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [370, 997], "ansi": "s32 arg0", "nhash_before": "7f303579ba71", "nhash_after": "ad03c77651c0", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1189], "ansi": "s32 arg0", "nhash_before": "0a7a54f71e9c", "nhash_after": "c99efc66a828", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_8015D01C", "callee": "func_8015D01C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1240, 1244], "ansi": "int param_1", "nhash_before": "250f12f57b2e", "nhash_after": "8ea1030da6f8", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_80160EA4", "callee": "func_80160EA4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1416, 1419], "ansi": "void *a0", "nhash_before": "99176eaa579a", "nhash_after": "1f61c496cc40", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_80166994", "callee": "func_80166994", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1694, 1720], "ansi": "s32 param_1, int param_2, int param_3, int param_4", "nhash_before": "83236efcf105", "nhash_after": "1e7fa4079f7c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_8016B234", "callee": "func_8016B234", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "decls": 2, "lines": [1802, 1810], "ansi": "s32 param_1", "nhash_before": "9009bb992fdf", "nhash_after": "9a50a7a91a59", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_80171B4C.c", "unit": "decl:func_8016CF04", "callee": "func_8016CF04", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "decls": 2, "lines": [1866, 1872], "ansi": "s32 param_1, s32 param_2", "nhash_before": "2d0eccbb77e5", "nhash_after": "8c685a34a92b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801380E0.c", "unit": "decl:func_8012D664", "callee": "func_8012D664", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [380, 382], "ansi": "int arg0, int arg1, int arg2", "nhash_before": "0b39667ba17d", "nhash_after": "4108af32a9b5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801380E0.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 3, "lines": [457, 463, 527], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "f2890b60a264", "nhash_after": "82ad7a9c6e40", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801380E0.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [581], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "035588602d9c", "nhash_after": "6c08cb80a73c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801380E0.c", "unit": "decl:func_801392FC", "callee": "func_801392FC", "header": false, "defn_tu": "src/shared/ov/func_801392FC.h", "decls": 1, "lines": [646], "ansi": "s32 arg0, s32 arg1, u8 *arg2", "nhash_before": "b18ccb7a679d", "nhash_after": "3415dc67a2d2", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "unit": "decl:func_8012F568", "callee": "func_8012F568", "header": false, "defn_tu": "src/shared/ov/func_8012F568.h", "decls": 2, "lines": [556, 581], "ansi": "s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6", "nhash_before": "e39141123b7d", "nhash_after": "3ca3374e769d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "unit": "decl:func_80131170", "callee": "func_80131170", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 2, "lines": [953, 970], "ansi": "s32 p, s32 b, s32 c", "nhash_before": "4a0b2e368b8f", "nhash_after": "6df7aa13778e", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "unit": "decl:func_80131E00", "callee": "func_80131E00", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [1425], "ansi": "struct S80131E00 *a0, s32 a1", "nhash_before": "a5118dba7703", "nhash_after": "d364f5437a20", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "unit": "decl:func_80133CD4", "callee": "func_80133CD4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "decls": 1, "lines": [2267], "ansi": "int arg0, s16 * cmd, s16 * base, s32 * arr", "nhash_before": "0ddba7e0c4ce", "nhash_after": "245069717fe3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "unit": "decl:func_80134310", "callee": "func_80134310", "header": false, "defn_tu": "src/shared/ov/func_80134310.h", "decls": 1, "lines": [2358], "ansi": "Vec3s *a0, Vec3s *a1, s32 a2", "nhash_before": "fc13385b1e29", "nhash_after": "d49dd2934bdd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c", "unit": "decl:func_8013435C", "callee": "func_8013435C", "header": false, "defn_tu": "src/shared/ov/func_8013435C.h", "decls": 1, "lines": [2359], "ansi": "s16 *a0, s16 *a1, s32 a2, s16 *a3", "nhash_before": "92d560bb8161", "nhash_after": "4d1f09707e07", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_80016714", "callee": "func_80016714", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [126], "ansi": "void *ptr, s32 len", "nhash_before": "e0f737731a09", "nhash_after": "54ec8bb8fee0", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_8001C320", "callee": "func_8001C320", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [127], "ansi": "s32 a0, s32 a1", "nhash_before": "3ec97e65b3cc", "nhash_after": "4486a24abbe9", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_80145EE8", "callee": "func_80145EE8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_after.c", "decls": 1, "lines": [139], "ansi": "s32 param_1", "nhash_before": "e1c8b7de3760", "nhash_after": "0408bc1c481b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_801468C8", "callee": "func_801468C8", "header": false, "defn_tu": "src/shared/ov/func_801468C8.h", "decls": 1, "lines": [138], "ansi": "s32 arg0, u8 arg1", "nhash_before": "607ed8a89c16", "nhash_after": "71d88fe2a247", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_80147084", "callee": "func_80147084", "header": false, "defn_tu": "src/shared/ov/func_80147084.h", "decls": 1, "lines": [129], "ansi": "s32 *a0", "nhash_before": "dfc20f52f0a1", "nhash_after": "d466758809cc", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_80147098", "callee": "func_80147098", "header": false, "defn_tu": "src/shared/ov/func_80147098.h", "decls": 1, "lines": [130], "ansi": "s32 *a0", "nhash_before": "8b6562ca69a4", "nhash_after": "2265e8007e57", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_801470AC", "callee": "func_801470AC", "header": false, "defn_tu": "src/shared/ov/func_801470AC.h", "decls": 2, "lines": [131, 2550], "ansi": "s32 *a0", "nhash_before": "d471bd9309c5", "nhash_after": "08eea7928898", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_80149210", "callee": "func_80149210", "header": false, "defn_tu": "src/shared/ov/func_80149210.h", "decls": 1, "lines": [132], "ansi": "s32 a0, s32 a1", "nhash_before": "03ee0a75ba2c", "nhash_after": "bbf26a930b85", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_8014F4C0", "callee": "func_8014F4C0", "header": false, "defn_tu": "src/shared/ov/func_8014F4C0.h", "decls": 1, "lines": [2025], "ansi": "s32 arg0", "nhash_before": "a85c22ccde42", "nhash_after": "eb99a2422bd3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "unit": "decl:func_8014F74C", "callee": "func_8014F74C", "header": false, "defn_tu": "src/shared/ov/func_8014F74C.h", "decls": 1, "lines": [2070], "ansi": "s32 arg0", "nhash_before": "6eb31bd76aca", "nhash_after": "883b24ea9bd7", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011.c", "unit": "decl:func_801299C8", "callee": "func_801299C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011.c", "decls": 1, "lines": [478], "ansi": "int arg0, int arg1, u8 * arg2", "nhash_before": "6bba241ad292", "nhash_after": "da583345849a", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:41", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011.c", "unit": "decl:func_8012AAAC", "callee": "func_8012AAAC", "header": false, "defn_tu": "src/shared/ov/func_8012AAAC__t6631232b.h", "decls": 2, "lines": [739, 744], "ansi": "void *arg0", "nhash_before": "9bc2253bec69", "nhash_after": "2a86db25f1af", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [260], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "dbc91e937a66", "nhash_after": "b638e5149dfd", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [259], "ansi": "u32 a0, u32 a1", "nhash_before": "44853e32df44", "nhash_after": "dc492f992649", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [257], "ansi": "u32 a0", "nhash_before": "6e7fab503dc0", "nhash_after": "0d32e86e917d", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [258], "ansi": "s32 a0", "nhash_before": "afd6cbd00650", "nhash_after": "98bb3532b0e4", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [256], "ansi": "u32 a0", "nhash_before": "d215e7b9857b", "nhash_after": "70fc275cf3ca", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_800D20C0", "callee": "func_800D20C0", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 2, "lines": [1713, 1870], "ansi": "Pos800D20C0 *arg0, SVECTOR *arg1, s16 arg2", "nhash_before": "052bdd85be98", "nhash_after": "052bdd85be98", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c:1713: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_801734BC.c:1870: parse error before `*' [build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o]"}, "verdict": "DECL-KEPT", "cause": "compile: src/ov_SC04_011/ov_SC04_011_jr_801734BC.c:1713: parse error before `*'"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [373, 1005], "ansi": "s32 arg0", "nhash_before": "d2485300447b", "nhash_after": "6f01b596d83e", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1197], "ansi": "s32 arg0", "nhash_before": "96809e52013a", "nhash_after": "ae2809e507d7", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_8015D01C", "callee": "func_8015D01C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1237, 1242], "ansi": "int param_1", "nhash_before": "992c237f1aba", "nhash_after": "9acecca13210", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_80160EA4", "callee": "func_80160EA4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1414, 1417], "ansi": "void *a0", "nhash_before": "79a53accd36e", "nhash_after": "881812f502f4", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:42", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "unit": "decl:func_80166994", "callee": "func_80166994", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1695, 1721], "ansi": "s32 param_1, int param_2, int param_3, int param_4", "nhash_before": "aff695001a60", "nhash_after": "1cdfa449b45e", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [252], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "0e825de5674b", "nhash_after": "c19833a50c8f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [251], "ansi": "u32 a0, u32 a1", "nhash_before": "ca01c82bb552", "nhash_after": "babb2209007a", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [249], "ansi": "u32 a0", "nhash_before": "3fd1f74adcc0", "nhash_after": "e2fb512aeae5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [250], "ansi": "s32 a0", "nhash_before": "18d0a6a46f58", "nhash_after": "30fb0e250e2e", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [248], "ansi": "u32 a0", "nhash_before": "d382e8d70d64", "nhash_after": "79b909f6dd00", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_80017714", "callee": "func_80017714", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [2530], "ansi": "void *arg0", "nhash_before": "d6b3d522199d", "nhash_after": "60055e18a6af", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [365, 990], "ansi": "s32 arg0", "nhash_before": "eaf2af7f7806", "nhash_after": "48e001e03aed", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1182], "ansi": "s32 arg0", "nhash_before": "caefa0d51ea3", "nhash_after": "f51464d29ca1", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_8015D01C", "callee": "func_8015D01C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1233, 1237], "ansi": "int param_1", "nhash_before": "55c2638dbf56", "nhash_after": "7d7d1bf59760", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_80160EA4", "callee": "func_80160EA4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1409, 1412], "ansi": "void *a0", "nhash_before": "6fb61c77f8b7", "nhash_after": "48d3be47dc1c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_80166994", "callee": "func_80166994", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1687, 1713], "ansi": "s32 param_1, int param_2, int param_3, int param_4", "nhash_before": "02f293819a53", "nhash_after": "c324cbd8c5cc", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_8016B234", "callee": "func_8016B234", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "decls": 1, "lines": [2012], "ansi": "s32 param_1", "nhash_before": "2d06b2e8657e", "nhash_after": "2d06b2e8657e", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/../shared/ov/func_8016AE5C__te4eb1475.h:8: too few arguments to function `func_8016B234'\nsrc/ov_SC04_011/../shared/ov/func_8016AFB0.h:11: too few arguments to function `func_8016B234'\n"}, "verdict": "DECL-KEPT", "cause": "K&R site: the calls pass [] arguments, the definition takes s32 param_1 \u2014 kept `()`, marked", "kr": true}
{"ts": "2026-09-12 09:27:43", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "unit": "decl:func_8016BF50", "callee": "func_8016BF50", "header": false, "defn_tu": "src/shared/ov/func_8016BF50.h", "decls": 3, "lines": [2367, 2442, 2483], "ansi": "s32 param", "nhash_before": "86cd8c008260", "nhash_after": "86cd8c008260", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c:2454: too few arguments to function `func_8016BF50'\nsrc/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c:2489: too few arguments to function `func_8016BF50'\nsrc/ov_SC04_"}, "verdict": "DECL-KEPT", "cause": "arity: the calls pass another count and not every declaration is `()` \u2014 needs a reading"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [248], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "024a3f80537a", "nhash_after": "f6194b05b5b0", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [247], "ansi": "u32 a0, u32 a1", "nhash_before": "0097562d1c0f", "nhash_after": "256a8bd46f9b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [245], "ansi": "u32 a0", "nhash_before": "487532f895e8", "nhash_after": "db7209c0c572", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [246], "ansi": "s32 a0", "nhash_before": "387b45b782f1", "nhash_after": "f6abc20494ad", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [244], "ansi": "u32 a0", "nhash_before": "2581cabe9126", "nhash_after": "744b026ba81f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_800D2318", "callee": "func_800D2318", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 1, "lines": [5794], "ansi": "s32 *p", "nhash_before": "1e089c30afc6", "nhash_after": "1e089c30afc6", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": " 1546 | #define NULL 0\n | \ninclude/common.h:41: note: this is the location of the previous definition\n 41 | #define NULL ((void *)0) /* m2c emits NULL for null pointers; byte-neutral (== 0) *"}, "verdict": "DECL-KEPT", "cause": "compile: 1546 | #define NULL 0"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_80151944", "callee": "func_80151944", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_after.c", "decls": 1, "lines": [726], "ansi": "void *a0", "nhash_before": "7fdea00e5612", "nhash_after": "dddefd7a07be", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [361, 989], "ansi": "s32 arg0", "nhash_before": "e332c0bfc10e", "nhash_after": "67fdbb8190c5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1181], "ansi": "s32 arg0", "nhash_before": "974d0a0d2762", "nhash_after": "6430cba6f38c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_8015D4B4", "callee": "func_8015D4B4", "header": false, "defn_tu": "src/shared/ov/func_8015D4B4.h", "decls": 1, "lines": [382], "ansi": "s16 *a0", "nhash_before": "7a6d422793ea", "nhash_after": "2327c1a0f7cf", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_8015E184", "callee": "func_8015E184", "header": false, "defn_tu": "src/shared/ov/func_8015E184.h", "decls": 1, "lines": [397], "ansi": "s32 *arg0", "nhash_before": "f6b40a0ca88f", "nhash_after": "882285a1e1f7", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_8015EDD4", "callee": "func_8015EDD4", "header": false, "defn_tu": "src/shared/ov/func_8015EDD4.h", "decls": 1, "lines": [392], "ansi": "s32 *arg0", "nhash_before": "fbbee44003f8", "nhash_after": "6d161a14904f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_8015F7A0", "callee": "func_8015F7A0", "header": false, "defn_tu": "src/shared/ov/func_8015F7A0.h", "decls": 1, "lines": [331], "ansi": "s32 *arg0", "nhash_before": "b1f01fa52443", "nhash_after": "898dec6f5d29", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_80160B00", "callee": "func_80160B00", "header": false, "defn_tu": "src/shared/ov/func_80160B00.h", "decls": 1, "lines": [338], "ansi": "s32 *arg0", "nhash_before": "22a5e3516caa", "nhash_after": "22a5e3516caa", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": " 1546 | #define NULL 0\n | \ninclude/common.h:41: note: this is the location of the previous definition\n 41 | #define NULL ((void *)0) /* m2c emits NULL for null pointers; byte-neutral (== 0) *"}, "verdict": "DECL-KEPT", "cause": "K&R site: the calls pass [] arguments, the definition takes s32 *arg0 \u2014 kept `()`, marked", "kr": true}
{"ts": "2026-09-12 09:27:46", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "unit": "decl:func_80166244", "callee": "func_80166244", "header": false, "defn_tu": "src/shared/ov/func_80166244.h", "decls": 1, "lines": [449], "ansi": "void* arg0", "nhash_before": "cf6a1f1685a8", "nhash_after": "a7339d8c5f9f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_800120DC", "callee": "func_800120DC", "header": false, "defn_tu": "src/boot.c", "decls": 1, "lines": [262], "ansi": "u16 *arg0, u16 *arg1", "nhash_before": "f15905d4809f", "nhash_after": "c9f8cce85db3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80014CF8", "callee": "func_80014CF8", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [261], "ansi": "u32 a0, u32 a1", "nhash_before": "2e63b2fbf4c9", "nhash_after": "4e4eb3972f0b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80014D68", "callee": "func_80014D68", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [259], "ansi": "u32 a0", "nhash_before": "44853e32df44", "nhash_after": "00ad5c1ad4cc", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80014D94", "callee": "func_80014D94", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [260], "ansi": "s32 a0", "nhash_before": "6c37f0ea0d4a", "nhash_after": "13344261fa4f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80014DC0", "callee": "func_80014DC0", "header": false, "defn_tu": "src/800.c", "decls": 1, "lines": [258], "ansi": "u32 a0", "nhash_before": "afd6cbd00650", "nhash_after": "294095eb091c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8001AAA0", "callee": "func_8001AAA0", "header": false, "defn_tu": "src/800.c", "decls": 2, "lines": [2582, 6686], "ansi": "s32 arg0", "nhash_before": "7eb99589ece9", "nhash_after": "f4d5a15cc2f2", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_800D20C0", "callee": "func_800D20C0", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 2, "lines": [1708, 1864], "ansi": "Pos800D20C0 *arg0, SVECTOR *arg1, s16 arg2", "nhash_before": "ebed1df43af6", "nhash_after": "ebed1df43af6", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:1708: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_8017D494.c:1864: parse error before `*'\nsrc/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:\ns"}, "verdict": "DECL-KEPT", "cause": "compile: src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:1708: parse error before `*'"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_800D2318", "callee": "func_800D2318", "header": false, "defn_tu": "src/resident/resident_jr_800D128C.c", "decls": 1, "lines": [1742], "ansi": "s32 *p", "nhash_before": "27bdef160939", "nhash_after": "8149edb22c77", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80151944", "callee": "func_80151944", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_after.c", "decls": 1, "lines": [742], "ansi": "void *a0", "nhash_before": "e46c7f8da709", "nhash_after": "3f6d5f296e5f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_801577C8", "callee": "func_801577C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_80154C24.c", "decls": 2, "lines": [375, 1000], "ansi": "s32 arg0", "nhash_before": "86b89ff35719", "nhash_after": "5567e1334f08", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8015AE2C", "callee": "func_8015AE2C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.c", "decls": 1, "lines": [1192], "ansi": "s32 arg0", "nhash_before": "02c5888c8931", "nhash_after": "45ad41efaa34", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8015D01C", "callee": "func_8015D01C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1232, 1237], "ansi": "int param_1", "nhash_before": "b5158f3a6a64", "nhash_after": "8a3c707e7611", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80160EA4", "callee": "func_80160EA4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1409, 1412], "ansi": "void *a0", "nhash_before": "6fb61c77f8b7", "nhash_after": "48d3be47dc1c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80166994", "callee": "func_80166994", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "decls": 2, "lines": [1690, 1716], "ansi": "s32 param_1, int param_2, int param_3, int param_4", "nhash_before": "b813aad60a70", "nhash_after": "58da33963406", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8016B234", "callee": "func_8016B234", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.c", "decls": 1, "lines": [1795], "ansi": "s32 param_1", "nhash_before": "bc1e8dd9e667", "nhash_after": "c46991b9f817", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80175184", "callee": "func_80175184", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 3, "lines": [2433, 2435, 2439], "ansi": "s32* arg0", "nhash_before": "31ca6cdeec3b", "nhash_after": "ce7f4c9c1485", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80178840", "callee": "func_80178840", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "decls": 1, "lines": [2520], "ansi": "int param_1", "nhash_before": "e787a38997f1", "nhash_after": "59bbd46712ee", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8017E6EC", "callee": "func_8017E6EC", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [3156], "ansi": "s32 a0, s32 a1", "nhash_before": "d32dab68dc59", "nhash_after": "2126ce07da44", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8017ECD8", "callee": "func_8017ECD8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [3441], "ansi": "s32 a0", "nhash_before": "d169b6443cc5", "nhash_after": "07298b15ff14", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80180AB4", "callee": "func_80180AB4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [9669], "ansi": "struct Ent_80180AB4 *arg0", "nhash_before": "e03c91dcdcb1", "nhash_after": "5c56ef81327c", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80181868", "callee": "func_80181868", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [10974], "ansi": "u8 *self", "nhash_before": "7ce87377d565", "nhash_after": "f8f118ad26d2", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80182AF8", "callee": "func_80182AF8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [6167], "ansi": "s32 a0", "nhash_before": "d2211cb90622", "nhash_after": "27aa17ecaabc", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80183564", "callee": "func_80183564", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 9, "lines": [4795, 4909, 4943, 5070, 5172, 5293, 5362, 6320, 6805], "ansi": "s32 a0, s16 *a1", "nhash_before": "8e08f731e0d8", "nhash_after": "af5eb7c18aee", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80183BD0", "callee": "func_80183BD0", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 5, "lines": [4809, 5043, 5180, 5294, 6321], "ansi": "s32 a0", "nhash_before": "dd7b553b58f0", "nhash_after": "0fd4c8634bb6", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8018489C", "callee": "func_8018489C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 3, "lines": [7707, 7778, 9768], "ansi": "s32 arg0, s32 arg1, s32 arg2", "nhash_before": "b4683cb55f7f", "nhash_after": "5aadca3a4f34", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80184ABC", "callee": "func_80184ABC", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 2, "lines": [6803, 7101], "ansi": "s32 a0", "nhash_before": "1a3b721d1dad", "nhash_after": "2b4324c8dcc5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80184B3C", "callee": "func_80184B3C", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [8041], "ansi": "void *a0", "nhash_before": "6730c09ec9b9", "nhash_after": "4ad99eb4cfe3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80184CCC", "callee": "func_80184CCC", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 7, "lines": [5364, 5550, 5667, 5701, 5797, 6003, 9713], "ansi": "s32 a0, s32 a1", "nhash_before": "c0a82eb51699", "nhash_after": "445ef9c6ceb7", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80184DB8", "callee": "func_80184DB8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 6, "lines": [5365, 5544, 5705, 5841, 6004, 9714], "ansi": "s32 a0", "nhash_before": "589054bd95a8", "nhash_after": "e3b35ff24548", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80185648", "callee": "func_80185648", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 4, "lines": [6848, 7136, 8194, 9639], "ansi": "u32 a0", "nhash_before": "9763dc68c464", "nhash_after": "c9cbb493eefa", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80186110", "callee": "func_80186110", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [9595], "ansi": "s32 arg0", "nhash_before": "b70d3dc9a210", "nhash_after": "51e113165975", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80186300", "callee": "func_80186300", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 4, "lines": [5363, 5546, 5837, 6116], "ansi": "s32 a0, void *a1, s32 a2", "nhash_before": "fcea9fae6ed2", "nhash_after": "dd13a4d598d2", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_801863D4", "callee": "func_801863D4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 3, "lines": [4683, 6801, 7099], "ansi": "void *a0", "nhash_before": "6cf283c3d04c", "nhash_after": "6cf283c3d04c", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:\nsrc/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:\nsrc/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:\nsrc/ov_SC04_011/ov_SC04_011_j"}, "verdict": "DECL-KEPT", "cause": "K&R site: the calls pass [0, 1] arguments, the definition takes void *a0 \u2014 kept `()`, marked", "kr": true}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_801868A0", "callee": "func_801868A0", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 2, "lines": [9210, 9223], "ansi": "void *a0, u16 *a1", "nhash_before": "96d8a0a98030", "nhash_after": "9cb20309a244", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80186E54", "callee": "func_80186E54", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [9515], "ansi": "s32 arg0, s32 arg1, s32 arg2", "nhash_before": "cc6f6d2866e4", "nhash_after": "5b57efbfefc5", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80186EBC", "callee": "func_80186EBC", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 3, "lines": [6277, 6409, 6752], "ansi": "void *a0", "nhash_before": "2df74b7e5763", "nhash_after": "b1055f4d53a3", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80188054", "callee": "func_80188054", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [10355], "ansi": "short *a0, short *a1", "nhash_before": "d33217f3cc51", "nhash_after": "5ad522732643", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80189108", "callee": "func_80189108", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [13590], "ansi": "s32 *a0", "nhash_before": "7de7299918fd", "nhash_after": "8522edef54ef", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80189188", "callee": "func_80189188", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [5359], "ansi": "void *a0", "nhash_before": "18a05bdfe1cf", "nhash_after": "01b08592a609", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80189270", "callee": "func_80189270", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [5360], "ansi": "s32 arg0", "nhash_before": "cb818ac88174", "nhash_after": "f3a589ff177b", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80189410", "callee": "func_80189410", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [6585], "ansi": "void *a0", "nhash_before": "ad14fb59b7fd", "nhash_after": "f93e54752e09", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80189EAC", "callee": "func_80189EAC", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [11646], "ansi": "s32 arg0", "nhash_before": "f107c1323be9", "nhash_after": "e045ef44586f", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8018A784", "callee": "func_8018A784", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [13863], "ansi": "s32 arg0", "nhash_before": "c946564456bd", "nhash_after": "1a337b54ada2", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8018B830", "callee": "func_8018B830", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [6583], "ansi": "s32 *a0", "nhash_before": "b2fb2ca9742a", "nhash_after": "29f47bd599a9", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8018B9D4", "callee": "func_8018B9D4", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 3, "lines": [6091, 6118, 6166], "ansi": "void *a0, void *a1", "nhash_before": "37d93f8b5add", "nhash_after": "a29ad19e30e2", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_8018D7C8", "callee": "func_8018D7C8", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [14412], "ansi": "int param_1, int param_2", "nhash_before": "247dc2b09d5a", "nhash_after": "9cb4f5b20755", "sites": [], "verdict": "DECL-CANON"}
{"ts": "2026-09-12 09:28:03", "label": "t3d1", "rung": "D", "calib": {"head": "775a3eafb", "stamp": "e34b6679685f"}, "tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "unit": "decl:func_80190174", "callee": "func_80190174", "header": false, "defn_tu": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c", "decls": 1, "lines": [16593], "ansi": "Prim34_80190174 *arg0, void *arg1, s32 arg2", "nhash_before": "cee1034100a0", "nhash_after": "cee1034100a0", "sites": [], "first": {"verdict": "COMPILE-ERROR", "err": "src/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:\nsrc/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:\nsrc/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:\nsrc/ov_SC04_011/ov_SC04_011_j"}, "verdict": "DECL-KEPT", "cause": "compile: src/ov_SC04_011/ov_SC04_011_jr_8017D494.c: At top level:"}
+43 -1
View File
@@ -279,7 +279,49 @@ bucketed by what each bucket needs before any plan is proposed. **Candidates for
probe tables above · the census re-run `type_census: 7255 definitions (527 layouts, 206 duplicate classes, 40 variant camps) · 503016
cast sites … coverage OK … controls 4/4`; `readability_progress --snapshot` (a T2 row) + `progress.py --check` fresh.
## 🛑 SESSION CHECKPOINT — S106 (2026-09-11/12, FINAL — written for a FRESH session; the session's last commit follows this): gate 1 APPROVED, **T0 ☑ T1 ☑ T2 ☑** (baseline · the type census + the struct map · the probe) — 🛑 **T3 NEXT (the tools: `restruct.py`'s full form + the linked-relocation oracle + `struct_layout.py` + the canonical type writer; Max for the design, xHigh to finish)** | R22 `check-all: 218 passed, 0 failed of 218` at `db212f167` (no `src/` byte changed since) | HEAD after this commit is the checkpoint's commit; tree clean; nothing pushed after `79b2f6f15`
- **S107 2026-09-12 — T3 in progress (Max design, the first bank).** Design stated (X1) and built: **`tools/struct_layout.py`** (the o32 layout
engine factored out of `type_census.py` — `Resolver`, `parse_struct_body`, `layout_hash`, `field_offsets`; new: `field_map`, `leaf_at`, the WRITER
`render_struct`/`entries_from_layout` in the final style — `/* 0xNN */` comments, `unk<HEX>` for accessed-unknown, `u8 pad<HEX>[n]` for
never-touched gaps, `// size = 0x..` — and the INVARIANT `audit_definition`: every `unk/pad<HEX>` at offset HEX, every comment = the computed
offset, the trailer = sizeof; selftest 9/9; `type_census.py` imports it — its selftest 21/21 unchanged; `walk_all()` factored out of
`run_census` for the engine). **`tools/delever_oracle.py`** gained the LINKED MODE: `link_vars` (the Makefile's own link variables per binary,
asked of make), `snapshot_links` (every binary's `.ld` + `undefined_*_auto.txt` + main's 11 `build/psyq/*_externals.ld` into the snapshot's
`_link/`, `links.json`), **`judge_linked`** (the candidate object linked by the build's own `ld/objcopy/trim` against the snapshot's other objects,
SHA1 vs `config/check.<alias>.sha` — ~10 ms), `reloc_only_diff` (the cheap pre-check: `.text` words equal under the mask, only relocation operands
differ), `--linked-control` (the f3 body `func_801A4258`: **`p[1]/p[2]` whole-object DIFFERS · reloc-only True · linked IDENTICAL ✓; the negative
`p[2]/p[3]` linked DIFFERS ✓**) — and a GUARD on `--snapshot-baseline`: a changed object must reproduce from an untouched compile or the refresh is
REFUSED. **The guard was needed the same hour:** the first control read `whole-object IDENTICAL` for the `p[1]` spelling because
`build/src/md_SC07_004/md_SC07_004.o` was NOT the tree's object — T2's relocation control had run `make build BINARY=md_SC07_004` with the
candidate in place (linked-identical, differently spelled relocs) and my refresh copied it into the snapshot (R56/R112). Fixed by the clean fleet
run (`.run/P37/baseline/r22_t3a.log`: `check-all: 218 passed, 0 failed of 218`, exit 0), a re-snapshot (`1 changed since the previous snapshot`) and
`--calibrate main md_SC07_004 ov_SC02_005 ov_SC04_011` → `147/147 … positive control DIFFERS … OK`. **`tools/restruct.py`** (2,900 lines; the T2
functions kept verbatim): the judge on a multi-file job (`judge_files`: whole-object, then linked when reloc-flagged or reloc-only), the ledger
`.run/P37/restruct/ledger.jsonl` keyed (rung, tu, unit, hash) with `--restore` from `inflight.json`, the shared ladder (all units at once, else
cumulative greedy — delever's rung-B shape), **rung S** on every typed base with the declared-type-aware spelling (`a1->unk4` / `D_x.unk4` / the cast
form), **S2** (greedy kept casts), **S+A** (delever's ladder on the struct-spelled text, `(P37 S+A …)` markers via `delever.marker_edits(phase=)`, stale
`_m` markers scrubbed), **X** (`pass_hint`: SCHED-ALIAS / CSE-KILL / WIDTH / ADDRESS-FOLD / ALIGNMENT / REGALLOC / OTHER), **R** (the registry: R1 the
pointer global as a struct member (§458), R2 `extern T X[]` (a18), R3 the walked pointer (f3, reloc-flagged)), **D** (every declaration of a callee →
the definition's ANSI signature > the width-promoted form > all-`()` + `// K&R: n of m args (P37 rung D <label>)`; the definitions index keyed by the
TU's visible files — own TU, its binary's dir, its headers, then main/resident — REFUSING when two definitions disagree; `--callee/--signature` for a
definition-side change judged on every declaring TU), **L** (folds with member renames by the offset map, REFUSED on an ambiguous member name),
`--write-types` (the writer's preview from the struct map), `--audit-types`, `--check-ledger`, `--try-file` (a real-oracle dry run, nothing written),
`--redraw`. **Selftest 48/48 (a stub oracle; every form, the no-op, S2's two paths, D's three verdicts, L, the three recipes, the ledger, the
inflight parser, negative controls) · `--real` 51/51** (calibration current; the tree's own text IDENTICAL; a nop DIFFERS; the linked control).
**Known-true on the bytes:** `--try … func_801814AC --base global:D_801C7E30 --recipes` → `DIFFERS · S2 IDENTICAL kept 1 (+0x34, 1 compile) ·
R1-ptr-global-member IDENTICAL (adopt)` — §458's body closes mechanically; `--try-file … func_8017E830` → **S IDENTICAL (2 members) · S+A LEVER-FREE:
6 `gte_rtv0tr_m` levers off, markers scrubbed, re-judged IDENTICAL, nothing written** (the T2 row says levers-off-alone was IDENTICAL too — a P36
`_m` leftover, not the struct hypothesis; the path is proven either way). **The end-to-end batch — rung D on ov_SC04_011 (`--apply --rung D
--batch 27 --only ov_SC04_011 --label t3d1 -j 12`):** `restruct: batch t3d1 rung D — 27 files (TUs; 27 drawable) · 258 declaration units: 242
canonical / 0 promoted / 6 K&R marked / 16 kept · compiles 223 in 31 s wall · final 27/27 identical · written 27 files` → R22
(`.run/P37/baseline/r22_t3d1.log`) **`check-all: 218 passed, 0 failed of 218`** (108 s, exit 0). The kept causes, read: `func_800D20C0` ×7 = the
prototype names `Pos800D20C0`, a type the overlay TU cannot see (T5's canonical file closes it); `too few arguments` = the K&R sites (marked);
`func_8016BF50` = a mix of `()` and truncated ANSI declarations (the all-`()` candidate added after this run). Three instrument findings on the
way, each fixed at its cause: the fleet walk (a process pool) forked from inside the worker threads and deadlocked the first run at 0 % CPU
(now computed before any thread exists); 1,889 K&R definitions re-masked per TU (now one mask per file); the selftest's inflight probe used the
LIVE `inflight.json` and deleted batch t3d1's snapshot (now a scratch path — the batch's files were already proven by R22, so nothing was lost).
`.gitignore`: the argcheck cache excluded. This commit = the bank (R42): the 27 TUs, the tools, the evidence.
## 🛑 SESSION CHECKPOINT — S106 (2026-09-11/12, FINAL — written for a FRESH session; the session's last commit follows this): gate 1 APPROVED, **T0 ☑ T1 ☑ T2 ☑** (baseline · the type census + the struct map · the probe) — 🛑 **T3 NEXT (the tools: `restruct.py`'s full form + the linked-relocation oracle + `struct_layout.py` + the canonical type writer; Max for the design, xHigh to finish)** | R22 `check-all: 218 passed, 0 failed of 218` at `db212f167` (no `src/` byte changed since) | HEAD after this commit is the checkpoint's commit; tree clean; nothing pushed after `79b2f6f15` | last batch `t3d1` (rung D, ov_SC04_011): 242 canonical / 6 K&R / 16 kept, R22 218/218 — T3 in progress (S107)
**Replay this block into the chat at the next session start (R64); it is the ONLY in-phase context the next session inherits. Everything below
is what S106 knew and the next session must not re-derive.** **The checkpoint procedure (every session end, Drew 2026-09-12):** bank the
+2 -2
View File
@@ -475,7 +475,7 @@ void func_80128FAC(u16 *arg0) {
extern s32 D_801ED9C4;
extern void func_801299C8();
extern void func_801299C8(int arg0, int arg1, u8 * arg2);
extern void func_80015B6C(s32, s16, s32, s16, s32, s32, s32, s32, s32, s32);
extern void GsSortBg(s32 *, void *, u16, s32 *);
extern void GsSortFastBg(s32 *, void *, u16, s32 *);
@@ -741,7 +741,7 @@ extern void func_8012AAAC(void *arg0);
#include "../shared/ov/func_8012AAAC__t6631232b.h"
extern void func_8012AAAC();
extern void func_8012AAAC(void *arg0);
extern M2C_UNK D_80190758;
void func_8012ACA0(void *arg0) {
+10 -10
View File
@@ -123,20 +123,20 @@ void func_80145A2C(void) {
s32 func_80145CEC() {
extern int func_80016714();
extern int func_8001C320();
extern void func_80016714(void *ptr, s32 len);
extern void func_8001C320(s32 a0, s32 a1);
extern int func_801552F4();
extern int func_80147084();
extern int func_80147098();
extern int func_801470AC();
extern int func_80149210();
extern void func_80147084(s32 *a0);
extern void func_80147098(s32 *a0);
extern void func_801470AC(s32 *a0);
extern void func_80149210(s32 a0, s32 a1);
extern int func_8014BE9C();
extern int func_8016533C();
extern int func_801627C0();
extern int func_80162AF4();
extern int func_80165C78();
extern int func_801468C8();
extern int func_80145EE8();
extern u8 * func_801468C8(s32 arg0, u8 arg1);
extern void func_80145EE8(s32 param_1);
extern int func_8014C968();
extern int func_8014C6D0();
extern int func_80165938();
@@ -2022,7 +2022,7 @@ void func_8014F1F4(void)
extern s32 func_8014F4C0();
extern s32 func_8014F4C0(s32 arg0);
s32 func_8014F468(void)
{
@@ -2067,7 +2067,7 @@ s32 func_8014F468(void)
* restores $sp and returns the stored value. Manipulating $sp is not expressible in
* C; full inline asm (manages its own frame). */
extern int func_8014F74C();
extern int func_8014F74C(s32 arg0);
int func_8014F6F4(void) {
__asm__ __volatile__(
+8 -8
View File
@@ -553,7 +553,7 @@ s32 func_8012C890(s32 a0, s32 a1, s32 a2) {
int func_8012D664(int arg0, int arg1, int arg2) {
extern int func_8012F568();
extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6);
extern int D_80190768;
struct S8012D664_8012D664 s;
@@ -578,7 +578,7 @@ int func_8012D664(int arg0, int arg1, int arg2) {
extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5);
extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6);
extern void func_8014C978(void);
extern M2C_UNK D_80190770;
extern M2C_UNK D_80190778;
@@ -950,7 +950,7 @@ s32 aF8012EFB8(void *param_1, void *param_2) __asm__("func_8012EFB8");
// @class: plumbing
// @unstuck(P36): none — MATCH (pending gate)
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
@@ -967,7 +967,7 @@ void func_8012F828(int param_1)
#include "../shared/ov/func_8012F87C.h"
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8(int a0, int a1);
extern u8 D_801907A8[];
@@ -1422,7 +1422,7 @@ extern s32 func_80143B6C(s32 a0, s32 a1);
extern void func_8012B23C(s32 a0);
extern void func_8012CBA4(s32 a0);
extern void func_8012CBF4(s32 a0);
extern void func_80131E00();
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
extern void func_80131C78(s32 a0);
extern void func_80131CA8(int a0, int a1);
@@ -2264,7 +2264,7 @@ s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3)
extern u8 D_801909C8;
extern u16 D_801EDA40;
extern s16 D_801EDA3C;
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
Map_80133AB0 *map = (Map_80133AB0 *)arg3;
u16 *pA = (*(u16 * *)&D_801909C0);
@@ -2355,8 +2355,8 @@ s32 func_80133CD4(arg0, cmd, base, arr)
extern s16 D_801152AC;
extern u16 D_801152AE;
extern u8 D_801152B0;
extern s32 func_80134310();
extern s32 func_8013435C();
extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
s16 *s3 = ((ElemK *)base)[cmd[1]].e;
s32 s6 = arr[cmd[2]];
+5 -5
View File
@@ -383,7 +383,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -462,13 +462,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -538,7 +538,7 @@ extern s16 D_801908C4[];
extern void func_80130D48(s32 arg0);
extern void func_80131170(s32 p, s32 b, s32 c);
extern s32 func_801312D0(s32 param_1, void *param_2);
extern void func_80131E00();
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
extern s32 D_801ED9E8;
extern s32 D_801ED9EC;
extern void func_8002A04C(s32 a0);
@@ -597,7 +597,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
+5 -5
View File
@@ -383,7 +383,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -462,13 +462,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -538,7 +538,7 @@ extern s16 D_801908C4[];
extern void func_80130D48(s32 arg0);
extern void func_80131170(s32 p, s32 b, s32 c);
extern s32 func_801312D0(s32 param_1, void *param_2);
extern void func_80131E00();
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
extern s32 D_801ED9E8;
extern s32 D_801ED9EC;
extern void func_8002A04C(s32 a0);
@@ -597,7 +597,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
+5 -5
View File
@@ -383,7 +383,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -462,13 +462,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -538,7 +538,7 @@ extern s16 D_801908C4[];
extern void func_80130D48(s32 arg0);
extern void func_80131170(s32 p, s32 b, s32 c);
extern s32 func_801312D0(s32 param_1, void *param_2);
extern void func_80131E00();
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
extern s32 D_801ED9E8;
extern s32 D_801ED9EC;
extern void func_8002A04C(s32 a0);
@@ -597,7 +597,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
+5 -5
View File
@@ -377,7 +377,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -454,13 +454,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -578,7 +578,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
extern s32 func_80134510(s32 param);
@@ -643,7 +643,7 @@ extern int D_80190A2C;
extern int D_801269F0;
extern void func_80138BE0(int p);
extern void func_80137B80(void);
extern void func_801392FC();
extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2);
extern void func_801397B0(s32 a0);
extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2);
extern void func_80139680(s32 a0, u8 *a1);
+12 -12
View File
@@ -374,7 +374,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -451,13 +451,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -575,7 +575,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
extern s32 func_80134510(s32 param);
@@ -727,8 +727,8 @@ extern void func_8013A530();
extern void func_8013A448(void *a0);
extern void func_8013A4C4(struct S8013A4C4 *a0);
extern void func_8013A380(void);
extern void func_80015D4C();
extern void func_80015F04();
extern void func_80015D4C(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_80015F04(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_8013AA24(s32 a0, s32 a1);
extern void func_8013A530(int param_1);
extern void func_8013A860(void);
@@ -915,8 +915,8 @@ extern s32 D_801EDACC;
extern s32 D_801EDAC0;
extern s32 D_801EDAC4;
extern void func_8013DBE4();
extern void func_8013D9B0();
extern void func_8013DBE4(int param_1);
extern void func_8013D9B0(); // K&R: 0/1 of 1 args (P37 rung D t3d1)
extern void func_8013D330(void);
extern void func_8013D178(void);
extern void func_8013CF68(void);
@@ -1038,7 +1038,7 @@ void func_8013CB84(void) {
void func_8013CF68()
{
extern void func_80028620();
extern void func_80028620(s32 a0, void *a1);
extern u8 D_800A5E94[];
extern s32 D_800A5E8C;
extern s32 D_800A5E90;
@@ -1089,7 +1089,7 @@ extern s32 D_801EDAD8;
extern s32 D_801EDAC0;
extern s32 D_801EDADC;
extern s32 D_801EDACC;
extern void func_8013D9B0();
extern void func_8013D9B0(); // K&R: 0/1 of 1 args (P37 rung D t3d1)
void func_8013D064(void)
{
@@ -1117,7 +1117,7 @@ void func_8013D064(void)
extern void func_8013D9B0();
extern void func_8013D9B0(); // K&R: 0/1 of 1 args (P37 rung D t3d1)
extern s32 D_801EDACC;
s32 func_8013D13C(void) {
@@ -1236,7 +1236,7 @@ extern u8 D_80190CC0[];
extern u8 D_80190D40[];
extern u8 D_80190C18[];
extern void func_8013D53C();
extern void func_8013D53C(); // K&R: 0 of 1 args (P37 rung D t3d1)
extern void func_8013DD68(void);
extern void func_8013D8FC(void);
extern void func_8013CF68(void);
+7 -7
View File
@@ -379,7 +379,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -456,13 +456,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -580,7 +580,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
extern s32 func_80134510(s32 param);
@@ -729,8 +729,8 @@ extern void func_8013A530();
extern void func_8013A448(void *a0);
extern void func_8013A4C4(struct S8013A4C4 *a0);
extern void func_8013A380(void);
extern void func_80015D4C();
extern void func_80015F04();
extern void func_80015D4C(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_80015F04(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_8013AA24(s32 a0, s32 a1);
extern void func_8013A530(int param_1);
extern void func_8013A860(void);
@@ -816,7 +816,7 @@ extern u8 D_80190BC4[];
extern u8 D_80190CC0[];
extern u8 D_80190D40[];
extern u8 D_80190C18[];
extern void func_8013D53C();
extern void func_8013D53C(void *arg0v);
extern void func_8013DD68(void);
extern void func_8013D8FC(void);
extern void func_8013CF68(void);
+7 -7
View File
@@ -382,7 +382,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -459,13 +459,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -583,7 +583,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
extern s32 func_80134510(s32 param);
@@ -730,8 +730,8 @@ extern void func_8013A530();
extern void func_8013A448(void *a0);
extern void func_8013A4C4(struct S8013A4C4 *a0);
extern void func_8013A380(void);
extern void func_80015D4C();
extern void func_80015F04();
extern void func_80015D4C(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_80015F04(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_8013AA24(s32 a0, s32 a1);
extern void func_8013A530(int param_1);
extern void func_8013A860(void);
@@ -816,7 +816,7 @@ extern u8 D_80190BC4[];
extern u8 D_80190CC0[];
extern u8 D_80190D40[];
extern u8 D_80190C18[];
extern void func_8013D53C();
extern void func_8013D53C(void *arg0v);
extern void func_8013DD68(void);
extern void func_8013D8FC(void);
extern void func_8013CF68(void);
+7 -7
View File
@@ -377,7 +377,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -454,13 +454,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -578,7 +578,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
extern s32 func_80134510(s32 param);
@@ -725,8 +725,8 @@ extern void func_8013A530();
extern void func_8013A448(void *a0);
extern void func_8013A4C4(struct S8013A4C4 *a0);
extern void func_8013A380(void);
extern void func_80015D4C();
extern void func_80015F04();
extern void func_80015D4C(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_80015F04(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_8013AA24(s32 a0, s32 a1);
extern void func_8013A530(int param_1);
extern void func_8013A860(void);
@@ -811,7 +811,7 @@ extern u8 D_80190BC4[];
extern u8 D_80190CC0[];
extern u8 D_80190D40[];
extern u8 D_80190C18[];
extern void func_8013D53C();
extern void func_8013D53C(void *arg0v);
extern void func_8013DD68(void);
extern void func_8013D8FC(void);
extern void func_8013CF68(void);
+6 -6
View File
@@ -243,11 +243,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -360,7 +360,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
+6 -6
View File
@@ -243,11 +243,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -360,7 +360,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
+6 -6
View File
@@ -243,11 +243,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -360,7 +360,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
+6 -6
View File
@@ -243,11 +243,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -360,7 +360,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
+8 -8
View File
@@ -243,11 +243,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -324,9 +324,9 @@ extern void func_8012EFB8(s32 a0);
extern void func_80149584(s32 arg0, s32 arg1, s32 arg2);
extern void func_8014964C(s32 param_1, s32 param_2);
extern s32 func_801496D4(void *a0);
extern void func_8015AD08();
extern void func_8015AD08(void *arg0);
extern void func_80149704(void);
extern void func_8015ACC4();
extern void func_8015ACC4(s32 *arg0);
extern void func_80149724(void);
extern u8 D_80078EBF;
extern s32 func_80149744(struct S_80149744 *a0);
@@ -360,7 +360,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
+8 -8
View File
@@ -243,11 +243,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -360,7 +360,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -1198,7 +1198,7 @@ extern u16 func_801487F4(s32 *a0);
extern s32 func_80149FB0(s32 a0);
extern s32 func_801619A4(s32 *a0);
extern s32 func_80149C08(s32 a0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern s32 func_8015B6F4(s32 a0);
extern s32 func_8015B7B4(s32 a0);
extern void func_80154A74(s32 a0, s32 a1);
@@ -1512,7 +1512,7 @@ s32 arg0;
#include "../shared/ov/func_8015B8F8.h"
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(); // K&R: 1 of 1 args (P37 rung D t3d1)
// @class: plumbing
// @unstuck(P36): none — MATCH (271/271, pin-free, zero asm). The ONLY residual is DEF-SIDE plumbing, and it is now named exactly: the in-TU instantiation `DEFINE_func_8015BEE4()` (engine_core.h:1851-1855) expands to `extern s32 func_8015B950(s32 arg0);` INSIDE ov_SC01_077_jr_8015AE2C.c, ~14 lines BELOW this definition, so the 1-param def collides with a `(void)` prototype -> `conflicting types for func_8015B950` (.run/bank_func_8015B950.log). §73 PARAMS axis / T0. Surgical fix = §65b de-macroize that ONE instantiation (blast radius: this TU); the fleet-wide `(void)`->`()` header edit is §63 and must be R22-validated.
+14 -14
View File
@@ -241,11 +241,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -328,14 +328,14 @@ extern void func_8015ACC4();
extern void func_80149724(void);
extern u8 D_80078EBF;
extern s32 func_80149744(struct S_80149744 *a0);
extern void func_8015F7A0();
extern void func_8015F7A0(s32 *arg0);
extern void func_80149788(void);
extern void func_801653B8();
extern void func_80149864(void);
extern s16 currentLocationId;
extern s32 func_8016F1AC(void);
extern s32 func_80149884(void);
extern void func_80160B00();
extern void func_80160B00(); // K&R: ? of 1 args (P37 rung D t3d1)
extern void func_801498C0(void);
extern s32 func_80149AA8(s32 *a0);
extern s32 func_80149B54(s32 *a0);
@@ -358,7 +358,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -379,7 +379,7 @@ extern void func_8014A1B0(s32 a0, s32 a1);
extern s32 func_8014A048(s32 param_1);
extern u16 func_80156370(u16 a0);
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4);
extern void func_8015D4B4();
extern void func_8015D4B4(s16 *a0);
extern void func_8014A218(void);
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2);
extern s32 func_8014C2B0(void *a0, void *a1, s32 a2);
@@ -389,12 +389,12 @@ extern void func_8014A380(s32 a0, s32 a1);
extern s32 func_8014A3E0(struct S_8014A3E0 *a0);
extern s32 func_8014A454(s32 a0);
extern s32 func_8014A4B4(void *a0);
extern void func_8015EDD4();
extern void func_8015EDD4(s32 *arg0);
extern void func_8014A4FC(void);
extern s32 func_8014A674(s32 *a0);
extern s32 func_8014A69C(s32 *a0);
extern s32 func_8014A6C4(s32 a0);
extern void func_8015E184();
extern void func_8015E184(s32 *arg0);
extern void func_8014A830(void);
extern s32 func_80029AF4(void);
extern s32 func_8014A850(s32 param_1);
@@ -446,7 +446,7 @@ extern u8 D_80062BF4[];
extern void func_8014BC80(s32 a0, s32 a1);
extern void func_80019064(void *a0);
extern s32 D_80078E98;
extern void func_80166244();
extern void func_80166244(void* arg0);
extern void func_8014B4D4(void *a0);
extern s16 D_80078E9A;
extern u8 D_80126D1C;
@@ -723,7 +723,7 @@ extern void func_80151878(void);
extern void func_80153B58(s32 *a0);
extern s32 func_80151880(s32 a0);
extern s32 func_801518D8(s32 a0);
extern s32 func_80151944(void);
extern void func_80151944(void *a0);
extern s32 func_80151924(void);
extern void func_8014E934(s32 a0);
extern s32 func_8014F3E8(s32 a0);
@@ -1178,7 +1178,7 @@ extern void func_800CCB78(s32 a0);
extern s32 func_80161488(void *a0);
extern void func_8015CC40(s32 *a0);
extern void func_8015CF8C(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 D_800D4A9C;
extern int func_8015B6F4(int param_1);
extern u8 D_800D4F8C[];
+13 -13
View File
@@ -245,11 +245,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -362,7 +362,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -1179,7 +1179,7 @@ extern void func_800CCB78(s32 a0);
extern s32 func_80161488(void *a0);
extern void func_8015CC40(s32 *a0);
extern void func_8015CF8C(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 D_800D4A9C;
extern int func_8015B6F4(int param_1);
extern u8 D_800D4F8C[];
@@ -1230,7 +1230,7 @@ extern s32 func_801725E0(u8 *a0);
extern s32 func_8015CCD0(s32 param_1);
extern s32 func_8015CD20(s32 arg0);
extern void func_8015CF24(s32 a0);
extern void func_8015D01C();
extern void func_8015D01C(int param_1);
extern void func_8015CF58(s32 *param_1);
extern void func_8015CFC0(s32 *a0);
extern void func_8015CFFC(void);
@@ -1406,7 +1406,7 @@ extern void func_80160D10(void *arg0);
extern void func_80160DEC(u8 *a0);
extern void func_80160F00();
extern void func_80160E3C(s32 *a0);
extern void func_80160EA4();
extern void func_80160EA4(void *a0);
extern void func_80160E70(s32 *a0);
extern void (*D_80192ED4[])(void);
extern void func_80160EA4(void *a0);
@@ -1684,7 +1684,7 @@ extern void func_80166618(void *a0);
extern void (*D_801933EC[])(void);
extern void func_80166654(void *a0);
extern s32 func_80166690(s32 param_1, s32 param_2);
extern s32 func_80166994();
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern s32 func_80167540(s32 arg0);
extern void (*D_801933FC[])(void);
@@ -1710,7 +1710,7 @@ extern s32 D_801269A4;
extern s32 D_801269A8;
extern s32 D_801269AC;
extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4);
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern void func_8016829C(s32 a0);
extern s32 func_80166690(s32 a0, s32 a1);
extern void func_80168328(s32 arg0);
@@ -2009,7 +2009,7 @@ lout:
extern void func_8016B234();
extern void func_8016B234(); // K&R: ? of 1 args (P37 rung D t3d1)
extern void func_800D22E4(s32 a0);
#include "../shared/ov/func_8016AE5C__te4eb1475.h"
@@ -2527,7 +2527,7 @@ void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3) {
void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4) {
extern void func_80017714();
extern void func_80017714(void *arg0);
extern s32 D_80193674;
extern s32 D_8019367C;
extern s32 D_80193684;
+13 -13
View File
@@ -250,11 +250,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -367,7 +367,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -1186,7 +1186,7 @@ extern void func_800CCB78(s32 a0);
extern s32 func_80161488(void *a0);
extern void func_8015CC40(s32 *a0);
extern void func_8015CF8C(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 D_800D4A9C;
extern int func_8015B6F4(int param_1);
extern u8 D_800D4F8C[];
@@ -1237,7 +1237,7 @@ extern s32 func_801725E0(u8 *a0);
extern s32 func_8015CCD0(s32 param_1);
extern s32 func_8015CD20(s32 arg0);
extern void func_8015CF24(s32 a0);
extern void func_8015D01C();
extern void func_8015D01C(int param_1);
extern void func_8015CF58(s32 *param_1);
extern void func_8015CFC0(s32 *a0);
extern void func_8015CFFC(void);
@@ -1413,7 +1413,7 @@ extern void func_80160D10(void *arg0);
extern void func_80160DEC(u8 *a0);
extern void func_80160F00();
extern void func_80160E3C(s32 *a0);
extern void func_80160EA4();
extern void func_80160EA4(void *a0);
extern void func_80160E70(s32 *a0);
extern void (*D_80192ED4[])(void);
extern void func_80160EA4(void *a0);
@@ -1691,7 +1691,7 @@ extern void func_80166618(void *a0);
extern void (*D_801933EC[])(void);
extern void func_80166654(void *a0);
extern s32 func_80166690(s32 param_1, s32 param_2);
extern s32 func_80166994();
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern s32 func_80167540(s32 arg0);
extern void (*D_801933FC[])(void);
@@ -1717,7 +1717,7 @@ extern s32 D_801269A4;
extern s32 D_801269A8;
extern s32 D_801269AC;
extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4);
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern void func_8016829C(s32 a0);
extern s32 func_80166690(s32 a0, s32 a1);
extern void func_80168328(s32 arg0);
@@ -1799,7 +1799,7 @@ extern void func_8016AA50(s32 param_1, s32 param_2);
extern void (*D_80193598[])(void);
extern void func_8016AB30(void *a0);
extern s32 func_8016AB6C(s32 arg0);
extern void func_8016B234();
extern void func_8016B234(s32 param_1);
extern void func_8016AE5C(s32 param_1);
extern void func_8016AFB0(s32 a0);
extern void func_8016B114(void *arg0);
@@ -1863,7 +1863,7 @@ extern void func_8016C2C4(s32 param);
extern s32 func_8016C49C(s32 param_1_arg);
extern s32 VectorNormalSS(void *a0, void *a1);
extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4);
extern short func_8016CF04();
extern short func_8016CF04(s32 param_1, s32 param_2);
extern void func_8016C83C(s32 a0);
extern short func_8016CBC0(void);
extern void func_8016C998(s32 param_1);
+11 -11
View File
@@ -253,11 +253,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -370,7 +370,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -1194,7 +1194,7 @@ extern void func_8015BE38(struct Obj *a0);
extern s32 func_8015BE74(void);
extern void func_80161124(void *a0);
extern s32 func_8015BE94(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 func_8015BEC4(void);
extern s32 func_8015B950(s32 arg0);
extern s32 func_8015BEE4(void);
@@ -1234,7 +1234,7 @@ extern s32 func_801725E0(u8 *a0);
extern s32 func_8015CCD0(s32 param_1);
extern s32 func_8015CD20(s32 arg0);
extern void func_8015CF24(s32 a0);
extern void func_8015D01C();
extern void func_8015D01C(int param_1);
extern void func_8015CF58(s32 *param_1);
extern void func_8015CFC0(s32 *a0);
extern void func_8015CF8C(s32 *a0);
@@ -1411,7 +1411,7 @@ extern void func_80160D10(void *arg0);
extern void func_80160DEC(u8 *a0);
extern void func_80160F00();
extern void func_80160E3C(s32 *a0);
extern void func_80160EA4();
extern void func_80160EA4(void *a0);
extern void func_80160E70(s32 *a0);
extern void (*D_80192ED4[])(void);
extern void func_80160EA4(void *a0);
@@ -1692,7 +1692,7 @@ extern void func_80166618(void *a0);
extern void (*D_801933EC[])(void);
extern void func_80166654(void *a0);
extern s32 func_80166690(s32 param_1, s32 param_2);
extern s32 func_80166994();
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern s32 func_80167540(s32 arg0);
extern void (*D_801933FC[])(void);
@@ -1718,7 +1718,7 @@ extern s32 D_801269A4;
extern s32 D_801269A8;
extern s32 D_801269AC;
extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4);
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern void func_8016829C(s32 a0);
extern s32 func_80166690(s32 a0, s32 a1);
extern void func_80168328(s32 arg0);
+18 -18
View File
@@ -250,11 +250,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -367,7 +367,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -1192,7 +1192,7 @@ extern void func_8015BE38(struct Obj *a0);
extern s32 func_8015BE74(void);
extern void func_80161124(void *a0);
extern s32 func_8015BE94(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 func_8015BEC4(void);
extern s32 func_8015B950(s32 arg0);
extern s32 func_8015BEE4(void);
@@ -1232,7 +1232,7 @@ extern s32 func_801725E0(u8 *a0);
extern s32 func_8015CCD0(s32 param_1);
extern s32 func_8015CD20(s32 arg0);
extern void func_8015CF24(s32 a0);
extern void func_8015D01C();
extern void func_8015D01C(int param_1);
extern void func_8015CF58(s32 *param_1);
extern void func_8015CFC0(s32 *a0);
extern void func_8015CF8C(s32 *a0);
@@ -1409,7 +1409,7 @@ extern void func_80160D10(void *arg0);
extern void func_80160DEC(u8 *a0);
extern void func_80160F00();
extern void func_80160E3C(s32 *a0);
extern void func_80160EA4();
extern void func_80160EA4(void *a0);
extern void func_80160E70(s32 *a0);
extern void (*D_80192ED4[])(void);
extern void func_80160EA4(void *a0);
@@ -1690,7 +1690,7 @@ extern void func_80166618(void *a0);
extern void (*D_801933EC[])(void);
extern void func_80166654(void *a0);
extern s32 func_80166690(s32 param_1, s32 param_2);
extern s32 func_80166994();
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern s32 func_80167540(s32 arg0);
extern void (*D_801933FC[])(void);
@@ -1716,7 +1716,7 @@ extern s32 D_801269A4;
extern s32 D_801269A8;
extern s32 D_801269AC;
extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4);
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern void func_8016829C(s32 a0);
extern s32 func_80166690(s32 a0, s32 a1);
extern void func_80168328(s32 arg0);
@@ -2460,9 +2460,9 @@ extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2);
extern void func_80174F64(u8 *a0);
extern void func_80174FBC(u8 *a0);
extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3);
extern void func_80175184(s32 *a0);
extern void func_80175184(s32* arg0);
extern void func_80175114(s32 *a0);
extern void func_80175184();
extern void func_80175184(s32* arg0);
extern void func_80175150(s32 *a0);
extern void (*D_80193AB4[])(void*);
extern s32 func_80175268(s32);
@@ -2571,7 +2571,7 @@ extern s32 D_801274DC;
extern s32 D_801274E0;
extern void func_80178608(void);
extern void func_80178744(s32 a0, s32 a1);
extern void func_80178840();
extern void func_80178840(int param_1);
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
extern void func_80178840(int param_1);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
@@ -2589,7 +2589,7 @@ extern void func_8017BC38(int a0);
extern void func_8017A4AC(void);
extern void func_8017AE2C(s32 a0);
extern s32 func_801399F0(s32 a0);
extern void func_80178CBC(s32 a0, s32 a1);
extern void func_80178CBC(s32 arg0, s32 arg1);
extern short D_801F16AC;
extern s32 D_801EEC60;
@@ -2661,7 +2661,7 @@ s32 func_801789AC(s32 arg0)
s32 func_80178B18(s32 param_1, s32 param_2)
{
extern void func_80178BF8(void);
extern s32 func_80178BF8(void);
extern void func_80178CBC(s32 arg0, s32 arg1);
extern u16 D_80193D68;
@@ -2680,8 +2680,8 @@ s32 func_80178B18(s32 param_1, s32 param_2)
s32 func_80178B70(s32 param_1, s32 param_2)
{
extern void func_80178BF8();
extern void func_80178CBC();
extern s32 func_80178BF8(void);
extern void func_80178CBC(s32 arg0, s32 arg1);
extern int D_80193D68;
int *p = &D_80193D68;
+14 -14
View File
@@ -255,11 +255,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -372,7 +372,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -1191,7 +1191,7 @@ extern void func_8015BE38(struct Obj *a0);
extern s32 func_8015BE74(void);
extern void func_80161124(void *a0);
extern s32 func_8015BE94(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 func_8015BEC4(void);
extern s32 func_8015B950(s32 arg0);
extern s32 func_8015BEE4(void);
@@ -1231,7 +1231,7 @@ extern s32 func_801725E0(u8 *a0);
extern s32 func_8015CCD0(s32 param_1);
extern s32 func_8015CD20(s32 arg0);
extern void func_8015CF24(s32 a0);
extern void func_8015D01C();
extern void func_8015D01C(int param_1);
extern void func_8015CF58(s32 *param_1);
extern void func_8015CFC0(s32 *a0);
extern void func_8015CF8C(s32 *a0);
@@ -1408,7 +1408,7 @@ extern void func_80160D10(void *arg0);
extern void func_80160DEC(u8 *a0);
extern void func_80160F00();
extern void func_80160E3C(s32 *a0);
extern void func_80160EA4();
extern void func_80160EA4(void *a0);
extern void func_80160E70(s32 *a0);
extern void (*D_80192ED4[])(void);
extern void func_80160EA4(void *a0);
@@ -1689,7 +1689,7 @@ extern void func_80166618(void *a0);
extern void (*D_801933EC[])(void);
extern void func_80166654(void *a0);
extern s32 func_80166690(s32 param_1, s32 param_2);
extern s32 func_80166994();
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern s32 func_80167540(s32 arg0);
extern void (*D_801933FC[])(void);
@@ -1715,7 +1715,7 @@ extern s32 D_801269A4;
extern s32 D_801269A8;
extern s32 D_801269AC;
extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4);
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern void func_8016829C(s32 a0);
extern s32 func_80166690(s32 a0, s32 a1);
extern void func_80168328(s32 arg0);
@@ -2440,9 +2440,9 @@ extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2);
extern void func_80174F64(u8 *a0);
extern void func_80174FBC(u8 *a0);
extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3);
extern void func_80175184(s32 *a0);
extern void func_80175184(s32* arg0);
extern void func_80175114(s32 *a0);
extern void func_80175184();
extern void func_80175184(s32* arg0);
extern void func_80175150(s32 *a0);
extern void (*D_80193AB4[])(void*);
extern s32 func_80175268(s32);
@@ -2527,7 +2527,7 @@ extern s32 D_801274DC;
extern s32 D_801274E0;
extern void func_80178608(void);
extern void func_80178744(s32 a0, s32 a1);
extern void func_80178840();
extern void func_80178840(int param_1);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012B2CC(s32 a0);
+14 -14
View File
@@ -255,11 +255,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -372,7 +372,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -1191,7 +1191,7 @@ extern void func_8015BE38(struct Obj *a0);
extern s32 func_8015BE74(void);
extern void func_80161124(void *a0);
extern s32 func_8015BE94(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 func_8015BEC4(void);
extern s32 func_8015B950(s32 arg0);
extern s32 func_8015BEE4(void);
@@ -1231,7 +1231,7 @@ extern s32 func_801725E0(u8 *a0);
extern s32 func_8015CCD0(s32 param_1);
extern s32 func_8015CD20(s32 arg0);
extern void func_8015CF24(s32 a0);
extern void func_8015D01C();
extern void func_8015D01C(int param_1);
extern void func_8015CF58(s32 *param_1);
extern void func_8015CFC0(s32 *a0);
extern void func_8015CF8C(s32 *a0);
@@ -1408,7 +1408,7 @@ extern void func_80160D10(void *arg0);
extern void func_80160DEC(u8 *a0);
extern void func_80160F00();
extern void func_80160E3C(s32 *a0);
extern void func_80160EA4();
extern void func_80160EA4(void *a0);
extern void func_80160E70(s32 *a0);
extern void (*D_80192ED4[])(void);
extern void func_80160EA4(void *a0);
@@ -1689,7 +1689,7 @@ extern void func_80166618(void *a0);
extern void (*D_801933EC[])(void);
extern void func_80166654(void *a0);
extern s32 func_80166690(s32 param_1, s32 param_2);
extern s32 func_80166994();
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern s32 func_80167540(s32 arg0);
extern void (*D_801933FC[])(void);
@@ -1715,7 +1715,7 @@ extern s32 D_801269A4;
extern s32 D_801269A8;
extern s32 D_801269AC;
extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4);
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern void func_8016829C(s32 a0);
extern s32 func_80166690(s32 a0, s32 a1);
extern void func_80168328(s32 arg0);
@@ -2440,9 +2440,9 @@ extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2);
extern void func_80174F64(u8 *a0);
extern void func_80174FBC(u8 *a0);
extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3);
extern void func_80175184(s32 *a0);
extern void func_80175184(s32* arg0);
extern void func_80175114(s32 *a0);
extern void func_80175184();
extern void func_80175184(s32* arg0);
extern void func_80175150(s32 *a0);
extern void (*D_80193AB4[])(void*);
extern s32 func_80175268(s32);
@@ -2527,7 +2527,7 @@ extern s32 D_801274DC;
extern s32 D_801274E0;
extern void func_80178608(void);
extern void func_80178744(s32 a0, s32 a1);
extern void func_80178840();
extern void func_80178840(int param_1);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012B2CC(s32 a0);
+14 -14
View File
@@ -255,11 +255,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -372,7 +372,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -1189,7 +1189,7 @@ extern void func_8015BE38(struct Obj *a0);
extern s32 func_8015BE74(void);
extern void func_80161124(void *a0);
extern s32 func_8015BE94(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 func_8015BEC4(void);
extern s32 func_8015B950(s32 arg0);
extern s32 func_8015BEE4(void);
@@ -1229,7 +1229,7 @@ extern s32 func_801725E0(u8 *a0);
extern s32 func_8015CCD0(s32 param_1);
extern s32 func_8015CD20(s32 arg0);
extern void func_8015CF24(s32 a0);
extern void func_8015D01C();
extern void func_8015D01C(int param_1);
extern void func_8015CF58(s32 *param_1);
extern void func_8015CFC0(s32 *a0);
extern void func_8015CF8C(s32 *a0);
@@ -1406,7 +1406,7 @@ extern void func_80160D10(void *arg0);
extern void func_80160DEC(u8 *a0);
extern void func_80160F00();
extern void func_80160E3C(s32 *a0);
extern void func_80160EA4();
extern void func_80160EA4(void *a0);
extern void func_80160E70(s32 *a0);
extern void (*D_80192ED4[])(void);
extern void func_80160EA4(void *a0);
@@ -1687,7 +1687,7 @@ extern void func_80166618(void *a0);
extern void (*D_801933EC[])(void);
extern void func_80166654(void *a0);
extern s32 func_80166690(s32 param_1, s32 param_2);
extern s32 func_80166994();
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern s32 func_80167540(s32 arg0);
extern void (*D_801933FC[])(void);
@@ -1713,7 +1713,7 @@ extern s32 D_801269A4;
extern s32 D_801269A8;
extern s32 D_801269AC;
extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4);
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern void func_8016829C(s32 a0);
extern s32 func_80166690(s32 a0, s32 a1);
extern void func_80168328(s32 arg0);
@@ -2438,9 +2438,9 @@ extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2);
extern void func_80174F64(u8 *a0);
extern void func_80174FBC(u8 *a0);
extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3);
extern void func_80175184(s32 *a0);
extern void func_80175184(s32* arg0);
extern void func_80175114(s32 *a0);
extern void func_80175184();
extern void func_80175184(s32* arg0);
extern void func_80175150(s32 *a0);
extern void (*D_80193AB4[])(void*);
extern s32 func_80175268(s32);
@@ -2525,7 +2525,7 @@ extern s32 D_801274DC;
extern s32 D_801274E0;
extern void func_80178608(void);
extern void func_80178744(s32 a0, s32 a1);
extern void func_80178840();
extern void func_80178840(int param_1);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012B2CC(s32 a0);
+75 -75
View File
@@ -255,11 +255,11 @@ extern void func_8014856C(s32 a0, s32 a1);
extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2);
extern void func_80148634(void *a0);
extern u8 D_800B9A64;
extern s32 func_80014DC0();
extern s32 func_80014D68();
extern s32 func_80014D94();
extern s32 func_80014CF8();
extern void func_800120DC();
extern u8 func_80014DC0(u32 a0);
extern u16 func_80014D68(u32 a0);
extern s32 func_80014D94(s32 a0);
extern u8 func_80014CF8(u32 a0, u32 a1);
extern void func_800120DC(u16 *arg0, u16 *arg1);
extern s32 func_800CF8B4();
extern u16 func_801487F4(s32 *a0);
extern u16 func_80148800(s32 *a0);
@@ -372,7 +372,7 @@ extern void func_80157510(s32 *a0);
extern void func_80149BAC(s32 *a0);
extern s32 func_80029178(s32 a0);
extern s32 func_80149C08(s32 arg0);
extern void func_801577C8();
extern void func_801577C8(s32 arg0);
extern void func_80149C94(void);
extern void func_80157D20(void);
extern void func_80149CB4(void);
@@ -739,7 +739,7 @@ extern void func_80151878(void);
extern void func_80153B58(s32 *a0);
extern s32 func_80151880(s32 a0);
extern s32 func_801518D8(s32 a0);
extern s32 func_80151944(void);
extern void func_80151944(void *a0);
extern s32 func_80151924(void);
extern void func_8014E934(s32 a0);
extern s32 func_8014F3E8(s32 a0);
@@ -1189,7 +1189,7 @@ extern void func_8015BE38(struct Obj *a0);
extern s32 func_8015BE74(void);
extern void func_80161124(void *a0);
extern s32 func_8015BE94(s32 *a0);
extern s32 func_8015AE2C();
extern s32 func_8015AE2C(s32 arg0);
extern s32 func_8015BEC4(void);
extern s32 func_8015B950(s32 arg0);
extern s32 func_8015BEE4(void);
@@ -1229,7 +1229,7 @@ extern s32 func_801725E0(u8 *a0);
extern s32 func_8015CCD0(s32 param_1);
extern s32 func_8015CD20(s32 arg0);
extern void func_8015CF24(s32 a0);
extern void func_8015D01C();
extern void func_8015D01C(int param_1);
extern void func_8015CF58(s32 *param_1);
extern void func_8015CFC0(s32 *a0);
extern void func_8015CF8C(s32 *a0);
@@ -1406,7 +1406,7 @@ extern void func_80160D10(void *arg0);
extern void func_80160DEC(u8 *a0);
extern void func_80160F00();
extern void func_80160E3C(s32 *a0);
extern void func_80160EA4();
extern void func_80160EA4(void *a0);
extern void func_80160E70(s32 *a0);
extern void (*D_80192ED4[])(void);
extern void func_80160EA4(void *a0);
@@ -1687,7 +1687,7 @@ extern void func_80166618(void *a0);
extern void (*D_801933EC[])(void);
extern void func_80166654(void *a0);
extern s32 func_80166690(s32 param_1, s32 param_2);
extern s32 func_80166994();
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern s32 func_80167540(s32 arg0);
extern void (*D_801933FC[])(void);
@@ -1713,7 +1713,7 @@ extern s32 D_801269A4;
extern s32 D_801269A8;
extern s32 D_801269AC;
extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4);
extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3);
extern s32 func_80166994(s32 param_1, int param_2, int param_3, int param_4);
extern void func_8016829C(s32 a0);
extern s32 func_80166690(s32 a0, s32 a1);
extern void func_80168328(s32 arg0);
@@ -1739,7 +1739,7 @@ extern void func_80168A88(void);
extern void (*D_80193430[])(void);
extern void func_80168AA8(void *a0);
extern void func_80168AE4(s32 a0);
extern void func_800D2318(void);
extern void func_800D2318(s32 *p);
extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4);
extern void (*D_80193438[])(void);
extern void func_80168D58(void *a0);
@@ -1792,7 +1792,7 @@ extern u16 D_80126B66;
extern void func_8016AA50(s32 param_1, s32 param_2);
extern void (*D_80193598[])(void);
extern void func_8016AB30(void *a0);
extern void func_8016B234(void);
extern void func_8016B234(s32 param_1);
extern void func_8016AFB0(s32 a0);
extern void func_8016B114(void *arg0);
extern s32 func_8016B448(s32, s32);
@@ -2430,9 +2430,9 @@ extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2);
extern void func_80174F64(u8 *a0);
extern void func_80174FBC(u8 *a0);
extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3);
extern void func_80175184(s32 *a0);
extern void func_80175184(s32* arg0);
extern void func_80175114(s32 *a0);
extern void func_80175184();
extern void func_80175184(s32* arg0);
extern void func_80175150(s32 *a0);
extern void (*D_80193AB4[])(void*);
extern s32 func_80175268(s32);
@@ -2517,7 +2517,7 @@ extern s32 D_801274DC;
extern s32 D_801274E0;
extern void func_80178608(void);
extern void func_80178744(s32 a0, s32 a1);
extern void func_80178840();
extern void func_80178840(int param_1);
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
extern void func_8012E8E0(s32 a0, s32 a1);
extern void func_8012B2CC(s32 a0);
@@ -2579,7 +2579,7 @@ extern s32 func_8017A3B0(void);
extern short D_801EEC94;
extern short D_801EEC90;
extern int func_800D0CA0(int);
extern int func_8001AAA0(void);
extern void func_8001AAA0(s32 arg0);
extern int func_800D0CE0(void);
extern int func_8017A3D8(void);
extern void func_80172310(u8*);
@@ -3153,7 +3153,7 @@ void func_8017E3B0(s32 param_1)
* - func_8017E6EC is defined LATER in this TU with (s32,s32); the no-prototype forward decl is
* required so the 1-argument call site here does not become a 2-argument call (§263).
*/
extern void func_8017E6EC();
extern void func_8017E6EC(s32 a0, s32 a1);
extern void func_80146C3C();
void func_8017E558(void *arg0) {
@@ -3438,7 +3438,7 @@ void func_8017EC38(void *a0) {
extern void func_8014E934(s32 a0);
extern void func_8014CC28(s32 a0);
extern s32 func_8014F3E8(s32 a0);
extern void func_8017ECD8();
extern void func_8017ECD8(s32 a0);
extern void func_80146CA0(void *a0);
void func_8017EC90(s32 a0) {
func_8014E934(a0);
@@ -4680,7 +4680,7 @@ s32 func_80180930(u8 *a0) {
extern u16 D_801EFD40;
extern void func_801863D4();
extern void func_801863D4(); // K&R: 0/1 of 1 args (P37 rung D t3d1)
extern void func_8018637C(s32 a0, s32 a1);
extern s32 D_801DECA4;
@@ -4806,7 +4806,7 @@ void func_80180B24(s32 s0)
* sit in limbo; a FILE-scope decl here would let gcc-2.7.2's pushdecl merge that
* prototype into the global (different_binding_level) and the definition then errors
* `conflicting types for func_80183BD0` -- measured on a spliced-TU cc1 run. */
extern void func_80183BD0(u8 *a0);
extern void func_80183BD0(s32 a0);
struct Ent_80180B24 *p;
s32 a;
s32 s1;
@@ -5040,7 +5040,7 @@ void func_80180F30(s32 s2)
void func_801811D0(s32 *arg0) {
extern s16 D_801944A8[];
extern void func_8018332C(s32 a0, s32 a1);
extern void func_80183BD0(u8 *a0);
extern void func_80183BD0(s32 a0);
extern void func_80186BD8(void);
extern void func_8012AD44(s32 *a0, s16 a1);
@@ -5177,7 +5177,7 @@ void func_801813FC(s32 s0)
extern void func_80183BAC(u8*);
extern void func_80183880(s32 a0);
extern void func_8012BEE8(u8 *a0);
extern void func_80183BD0(u8 *a0);
extern void func_80183BD0(s32 a0);
s1 = (u8 *)aB58_801813FC;
@@ -5291,7 +5291,7 @@ void func_801813FC(s32 s0)
#include "common.h"
extern void func_80183564(s32 a0, s16 *a1);
extern void func_80183BD0();
extern void func_80183BD0(s32 a0);
extern s32 func_80186710(void);
extern void func_80186BD8(void);
extern void func_8012AD44(s32 *a0, s16 a1);
@@ -5356,12 +5356,12 @@ extern u8 D_80194C14[];
/* Unprototyped arg lists: composite-type compatible with any prototyped
* spelling another draft in this TU may add (law 4, function flavour). */
extern void func_80189188();
extern void func_80189270();
extern void func_80189188(void *a0);
extern void func_80189270(s32 arg0);
extern void func_801439C0();
extern void func_80183564(s32 a0, s16 *a1);
extern void func_80186300(s32, void *, s32);
extern void func_80184CCC();
extern void func_80186300(s32 a0, void *a1, s32 a2);
extern void func_80184CCC(s32 a0, s32 a1);
extern void func_80184DB8(s32 a0);
extern s32 func_80184F4C();
extern void func_80181B30();
@@ -5541,13 +5541,13 @@ void func_80181BA0(struct Ent_80181BA0 *a0) {
extern void func_80183D00(s32);
extern void func_80185B5C(u16);
extern void func_80185C5C(u16);
extern void func_80184DB8(s32);
extern void func_80184DB8(s32 a0);
extern void func_80185A30(s32);
extern void func_80186300(s32 a0, void *a1, s32 a2);
extern void func_80186BF8(void);
extern void func_8018AA70(s32);
/* §183 SIGNATURE-cast-at-call: TU declares (s32, s32); adopt it and cast at the call. */
extern void func_80184CCC();
extern void func_80184CCC(s32 a0, s32 a1);
extern void func_80183CF4(void *);
extern void func_80185B04(s32, s32);
extern void func_80185C04(s32, s32);
@@ -5664,7 +5664,7 @@ void func_80181EA0(s32 a0) {
func_80184CCC L5203 (unprototyped, §183 cast-at-call), D_80194C3C L5652.
D_801F161E is undeclared in the TU — typed by access width (sh -> u16). */
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_80184CCC();
extern void func_80184CCC(s32 a0, s32 a1);
extern u16 D_801EFD40;
extern u16 D_801F161E;
extern u8 D_80194C3C[];
@@ -5698,11 +5698,11 @@ struct EntF2_80181F0C {
void func_80181F0C(s32 a0) {
extern void func_8012BEE8(u8 *a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_80184CCC();
extern void func_80184CCC(s32 a0, s32 a1);
extern void func_80183DF8(void);
extern void func_80183C74(s32, u16);
extern void func_80183D00(s32);
extern void func_80184DB8(s32);
extern void func_80184DB8(s32 a0);
extern s16 func_80185A30(s32);
extern void func_80185B04(u16, u16);
extern void func_80185C04(u16, u16);
@@ -5794,7 +5794,7 @@ void func_8018214C(s32 a0, s32 a1) {
extern void func_8012AD44(s32 *a0, s16 a1);
extern u16 D_801EFD40;
extern u8 D_80194C14[];
extern void func_80184CCC();
extern void func_80184CCC(s32 a0, s32 a1);
extern void func_80132EC4(s32 a0, s32 a1);
extern struct { s32 f0; s32 f1; s32 f2; } D_801944E8[];
@@ -5834,7 +5834,7 @@ extern Rec801944E8 D_801944E8[];
extern void func_80185960(s32 target, u16 *cur, s32 step);
extern s32 func_80184F4C(void);
/* §183 SIGNATURE-cast-at-call: batch-wide spelling is (s32, void *, s32). */
extern void func_80186300(s32, void *, s32);
extern void func_80186300(s32 a0, void *a1, s32 a2);
extern void func_80188560(s32 a0, s32 a1);
extern void func_80185F1C(void);
extern void func_80185214(s32 a0);
@@ -6000,7 +6000,7 @@ void func_80182420(struct Ent_80182420 *a0)
* TU — typed by this target's access width / argument use. */
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_8018637C(s32 arg0, s32 arg1);
extern void func_80184CCC();
extern void func_80184CCC(s32 a0, s32 a1);
extern void func_80184DB8(s32 a0);
extern s32 func_80184F4C(void);
extern void func_80186BD8(void);
@@ -6088,7 +6088,7 @@ void func_80182630(s32 param_1)
extern s32 rand(void);
extern void func_8018637C(s32 arg0, s32 arg1);
extern s32 func_8018B948();
extern void func_8018B9D4();
extern void func_8018B9D4(void *a0, void *a1);
extern void func_8012AD44(s32 *a0, s16 a1);
extern s32 D_801EFC54;
extern void *D_80194500[];
@@ -6113,9 +6113,9 @@ void func_80182630(s32 param_1)
extern s32 rand(void);
extern void func_80186300();
extern void func_80186300(s32 a0, void *a1, s32 a2);
extern s32 func_8018B948();
extern void func_8018B9D4();
extern void func_8018B9D4(void *a0, void *a1);
extern void func_8012AD44(s32 *, s16);
extern s32 D_801EFC54;
extern void *D_80194500[];
@@ -6163,8 +6163,8 @@ void func_801827DC(s32 param_1)
extern void func_8013C9C4(void *a0);
extern void func_8018637C(s32 arg0, s32 arg1);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8018B9D4();
extern void func_80182AF8();
extern void func_8018B9D4(void *a0, void *a1);
extern void func_80182AF8(s32 a0);
/* §183: the TU spells D_80194500 as a flat void*[] elsewhere; reach the
row-of-3 view through an __asm__ label alias -- the TU's own idiom. */
extern void *a4500[][3] __asm__("D_80194500");
@@ -6274,7 +6274,7 @@ L_af8:
void func_80182AF8(s32 a0) {
extern void func_80186EBC();
extern void func_80186EBC(void *a0);
extern void func_80184840();
extern void func_80186BD8(void);
extern void func_8018637C(s32 a0, s32 a1);
@@ -6318,7 +6318,7 @@ extern void func_801833D4(int a0, int a1);
extern s32 func_80183A28(u8 *a0);
/* §183 SIGNATURE-cast-at-call: batch-wide spelling is (s32, s16 *). */
extern void func_80183564(s32 a0, s16 *a1);
extern void func_80183BD0();
extern void func_80183BD0(s32 a0);
extern s32 func_80186710(void);
extern void func_80186BD8(void);
extern void func_8012AD44(s32 *a0, s16 a1);
@@ -6406,7 +6406,7 @@ L_end:
extern void func_80132EC4(s32 a0, s32 a1);
extern void func_8018637C(s32 arg0, s32 arg1);
extern void func_80186EBC();
extern void func_80186EBC(void *a0);
extern void func_8012AD44(s32 *a0, s16 a1);
extern void func_800D0C48(s32 a0);
extern void func_8002AC00(s32 arg0);
@@ -6580,9 +6580,9 @@ extern s32 D_801EFD18;
/* §183 SIGNATURE-cast-at-call: the TU DEFINES `void func_8018B2F8(s32 *, s32)` (L7882). */
extern void func_8018B2F8(s32 *a0, s32 a1);
extern void func_8018B830();
extern void func_8018B830(s32 *a0);
extern void func_80016450(s32 a0, s32 a1);
extern void func_80189410();
extern void func_80189410(void *a0);
extern void func_8018B8C0(void *a0);
extern s32 func_80143970(s32 a0);
extern void func_8017CC2C(void);
@@ -6683,7 +6683,7 @@ s32 func_8018315C(s32 *a0) {
s32 v0;
s16 x;
s16 y;
extern int func_8001AAA0(void);
extern void func_8001AAA0(s32 arg0);
s0 = (s32)a0;
@@ -6749,7 +6749,7 @@ ret:
extern s16 func_80174774(void);
extern void func_80186EBC();
extern void func_80186EBC(void *a0);
s32 func_80183258(s32 a0) {
s32 v0;
@@ -6798,11 +6798,11 @@ extern u16 D_801EFD40;
extern s32 aFC4C[] __asm__("D_801EFC4C");
extern u16 D_801EFD20;
extern void func_801863D4();
extern void func_801863D4(); // K&R: 0/1 of 1 args (P37 rung D t3d1)
extern void func_801863B4(s32 a0);
extern void func_80184ABC();
extern void func_80184ABC(s32 a0);
/* §183 SIGNATURE-cast-at-call: batch-wide spelling is (s32, s16 *). */
extern void func_80183564();
extern void func_80183564(s32 a0, s16 *a1);
void func_8018332C(s32 a0, s32 a1) {
s32 v0;
@@ -6845,7 +6845,7 @@ extern s32 aFC4C[] __asm__("D_801EFC4C");
extern void func_801852BC(s32 a0);
extern void func_801853D0(s32 a0);
extern void func_80185648();
extern void func_80185648(u32 a0);
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
extern s32 func_80183BF0(s32 a0);
/* §183 SIGNATURE-cast-at-call: the TU DEFINES `s32 func_801836D4(void *, void *)` (L4677). */
@@ -7096,9 +7096,9 @@ void func_801837C4(s32 a0, s32 a1) {
extern u16 D_801EFD40;
extern s32 aFC4C[] __asm__("D_801EFC4C");
extern u16 D_801EFD20;
extern void func_801863D4();
extern void func_801863D4(); // K&R: 0/1 of 1 args (P37 rung D t3d1)
extern void func_801863B4(s32 a0);
extern void func_80184ABC();
extern void func_80184ABC(s32 a0);
s32 v0;
s32 s1;
@@ -7133,7 +7133,7 @@ void func_80183880(s32 a0)
extern s32 D_801EFC4C[];
extern void func_801852BC(s32);
extern void func_801853D0(s32);
extern void func_80185648();
extern void func_80185648(u32 a0);
extern void func_800484EC(s32, s32, s32);
extern s32 func_80183BF0(s32);
extern void func_80185960(s32, u16 *, s32);
@@ -7704,7 +7704,7 @@ extern void func_8012BEE8(u8*);
extern void func_80185DDC(void *a0);
extern void func_80186020(void *a0);
extern void func_80132784(s32 a0, s32 a1, u32 a2);
extern void func_8018489C();
extern void func_8018489C(s32 arg0, s32 arg1, s32 arg2);
extern s32 D_801EFC48;
extern u16 D_801EFD40;
@@ -7775,7 +7775,7 @@ extern void func_8012BEE8(u8*);
extern void func_80185DDC(void*);
extern void func_80186020(void*);
extern void func_80132784(s32 a0, s32 a1, u32 a2);
extern void func_8018489C();
extern void func_8018489C(s32 arg0, s32 arg1, s32 arg2);
void func_80184728(void *a0) {
@@ -8038,7 +8038,7 @@ void func_80184ABC(s32 a0)
{
extern s32 D_801EFC4C;
extern u8 D_80194724[];
extern void func_80184B3C();
extern void func_80184B3C(void *a0);
s32 i;
s32 *p;
@@ -8191,7 +8191,7 @@ extern void func_8018681C(s32 a0, void *a1);
prototype and cast at the call (byte-identical). */
extern void func_801852BC(s32 a0);
extern void func_801853D0(s32 a0);
extern void func_80185648();
extern void func_80185648(u32 a0);
/* §183 DEF-side: the TU declares `extern void func_80184DB8(s32 a0);` at file scope (L4350),
so the definition adopts s32. */
@@ -9207,7 +9207,7 @@ s32 func_80186710(void) {
void func_80186798(s32 a0, void *a1) {
extern u8 D_80194724[];
extern s32 aFC4C[] __asm__("D_801EFC4C");
extern void func_801868A0();
extern void func_801868A0(void *a0, u16 *a1);
u32 i;
for (i = 0; i < (u32)a0; i++) {
@@ -9220,7 +9220,7 @@ void func_80186798(s32 a0, void *a1) {
extern s32 aFC4C[] __asm__("D_801EFC4C");
extern u8 D_80194724[];
extern void func_801868A0();
extern void func_801868A0(void *a0, u16 *a1);
void func_8018681C(s32 a0, void *a1) {
s32 i;
@@ -9512,7 +9512,7 @@ void func_80186D58(s32 a0) {
#include "common.h"
extern s32 func_80186E54();
extern s32 func_80186E54(s32 arg0, s32 arg1, s32 arg2);
s32 func_80186DCC(s32 a0) {
s16 local_10[3]; /* sp+0x10 */
@@ -9592,7 +9592,7 @@ extern s32 D_801EFC48;
extern s32 D_801EFD2C;
extern s32 D_801EFD28;
extern s32 D_801DEC6C;
extern void func_80186110();
extern void func_80186110(s32 arg0);
extern void func_8018615C(s32 a0);
extern void func_80189A98();
extern void func_8018637C(s32 a0, s32 a1);
@@ -9636,7 +9636,7 @@ extern u16 D_801EFD40;
extern void func_801805F8(s32 arg0);
extern void func_801852BC(s32 a0);
extern void func_801853D0(s32 a0);
extern void func_80185648();
extern void func_80185648(u32 a0);
void func_80187008(s32 arg0) {
s32 g = D_801EFD20;
@@ -9666,7 +9666,7 @@ extern void func_80139A68(s32 a0, u16 a1);
extern u8 D_80194378[];
extern s32 D_801EFD28;
extern s32 D_801EFD2C;
extern void func_80180AB4();
extern void func_80180AB4(struct Ent_80180AB4 *arg0);
void func_80187068(s32 a0) {
extern u16 D_80126B58;
@@ -9710,8 +9710,8 @@ extern u16 D_801EFD40;
extern u16 D_801EFD20;
extern u8 D_80194C14[];
extern u8 D_80194CB4[];
extern void func_80184CCC();
extern void func_80184DB8();
extern void func_80184CCC(s32 a0, s32 a1);
extern void func_80184DB8(s32 a0);
extern s32 func_80184F4C(void);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_80182B5C(void *a0);
@@ -9765,7 +9765,7 @@ void func_80187178(void *a0)
extern void func_80185DDC(void *a0);
extern void func_80186020(void *a0);
extern void func_80132784(s32 a0, s32 a1, u32 a2);
extern void func_8018489C();
extern void func_8018489C(s32 arg0, s32 arg1, s32 arg2);
extern u16 D_801EFD40;
extern s32 D_801EFC48;
@@ -10352,7 +10352,7 @@ extern void func_8004914C(void *a0);
extern void func_800491AC(void *a0);
extern void RotTransSV(void *a0, void *a1, void *a2);
extern s32 func_80135004(s32 a0, void *a1, s32 a2);
extern void func_80188054();
extern void func_80188054(short *a0, short *a1);
extern void *D_801EFD70[4];
extern u8 D_801EFDC0[];
extern u8 D_801ED998[];
@@ -10971,7 +10971,7 @@ void func_80188D18(void *a0) {
}
extern void func_80181868();
extern void func_80181868(u8 *self);
s32 func_80188D54(s32 arg0) {
return ((s32 (*)(s32))func_80181868)(*(s32 *)(arg0 + 0x64));
}
@@ -11643,7 +11643,7 @@ void func_80189AEC(void *a0) {
#include "common.h"
extern void func_80189EAC();
extern void func_80189EAC(s32 arg0);
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8012C218(void *a0);
extern void func_8012AD44(s32 *a0, s16 a1);
@@ -13587,7 +13587,7 @@ void func_8018C4BC(s32 arg0)
extern void func_8012AD80(s32 a0);
extern void func_8018A7E8(s32 a0);
extern void func_80189108();
extern void func_80189108(s32 *a0);
extern s32 func_801893D4(s32 a0);
extern s32 func_80189478(s32 a0);
@@ -13860,7 +13860,7 @@ void func_8018CA98(void *a0)
#include "common.h"
extern void func_8002D4C8(s32 a0, s32 a1);
extern void func_8018A784();
extern void func_8018A784(s32 arg0);
void func_8018CAF0(void *a0) {
s32 s0 = (s32)a0;
@@ -14409,7 +14409,7 @@ void func_8018D5D0(void) {
#include "common.h"
extern void func_80016714(void *a0, s32 a1);
extern void func_8018D7C8();
extern void func_8018D7C8(int param_1, int param_2);
extern void func_8012BF4C(s32 *a0, s32 a1);
extern s32 func_8012AD50(void *a0);
+6 -6
View File
@@ -373,7 +373,7 @@ extern void func_8012D5DC(void);
extern s16 D_80126B98;
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2);
extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3);
extern int func_8012D664();
extern int func_8012D664(int arg0, int arg1, int arg2);
extern void func_8012D624(s32 a0);
extern int func_8012D664(int arg0, int arg1, int arg2);
extern s32 func_8012D714(s32 param_1, u32 param_2);
@@ -450,13 +450,13 @@ extern void func_8012F68C(s32 arg0);
extern void func_8012F75C(s32 a0);
extern s32 func_8012BEE8(s32);
extern void func_8012F7B4(s32 a0);
extern void func_80131170();
extern void func_80131170(s32 p, s32 b, s32 c);
extern void func_80131CA8();
extern unsigned char D_8019079C[];
extern void func_8012F828(int param_1);
extern void func_80131340(s32 a0);
extern void func_8012F87C(s32 a0);
extern void func_80131170(s32 a0, s32 a1, s32 a2);
extern void func_80131170(s32 p, s32 b, s32 c);
extern u8 D_801907A8[];
extern void func_8012F8C8(u8* arg0);
extern void func_8012F91C(s32 a0);
@@ -574,7 +574,7 @@ extern void func_801336E8(void *a0, int a1, int a2);
extern void func_80136BC4(s32);
extern void func_8013373C(s16 arg0);
extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2);
extern s32 func_80133CD4();
extern s32 func_80133CD4(int arg0, s16 * cmd, s16 * base, s32 * arr);
extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3);
extern s32 func_801343C4(s32 angle, s32 p1, s32 p2);
extern s32 func_80134510(s32 param);
@@ -726,8 +726,8 @@ extern void func_8013A530();
extern void func_8013A448(void *a0);
extern void func_8013A4C4(struct S8013A4C4 *a0);
extern void func_8013A380(void);
extern void func_80015D4C();
extern void func_80015F04();
extern void func_80015D4C(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_80015F04(s32 a0, s32 a1, s32 a2, s32 a3, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u16 arg8);
extern void func_8013AA24(s32 a0, s32 a1);
extern void func_8013A530(int param_1);
extern void func_8013A860(void);
+4 -3
View File
@@ -576,9 +576,10 @@ def apply_edits(raw, edits):
return out
def marker_edits(raw, ls, survivors, rung, label):
def marker_edits(raw, ls, survivors, rung, label, phase="P36"):
"""End-of-line `// !FAKE:` insertions for the class A/B survivors (NEEDED / REFUSED / DEFERRED), one marker per line naming
every survivor on it; an existing marker on that line is replaced."""
every survivor on it; an existing marker on that line is replaced. `phase` names the campaign in the attribution tail
(`(P36 rung B tus3)`; Phase 37's struct-hypothesis rung writes `(P37 S+A <label>)` through the same function, R113)."""
by_line = collections.defaultdict(list)
for s, verdict, why in survivors:
if s["kind"] in MARK_KINDS:
@@ -591,7 +592,7 @@ def marker_edits(raw, ls, survivors, rung, label):
for s, verdict, why in items:
what = f"{s['kind']}" + (f" {s['detail']}" if s.get("detail") and s.get("detail") != s.get("via") else "") + (f" via {s['via']}" if s.get("via") else "")
parts.append(f"{what} — {verdict}" + (f" {why}" if why else ""))
text = f"{FAKE} " + "; ".join(parts) + f" (P36 {rung} {label})"
text = f"{FAKE} " + "; ".join(parts) + f" ({phase} {rung} {label})"
k = line.find(FAKE)
if k >= 0:
j = k
+265 -5
View File
@@ -5,6 +5,8 @@
tools/delever_oracle.py --calibrate ov_SC04_011 main # compile every TU of the named binaries UNTOUCHED: 100 % object equality with build/,
# twin == primary, then the POSITIVE control (a nop injected -> DIFFERS); exit 1 otherwise
tools/delever_oracle.py --status # is the calibration current for this HEAD / Makefile?
tools/delever_oracle.py --snapshot-baseline # build/**/*.o + every binary's link inputs -> .run/P36/delever/baseline/ (after a GREEN check-all)
tools/delever_oracle.py --linked-control # Phase 37 T3: the f3 known-true (reloc spelling: whole-object DIFFERS, linked IDENTICAL) + its negative
THE QUESTION IT ANSWERS: "does this candidate text for TU X still produce the byte-identical object?" — and only that. The whole-binary
gate (`make check BINARY=…`, and the clean fleet run, R22) remains the arbiter of every batch; this oracle is the inner loop that
@@ -22,6 +24,16 @@ HOW (the design settled at gate 1 + the plan agent's review, R57: the instrument
* CALIBRATION (R39/R57): every sampled TU compiled untouched reproduces its object byte for byte; a twin's object equals its primary's;
a deliberately altered body reports DIFFERS. `.run/P36/delever/calibration.json` records HEAD, the Makefile/config mtimes and the
per-object seconds (the scheduler's cost model); an --apply of the de-lever tool refuses without a current calibration.
* THE LINKED MODE (Phase 37 T3, 2026-09-12 — the T2 finding (h)): a correct global-block edit can be whole-object DIFFERS while the
LINKED bytes are identical, because only the RELOCATION SPELLING changed (`D_801F8872` vs `D_801F8870`+2 resolve to one address;
the immediate field and the symbol differ in the .o). `judge_linked` therefore runs the build's OWN tail on the candidate object:
the binary's snapshot `.ld` with the one object pointed at the candidate and every other object at the snapshot's copy, the
Makefile's exact `ld … -T <undefined_syms> -T <undefined_funcs> [-T build/psyq/*_externals.ld] --no-check-sections`, `objcopy -O
binary`, the <=3-byte end-align trim, and SHA1 against config/check.<alias>.sha — nothing of HI16/LO16 pairing is re-implemented
(R110: the tree's own bytes through the build's own tail). ~0.3 s per judgement; run only AFTER a whole-object DIFFERS, when the
edit is flagged relocation-spelling or `reloc_only_diff` says the .text words agree modulo relocation operands. The snapshot
(`--snapshot-baseline`) therefore also carries every binary's link inputs (`_link/<alias>/`, `links.json`), so a clean fleet
rebuild can run beside a live linked judgement (R112).
"""
import argparse
import hashlib
@@ -44,6 +56,7 @@ SCRATCH = RUN / "obj"
RECIPE_RE = re.compile(r"^set -o pipefail; (.*) -o (build/\S+\.o)$")
SIGNAL_LINE = re.compile(r"^\s*\d+\s+(Aborted|Segmentation fault|Illegal instruction|Floating point exception|Bus error|Killed)[^\n]*", re.M)
JOB_STATUS_LINE = re.compile(r"^(bash: line \d+: )?\s*\d+\s+(Done|Exit \d+)\b")
CPP_CONTEXT_LINE = re.compile(r"^\s*(\d+\s*\|.*|\|\s*)$") # modern cpp's source-context lines under a redefinition warning
# ----------------------------------------------------------------------------------------------------------------------
@@ -168,7 +181,10 @@ def compile_obj(recipe, text=None, tag="x", write_path=None):
# non-warning line (R103), then the tail
errs = [ln for ln in r.stderr.splitlines()
if ln.strip() and not re.search(r"\bwarning:", ln, re.I) and not ln.startswith(("In file included", " " * 16))
and ": In function" not in ln and not JOB_STATUS_LINE.match(ln)]
and ": In function" not in ln and not JOB_STATUS_LINE.match(ln)
and not CPP_CONTEXT_LINE.match(ln) and ": note:" not in ln] # cpp's `NNN | #define …` / `|` context + notes (P37 T3)
# gcc 2.7.2's `At top level:` is a PREFIX line; keep the message lines ahead of it in the cap
errs.sort(key=lambda ln: ln.rstrip().endswith("At top level:"))
return None, dt, ("\n".join(errs[:8]) or r.stderr[-400:])
data = out.read_bytes()
try:
@@ -201,20 +217,55 @@ def baseline_path(obj):
def snapshot_baseline():
"""Copy every object under `build/` into the snapshot. Run it after a GREEN `check-all` — the caller states that; this
records the HEAD it was taken at so a reader can tell what it is."""
records the HEAD it was taken at so a reader can tell what it is.
THE GUARD (T3, 2026-09-12): every object whose bytes CHANGE in the snapshot is re-derived — its TU compiled UNTOUCHED through
its own recipe must reproduce the new bytes — else the previous snapshot copy is restored and the refresh is REFUSED, naming
the object. Why: a `make build BINARY=x` run with a candidate in place (T2's relocation control) writes build/ with an object
that links identically but is not the tree's; a refresh then carried it into the snapshot, and the linked-mode control read
`IDENTICAL` for a spelling the tree does not have. build/ is a build product, the snapshot is an oracle input (R56/R112) —
the guard is what makes the second true."""
import shutil, subprocess as sp
n = 0
n, changed = 0, []
BASELINE.mkdir(parents=True, exist_ok=True)
for src in sorted((REPO / "build").glob("**/*.o")):
rel = src.relative_to(REPO / "build")
dst = BASELINE / rel
dst.parent.mkdir(parents=True, exist_ok=True)
if not dst.exists() or dst.stat().st_mtime < src.stat().st_mtime or dst.stat().st_size != src.stat().st_size:
old = dst.read_bytes() if dst.exists() else None
new = src.read_bytes()
if old != new:
changed.append(("build/" + rel.as_posix(), old))
shutil.copy2(src, dst)
n += 1
refused = []
if changed:
by_obj = load_recipes()["recipes"]
for obj, old in changed:
r = by_obj.get(obj)
if r is None:
continue # asm/asset/psyq objects: no TU recipe to re-derive from
v, dt, err = judge(r, None, tag="snap")
if v != "IDENTICAL":
refused.append((obj, v, err[-120:]))
dst = BASELINE / obj[len("build/"):]
if old is not None:
dst.write_bytes(old)
else:
dst.unlink(missing_ok=True)
if refused:
print(f"delever_oracle --snapshot-baseline: REFUSED — {len(refused)} changed object(s) do not reproduce from an untouched compile "
f"of their TU (build/ is not the tree's; run the clean fleet gate first, R22/R56):")
for obj, v, err in refused:
print(f" {obj}: {v} {err}")
return 0
head = sp.run(["git", "rev-parse", "HEAD"], cwd=REPO, capture_output=True, text=True).stdout.strip()
(BASELINE / "TAKEN_AT.txt").write_text(f"{head}\n{n} objects\n")
print(f"delever_oracle --snapshot-baseline: {n} object(s) under {BASELINE.relative_to(REPO)} at {head[:9]}")
(BASELINE / "TAKEN_AT.txt").write_text(f"{head}\n{n} objects\n{len(changed)} changed since the previous snapshot\n")
table = snapshot_links()
ok = sum(1 for v in table.values() if not v.get("error") and v.get("ld_script_snap"))
print(f"delever_oracle --snapshot-baseline: {n} object(s) under {BASELINE.relative_to(REPO)} at {head[:9]}; link inputs for "
f"{ok}/{len(table)} binaries under {LINKDIR.relative_to(REPO)} (links.json)")
return n
@@ -223,6 +274,167 @@ def baseline_bytes(obj):
return p.read_bytes() if p.exists() else None
# ----------------------------------------------------------------------------------------------------------------------
# the linked mode (Phase 37 T3): the build's own link on the candidate object
# ----------------------------------------------------------------------------------------------------------------------
LINKDIR = BASELINE / "_link"
LINKS = BASELINE / "links.json"
_MAKE_QUERY = "__q:\n\t@echo \"$(BINARY)|$(LD)|$(OBJCOPY)|$(LD_SCRIPT)|$(UNDEF_SYMS)|$(UNDEF_FUNCS)|$(EXE)|$(CHECK_SHA)|$(OUT)\"\n"
OBJ_IN_LD = re.compile(r'"?((?:build|asm|assets)/[^\s"()]+\.o)"?')
def link_vars(alias):
"""The Makefile's OWN link variables for one binary (R33: asked of make, never re-typed): dict(ld, objcopy, ld_script,
undef_syms, undef_funcs, exe, check_sha, out, syms_frags, exe_size). syms_frags = main's `-T build/psyq/*_externals.ld` list in
the Makefile's order, the files that exist (the recipe's `[ -f ]` tests); empty for every other binary (the ifeq skips them)."""
r = subprocess.run(["make", "-s", "-f", "Makefile", "-f", "-", f"BINARY={alias}", "__q"], cwd=REPO, input=_MAKE_QUERY,
capture_output=True, text=True)
if r.returncode != 0 or "|" not in r.stdout:
raise RuntimeError(f"link_vars({alias}): make query failed rc={r.returncode}: {r.stderr.strip()[:200]}")
f = r.stdout.strip().splitlines()[-1].split("|")
d = dict(alias=f[0], ld=f[1], objcopy=f[2], ld_script=f[3], undef_syms=f[4], undef_funcs=f[5], exe=f[6], check_sha=f[7], out=f[8])
frags = []
if alias == "main":
mk = (REPO / "Makefile").read_text()
for m in re.finditer(r"^(\w+_SYMS)\s*:=\s*(build/psyq/\S+)\s*$", mk, re.M):
if (REPO / m.group(2)).exists():
frags.append(m.group(2))
d["syms_frags"] = frags
exe = REPO / d["exe"]
d["exe_size"] = exe.stat().st_size if exe.exists() else None
d["want_sha"] = (REPO / d["check_sha"]).read_text().split()[0] if (REPO / d["check_sha"]).exists() else None
return d
def snapshot_links(aliases=None):
"""Copy every binary's link inputs into the snapshot (`_link/<alias>/<basename>`; main's externals under `_link/psyq/`) and
write links.json. Called by snapshot_baseline; the .ld's object paths stay `build/…` — judge_linked redirects them."""
import shutil
dirs = src_dirs()
table = {}
for a in sorted(dirs):
if aliases and a not in aliases:
continue
try:
v = link_vars(a)
except RuntimeError as ex:
table[a] = dict(error=str(ex))
continue
dst = LINKDIR / a
dst.mkdir(parents=True, exist_ok=True)
for key in ("ld_script", "undef_syms", "undef_funcs"):
src = REPO / v[key]
if src.exists():
shutil.copy2(src, dst / pathlib.Path(v[key]).name)
v[key + "_snap"] = str((dst / pathlib.Path(v[key]).name).relative_to(REPO))
snap_frags = []
for fr in v["syms_frags"]:
(LINKDIR / "psyq").mkdir(parents=True, exist_ok=True)
shutil.copy2(REPO / fr, LINKDIR / "psyq" / pathlib.Path(fr).name)
snap_frags.append(str((LINKDIR / "psyq" / pathlib.Path(fr).name).relative_to(REPO)))
v["syms_frags_snap"] = snap_frags
table[a] = v
LINKS.write_text(json.dumps(dict(head=head(), stamp=config_stamp(), generated=time.strftime("%Y-%m-%d %H:%M"), links=table), indent=1) + "\n")
return table
_links_cache = None
def links():
"""The snapshot's link table (alias -> link_vars + snapshot paths); refuses when the snapshot has none (R43)."""
global _links_cache
if _links_cache is None:
if not LINKS.exists():
raise RuntimeError("no links.json in the baseline snapshot — run `tools/delever_oracle.py --snapshot-baseline` after a GREEN check-all")
_links_cache = json.loads(LINKS.read_text())["links"]
return _links_cache
def judge_linked(recipe, cand_bytes, tag="x"):
"""(verdict, seconds, err) for a candidate OBJECT: the binary linked with this object in place of the recipe's, everything
else from the snapshot, through the Makefile's own ld/objcopy/trim, SHA1 against config/check.<alias>.sha. verdict in
IDENTICAL | DIFFERS | LINK-ERROR | NO-LINK-INPUTS."""
alias, obj = recipe["alias"], recipe["obj"]
lv = links().get(alias)
if not lv or lv.get("error") or not lv.get("ld_script_snap") or lv.get("exe_size") is None or not lv.get("want_sha"):
return "NO-LINK-INPUTS", 0.0, f"the snapshot carries no link inputs for {alias}"
flat = obj[len("build/"):].replace("/", "__")[:-2] + f".{tag}"
SCRATCH.mkdir(parents=True, exist_ok=True)
cand = SCRATCH / (flat + ".lnk.o")
ld_s = SCRATCH / (flat + ".ld")
elf = SCRATCH / (flat + ".elf")
binp = SCRATCH / (flat + ".bin")
t0 = time.time()
try:
cand.write_bytes(cand_bytes)
script = (REPO / lv["ld_script_snap"]).read_text()
def redirect(m):
path = m.group(1)
if path == obj:
return str(cand)
snap = BASELINE / path[len("build/"):] if path.startswith("build/") else None
return str(snap) if snap is not None and snap.exists() else path
script2 = OBJ_IN_LD.sub(redirect, script)
if str(cand) not in script2:
return "LINK-ERROR", time.time() - t0, f"{obj} is not named in {lv['ld_script_snap']}"
ld_s.write_text(script2)
cmd = [lv["ld"], "-T", str(ld_s)]
for key in ("undef_syms_snap", "undef_funcs_snap"):
if lv.get(key):
cmd += ["-T", lv[key]]
for fr in lv.get("syms_frags_snap", []):
cmd += ["-T", fr]
cmd += ["--no-check-sections", "-o", str(elf)]
r = subprocess.run(cmd, cwd=REPO, capture_output=True, text=True)
if r.returncode != 0:
errs = [ln for ln in r.stderr.splitlines() if ln.strip() and "warning" not in ln.lower()]
return "LINK-ERROR", time.time() - t0, "\n".join(errs[:6])[-400:]
r = subprocess.run([lv["objcopy"], "-O", "binary", str(elf), str(binp)], cwd=REPO, capture_output=True, text=True)
if r.returncode != 0:
return "LINK-ERROR", time.time() - t0, r.stderr[-300:]
data = binp.read_bytes()
d = len(data) - lv["exe_size"]
if 0 < d <= 3:
data = data[:lv["exe_size"]] # the Makefile's shrink-only end-align trim
got = hashlib.sha1(data).hexdigest()
if got == lv["want_sha"]:
return "IDENTICAL", time.time() - t0, ""
return "DIFFERS", time.time() - t0, f"linked sha {got[:12]} != {lv['want_sha'][:12]} (size {len(data)} vs {lv['exe_size']})"
finally:
for p in (cand, ld_s, elf, binp):
try:
p.unlink()
except OSError:
pass
def reloc_only_diff(cand_bytes, base_path, tag="x"):
"""True when the two objects' .text instruction streams agree word for word under the relocation mask and differ only in
relocation OPERANDS (which symbol/addend a link-time field names) — the shape a global-block respelling produces, and the
cheap pre-check (~60 ms) before paying for a linked judgement. False on any masked-word or length difference."""
import masked_diff as md
SCRATCH.mkdir(parents=True, exist_ok=True)
tmp = SCRATCH / (hashlib.sha1(cand_bytes).hexdigest()[:12] + f".{tag}.ro.o")
tmp.write_bytes(cand_bytes)
try:
mine = md.insns_from_object(str(tmp))
tgt = md.insns_from_object(str(base_path))
finally:
tmp.unlink(missing_ok=True)
if not mine or not tgt or len(mine) != len(tgt):
return False
ops_differ = False
for c, t in zip(mine, tgt):
m = md.mask_for(t["word"], t["reloc_kind"])
if (c["word"] & m) != (t["word"] & m) or md._j_mismatch(c, t):
return False
if (c["reloc_op"] or "") != (t["reloc_op"] or "") or (c["word"] != t["word"]):
ops_differ = True
return ops_differ
def judge(recipe, text, tag="x", write_path=None):
"""(verdict, seconds, err): verdict in IDENTICAL | DIFFERS | COMPILE-ERROR | NO-BASELINE."""
base = baseline_bytes(recipe["obj"])
@@ -256,6 +468,51 @@ def judge_all(recipes, text, tag="x", write_path=None):
return (first[0] if first else "IDENTICAL"), total, (first[1] if first else "")
def linked_control():
"""The linked mode's known-true and negative (R39/R110), on the T2 finding (h)'s own body — md_SC07_004 `func_801A4258`, whose
`s16` globals D_801F8870/72/74 are one array walked through a pointer in the original: spelling `D_801F8872` as `p[1]` changes
the relocation (`D_801F8870`+2 for `D_801F8872`+0) and NOTHING else, so the object DIFFERS and the linked binary is IDENTICAL;
`p[2]` for D_801F8872 (a wrong addend) must DIFFER in both. Exit 0 only when all four verdicts are as predicted."""
tu = "src/md_SC07_004/md_SC07_004.c"
recs = recipes_by_src(load_recipes()["recipes"]).get(tu, [])
if not recs:
print("linked-control: no recipe for", tu); return 1
r = recs[0]
path = REPO / tu
raw = path.read_text(errors="surrogateescape")
st = path.stat()
body_a = raw.index("void func_801A4258(void) {")
body_z = raw.index("\n}\n", body_a) + 3
body = raw[body_a:body_z]
if body.count("D_801F8872") != 3 or body.count("D_801F8874") != 3:
print("linked-control: the control body has changed shape (expected 3 mentions each of D_801F8872/D_801F8874)"); return 1
good = raw[:body_a] + body.replace("D_801F8872", "p[1]").replace("D_801F8874", "p[2]") + raw[body_z:]
bad = raw[:body_a] + body.replace("D_801F8872", "p[2]").replace("D_801F8874", "p[3]") + raw[body_z:]
base = baseline_bytes(r["obj"])
out, ok = [], True
try:
for name, text, want_whole, want_ro, want_link in (("known-true p[1]/p[2]", good, "DIFFERS", True, "IDENTICAL"),
("negative p[2]/p[3]", bad, "DIFFERS", True, "DIFFERS")):
data, dt, err = compile_obj(r, text, tag="lc")
restore = path.write_text(raw, errors="surrogateescape")
if data is None:
out.append(f" {name}: COMPILE-ERROR {err[:120]}"); ok = False; continue
whole = "IDENTICAL" if data == base else "DIFFERS"
ro = reloc_only_diff(data, baseline_path(r["obj"]), tag="lc")
lv, dt2, lerr = judge_linked(r, data, tag="lc")
line = f" {name}: whole-object {whole} · reloc-only {ro} · linked {lv} ({dt2:.2f} s){' ' + lerr if lerr else ''}"
good_row = (whole == want_whole and ro == want_ro and lv == want_link)
out.append(line + (" ✓" if good_row else f" ✗ expected {want_whole}/{want_ro}/{want_link}"))
ok = ok and good_row
finally:
path.write_text(raw, errors="surrogateescape")
os.utime(path, ns=(st.st_atime_ns, st.st_mtime_ns))
print("delever_oracle --linked-control (md_SC07_004 func_801A4258, the f3 shape):")
print("\n".join(out))
print("linked-control:", "OK" if ok else "FAIL")
return 0 if ok else 1
# ----------------------------------------------------------------------------------------------------------------------
# calibration
# ----------------------------------------------------------------------------------------------------------------------
@@ -342,9 +599,12 @@ def main():
ap.add_argument("--status", action="store_true")
ap.add_argument("--snapshot-baseline", action="store_true",
help="copy build/**/*.o into the snapshot every score compares against (run after a GREEN check-all)")
ap.add_argument("--linked-control", action="store_true", help="the linked mode's known-true + negative on md_SC07_004 func_801A4258 (T3)")
ap.add_argument("-j", "--jobs", type=int, default=16)
a = ap.parse_args()
RUN.mkdir(parents=True, exist_ok=True)
if a.linked_control:
sys.exit(linked_control())
if a.snapshot_baseline:
sys.exit(0 if snapshot_baseline() else 1)
if a.status:
+2176 -77
View File
File diff suppressed because it is too large Load Diff
+591
View File
@@ -0,0 +1,591 @@
#!/usr/bin/env python3
"""tools/struct_layout.py — the o32 struct layout engine, the field map, the canonical-type WRITER and the layout INVARIANT
(Phase 37 T3, 2026-09-12). Factored out of tools/type_census.py (T1) so the census, the rewrite engine (tools/restruct.py) and
the type writer compute ONE layout for one definition (R33: derive, don't re-derive).
WHAT IT KNOWS
* SCALARS / SDK_SIZES the o32 widths of every scalar spelling the tree uses, and the PsyQ aggregate sizes.
* parse_struct_body `struct/union … { … }` body text -> fields [dict(name, type, stars, dims, bits, nested, attrs)].
* Resolver type name -> (size, align, leaves[(off, width, sign)]) under the o32 rules (arrays, nested
aggregates, bit-fields, `packed`, per-field `aligned(N)`); cc1-validated on 5,283 file-scope
definitions / 29,248 named fields at T2 (`tools/restruct.py --audit-layouts`, 0 rejected).
* layout_hash / field_offsets the identity of a layout; the top-level named fields with their byte offsets (the audit's assertions).
* field_map a definition's {offset: (name, width, sign, type_text)} over its top-level scalar/pointer fields —
what the rewrite engine consults to turn `*(u16 *)(p + 0x3C)` into `p->unk3C`.
* render_struct THE WRITER: the final style of a canonical definition (owner decision 2, gate 1) —
typedef struct {
/* 0x00 */ s16 unk0;
/* 0x02 */ u8 pad2[0x2];
/* 0x04 */ s32 unk4;
} Unkstruct_80078E00; /* size = 0x8 */
`unk<HEX>` = a field the code ACCESSES whose meaning is unknown; `u8 pad<HEX>[n]` = bytes the code
never touches (Phase 38 knows there is nothing to name there); a field is NAMED only where the
record cites evidence, and the citation rides in its comment. One decision, applied everywhere.
* audit_definition THE INVARIANT (sotn's SYNC_FIELD, made derivable): every `unk<HEX>` / `pad<HEX>` field sits at
offset HEX, every `/* 0xNN */` offset comment equals the computed offset, and the `size = 0x..`
trailer equals sizeof. A drifted definition (a field inserted by hand) fails the census's --check
(T8 wires it into tools-health) — no ledger and no PC build needed.
"""
import hashlib
import json
import re
# ----------------------------------------------------------------------------------------------------------------------
# types and widths (o32)
# ----------------------------------------------------------------------------------------------------------------------
SCALARS = {
"u8": (1, "u"), "s8": (1, "s"), "char": (1, "s"), "signed char": (1, "s"), "unsigned char": (1, "u"),
"u16": (2, "u"), "s16": (2, "s"), "short": (2, "s"), "unsigned short": (2, "u"), "signed short": (2, "s"),
"short int": (2, "s"), "unsigned short int": (2, "u"),
"u32": (4, "u"), "s32": (4, "s"), "int": (4, "s"), "unsigned": (4, "u"), "unsigned int": (4, "u"), "signed": (4, "s"),
"signed int": (4, "s"), "long": (4, "s"), "unsigned long": (4, "u"), "long int": (4, "s"), "unsigned long int": (4, "u"),
"uint": (4, "u"), "uint32_t": (4, "u"), "int32_t": (4, "s"), "uint16_t": (2, "u"), "int16_t": (2, "s"),
"uint8_t": (1, "u"), "int8_t": (1, "s"),
"u64": (8, "u"), "s64": (8, "s"), "long long": (8, "s"), "unsigned long long": (8, "u"),
"f32": (4, "f"), "float": (4, "f"), "f64": (8, "f"), "double": (8, "f"),
"M2C_UNK": (4, "s"), "M2C_UNK8": (1, "s"), "M2C_UNK16": (2, "s"), "M2C_UNK32": (4, "s"), "M2C_UNK64": (8, "s"),
"void": (0, "v"),
}
# PsyQ layouts the SDK headers fix (include/psyq/*.h) — sizes only; used when a cast names them and for the MATRIX control
SDK_SIZES = {"MATRIX": 32, "SVECTOR": 8, "VECTOR": 16, "CVECTOR": 4, "DVECTOR": 4, "RECT": 8, "RECT32": 16,
"POLY_F3": 20, "POLY_F4": 24, "POLY_FT3": 32, "POLY_FT4": 40, "POLY_G3": 28, "POLY_G4": 36, "POLY_GT3": 40,
"POLY_GT4": 52, "LINE_F2": 16, "LINE_F3": 20, "LINE_F4": 24, "LINE_G2": 20, "LINE_G3": 28, "LINE_G4": 36,
"SPRT": 20, "SPRT_8": 16, "SPRT_16": 16, "TILE": 16, "TILE_1": 12, "TILE_8": 12, "TILE_16": 12,
"DR_TPAGE": 8, "DR_ENV": 64, "DRAWENV": 92, "DISPENV": 20, "TMD_PRIM": 60, "GsDOBJ2": 32, "GsCOORDINATE2": 80,
"GsRVIEW2": 36, "GsF_LIGHT": 16, "GsOT": 12, "GsOT_TAG": 4, "CdlLOC": 4, "CdlFILE": 20, "CdlFILTER": 4,
"CdlATV": 4, "CdlCB": 4}
def _norm_type(t):
t = re.sub(r"\b(const|volatile|register|extern|static)\b", "", t)
return re.sub(r"\s+", " ", t).strip()
def scalar_of(t):
"""(width, sign) for a scalar/pointer type text; None for an aggregate or unknown name."""
t = _norm_type(t)
if t.endswith("*"):
return (4, "p")
if t in SCALARS:
return SCALARS[t]
return None
# ----------------------------------------------------------------------------------------------------------------------
# the definitions: parse `struct/union … { … }` bodies and compute o32 layouts
# ----------------------------------------------------------------------------------------------------------------------
DEF_START = re.compile(r"(?<![\w.])(typedef\s+)?(struct|union|enum)\s*([A-Za-z_]\w*)?\s*(__attribute__\s*\(\([^)]*\)\)\s*)?\{")
FWD_DECL = re.compile(r"(?<![\w.])(struct|union|enum)\s+([A-Za-z_]\w*)\s*;")
ATTR_RX = re.compile(r"__attribute__\s*\(\(((?:[^()]|\([^()]*\))*)\)\)") # nested parens: aligned(4), packed
def _match_brace(text, open_idx):
depth = 0
i = open_idx
n = len(text)
while i < n:
c = text[i]
if c == "{":
depth += 1
elif c == "}":
depth -= 1
if depth == 0:
return i
i += 1
return -1
def _split_top(text, sep=";"):
"""Split on `sep` at brace/paren depth 0."""
out, depth, cur = [], 0, []
for c in text:
if c in "{(":
depth += 1
elif c in "})":
depth -= 1
if c == sep and depth == 0:
out.append("".join(cur))
cur = []
else:
cur.append(c)
if "".join(cur).strip():
out.append("".join(cur))
return out
def _split_declarators(decl):
"""`type a, *b, c[4]` -> (type, [(name, stars, dims, bits)])"""
parts = _split_top(decl, ",")
if not parts:
return None, []
first = parts[0].strip()
# bitfield? `s16 : 16` / `u8 x : 3`
mb = re.search(r":\s*(\d+)\s*$", first)
if mb:
left = first[:mb.start()].strip()
toks = left.split()
if len(toks) >= 2 and re.match(r"^[A-Za-z_]\w*$", toks[-1]) and toks[-1] not in SCALARS and toks[-2] not in ("struct", "union", "enum"):
return _norm_type(" ".join(toks[:-1])), [(toks[-1], 0, [], int(mb.group(1)))]
return _norm_type(left), [("", 0, [], int(mb.group(1)))]
# split the first part into type + declarator: the declarator is the trailing `*... name [dims]` or a function pointer
fp = re.match(r"^(.*?)\(\s*\*\s*([A-Za-z_]\w*)\s*\)\s*\(.*\)\s*((?:\[[^\]]*\])*)$", first)
decls = []
if fp:
base_type = "void *" # a function pointer is 4 bytes; the callee type is irrelevant to the layout
dims = re.findall(r"\[([^\]]*)\]", fp.group(3))
decls.append((fp.group(2), 1, dims, None))
for extra in parts[1:]:
e = extra.strip()
m2 = re.match(r"^(\**)\s*([A-Za-z_]\w*)\s*((?:\[[^\]]*\])*)$", e)
if m2:
decls.append((m2.group(2), len(m2.group(1)), re.findall(r"\[([^\]]*)\]", m2.group(3)), None))
return base_type, decls
m = re.match(r"^(.*?)\s*(\**)\s*([A-Za-z_]\w*)\s*((?:\[[^\]]*\])*)\s*$", first, re.S)
if not m:
return _norm_type(first), []
base_type = _norm_type(m.group(1))
decls.append((m.group(3), len(m.group(2)), re.findall(r"\[([^\]]*)\]", m.group(4)), None))
for extra in parts[1:]:
e = extra.strip()
m2 = re.match(r"^(\**)\s*([A-Za-z_]\w*)\s*((?:\[[^\]]*\])*)\s*(?::\s*(\d+))?$", e)
if m2:
decls.append((m2.group(2), len(m2.group(1)), re.findall(r"\[([^\]]*)\]", m2.group(3)),
int(m2.group(4)) if m2.group(4) else None))
return base_type, decls
def _eval_dim(d, consts):
d = d.strip()
if not d:
return None # flexible/unsized
try:
return int(eval(d, {"__builtins__": {}}, dict(consts))) # hex, sums, `0x20-0x10`, sizeof-free; the tree's dims are literals
except Exception:
return None
def parse_struct_body(body, consts=None):
"""Fields of one struct/union body text (the text between the braces). Nested definitions are parsed recursively.
Returns [dict(name, type, stars, dims, bits, nested)] in order."""
fields = []
consts = consts or {}
i, n = 0, len(body)
while i < n:
# a nested struct/union body?
m = DEF_START.search(body, i)
stmt_end = body.find(";", i)
if m and (stmt_end == -1 or m.start() < stmt_end):
close = _match_brace(body, m.end() - 1)
if close == -1:
break
inner = body[m.end():close]
# the declarators after the nested body up to `;`
j = body.find(";", close)
tail = body[close + 1:j if j != -1 else n]
nested = dict(kind=m.group(2), tag=m.group(3), fields=parse_struct_body(inner, consts) if m.group(2) != "enum" else [],
attrs=(m.group(4) or "") + " ".join(ATTR_RX.findall(tail)))
tail = ATTR_RX.sub("", tail).strip()
decls = []
if tail:
for part in _split_top(tail, ","):
e = part.strip()
m2 = re.match(r"^(\**)\s*([A-Za-z_]\w*)\s*((?:\[[^\]]*\])*)\s*(?::\s*(\d+))?$", e)
if m2:
decls.append((m2.group(2), len(m2.group(1)), re.findall(r"\[([^\]]*)\]", m2.group(3)),
int(m2.group(4)) if m2.group(4) else None))
if not decls:
decls = [("", 0, [], None)] # an anonymous member (a union inside a struct)
for (nm, stars, dims, bits) in decls:
fields.append(dict(name=nm, type=(m.group(2) + " " + (m.group(3) or "")).strip(), stars=stars,
dims=[_eval_dim(d, consts) for d in dims], bits=bits, nested=nested))
i = (j + 1) if j != -1 else n
continue
if stmt_end == -1:
break
stmt = body[i:stmt_end].strip()
i = stmt_end + 1
if not stmt:
continue
fattrs = " ".join(ATTR_RX.findall(stmt))
stmt = ATTR_RX.sub("", stmt)
base_type, decls = _split_declarators(stmt)
if base_type is None:
continue
for (nm, stars, dims, bits) in decls:
fields.append(dict(name=nm, type=base_type, stars=stars, dims=[_eval_dim(d, consts) for d in dims], bits=bits, nested=None,
attrs=fattrs or None))
return fields
class Resolver:
"""Type name -> (size, align, leaves) under the o32 ABI. Scope: a TU's own definitions first, then the shared headers, then the SDK."""
def __init__(self, defs_by_name):
self.defs = defs_by_name # name -> definition record (tag or typedef name)
self.cache = {}
self.stack = set()
def layout(self, type_text, stars=0, dims=(), bits=None):
"""(size, align, leaves) of one field's type; leaves = [(off, width, sign)]; None when unknown."""
if stars:
sz, al, leaves = 4, 4, [(0, 4, "p")]
else:
t = _norm_type(type_text)
sc_ = scalar_of(t)
if sc_:
w, s = sc_
if w == 0:
return None
sz, al, leaves = w, w, [(0, w, s)]
else:
r = self.resolve_name(t)
if r is None:
return None
sz, al, leaves = r
for d in reversed(list(dims)):
if d is None:
d = 0
leaves = [(k * sz + off, w, s) for k in range(d) for (off, w, s) in leaves]
sz = sz * d
return sz, al, leaves
def resolve_name(self, name):
name = _norm_type(name)
if name in self.cache:
return self.cache[name]
if name in self.stack:
return None
d = self.defs.get(name)
if d is None:
m = re.match(r"^(struct|union|enum)\s+(\w+)$", name)
if m and m.group(1) == "enum":
return (4, 4, [(0, 4, "s")])
if m and m.group(2) in self.defs and self.defs[m.group(2)].get("kind") == m.group(1):
d = self.defs[m.group(2)]
elif name in SDK_SIZES:
sz = SDK_SIZES[name]
r = (sz, 4, [(0, 4, "s")] * (sz // 4) if sz % 4 == 0 else [(0, sz, "b")])
self.cache[name] = r
return r
else:
return None
if d.get("kind") == "enum":
return (4, 4, [(0, 4, "s")])
if d.get("alias_of"): # `typedef T Name;` — a scalar/pointer alias or an alias of another aggregate
self.stack.add(name)
r = self.layout(d["alias_of"], d.get("alias_stars", 0), d.get("alias_dims", ()))
self.stack.discard(name)
self.cache[name] = r
return r
self.stack.add(name)
r = self.layout_of_fields(d["fields"], d["kind"], packed=("packed" in (d.get("attrs") or "")))
self.stack.discard(name)
self.cache[name] = r
return r
def layout_of_fields(self, fields, kind, packed=False):
off, maxal, leaves, size = 0, 1, [], 0
bit_off = 0
unknown = False
for f in fields:
if f.get("nested"):
nd = f["nested"]
r = self.layout_of_fields(nd["fields"], nd["kind"], packed=("packed" in (nd.get("attrs") or ""))) if nd["kind"] != "enum" else (4, 4, [(0, 4, "s")])
else:
r = self.layout(f["type"], f["stars"], f["dims"])
if r is None:
unknown = True
r = (0, 1, [])
fsz, fal, fleaves = r
if f.get("dims") and f["nested"]:
for d in reversed(f["dims"]):
d = d or 0
fleaves = [(k * fsz + o, w, s) for k in range(d) for (o, w, s) in fleaves]
fsz = fsz * d
fa = f.get("attrs") or ""
ma = re.search(r"aligned\s*\(\s*(\d+)\s*\)", fa)
if packed:
fal = 1
if ma:
fal = max(fal, int(ma.group(1)))
if f.get("bits") is not None:
# bitfields: pack into the base type's storage unit; an anonymous `s16 : 16` is a pad of the base width
w = fsz or 4
if bit_off == 0:
off = (off + fal - 1) // fal * fal
unit_off = off
self._unit = (unit_off, w)
unit_off, uw = self._unit
if bit_off + f["bits"] > uw * 8:
off = unit_off + uw
off = (off + fal - 1) // fal * fal
unit_off = off
self._unit = (unit_off, w)
bit_off = 0
if f["name"]:
leaves.append((unit_off, w, "bf"))
bit_off += f["bits"]
maxal = max(maxal, fal)
end = unit_off + w
if bit_off >= uw * 8:
bit_off = 0
off = end
else:
off = unit_off
size = max(size, end)
if kind == "union":
off = 0
continue
bit_off = 0
if kind == "union":
leaves.extend((0 + o, w, s) for (o, w, s) in fleaves)
size = max(size, fsz)
maxal = max(maxal, fal)
continue
off = (off + fal - 1) // fal * fal
leaves.extend((off + o, w, s) for (o, w, s) in fleaves)
off += fsz
size = max(size, off)
maxal = max(maxal, fal)
size = (size + maxal - 1) // maxal * maxal
if unknown:
return None
return size, maxal, sorted(set(leaves))
def layout_hash(lay):
if lay is None:
return None
size, al, leaves = lay
return hashlib.sha1(json.dumps([size, leaves]).encode()).hexdigest()[:12]
# ----------------------------------------------------------------------------------------------------------------------
# the field map (what a rewrite consults) and the naming invariant (what the census asserts)
# ----------------------------------------------------------------------------------------------------------------------
def mask_comments(text):
"""Same-length masking of /* */ and // comments (the census masks through share_census.mask_text; this is the standalone
equivalent for a definition's own text — parse_struct_body expects MASKED text, never raw)."""
return re.sub(r"/\*.*?\*/|//[^\n]*", lambda m: re.sub(r"[^\n]", " ", m.group(0)), text, flags=re.S)
UNK_RX = re.compile(r"^unk([0-9A-F]+)$")
PAD_RX = re.compile(r"^pad([0-9A-F]+)$")
OFF_COMMENT_RX = re.compile(r"/\*\s*0x([0-9A-Fa-f]+)\s*\*/\s*([^;/]*;)")
SIZE_TRAILER_RX = re.compile(r"/\*\s*size\s*=\s*0x([0-9A-Fa-f]+)\s*\*/")
TYPE_OF = {(1, "u"): "u8", (1, "s"): "s8", (2, "u"): "u16", (2, "s"): "s16", (4, "u"): "u32", (4, "s"): "s32",
(8, "u"): "u64", (8, "s"): "s64", (4, "f"): "f32", (8, "f"): "f64"}
def field_offsets(res, d):
"""Top-level NAMED, non-bitfield fields with their byte offsets under the engine's rules — the audit's assertions.
(Moved from tools/restruct.py T2 form.)"""
out, off, kind = [], 0, d["kind"]
packed = "packed" in (d.get("attrs") or "")
for f in d["fields"]:
if f.get("nested"):
nd = f["nested"]
r = res.layout_of_fields(nd["fields"], nd["kind"], packed=("packed" in (nd.get("attrs") or ""))) if nd["kind"] != "enum" else (4, 4, [])
else:
r = res.layout(f["type"], f["stars"], f["dims"])
if r is None:
return out
fsz, fal, _ = r
if f.get("dims") and f["nested"]:
for dd in reversed(f["dims"]):
fsz *= (dd or 0)
fa = f.get("attrs") or ""
ma = re.search(r"aligned\s*\(\s*(\d+)\s*\)", fa)
if packed:
fal = 1
if ma:
fal = max(fal, int(ma.group(1)))
if f.get("bits") is not None:
return out # bit-field layouts are not asserted (the unit rule is compiler-specific); stop here
if kind == "union":
if f["name"]:
out.append((f["name"], 0))
continue
off = (off + fal - 1) // fal * fal
if f["name"]:
out.append((f["name"], off))
off += fsz
return out
def field_map(res, d):
"""{offset: dict(name, width, sign, type, stars, dims)} for the top-level SCALAR / POINTER fields of a struct definition
(an aggregate member is listed with sign 'agg' and its size — the engine never rewrites into an aggregate without an
explicit member path). None when a field's layout is unknown."""
out = {}
offs = dict(field_offsets(res, d))
for f in d["fields"]:
if not f["name"] or f["name"] not in offs or f.get("bits") is not None:
continue
if f.get("nested"):
nd = f["nested"]
r = res.layout_of_fields(nd["fields"], nd["kind"], packed=("packed" in (nd.get("attrs") or ""))) if nd["kind"] != "enum" else (4, 4, [(0, 4, "s")])
if r is None:
return None
out[offs[f["name"]]] = dict(name=f["name"], width=r[0], sign="agg", type=f["type"], stars=0, dims=f.get("dims") or [])
continue
if f.get("dims"):
r = res.layout(f["type"], f["stars"], f["dims"])
if r is None:
return None
out[offs[f["name"]]] = dict(name=f["name"], width=r[0], sign="agg", type=f["type"], stars=f["stars"], dims=f["dims"])
continue
if f["stars"]:
out[offs[f["name"]]] = dict(name=f["name"], width=4, sign="p", type=f["type"], stars=f["stars"], dims=[])
continue
w = scalar_of(f["type"])
if w is None:
r = res.layout(f["type"])
if r is None:
return None
out[offs[f["name"]]] = dict(name=f["name"], width=r[0], sign="agg", type=f["type"], stars=0, dims=[])
continue
out[offs[f["name"]]] = dict(name=f["name"], width=w[0], sign=w[1], type=f["type"], stars=0, dims=[])
return out
def leaf_at(lay, off, width, sign):
"""True when the layout's leaves carry (off, width) with a compatible sign — a store's signedness leaves no byte, so a
store may hit a field of the other sign; a load may not. `sign` None = width only."""
if lay is None:
return False
for (o, w, s) in lay[2]:
if o == off and w == width:
if sign is None or s == sign or {s, sign} <= {"s", "u"} and sign == "store":
return True
if sign in ("s", "u") and s in ("s", "u") and sign != s:
continue
if s == sign:
return True
return False
def render_struct(name, entries, size=None, kind="struct", indent=" ", comment=None, tag=None):
"""THE WRITER. entries = [(off, type_text, field_name, dims_or_None, note_or_None)] sorted by offset, non-overlapping; the gaps
become `u8 pad<HEX>[n]`; `size` (else the end of the last field) rounds to the alignment of the widest scalar; the trailer
names the size. Returns the text (ending with a newline). Refuses overlaps and misaligned scalars (ValueError)."""
lines = [f"typedef {kind} {tag + ' ' if tag else ''}{{"]
if comment:
lines.append(f"{indent}/* {comment} */")
cur, maxal = 0, 1
for (off, ttext, fname, dims, note) in sorted(entries, key=lambda e: e[0]):
if off < cur:
raise ValueError(f"render_struct {name}: {fname} at {off:#x} overlaps the previous field ending at {cur:#x}")
sc_ = scalar_of(ttext)
w = sc_[0] if sc_ else None
al = (8 if w == 8 else min(w, 4)) if w else 4
if w and off % al:
raise ValueError(f"render_struct {name}: {fname} ({ttext}) at {off:#x} is not {al}-aligned")
if off > cur:
lines.append(f"{indent}/* {cur:#06x} */ u8 pad{cur:X}[{off - cur:#x}];")
dtxt = "".join(f"[{d:#x}]" if isinstance(d, int) else f"[{d}]" for d in (dims or []))
lines.append(f"{indent}/* {off:#06x} */ {ttext} {fname}{dtxt};" + (f" /* {note} */" if note else ""))
n = 1
for d in (dims or []):
n *= (d if isinstance(d, int) else 1)
cur = off + (w or 0) * n if w else off + 4 * n
maxal = max(maxal, al)
end = size if size is not None else (cur + maxal - 1) // maxal * maxal
if end < cur:
raise ValueError(f"render_struct {name}: size {end:#x} is smaller than the last field's end {cur:#x}")
if end > cur:
lines.append(f"{indent}/* {cur:#06x} */ u8 pad{cur:X}[{end - cur:#x}];")
lines.append(f"}} {name}; /* size = {end:#x} */")
return "\n".join(lines) + "\n"
def entries_from_layout(layout, ctypes_by_off=None, prefer_pointee=None):
"""The struct map's layout [(off, w, sign, n)] -> render_struct entries [(off, type, unk<HEX>, None, None)], skipping what a
struct cannot hold: overlaps (the earlier/wider-supported entry wins by count), misaligned widths, unknown widths. Returns
(entries, skipped[(off, w, sign, reason)]). A pointer field takes the sites' pointee when they agree, else `void *`."""
entries, skipped, cur = [], [], 0
for (off, w, sg, n) in sorted(layout, key=lambda x: (x[0], -x[3])):
if w is None or w == 0:
skipped.append((off, w, sg, "width"))
continue
if off < cur:
skipped.append((off, w, sg, "overlap"))
continue
al = 8 if w == 8 else min(w, 4)
if off % al:
skipped.append((off, w, sg, "misaligned"))
continue
if sg == "p":
pt = {}
for c in (ctypes_by_off or {}).get(off, []):
if c and c.count("*") >= 2:
k = c.rstrip("* ").strip() + " *"
pt[k] = pt.get(k, 0) + 1
t = (prefer_pointee or {}).get(off) or (next(iter(pt)) if len(pt) == 1 else "void *")
else:
t = TYPE_OF.get((w, sg))
if t is None:
skipped.append((off, w, sg, "sign"))
continue
entries.append((off, t, f"unk{off:X}", None, None))
cur = off + w
return entries, skipped
def audit_definition(d, res, text=None):
"""THE INVARIANT on one definition record (type_census.find_definitions shape): [violations as strings]; [] = OK.
(1) every `unk<HEX>`/`pad<HEX>` top-level field sits at offset HEX; (2) when `text` (the definition's raw source text) is
given, every `/* 0xNN */ … ;` field comment equals the computed offset of the field it annotates and the `size = 0x..`
trailer equals sizeof. Fields with other names are not judged by (1) — the record's evidence-cited names carry a comment."""
out = []
offs = field_offsets(res, d)
name = (d.get("names") or [d.get("tag") or "?"])[0]
for (fname, off) in offs:
for rx, what in ((UNK_RX, "unk"), (PAD_RX, "pad")):
m = rx.match(fname)
if m and int(m.group(1), 16) != off:
out.append(f"{name}.{fname}: named for offset {int(m.group(1), 16):#x} but laid out at {off:#x}")
if text:
by_name = dict(offs)
for m in OFF_COMMENT_RX.finditer(text):
want = int(m.group(1), 16)
decl = m.group(2)
m2 = re.search(r"([A-Za-z_]\w*)\s*(?:\[[^\]]*\])*\s*;", decl)
if not m2:
continue
fname = m2.group(1)
if fname in by_name and by_name[fname] != want:
out.append(f"{name}.{fname}: comment says {want:#x}, laid out at {by_name[fname]:#x}")
ms = SIZE_TRAILER_RX.search(text)
lay = res.layout_of_fields(d["fields"], d["kind"], packed=("packed" in (d.get("attrs") or "")))
if ms and lay and int(ms.group(1), 16) != lay[0]:
out.append(f"{name}: trailer says size {int(ms.group(1), 16):#x}, sizeof is {lay[0]:#x}")
return out
def selftest():
"""The writer round-trips through the parser and the invariant holds; a drifted definition is caught; a hand layout agrees."""
checks = []
entries = [(0, "s16", "unk0", None, None), (4, "s32", "unk4", None, None), (8, "u8", "unk8", [4], None), (0x10, "void *", "unk10", None, None)]
txt = render_struct("Unkstruct_TEST", entries)
checks.append(("writer emits pad2", "u8 pad2[0x2]" in txt))
checks.append(("writer trailer", "/* size = 0x14 */" in txt))
body = mask_comments(txt)[txt.index("{") + 1:txt.rindex("}")]
fields = parse_struct_body(body)
d = dict(kind="struct", tag=None, names=["Unkstruct_TEST"], fields=fields, attrs="")
res = Resolver({"Unkstruct_TEST": d})
lay = res.resolve_name("Unkstruct_TEST")
checks.append(("parsed size 0x14", lay is not None and lay[0] == 0x14))
checks.append(("field_map", field_map(res, d)[4]["name"] == "unk4" and field_map(res, d)[8]["sign"] == "agg"))
checks.append(("audit OK", audit_definition(d, res, txt) == []))
# a drifted definition: a field inserted by hand shifts unk4 to 0x8 -> the invariant names it
drift = txt.replace("/* 0x0002 */ u8 pad2[0x2];", "/* 0x0002 */ u8 pad2[0x2];\n s32 inserted;")
fields2 = parse_struct_body(mask_comments(drift)[drift.index("{") + 1:drift.rindex("}")])
d2 = dict(kind="struct", tag=None, names=["Unkstruct_TEST"], fields=fields2, attrs="")
v = audit_definition(d2, Resolver({"Unkstruct_TEST": d2}), drift)
checks.append(("drift caught", any("unk4" in x for x in v)))
# the layout skip rules: an overlap, a misaligned half, an unknown width
ents, skipped = entries_from_layout([(0, 4, "s", 5), (2, 2, "u", 1), (5, 2, "u", 3), (8, 2, "u", 2), (12, None, None, 1)])
checks.append(("overlap/misaligned/width skipped", [s[3] for s in skipped] == ["overlap", "misaligned", "width"] and [e[0] for e in ents] == [0, 8]))
checks.append(("leaf_at", leaf_at(lay, 4, 4, "s") and not leaf_at(lay, 4, 2, "s") and not leaf_at(lay, 6, 2, "u")))
try:
render_struct("X", [(0, "s32", "a", None, None), (2, "s16", "b", None, None)])
checks.append(("overlap refused", False))
except ValueError:
checks.append(("overlap refused", True))
bad = [c for c, ok in checks if not ok]
print(f"struct_layout --selftest: {len(checks) - len(bad)}/{len(checks)} OK" + (f"; FAILED: {bad}" if bad else ""))
return 0 if not bad else 1
if __name__ == "__main__":
import sys
sys.exit(selftest() if "--selftest" in sys.argv else 0)
+15 -316
View File
@@ -55,322 +55,13 @@ TOOL_STAMP = hashlib.sha1(pathlib.Path(__file__).read_bytes()).hexdigest()[:10]
CANON_HEADERS = ("src/shared/engine_types.h",) # the canonical type files (T3/T5 add src/shared/main/types.h, the slots')
# ----------------------------------------------------------------------------------------------------------------------
# types and widths (o32)
# types and widths (o32) — the layout engine lives in tools/struct_layout.py since T3 (shared with restruct.py and the writer,
# R33: one layout per definition); the names are re-exported here so every consumer of `tc.Resolver` etc. keeps working
# ----------------------------------------------------------------------------------------------------------------------
SCALARS = {
"u8": (1, "u"), "s8": (1, "s"), "char": (1, "s"), "signed char": (1, "s"), "unsigned char": (1, "u"),
"u16": (2, "u"), "s16": (2, "s"), "short": (2, "s"), "unsigned short": (2, "u"), "signed short": (2, "s"),
"short int": (2, "s"), "unsigned short int": (2, "u"),
"u32": (4, "u"), "s32": (4, "s"), "int": (4, "s"), "unsigned": (4, "u"), "unsigned int": (4, "u"), "signed": (4, "s"),
"signed int": (4, "s"), "long": (4, "s"), "unsigned long": (4, "u"), "long int": (4, "s"), "unsigned long int": (4, "u"),
"uint": (4, "u"), "uint32_t": (4, "u"), "int32_t": (4, "s"), "uint16_t": (2, "u"), "int16_t": (2, "s"),
"uint8_t": (1, "u"), "int8_t": (1, "s"),
"u64": (8, "u"), "s64": (8, "s"), "long long": (8, "s"), "unsigned long long": (8, "u"),
"f32": (4, "f"), "float": (4, "f"), "f64": (8, "f"), "double": (8, "f"),
"M2C_UNK": (4, "s"), "M2C_UNK8": (1, "s"), "M2C_UNK16": (2, "s"), "M2C_UNK32": (4, "s"), "M2C_UNK64": (8, "s"),
"void": (0, "v"),
}
# PsyQ layouts the SDK headers fix (include/psyq/*.h) — sizes only; used when a cast names them and for the MATRIX control
SDK_SIZES = {"MATRIX": 32, "SVECTOR": 8, "VECTOR": 16, "CVECTOR": 4, "DVECTOR": 4, "RECT": 8, "RECT32": 16,
"POLY_F3": 20, "POLY_F4": 24, "POLY_FT3": 32, "POLY_FT4": 40, "POLY_G3": 28, "POLY_G4": 36, "POLY_GT3": 40,
"POLY_GT4": 52, "LINE_F2": 16, "LINE_F3": 20, "LINE_F4": 24, "LINE_G2": 20, "LINE_G3": 28, "LINE_G4": 36,
"SPRT": 20, "SPRT_8": 16, "SPRT_16": 16, "TILE": 16, "TILE_1": 12, "TILE_8": 12, "TILE_16": 12,
"DR_TPAGE": 8, "DR_ENV": 64, "DRAWENV": 92, "DISPENV": 20, "TMD_PRIM": 60, "GsDOBJ2": 32, "GsCOORDINATE2": 80,
"GsRVIEW2": 36, "GsF_LIGHT": 16, "GsOT": 12, "GsOT_TAG": 4, "CdlLOC": 4, "CdlFILE": 20, "CdlFILTER": 4,
"CdlATV": 4, "CdlCB": 4}
from struct_layout import (SCALARS, SDK_SIZES, DEF_START, FWD_DECL, ATTR_RX, # noqa: E402,F401
_norm_type, scalar_of, _match_brace, _split_top, _split_declarators, _eval_dim,
parse_struct_body, Resolver, layout_hash, field_offsets, field_map, audit_definition)
def _norm_type(t):
t = re.sub(r"\b(const|volatile|register|extern|static)\b", "", t)
return re.sub(r"\s+", " ", t).strip()
def scalar_of(t):
"""(width, sign) for a scalar/pointer type text; None for an aggregate or unknown name."""
t = _norm_type(t)
if t.endswith("*"):
return (4, "p")
if t in SCALARS:
return SCALARS[t]
return None
# ----------------------------------------------------------------------------------------------------------------------
# the definitions: parse `struct/union … { … }` bodies and compute o32 layouts
# ----------------------------------------------------------------------------------------------------------------------
DEF_START = re.compile(r"(?<![\w.])(typedef\s+)?(struct|union|enum)\s*([A-Za-z_]\w*)?\s*(__attribute__\s*\(\([^)]*\)\)\s*)?\{")
FWD_DECL = re.compile(r"(?<![\w.])(struct|union|enum)\s+([A-Za-z_]\w*)\s*;")
ATTR_RX = re.compile(r"__attribute__\s*\(\(((?:[^()]|\([^()]*\))*)\)\)") # nested parens: aligned(4), packed
def _match_brace(text, open_idx):
depth = 0
i = open_idx
n = len(text)
while i < n:
c = text[i]
if c == "{":
depth += 1
elif c == "}":
depth -= 1
if depth == 0:
return i
i += 1
return -1
def _split_top(text, sep=";"):
"""Split on `sep` at brace/paren depth 0."""
out, depth, cur = [], 0, []
for c in text:
if c in "{(":
depth += 1
elif c in "})":
depth -= 1
if c == sep and depth == 0:
out.append("".join(cur))
cur = []
else:
cur.append(c)
if "".join(cur).strip():
out.append("".join(cur))
return out
def _split_declarators(decl):
"""`type a, *b, c[4]` -> (type, [(name, stars, dims, bits)])"""
parts = _split_top(decl, ",")
if not parts:
return None, []
first = parts[0].strip()
# bitfield? `s16 : 16` / `u8 x : 3`
mb = re.search(r":\s*(\d+)\s*$", first)
if mb:
left = first[:mb.start()].strip()
toks = left.split()
if len(toks) >= 2 and re.match(r"^[A-Za-z_]\w*$", toks[-1]) and toks[-1] not in SCALARS and toks[-2] not in ("struct", "union", "enum"):
return _norm_type(" ".join(toks[:-1])), [(toks[-1], 0, [], int(mb.group(1)))]
return _norm_type(left), [("", 0, [], int(mb.group(1)))]
# split the first part into type + declarator: the declarator is the trailing `*... name [dims]` or a function pointer
fp = re.match(r"^(.*?)\(\s*\*\s*([A-Za-z_]\w*)\s*\)\s*\(.*\)\s*((?:\[[^\]]*\])*)$", first)
decls = []
if fp:
base_type = "void *" # a function pointer is 4 bytes; the callee type is irrelevant to the layout
dims = re.findall(r"\[([^\]]*)\]", fp.group(3))
decls.append((fp.group(2), 1, dims, None))
for extra in parts[1:]:
e = extra.strip()
m2 = re.match(r"^(\**)\s*([A-Za-z_]\w*)\s*((?:\[[^\]]*\])*)$", e)
if m2:
decls.append((m2.group(2), len(m2.group(1)), re.findall(r"\[([^\]]*)\]", m2.group(3)), None))
return base_type, decls
m = re.match(r"^(.*?)\s*(\**)\s*([A-Za-z_]\w*)\s*((?:\[[^\]]*\])*)\s*$", first, re.S)
if not m:
return _norm_type(first), []
base_type = _norm_type(m.group(1))
decls.append((m.group(3), len(m.group(2)), re.findall(r"\[([^\]]*)\]", m.group(4)), None))
for extra in parts[1:]:
e = extra.strip()
m2 = re.match(r"^(\**)\s*([A-Za-z_]\w*)\s*((?:\[[^\]]*\])*)\s*(?::\s*(\d+))?$", e)
if m2:
decls.append((m2.group(2), len(m2.group(1)), re.findall(r"\[([^\]]*)\]", m2.group(3)),
int(m2.group(4)) if m2.group(4) else None))
return base_type, decls
def _eval_dim(d, consts):
d = d.strip()
if not d:
return None # flexible/unsized
try:
return int(eval(d, {"__builtins__": {}}, dict(consts))) # hex, sums, `0x20-0x10`, sizeof-free; the tree's dims are literals
except Exception:
return None
def parse_struct_body(body, consts=None):
"""Fields of one struct/union body text (the text between the braces). Nested definitions are parsed recursively.
Returns [dict(name, type, stars, dims, bits, nested)] in order."""
fields = []
consts = consts or {}
i, n = 0, len(body)
while i < n:
# a nested struct/union body?
m = DEF_START.search(body, i)
stmt_end = body.find(";", i)
if m and (stmt_end == -1 or m.start() < stmt_end):
close = _match_brace(body, m.end() - 1)
if close == -1:
break
inner = body[m.end():close]
# the declarators after the nested body up to `;`
j = body.find(";", close)
tail = body[close + 1:j if j != -1 else n]
nested = dict(kind=m.group(2), tag=m.group(3), fields=parse_struct_body(inner, consts) if m.group(2) != "enum" else [],
attrs=(m.group(4) or "") + " ".join(ATTR_RX.findall(tail)))
tail = ATTR_RX.sub("", tail).strip()
decls = []
if tail:
for part in _split_top(tail, ","):
e = part.strip()
m2 = re.match(r"^(\**)\s*([A-Za-z_]\w*)\s*((?:\[[^\]]*\])*)\s*(?::\s*(\d+))?$", e)
if m2:
decls.append((m2.group(2), len(m2.group(1)), re.findall(r"\[([^\]]*)\]", m2.group(3)),
int(m2.group(4)) if m2.group(4) else None))
if not decls:
decls = [("", 0, [], None)] # an anonymous member (a union inside a struct)
for (nm, stars, dims, bits) in decls:
fields.append(dict(name=nm, type=(m.group(2) + " " + (m.group(3) or "")).strip(), stars=stars,
dims=[_eval_dim(d, consts) for d in dims], bits=bits, nested=nested))
i = (j + 1) if j != -1 else n
continue
if stmt_end == -1:
break
stmt = body[i:stmt_end].strip()
i = stmt_end + 1
if not stmt:
continue
fattrs = " ".join(ATTR_RX.findall(stmt))
stmt = ATTR_RX.sub("", stmt)
base_type, decls = _split_declarators(stmt)
if base_type is None:
continue
for (nm, stars, dims, bits) in decls:
fields.append(dict(name=nm, type=base_type, stars=stars, dims=[_eval_dim(d, consts) for d in dims], bits=bits, nested=None,
attrs=fattrs or None))
return fields
class Resolver:
"""Type name -> (size, align, leaves) under the o32 ABI. Scope: a TU's own definitions first, then the shared headers, then the SDK."""
def __init__(self, defs_by_name):
self.defs = defs_by_name # name -> definition record (tag or typedef name)
self.cache = {}
self.stack = set()
def layout(self, type_text, stars=0, dims=(), bits=None):
"""(size, align, leaves) of one field's type; leaves = [(off, width, sign)]; None when unknown."""
if stars:
sz, al, leaves = 4, 4, [(0, 4, "p")]
else:
t = _norm_type(type_text)
sc_ = scalar_of(t)
if sc_:
w, s = sc_
if w == 0:
return None
sz, al, leaves = w, w, [(0, w, s)]
else:
r = self.resolve_name(t)
if r is None:
return None
sz, al, leaves = r
for d in reversed(list(dims)):
if d is None:
d = 0
leaves = [(k * sz + off, w, s) for k in range(d) for (off, w, s) in leaves]
sz = sz * d
return sz, al, leaves
def resolve_name(self, name):
name = _norm_type(name)
if name in self.cache:
return self.cache[name]
if name in self.stack:
return None
d = self.defs.get(name)
if d is None:
m = re.match(r"^(struct|union|enum)\s+(\w+)$", name)
if m and m.group(1) == "enum":
return (4, 4, [(0, 4, "s")])
if m and m.group(2) in self.defs and self.defs[m.group(2)].get("kind") == m.group(1):
d = self.defs[m.group(2)]
elif name in SDK_SIZES:
sz = SDK_SIZES[name]
r = (sz, 4, [(0, 4, "s")] * (sz // 4) if sz % 4 == 0 else [(0, sz, "b")])
self.cache[name] = r
return r
else:
return None
if d.get("kind") == "enum":
return (4, 4, [(0, 4, "s")])
if d.get("alias_of"): # `typedef T Name;` — a scalar/pointer alias or an alias of another aggregate
self.stack.add(name)
r = self.layout(d["alias_of"], d.get("alias_stars", 0), d.get("alias_dims", ()))
self.stack.discard(name)
self.cache[name] = r
return r
self.stack.add(name)
r = self.layout_of_fields(d["fields"], d["kind"], packed=("packed" in (d.get("attrs") or "")))
self.stack.discard(name)
self.cache[name] = r
return r
def layout_of_fields(self, fields, kind, packed=False):
off, maxal, leaves, size = 0, 1, [], 0
bit_off = 0
unknown = False
for f in fields:
if f.get("nested"):
nd = f["nested"]
r = self.layout_of_fields(nd["fields"], nd["kind"], packed=("packed" in (nd.get("attrs") or ""))) if nd["kind"] != "enum" else (4, 4, [(0, 4, "s")])
else:
r = self.layout(f["type"], f["stars"], f["dims"])
if r is None:
unknown = True
r = (0, 1, [])
fsz, fal, fleaves = r
if f.get("dims") and f["nested"]:
for d in reversed(f["dims"]):
d = d or 0
fleaves = [(k * fsz + o, w, s) for k in range(d) for (o, w, s) in fleaves]
fsz = fsz * d
fa = f.get("attrs") or ""
ma = re.search(r"aligned\s*\(\s*(\d+)\s*\)", fa)
if packed:
fal = 1
if ma:
fal = max(fal, int(ma.group(1)))
if f.get("bits") is not None:
# bitfields: pack into the base type's storage unit; an anonymous `s16 : 16` is a pad of the base width
w = fsz or 4
if bit_off == 0:
off = (off + fal - 1) // fal * fal
unit_off = off
self._unit = (unit_off, w)
unit_off, uw = self._unit
if bit_off + f["bits"] > uw * 8:
off = unit_off + uw
off = (off + fal - 1) // fal * fal
unit_off = off
self._unit = (unit_off, w)
bit_off = 0
if f["name"]:
leaves.append((unit_off, w, "bf"))
bit_off += f["bits"]
maxal = max(maxal, fal)
end = unit_off + w
if bit_off >= uw * 8:
bit_off = 0
off = end
else:
off = unit_off
size = max(size, end)
if kind == "union":
off = 0
continue
bit_off = 0
if kind == "union":
leaves.extend((0 + o, w, s) for (o, w, s) in fleaves)
size = max(size, fsz)
maxal = max(maxal, fal)
continue
off = (off + fal - 1) // fal * fal
leaves.extend((off + o, w, s) for (o, w, s) in fleaves)
off += fsz
size = max(size, off)
maxal = max(maxal, fal)
size = (size + maxal - 1) // maxal * maxal
if unknown:
return None
return size, maxal, sorted(set(leaves))
def layout_hash(lay):
if lay is None:
return None
size, al, leaves = lay
return hashlib.sha1(json.dumps([size, leaves]).encode()).hexdigest()[:12]
def find_definitions(masked, rel, span_of_line, line_of):
"""All struct/union/enum definitions and typedef aliases in one masked file. Records carry file, line, kind, tag, names, fields."""
@@ -1297,8 +988,9 @@ def spaces(tu_aliases):
return "main" if not als or "main" in als else als[0]
return space_of
def run_census(jobs, use_cache=True, out_dir=OUT_DIR_DEFAULT, want_sites=False):
t0 = time.time()
def walk_all(jobs, use_cache=True, out_dir=OUT_DIR_DEFAULT):
"""Every TU, shared header and include/ header walked (cached on (path, mtime, size, tool stamp)): returns dict(results{rel: walk},
tu_aliases, headers, inc, inc_tus, files). Shared with tools/restruct.py's rung D (the definitions index) — R33: one walk."""
aliases, dirs = sc.fleet_and_dirs()
tu_aliases, headers, orphans = lc.enumerate_files(aliases, dirs)
if orphans:
@@ -1331,6 +1023,13 @@ def run_census(jobs, use_cache=True, out_dir=OUT_DIR_DEFAULT, want_sites=False):
if use_cache:
cache_p.parent.mkdir(parents=True, exist_ok=True)
cache_p.write_text(json.dumps(new_cache))
return dict(results=results, tu_aliases=tu_aliases, headers=headers, inc=inc, inc_tus=inc_tus, files=files)
def run_census(jobs, use_cache=True, out_dir=OUT_DIR_DEFAULT, want_sites=False):
t0 = time.time()
w = walk_all(jobs, use_cache=use_cache, out_dir=out_dir)
results, tu_aliases, headers, inc, inc_tus, files = w["results"], w["tu_aliases"], w["headers"], w["inc"], w["inc_tus"], w["files"]
t_walk = time.time() - t0
space_of = spaces(tu_aliases)
# ---- shared bodies: fn -> header (one function fleet-wide)