Files
BFM-decomp/config/symbols.us.txt
T
Drew T af2f40d153 fix(phase-26a): A4/A5 — 193 unmatchable slices dissolved; the closeness oracle stops lying
R22 CLEAN-FLEET: make clean -> extract 136 -> build 136 -> check-all = 136 PASSED, 0 FAILED.
make audit-corpus: 0 PHANTOM + 0 TRUNCATED (was 193).

=== A4: a CORPUS defect the byte-gate could never have caught ===
config/symbols.us.txt:981 declared `listCdBuffer = 0x80180000` — a correct Phase-3 name for MAIN's
LIST.CD RAM buffer. But that address is OUTSIDE main's image and INSIDE the overlay slot, and every
overlay's splat config stacks symbols.us.txt. High RAM is REUSED: an address that is a buffer to main
is live CODE to an overlay. So splat saw a symbol boundary mid-code and, across 97 of 134 overlays:
  * CUT 97 REAL FUNCTIONS IN HALF (a head ending on a `lui`, no return), and
  * INVENTED 96 PHANTOM ONES      (a tail beginning by reading the assembler temp $at).
193 slices NOBODY COULD EVER MATCH — not "hard", not "a compiler wall": unmatchable by construction.
They sat in the harvest queue as ordinary work, so agents would burn on them forever and the failures
would be filed as intrinsic compiler residuals.

The phantom listCdBuffer.s in ov_SC01_005 literally begins:
    lw $ra, 0x10($sp) / addiu $sp, $sp, 0x18 / jr $ra
splat cut a function immediately before its EPILOGUE and called the epilogue a function.

AND IT HAD ALREADY CONTAMINATED REAL WORK: in ov_SC03_031 the cut landed where the epilogue was
exactly `jr $ra; nop`, so the Phase-26 x134 sweep innocently BANKED the phantom as
`void listCdBuffer(void) {}` — byte-correct, gate-green, entirely fictitious — while leaving
func_8017FFC4 permanently unmatchable. Removed.

WHY NO GATE CAUGHT IT, AND WHY THAT IS THE POINT: INCLUDE_ASM pastes the two .s halves back VERBATIM
in original order, so the image is byte-identical either way. The byte-gate was green the whole time
and always would have been. It is a perfect CORRECTNESS oracle and a NULL COVERAGE oracle. No
assertion added INSIDE it could ever have found this. What found it was a SECOND, INDEPENDENT oracle:
tools/sig_image.py derives boundaries from the ORIGINAL bytes without splat, and DISAGREED with the
corpus (58,524/58,621 agreement with spimdisasm; correct on all 97 disagreements).
  => When one oracle is structurally blind to a class of error, the answer is not a better assertion
     inside it. It is a SECOND ORACLE THAT CAN DISAGREE WITH IT.  (`make audit-corpus` is now that.)

THE RULE (the mirror of R13/R15, never written down): a symbol whose address falls inside ANOTHER
binary's vram window must never enter that binary's symbol stack.
FIX: config/symbols.us.ram.txt — main-scoped symbols outside main's image — stacked ONLY by
config/splat.us.exe.yaml. Main keeps the name it needs (10 %hi / 11 %lo refs; 143dbb89 byte-identical);
the overlays never see it. Exactly one symbol was in scope fleet-wide; the resident window was clean.

AND A REAL FUNCTION THE ACCIDENT WAS HIDING: in ov_SC01_084 / ov_SC02_041 / ov_SC03_094 / ov_SC06_008
there IS a genuine function at 0x80180000 (111 / 35 / 28 / 74 ins), reachable ONLY via a fn-pointer
table (.word func_80180000) and never by `jal` — so splat cannot find it and needs the boundary
DECLARED. listCdBuffer had been supplying it by luck. Now declared honestly, per-overlay, in
config/symbols.<ov>.txt — exactly where R13/R15 says an overlay-scoped symbol belongs.

=== A5: the closeness oracle every crack agent trusts was lying on 155 functions ===
masked_diff._reloc_kind() knew 26/HI16/LO16. An over-approximating sweep of every reloc objdump emits
across all 3,367 build objects found FOUR: R_MIPS_26, HI16, LO16 — and R_MIPS_PC16 (211). PC16 fell
through to a FULL-WORD compare, but the object holds an UNRESOLVED PLACEHOLDER in the branch
displacement, so that compare can NEVER succeed.
DECISIVE TEST (derived from the invariant, not from reading the regex): INCLUDE_ASM pastes the
ORIGINAL asm, so for every stub diff_object_s() MUST be 0. Measured, coverage-asserted:
    2,741 functions scored — old mask: 150 LIES;  PC16 masked: 4 LIES.
(The 4 survivors are the separate length-delta defect.) A phantom non-zero sends an agent to grind at
a wall that is not there, and the wasted attempt is then booked as a MATCHING failure, feeding
reserved_walls() and PERMANENTLY BLACKLISTING a function that was never broken.

=== NEW FINDING (found by cutting the R22 corner): a STALE OBJECT CAN PRODUCE A FALSE PASS ===
`.o <- .s` is not a dependency make can see: assembly arrives via INCLUDE_ASM, expanded to a `.include`
consumed by maspsx/as AFTER cpp, while -MMD tracks headers only. Re-extract, build incrementally, and
make links a STALE object. This is not merely slow — INCLUDE_ASM pastes the ORIGINAL bytes, so a stale
object still yields the original image: SHA1 GOES GREEN while the split just changed is never exercised.
A broken config change can be "verified" by an incremental build. Live proof: 8 of 136 binaries linked
stale objects here; they failed LOUDLY ONLY BY LUCK (the dead symbol was an undefined reference) — a
merely-different-but-valid split would have gone green on all 136.
R22/H3 already legislate this, and I broke them. But a rule that needs a human to remember it is not a
gate. FIX: `extract` now invalidates the objects that include what it just rewrote (main's are top-level,
so -maxdepth 1 — verified it cannot clobber the other 1,605 objects). Structural, not advisory.

R14 self-catch, recorded: my first A5 test passed `fn=` to diff_object_s(), which takes two args; the
TypeError was swallowed by my own `except Exception: continue` and it reported 0 scored / 0 lies. I
wrote the exact bug I was auditing, inside the test for it. Caught only because 0 looked wrong. The
test now asserts its own coverage.
2026-07-14 10:12:19 -06:00

1051 lines
60 KiB
Plaintext

