# Retail Source Blueprint Block: `0x80209074-0x802099A8`

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

## Summary
- block span: `0x80209074-0x802099A8` size=`0x934`
- anchors: `1`
- short gap packets: `0`
- block score: `347900`
- block function count: `42`
- ordered skeleton paths: `dll/CF/laser.c`

## Ordered Skeleton
### `dll/CF/laser.c`
- retail source: `laser.c`
- action: `corridor-packet`
- confidence: `medium`
- plan window: `0x80209074-0x802099A8` size=`0x934` from=`suggested-window`
- current seed: `0x80209074-0x802090A0` size=`0x2C` functions=`1`
- debug target size: `0x934` fit=`seed-too-small`
- xref coverage inside plan: `1/1`
- retail labels: `Init`
- why: Suggested window overlaps existing split owners `main/dll/CF/laser_unsupported.c`, `main/dll/CF/laserObj.c`, `main/dll/fire.c`, `main/textblock.c`, ... (+2 more); treat this as an ownership packet instead of a clean boundary move.
- plan-window functions:
- `laser_init@0x80209074-0x802090A0` size=`0x2C`
- `laser_releaseUnsupported@0x802090A0-0x802090A4` size=`0x4`
- `laser_initialiseUnsupported@0x802090A4-0x802090A8` size=`0x4`
- `laserObj_getExtraSize@0x802090A8-0x802090B0` size=`0x8`
- `laserObj_getObjectTypeId@0x802090B0-0x802090B8` size=`0x8`
- `laserObj_free@0x802090B8-0x802090BC` size=`0x4`
- `laserObj_render@0x802090BC-0x802090C0` size=`0x4`
- `laserObj_hitDetect@0x802090C0-0x802090C4` size=`0x4`
- `laserObj_update@0x802090C4-0x8020926C` size=`0x1A8`
- `laserObj_init@0x8020926C-0x80209304` size=`0x98`
- `laserObj_release@0x80209304-0x80209308` size=`0x4`
- `laserObj_initialise@0x80209308-0x8020930C` size=`0x4`
- `fire_updateState@0x8020930C-0x80209700` size=`0x3F4`
- `fireObj_getExtraSize@0x80209700-0x80209708` size=`0x8`
- `fireObj_getObjectTypeId@0x80209708-0x80209710` size=`0x8`
- `fireObj_free@0x80209710-0x80209714` size=`0x4`
- `fireObj_render@0x80209714-0x80209738` size=`0x24`
- `fireObj_hitDetect@0x80209738-0x8020973C` size=`0x4`
- `fireObj_update@0x8020973C-0x80209778` size=`0x3C`
- `fireObj_init@0x80209778-0x80209808` size=`0x90`
- `fireObj_release@0x80209808-0x8020980C` size=`0x4`
- `fireObj_initialise@0x8020980C-0x80209810` size=`0x4`
- `textblockObj_getExtraSize@0x80209810-0x80209818` size=`0x8`
- `textblockObj_getObjectTypeId@0x80209818-0x80209820` size=`0x8`
- ... (+18 more functions)

## Recommended Next Steps
- Use this block as a direct first-pass source skeleton seed.
