MOAD-0001 (CWE-407): 2 defects found — see kronos-0001, kronos-0002

MOAD-0001 (CWE-407): DEFECT — kronos-0001
  - SH2HandleBreakpoints() in yabause/src/sys/sh2/include/sh2core.h:565
    scans codebreakpoint[0..numcodebreakpoints-1] linearly on EVERY
    instruction fetch in the debug interpreter (SH2KronosDebugInterpreterExec,
    SH2SimpleDebugInterpreterExec).  MAX_BREAKPOINTS=10, so worst-case 10
    comparisons per instruction.  At ~10 MIPS emulated that is 100M extra
    comparisons/second in debug sessions.
  - Fix: keep sorted_bp_addrs[] in sorted order; binary-search O(log N).
    Rebuild (insertion-sort, max 10 elements) only on add/del breakpoint.

MOAD-0002 (Intertangle): CLEAN
  - Saturn hardware is modeled as separate global structs (MSH2/SSH2, VDP1,
    VDP2, SCSP, SMPC, SCU).  These are intentional hardware-accuracy globals,
    not an accidental god-object coupling.  No independent subsystem is coupled
    through another's internals.

MOAD-0003 (Leaked Context): CLEAN
  - No thread_local or pthread_getspecific usage found in emulation core.
    The emulator is structured as a single main loop with the UI running in a
    separate Qt thread — context is passed explicitly, not via TLS.

MOAD-0004 (CWE-312): DEFECT — kronos-0002
  - yabause/src/utils/src/netlink.c:553
    NETLINK_LOG("password response: %s", NetlinkArea->inbuffer+start)
    When compiled with -DNETLINK_DEBUG (enabled for debug builds),
    NETLINK_LOG expands to DebugPrintf(MainLog, ...) and writes the
    Saturn modem internet-login password verbatim to the debug log.
    Also: login response (line 543) logs the username verbatim.
  - Fix: replace format string with a literal "[REDACTED]" sentinel.

MOAD-0005 (Thundering Herd): CLEAN
  - No cache get+null+compute+put pattern found outside of NETLINK_DEBUG
    debug paths.  YGL texture cache (yglcache.c) uses a hash table with
    no concurrent writers — single-threaded render thread.