// config/symbols.us.txt — USER_DEFINED symbols (seeded from the Ghidra export via
// tools/ghidra_scripts/ExportSymbols.java) — now HAND-CURATED as the splat build input.
// Re-running ExportSymbols OVERWRITES this file: re-apply the Phase-5 curations below after
// any re-export (tracked in phase-ends/CURRENT_PHASE.md) and mirror them into Ghidra (G6):
// - `2D_*` -> `gfx2D_*` (15 syms): a leading digit is an illegal as/C identifier.
// - `D_800629D4` added: a data label in the text->data boundary region that the boot code
// references but splat did not auto-label (keeps the all-asm link resolving; no bytes change).
// Durable text record of manual RE work (the .rep is gitignored).
// count=968
lzss_ringBuffer = 0x1F800000; // data
start = 0x80010000; // func
__do_global_dtors = 0x80010110; // func
main = 0x80010178; // func
GameModeDispatch = 0x80010B40; // func
DebugMenuHandler = 0x80011144; // func
LzssDecodeSector = 0x80018730; // func
LoaderInitFileTable = 0x8001971C; // func
LoaderResetReadState = 0x80019990; // func
CdReadRequest = 0x80019A24; // func
CdReadStateMachine = 0x80019AF8; // func
CdReadSectorReadyCB = 0x8001A338; // func
ResourceLoadStateMachine = 0x8001B3C4; // func
ResourceGetCdLoc = 0x8001B788; // func
SsGetMute = 0x8001BD80; // func
SsUtReverbOff = 0x800285AC; // func
SaveLoadRoutine = 0x8002B154; // func
CdQueueBusy = 0x80034B98; // func
StreamLoadStateMachine = 0x800363CC; // func
SPU_OBJ_DC = 0x8003A694; // func
SPU_OBJ_3AC = 0x8003A964; // func
SPU_OBJ_440 = 0x8003A9F8; // func
_spu_FiDMA = 0x8003AA18; // func
SPU_OBJ_510 = 0x8003AAC8; // func
_spu_Fr_ = 0x8003AAD8; // func
SPU_OBJ_7C0 = 0x8003AD78; // func
SPU_OBJ_848 = 0x8003AE00; // func
SPU_OBJ_8CC = 0x8003AE84; // func
_spu_Fr = 0x8003AE9C; // func
SPU_OBJ_98C = 0x8003AF44; // func
SPU_OBJ_A30 = 0x8003AFE8; // func
_spu_FgetRXXa = 0x8003AFF0; // func
SPU_OBJ_A6C = 0x8003B024; // func
_spu_FsetPCR = 0x8003B02C; // func
SPU_OBJ_AC4 = 0x8003B07C; // func
SPU_OBJ_B74 = 0x8003B12C; // func
S_SE_OBJ_5C = 0x8003B248; // func
S_SR_OBJ_B0 = 0x8003B330; // func
S_SR_OBJ_B4 = 0x8003B334; // func
_SpuIsInAllocateArea = 0x8003B350; // func
S_M_UTIL_OBJ_2C = 0x8003B37C; // func
S_M_UTIL_OBJ_78 = 0x8003B3C8; // func
S_M_UTIL_OBJ_B8 = 0x8003B408; // func
S_M_UTIL_OBJ_104 = 0x8003B454; // func
S_SRMP_OBJ_170 = 0x8003B5CC; // func
S_SRMP_OBJ_180 = 0x8003B5DC; // func
S_SRMP_OBJ_334 = 0x8003B790; // func
S_SRMP_OBJ_420 = 0x8003B87C; // func
S_SRMP_OBJ_444 = 0x8003B8A0; // func
S_SRMP_OBJ_4C4 = 0x8003B920; // func
S_RRWA_OBJ_40 = 0x8003BE64; // func
S_SAV_OBJ_38 = 0x8003BED0; // func
S_SAV_OBJ_114 = 0x8003BFAC; // func
S_SAV_OBJ_1E8 = 0x8003C080; // func
S_SAV_OBJ_1F8 = 0x8003C090; // func
S_CRWA_OBJ_9C = 0x8003C13C; // func
S_CRWA_OBJ_100 = 0x8003C1A0; // func
S_CRWA_OBJ_174 = 0x8003C214; // func
S_SK_OBJ_1EC = 0x8003C428; // func
S_SK_OBJ_1F4 = 0x8003C430; // func
S_STSA_OBJ_48 = 0x8003C4E0; // func
S_ITC_OBJ_88 = 0x8003C578; // func
S_ITC_OBJ_90 = 0x8003C580; // func
S_SCA_OBJ_5C = 0x8003C5F4; // func
S_SCA_OBJ_64 = 0x8003C5FC; // func
S_SCA_OBJ_6C = 0x8003C604; // func
S_SCA_OBJ_74 = 0x8003C60C; // func
S_SCA_OBJ_7C = 0x8003C614; // func
S_SCA_OBJ_84 = 0x8003C61C; // func
S_SCA_OBJ_8C = 0x8003C624; // func
S_SCA_OBJ_94 = 0x8003C62C; // func
S_SCA_OBJ_9C = 0x8003C634; // func
S_SCA_OBJ_CC = 0x8003C664; // func
S_SCA_OBJ_124 = 0x8003C6BC; // func
S_SCA_OBJ_12C = 0x8003C6C4; // func
S_SCA_OBJ_134 = 0x8003C6CC; // func
S_SCA_OBJ_13C = 0x8003C6D4; // func
S_SCA_OBJ_144 = 0x8003C6DC; // func
S_SCA_OBJ_14C = 0x8003C6E4; // func
S_SCA_OBJ_154 = 0x8003C6EC; // func
S_SCA_OBJ_15C = 0x8003C6F4; // func
S_SCA_OBJ_164 = 0x8003C6FC; // func
S_SCA_OBJ_194 = 0x8003C72C; // func
S_SCA_OBJ_288 = 0x8003C820; // func
S_SCA_OBJ_2DC = 0x8003C874; // func
S_SCA_OBJ_330 = 0x8003C8C8; // func
S_SCA_OBJ_384 = 0x8003C91C; // func
SR_SV_OBJ_1EC = 0x8003CB18; // func
SR_SV_OBJ_1F4 = 0x8003CB20; // func
SR_SV_OBJ_1FC = 0x8003CB28; // func
SR_SV_OBJ_204 = 0x8003CB30; // func
SR_SV_OBJ_20C = 0x8003CB38; // func
SR_SV_OBJ_214 = 0x8003CB40; // func
SR_SV_OBJ_21C = 0x8003CB48; // func
SR_SV_OBJ_224 = 0x8003CB50; // func
SR_SV_OBJ_22C = 0x8003CB58; // func
SR_SV_OBJ_25C = 0x8003CB88; // func
SR_SV_OBJ_2BC = 0x8003CBE8; // func
SR_SV_OBJ_2C4 = 0x8003CBF0; // func
SR_SV_OBJ_2CC = 0x8003CBF8; // func
SR_SV_OBJ_2D4 = 0x8003CC00; // func
SR_SV_OBJ_2DC = 0x8003CC08; // func
SR_SV_OBJ_2E4 = 0x8003CC10; // func
SR_SV_OBJ_2EC = 0x8003CC18; // func
SR_SV_OBJ_2F4 = 0x8003CC20; // func
SR_SV_OBJ_2FC = 0x8003CC28; // func
SR_SV_OBJ_32C = 0x8003CC58; // func
SR_SV_OBJ_3C0 = 0x8003CCEC; // func
SR_SV_OBJ_514 = 0x8003CE40; // func
SR_SV_OBJ_598 = 0x8003CEC4; // func
SR_SV_OBJ_608 = 0x8003CF34; // func
_spu_2pitch = 0x8003CF68; // func
S_N2P_OBJ_11C = 0x8003D084; // func
_spu_pitch2note = 0x8003D134; // func
S_N2P_OBJ_208 = 0x8003D170; // func
SR_GAKS_OBJ_B4 = 0x8003D310; // func
SR_GAKS_OBJ_C8 = 0x8003D324; // func
SpuGetAllKeysStatus = 0x8003D32C; // func
SR_GAKS_OBJ_140 = 0x8003D39C; // func
SsEnd = 0x8003D454; // func
SSEND_OBJ_A0 = 0x8003D4F4; // func
_SsStart = 0x8003D6E4; // func
SSSTART_OBJ_DC = 0x8003D7C0; // func
SSSTART_OBJ_18C = 0x8003D870; // func
SSSTART_OBJ_240 = 0x8003D924; // func
SSSTART_OBJ_248 = 0x8003D92C; // func
SSSTART_OBJ_250 = 0x8003D934; // func
SsStart = 0x8003D94C; // func
SsStart2 = 0x8003D96C; // func
_SsTrapIntrVSync = 0x8003D98C; // func
_SsSeqCalledTbyT_1per2 = 0x8003D9CC; // func
SSSTART_OBJ_328 = 0x8003DA0C; // func
SsSeqCalledTbyT = 0x8003DA1C; // func
_SsSndPause = 0x8003E248; // func
_SsSndPlay = 0x8003E2E4; // func
_SsSeqPlay = 0x8003E310; // func
MIDIREAD_OBJ_E4 = 0x8003E3F4; // func
MIDIREAD_OBJ_E8 = 0x8003E3F8; // func
_SsSeqGetEof = 0x8003E418; // func
MIDIREAD_OBJ_20C = 0x8003E51C; // func
MIDIREAD_OBJ_2DC = 0x8003E5EC; // func
MIDIREAD_OBJ_330 = 0x8003E640; // func
_SsGetSeqData = 0x8003E65C; // func
MIDIREAD_OBJ_600 = 0x8003E910; // func
MIDIREAD_OBJ_65C = 0x8003E96C; // func
MIDIREAD_OBJ_6AC = 0x8003E9BC; // func
MIDIREAD_OBJ_6BC = 0x8003E9CC; // func
MIDIREAD_OBJ_6C0 = 0x8003E9D0; // func
MIDIREAD_OBJ_6CC = 0x8003E9DC; // func
_SsReadDeltaValue = 0x8003EA04; // func
MIDITIME_OBJ_A8 = 0x8003EAAC; // func
_SsSndNextSep = 0x8003EAB4; // func
_SsSndReplay = 0x8003EBB0; // func
_SsSndTempo = 0x8003EEE4; // func
TEMPO_OBJ_128 = 0x8003F00C; // func
TEMPO_OBJ_134 = 0x8003F018; // func
TEMPO_OBJ_208 = 0x8003F0EC; // func
SsGetCurrentPoint = 0x8003F104; // func
UT_GVA_OBJ_224 = 0x8003F368; // func
UT_GVAD_OBJ_A0 = 0x8003F420; // func
SsUtKeyOnV = 0x8003F434; // func
UT_KEYV_OBJ_174 = 0x8003F5A8; // func
UT_KEYV_OBJ_180 = 0x8003F5B4; // func
UT_KEYV_OBJ_350 = 0x8003F784; // func
UT_KEYV_OBJ_360 = 0x8003F794; // func
SsUtKeyOffV = 0x8003F7C8; // func
UT_KEYV_OBJ_3FC = 0x8003F830; // func
_SsVmDoAllocate = 0x8003F840; // func
VM_ALOC2_OBJ_120 = 0x8003F960; // func
VM_INIT_OBJ_E4 = 0x8003FF20; // func
S_M_INIT_OBJ_4C = 0x80040198; // func
note2pitch = 0x800401E4; // func
VM_N2P_OBJ_BC = 0x800402A0; // func
note2pitch2 = 0x800402A8; // func
VM_N2P_OBJ_1B8 = 0x8004039C; // func
vmNoiseOn = 0x800403A4; // func
VM_NO1_OBJ_184 = 0x80040528; // func
VM_NO1_OBJ_1F4 = 0x80040598; // func
VM_NO1_OBJ_264 = 0x80040608; // func
VM_NO1_OBJ_28C = 0x80040630; // func
VM_NO1_OBJ_31C = 0x800406C0; // func
VM_NO1_OBJ_4A4 = 0x80040848; // func
VM_NOWOF_OBJ_38 = 0x800408A0; // func
_SsVmKeyOnNow = 0x80040938; // func
VM_NOWON_OBJ_1C0 = 0x80040AF8; // func
VM_NOWON_OBJ_230 = 0x80040B68; // func
VM_NOWON_OBJ_2A0 = 0x80040BD8; // func
VM_NOWON_OBJ_2C8 = 0x80040C00; // func
VM_NOWON_OBJ_3D4 = 0x80040D0C; // func
VM_NOWON_OBJ_44C = 0x80040D84; // func
VM_VSU_OBJ_BC = 0x800415A0; // func
S_M_F_OBJ_64 = 0x80041690; // func
S_M_INT_OBJ_50 = 0x800416F8; // func
S_M_INT_OBJ_C0 = 0x80041768; // func
S_M_INT_OBJ_278 = 0x80041920; // func
VS_VFB_OBJ_5C = 0x80041A0C; // func
SsVabOpenHead = 0x80041A20; // func
SsVabOpenHeadSticky = 0x80041A50; // func
VS_VH_OBJ_180 = 0x80041BA0; // func
VS_VH_OBJ_190 = 0x80041BB0; // func
VS_VH_OBJ_350 = 0x80041D70; // func
VS_VH_OBJ_364 = 0x80041D84; // func
VS_VH_OBJ_40C = 0x80041E2C; // func
VS_VH_OBJ_444 = 0x80041E64; // func
S_M_M_OBJ_54 = 0x80041EE0; // func
S_M_M_OBJ_12C = 0x80041FB8; // func
S_M_M_OBJ_2A8 = 0x80042134; // func
VS_VTBP_OBJ_13C = 0x80042290; // func
S_STM_OBJ_1C = 0x800422D0; // func
VSYNC_OBJ_84 = 0x80042420; // func
VSYNC_OBJ_130 = 0x800424CC; // func
VSYNC_OBJ_1D4 = 0x80042570; // func
StopCallback = 0x80042674; // func
RestartCallback = 0x800426A4; // func
GetIntrMask = 0x800426E4; // func
INTR_OBJ_428 = 0x800429A8; // func
INTR_OBJ_514 = 0x80042A94; // func
stopIntr = 0x80042B30; // func
restartIntr = 0x80042BDC; // func
INTR_OBJ_6D0 = 0x80042C50; // func
trapIntrVSync = 0x80042CE8; // func
setIntrVSync = 0x80042D60; // func
trapIntrDMA = 0x80042E08; // func
setIntrDMA = 0x80042F8C; // func
INTR_DMA_OBJ_274 = 0x8004302C; // func
StSetRing = 0x80043088; // func
TOC_OBJ_220 = 0x800432D8; // func
EVENT_OBJ_84 = 0x80043384; // func
def_cbsync = 0x80043398; // func
def_cbready = 0x800433C0; // func
def_cbread = 0x800433E8; // func
CdLastCom = 0x80043430; // func
SYS_OBJ_98 = 0x800434A8; // func
CdSetDebug = 0x800434DC; // func
CdComstr = 0x800434F4; // func
SYS_OBJ_110 = 0x80043520; // func
CdIntstr = 0x80043528; // func
SYS_OBJ_144 = 0x80043554; // func
SYS_OBJ_538 = 0x80043948; // func
BIOS_OBJ_64 = 0x80043C00; // func
BIOS_OBJ_26C = 0x80043E08; // func
BIOS_OBJ_36C = 0x80043F08; // func
BIOS_OBJ_3B8 = 0x80043F54; // func
BIOS_OBJ_43C = 0x80043FD8; // func
BIOS_OBJ_4C0 = 0x8004405C; // func
BIOS_OBJ_570 = 0x8004410C; // func
BIOS_OBJ_6B4 = 0x80044250; // func
BIOS_OBJ_6E4 = 0x80044280; // func
BIOS_OBJ_7DC = 0x80044378; // func
BIOS_OBJ_93C = 0x800444D8; // func
BIOS_OBJ_96C = 0x80044508; // func
BIOS_OBJ_AA4 = 0x80044640; // func
BIOS_OBJ_DAC = 0x80044948; // func
BIOS_OBJ_DDC = 0x80044978; // func
BIOS_OBJ_EC8 = 0x80044A64; // func
BIOS_OBJ_14A4 = 0x80045040; // func
CD_set_test_parmnum = 0x80045280; // func
callback = 0x80045290; // func
BIOS_OBJ_1728 = 0x800452C4; // func
ISO9660_OBJ_F8 = 0x8004546C; // func
ISO9660_OBJ_29C = 0x80045610; // func
ISO9660_OBJ_2A8 = 0x8004561C; // func
ISO9660_OBJ_5A4 = 0x80045918; // func
ISO9660_OBJ_650 = 0x800459C4; // func
ISO9660_OBJ_7F4 = 0x80045B68; // func
ISO9660_OBJ_810 = 0x80045B84; // func
ISO9660_OBJ_8F4 = 0x80045C68; // func
cb_read = 0x80045D00; // func
CDREAD_OBJ_A4 = 0x80045DA4; // func
CDREAD_OBJ_1A4 = 0x80045EA4; // func
cb_data = 0x80045FD0; // func
CDREAD_OBJ_5C0 = 0x800462C0; // func
CdReadBreak = 0x800462E0; // func
CDREAD_OBJ_6B8 = 0x800463B8; // func
CDREAD_OBJ_810 = 0x80046510; // func
CdRead2 = 0x8004657C; // func
CDREAD2_OBJ_50 = 0x800465CC; // func
StCdInterrupt2 = 0x80046610; // func
TYPE_OBJ_104 = 0x80046734; // func
TYPE_OBJ_178 = 0x800467A8; // func
TYPE_OBJ_254 = 0x80046884; // func
StClearRing = 0x8004689C; // func
DsSyncCallback = 0x80046980; // func
DsReadyCallback = 0x80046994; // func
DsDataCallback = 0x800469A8; // func
data_ready_callback = 0x800469CC; // func
StGetBackloc = 0x80046A5C; // func
C_004_OBJ_DC = 0x80046AA8; // func
StSetStream = 0x80046ABC; // func
StFreeRing = 0x80046B44; // func
C_007_OBJ_AC = 0x80046BF0; // func
init_ring_status = 0x80046BFC; // func
StGetNext = 0x80046C38; // func
StCdInterrupt = 0x80046D1C; // func
C_011_OBJ_270 = 0x80046F8C; // func
C_011_OBJ_3D0 = 0x800470EC; // func
C_011_OBJ_7BC = 0x800474D8; // func
C_011_OBJ_85C = 0x80047578; // func
C_011_OBJ_900 = 0x8004761C; // func
C_011_OBJ_960 = 0x8004767C; // func
mem2mem = 0x8004768C; // func
dma_execute = 0x800476C0; // func
C_011_OBJ_A30 = 0x8004774C; // func
C_011_OBJ_A90 = 0x800477AC; // func
GEO_00_OBJ_2C = 0x800478A8; // func
GEO_00_OBJ_C4 = 0x80047940; // func
GEO_01_OBJ_98 = 0x800479E0; // func
csqrt_1 = 0x800479E8; // func
COR_05_OBJ_130 = 0x80047B18; // func
COR_05_OBJ_134 = 0x80047B1C; // func
csqrt = 0x80047B3C; // func
COR_05_OBJ_1AC = 0x80047B94; // func
COR_05_OBJ_1D8 = 0x80047BC0; // func
catan = 0x80047BD8; // func
COR_06_OBJ_A4 = 0x80047C7C; // func
func_80047CAC = 0x80047CAC; // data, 8B inter-fn const blob (spimdisasm auto-detect unstable here, declared for reproducible byte-identity per R15)
InvSquareRoot = 0x80047DCC; // func
VectorNormal = 0x80047E6C; // func
VectorNormalSS = 0x80047E98; // func
MatrixNormal = 0x80047F84; // func
gteMIMefunc = 0x8004806C; // func
SquareRoot12 = 0x800480EC; // func
MulMatrix0 = 0x8004818C; // func
MulRotMatrix = 0x8004829C; // func
CompMatrix = 0x8004838C; // func
ApplyRotMatrix = 0x8004864C; // func
PushMatrix = 0x8004867C; // func
PopMatrix = 0x8004871C; // func
ReadRotMatrix = 0x800487BC; // func
SetMulMatrix = 0x8004880C; // func
CompMatrixLV = 0x8004891C; // func
ApplyRotMatrixLV = 0x80048B6C; // func
SetMulRotMatrix = 0x80048CAC; // func
ApplyMatrixSV = 0x80048FBC; // func
ReadGeomOffset = 0x800491CC; // func
LightColor = 0x8004924C; // func
DpqColorLight = 0x80049274; // func
DpqColor3 = 0x8004929C; // func
Intpl = 0x800492D8; // func
Square12 = 0x800492FC; // func
Square0 = 0x80049324; // func
AverageZ3 = 0x8004934C; // func
AverageZ4 = 0x8004936C; // func
OuterProduct12 = 0x80049390; // func
OuterProduct0 = 0x800493E8; // func
RotTransSV = 0x8004945C; // func
SquareSS12 = 0x8004948C; // func
SquareSS0 = 0x800494C4; // func
SquareSL12 = 0x800494FC; // func
SquareSL0 = 0x8004952C; // func
RotTransPers = 0x8004955C; // func
RotTransPers3 = 0x8004958C; // func
RotTransPers4 = 0x8004961C; // func
RotNclip4 = 0x8004969C; // func
FGO_01_OBJ_64 = 0x800497F0; // func
FGO_01_OBJ_CC = 0x80049858; // func
FGO_01_OBJ_160 = 0x800498EC; // func
RotMatrixYXZ = 0x80049A1C; // func
FGO_02_OBJ_68 = 0x80049A84; // func
FGO_02_OBJ_CC = 0x80049AE8; // func
FGO_02_OBJ_160 = 0x80049B7C; // func
FGO_03_OBJ_64 = 0x80049D10; // func
FGO_03_OBJ_CC = 0x80049D78; // func
FGO_03_OBJ_160 = 0x80049E0C; // func
RotMatrixX = 0x80049F3C; // func
FGO_04_OBJ_64 = 0x80049FA0; // func
RotMatrixY = 0x8004A0DC; // func
FGO_05_OBJ_64 = 0x8004A140; // func
RotMatrixZ = 0x8004A27C; // func
FGO_06_OBJ_64 = 0x8004A2E0; // func
GsPrstNF3 = 0x8004A41C; // func
GsPrstF3NL = 0x8004A53C; // func
GsPrstF3L = 0x8004A660; // func
GsPrstF3LFG = 0x8004A794; // func
GsPrstNF4 = 0x8004A8CC; // func
GsPrstF4NL = 0x8004AA18; // func
GsPrstF4L = 0x8004AB68; // func
GsPrstF4LFG = 0x8004ACCC; // func
GsPrstNG3 = 0x8004AE3C; // func
GsPrstG3NL = 0x8004AF5C; // func
GsPrstG3L = 0x8004B078; // func
GsPrstG3LFG = 0x8004B1F8; // func
GsPrstNG4 = 0x8004B37C; // func
GsPrstG4NL = 0x8004B4C8; // func
GsPrstG4L = 0x8004B614; // func
GsPrstG4LFG = 0x8004B7E0; // func
GsPrstTNF3 = 0x8004B9AC; // func
GsPrstTF3NL = 0x8004BACC; // func
GsPrstTF3L = 0x8004BBF0; // func
GsPrstTF3LFG = 0x8004BD38; // func
GsPrstTNF4 = 0x8004BE8C; // func
GsPrstTF4NL = 0x8004BFD8; // func
GsPrstTF4L = 0x8004C128; // func
GsPrstTF4LFG = 0x8004C2A0; // func
GsPrstTNG3 = 0x8004C41C; // func
GsPrstTG3NL = 0x8004C53C; // func
GsPrstTG3L = 0x8004C658; // func
GsPrstTG3LFG = 0x8004C7EC; // func
GsPrstTNG4 = 0x8004C98C; // func
GsPrstTG4NL = 0x8004CAD8; // func
GsPrstTG4L = 0x8004CC24; // func
GsPrstTG4LFG = 0x8004CE04; // func
ratan2 = 0x8004CFEC; // func
RATAN_OBJ_BC = 0x8004D0A8; // func
RATAN_OBJ_148 = 0x8004D134; // func
RATAN_OBJ_15C = 0x8004D148; // func
RATAN_OBJ_178 = 0x8004D164; // func
TransRot_32 = 0x8004D20C; // func
TransRotPers = 0x8004D3AC; // func
TransRotPers3 = 0x8004D420; // func
ApplyTransposeMatrixLV = 0x8004D504; // func
GsTMDfastNF3 = 0x8004D6BC; // func
GsTMDfastF3NL = 0x8004D7F8; // func
GsTMDfastF3L = 0x8004D938; // func
GsTMDfastF3LFG = 0x8004DA80; // func
GsTMDfastNF4 = 0x8004DBCC; // func
GsTMDfastF4NL = 0x8004DD34; // func
GsTMDfastF4L = 0x8004DEA0; // func
GsTMDfastF4LFG = 0x8004E018; // func
GsTMDfastNG3 = 0x8004E19C; // func
GsTMDfastG3NL = 0x8004E2E4; // func
GsTMDfastG3L = 0x8004E424; // func
GsTMDfastG3LFG = 0x8004E5B4; // func
GsTMDfastNG4 = 0x8004E74C; // func
GsTMDfastG4NL = 0x8004E8CC; // func
GsTMDfastG4L = 0x8004EA40; // func
GsTMDfastG4LFG = 0x8004EC20; // func
GsTMDfastTNF3 = 0x8004EE0C; // func
GsTMDfastTF3NL = 0x8004EF78; // func
GsTMDfastTF3L = 0x8004F0DC; // func
GsTMDfastTF3LFG = 0x8004F24C; // func
GsTMDfastTNF4 = 0x8004F3BC; // func
GsTMDfastTF4NL = 0x8004F55C; // func
GsTMDfastTF4L = 0x8004F6F8; // func
GsTMDfastTF4LFG = 0x8004F8A4; // func
GsTMDfastTNG3 = 0x8004FA5C; // func
GsTMDfastTG3NL = 0x8004FBD4; // func
GsTMDfastTG3L = 0x8004FD30; // func
GsTMDfastTG3LFG = 0x8004FEE4; // func
GsTMDfastTNG4 = 0x8005009C; // func
GsTMDfastTG4NL = 0x80050258; // func
GsTMDfastTG4L = 0x800503F0; // func
GsTMDfastTG4LFG = 0x800505FC; // func
GsSortBg = 0x8005080C; // func
gfx2D_BG0_OBJ_1B4 = 0x800509C0; // func
gfx2D_BG0_OBJ_4A0 = 0x80050CAC; // func
gfx2D_BG0_OBJ_4D8 = 0x80050CE4; // func
gfx2D_BG0_OBJ_658 = 0x80050E64; // func
gfx2D_BG0_OBJ_698 = 0x80050EA4; // func
GsSortFastBg = 0x80051044; // func
gfx2D_BG1_OBJ_648 = 0x8005168C; // func
_mk_spr_packet = 0x80051804; // func
gfx2D_COM0_OBJ_30 = 0x80051834; // func
_mk_xpndsp = 0x80051844; // func
gfx2D_COM0_OBJ_EC = 0x800518F0; // func
gfx2D_COM0_OBJ_154 = 0x80051958; // func
_mk_normsp = 0x80051B0C; // func
gfx2D_COM0_OBJ_39C = 0x80051BA0; // func
gfx2D_COM0_OBJ_400 = 0x80051C04; // func
ApplyMatrix = 0x80051D78; // func
GsSortLine = 0x80051DC8; // func
_make_packet = 0x80051EA0; // func
GsSortSprite = 0x80051F34; // func
gfx2D_SP0_OBJ_240 = 0x80052174; // func
gfx2D_SP0_OBJ_388 = 0x800522BC; // func
gfx2D_SP0_OBJ_3C8 = 0x800522FC; // func
gfx2D_SP0_OBJ_4C0 = 0x800523F4; // func
GsInitGraph2 = 0x800527C4; // func
GsSortClear = 0x80052AA0; // func
GS_001_OBJ_5D0 = 0x80052BAC; // func
GsGetActiveBuff = 0x80052BDC; // func
GS_002_OBJ_10C = 0x80052CE8; // func
GsInitCoord2param = 0x80052E0C; // func
GsSetLightMatrix = 0x80052E68; // func
GsMulCoord0 = 0x80052F38; // func
GsMulCoord2 = 0x80052FCC; // func libgs MATRIX.o, verified via the PsyQ object, declared to stabilize the 800b split (Ghidra-mirror pending, R15)
GsMulCoord3 = 0x80053050; // func libgs MATRIX.o, verified via the PsyQ object, declared to stabilize the 800b split (Ghidra-mirror pending, R15)
print_matrix = 0x800530D4; // func
print_vector = 0x80053144; // func
GsMapModelingData = 0x80053290; // func
GS_107_OBJ_464 = 0x8005378C; // func
GS_107_OBJ_4B8 = 0x800537E0; // func
GS_108_OBJ_6C = 0x80053958; // func
GS_108_OBJ_7C = 0x80053968; // func
GsSetFogParam = 0x80053978; // func
SetVertex0 = 0x800539C8; // func
SetVertex1 = 0x800539D8; // func
SetVertex2 = 0x800539E8; // func
SetVertexTri = 0x800539F8; // func
SetRGBfifo = 0x80053A18; // func
SetIR123 = 0x80053A2C; // func
SetIR0 = 0x80053A40; // func
SetSZfifo3 = 0x80053A4C; // func
SetSZfifo4 = 0x80053A60; // func
SetSXSYfifo = 0x80053A78; // func
SetRii = 0x80053A8C; // func
SetMAC123 = 0x80053AA0; // func
SetData32 = 0x80053AB4; // func
SetDQA = 0x80053AC0; // func
SetDQB = 0x80053ACC; // func
gte_scale_matrix = 0x80053BD8; // func
GS_122_OBJ_DC = 0x80053E20; // func
GS_123_OBJ_78 = 0x80053EA0; // func
GS_123_OBJ_90 = 0x80053EB8; // func
GS_123_OBJ_A8 = 0x80053ED0; // func
GS_123_OBJ_BC = 0x80053EE4; // func
GS_131_OBJ_4A4 = 0x80054410; // func
GS_133_OBJ_30 = 0x80054544; // func
GS_133_OBJ_224 = 0x80054738; // func
GS_134_OBJ_30 = 0x80054808; // func
GS_134_OBJ_224 = 0x800549FC; // func
GS_135_OBJ_38 = 0x80054AE4; // func
GS_135_OBJ_22C = 0x80054CD8; // func
GsSetRefView2L = 0x80054DCC; // func
GS_137_OBJ_1B8 = 0x80054F84; // func
GS_137_OBJ_274 = 0x80055040; // func
GS_137_OBJ_39C = 0x80055168; // func
GS_137_OBJ_488 = 0x80055254; // func
GS_137_OBJ_48C = 0x80055258; // func
GS_137_OBJ_5EC = 0x800553B8; // func
GsLinkObject5 = 0x800553D8; // func
GsPresetObject = 0x800553F4; // func
PRESET_OBJ_108 = 0x800554E0; // func
PRESET_OBJ_14C = 0x80055524; // func
PRESET_OBJ_1A8 = 0x80055580; // func
PRESET_OBJ_1CC = 0x800555A4; // func
PRESET_OBJ_244 = 0x8005561C; // func
PRESET_OBJ_2E8 = 0x800556C0; // func
PRESET_OBJ_380 = 0x80055758; // func
PRESET_OBJ_39C = 0x80055774; // func
PRESET_OBJ_3B4 = 0x8005578C; // func
PRESET_OBJ_3C0 = 0x80055798; // func
PRESET_OBJ_450 = 0x80055828; // func
PRESET_OBJ_4B4 = 0x8005588C; // func
PRESET_OBJ_574 = 0x8005594C; // func
PRESET_OBJ_5C0 = 0x80055998; // func
PRESET_OBJ_63C = 0x80055A14; // func
PRESET_OBJ_6E8 = 0x80055AC0; // func
PRESET_OBJ_744 = 0x80055B1C; // func
PRESET_OBJ_748 = 0x80055B20; // func
PRESET_OBJ_754 = 0x80055B2C; // func
PRESET_OBJ_7E8 = 0x80055BC0; // func
PRESET_OBJ_8C0 = 0x80055C98; // func
PRESET_OBJ_8CC = 0x80055CA4; // func
PRESET_OBJ_8FC = 0x80055CD4; // func
PRESET2_OBJ_D0 = 0x80055E10; // func
PRESET2_OBJ_13C = 0x80055E7C; // func
PRESET2_OBJ_16C = 0x80055EAC; // func
PRESET2_OBJ_1A0 = 0x80055EE0; // func
PRESET2_OBJ_210 = 0x80055F50; // func
PRESET2_OBJ_254 = 0x80055F94; // func
PRESET2_OBJ_2E0 = 0x80056020; // func
PRESET2_OBJ_33C = 0x8005607C; // func
PRESET2_OBJ_39C = 0x800560DC; // func
PRESET2_OBJ_3E0 = 0x80056120; // func
PRESET2_OBJ_424 = 0x80056164; // func
PRESET2_OBJ_484 = 0x800561C4; // func
PRESET2_OBJ_4B0 = 0x800561F0; // func
PRESET2_OBJ_4D8 = 0x80056218; // func
PRESET2_OBJ_4DC = 0x8005621C; // func
PRESET2_OBJ_4FC = 0x8005623C; // func
PRESET2_OBJ_528 = 0x80056268; // func
PRESET2_OBJ_540 = 0x80056280; // func
PRESET2_OBJ_550 = 0x80056290; // func
PRESET2_OBJ_598 = 0x800562D8; // func
PRESET2_OBJ_5E4 = 0x80056324; // func
PRESET2_OBJ_62C = 0x8005636C; // func
PRESET2_OBJ_658 = 0x80056398; // func
PRESET2_OBJ_678 = 0x800563B8; // func
PRESET2_OBJ_6C4 = 0x80056404; // func
PRESET2_OBJ_6C8 = 0x80056408; // func
PRESET2_OBJ_6D4 = 0x80056414; // func
PRESET2_OBJ_6E4 = 0x80056424; // func
PRESET2_OBJ_738 = 0x80056478; // func
PRESET2_OBJ_76C = 0x800564AC; // func
PRESET2_OBJ_7F4 = 0x80056534; // func
PRESET2_OBJ_838 = 0x80056578; // func
PRESET2_OBJ_8D4 = 0x80056614; // func
PRESET2_OBJ_91C = 0x8005665C; // func
PRESET2_OBJ_96C = 0x800566AC; // func
PRESET2_OBJ_9B0 = 0x800566F0; // func
PRESET2_OBJ_9F4 = 0x80056734; // func
PRESET2_OBJ_A44 = 0x80056784; // func
PRESET2_OBJ_A68 = 0x800567A8; // func
PRESET2_OBJ_A88 = 0x800567C8; // func
PRESET2_OBJ_A94 = 0x800567D4; // func
PRESET2_OBJ_AA8 = 0x800567E8; // func
PRESET2_OBJ_AD4 = 0x80056814; // func
PRESET2_OBJ_AF0 = 0x80056830; // func
PRESET2_OBJ_B28 = 0x80056868; // func
PRESET2_OBJ_B68 = 0x800568A8; // func
PRESET2_OBJ_BA0 = 0x800568E0; // func
PRESET2_OBJ_BCC = 0x8005690C; // func
PRESET2_OBJ_BE0 = 0x80056920; // func
PRESET2_OBJ_C20 = 0x80056960; // func
PRESET2_OBJ_C24 = 0x80056964; // func
PRESET2_OBJ_C30 = 0x80056970; // func
PRESET2_OBJ_C40 = 0x80056980; // func
PRESET2_OBJ_CB4 = 0x800569F4; // func
PRESET2_OBJ_D3C = 0x80056A7C; // func
PRESET2_OBJ_D80 = 0x80056AC0; // func
PRESET2_OBJ_E1C = 0x80056B5C; // func
PRESET2_OBJ_E64 = 0x80056BA4; // func
PRESET2_OBJ_EB4 = 0x80056BF4; // func
PRESET2_OBJ_EF8 = 0x80056C38; // func
PRESET2_OBJ_F3C = 0x80056C7C; // func
PRESET2_OBJ_F8C = 0x80056CCC; // func
PRESET2_OBJ_FB4 = 0x80056CF4; // func
PRESET2_OBJ_FD8 = 0x80056D18; // func
PRESET2_OBJ_FE0 = 0x80056D20; // func
PRESET2_OBJ_FF4 = 0x80056D34; // func
PRESET2_OBJ_1020 = 0x80056D60; // func
PRESET2_OBJ_103C = 0x80056D7C; // func
PRESET2_OBJ_1074 = 0x80056DB4; // func
PRESET2_OBJ_10B4 = 0x80056DF4; // func
PRESET2_OBJ_10EC = 0x80056E2C; // func
PRESET2_OBJ_1118 = 0x80056E58; // func
PRESET2_OBJ_112C = 0x80056E6C; // func
PRESET2_OBJ_116C = 0x80056EAC; // func
PRESET2_OBJ_1170 = 0x80056EB0; // func
PRESET2_OBJ_117C = 0x80056EBC; // func
PRESET2_OBJ_118C = 0x80056ECC; // func
OBJT_OBJ_C4 = 0x80056FDC; // func
OBJT_OBJ_D0 = 0x80056FE8; // func
OBJT_OBJ_D8 = 0x80056FF0; // func
OBJT_OBJ_E4 = 0x80056FFC; // func
OBJT_OBJ_EC = 0x80057004; // func
OBJT_OBJ_F8 = 0x80057010; // func
OBJT_OBJ_108 = 0x80057020; // func
OBJT_OBJ_110 = 0x80057028; // func
OBJT_OBJ_118 = 0x80057030; // func
OBJT_OBJ_124 = 0x8005703C; // func
OBJT_OBJ_12C = 0x80057044; // func
OBJT_OBJ_13C = 0x80057054; // func
OBJT2_OBJ_E0 = 0x80057174; // func
OBJT2_OBJ_14C = 0x800571E0; // func
OBJT2_OBJ_1C4 = 0x80057258; // func
OBJT2_OBJ_248 = 0x800572DC; // func
OBJT2_OBJ_28C = 0x80057320; // func
OBJT2_OBJ_358 = 0x800573EC; // func
OBJT2_OBJ_3BC = 0x80057450; // func
OBJT2_OBJ_468 = 0x800574FC; // func
OBJT2_OBJ_4AC = 0x80057540; // func
OBJT2_OBJ_558 = 0x800575EC; // func
OBJT2_OBJ_5C0 = 0x80057654; // func
OBJT2_OBJ_5EC = 0x80057680; // func
OBJT2_OBJ_614 = 0x800576A8; // func
OBJT2_OBJ_618 = 0x800576AC; // func
OBJT2_OBJ_640 = 0x800576D4; // func
OBJT2_OBJ_66C = 0x80057700; // func
OBJT2_OBJ_69C = 0x80057730; // func
OBJT2_OBJ_6EC = 0x80057780; // func
OBJT2_OBJ_740 = 0x800577D4; // func
OBJT2_OBJ_790 = 0x80057824; // func
OBJT2_OBJ_7BC = 0x80057850; // func
OBJT2_OBJ_7E4 = 0x80057878; // func
OBJT2_OBJ_838 = 0x800578CC; // func
OBJT2_OBJ_83C = 0x800578D0; // func
OBJT2_OBJ_848 = 0x800578DC; // func
OBJT2_OBJ_858 = 0x800578EC; // func
GsTMDfastG3GL = 0x80057928; // func
GsTMDfastG3GNL = 0x80057B14; // func
GsTMDfastF3GL = 0x80057C7C; // func
GsTMDfastF3GNL = 0x80057E80; // func
GsTMDfastF4GL = 0x80057FFC; // func
GsTMDfastF4GNL = 0x80058284; // func
GsTMDfastG4GL = 0x8005845C; // func
GsTMDfastG4GNL = 0x800586CC; // func
EXT_OBJ_A8 = 0x80058938; // func
EXT_OBJ_AC = 0x8005893C; // func
LoadClut = 0x8005897C; // func
LoadClut2 = 0x800589E4; // func
EXT_OBJ_234 = 0x80058AC4; // func
GetClut = 0x80058B7C; // func
DumpTPage = 0x80058B94; // func
DumpClut = 0x80058BF4; // func
NextPrim = 0x80058C34; // func
IsEndPrim = 0x80058C50; // func
AddPrim = 0x80058C6C; // func
AddPrims = 0x80058CA8; // func
TermPrim = 0x80058D08; // func
SetSemiTrans = 0x80058D20; // func
PRIM_OBJ_200 = 0x80058D40; // func
SetShadeTex = 0x80058D48; // func
PRIM_OBJ_228 = 0x80058D68; // func
SetPolyF3 = 0x80058D70; // func
SetPolyFT3 = 0x80058D84; // func
SetPolyG3 = 0x80058D98; // func
SetPolyGT3 = 0x80058DAC; // func
SetPolyF4 = 0x80058DC0; // func
SetPolyFT4 = 0x80058DD4; // func
SetPolyG4 = 0x80058DE8; // func
SetPolyGT4 = 0x80058DFC; // func
SetSprt8 = 0x80058E10; // func
SetSprt16 = 0x80058E24; // func
SetSprt = 0x80058E38; // func
SetTile1 = 0x80058E4C; // func
SetTile8 = 0x80058E60; // func
SetTile16 = 0x80058E74; // func
SetTile = 0x80058E88; // func
SetLineF2 = 0x80058E9C; // func
SetLineG2 = 0x80058EB0; // func
SetLineF3 = 0x80058EC4; // func
SetLineG3 = 0x80058EE4; // func
SetLineF4 = 0x80058F04; // func
SetLineG4 = 0x80058F24; // func
SetDrawTPage = 0x80058F44; // func
SetDrawMove = 0x80058F70; // func
SetDrawLoad = 0x80058FD0; // func
MargePrim = 0x8005903C; // func
PRIM_OBJ_52C = 0x8005906C; // func
DumpDrawEnv = 0x80059074; // func
DumpDispEnv = 0x80059188; // func
SYS_OBJ_11C = 0x80059350; // func
SYS_OBJ_16C = 0x800593A0; // func
SetGraphReverse = 0x800593B8; // func
SYS_OBJ_210 = 0x80059444; // func
SetGraphQueue = 0x80059530; // func
GetGraphType = 0x800595DC; // func
GetGraphDebug = 0x800595EC; // func
SYS_OBJ_604 = 0x80059838; // func
SYS_OBJ_640 = 0x80059874; // func
ClearImage2 = 0x8005991C; // func
StoreImage = 0x80059A1C; // func
MoveImage = 0x80059A80; // func
SYS_OBJ_8F4 = 0x80059B28; // func
ClearOTag = 0x80059B44; // func
DrawPrim = 0x80059C94; // func
DrawOTagEnv = 0x80059E6C; // func
GetDrawEnv = 0x80059F88; // func
SYS_OBJ_E34 = 0x8005A068; // func
SYS_OBJ_F00 = 0x8005A134; // func
SYS_OBJ_F24 = 0x8005A158; // func
SYS_OBJ_F58 = 0x8005A18C; // func
SYS_OBJ_FD8 = 0x8005A20C; // func
SYS_OBJ_1034 = 0x8005A268; // func
SYS_OBJ_11C0 = 0x8005A3F4; // func
GetDispEnv = 0x8005A468; // func
GetODE = 0x8005A4A0; // func
SetTexWindow = 0x8005A4D0; // func
SetDrawArea = 0x8005A50C; // func
SetDrawOffset = 0x8005A590; // func
SetPriority = 0x8005A5D4; // func
SetDrawEnv = 0x8005A658; // func
SYS_OBJ_1578 = 0x8005A7AC; // func
SYS_OBJ_1790 = 0x8005A9C4; // func
SYS_OBJ_18AC = 0x8005AAE0; // func
SYS_OBJ_191C = 0x8005AB50; // func
SYS_OBJ_1964 = 0x8005AB98; // func
SYS_OBJ_19A4 = 0x8005ABD8; // func
SYS_OBJ_19D8 = 0x8005AC0C; // func
SYS_OBJ_1A30 = 0x8005AC64; // func
SYS_OBJ_1A70 = 0x8005ACA4; // func
SYS_OBJ_1AA4 = 0x8005ACD8; // func
SYS_OBJ_1AF0 = 0x8005AD24; // func
SYS_OBJ_1B78 = 0x8005ADAC; // func
SYS_OBJ_1BC4 = 0x8005ADF8; // func
SYS_OBJ_1C28 = 0x8005AE5C; // func
SYS_OBJ_1C2C = 0x8005AE60; // func
_status = 0x8005AE68; // func
_clr = 0x8005AF68; // func
SYS_OBJ_1D84 = 0x8005AFB8; // func
SYS_OBJ_1DC0 = 0x8005AFF4; // func
SYS_OBJ_1F64 = 0x8005B198; // func
_dws = 0x8005B1C4; // func
SYS_OBJ_1FF4 = 0x8005B228; // func
SYS_OBJ_202C = 0x8005B260; // func
SYS_OBJ_21A4 = 0x8005B3D8; // func
_drs = 0x8005B400; // func
SYS_OBJ_222C = 0x8005B460; // func
SYS_OBJ_2264 = 0x8005B498; // func
SYS_OBJ_242C = 0x8005B660; // func
_getctl = 0x8005B6AC; // func
_cwb = 0x8005B6C0; // func
_addque = 0x8005B78C; // func
SYS_OBJ_25C8 = 0x8005B7FC; // func
SYS_OBJ_26EC = 0x8005B920; // func
SYS_OBJ_27A8 = 0x8005B9DC; // func
SYS_OBJ_283C = 0x8005BA70; // func
SYS_OBJ_2C6C = 0x8005BEA0; // func
SYS_OBJ_2CC4 = 0x8005BEF8; // func
SYS_OBJ_2CDC = 0x8005BF10; // func
SYS_OBJ_2DD8 = 0x8005C00C; // func
SYS_OBJ_2F7C = 0x8005C1B0; // func
SYS_OBJ_3060 = 0x8005C294; // func
BZERO_OBJ_28 = 0x8005C2F0; // func
getchar = 0x8005C2F8; // func
MEMSET_OBJ_28 = 0x8005C380; // func
PUTCHAR_OBJ_3C = 0x8005C3C4; // func
PUTCHAR_OBJ_98 = 0x8005C420; // func
toupper = 0x8005C43C; // func
tolower = 0x8005C46C; // func
rand = 0x8005C49C; // func
STRCMP_OBJ_5C = 0x8005C538; // func
strcpy = 0x8005C540; // func
STRNCMP_OBJ_78 = 0x8005C5FC; // func
PRNT_OBJ_50 = 0x8005C690; // func
PRNT_OBJ_60 = 0x8005C6A0; // func
PRNT_OBJ_88 = 0x8005C6C8; // func
PRNT_OBJ_B8 = 0x8005C6F8; // func
PRNT_OBJ_C8 = 0x8005C708; // func
PRNT_OBJ_D0 = 0x8005C710; // func
PRNT_OBJ_EC = 0x8005C72C; // func
PRNT_OBJ_F4 = 0x8005C734; // func
PRNT_OBJ_FC = 0x8005C73C; // func
PRNT_OBJ_178 = 0x8005C7B8; // func
PRNT_OBJ_188 = 0x8005C7C8; // func
PRNT_OBJ_190 = 0x8005C7D0; // func
PRNT_OBJ_1E8 = 0x8005C828; // func
PRNT_OBJ_1F0 = 0x8005C830; // func
PRNT_OBJ_1F8 = 0x8005C838; // func
PRNT_OBJ_200 = 0x8005C840; // func
PRNT_OBJ_21C = 0x8005C85C; // func
PRNT_OBJ_220 = 0x8005C860; // func
PRNT_OBJ_24C = 0x8005C88C; // func
PRNT_OBJ_264 = 0x8005C8A4; // func
PRNT_OBJ_2A0 = 0x8005C8E0; // func
PRNT_OBJ_2A4 = 0x8005C8E4; // func
PRNT_OBJ_2D8 = 0x8005C918; // func
PRNT_OBJ_2E8 = 0x8005C928; // func
PRNT_OBJ_340 = 0x8005C980; // func
PRNT_OBJ_348 = 0x8005C988; // func
PRNT_OBJ_34C = 0x8005C98C; // func
PRNT_OBJ_380 = 0x8005C9C0; // func
PRNT_OBJ_38C = 0x8005C9CC; // func
PRNT_OBJ_3BC = 0x8005C9FC; // func
PRNT_OBJ_3D0 = 0x8005CA10; // func
PRNT_OBJ_3D4 = 0x8005CA14; // func
PRNT_OBJ_470 = 0x8005CAB0; // func
PRNT_OBJ_590 = 0x8005CBD0; // func
PRNT_OBJ_634 = 0x8005CC74; // func
PRNT_OBJ_64C = 0x8005CC8C; // func
PRNT_OBJ_654 = 0x8005CC94; // func
MEMCHR_OBJ_20 = 0x8005CCE8; // func
MEMCHR_OBJ_48 = 0x8005CD10; // func
STRLEN_OBJ_28 = 0x8005CD40; // func
PUTS_OBJ_2C = 0x8005CD74; // func
longjmp = 0x8005CDD4; // func
CloseEvent = 0x8005CE88; // func
DisableEvent = 0x8005CEC8; // func
MemCardEnd = 0x8005FC98; // func
MemCardStop = 0x8005FD18; // func
LIBMCRD_OBJ_15C = 0x8005FDC4; // func
_card_exist_back = 0x8005FDD4; // func
LIBMCRD_OBJ_2E4 = 0x8005FF4C; // func
LIBMCRD_OBJ_308 = 0x8005FF70; // func
LIBMCRD_OBJ_310 = 0x8005FF78; // func
LIBMCRD_OBJ_330 = 0x8005FF98; // func
LIBMCRD_OBJ_334 = 0x8005FF9C; // func
LIBMCRD_OBJ_3B8 = 0x80060020; // func
_card_accept_back = 0x80060030; // func
LIBMCRD_OBJ_404 = 0x8006006C; // func
LIBMCRD_OBJ_438 = 0x800600A0; // func
LIBMCRD_OBJ_490 = 0x800600F8; // func
LIBMCRD_OBJ_4B0 = 0x80060118; // func
LIBMCRD_OBJ_4DC = 0x80060144; // func
LIBMCRD_OBJ_594 = 0x800601FC; // func
LIBMCRD_OBJ_5BC = 0x80060224; // func
LIBMCRD_OBJ_5C0 = 0x80060228; // func
LIBMCRD_OBJ_6DC = 0x80060344; // func
LIBMCRD_OBJ_730 = 0x80060398; // func
LIBMCRD_OBJ_840 = 0x800604A8; // func
LIBMCRD_OBJ_84C = 0x800604B4; // func
_card_read_data = 0x800604C4; // func
LIBMCRD_OBJ_990 = 0x800605F8; // func
LIBMCRD_OBJ_994 = 0x800605FC; // func
LIBMCRD_OBJ_A50 = 0x800606B8; // func
LIBMCRD_OBJ_A5C = 0x800606C4; // func
_card_write_data = 0x800606D4; // func
LIBMCRD_OBJ_BA0 = 0x80060808; // func
LIBMCRD_OBJ_BA4 = 0x8006080C; // func
MemCardReadFile = 0x80060824; // func
LIBMCRD_OBJ_C90 = 0x800608F8; // func
LIBMCRD_OBJ_C9C = 0x80060904; // func
_card_read_file = 0x80060930; // func
LIBMCRD_OBJ_D08 = 0x80060970; // func
LIBMCRD_OBJ_D2C = 0x80060994; // func
LIBMCRD_OBJ_D6C = 0x800609D4; // func
LIBMCRD_OBJ_D9C = 0x80060A04; // func
LIBMCRD_OBJ_DD0 = 0x80060A38; // func
LIBMCRD_OBJ_E5C = 0x80060AC4; // func
LIBMCRD_OBJ_E60 = 0x80060AC8; // func
LIBMCRD_OBJ_F4C = 0x80060BB4; // func
LIBMCRD_OBJ_F58 = 0x80060BC0; // func
_card_write_file = 0x80060BEC; // func
LIBMCRD_OBJ_FC4 = 0x80060C2C; // func
LIBMCRD_OBJ_FE8 = 0x80060C50; // func
LIBMCRD_OBJ_1028 = 0x80060C90; // func
LIBMCRD_OBJ_1058 = 0x80060CC0; // func
LIBMCRD_OBJ_108C = 0x80060CF4; // func
LIBMCRD_OBJ_1118 = 0x80060D80; // func
LIBMCRD_OBJ_111C = 0x80060D84; // func
LIBMCRD_OBJ_1284 = 0x80060EEC; // func
LIBMCRD_OBJ_12E8 = 0x80060F50; // func
LIBMCRD_OBJ_1374 = 0x80060FDC; // func
LIBMCRD_OBJ_1460 = 0x800610C8; // func
LIBMCRD_OBJ_14A4 = 0x8006110C; // func
LIBMCRD_OBJ_15EC = 0x80061254; // func
LIBMCRD_OBJ_16B8 = 0x80061320; // func
MemCardDeleteFile = 0x80061344; // func
LIBMCRD_OBJ_17E0 = 0x80061448; // func
LIBMCRD_OBJ_189C = 0x80061504; // func
LIBMCRD_OBJ_1944 = 0x800615AC; // func
MemCardUnformat = 0x800615BC; // func
LIBMCRD_OBJ_19F8 = 0x80061660; // func
LIBMCRD_OBJ_1A60 = 0x800616C8; // func
_callback_handler = 0x800616D0; // func
funcEvSpIOE = 0x800617CC; // func
funcEvSpError = 0x800617E0; // func
funcEvSpTimeout = 0x800617F4; // func
funcEvSpNewcard = 0x80061808; // func
funcEvSpIOEx = 0x8006181C; // func
funcEvSpErrorx = 0x80061830; // func
funcEvSpTimeoutx = 0x80061844; // func
funcEvSpNewcardx = 0x80061858; // func
_card_close = 0x80061A80; // func
_card_stop = 0x80061AA0; // func
STRCAT_OBJ_8C = 0x80061F1C; // func
erase = 0x80061F98; // func
InitPAD2 = 0x80062688; // func
StartPAD2 = 0x80062698; // func
StopPAD2 = 0x800626A8; // func
PAD_init2 = 0x800626B8; // func
StopCARD2 = 0x800627F8; // func
USERFUNC_OBJ_84 = 0x8006290C; // func
D_800629D4 = 0x800629D4; // data
gameModeHandlerTable = 0x800629F4; // data
CdPathTable = 0x80062C24; // data
cdpath_MAIN_CD = 0x80062C54; // data
cdpath_MUSA_ID = 0x80063014; // data
cdpath_DEBUG_BIN = 0x80063044; // data
resourceIdMap = 0x80063138; // data
streamLoad_savedReadyCB = 0x8006AEF0; // data
streamLoad_state = 0x8006AF00; // data
LzssStateTable = 0x80072A30; // data
loadDestPtrTable = 0x80072C70; // data
lzss_curMask = 0x800747A0; // data
lzss_curToken = 0x800747A4; // data
lzss_outPtr = 0x800747AC; // data
lzss_ringIndex = 0x800747B0; // data
lzss_partialCode = 0x800747B4; // data
debugBinPresent = 0x800747D0; // data
resLoad_loadedFileIdx = 0x800747F8; // data
zoneLoadedBlock = 0x80075400; // data
streamLoad_cbActive = 0x80076110; // data
padState_raw = 0x80078DC2; // data
cdReq_sectorHdrBuf = 0x80078E40; // data
lzss_sectorStagingBuf = 0x80079A70; // data
resLoad_lastId = 0x800A654C; // data
cdReq_state = 0x800AE6F0; // data
cdReq_curSector = 0x800AE708; // data
cdReq_sink = 0x800AE728; // data
cdReq_dest = 0x800AE72C; // data
cdReq_savedReadyCB = 0x800AE734; // data
cdReq_cdResult = 0x800AE738; // data
cdReq_wordsRemaining = 0x800AE748; // data
cdReq_drainPhase = 0x800AE74C; // data
cdReq_retry = 0x800AE750; // data
cdReq_timeout = 0x800AE754; // data
cdReq_cdlFile = 0x800AE7A4; // data
cdReq_size = 0x800AE7A8; // data
cdReq_posInt = 0x800AE7AC; // data
cdReq_result = 0x800AE7B0; // data
resLoad_state = 0x800AE7EC; // data
cdFileLocTable = 0x800AE830; // data
gameMode = 0x800B99DE; // data
currentLocationId = 0x800B9A08; // data
resLoad_result = 0x800C6D10; // data
resLoad_curId = 0x800C6D34; // data
lzss_state = 0x800C7D24; // data
CdIntToPos = 0x80043A18; // func PsyQ libcd (Ghidra-confirmed, Phase 7)
CdPosToInt = 0x80043B1C; // func PsyQ libcd (Ghidra-confirmed, Phase 7)
CdSearchFile = 0x80045374; // func PsyQ libcd (Ghidra-confirmed, Phase 7)
VSync = 0x8004239C; // func PsyQ libetc (Ghidra-confirmed, Phase 7)
// --- Phase 21: PsyQ names from cross-project byte-signature dedup (.run/xdedup) ---
// Each is byte-identical (relocation-masked) to the named PsyQ function in a sister
// gcc-2.7.2-psx decomp (VS/Xenogears). G5 provenance: PsyQ SDK, xdedup-confirmed.
__main = 0x800100a0; // func PsyQ libsn (xdedup vs vagrant-story, Phase 21)
_SpuInit = 0x8003a444; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
SpuStart = 0x8003a53c; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
_spu_FsetDelayW = 0x8003b08c; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
_spu_FsetDelayR = 0x8003b0b8; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
_SpuDataCallback = 0x8003b14c; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
SpuQuit = 0x8003b170; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
_spu_setReverbAttr = 0x8003b954; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
SpuWrite = 0x8003c438; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
SpuSetReverbModeDepth = 0x8003d3f8; // func PsyQ libspu (xdedup vs xenogears, Phase 21)
ResetCallback = 0x80042580; // func PsyQ libetc (xdedup vs vagrant-story, Phase 21)
InterruptCallback = 0x800425b0; // func PsyQ libetc (xdedup vs xenogears, Phase 21)
DMACallback = 0x800425e0; // func PsyQ libetc (xdedup vs xenogears, Phase 21)
startIntr = 0x80042718; // func PsyQ libetc (xdedup vs xenogears, Phase 21)
startIntrVSync = 0x80042c90; // func PsyQ libetc (xdedup vs xenogears, Phase 21)
startIntrDMA = 0x80042db8; // func PsyQ libetc (xdedup vs xenogears, Phase 21)
DecDCToutCallback = 0x800430b8; // func PsyQ libpress (xdedup vs vagrant-story, Phase 21)
CdMix = 0x80043974; // func PsyQ libcd (xdedup vs xenogears, Phase 21)
CD_vol = 0x80044a8c; // func PsyQ libcd (xdedup vs xenogears, Phase 21)
CD_flush = 0x80044b14; // func PsyQ libcd (xdedup vs xenogears, Phase 21)
CD_initvol = 0x80044bf4; // func PsyQ libcd (xdedup vs xenogears, Phase 21)
CD_initintr = 0x80044ce8; // func PsyQ libcd (xdedup vs xenogears, Phase 21)
CD_getsector = 0x80045090; // func PsyQ libcd (xdedup vs xenogears, Phase 21)
CD_getsector2 = 0x80045190; // func PsyQ libcd (xdedup vs xenogears, Phase 21)
SetDefDispEnv = 0x80058b04; // func PsyQ libgpu (xdedup vs xenogears, Phase 21)
GetTPage = 0x80058b40; // func PsyQ libgpu (xdedup vs xenogears, Phase 21)
CatPrim = 0x80058ce4; // func PsyQ libgpu (xdedup vs xenogears, Phase 21)
DrawSyncCallback = 0x800595fc; // func PsyQ libgpu (xdedup vs xenogears, Phase 21)
InitHeap = 0x8005ce18; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
FlushCache = 0x8005ce28; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
_96_remove = 0x8005ce50; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
DeliverEvent = 0x8005ce68; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
OpenEvent = 0x8005ce78; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
WaitEvent = 0x8005ce98; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
TestEvent = 0x8005cea8; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
EnableEvent = 0x8005ceb8; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
ReturnFromException = 0x8005ced8; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
ResetEntryInt = 0x8005cee8; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
HookEntryInt = 0x8005cef8; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
read = 0x8005cf28; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
write = 0x8005cf38; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
ChangeClearPAD = 0x8005cf48; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
ChangeClearRCnt = 0x8005cf58; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
SetRCnt = 0x8005cf68; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
GetRCnt = 0x8005d004; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
StartRCnt = 0x8005d03c; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
StopRCnt = 0x8005d06c; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
ResetRCnt = 0x8005d0a0; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
SysEnqIntRP = 0x8005e168; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
SysDeqIntRP = 0x8005e178; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
_bu_init = 0x80061f38; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
open = 0x80061f48; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
close = 0x80061f68; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
nextfile = 0x80061f88; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
firstfile2 = 0x80062248; // func PsyQ libapi (xdedup vs vagrant-story, Phase 21)
_card_info = 0x80062258; // func PsyQ libcard (xdedup vs vagrant-story, Phase 21)
_card_load = 0x80062268; // func PsyQ libcard (xdedup vs vagrant-story, Phase 21)
_card_write = 0x80062278; // func PsyQ libcard (xdedup vs vagrant-story, Phase 21)
_new_card = 0x80062288; // func PsyQ libcard (xdedup vs vagrant-story, Phase 21)
StartCARD = 0x80062328; // func PsyQ libcard (xdedup vs xenogears, Phase 21)
InitCARD2 = 0x800627d8; // func PsyQ libcard (xdedup vs vagrant-story, Phase 21)
StartCARD2 = 0x800627e8; // func PsyQ libcard (xdedup vs vagrant-story, Phase 21)