# Dan Rank System Review

## Conclusion

- Dan selector consumer: **grounded**
- Selector slot: `+0x64` with mode `0x41`
- Branch selector pattern: `13 41 64`
- Branch rows: `13` for values `12..0`
- Max rank path: `13단 전설의 맹호` is treated as branch miss/fallthrough.
- Score producer block: `0x0043cbe8..0x0043ccd4`
- Score writer rows: `12` rows of `10 41 64`
- Max score: `13`

The display consumer and the score producer block are both grounded.
Inside the generic Event VM table (`0x00440538`), `0x10 41 64 xx` decodes as `global[0x64] += xx` via handler `0x00402d2e`.
The same raw bytes are not writer proof under the save-selector slice table, so dispatch-table context remains mandatory.
The main source flags behind the grounded score gates are promoted in `dan_rank_flag_source_review`; the remaining split is perfect-clear/password logic versus Dan score logic.

## Branch Rows

| Compare | Display | Opcode VA | Target |
|---:|---|---|---|
| fallthrough | 13단 전설의 맹호 | n/a | first rank line |
| 12 | 12단 권신 | `0x0043d558` | `0x0043d5e0` |
| 11 | 11단 권성 | `0x0043d560` | `0x0043d600` |
| 10 | 10단 지고의 권사 | `0x0043d568` | `0x0043d620` |
| 9 | 9단 권성(정발 표기, 원문 拳皇) | `0x0043d570` | `0x0043d640` |
| 8 | 8단 권제 | `0x0043d578` | `0x0043d660` |
| 7 | 7단 권호 | `0x0043d580` | `0x0043d680` |
| 6 | 6단 사범 | `0x0043d588` | `0x0043d6a0` |
| 5 | 5단 사범대리 | `0x0043d590` | `0x0043d6c0` |
| 4 | 4단 유명권사 | `0x0043d598` | `0x0043d6e0` |
| 3 | 3단 강권사 | `0x0043d5a0` | `0x0043d700` |
| 2 | 2단 난폭권사 | `0x0043d5a8` | `0x0043d720` |
| 1 | 1단 보통권사 | `0x0043d5b0` | `0x0043d740` |
| 0 | 단외 보통호랑이 | `0x0043d5b8` | `0x0043d760` |

## Score Producer Rows

| VA | Delta | Rule label | Guard | Group | Confidence |
|---|---:|---|---|---|---|
| `0x0043cbf4` | +5 | 아타호 기술 전부 신기 | `e3 00 03` | skill-tier | high |
| `0x0043cc0c` | +3 | 아타호 기술 전부 달인기 이상 | `e3 00 02` | skill-tier | high |
| `0x0043cc24` | +2 | 아타호 기술 전부 장기 이상 | `e3 00 01` | skill-tier | high |
| `0x0043cc3c` | +1 | 아타호 기술 전부 습득 | `e3 00 00` | skill-tier | high |
| `0x0043cc4c` | +1 | 아타호 무기/술류 완비 | `e2 00 01` | liquor/equipment | high |
| `0x0043cc64` | +2 | 주량 30 이상: 취권/대호 상위 tier | `14 c3 18 00 1e` | drunken-tier | high |
| `0x0043cc80` | +1 | 주량 20 이상: 취권 사용 lower tier | `14 c3 18 00 14` | drunken-tier | high |
| `0x0043cca0` | +1 | 주작/창룡/현무 시련 클리어 | `32 00 e8/e9/ea` | scenario-bit | high |
| `0x0043ccac` | +1 | 진 호혈 666층 나찰 클리어 | `32 00 ec` | scenario-bit | high |
| `0x0043ccb8` | +1 | 무투대회 무패 | `32 01 c7` | scenario-bit | high |
| `0x0043ccc4` | +2 | 마수 3마리/폭호 조건 | `32 00 f1` | beast-tier | high |
| `0x0043ccd0` | +1 | 마수 2마리 조건 | `32 00 f0` | beast-tier | high |

## Criteria Text Hints

- `story-prompt-3504` `0x00507fa1`: 아타호 「도대체 단위를 올리려면 어떻게 해야 되는 건가요?!
- `story-prompt-3505` `0x00507ff6`: 백호권 사범 「그건 말일세...
- `story-prompt-3506` `0x00508026`: 필살기의 깊이는 의외로 깊다네 각 기술을 신의 경지로 올려야...
- `story-prompt-3507` `0x00508080`: 필살기의 깊이는 의외로 깊지! 모든 기술을 좀더 끌어올려야지!
- `story-prompt-3508` `0x005080da`: 필살기의 깊이는 의외로 깊지! 각 기술의 레벨을 높여야 한다네
- `story-prompt-3510` `0x0050818a`: 각종 취권을 사용하기 위해선 모든 술을 손에 넣어야지!!
- `story-prompt-3511` `0x005081de`: 취권을 좀더 자유롭게 사용하여 대호모드를 완벽하게 사용해야지! 그거야말로 취호권의 궁극이지!!
- `story-prompt-3512` `0x00508260`: 자넨 기껏 습득한 취권을 거의 사용하지 않은 것같던데, 좀더 자주 취권을 사용해야지!!
- `story-prompt-3513` `0x005082d8`: 애써 멀리서 수련하러 왔으니까 수의 시련중 백호의 시련을 제외한 3시련을 클리어해야 하네
- `story-prompt-3514` `0x00508356`: 호랑이동굴... 지하 5층보다 깊은... 재도전이 불가능한, 진정한 시련을 돌파하는 걸세!!!
- `story-prompt-3515` `0x005083cc`: 무투대회... 재도전이 불가능한... 그 대회에서 자네만은 1번도 패하지 말아야 하는 걸세!
- `story-prompt-3516` `0x00508442`: 자네가 쓰러트린 폭호는... 실은 약한 존재였네... 진정한 강적을 쓰러트려야만, 진정한 강자라네!
- `story-prompt-3517` `0x005084bc`: 암각권 총통이 최종 적은 아니지 백호님에게 의지말고 자네 힘으로 최종 적을 해치우게
- `story-prompt-3518` `0x00508535`: 아타호 「흐음... 진작 이런 말씀을 해주셨더라면
- `story-prompt-3519` `0x00508574`: 좀더 높은 단위를 얻었을 텐데...

## Perfect Clear

Perfect clear text/password is nearby endgame content, but remains separate from the Dan selector until a shared producer is proven.
- `story-prompt-4503` `0x0054bc92`: 축하합니다!! 환세취호전 퍼펙트 클리어
- `story-prompt-4504` `0x0054bcc6`: 패스워드는 「나는야 완벽한 호랑이!!

## Next Steps

- promote 0x10 41 64 rows in the Dan block as generic-VM score writers: generic table 0x00440538 maps opcode 0x10 to byte arithmetic/write handler 0x00402d2e (done)
- keep save-selector 0x10 handler distinction: the same raw bytes are not writer proof under save-selector table 0x00440720; dispatch context matters (done)
- tie remaining bit ids to named scenario flags: score increments are grounded, and e8/e9/ea/ec/c7/f0/f1 are now tied to trial, tournament, 666F, and beast-route text groups (done)
- separate Dan evaluation from perfect-clear evaluation: perfect clear text/password is nearby endgame content but not necessarily the same rank score slot (pending)
