# Retail Source Blueprint Block: `0x8009B0E0-0x8009FCDC`

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

## Summary
- block span: `0x8009B0E0-0x8009FCDC` size=`0x4BFC`
- anchors: `1`
- short gap packets: `0`
- block score: `361200`
- block function count: `19`
- ordered skeleton paths: `dll/expgfx.c`

## Ordered Skeleton
### `dll/expgfx.c`
- retail source: `expgfx.c`
- action: `corridor-packet`
- confidence: `medium`
- plan window: `0x8009B0E0-0x8009FCDC` size=`0x4BFC` from=`current-seed`
- current seed: `0x8009B0E0-0x8009FCDC` size=`0x4BFC` functions=`19`
- why: Retail seed is best treated as one packet inside a debug-side source corridor containing `objlib.c`, `objprint.c`, `objprint_dolphin.c`, `pi_dolphin.c`, `rcp_dolphin.c`.
- plan-window functions:
- `expgfxRemove@0x8009B0E0-0x8009B254` size=`0x174`
- `expgfxRemoveAll@0x8009B254-0x8009B3BC` size=`0x168`
- `expgfxGetSlot@0x8009B3BC-0x8009B6D4` size=`0x318`
- `expgfx_initSlotQuad@0x8009B6D4-0x8009B9C8` size=`0x2F4`
- `expgfx_updateActivePools@0x8009B9C8-0x8009DDEC` size=`0x2424`
- `expgfx_addToTable@0x8009DDEC-0x8009DF0C` size=`0x120`
- `expgfx_updateSourceFrameFlags@0x8009DF0C-0x8009E004` size=`0xF8`
- `expgfx_ownerFree3@0x8009E004-0x8009E024` size=`0x20`
- `expgfx_func0B_nop@0x8009E024-0x8009E028` size=`0x4`
- `expgfx_func0A_nop@0x8009E028-0x8009E02C` size=`0x4`
- `expgfx_func09@0x8009E02C-0x8009E034` size=`0x8`
- `expgfx_renderSourcePools@0x8009E034-0x8009E13C` size=`0x108`
- `drawGlow@0x8009E13C-0x8009ECE4` size=`0xBA8`
- `renderParticles@0x8009ECE4-0x8009EEB8` size=`0x1D4`
- `expgfx_free2@0x8009EEB8-0x8009EED8` size=`0x20`
- `expgfx_free@0x8009EED8-0x8009EFDC` size=`0x104`
- `expgfx_resetAllPools@0x8009EFDC-0x8009F1AC` size=`0x1D0`
- `expgfx_updateFrameState@0x8009F1AC-0x8009F2CC` size=`0x120`
- `expgfx_addremove@0x8009F2CC-0x8009FCDC` size=`0xA10`

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