# `SHthorntail.c` -> `laser.c`

Generated by `python tools/orig/source_gap_packets.py --materialize-all`.

## Summary
- left anchor: `dll/SH/SHthorntail.c` seed-near-fit (EN=`0x398` debug=`0x3B8` delta=`-0x20` ratio=`0.97x`)
- right anchor: `dll/CF/laser.c` seed-too-small (EN=`0x2C` debug=`0x934` delta=`-0x908` ratio=`0.02x`)
- current EN gap: `0x801D5AFC-0x802096AC` size=`0x33BB0` functions=`1123`
- current split status: outside current `splits.txt` coverage, before split coverage starts at `0x80240A6C`, next split `dolphin/base/PPCArch.c`
- resolved gap names: `86/111` ambiguous=`1` unresolved=`24`
- exact debug interval paths: `0`

## Gap Path Hints
- `SHroot.c` status=`global-unique` paths=`dll/SH/SHroot.c`
- `SClevelcontrol.c` status=`global-unique` paths=`dll/SC/SClevelcontrol.c`
- `SClightfoot.c` status=`global-unique` paths=`dll/SC/SClightfoot.c`
- `SCchieflightfoot.c` status=`global-unique` paths=`dll/SC/SCchieflightfoot.c`
- `SClantern.c` status=`global-unique` paths=`dll/SC/SClantern.c`
- `SCcollectables.c` status=`global-unique` paths=`dll/SC/SCcollectables.c`
- `SCanimobj.c` status=`global-unique` paths=`dll/SC/SCanimobj.c`
- `SCtotemlogpuz.c` status=`global-unique` paths=`dll/SC/SCtotemlogpuz.c`
- `SCtotembondpuz.c` status=`global-unique` paths=`dll/SC/SCtotembondpuz.c`
- `SCtotemstrength.c` status=`global-unique` paths=`dll/SC/SCtotemstrength.c`
- `cloudrunner.c` status=`unresolved`
- `propeller.c` status=`unresolved`
- `shiphead.c` status=`unresolved`
- `shipgun.c` status=`unresolved`
- `brokecannon.c` status=`global-unique` paths=`dll/brokecannon.c`
- `SPshop.c` status=`global-unique` paths=`dll/SP/SPshop.c`
- `SPshopkeeper.c` status=`global-unique` paths=`dll/SP/SPshopkeeper.c`
- `SPdrape.c` status=`global-unique` paths=`dll/SP/SPdrape.c`
- `IMsnowbike.c` status=`global-unique` paths=`dll/IM/IMsnowbike.c`
- `DRearthwalk.c` status=`global-unique` paths=`dll/DR/DRearthwalk.c`
- `CRsnowbike.c` status=`global-unique` paths=`dll/CR/CRsnowbike.c`
- `DRcloudrunner.c` status=`global-unique` paths=`dll/DR/DRcloudrunner.c`
- `deaddino.c` status=`global-unique` paths=`dll/WM/deaddino.c`
- `walltorch.c` status=`unresolved`
- `WMlevcontrol.c` status=`global-unique` paths=`dll/WM/WMlevcontrol.c`
- `wmcrystal.c` status=`global-unique` paths=`dll/WM/WMcrystal.c`
- `crawler.c` status=`unresolved`
- `VFlevcontrol.c` status=`global-unique` paths=`dll/VF/VFlevcontrol.c`
- `platform1.c` status=`global-unique` paths=`dll/VF/platform1.c`
- `doorswitch.c` status=`unresolved`
- `draghead.c` status=`global-unique` paths=`dll/VF/draghead.c`
- `lavaflow.c` status=`global-unique` paths=`dll/VF/lavaflow.c`
- `spellplace.c` status=`unresolved`
- `DBrockfall.c` status=`global-unique` paths=`dll/DB/DBrockfall.c`
- `DBpointmum.c` status=`global-unique` paths=`dll/DB/DBpointmum.c`
- `DBwaterflow.c` status=`global-unique` paths=`dll/DB/DBwaterflow.c`
- `DBlightgo.c` status=`global-unique` paths=`dll/DB/DBlightgo.c`
- `DBbullet.c` status=`global-unique` paths=`dll/DB/DBbullet.c`
- `DBprotection.c` status=`global-unique` paths=`dll/DB/DBprotection.c`
- `DBKillbot.c` status=`unresolved`
- `DBdustgeezer.c` status=`global-unique` paths=`dll/DB/DBdustgeezer.c`
- `DBbonedust.c` status=`global-unique` paths=`dll/DB/DBbonedust.c`
- `DBstealerworm.c` status=`global-unique` paths=`dll/DB/DBstealerworm.c`
- `USEOBJ.c` status=`ambiguous-global` paths=`dll/useObj.c`, `dll/WC/USEOBJ.c`
- `WORLDMAP_planet.c` status=`unresolved`
- `CRsnowclaw.c` status=`global-unique` paths=`dll/CR/CRsnowClaw.c`
- `CRfueltank.c` status=`global-unique` paths=`dll/CR/CRfueltank.c`
- `CRdropbombs.c` status=`unresolved`
- `TREX_levelcontrol.c` status=`global-unique` paths=`dll/TREX/TREX_levelcontrol.c`
- `TREX_trex.c` status=`global-unique` paths=`dll/TREX/TREX_trex.c`
- `TREX_Lazerwall.c` status=`global-unique` paths=`dll/TREX/TREX_Lazerwall.c`
- `DRlaserturret.c` status=`global-unique` paths=`dll/DR/DRlaserturret.c`
- `DRpushcart.c` status=`global-unique` paths=`dll/DR/DRpushcart.c`
- `DRCloudball.c` status=`global-unique` paths=`dll/DR/DRCloudball.c`
- `DRsimplehuman.c` status=`global-unique` paths=`dll/DR/DRsimplehuman.c`
- `DRyoutube.c` status=`global-unique` paths=`dll/DR/DRyoutube.c`
- `DRexplodeDoor.c` status=`global-unique` paths=`dll/DR/DRexplodeDoor.c`
- `DRcloudcage.c` status=`global-unique` paths=`dll/DR/DRcloudcage.c`
- `DRshackle.c` status=`global-unique` paths=`dll/DR/DRshackle.c`
- `DRhightop.c` status=`global-unique` paths=`dll/DR/DRhightop.c`
- `DRpickup.c` status=`global-unique` paths=`dll/DR/DRpickup.c`
- `DRcradle.c` status=`global-unique` paths=`dll/DR/DRcradle.c`
- `DRpulley.c` status=`global-unique` paths=`dll/DR/DRpulley.c`
- `DRhalolight.c` status=`global-unique` paths=`dll/DR/DRhalolight.c`
- `DRbarrelplace.c` status=`global-unique` paths=`dll/DR/DRbarrelplace.c`
- `BWalphaanim.c` status=`global-unique` paths=`dll/BW/BWalphaanim.c`
- `WCpushblock.c` status=`global-unique` paths=`dll/WC/WCpushblock.c`
- `WClevcontrol.c` status=`global-unique` paths=`dll/WC/WClevcontrol.c`
- `WCbeacon.c` status=`global-unique` paths=`dll/WC/WCbeacon.c`
- `WCpressureswitch.c` status=`global-unique` paths=`dll/WC/WCpressureSwitch.c`
- `WCdial.c` status=`global-unique` paths=`dll/WC/WCdial.c`
- `WClaser.c` status=`global-unique` paths=`dll/WC/WClaser.c`
- `WCfloortile.c` status=`global-unique` paths=`dll/WC/WCfloortile.c`
- `ARWarwingattachment.c` status=`global-unique` paths=`dll/ARW/ARWarwingattachment.c`
- `LGTpointlight.c` status=`global-unique` paths=`dll/LGT/LGTpointlight.c`
- `LGTdirectionallight.c` status=`global-unique` paths=`dll/LGT/LGTdirectionallight.c`
- `LGTprojectedlight.c` status=`global-unique` paths=`dll/LGT/LGTprojectedlight.c`
- `LGTcontrollight.c` status=`global-unique` paths=`dll/LGT/LGTcontrollight.c`
- `boulder.c` status=`global-unique` paths=`dll/boulder.c`
- `OS.c` status=`unresolved`
- `OSExi.c` status=`unresolved`
- `OSRtc.c` status=`unresolved`
- `mtx.c` status=`global-unique` paths=`mtx.c`
- `mtx44.c` status=`global-unique` paths=`mtx44.c`
- `vec.c` status=`global-unique` paths=`dolphin/vec.c`
- `dvdfs.c` status=`global-unique` paths=`dolphin/dvdfs.c`
- `dvd.c` status=`global-unique` paths=`dolphin/dvd.c`
- `vi.c` status=`global-unique` paths=`dolphin/vi.c`
- `Pad.c` status=`global-unique` paths=`dolphin/Pad.c`
- `ai.c` status=`unresolved`
- `ar.c` status=`unresolved`
- `arq.c` status=`unresolved`
- `dsp.c` status=`unresolved`
- `GXTev.c` status=`unresolved`
- `perf.c` status=`unresolved`
- `seq.c` status=`unresolved`
- `synth.c` status=`unresolved`
- `front.c` status=`unresolved`
- `light.c` status=`global-unique` paths=`main/light.c`
- `main.c` status=`global-unique` paths=`main/main.c`
- `expr.c` status=`global-unique` paths=`main/expr.c`
- `timer.c` status=`global-unique` paths=`main/timer.c`
- `anim.c` status=`global-unique` paths=`dll/anim.c`
- `fox.c` status=`unresolved`
- `chuka.c` status=`global-unique` paths=`dll/baddie/chuka.c`
- `tesla.c` status=`global-unique` paths=`dll/tesla.c`
- `crate.c` status=`global-unique` paths=`dll/crate.c`
- `door.c` status=`global-unique` paths=`dll/door.c`
- `fruit.c` status=`global-unique` paths=`dll/fruit.c`
- `zbomb.c` status=`global-unique` paths=`dll/zBomb.c`
- `fire.c` status=`global-unique` paths=`dll/fire.c`

## Gap EN Functions
- `fn_801D5AFC@0x801D5AFC-0x801D5CB4` size=`0x1B8`
- `fn_801D5CB4@0x801D5CB4-0x801D5ED4` size=`0x220`
- `fn_801D5ED4@0x801D5ED4-0x801D6158` size=`0x284`
- `fn_801D6158@0x801D6158-0x801D6338` size=`0x1E0`
- `fn_801D6338@0x801D6338-0x801D647C` size=`0x144`
- `fn_801D647C@0x801D647C-0x801D6484` size=`0x8`
- `fn_801D6484@0x801D6484-0x801D64C4` size=`0x40`
- `fn_801D64C4@0x801D64C4-0x801D6548` size=`0x84`
- `fn_801D6548@0x801D6548-0x801D6CD0` size=`0x788`
- `fn_801D6CD0@0x801D6CD0-0x801D6F04` size=`0x234`
- `fn_801D6F04@0x801D6F04-0x801D71F4` size=`0x2F0`
- `fn_801D71F4@0x801D71F4-0x801D7348` size=`0x154`
- `fn_801D7348@0x801D7348-0x801D7388` size=`0x40`
- `fn_801D7388@0x801D7388-0x801D76A4` size=`0x31C`
- `fn_801D76A4@0x801D76A4-0x801D76C8` size=`0x24`
- `fn_801D76C8@0x801D76C8-0x801D7A58` size=`0x390`
- `fn_801D7A58@0x801D7A58-0x801D7A60` size=`0x8`
- `fn_801D7A60@0x801D7A60-0x801D7A68` size=`0x8`
- `fn_801D7A68@0x801D7A68-0x801D7AB4` size=`0x4C`
- `fn_801D7AB4@0x801D7AB4-0x801D7B8C` size=`0xD8`
- `fn_801D7B8C@0x801D7B8C-0x801D7C64` size=`0xD8`
- `fn_801D7C64@0x801D7C64-0x801D80F0` size=`0x48C`
- `fn_801D80F0@0x801D80F0-0x801D8190` size=`0xA0`
- `fn_801D8190@0x801D8190-0x801D8194` size=`0x4`
- `fn_801D8194@0x801D8194-0x801D8198` size=`0x4`
- `fn_801D8198@0x801D8198-0x801D81A0` size=`0x8`
- `fn_801D81A0@0x801D81A0-0x801D8204` size=`0x64`
- `fn_801D8204@0x801D8204-0x801D8284` size=`0x80`
- `fn_801D8284@0x801D8284-0x801D84C4` size=`0x240`
- `fn_801D84C4@0x801D84C4-0x801D8650` size=`0x18C`
- `fn_801D8650@0x801D8650-0x801D86E4` size=`0x94`
- `fn_801D86E4@0x801D86E4-0x801D88F8` size=`0x214`
- `fn_801D88F8@0x801D88F8-0x801D8DE8` size=`0x4F0`
- `fn_801D8DE8@0x801D8DE8-0x801D90F0` size=`0x308`
- `fn_801D90F0@0x801D90F0-0x801D9310` size=`0x220`
- `fn_801D9310@0x801D9310-0x801D9CA4` size=`0x994`
- `fn_801D9CA4@0x801D9CA4-0x801D9E0C` size=`0x168`
- `fn_801D9E0C@0x801D9E0C-0x801D9E14` size=`0x8`
- `fn_801D9E14@0x801D9E14-0x801D9E1C` size=`0x8`
- `fn_801D9E1C@0x801D9E1C-0x801D9E20` size=`0x4`
- `fn_801D9E20@0x801D9E20-0x801D9E50` size=`0x30`
- `fn_801D9E50@0x801D9E50-0x801D9E54` size=`0x4`
- `fn_801D9E54@0x801D9E54-0x801DA010` size=`0x1BC`
- `fn_801DA010@0x801DA010-0x801DA104` size=`0xF4`
- `fn_801DA104@0x801DA104-0x801DA108` size=`0x4`
- `fn_801DA108@0x801DA108-0x801DA10C` size=`0x4`
- `fn_801DA10C@0x801DA10C-0x801DA114` size=`0x8`
- `fn_801DA114@0x801DA114-0x801DA1CC` size=`0xB8`
- `fn_801DA1CC@0x801DA1CC-0x801DA874` size=`0x6A8`
- `fn_801DA874@0x801DA874-0x801DAA98` size=`0x224`
- `fn_801DAA98@0x801DAA98-0x801DABF8` size=`0x160`
- `fn_801DABF8@0x801DABF8-0x801DAEB4` size=`0x2BC`
- `fn_801DAEB4@0x801DAEB4-0x801DAF14` size=`0x60`
- `fn_801DAF14@0x801DAF14-0x801DAF44` size=`0x30`
- `fn_801DAF44@0x801DAF44-0x801DAFBC` size=`0x78`
- `fn_801DAFBC@0x801DAFBC-0x801DAFD0` size=`0x14`
- `fn_801DAFD0@0x801DAFD0-0x801DAFD8` size=`0x8`
- `fn_801DAFD8@0x801DAFD8-0x801DB048` size=`0x70`
- `fn_801DB048@0x801DB048-0x801DB480` size=`0x438`
- `fn_801DB480@0x801DB480-0x801DB594` size=`0x114`
- `fn_801DB594@0x801DB594-0x801DB5CC` size=`0x38`
- `fn_801DB5CC@0x801DB5CC-0x801DB688` size=`0xBC`
- `fn_801DB688@0x801DB688-0x801DB7DC` size=`0x154`
- `fn_801DB7DC@0x801DB7DC-0x801DB7E8` size=`0xC`
- `fn_801DB7E8@0x801DB7E8-0x801DB8F4` size=`0x10C`
- `fn_801DB8F4@0x801DB8F4-0x801DB8FC` size=`0x8`
- `fn_801DB8FC@0x801DB8FC-0x801DB904` size=`0x8`
- `fn_801DB904@0x801DB904-0x801DB964` size=`0x60`
- `fn_801DB964@0x801DB964-0x801DB994` size=`0x30`
- `fn_801DB994@0x801DB994-0x801DB998` size=`0x4`
- `fn_801DB998@0x801DB998-0x801DC444` size=`0xAAC`
- `fn_801DC444@0x801DC444-0x801DC588` size=`0x144`
- `fn_801DC588@0x801DC588-0x801DC58C` size=`0x4`
- `fn_801DC58C@0x801DC58C-0x801DC590` size=`0x4`
- `fn_801DC590@0x801DC590-0x801DC6AC` size=`0x11C`
- `fn_801DC6AC@0x801DC6AC-0x801DC820` size=`0x174`
- `fn_801DC820@0x801DC820-0x801DC828` size=`0x8`
- `fn_801DC828@0x801DC828-0x801DC830` size=`0x8`
- `fn_801DC830@0x801DC830-0x801DC834` size=`0x4`
- `fn_801DC834@0x801DC834-0x801DC8FC` size=`0xC8`
- ... (+1043 more functions)

## Exact Debug Interval
- none

## Recommended Next Steps
- Start with the uniquely resolved paths before spending time on ambiguous or unresolved names.
- Use the current EN gap window `0x801D5AFC-0x802096AC` as the first split-planning span.
- Resolve the remaining basenames with `source_reference_hints.py` or reference-project inventory before materializing stubs.
