#!/usr/bin/env python3
#
#   message_data_static disassembler/decompiler
#

import struct
from pathlib import Path
from typing import Callable, Dict, List, Optional, Tuple, TypeVar

from dataclasses import dataclass

@dataclass
class GameVersionInfo:
    # Vram location of the code segment
    code_vram : int
    # Variables dict from config
    variables : Dict[str, int]


T = TypeVar("T")

item_ids = {
    0x00: "ITEM_OCARINA_OF_TIME",
    0x01: "ITEM_BOW",
    0x02: "ITEM_ARROW_FIRE",
    0x03: "ITEM_ARROW_ICE",
    0x04: "ITEM_ARROW_LIGHT",
    0x05: "ITEM_OCARINA_FAIRY",
    0x06: "ITEM_BOMB",
    0x07: "ITEM_BOMBCHU",
    0x08: "ITEM_DEKU_STICK",
    0x09: "ITEM_DEKU_NUT",
    0x0A: "ITEM_MAGIC_BEANS",
    0x0B: "ITEM_SLINGSHOT",
    0x0C: "ITEM_POWDER_KEG",
    0x0D: "ITEM_PICTOGRAPH_BOX",
    0x0E: "ITEM_LENS_OF_TRUTH",
    0x0F: "ITEM_HOOKSHOT",
    0x10: "ITEM_SWORD_GREAT_FAIRY",
    0x11: "ITEM_LONGSHOT",
    0x12: "ITEM_BOTTLE",
    0x13: "ITEM_POTION_RED",
    0x14: "ITEM_POTION_GREEN",
    0x15: "ITEM_POTION_BLUE",
    0x16: "ITEM_FAIRY",
    0x17: "ITEM_DEKU_PRINCESS",
    0x18: "ITEM_MILK_BOTTLE",
    0x19: "ITEM_MILK_HALF",
    0x1A: "ITEM_FISH",
    0x1B: "ITEM_BUG",
    0x1C: "ITEM_BLUE_FIRE",
    0x1D: "ITEM_POE",
    0x1E: "ITEM_BIG_POE",
    0x1F: "ITEM_SPRING_WATER",
    0x20: "ITEM_HOT_SPRING_WATER",
    0x21: "ITEM_ZORA_EGG",
    0x22: "ITEM_GOLD_DUST",
    0x23: "ITEM_MUSHROOM",
    0x24: "ITEM_SEAHORSE",
    0x25: "ITEM_CHATEAU",
    0x26: "ITEM_HYLIAN_LOACH",
    0x27: "ITEM_OBABA_DRINK",
    0x28: "ITEM_MOONS_TEAR",
    0x29: "ITEM_DEED_LAND",
    0x2A: "ITEM_DEED_SWAMP",
    0x2B: "ITEM_DEED_MOUNTAIN",
    0x2C: "ITEM_DEED_OCEAN",
    0x2D: "ITEM_ROOM_KEY",
    0x2E: "ITEM_LETTER_MAMA",
    0x2F: "ITEM_LETTER_TO_KAFEI",
    0x30: "ITEM_PENDANT_OF_MEMORIES",
    0x31: "ITEM_TINGLE_MAP",
    0x32: "ITEM_MASK_DEKU",
    0x33: "ITEM_MASK_GORON",
    0x34: "ITEM_MASK_ZORA",
    0x35: "ITEM_MASK_FIERCE_DEITY",
    0x36: "ITEM_MASK_TRUTH",
    0x37: "ITEM_MASK_KAFEIS_MASK",
    0x38: "ITEM_MASK_ALL_NIGHT",
    0x39: "ITEM_MASK_BUNNY",
    0x3A: "ITEM_MASK_KEATON",
    0x3B: "ITEM_MASK_GARO",
    0x3C: "ITEM_MASK_ROMANI",
    0x3D: "ITEM_MASK_CIRCUS_LEADER",
    0x3E: "ITEM_MASK_POSTMAN",
    0x3F: "ITEM_MASK_COUPLE",
    0x40: "ITEM_MASK_GREAT_FAIRY",
    0x41: "ITEM_MASK_GIBDO",
    0x42: "ITEM_MASK_DON_GERO",
    0x43: "ITEM_MASK_KAMARO",
    0x44: "ITEM_MASK_CAPTAIN",
    0x45: "ITEM_MASK_STONE",
    0x46: "ITEM_MASK_BREMEN",
    0x47: "ITEM_MASK_BLAST",
    0x48: "ITEM_MASK_SCENTS",
    0x49: "ITEM_MASK_GIANT",
    0x4A: "ITEM_BOW_FIRE",
    0x4B: "ITEM_BOW_ICE",
    0x4C: "ITEM_BOW_LIGHT",
    0x4D: "ITEM_SWORD_KOKIRI",
    0x4E: "ITEM_SWORD_RAZOR",
    0x4F: "ITEM_SWORD_GILDED",
    0x50: "ITEM_SWORD_DEITY",
    0x51: "ITEM_SHIELD_HERO",
    0x52: "ITEM_SHIELD_MIRROR",
    0x53: "ITEM_QUIVER_30",
    0x54: "ITEM_QUIVER_40",
    0x55: "ITEM_QUIVER_50",
    0x56: "ITEM_BOMB_BAG_20",
    0x57: "ITEM_BOMB_BAG_30",
    0x58: "ITEM_BOMB_BAG_40",
    0x59: "ITEM_WALLET_DEFAULT",
    0x5A: "ITEM_WALLET_ADULT",
    0x5B: "ITEM_WALLET_GIANT",
    0x5C: "ITEM_FISHING_ROD",
    0x5D: "ITEM_REMAINS_ODOLWA",
    0x5E: "ITEM_REMAINS_GOHT",
    0x5F: "ITEM_REMAINS_GYORG",
    0x60: "ITEM_REMAINS_TWINMOLD",
    0x61: "ITEM_SONG_SONATA",
    0x62: "ITEM_SONG_LULLABY",
    0x63: "ITEM_SONG_NOVA",
    0x64: "ITEM_SONG_ELEGY",
    0x65: "ITEM_SONG_OATH",
    0x66: "ITEM_SONG_SARIA",
    0x67: "ITEM_SONG_TIME",
    0x68: "ITEM_SONG_HEALING",
    0x69: "ITEM_SONG_EPONA",
    0x6A: "ITEM_SONG_SOARING",
    0x6B: "ITEM_SONG_STORMS",
    0x6C: "ITEM_SONG_SUN",
    0x6D: "ITEM_BOMBERS_NOTEBOOK",
    0x6E: "ITEM_SKULL_TOKEN",
    0x6F: "ITEM_HEART_CONTAINER",
    0x70: "ITEM_HEART_PIECE",
    0x71: "ITEM_71",
    0x72: "ITEM_72",
    0x73: "ITEM_SONG_LULLABY_INTRO",
    0x74: "ITEM_KEY_BOSS",
    0x75: "ITEM_COMPASS",
    0x76: "ITEM_DUNGEON_MAP",
    0x77: "ITEM_STRAY_FAIRIES",
    0x78: "ITEM_KEY_SMALL",
    0x79: "ITEM_MAGIC_JAR_SMALL",
    0x7A: "ITEM_MAGIC_JAR_BIG",
    0x7B: "ITEM_HEART_PIECE_2",
    0x7C: "ITEM_INVALID_1",
    0x7D: "ITEM_INVALID_2",
    0x7E: "ITEM_INVALID_3",
    0x7F: "ITEM_INVALID_4",
    0x80: "ITEM_INVALID_5",
    0x81: "ITEM_INVALID_6",
    0x82: "ITEM_INVALID_7",
    0x83: "ITEM_RECOVERY_HEART",
    0x84: "ITEM_RUPEE_GREEN",
    0x85: "ITEM_RUPEE_BLUE",
    0x86: "ITEM_RUPEE_10",
    0x87: "ITEM_RUPEE_RED",
    0x88: "ITEM_RUPEE_PURPLE",
    0x89: "ITEM_RUPEE_SILVER",
    0x8A: "ITEM_RUPEE_HUGE",
    0x8B: "ITEM_DEKU_STICKS_5",
    0x8C: "ITEM_DEKU_STICKS_10",
    0x8D: "ITEM_DEKU_NUTS_5",
    0x8E: "ITEM_DEKU_NUTS_10",
    0x8F: "ITEM_BOMBS_5",
    0x90: "ITEM_BOMBS_10",
    0x91: "ITEM_BOMBS_20",
    0x92: "ITEM_BOMBS_30",
    0x93: "ITEM_ARROWS_10",
    0x94: "ITEM_ARROWS_30",
    0x95: "ITEM_ARROWS_40",
    0x96: "ITEM_ARROWS_50",
    0x97: "ITEM_BOMBCHUS_20",
    0x98: "ITEM_BOMBCHUS_10",
    0x99: "ITEM_BOMBCHUS_1",
    0x9A: "ITEM_BOMBCHUS_5",
    0x9B: "ITEM_DEKU_STICK_UPGRADE_20",
    0x9C: "ITEM_DEKU_STICK_UPGRADE_30",
    0x9D: "ITEM_DEKU_NUT_UPGRADE_30",
    0x9E: "ITEM_DEKU_NUT_UPGRADE_40",
    0x9F: "ITEM_CHATEAU_2",
    0xA0: "ITEM_MILK",
    0xA1: "ITEM_GOLD_DUST_2",
    0xA2: "ITEM_HYLIAN_LOACH_2",
    0xA3: "ITEM_SEAHORSE_CAUGHT",
    0xA4: "ITEM_MAP_POINT_GREAT_BAY",
    0xA5: "ITEM_MAP_POINT_ZORA_HALL",
    0xA6: "ITEM_MAP_POINT_ROMANI_RANCH",
    0xA7: "ITEM_MAP_POINT_DEKU_PALACE",
    0xA8: "ITEM_MAP_POINT_WOODFALL",
    0xA9: "ITEM_MAP_POINT_CLOCK_TOWN",
    0xAA: "ITEM_MAP_POINT_SNOWHEAD",
    0xAB: "ITEM_MAP_POINT_IKANA_GRAVEYARD",
    0xAC: "ITEM_MAP_POINT_IKANA_CANYON",
    0xAD: "ITEM_MAP_POINT_GORON_VILLAGE",
    0xAE: "ITEM_MAP_POINT_STONE_TOWER",
    0xAF: "ITEM_MAP_POINT_GREAT_BAY_COAST",
    0xB0: "ITEM_MAP_POINT_SOUTHERN_SWAMP",
    0xB1: "ITEM_MAP_POINT_MOUNTAIN_VILLAGE",
    0xB2: "ITEM_MAP_POINT_MILK_ROAD",
    0xB3: "ITEM_MAP_POINT_ZORA_CAPE",
    0xB4: "ITEM_B4",
    0xB5: "ITEM_B5",
    0xB6: "ITEM_B6",
    0xB7: "ITEM_B7",
    0xB8: "ITEM_B8",
    0xB9: "ITEM_B9",
    0xBA: "ITEM_BA",
    0xBB: "ITEM_BB",
    0xBC: "ITEM_BC",
    0xBD: "ITEM_BD",
    0xBE: "ITEM_BE",
    0xBF: "ITEM_BF",
    0xC0: "ITEM_C0",
    0xC1: "ITEM_C1",
    0xC2: "ITEM_C2",
    0xC3: "ITEM_C3",
    0xC4: "ITEM_C4",
    0xC5: "ITEM_C5",
    0xC6: "ITEM_C6",
    0xC7: "ITEM_C7",
    0xC8: "ITEM_C8",
    0xC9: "ITEM_C9",
    0xCA: "ITEM_CA",
    0xCB: "ITEM_CB",
    0xCC: "ITEM_CC",
    0xDC: "ITEM_DC",
    0xDD: "ITEM_DD",
    0xDE: "ITEM_DE",
    0xDF: "ITEM_DF",
    0xE0: "ITEM_E0",
    0xE1: "ITEM_E1",
    0xE2: "ITEM_E2",
    0xE3: "ITEM_E3",
    0xE4: "ITEM_E4",
    0xE5: "ITEM_E5",
    0xE6: "ITEM_E6",
    0xE7: "ITEM_E7",
    0xE8: "ITEM_E8",
    0xE9: "ITEM_E9",
    0xEA: "ITEM_EA",
    0xEB: "ITEM_EB",
    0xEC: "ITEM_EC",
    0xED: "ITEM_ED",
    0xEE: "ITEM_EE",
    0xEF: "ITEM_EF",
    0xF0: "ITEM_F0",
    0xF1: "ITEM_F1",
    0xF2: "ITEM_F2",
    0xFC: "ITEM_FC",
    0xFD: "ITEM_FD",
    0xFE: "ITEM_FE",
    0xFF: "ITEM_NONE",
}

sfx_ids = {
    0x0000: "NA_SE_PL_WALK_GROUND",
    0x0001: "NA_SE_PL_WALK_SAND",
    0x0002: "NA_SE_PL_WALK_CONCRETE",
    0x0003: "NA_SE_PL_WALK_DIRT",
    0x0004: "NA_SE_PL_WALK_WATER0",
    0x0005: "NA_SE_PL_WALK_WATER1",
    0x0006: "NA_SE_PL_WALK_WATER2",
    0x0007: "NA_SE_PL_WALK_MAGMA",
    0x0008: "NA_SE_PL_WALK_GRASS",
    0x0009: "NA_SE_PL_WALK_IRON",
    0x000A: "NA_SE_PL_WALK_LADDER",
    0x000B: "NA_SE_PL_WALK_GLASS",
    0x000C: "NA_SE_PL_WALK_METAL1",
    0x000D: "NA_CODE_DIRT_DEEP",
    0x000E: "NA_SE_PL_WALK_SNOW",
    0x000F: "NA_SE_PL_WALK_ICE",
    0x0010: "NA_SE_PL_JUMP_GROUND",
    0x0011: "NA_SE_PL_JUMP_SAND",
    0x0012: "NA_SE_PL_JUMP_CONCRETE",
    0x0013: "NA_SE_PL_JUMP_DIRT",
    0x0014: "NA_SE_PL_JUMP_WATER0",
    0x0015: "NA_SE_PL_JUMP_WATER1",
    0x0016: "NA_SE_PL_JUMP_WATER2",
    0x0017: "NA_SE_PL_JUMP_MAGMA",
    0x0018: "NA_SE_PL_JUMP_GRASS",
    0x0019: "NA_SE_PL_JUMP_IRON",
    0x001A: "NA_SE_PL_JUMP_LADDER",
    0x001B: "NA_SE_PL_JUMP_GLASS",
    0x001C: "NA_SE_PL_DUMMY_28",
    0x001D: "NA_SE_PL_JUMP_HEAVYBOOTS",
    0x001E: "NA_SE_PL_JUMP_SNOW",
    0x001F: "NA_SE_PL_JUMP_ICE",
    0x0020: "NA_SE_PL_LAND_GROUND",
    0x0021: "NA_SE_PL_LAND_SAND",
    0x0022: "NA_SE_PL_LAND_CONCRETE",
    0x0023: "NA_SE_PL_LAND_DIRT",
    0x0024: "NA_SE_PL_LAND_WATER0",
    0x0025: "NA_SE_PL_LAND_WATER1",
    0x0026: "NA_SE_PL_LAND_WATER2",
    0x0027: "NA_SE_PL_LAND_MAGMA",
    0x0028: "NA_SE_PL_LAND_GRASS",
    0x0029: "NA_SE_PL_LAND_IRON",
    0x002A: "NA_SE_PL_LAND_LADDER",
    0x002B: "NA_SE_PL_LAND_GLASS",
    0x002C: "NA_SE_PL_DUMMY_44",
    0x002D: "NA_SE_PL_LAND_HEAVYBOOTS",
    0x002E: "NA_SE_PL_LAND_SNOW",
    0x002F: "NA_SE_PL_LAND_ICE",
    0x0030: "NA_SE_PL_SLIPDOWN",
    0x0031: "NA_SE_PL_CLIMB_CLIFF",
    0x0032: "NA_SE_PL_SIT_ON_HORSE",
    0x0033: "NA_SE_PL_GET_OFF_HORSE",
    0x0034: "NA_SE_PL_TAKE_OUT_SHIELD",
    0x0035: "NA_SE_PL_CHANGE_ARMS",
    0x0036: "NA_SE_PL_CATCH_BOOMERANG",
    0x0037: "NA_SE_PL_DIVE_INTO_WATER",
    0x0038: "NA_SE_PL_JUMP_OUT_WATER",
    0x0039: "NA_SE_PL_SWIM",
    0x003A: "NA_SE_PL_THROW",
    0x003B: "NA_SE_PL_BODY_BOUND",
    0x003C: "NA_SE_PL_ROLL",
    0x003D: "NA_SE_PL_SKIP",
    0x003E: "NA_SE_PL_BODY_HIT",
    0x003F: "NA_SE_PL_DAMAGE",
    0x0040: "NA_SE_PL_SLIP",
    0x0041: "NA_SE_PL_SLIP_SAND",
    0x0042: "NA_SE_PL_SLIP_CONCRETE",
    0x0043: "NA_SE_PL_SLIP_DIRT",
    0x0044: "NA_SE_PL_SLIP_WATER0",
    0x0045: "NA_SE_PL_SLIP_WATER1",
    0x0046: "NA_SE_PL_SLIP_WATER2",
    0x0047: "NA_SE_PL_SLIP_MAGMA",
    0x0048: "NA_SE_PL_SLIP_GRASS",
    0x0049: "NA_SE_PL_SLIP_IRON",
    0x004A: "NA_SE_PL_SLIP_LADDER",
    0x004B: "NA_SE_PL_SLIP_GLASS",
    0x004C: "NA_SE_PL_DUMMY76",
    0x004D: "NA_SE_PL_SLIP_HEAVYBOOTS",
    0x004E: "NA_SE_PL_SLIP_SNOW",
    0x004F: "NA_SE_PL_SLIP_ICE",
    0x0050: "NA_SE_PL_BOUND",
    0x0051: "NA_SE_PL_BOUND_SAND",
    0x0052: "NA_SE_PL_BOUND_CONCRETE",
    0x0053: "NA_SE_PL_BOUND_DIRT",
    0x0054: "NA_SE_PL_BOUND_WATER0",
    0x0055: "NA_SE_PL_BOUND_WATER1",
    0x0056: "NA_SE_PL_BOUND_WATER2",
    0x0057: "NA_SE_PL_BOUND_MAGMA",
    0x0058: "NA_SE_PL_BOUND_GRASS",
    0x0059: "NA_SE_PL_BOUND_IRON",
    0x005A: "NA_SE_PL_BOUND_LADDER",
    0x005B: "NA_SE_PL_BOUND_WOOD",
    0x005C: "NA_SE_PL_DUMMY_92",
    0x005D: "NA_SE_PL_BOUND_HEAVYBOOTS",
    0x005E: "NA_SE_PL_BOUND_SNOW",
    0x005F: "NA_SE_PL_BOUND_ICE",
    0x0060: "NA_SE_PL_BOW_DRAW",
    0x0061: "NA_SE_PL_MEATL_BOOTS_JUMP",
    0x0062: "NA_SE_PL_DUMMY_98",
    0x0063: "NA_SE_PL_FACE_UP",
    0x0064: "NA_SE_PL_DIVE_BUBBLE",
    0x0065: "NA_SE_PL_MOVE_BUBBLE",
    0x0066: "NA_SE_PL_METALEFFECT_KID",
    0x0067: "NA_SE_PL_METALEFFECT_ADULT",
    0x0068: "NA_SE_PL_SPARK",
    0x0069: "NA_SE_PL_PULL_UP_PLANT",
    0x006A: "NA_SE_PL_PULL_UP_ROCK",
    0x006B: "NA_SE_PL_IN_BUBBLE",
    0x006C: "NA_SE_PL_PULL_UP_BIGROCK",
    0x006D: "NA_SE_PL_SWORD_CHARGE",
    0x006E: "NA_SE_PL_FREEZE",
    0x006F: "NA_SE_PL_PULL_UP_POT",
    0x0070: "NA_SE_PL_KNOCK",
    0x0071: "NA_SE_PL_CALM_HIT",
    0x0072: "NA_SE_PL_CALM_PAT",
    0x0073: "NA_SE_PL_SUBMERGE",
    0x0074: "NA_SE_PL_FREEZE_S",
    0x0075: "NA_SE_PL_ICE_BROKEN",
    0x0076: "NA_SE_PL_SLIP_ICE_LELEL",
    0x0077: "NA_SE_PL_PUT_OUT_ITEM",
    0x0078: "NA_SE_PL_PULL_UP_WOODBOX",
    0x0079: "NA_SE_PL_MAGIC_FIRE",
    0x007A: "NA_SE_PL_MAGIC_WIND_NORMAL",
    0x007B: "NA_SE_PL_MAGIC_WIND_WARP",
    0x007C: "NA_SE_PL_MAGIC_SOUL_NORMAL",
    0x007D: "NA_SE_PL_ARROW_CHARGE_FIRE",
    0x007E: "NA_SE_PL_ARROW_CHARGE_ICE",
    0x007F: "NA_SE_PL_ARROW_CHARGE_LIGHT",
    0x0080: "NA_SE_DUMMY_128",
    0x0081: "NA_SE_DUMMY_129",
    0x0082: "NA_SE_DUMMY_130",
    0x0083: "NA_SE_PL_PULL_UP_RUTO",
    0x0084: "NA_SE_DUMMY_132",
    0x0085: "NA_SE_DUMMY_133",
    0x0086: "NA_SE_DUMMY_134",
    0x0087: "NA_SE_DUMMY_135",
    0x0088: "NA_SE_DUMMY_136",
    0x0089: "NA_SE_DUMMY_137",
    0x008A: "NA_SE_DUMMY_138",
    0x008B: "NA_SE_DUMMY_139",
    0x008C: "NA_SE_DUMMY_140",
    0x008D: "NA_SE_DUMMY_141",
    0x008E: "NA_SE_DUMMY_142",
    0x008F: "NA_SE_DUMMY_143",
    0x0090: "NA_SE_DUMMY_144",
    0x0091: "NA_SE_DUMMY_145",
    0x0092: "NA_SE_DUMMY_146",
    0x0093: "NA_SE_DUMMY_147",
    0x0094: "NA_SE_DUMMY_148",
    0x0095: "NA_SE_DUMMY_149",
    0x0096: "NA_SE_DUMMY_150",
    0x0097: "NA_SE_DUMMY_151",
    0x0098: "NA_SE_DUMMY_152",
    0x0099: "NA_SE_DUMMY_153",
    0x009A: "NA_SE_DUMMY_154",
    0x009B: "NA_SE_DUMMY_155",
    0x009C: "NA_SE_DUMMY_156",
    0x009D: "NA_SE_DUMMY_157",
    0x009E: "NA_SE_DUMMY_158",
    0x009F: "NA_SE_DUMMY_159",
    0x00A0: "NA_SE_DUMMY_160",
    0x00A1: "NA_SE_DUMMY_161",
    0x00A2: "NA_SE_DUMMY_162",
    0x00A3: "NA_SE_DUMMY_163",
    0x00A4: "NA_SE_DUMMY_164",
    0x00A5: "NA_SE_DUMMY_165",
    0x00A6: "NA_SE_DUMMY_166",
    0x00A7: "NA_SE_DUMMY_167",
    0x00A8: "NA_SE_DUMMY_168",
    0x00A9: "NA_SE_DUMMY_169",
    0x00AA: "NA_SE_DUMMY_170",
    0x00AB: "NA_SE_DUMMY_171",
    0x00AC: "NA_SE_DUMMY_172",
    0x00AD: "NA_SE_DUMMY_173",
    0x00AE: "NA_SE_DUMMY_174",
    0x00AF: "NA_SE_DUMMY_175",
    0x00B0: "NA_SE_PL_CRAWL",
    0x00B1: "NA_SE_PL_CRAWL_SAND",
    0x00B2: "NA_SE_PL_CRAWL_CONCRETE",
    0x00B3: "NA_SE_PL_CRAWL_DIRT",
    0x00B4: "NA_SE_PL_CRAWL_WATER0",
    0x00B5: "NA_SE_DUMMY_181",
    0x00B6: "NA_SE_DUMMY_182",
    0x00B7: "NA_SE_DUMMY_183",
    0x00B8: "NA_SE_DUMMY_184",
    0x00B9: "NA_SE_DUMMY_185",
    0x00BA: "NA_SE_DUMMY_186",
    0x00BB: "NA_SE_PL_CRAWL_WOOD",
    0x00BC: "NA_SE_DUMMY_188",
    0x00BD: "NA_SE_DUMMY_189",
    0x00BE: "NA_SE_DUMMY_190",
    0x00BF: "NA_SE_PL_CRAWL_ICE",
    0x00C0: "NA_SE_PL_MAGIC_SOUL_FLASH",
    0x00C1: "NA_SE_PL_ROLL_DUST",
    0x00C2: "NA_SE_DUMMY_194",
    0x00C3: "NA_SE_PL_MAGIC_SOUL_BALL",
    0x00C4: "NA_SE_PL_SPIRAL_HEAL_BEAM",
    0x00C5: "NA_SE_PL_BOUND_NOWEAPON",
    0x00C6: "NA_SE_PL_PLANT_GROW_UP",
    0x00C7: "NA_SE_PL_PLANT_TALLER",
    0x00C8: "NA_SE_PL_MAGIC_WIND_VANISH",
    0x00C9: "NA_SE_PL_HOBBERBOOTS_LV",
    0x00CA: "NA_SE_PL_PLANT_MOVE",
    0x00CB: "NA_SE_EV_WALL_MOVE_SP",
    0x00CC: "NA_SE_PL_PLANT_GROW_BIG",
    0x00CD: "NA_SE_PL_TELESCOPE_MOVEMENT",
    0x00CE: "NA_SE_PL_GIANT_WALK",
    0x00CF: "NA_SE_PL_CHIBI_FAIRY_HEAL",
    0x00D0: "NA_SE_PL_SLIP_LEVEL",
    0x00D1: "NA_SE_PL_SLIP_SAND_LEVEL",
    0x00D2: "NA_SE_PL_SLIP_CONCRETE_LEVEL",
    0x00D3: "NA_SE_PL_SLIP_DIRT_LEVEL",
    0x00D4: "NA_SE_PL_SLIP_WATER0_LEVEL",
    0x00D5: "NA_SE_PL_SLIP_WATER1_LEVEL",
    0x00D6: "NA_SE_PL_SLIP_WATER2_LEVEL",
    0x00D7: "NA_SE_PL_SLIP_MAGMA_LEVEL",
    0x00D8: "NA_SE_PL_SLIP_GRASS_LEVEL",
    0x00D9: "NA_SE_PL_SLIP_IRON_LEVEL",
    0x00DA: "NA_SE_PL_SLIP_LADDER_LEVEL",
    0x00DB: "NA_SE_PL_SLIP_GLASS_LEVEL",
    0x00DC: "NA_SE_PL_DUMMY_220",
    0x00DD: "NA_SE_PL_SLIP_HEAVYBOOTS_LEVEL",
    0x00DE: "NA_SE_PL_DUMMY_222",
    0x00DF: "NA_SE_PL_SLIP_ICE_LEVEL",
    0x00E0: "NA_SE_PL_DEKUNUTS_FIRE",
    0x00E1: "NA_SE_PL_GORON_BALLJUMP",
    0x00E2: "NA_SE_PL_DEKUNUTS_IN_GRD",
    0x00E3: "NA_SE_PL_DEKUNUTS_OUT_GRD",
    0x00E4: "NA_SE_PL_TRANSFORM",
    0x00E5: "NA_SE_PL_TRANSFORM_DEMO",
    0x00E6: "NA_SE_PL_GORON_TO_BALL",
    0x00E7: "NA_SE_PL_BALL_TO_GORON",
    0x00E8: "NA_SE_PL_GORON_PUNCH",
    0x00E9: "NA_SE_PL_SINK_ON_SAND",
    0x00EA: "NA_SE_PL_SINK_ON_SNOW",
    0x00EB: "NA_SE_PL_GORON_BALL_CHARGE",
    0x00EC: "NA_SE_PL_ZORA_SWIM_DASH",
    0x00ED: "NA_SE_PL_ZORA_SWIM_LV",
    0x00EE: "NA_SE_PL_ZORA_SWIM_ROLL",
    0x00EF: "NA_SE_PL_GORON_SQUAT",
    0x00F0: "NA_SE_PL_DUMMY_240",
    0x00F1: "NA_SE_PL_DUMMY_241",
    0x00F2: "NA_SE_PL_DUMMY_242",
    0x00F3: "NA_SE_PL_DUMMY_243",
    0x00F4: "NA_SE_PL_DUMMY_244",
    0x00F5: "NA_SE_PL_DUMMY_245",
    0x00F6: "NA_SE_PL_DUMMY_246",
    0x00F7: "NA_SE_PL_DUMMY_247",
    0x00F8: "NA_SE_PL_DUMMY_248",
    0x00F9: "NA_SE_PL_DUMMY_249",
    0x00FA: "NA_SE_PL_DUMMY_250",
    0x00FB: "NA_SE_PL_DUMMY_251",
    0x00FC: "NA_SE_PL_DUMMY_252",
    0x00FD: "NA_SE_PL_DUMMY_253",
    0x00FE: "NA_SE_PL_DUMMY_254",
    0x00FF: "NA_SE_PL_DUMMY_255",
    0x0100: "NA_SE_PL_DUMMY_256",
    0x0101: "NA_SE_PL_DUMMY_257",
    0x0102: "NA_SE_PL_DUMMY_258",
    0x0103: "NA_SE_PL_DUMMY_259",
    0x0104: "NA_SE_PL_DUMMY_260",
    0x0105: "NA_SE_PL_DUMMY_261",
    0x0106: "NA_SE_PL_DUMMY_262",
    0x0107: "NA_SE_PL_DUMMY_263",
    0x0108: "NA_SE_PL_DUMMY_264",
    0x0109: "NA_SE_PL_DUMMY_265",
    0x010A: "NA_SE_PL_DUMMY_266",
    0x010B: "NA_SE_PL_DUMMY_267",
    0x010C: "NA_SE_PL_DUMMY_268",
    0x010D: "NA_SE_PL_DUMMY_269",
    0x010E: "NA_SE_PL_DUMMY_270",
    0x010F: "NA_SE_PL_DUMMY_271",
    0x0110: "NA_SE_PL_DUMMY_272",
    0x0111: "NA_SE_PL_DUMMY_273",
    0x0112: "NA_SE_PL_DUMMY_274",
    0x0113: "NA_SE_PL_DUMMY_275",
    0x0114: "NA_SE_PL_DUMMY_276",
    0x0115: "NA_SE_PL_DUMMY_277",
    0x0116: "NA_SE_PL_DUMMY_278",
    0x0117: "NA_SE_PL_DUMMY_279",
    0x0118: "NA_SE_PL_DUMMY_280",
    0x0119: "NA_SE_PL_DUMMY_281",
    0x011A: "NA_SE_PL_DUMMY_282",
    0x011B: "NA_SE_PL_DUMMY_283",
    0x011C: "NA_SE_PL_DUMMY_284",
    0x011D: "NA_SE_PL_DUMMY_285",
    0x011E: "NA_SE_PL_DUMMY_286",
    0x011F: "NA_SE_PL_DUMMY_287",
    0x0120: "NA_SE_PL_DUMMY_288",
    0x0121: "NA_SE_PL_DUMMY_289",
    0x0122: "NA_SE_PL_DUMMY_290",
    0x0123: "NA_SE_PL_DUMMY_291",
    0x0124: "NA_SE_PL_DUMMY_292",
    0x0125: "NA_SE_PL_DUMMY_293",
    0x0126: "NA_SE_PL_DUMMY_294",
    0x0127: "NA_SE_PL_DUMMY_295",
    0x0128: "NA_SE_PL_DUMMY_296",
    0x0129: "NA_SE_PL_DUMMY_297",
    0x012A: "NA_SE_PL_DUMMY_298",
    0x012B: "NA_SE_PL_DUMMY_299",
    0x012C: "NA_SE_PL_DUMMY_300",
    0x012D: "NA_SE_PL_DUMMY_301",
    0x012E: "NA_SE_PL_DUMMY_302",
    0x012F: "NA_SE_PL_DUMMY_303",
    0x0130: "NA_SE_PL_DUMMY_304",
    0x0131: "NA_SE_PL_DUMMY_305",
    0x0132: "NA_SE_PL_DUMMY_306",
    0x0133: "NA_SE_PL_DUMMY_307",
    0x0134: "NA_SE_PL_DUMMY_308",
    0x0135: "NA_SE_PL_DUMMY_309",
    0x0136: "NA_SE_PL_DUMMY_310",
    0x0137: "NA_SE_PL_DUMMY_311",
    0x0138: "NA_SE_PL_DUMMY_312",
    0x0139: "NA_SE_PL_DUMMY_313",
    0x013A: "NA_SE_PL_DUMMY_314",
    0x013B: "NA_SE_PL_DUMMY_315",
    0x013C: "NA_SE_PL_DUMMY_316",
    0x013D: "NA_SE_PL_DUMMY_317",
    0x013E: "NA_SE_PL_DUMMY_318",
    0x013F: "NA_SE_PL_DUMMY_319",
    0x0140: "NA_SE_PL_DUMMY_320",
    0x0141: "NA_SE_PL_DUMMY_321",
    0x0142: "NA_SE_PL_DUMMY_322",
    0x0143: "NA_SE_PL_DUMMY_323",
    0x0144: "NA_SE_PL_DUMMY_324",
    0x0145: "NA_SE_PL_DUMMY_325",
    0x0146: "NA_SE_PL_DUMMY_326",
    0x0147: "NA_SE_PL_DUMMY_327",
    0x0148: "NA_SE_PL_DUMMY_328",
    0x0149: "NA_SE_PL_DUMMY_329",
    0x014A: "NA_SE_PL_DUMMY_330",
    0x014B: "NA_SE_PL_DUMMY_331",
    0x014C: "NA_SE_PL_DUMMY_332",
    0x014D: "NA_SE_PL_DUMMY_333",
    0x014E: "NA_SE_PL_DUMMY_334",
    0x014F: "NA_SE_PL_DUMMY_335",
    0x0150: "NA_SE_PL_DUMMY_336",
    0x0151: "NA_SE_PL_DUMMY_337",
    0x0152: "NA_SE_PL_DUMMY_338",
    0x0153: "NA_SE_PL_DUMMY_339",
    0x0154: "NA_SE_PL_DUMMY_340",
    0x0155: "NA_SE_PL_DUMMY_341",
    0x0156: "NA_SE_PL_DUMMY_342",
    0x0157: "NA_SE_PL_DUMMY_343",
    0x0158: "NA_SE_PL_DUMMY_344",
    0x0159: "NA_SE_PL_DUMMY_345",
    0x015A: "NA_SE_PL_DUMMY_346",
    0x015B: "NA_SE_PL_DUMMY_347",
    0x015C: "NA_SE_PL_DUMMY_348",
    0x015D: "NA_SE_PL_DUMMY_349",
    0x015E: "NA_SE_PL_DUMMY_350",
    0x015F: "NA_SE_PL_DUMMY_351",
    0x0160: "NA_SE_EV_MARATHONMAN_RISE",
    0x0161: "NA_SE_PL_DUMMY_353",
    0x0162: "NA_SE_PL_DUMMY_354",
    0x0163: "NA_SE_PL_DUMMY_355",
    0x0164: "NA_SE_PL_DUMMY_356",
    0x0165: "NA_SE_PL_DUMMY_357",
    0x0166: "NA_SE_PL_DUMMY_358",
    0x0167: "NA_SE_PL_DUMMY_359",
    0x0168: "NA_SE_PL_DUMMY_360",
    0x0169: "NA_SE_PL_DUMMY_361",
    0x016A: "NA_SE_PL_DUMMY_362",
    0x016B: "NA_SE_PL_DUMMY_363",
    0x016C: "NA_SE_PL_DUMMY_364",
    0x016D: "NA_SE_PL_DUMMY_365",
    0x016E: "NA_SE_PL_DUMMY_366",
    0x016F: "NA_SE_PL_DUMMY_367",
    0x0170: "NA_SE_EV_MARATHONMAN_LAND",
    0x0171: "NA_SE_PL_DUMMY_369",
    0x0172: "NA_SE_PL_DUMMY_370",
    0x0173: "NA_SE_PL_DUMMY_371",
    0x0174: "NA_SE_PL_DUMMY_372",
    0x0175: "NA_SE_PL_DUMMY_373",
    0x0176: "NA_SE_PL_DUMMY_374",
    0x0177: "NA_SE_PL_DUMMY_375",
    0x0178: "NA_SE_PL_DUMMY_376",
    0x0179: "NA_SE_PL_DUMMY_377",
    0x017A: "NA_SE_PL_DUMMY378",
    0x017B: "NA_SE_PL_DUMMY_379",
    0x017C: "NA_SE_PL_DUMMY_380",
    0x017D: "NA_SE_PL_DUMMY_381",
    0x017E: "NA_SE_PL_DUMMY_382",
    0x017F: "NA_SE_PL_DUMMY_383",
    0x0180: "NA_SE_PL_GORON_CHG_ROLL",
    0x0181: "NA_SE_PL_DUMMY_385",
    0x0182: "NA_SE_PL_DUMMY_386",
    0x0183: "NA_SE_PL_DUMMY_387",
    0x0184: "NA_SE_PL_DUMMY_388",
    0x0185: "NA_SE_PL_DUMMY_389",
    0x0186: "NA_SE_PL_DUMMY_390",
    0x0187: "NA_SE_PL_DUMMY_391",
    0x0188: "NA_SE_PL_DUMMY_392",
    0x0189: "NA_SE_PL_DUMMY_393",
    0x018A: "NA_SE_PL_DUMMY_394",
    0x018B: "NA_SE_PL_DUMMY_395",
    0x018C: "NA_SE_PL_DUMMY_396",
    0x018D: "NA_SE_PL_DUMMY_397",
    0x018E: "NA_SE_PL_DUMMY_398",
    0x018F: "NA_SE_PL_GORON_CHG_ROLL_ICE",
    0x0190: "NA_SE_PL_GORON_ROLL",
    0x0191: "NA_SE_PL_DUMMY_401",
    0x0192: "NA_SE_PL_DUMMY_402",
    0x0193: "NA_SE_PL_DUMMY_403",
    0x0194: "NA_SE_PL_DUMMY_404",
    0x0195: "NA_SE_PL_DUMMY_405",
    0x0196: "NA_SE_PL_DUMMY_406",
    0x0197: "NA_SE_PL_DUMMY_407",
    0x0198: "NA_SE_PL_DUMMY_408",
    0x0199: "NA_SE_PL_DUMMY_409",
    0x019A: "NA_SE_PL_DUMMY_410",
    0x019B: "NA_SE_PL_DUMMY_411",
    0x019C: "NA_SE_PL_DUMMY_412",
    0x019D: "NA_SE_PL_DUMMY_413",
    0x019E: "NA_SE_PL_DUMMY_414",
    0x019F: "NA_SE_PL_GORON_ROLL_ICE",
    0x01A0: "NA_SE_PL_DEKUNUTS_BUD",
    0x01A1: "NA_SE_PL_DEKUNUTS_BUBLE_BREATH",
    0x01A2: "NA_SE_PL_GORON_BALL_CHARGE_FAILED",
    0x01A3: "NA_SE_PL_GORON_BALL_CHARGE_DASH",
    0x01A4: "NA_SE_PL_FACE_CHANGE",
    0x01A5: "NA_SE_PL_FACE_UP_S",
    0x01A6: "NA_SE_PL_DEKUNUTS_STRUGGLE",
    0x01A7: "NA_SE_PL_WARP_PLATE",
    0x01A8: "NA_SE_PL_WARP_PLATE_OUT",
    0x01A9: "NA_SE_PL_DEKUNUTS_ATTACK",
    0x01AA: "NA_SE_PL_TRANSFORM_VOICE",
    0x01AB: "NA_SE_PL_FACE_RETURN",
    0x01AC: "NA_SE_PL_DEKUNUTS_DROP_BOMB",
    0x01AD: "NA_SE_PL_GORON_SLIP",
    0x01AE: "NA_SE_PL_ROLL_SNOW_DUST",
    0x01AF: "NA_SE_PL_ZORA_SPARK_BARRIER",
    0x01B0: "NA_SE_PL_DEKUNUTS_JUMP",
    0x01B1: "NA_SE_PL_DEKUNUTS_JUMP2",
    0x01B2: "NA_SE_PL_DEKUNUTS_JUMP3",
    0x01B3: "NA_SE_PL_DEKUNUTS_JUMP4",
    0x01B4: "NA_SE_PL_DEKUNUTS_JUMP5",
    0x01B5: "NA_SE_PL_DEKUNUTS_JUMP6",
    0x01B6: "NA_SE_PL_DEKUNUTS_JUMP7",
    0x01B7: "NA_SE_PL_DEKUNUTS_JUMP8",
    0x01B8: "NA_SE_PL_GORON_STOMACH_EXPLOSION",
    0x01B9: "NA_SE_PL_GORON_DRINK_BOMB",
    0x01BA: "NA_SE_PL_GET_UP",
    0x01BB: "NA_SE_PL_WARP_WING_OPEN",
    0x01BC: "NA_SE_PL_WARP_WING_CLOSE",
    0x01BD: "NA_SE_PL_WARP_WING_ROLL",
    0x01BE: "NA_SE_PL_WARP_WING_VANISH",
    0x01BF: "NA_SE_PL_DEKUNUTS_MISS_FIRE",
    0x01C0: "NA_SE_PL_FLYING_AIR",
    0x01C1: "NA_SE_PL_FIREWORKS",
    0x01C2: "NA_SE_PL_FIREWORKS_DUMMY",
    0x01C3: "NA_SE_PL_PULL_UP_SNOWBALL",
    0x01C4: "NA_SE_PL_WARP_WING_ROLL_2",
    0x01C5: "NA_SE_PL_TRANSFORM_GIANT",
    0x01C6: "NA_SE_PL_TRANSFORM_NORAML",
    0x01C7: "NA_SE_PL_LI_OKARINATORI",
    0x01C8: "NA_SE_PL_LI_FUTTOBI",
    0x01C9: "NA_SE_PL_LI_OP_OKIAGARI",
    0x01CA: "NA_SE_PL_LI_OP_TATIAGARI",
    0x01CB: "NA_SE_PL_JUMP_METAL",
    0x01CC: "NA_SE_PL_LAND_METAL",
    0x01CD: "NA_SE_PL_BOUND_METAL",
    0x01CE: "NA_SE_PL_WALK_WALL",
    0x01CF: "NA_SE_PL_WALK_WALL_DEKU",
    0x1000: "NA_SE_IT_SWORD_IMPACT",
    0x1001: "NA_SE_IT_SWORD_SWING",
    0x1002: "NA_SE_IT_SWORD_PUTAWAY",
    0x1003: "NA_SE_IT_SWORD_PICKOUT",
    0x1004: "NA_SE_IT_ARROW_SHOT",
    0x1005: "NA_SE_IT_BOOMERANG_THROW",
    0x1006: "NA_SE_IT_SHIELD_BOUND",
    0x1007: "NA_SE_IT_BOW_DRAW",
    0x1008: "NA_SE_IT_SHIELD_REFLECT_SW",
    0x1009: "NA_SE_IT_ARROW_STICK_HRAD",
    0x100A: "NA_SE_IT_HAMMER_HIT",
    0x100B: "NA_SE_IT_HOOKSHOT_CHAIN",
    0x100C: "NA_SE_IT_SHIELD_REFLECT_MG",
    0x100D: "NA_SE_IT_BOMB_IGNIT",
    0x100E: "NA_SE_IT_BOMB_EXPLOSION",
    0x100F: "NA_SE_IT_BOMB_UNEXPLOSION",
    0x1010: "NA_SE_IT_BOOMERANG_FLY",
    0x1011: "NA_SE_IT_SWORD_STRIKE",
    0x1012: "NA_SE_IT_HAMMER_SWING",
    0x1013: "NA_SE_IT_HOOKSHOT_REFLECT",
    0x1014: "NA_SE_IT_HOOKSHOT_STICK_CRE",
    0x1015: "NA_SE_IT_ARROW_STICK_OBJ",
    0x1016: "NA_SE_IT_SWORD_SLASH",
    0x1017: "NA_SE_IT_SWORD_SLASH_HARD",
    0x1018: "NA_SE_IT_SWORD_SWING_HARD",
    0x1019: "NA_SE_IT_BOMB_BOUND",
    0x101A: "NA_SE_IT_WALL_HIT_HARD",
    0x101B: "NA_SE_IT_WALL_HIT_SOFT",
    0x101C: "NA_SE_IT_STONE_HIT",
    0x101D: "NA_SE_IT_WOODSTICK_BROKEN",
    0x101E: "NA_SE_IT_LASH",
    0x101F: "NA_SE_IT_SHIELD_SWING",
    0x1020: "NA_SE_IT_SLING_SHOT",
    0x1021: "NA_SE_IT_SLING_DRAW",
    0x1022: "NA_SE_IT_SWORD_CHARGE",
    0x1023: "NA_SE_IT_ROLLING_CUT",
    0x1024: "NA_SE_IT_SWORD_STRIKE_HARD",
    0x1025: "NA_SE_IT_SLING_REFLECT",
    0x1026: "NA_SE_IT_SHIELD_REMOVE",
    0x1027: "NA_SE_IT_HOOKSHOT_READY",
    0x1028: "NA_SE_IT_HOOKSHOT_RECEIVE",
    0x1029: "NA_SE_IT_HOOKSHOT_STICK_OBJ",
    0x102A: "NA_SE_IT_SWORD_REFLECT_MG",
    0x102B: "NA_SE_IT_DEKU",
    0x102C: "NA_SE_IT_WALL_HIT_BUYO",
    0x102D: "NA_SE_IT_SWORD_PUTAWAY_STN",
    0x102E: "NA_SE_IT_ROLLING_CUT_LV1",
    0x102F: "NA_SE_IT_ROLLING_CUT_LV2",
    0x1030: "NA_SE_IT_BOW_FLICK",
    0x1031: "NA_SE_IT_BOMBCHU_MOVE",
    0x1032: "NA_SE_IT_SHIELD_CHARGE_LV1",
    0x1033: "NA_SE_IT_SHIELD_CHARGE_LV2",
    0x1034: "NA_SE_IT_SHIELD_CHARGE_LV3",
    0x1035: "NA_SE_IT_SLING_FLICK",
    0x1036: "NA_SE_IT_SWORD_STICK_STN",
    0x1037: "NA_SE_IT_REFLECTION_WOOD",
    0x1038: "NA_SE_IT_SHIELD_REFLECT_MG2",
    0x1039: "NA_SE_IT_MAGIC_ARROW_SHOT",
    0x103A: "NA_SE_IT_EXPLOSION_FRAME",
    0x103B: "NA_SE_IT_EXPLOSION_ICE",
    0x103C: "NA_SE_IT_EXPLOSION_LIGHT",
    0x103D: "NA_SE_IT_FISHING_REEL_SLOW",
    0x103E: "NA_SE_IT_FISHING_REEL_HIGH",
    0x103F: "NA_SE_IT_PULL_FISHING_ROD",
    0x1040: "NA_SE_IT_DM_FLYING_GOD_PASS",
    0x1041: "NA_SE_IT_DM_FLYING_GOD_DASH",
    0x1042: "NA_SE_IT_DM_RING_EXPLOSION",
    0x1043: "NA_SE_IT_DM_RING_GATHER",
    0x1044: "NA_SE_IT_INGO_HORSE_NEIGH",
    0x1045: "NA_SE_IT_EARTHQUAKE",
    0x1046: "NA_SE_IT_ERUPTION_PILLAR",
    0x1047: "NA_SE_IT_KAKASHI_JUMP",
    0x1048: "NA_SE_IT_FLAME",
    0x1049: "NA_SE_IT_SHIELD_BEAM",
    0x104A: "NA_SE_IT_FISHING_HIT",
    0x104B: "NA_SE_IT_GOODS_APPEAR",
    0x104C: "NA_SE_IT_MAJIN_SWORD_BROKEN",
    0x104D: "NA_SE_IT_HAND_CLAP",
    0x104E: "NA_SE_IT_MASTER_SWORD_SWING",
    0x104F: "NA_SE_IT_GORON_BALLFANG",
    0x1050: "NA_SE_IT_DEKUNUTS_FLOWER_OPEN",
    0x1051: "NA_SE_IT_DEKUNUTS_FLOWER_ROLL",
    0x1052: "NA_SE_IT_DEKUNUTS_FLOWER_CLOSE",
    0x1053: "NA_SE_IT_DEKUNUTS_BUBLE_BROKEN",
    0x1054: "NA_SE_IT_DEKUNUTS_BUBLE_VANISH",
    0x1055: "NA_SE_IT_DEKUNUTS_DROP_BOMB",
    0x1056: "NA_SE_IT_SET_TRANSFORM_MASK",
    0x1057: "NA_SE_IT_GORON_PUNCH_SWING",
    0x1058: "NA_SE_IT_TRANSFORM_MASK_BROKEN",
    0x1059: "NA_SE_IT_ZORA_KICK_SWING",
    0x105A: "NA_SE_IT_DEKUNUTS_BUBLE_SHOT_LEVEL",
    0x105B: "NA_SE_IT_BIG_BOMB_IGNIT",
    0x105C: "NA_SE_IT_BIG_BOMB_EXPLOSION",
    0x105D: "NA_SE_IT_REFLECTION_SNOW",
    0x105E: "NA_SE_IT_GORON_ROLLING_REFLECTION",
    0x105F: "NA_SE_IT_MASK_BOUND_0",
    0x1060: "NA_SE_IT_MASK_BOUND_1",
    0x1061: "NA_SE_IT_MASK_BOUND_SAND",
    0x1062: "NA_SE_IT_REFLECTION_WATER",
    0x1063: "NA_SE_IT_KYOJIN_BEARING",
    0x1064: "NA_SE_FISHING_REEL_SLOW2",
    0x1065: "NA_SE_IT_LURE_LAND1",
    0x1066: "NA_SE_IT_ROD_THROW",
    0x1067: "NA_SE_IT_REFLECT_BOSS",
    0x1068: "NA_SE_IT_SHIELD_SWING_ZORA",
    0x1069: "NA_SE_IT_SHIELD_REMOVE_ZORA",
    0x106A: "NA_SE_IT_BOMB_EXPLOSION2",
    0x106B: "NA_SE_IT_FISHING_REEL_REVERSE",
    0x106C: "NA_SE_IT_FISHING_WORM_BOUND",
    0x106D: "NA_SE_IT_DUMMY_109",
    0x106E: "NA_SE_IT_DUMMY_110",
    0x106F: "NA_SE_IT_DUMMY_111",
    0x2000: "NA_SE_EV_DOOR_OPEN",
    0x2001: "NA_SE_EV_DOOR_CLOSE",
    0x2002: "NA_SE_EV_EXPLOSION",
    0x2003: "NA_SE_EV_HORSE_WALK",
    0x2004: "NA_SE_EV_HORSE_RUN",
    0x2005: "NA_SE_EV_HORSE_NEIGH",
    0x2006: "NA_SE_EV_RIVER_STREAM",
    0x2007: "NA_SE_EV_WATER_WALL_BIG",
    0x2008: "NA_SE_EV_OUT_OF_WATER",
    0x2009: "NA_SE_EV_DIVE_WATER",
    0x200A: "NA_SE_EV_ROCK_SLIDE",
    0x200B: "NA_SE_EV_MAGMA_LEVEL",
    0x200C: "NA_SE_EV_BRIDGE_OPEN",
    0x200D: "NA_SE_EV_BRIDGE_CLOSE",
    0x200E: "NA_SE_EV_BRIDGE_OPEN_STOP",
    0x200F: "NA_SE_EV_BRIDGE_CLOSE_STOP",
    0x2010: "NA_SE_EV_WALL_BROKEN",
    0x2011: "NA_SE_EV_CHICKEN_CRY_N",
    0x2012: "NA_SE_EV_CHICKEN_CRY_A",
    0x2013: "NA_SE_EV_CHICKEN_CRY_M",
    0x2014: "NA_SE_EV_SLIDE_DOOR_OPEN",
    0x2015: "NA_SE_EV_FOOT_SWITCH",
    0x2016: "NA_SE_EV_HORSE_GROAN",
    0x2017: "NA_SE_EV_BOMB_DROP_WATER",
    0x2018: "NA_SE_EV_HORSE_JUMP",
    0x2019: "NA_SE_EV_HORSE_LAND",
    0x201A: "NA_SE_EV_HORSE_SLIP",
    0x201B: "NA_SE_EV_WHITE_FAIRY_DASH",
    0x201C: "NA_SE_EV_SLIDE_DOOR_CLOSE",
    0x201D: "NA_SE_EV_BIGWALL_BOUND",
    0x201E: "NA_SE_EV_STONE_STATUE_OPEN",
    0x201F: "NA_SE_EV_TBOX_UNLOCK",
    0x2020: "NA_SE_EV_TBOX_OPEN",
    0x2021: "NA_SE_SY_TIMER",
    0x2022: "NA_SE_EV_FLAME_IGNITION",
    0x2023: "NA_SE_EV_SPEAR_HIT",
    0x2024: "NA_SE_EV_ELEVATOR_MOVE",
    0x2025: "NA_SE_EV_WARP_HOLE",
    0x2026: "NA_SE_EV_LINK_WARP",
    0x2027: "NA_SE_EV_PILLAR_SINK",
    0x2028: "NA_SE_EV_WATER_WALL",
    0x2029: "NA_SE_EV_RIVER_STREAM_S",
    0x202A: "NA_SE_EV_RIVER_STREAM_F",
    0x202B: "NA_SE_EV_KID_HORSE_LAND2",
    0x202C: "NA_SE_EV_KID_HORSE_SANDDUST",
    0x202D: "NA_SE_EV_DUMMY_45",
    0x202E: "NA_SE_EV_LIGHTNING",
    0x202F: "NA_SE_EV_BOMB_BOUND",
    0x2030: "NA_SE_EV_WATERDROP",
    0x2031: "NA_SE_EV_TORCH",
    0x2032: "NA_SE_EV_MAGMA_LEVEL_M",
    0x2033: "NA_SE_EV_FIRE_PILLAR",
    0x2034: "NA_SE_EV_FIRE_PLATE",
    0x2035: "NA_SE_EV_BLOCK_BOUND",
    0x2036: "NA_SE_EV_METALDOOR_SLIDE",
    0x2037: "NA_SE_EV_METALDOOR_STOP",
    0x2038: "NA_SE_EV_BLOCK_SHAKE",
    0x2039: "NA_SE_EV_BOX_BREAK",
    0x203A: "NA_SE_EV_HAMMER_SWITCH",
    0x203B: "NA_SE_EV_MAGMA_LEVEL_L",
    0x203C: "NA_SE_EV_SPEAR_FENCE",
    0x203D: "NA_SE_EV_WATERDROP_GRD",
    0x203E: "NA_SE_EV_EXPLSION_LONG",
    0x203F: "NA_SE_EV_WATER_WALL_BIG_SILENT",
    0x2040: "NA_SE_EV_DESERT_WARPHOLE",
    0x2041: "NA_SE_EV_FOUNTAIN",
    0x2042: "NA_SE_EV_KID_HORSE_WALK",
    0x2043: "NA_SE_EV_KID_HORSE_RUN",
    0x2044: "NA_SE_EV_KID_HORSE_NEIGH",
    0x2045: "NA_SE_EV_KID_HORSE_GROAN",
    0x2046: "NA_SE_EV_S_STONE_FLASH",
    0x2047: "NA_SE_EV_LIGHT_GATHER",
    0x2048: "NA_SE_EV_TREE_CUT",
    0x2049: "NA_SE_EV_VOLCANO",
    0x204A: "NA_SE_EV_POSTMAN_WALK",
    0x204B: "NA_SE_EV_POSTMACHINE_HIT_OPEN",
    0x204C: "NA_SE_EV_POSTMACHINE_OPEN",
    0x204D: "NA_SE_EV_CHINETRAP_DOWN",
    0x204E: "NA_SE_EV_PLANT_BROKEN",
    0x204F: "NA_SE_EV_STONE_SWITCH_ON",
    0x2050: "NA_SE_EV_FLUTTER_FLAG",
    0x2051: "NA_SE_EV_TRAP_BOUND",
    0x2052: "NA_SE_EV_ROCK_BROKEN",
    0x2053: "NA_SE_EV_FANTOM_WARP_S2",
    0x2054: "NA_SE_EV_FANTOM_WARP_L2",
    0x2055: "NA_SE_EV_COFFIN_CAP_OPEN",
    0x2056: "NA_SE_EV_TRE_BOX_BOUND",
    0x2057: "NA_SE_EV_WIND_TRAP",
    0x2058: "NA_SE_EV_TRAP_OBJ_SLIDE",
    0x2059: "NA_SE_EV_METALDOOR_OPEN",
    0x205A: "NA_SE_EV_METALDOOR_CLOSE",
    0x205B: "NA_SE_EV_BURN_OUT",
    0x205C: "NA_SE_EV_BLOCKSINK",
    0x205D: "NA_SE_EV_CROWD",
    0x205E: "NA_SE_EV_WATER_LEVEL_DOWN",
    0x205F: "NA_SE_EV_NAVY_VANISH",
    0x2060: "NA_SE_EV_STONE_SWITCH_OFF",
    0x2061: "NA_SE_EV_WEB_VIBRATION",
    0x2062: "NA_SE_EV_ICE_STAND_APPEAR",
    0x2063: "NA_SE_EV_ROLL_STAND",
    0x2064: "NA_SE_EV_SEESAW_WATER_BOUND",
    0x2065: "NA_SE_EV_SECOM_CONVEYOR",
    0x2066: "NA_SE_EV_WOODDOOR_OPEN",
    0x2067: "NA_SE_EV_METALGATE_OPEN",
    0x2068: "NA_SE_IT_SCOOP_UP_WATER",
    0x2069: "NA_SE_EV_FISH_LEAP",
    0x206A: "NA_SE_EV_KAKASHI_SWING",
    0x206B: "NA_SE_EV_KAKASHI_ROLL",
    0x206C: "NA_SE_EV_BOTTLE_CAP_OPEN",
    0x206D: "NA_SE_EV_G_STONE_CRUSH",
    0x206E: "NA_SE_EV_KAKASH_LONGI_ROLL",
    0x206F: "NA_SE_EV_SUN_MARK_FLASH",
    0x2070: "NA_SE_EV_FALL_DOWN_DIRT",
    0x2071: "NA_SE_EV_SEESAW_BOUND",
    0x2072: "NA_SE_EV_FAIRY_ATTACK",
    0x2073: "NA_SE_EV_WOOD_HIT",
    0x2074: "NA_SE_EV_SCOOPUP_WATER",
    0x2075: "NA_SE_EV_DROP_FALL",
    0x2076: "NA_SE_EV_WOOD_GEAR",
    0x2077: "NA_SE_EV_TREE_SWING",
    0x2078: "NA_SE_EV_AUTO_DOOR_CLOSE",
    0x2079: "NA_SE_EV_NAVY_FLY_REBIRTH",
    0x207A: "NA_SE_EV_CHAINLIFT_STOP",
    0x207B: "NA_SE_EV_TRE_BOX_APPEAR",
    0x207C: "NA_SE_EV_CHAIN_KEY_UNLOCK",
    0x207D: "NA_SE_EV_SPINE_TRAP_MOVE",
    0x207E: "NA_SE_EV_HEALING",
    0x207F: "NA_SE_EV_GREAT_FAIRY_APPEAR",
    0x2080: "NA_SE_EV_GREAT_FAIRY_VANISH",
    0x2081: "NA_SE_EV_RED_EYE",
    0x2082: "NA_SE_EV_ROLL_STAND_2",
    0x2083: "NA_SE_EV_WALL_SLIDE",
    0x2084: "NA_SE_EV_TRE_BOX_FLASH",
    0x2085: "NA_SE_EV_WINDMILL_LEVEL",
    0x2086: "NA_SE_EV_GOTO_HEAVEN",
    0x2087: "NA_SE_EV_POT_BROKEN",
    0x2088: "NA_SE_PL_PUT_DOWN_POT",
    0x2089: "NA_SE_EV_DIVE_INTO_WATER",
    0x208A: "NA_SE_EV_JUMP_OUT_WATER",
    0x208B: "NA_SE_EV_ICE_PIECE",
    0x208C: "NA_SE_EV_TRIFORCE",
    0x208D: "NA_SE_EV_AURORA",
    0x208E: "NA_SE_EV_CHIBI_FAIRY_SAVED",
    0x208F: "NA_SE_EV_BUYOSTAND_RISING",
    0x2090: "NA_SE_EV_BUYOSTAND_FALL",
    0x2091: "NA_SE_EV_MILK_POT_BROKEN",
    0x2092: "NA_SE_EV_CHAIR_ROLL",
    0x2093: "NA_SE_EV_STONEDOOR_STOP",
    0x2094: "NA_SE_EV_S_STONE_REVIVAL",
    0x2095: "NA_SE_EV_WATER_TANK",
    0x2096: "NA_SE_EV_HUMAN_BOUND",
    0x2097: "NA_SE_EV_TOILET_WATER",
    0x2098: "NA_SE_EV_EARTHQUAKE",
    0x2099: "NA_SE_EV_SWEEP",
    0x209A: "NA_SE_EV_GOD_LIGHTBALL_2",
    0x209B: "NA_SE_EV_RUN_AROUND",
    0x209C: "NA_SE_EV_CONSENTRATION",
    0x209D: "NA_SE_EV_TIMETRIP_LIGHT",
    0x209E: "NA_SE_EV_DOOR_BELL",
    0x209F: "NA_SE_EV_BOUND_ON_MAGMA",
    0x20A0: "NA_SE_EV_HONEYCOMB_FALL",
    0x20A1: "NA_SE_EV_JUMP_CONC",
    0x20A2: "NA_SE_EV_ICE_MELT",
    0x20A3: "NA_SE_EV_FIRE_PILLAR_S",
    0x20A4: "NA_SE_EV_BLOCK_RISING",
    0x20A5: "NA_SE_EV_CHINCLE_SPELL_EFFECT",
    0x20A6: "NA_SE_EV_LINK_WARP_IN",
    0x20A7: "NA_SE_EV_LINK_WARP_OUT",
    0x20A8: "NA_SE_EV_FIATY_HEAL",
    0x20A9: "NA_SE_EV_CHAIN_KEY_UNLOCK_B",
    0x20AA: "NA_SE_EV_WOODBOX_BREAK",
    0x20AB: "NA_SE_EV_PUT_DOWN_WOODBOX",
    0x20AC: "NA_SE_EV_LAND_DIRT",
    0x20AD: "NA_SE_EV_FLOOR_ROLLING",
    0x20AE: "NA_SE_EV_DOG_CRY_EVENING",
    0x20AF: "NA_SE_EV_JABJAB_HICCUP",
    0x20B0: "NA_SE_EV_STICK_SWING",
    0x20B1: "NA_SE_EV_FROG_JUMP",
    0x20B2: "NA_SE_EV_ICE_FREEZE",
    0x20B3: "NA_SE_EV_BURNING",
    0x20B4: "NA_SE_EV_WOODPLATE_BOUND",
    0x20B5: "NA_SE_EV_MOON_CRY",
    0x20B6: "NA_SE_EV_JABJAB_GROAN",
    0x20B7: "NA_SE_EV_WAVE_S",
    0x20B8: "NA_SE_EV_BIGBALL_ROLL",
    0x20B9: "NA_SE_EV_ELEVATOR_MOVE3",
    0x20BA: "NA_SE_EV_DIAMOND_SWITCH",
    0x20BB: "NA_SE_EV_FLAME_OF_FIRE",
    0x20BC: "NA_SE_EV_FISH_GROW_UP",
    0x20BD: "NA_SE_EV_FLYING_AIR",
    0x20BE: "NA_SE_EV_PASS_AIR",
    0x20BF: "NA_SE_EV_COME_UP_DEKU_JR",
    0x20C0: "NA_SE_EV_SAND_STORM",
    0x20C1: "NA_SE_EV_BOILED_WATER_S",
    0x20C2: "NA_SE_EV_GRAVE_EXPLOSION",
    0x20C3: "NA_SE_EV_LURE_MOVE_W",
    0x20C4: "NA_SE_EV_POT_MOVE_START",
    0x20C5: "NA_SE_EV_DIVE_INTO_WATER_L",
    0x20C6: "NA_SE_EV_OUT_OF_WATER_L",
    0x20C7: "NA_SE_EV_BOILED_WATER_L",
    0x20C8: "NA_SE_EV_DIG_UP",
    0x20C9: "NA_SE_EV_WOOD_BOUND",
    0x20CA: "NA_SE_EV_WATER_BUBBLE",
    0x20CB: "NA_SE_EV_ICE_BROKEN",
    0x20CC: "NA_SE_EV_FROG_GROW_UP",
    0x20CD: "NA_SE_EV_WATER_CONVECTION",
    0x20CE: "NA_SE_EV_GROUND_GATE_OPEN",
    0x20CF: "NA_SE_EV_FACE_BREAKDOWN",
    0x20D0: "NA_SE_EV_TOILET_HAND_APPEAR",
    0x20D1: "NA_SE_EV_TOILET_HAND_VANISH",
    0x20D2: "NA_SE_EV_ROUND_TRAP_MOVE",
    0x20D3: "NA_SE_EV_HIT_SOUND",
    0x20D4: "NA_SE_EV_ICE_SWING",
    0x20D5: "NA_SE_EV_DOWN_TO_GROUND",
    0x20D6: "NA_SE_EV_BIG_TORTOISE_SWIM",
    0x20D7: "NA_SE_EV_TORTOISE_WAKE_UP",
    0x20D8: "NA_SE_EV_SMALL_DOG_BARK",
    0x20D9: "NA_SE_EV_RUPY_FALL",
    0x20DA: "NA_SE_EV_RAIN",
    0x20DB: "NA_SE_EV_IRON_DOOR_OPEN",
    0x20DC: "NA_SE_EV_IRON_DOOR_CLOSE",
    0x20DD: "NA_SE_EV_WHIRLPOOL",
    0x20DE: "NA_SE_EV_BIG_TORTOISE_ROLL",
    0x20DF: "NA_SE_EV_COW_CRY",
    0x20E0: "NA_SE_EV_METAL_BOX_BOUND",
    0x20E1: "NA_SE_EV_ELECTRIC_EXPLOSION",
    0x20E2: "NA_SE_EV_HEAVY_THROW",
    0x20E3: "NA_SE_EV_FROG_CRY_0",
    0x20E4: "NA_SE_EV_FROG_CRY_1",
    0x20E5: "NA_SE_EV_COW_CRY_LV",
    0x20E6: "NA_SE_EV_RONRON_DOOR_CLOSE",
    0x20E7: "NA_SE_EV_BUTTERFRY_TO_FAIRY",
    0x20E8: "NA_SE_EV_FIVE_COUNT_LUPY",
    0x20E9: "NA_SE_EV_STONE_GROW_UP",
    0x20EA: "NA_SE_EV_STONE_LAUNCH",
    0x20EB: "NA_SE_EV_STONE_ROLLING",
    0x20EC: "NA_SE_EV_TOGE_STICK_ROLLING",
    0x20ED: "NA_SE_EV_TOWER_ENERGY",
    0x20EE: "NA_SE_EV_MOON_LIGHT_PILLAR",
    0x20EF: "NA_SE_EV_MONKEY_WALK",
    0x20F0: "NA_SE_EV_KNIGHT_WALK",
    0x20F1: "NA_SE_EV_PILLAR_MOVE_STOP",
    0x20F2: "NA_SE_EV_WAVE",
    0x20F3: "NA_SE_EV_BIGBELL",
    0x20F4: "NA_SE_EV_NUTS_BROKEN",
    0x20F5: "NA_SE_EV_SNOWBALL_BROKEN",
    0x20F6: "NA_SE_EV_SMALLBALL_ROLL",
    0x20F7: "NA_SE_EV_FLOWERPETAL_MOVE",
    0x20F8: "NA_SE_EV_FLOWERPETAL_STOP",
    0x20F9: "NA_SE_EV_FLOWER_ROLLING",
    0x20FA: "NA_SE_EV_GLASSBROKEN_IMPACT",
    0x20FB: "NA_SE_EV_GLASSBROKEN_BOUND",
    0x20FC: "NA_SE_EV_BIGBALL_ROLL_SR",
    0x20FD: "NA_SE_EV_SMALL_SNOWBALL_BROKEN",
    0x20FE: "NA_SE_EV_STATUE_VANISH",
    0x20FF: "NA_SE_EV_BIGBALL_BOUND",
    0x2100: "NA_SE_EV_MONKEY_VO_WALK",
    0x2101: "NA_SE_EV_MONKEY_VO_JOY",
    0x2102: "NA_SE_EV_WALK_WATER",
    0x2103: "NA_SE_EV_PLATE_LIFT_LEVEL",
    0x2104: "NA_SE_EV_BIGBALL_ROLL_2",
    0x2105: "NA_SE_EV_BIGBALL_ROLL_SR_2",
    0x2106: "NA_SE_EV_BIGBALL_ROLL_3",
    0x2107: "NA_SE_EV_BIGBALL_ROLL_SR_3",
    0x2108: "NA_SE_EV_BEAVER_SWIM_MOTOR",
    0x2109: "NA_SE_EV_BEAVER_SWIM_HAND",
    0x210A: "NA_SE_EV_SMALL_DOG_CRY",
    0x210B: "NA_SE_EV_SMALL_DOG_GROAN",
    0x210C: "NA_SE_EV_SMALL_DOG_ATK_BARK",
    0x210D: "NA_SE_EV_ICE_PILLAR_RISING",
    0x210E: "NA_SE_EV_ICE_PILLAR_FALL",
    0x210F: "NA_SE_EV_GORON_CHEER",
    0x2110: "NA_SE_EV_SMALL_DOG_ANG_BARK",
    0x2111: "NA_SE_EV_COMICAL_JUMP",
    0x2112: "NA_SE_EV_LIGHTNING_HARD",
    0x2113: "NA_SE_EV_SMALL_DOG_WHINE",
    0x2114: "NA_SE_EV_PANIC_IN_HOUSE",
    0x2115: "NA_SE_EV_CLOCK_TOWER_BELL",
    0x2116: "NA_SE_EV_CLOCK_TOWER_SECOND_HAND",
    0x2117: "NA_SE_EV_SIGNAL_BIGBELL",
    0x2118: "NA_SE_EV_DUMMY_280",
    0x2119: "NA_SE_EV_BEAVER_VOICE_0",
    0x211A: "NA_SE_EV_BEAVER_VOICE_1",
    0x211B: "NA_SE_EV_WATERWHEEL_LEVEL",
    0x211C: "NA_SE_EV_WOOD_GATE_OPEN_N",
    0x211D: "NA_SE_EV_INVISIBLE_MONKEY",
    0x211E: "NA_SE_EV_CRUISER",
    0x211F: "NA_SE_EV_SECRET_CHEER",
    0x2120: "NA_SE_EV_BOTTLE_WATERING",
    0x2121: "NA_SE_EV_MONKEY_VO_SADNESS",
    0x2122: "NA_SE_EV_SNOWSTORM_HARD",
    0x2123: "NA_SE_EV_UNSKILLFUL_OCARINA",
    0x2124: "NA_SE_EV_BLACK_FAIRY_DASH",
    0x2125: "NA_SE_EV_FAIRY_SURPRISE",
    0x2126: "NA_SE_EV_MONDO_SURPRISE",
    0x2127: "NA_SE_EV_SPOT_LIGHT_OPEN",
    0x2128: "NA_SE_EV_HOUSE_BROKEN",
    0x2129: "NA_SE_EV_MOON_FALL",
    0x212A: "NA_SE_EV_OCARINA_BOUND_0",
    0x212B: "NA_SE_EV_OCARINA_BOUND_1",
    0x212C: "NA_SE_EV_BOMBERS_WALK",
    0x212D: "NA_SE_EV_BOMBERS_LAND",
    0x212E: "NA_SE_EV_BOMBERS_SHOT_BREATH",
    0x212F: "NA_SE_EV_BOMBERS_SHOT_EXPLOSUIN",
    0x2130: "NA_SE_EV_BOMBERS_JUMP",
    0x2131: "NA_SE_EV_SOLDIER_WALK",
    0x2132: "NA_SE_EV_ROCK_CUBE_RISING",
    0x2133: "NA_SE_EV_ROCK_CUBE_FALL",
    0x2134: "NA_SE_EV_BELL_SPIT",
    0x2135: "NA_SE_EV_BELL_SIGH",
    0x2136: "NA_SE_EV_BELL_BRAKE",
    0x2137: "NA_SE_EV_DOG_SWIM",
    0x2138: "NA_SE_EV_CHIBI_FAIRY_HEAL_ORG",
    0x2139: "NA_SE_EV_BOMBERS_CLIMB",
    0x213A: "NA_SE_EV_WOODPLATE_BROKEN",
    0x213B: "NA_SE_EV_WATER_LEVEL_DOWN_FIX",
    0x213C: "NA_SE_EV_HONEYCOMB_BROKEN",
    0x213D: "NA_SE_EV_CLOCK_TOWER_UP",
    0x213E: "NA_SE_EV_CLOCK_TOWER_STOP",
    0x213F: "NA_SE_EV_CLOCK_TOWER_FALL",
    0x2140: "NA_SE_EV_CLOCK_TOWER_BOUND_0",
    0x2141: "NA_SE_EV_CLOCK_TOWER_BOUND_1",
    0x2142: "NA_SE_EV_CLOCK_TOWER_BOUND_2",
    0x2143: "NA_SE_EV_STONEDOOR_OPEN_S",
    0x2144: "NA_SE_EV_ICE_MELT_LEVEL",
    0x2145: "NA_SE_EV_CLOCK_TOWER_STAIR_MOVE",
    0x2146: "NA_SE_EV_DUMMY_326",
    0x2147: "NA_SE_EV_OBJECT_STICK",
    0x2148: "NA_SE_EV_CHICK_TO_CHICKEN",
    0x2149: "NA_SE_EV_MUJURA_BALLOON_BROKEN",
    0x214A: "NA_SE_EV_BALLOON_SWELL",
    0x214B: "NA_SE_EV_SEAHORSE_OUT_BOTTLE",
    0x214C: "NA_SE_EV_KYOJIN_VOICE_SUCCESS",
    0x214D: "NA_SE_EV_KYOJIN_VOICE_FAIL",
    0x214E: "NA_SE_EV_KYOJIN_WALK",
    0x214F: "NA_SE_EV_MOON_FALL_LAST",
    0x2150: "NA_SE_EV_EARTHQUAKE_LAST",
    0x2151: "NA_SE_EV_SEAHORSE_SWIM",
    0x2152: "NA_SE_EV_OPEN_AMBRELLA",
    0x2153: "NA_SE_EV_BUTLER_FRY",
    0x2154: "NA_SE_EV_PIRATE_SHIP",
    0x2155: "NA_SE_EV_DRAIN",
    0x2156: "NA_SE_EV_DORA_L",
    0x2157: "NA_SE_EV_LOG_BOUND",
    0x2158: "NA_SE_EV_CART_WHEEL",
    0x2159: "NA_SE_EV_EARTHQUAKE_LAST2",
    0x215A: "NA_SE_EV_DORA_S",
    0x215B: "NA_SE_EV_ROCK_FALL",
    0x215C: "NA_SE_EV_FREEZE_S",
    0x215D: "NA_SE_EV_WOOD_BOUND_S",
    0x215E: "NA_SE_EV_CLOSE_AMBRELLA",
    0x215F: "NA_SE_EV_OBJECT_SLIDE",
    0x2160: "NA_SE_EV_ROLL_AND_FALL",
    0x2161: "NA_SE_EV_GORON_BOUND_0",
    0x2162: "NA_SE_EV_GORON_BOUND_1",
    0x2163: "NA_SE_EV_MONKEY_VO_DAMAGE",
    0x2164: "NA_SE_EV_FORT_RISING",
    0x2165: "NA_SE_EV_MONKEY_VO_REWARD",
    0x2166: "NA_SE_EV_WATER_PURIFICATION",
    0x2167: "NA_SE_EV_OWL_WARP_SWITCH_ON",
    0x2168: "NA_SE_EV_BIG_WATER_WHEEL_RR",
    0x2169: "NA_SE_EV_BIG_WATER_WHEEL_LR",
    0x216A: "NA_SE_EV_SMALL_WATER_WHEEL",
    0x216B: "NA_SE_EV_COCK_SWITCH_ROLL",
    0x216C: "NA_SE_EV_COCK_SWITCH_STOP",
    0x216D: "NA_SE_EV_PIPE_STREAM_START",
    0x216E: "NA_SE_EV_WATER_PILLAR",
    0x216F: "NA_SE_EV_SEESAW_INCLINE",
    0x2170: "NA_SE_EV_ZORA_WALK",
    0x2171: "NA_SE_EV_PIRATE_WALK",
    0x2172: "NA_SE_EV_PILLAR_UP_FAST",
    0x2173: "NA_SE_EV_DUMMY_WATER_WHEEL_RR",
    0x2174: "NA_SE_EV_DUMMY_WATER_WHEEL_LR",
    0x2175: "NA_SE_EV_MUJURA_FOLLOWERS_FLY",
    0x2176: "NA_SE_EV_MAKE_TURRET",
    0x2177: "NA_SE_EV_CHANDELIER_ROLL",
    0x2178: "NA_SE_EV_CHANDELIER_BROKEN",
    0x2179: "NA_SE_EV_SINK_WOOD_FLOOR",
    0x217A: "NA_SE_EV_REBOUND_WOOD_FLOOR",
    0x217B: "NA_SE_EV_UFO_APPEAR",
    0x217C: "NA_SE_EV_UFO_DASH",
    0x217D: "NA_SE_EV_TORNADE",
    0x217E: "NA_SE_EV_MILK_POT_DAMAGE",
    0x217F: "NA_SE_EV_DUMMY_383",
    0x2180: "NA_SE_EV_KYOJIN_SIGN",
    0x2181: "NA_SE_EV_KYOJIN_GRATITUDE0",
    0x2182: "NA_SE_EV_KYOJIN_GRATITUDE1",
    0x2183: "NA_SE_EV_KYOJIN_GRATITUDE2",
    0x2184: "NA_SE_EV_IKANA_DOOR_OPEN",
    0x2185: "NA_SE_EV_IKANA_DOOR_CLOSE",
    0x2186: "NA_SE_EV_MOONSTONE_FALL",
    0x2187: "NA_SE_EV_COMING_FIRE",
    0x2188: "NA_SE_EV_FAIRY_GROUP_FRY",
    0x2189: "NA_SE_EV_FAIRY_GROUP_HEAL",
    0x218A: "NA_SE_EV_WOOD_DOOR_OPEN_SPEEDY",
    0x218B: "NA_SE_EV_PAMERA_WALK",
    0x218C: "NA_SE_EV_G_STONE_CHANGE_COLOR",
    0x218D: "NA_SE_EV_CURTAIN_DOWN",
    0x218E: "NA_SE_EV_GORON_HAND_HIT",
    0x218F: "NA_SE_EV_SMALL_WOODPLATE_BOUND_0",
    0x2190: "NA_SE_EV_GET_UP_ON_BED",
    0x2191: "NA_SE_EV_LIE_DOWN_ON_BED",
    0x2192: "NA_SE_EV_BANK_MAN_HAND_HIT",
    0x2193: "NA_SE_EV_HANKO",
    0x2194: "NA_SE_EV_CHICK_SONG",
    0x2195: "NA_SE_EV_LAND_SAND",
    0x2196: "NA_SE_EV_JUMP_SAND",
    0x2197: "NA_SE_EV_SECRET_LADDER_APPEAR",
    0x2198: "NA_SE_EV_CLAPPING_2P",
    0x2199: "NA_SE_EV_DIVE_INTO_WEED",
    0x219A: "NA_SE_EV_FAIRY_SHIVER",
    0x219B: "NA_SE_EV_MASK_RISING",
    0x219C: "NA_SE_EV_MOON_EYE_FLASH",
    0x219D: "NA_SE_EV_SLIP_MOON",
    0x219E: "NA_SE_EV_FALL_POWER",
    0x219F: "NA_SE_EV_BELL_DASH_NORMAL",
    0x21A0: "NA_SE_EV_IKANA_BLOCK_MOVE_X",
    0x21A1: "NA_SE_EV_IKANA_BLOCK_MOVE_Z",
    0x21A2: "NA_SE_EV_IKANA_BLOCK_MOVE_Y",
    0x21A3: "NA_SE_EV_IKANA_BLOCK_STOP_C",
    0x21A4: "NA_SE_EV_IKANA_BLOCK_STOP_F",
    0x21A5: "NA_SE_EV_BELL_ANGER",
    0x21A6: "NA_SE_EV_IKANA_BLOCK_SWITCH",
    0x21A7: "NA_SE_EV_BAT_FLY",
    0x21A8: "NA_SE_EV_UFO_LIGHT_BEAM",
    0x21A9: "NA_SE_EV_DOOR_UNLOCK",
    0x21AA: "NA_SE_EV_WOOD_WATER_WHEEL",
    0x21AB: "NA_SE_EV_CONVEYOR_SHUTTER_OPEN",
    0x21AC: "NA_SE_EV_CONVEYOR_SHUTTER_CLOSE",
    0x21AD: "NA_SE_EV_ROOM_CARTAIN",
    0x21AE: "NA_SE_EV_ZORA_KIDS_BORN",
    0x21AF: "NA_SE_EV_ZORA_KIDS_SWIM_0",
    0x21B0: "NA_SE_EV_ZORA_KIDS_SWIM_1",
    0x21B1: "NA_SE_EV_MOON_EXPLOSION",
    0x21B2: "NA_SE_EV_RAINBOW",
    0x21B3: "NA_SE_EV_OMENYA_WALK",
    0x21B4: "NA_SE_EV_KYOJIN_GROAN",
    0x21B5: "NA_SE_EV_UFO_FLY",
    0x21B6: "NA_SE_EV_GRASS_WALL_BROKEN",
    0x21B7: "NA_SE_EV_WARP_HOLE_ENERGY",
    0x21B8: "NA_SE_EV_BOSS_WARP_HOLE",
    0x21B9: "NA_SE_EV_FIREWORKS_LAUNCH",
    0x21BA: "NA_SE_EV_IKANA_SOUL_LV",
    0x21BB: "NA_SE_EV_IKANA_PURIFICATION",
    0x21BC: "NA_SE_EV_ZORA_KIDS_SWIM_2",
    0x21BD: "NA_SE_EV_DARUMA_VANISH",
    0x21BE: "NA_SE_EV_IKANA_SOUL_TRANSFORM",
    0x21BF: "NA_SE_EV_ROMANI_BOW_FLICK",
    0x21C0: "NA_SE_EV_WHITE_FAIRY_SHOT_DASH",
    0x21C1: "NA_SE_EV_BLACK_FAIRY_SHOT_DASH",
    0x21C2: "NA_SE_EV_SWORD_FORGE",
    0x21C3: "NA_SE_EV_STONEDOOR_CLOSE_S",
    0x21C4: "NA_SE_EV_BOTTLE_CAP_CLOSE",
    0x21C5: "NA_SE_EV_PAMET_ROCK_CRASH",
    0x21C6: "NA_SE_EV_GUILLOTINE_UP",
    0x21C7: "NA_SE_EV_ROCK_BROKEN2",
    0x21C8: "NA_SE_EV_OBJECT_STICK2",
    0x21C9: "NA_SE_EV_WOODBOX_BOUND2",
    0x21CA: "NA_SE_EV_DEMO_KID_ATOZUSARI",
    0x21CB: "NA_SE_EV_UNDER_WATER",
    0x21CC: "NA_SE_EV_FREEZE2",
    0x21CD: "NA_SE_EV_DEMO_KID_SAGURU",
    0x21CE: "NA_SE_EV_WATER_WALL3",
    0x21CF: "NA_SE_EV_BOMBERS_TAORE",
    0x3000: "NA_SE_EN_DODO_J_WALK",
    0x3001: "NA_SE_EN_DODO_J_CRY",
    0x3002: "NA_SE_EN_DODO_J_FIRE",
    0x3003: "NA_SE_EN_DODO_J_DAMAGE",
    0x3004: "NA_SE_EN_DODO_J_DEAD",
    0x3005: "NA_SE_EN_BAKUO_ROLL",
    0x3006: "NA_SE_EN_MIZUBABA2_VOICE",
    0x3007: "NA_SE_EN_MIZUBABA2_DAMAGE",
    0x3008: "NA_SE_EN_MIBOSS_FALL_OLD_OLD",
    0x3009: "NA_SE_EN_MIBOSS_DAMAGE_OLD",
    0x300A: "NA_SE_EN_MIBOSS_DASH_OLD",
    0x300B: "NA_SE_EN_MIBOSS_DEAD_OLD",
    0x300C: "NA_SE_EN_MIBOSS_GND1_OLD",
    0x300D: "NA_SE_EN_GOMA_DOWN",
    0x300E: "NA_SE_EN_MIBOSS_GND2_OLD",
    0x300F: "NA_SE_EN_MIBOSS_UNARI_OLD",
    0x3010: "NA_SE_EN_MIBOSS_RHYTHM_OLD",
    0x3011: "NA_SE_EN_MIBOSS_SWORD_OLD",
    0x3012: "NA_SE_EN_ANSATSUSYA_ENTRY",
    0x3013: "NA_SE_EN_MIBOSS_JUMP1",
    0x3014: "NA_SE_EN_MIBOSS_JUMP2",
    0x3015: "NA_SE_EN_MIBOSS_VOICE1_OLD",
    0x3016: "NA_SE_EN_MIBOSS_VOICE2_OLD",
    0x3017: "NA_SE_EN_MIBOSS_VOICE3_OLD",
    0x3018: "NA_SE_EN_INBOSS_SAND_OLD",
    0x3019: "NA_SE_EN_INBOSS_ROAR_OLD",
    0x301A: "NA_SE_EN_INBOSS_DAMAGE_OLD",
    0x301B: "NA_SE_EN_COMMON_WEAKENED",
    0x301C: "NA_SE_EN_MIBOSS_FAINT_OLD",
    0x301D: "NA_SE_EN_MIBOSS_ROLLING_OLD",
    0x301E: "NA_SE_EN_MIZUBABA1_DAMAGE",
    0x301F: "NA_SE_EN_MIZUBABA_DEAD",
    0x3020: "NA_SE_EN_DODO_M_CRY",
    0x3021: "NA_SE_EN_DODO_M_DEAD",
    0x3022: "NA_SE_EN_DODO_M_MOVE",
    0x3023: "NA_SE_EN_DODO_M_DOWN",
    0x3024: "NA_SE_EN_DODO_M_UP",
    0x3025: "NA_SE_EN_MIZUBABA_TRANSFORM",
    0x3026: "NA_SE_EN_DODO_M_EAT",
    0x3027: "NA_SE_EN_MIZUBABA2_WALK",
    0x3028: "NA_SE_EN_BOMCHU_WALK",
    0x3029: "NA_SE_EN_RIZA_CRY",
    0x302A: "NA_SE_EN_RIZA_ATTACK",
    0x302B: "NA_SE_EN_RIZA_DAMAGE",
    0x302C: "NA_SE_EN_RIZA_WARAU",
    0x302D: "NA_SE_EN_RIZA_DEAD",
    0x302E: "NA_SE_EN_RIZA_WALK",
    0x302F: "NA_SE_EN_RIZA_JUMP",
    0x3030: "NA_SE_EN_STALKID_WALK",
    0x3031: "NA_SE_EN_STALKID_ATTACK",
    0x3032: "NA_SE_EN_STALKID_DAMAGE",
    0x3033: "NA_SE_EN_STALKID_DEAD",
    0x3034: "NA_SE_EN_FLOORMASTER_SLIDING",
    0x3035: "NA_SE_EN_TEKU_WALK_WATER",
    0x3036: "NA_SE_EN_LIGHT_ARROW_HIT",
    0x3037: "NA_SE_EN_MIZUBABA2_ATTACK",
    0x3038: "NA_SE_EN_STAL_WARAU",
    0x3039: "NA_SE_EN_STAL_SAKEBI",
    0x303A: "NA_SE_EN_STAL_DAMAGE",
    0x303B: "NA_SE_EN_STAL_DEAD",
    0x303C: "NA_SE_EN_WOLFOS_APPEAR",
    0x303D: "NA_SE_EN_STAL_WALK",
    0x303E: "NA_SE_EN_WOLFOS_CRY",
    0x303F: "NA_SE_EN_WOLFOS_ATTACK",
    0x3040: "NA_SE_EN_FFLY_ATTACK",
    0x3041: "NA_SE_EN_FFLY_FLY",
    0x3042: "NA_SE_EN_FFLY_DEAD",
    0x3043: "NA_SE_EN_WOLFOS_DAMAGE",
    0x3044: "NA_SE_EN_AMOS_WALK",
    0x3045: "NA_SE_EN_AMOS_WAVE",
    0x3046: "NA_SE_EN_EYEGOLE_DEAD",
    0x3047: "NA_SE_EN_EYEGOLE_DAMAGE",
    0x3048: "NA_SE_EN_AMOS_VOICE",
    0x3049: "NA_SE_EN_KUSAMUSHI_VIBE",
    0x304A: "NA_SE_EN_BEE_FLY",
    0x304B: "NA_SE_EN_WOLFOS_DEAD",
    0x304C: "NA_SE_EN_COMMON_E_BALL",
    0x304D: "NA_SE_EN_COMMON_THUNDER_THR",
    0x304E: "NA_SE_EN_COMMON_E_BALL_HIT",
    0x304F: "NA_SE_EN_COMMON_ELEC_ARK",
    0x3050: "NA_SE_EN_SUISEN_EAT",
    0x3051: "NA_SE_EN_SUISEN_DEAD",
    0x3052: "NA_SE_EN_COMMON_E_BALL_THR",
    0x3053: "NA_SE_EN_UTSUBO_APPEAR",
    0x3054: "NA_SE_EN_BOMCHU_VOICE",
    0x3055: "NA_SE_EN_BOMCHU_AIM",
    0x3056: "NA_SE_EN_BOMCHU_RUN",
    0x3057: "NA_SE_EN_UTSUBO_BACK",
    0x3058: "NA_SE_EN_DODO_J_BREATH",
    0x3059: "NA_SE_EN_DODO_J_TAIL",
    0x305A: "NA_SE_EN_WOLFOS_WALK",
    0x305B: "NA_SE_EN_DODO_J_EAT",
    0x305C: "NA_SE_EN_DEKU_MOUTH",
    0x305D: "NA_SE_EN_DEKU_ATTACK",
    0x305E: "NA_SE_EN_DEKU_DAMAGE",
    0x305F: "NA_SE_EN_DEKU_DEAD",
    0x3060: "NA_SE_EN_MIZUBABA1_MOUTH",
    0x3061: "NA_SE_EN_MIZUBABA1_ATTACK",
    0x3062: "NA_SE_EN_DEKU_JR_DEAD",
    0x3063: "NA_SE_EN_DEKU_SCRAPE",
    0x3064: "NA_SE_EN_TAIL_FLY",
    0x3065: "NA_SE_EN_TAIL_CRY",
    0x3066: "NA_SE_EN_TAIL_DEAD",
    0x3067: "NA_SE_EN_GOLON_STAND_IMT",
    0x3068: "NA_SE_EN_STALTU_DOWN",
    0x3069: "NA_SE_EN_STALTU_UP",
    0x306A: "NA_SE_EN_STALTU_LAUGH",
    0x306B: "NA_SE_EN_STALTU_DAMAGE",
    0x306C: "NA_SE_EN_TEKU_JUMP",
    0x306D: "NA_SE_EN_TEKU_DAMAGE",
    0x306E: "NA_SE_EN_TEKU_DEAD",
    0x306F: "NA_SE_EN_TEKU_WALK",
    0x3070: "NA_SE_EN_PO_KANTERA",
    0x3071: "NA_SE_EN_PO_FLY",
    0x3072: "NA_SE_EN_PO_AWAY",
    0x3073: "NA_SE_EN_STALKIDS_APPEAR",
    0x3074: "NA_SE_EN_PO_DISAPPEAR",
    0x3075: "NA_SE_EN_PO_DAMAGE",
    0x3076: "NA_SE_EN_PO_DEAD",
    0x3077: "NA_SE_EN_WIZ_DISAPPEAR",
    0x3078: "NA_SE_EN_EXTINCT",
    0x3079: "NA_SE_EN_GOLON_LAND_BIG",
    0x307A: "NA_SE_EN_GERUDOFT_DOWN",
    0x307B: "NA_SE_EN_EYEGOLE_ATTACK",
    0x307C: "NA_SE_EN_NUTS_UP",
    0x307D: "NA_SE_EN_NUTS_DOWN",
    0x307E: "NA_SE_EN_NUTS_THROW",
    0x307F: "NA_SE_EN_NUTS_WALK",
    0x3080: "NA_SE_EN_NUTS_DAMAGE",
    0x3081: "NA_SE_EN_NUTS_DEAD",
    0x3082: "NA_SE_EN_NUT_FAINT",
    0x3083: "NA_SE_EN_PO_BIG_GET",
    0x3084: "NA_SE_EN_STALTU_ROLL",
    0x3085: "NA_SE_EN_STALTU_DEAD",
    0x3086: "NA_SE_EN_PO_SISTER_DEAD",
    0x3087: "NA_SE_EN_BARI_SPLIT",
    0x3088: "NA_SE_EN_LAST1_GROW_HEAD",
    0x3089: "NA_SE_EN_NUTS_VOICE",
    0x308A: "NA_SE_EN_TEKU_LAND_WATER",
    0x308B: "NA_SE_EN_LAST_DAMAGE",
    0x308C: "NA_SE_EN_STALWALL_ROLL",
    0x308D: "NA_SE_EN_STALWALL_DASH",
    0x308E: "NA_SE_EN_TEKU_JUMP_WATER",
    0x308F: "NA_SE_EN_TEKU_LAND_WATER2",
    0x3090: "NA_SE_EN_FALL_AIM",
    0x3091: "NA_SE_EN_FALL_UP",
    0x3092: "NA_SE_EN_FALL_CATCH",
    0x3093: "NA_SE_EN_FALL_LAND",
    0x3094: "NA_SE_EN_FALL_WALK",
    0x3095: "NA_SE_EN_FALL_DAMAGE",
    0x3096: "NA_SE_EN_DAIOCTA_REVERSE",
    0x3097: "NA_SE_EN_KAICHO_FLUTTER",
    0x3098: "NA_SE_EN_BIRI_FLY",
    0x3099: "NA_SE_EN_BIRI_JUMP",
    0x309A: "NA_SE_EN_BIRI_SPARK",
    0x309B: "NA_SE_EN_BIRI_DEAD",
    0x309C: "NA_SE_EN_COMMON_WATER_DEEP",
    0x309D: "NA_SE_EN_BARI_ROLL",
    0x309E: "NA_SE_EN_COMMON_FREEZE",
    0x309F: "NA_SE_EN_BARI_DEAD",
    0x30A0: "NA_SE_EN_BATTA_FLY",
    0x30A1: "NA_SE_EN_BATTA_ATTACK",
    0x30A2: "NA_SE_EN_BATTA_DAMAGE",
    0x30A3: "NA_SE_EN_BATTA_DEAD",
    0x30A4: "NA_SE_EN_WIZ_UNARI",
    0x30A5: "NA_SE_EN_WIZ_RUN",
    0x30A6: "NA_SE_EN_WIZ_VOICE",
    0x30A7: "NA_SE_EN_WIZ_LAUGH",
    0x30A8: "NA_SE_EN_WIZ_ATTACK",
    0x30A9: "NA_SE_EN_WIZ_DAMAGE",
    0x30AA: "NA_SE_EN_WIZ_DEAD",
    0x30AB: "NA_SE_EN_WIZ_EXP",
    0x30AC: "NA_SE_EN_DAIOCTA_DEAD",
    0x30AD: "NA_SE_EN_DAIOCTA_DEAD2",
    0x30AE: "NA_SE_EN_FANTOM_DAMAGE",
    0x30AF: "NA_SE_EN_DAIOCTA_DAMAGE",
    0x30B0: "NA_SE_EN_WIZ_LAUGH2",
    0x30B1: "NA_SE_EN_GOLON_SIT_IMT",
    0x30B2: "NA_SE_EN_FANTOM_VOICE",
    0x30B3: "NA_SE_EN_KAICHO_DAMAGE",
    0x30B4: "NA_SE_EN_GOLON_COLD",
    0x30B5: "NA_SE_EN_GOLON_JUMP",
    0x30B6: "NA_SE_EN_KAICHO_CRY",
    0x30B7: "NA_SE_EN_KAICHO_ATTACK",
    0x30B8: "NA_SE_EN_GOLON_WALK",
    0x30B9: "NA_SE_EN_SLIME_JUMP",
    0x30BA: "NA_SE_EN_SLIME_DAMAGE",
    0x30BB: "NA_SE_EN_SLIME_BREAK",
    0x30BC: "NA_SE_EN_KUROSUKE_MOVE",
    0x30BD: "NA_SE_EN_KUROSUKE_ATTACK",
    0x30BE: "NA_SE_EN_SLIME_DEAD",
    0x30BF: "NA_SE_EN_SLIME_DEFENCE",
    0x30C0: "NA_SE_EN_OCTAROCK_ROCK",
    0x30C1: "NA_SE_EN_COMMON_WATER_SLW",
    0x30C2: "NA_SE_EN_OCTAROCK_JUMP",
    0x30C3: "NA_SE_EN_DAIOCTA_LAND",
    0x30C4: "NA_SE_EN_DAIOCTA_SINK",
    0x30C5: "NA_SE_EN_COMMON_WATER_MID",
    0x30C6: "NA_SE_EN_OCTAROCK_DEAD1",
    0x30C7: "NA_SE_EN_OCTAROCK_DEAD2",
    0x30C8: "NA_SE_EN_BUBLE_WING",
    0x30C9: "NA_SE_EN_BUBLE_MOUTH",
    0x30CA: "NA_SE_EN_BUBLE_LAUGH",
    0x30CB: "NA_SE_EN_BUBLE_BITE",
    0x30CC: "NA_SE_EN_BUBLE_UP",
    0x30CD: "NA_SE_EN_BUBLE_DOWN",
    0x30CE: "NA_SE_EN_BUBLE_DEAD",
    0x30CF: "NA_SE_EN_BUBLEFALL_FIRE",
    0x30D0: "NA_SE_EN_UTSUBO_DEAD",
    0x30D1: "NA_SE_EN_UTSUBO_DAMAGE",
    0x30D2: "NA_SE_EN_FROG_REAL",
    0x30D3: "NA_SE_EN_FROG_DAMAGE",
    0x30D4: "NA_SE_EN_B_SLIME_EAT",
    0x30D5: "NA_SE_EN_B_SLIME_LAUGH",
    0x30D6: "NA_SE_EN_FROG_DEAD",
    0x30D7: "NA_SE_EN_UTSUBO_BITE",
    0x30D8: "NA_SE_EN_B_SLIME_REVERSE",
    0x30D9: "NA_SE_EN_SLIME_JUMP1",
    0x30DA: "NA_SE_EN_SLIME_JUMP2",
    0x30DB: "NA_SE_EN_B_SLIME_BREAK",
    0x30DC: "NA_SE_EN_BARI_DAMAGE",
    0x30DD: "NA_SE_EN_HIPLOOP_LAND",
    0x30DE: "NA_SE_EN_MOFER_CORE_MOVE_WT",
    0x30DF: "NA_SE_EN_MOFER_CORE_SMJUMP",
    0x30E0: "NA_SE_EN_MONBLIN_GNDWAVE",
    0x30E1: "NA_SE_EN_MONBLIN_HAM_DOWN",
    0x30E2: "NA_SE_EN_MONBLIN_HAM_UP",
    0x30E3: "NA_SE_EN_BUBLE_DAMAGE",
    0x30E4: "NA_SE_EN_REDEAD_CRY",
    0x30E5: "NA_SE_EN_REDEAD_AIM",
    0x30E6: "NA_SE_EN_REDEAD_DAMAGE",
    0x30E7: "NA_SE_EN_REDEAD_DEAD",
    0x30E8: "NA_SE_EN_REDEAD_ATTACK",
    0x30E9: "NA_SE_EN_GOLON_KID_SOB",
    0x30EA: "NA_SE_EN_GOLON_KID_CRY",
    0x30EB: "NA_SE_EN_KAICHO_DEAD",
    0x30EC: "NA_SE_EN_PO_LAUGH",
    0x30ED: "NA_SE_EN_PO_CRY",
    0x30EE: "NA_SE_EN_PO_ROLL",
    0x30EF: "NA_SE_EN_PO_LAUGH2",
    0x30F0: "NA_SE_EN_GOLON_ROLLING",
    0x30F1: "NA_SE_EN_GOLON_READY",
    0x30F2: "NA_SE_EN_GOLON_DASH",
    0x30F3: "NA_SE_EN_PAMET_VOICE",
    0x30F4: "NA_SE_EN_PAMET_ROLL",
    0x30F5: "NA_SE_EN_PAMET_WALK",
    0x30F6: "NA_SE_EN_PAMET_ROAR",
    0x30F7: "NA_SE_EN_PAMET_WAKEUP",
    0x30F8: "NA_SE_EN_PAMET_REVERSE",
    0x30F9: "NA_SE_EN_PAMET_DAMAGE",
    0x30FA: "NA_SE_EN_PAMET_DEAD",
    0x30FB: "NA_SE_EN_BAKUO_VOICE",
    0x30FC: "NA_SE_EN_GOLON_WAKE_UP",
    0x30FD: "NA_SE_EN_GOLON_SIT_DOWN",
    0x30FE: "NA_SE_EN_DAIGOLON_SLEEP3",
    0x30FF: "NA_SE_EN_CHICKEN_FLUTTER",
    0x3100: "NA_SE_EN_KOUME_ILL",
    0x3101: "NA_SE_EN_KOUME_REGAIN",
    0x3102: "NA_SE_EN_KOUME_DRINK",
    0x3103: "NA_SE_EN_KOUME_LAUGH",
    0x3104: "NA_SE_EN_KOUME_FLY",
    0x3105: "NA_SE_EN_KOUME_AWAY",
    0x3106: "NA_SE_EN_KOUME_MAGIC",
    0x3107: "NA_SE_EN_DAIGOLON_SLEEP2",
    0x3108: "NA_SE_EN_STALKIDS_JUMP",
    0x3109: "NA_SE_EN_STALKIDS_FADEOUT",
    0x310A: "NA_SE_EN_STALKIDS_LAUGH",
    0x310B: "NA_SE_EN_STALKIDS_SHAKEHEAD",
    0x310C: "NA_SE_EN_STALKIDS_ONGND",
    0x310D: "NA_SE_EN_STALKIDS_SURPRISED",
    0x310E: "NA_SE_EN_STALKIDS_WALK",
    0x310F: "NA_SE_EN_STALKIDS_REVERSE",
    0x3110: "NA_SE_EN_STALKIDS_FLOAT",
    0x3111: "NA_SE_EN_EYEGOLE_EYE",
    0x3112: "NA_SE_EN_STALKIDS_CAUGHT",
    0x3113: "NA_SE_EN_STALKIDS_MASK_ON",
    0x3114: "NA_SE_EN_TWINROBA_CUTBODY",
    0x3115: "NA_SE_EN_STALKIDS_MASK_OFF",
    0x3116: "NA_SE_EN_STALKIDS_RIDE",
    0x3117: "NA_SE_EN_DEKNUTS_DANCE",
    0x3118: "NA_SE_EN_DEKNUTS_DANCE1",
    0x3119: "NA_SE_EN_DEKNUTS_DANCE2",
    0x311A: "NA_SE_EN_DEKNUTS_DANCE_BIG",
    0x311B: "NA_SE_EN_EYEGOLE_BEAM",
    0x311C: "NA_SE_EN_GOLON_EYE_BIG",
    0x311D: "NA_SE_EN_GOLON_GOOD_BIG",
    0x311E: "NA_SE_EN_STALKIDS_LAUGH_MID",
    0x311F: "NA_SE_EN_STALKIDS_FLOAT_COPY",
    0x3120: "NA_SE_EN_STALKIDS_TURN",
    0x3121: "NA_SE_EN_STALKIDS_DAMAGE",
    0x3122: "NA_SE_EN_STALKIDS_SCREAM",
    0x3123: "NA_SE_EN_STALKIDS_OTEDAMA2",
    0x3124: "NA_SE_EN_STALKIDS_STRETCH",
    0x3125: "NA_SE_EN_STALKIDS_LAUGH_MD2",
    0x3126: "NA_SE_EN_OWL_FLUTTER",
    0x3127: "NA_SE_EN_VALVAISA_LAND",
    0x3128: "NA_SE_EN_IRONNACK_WALK",
    0x3129: "NA_SE_EN_IRONNACK_SWING_AXE",
    0x312A: "NA_SE_EN_STALKIDS_OTEDAMA1",
    0x312B: "NA_SE_EN_PAMET_CUTTER_ON",
    0x312C: "NA_SE_EN_IRONNACK_ARMOR_OFF_DEMO",
    0x312D: "NA_SE_EN_PAMET_CUTTER_OFF",
    0x312E: "NA_SE_EN_B_SLIME_JUMP1",
    0x312F: "NA_SE_EN_B_SLIME_JUMP2",
    0x3130: "NA_SE_EN_FLOORMASTER_ATTACK",
    0x3131: "NA_SE_EN_FLOORMASTER_SM_WALK",
    0x3132: "NA_SE_EN_FLOORMASTER_SM_DEAD",
    0x3133: "NA_SE_EN_FLOORMASTER_RESTORE",
    0x3134: "NA_SE_EN_FLOORMASTER_EXPAND",
    0x3135: "NA_SE_EN_KUSAMUSHI_HIDE",
    0x3136: "NA_SE_EN_FLOORMASTER_SM_STICK",
    0x3137: "NA_SE_EN_FLOORMASTER_SM_LAND",
    0x3138: "NA_SE_EN_B_SLIME_COMBINE",
    0x3139: "NA_SE_EN_B_SLIME_PUNCH_MOVE",
    0x313A: "NA_SE_EN_IRONNACK_ARMOR_HIT",
    0x313B: "NA_SE_EN_CUTBODY",
    0x313C: "NA_SE_EN_LAST1_TRANSFORM",
    0x313D: "NA_SE_EN_LAST1_DEMO_BREAK",
    0x313E: "NA_SE_EN_LAST1_DEMO_WALL",
    0x313F: "NA_SE_EN_B_PAMET_BREAK",
    0x3140: "NA_SE_EN_KONB_DEMO_MOVE_OLD",
    0x3141: "NA_SE_EN_KONB_JUMP_OLD",
    0x3142: "NA_SE_EN_KONB_SINK_OLD",
    0x3143: "NA_SE_EN_UTSUBO_EAT",
    0x3144: "NA_SE_EN_YMAJIN_HOLD_SNOW",
    0x3145: "NA_SE_EN_KONB_DAMAGE_OLD",
    0x3146: "NA_SE_EN_KONB_DEAD_OLD",
    0x3147: "NA_SE_EN_KONB_BOUND_OLD",
    0x3148: "NA_SE_EN_AWA_BOUND",
    0x3149: "NA_SE_EN_AWA_BREAK",
    0x314A: "NA_SE_EN_ICEB_FOOTSTEP_OLD",
    0x314B: "NA_SE_EN_COMMON_THUNDER",
    0x314C: "NA_SE_EN_ICEB_CRY_OLD",
    0x314D: "NA_SE_EN_ICEB_STEAM_LONG_OLD",
    0x314E: "NA_SE_EN_ICEB_STEAMS_DEMO_OLD",
    0x314F: "NA_SE_EN_ICEB_STEAM_DEMO_UP_OLD",
    0x3150: "NA_SE_EN_ICEB_DEAD_OLD",
    0x3151: "NA_SE_EN_ICEB_DAMAGE_OLD",
    0x3152: "NA_SE_EN_KONB_INIT_OLD",
    0x3153: "NA_SE_EN_KONB_DEAD2_OLD",
    0x3154: "NA_SE_EN_PIHAT_UP",
    0x3155: "NA_SE_EN_PIHAT_FLY",
    0x3156: "NA_SE_EN_PIHAT_DAMAGE",
    0x3157: "NA_SE_EN_PIHAT_LAND",
    0x3158: "NA_SE_EN_KONB_BOUND2_OLD",
    0x3159: "NA_SE_EN_KONB_DEAD_JUMP_OLD",
    0x315A: "NA_SE_EN_KONB_DEAD_JUMP2_OLD",
    0x315B: "NA_SE_EN_FROG_JUMP",
    0x315C: "NA_SE_EN_FROG_GREET",
    0x315D: "NA_SE_EN_FROG_HOLD_SLIME",
    0x315E: "NA_SE_EN_FROG_THROW_SLIME",
    0x315F: "NA_SE_EN_FROG_JUMP_MID",
    0x3160: "NA_SE_EN_KONB_BITE_OLD",
    0x3161: "NA_SE_EN_FROG_PUNCH1",
    0x3162: "NA_SE_EN_FROG_PUNCH2",
    0x3163: "NA_SE_EN_UTSUBO_APPEAR_TRG",
    0x3164: "NA_SE_EN_FROG_DOWN",
    0x3165: "NA_SE_EN_FROG_JUMP_ABOVE",
    0x3166: "NA_SE_EN_FROG_KICK",
    0x3167: "NA_SE_EN_YMAJIN_MINI_HOLD",
    0x3168: "NA_SE_EN_YMAJIN_MINI_THROW",
    0x3169: "NA_SE_EN_YMAJIN_MOVE",
    0x316A: "NA_SE_EN_YMAJIN_MINI_MOVE",
    0x316B: "NA_SE_EN_YMAJIN_SURFACE",
    0x316C: "NA_SE_EN_YMAJIN_HIDE",
    0x316D: "NA_SE_EN_YMAJIN_SPLIT",
    0x316E: "NA_SE_EN_YMAJIN_UNITE",
    0x316F: "NA_SE_EN_YMAJIN_DEAD_BREAK",
    0x3170: "NA_SE_EN_BIMOS_ROLL_HEAD",
    0x3171: "NA_SE_EN_BIMOS_LAZER",
    0x3172: "NA_SE_EN_BIMOS_LAZER_GND",
    0x3173: "NA_SE_EN_BIMOS_AIM",
    0x3174: "NA_SE_EN_BUBLEWALK_WALK",
    0x3175: "NA_SE_EN_BUBLEWALK_AIM",
    0x3176: "NA_SE_EN_BUBLEWALK_REVERSE",
    0x3177: "NA_SE_EN_BUBLEWALK_DAMAGE",
    0x3178: "NA_SE_EN_BUBLEWALK_DEAD",
    0x3179: "NA_SE_EN_HIPLOOP_RUN",
    0x317A: "NA_SE_EN_HIPLOOP_PAUSE",
    0x317B: "NA_SE_EN_HIPLOOP_MASC_OFF",
    0x317C: "NA_SE_EN_HIPLOOP_FOOT",
    0x317D: "NA_SE_EN_HIPLOOP_DAMAGE",
    0x317E: "NA_SE_EN_HIPLOOP_DEAD",
    0x317F: "NA_SE_EN_HIPLOOP_FOOTSTEP",
    0x3180: "NA_SE_EN_DEKUHIME_WALK",
    0x3181: "NA_SE_EN_DEKUHIME_TURN",
    0x3182: "NA_SE_EN_DEKUHIME_GREET",
    0x3183: "NA_SE_EN_DEKUHIME_GREET2",
    0x3184: "NA_SE_EN_PIHAT_SM_FLY",
    0x3185: "NA_SE_EN_PIHAT_SM_DEAD",
    0x3186: "NA_SE_EN_STALKID_APPEAR",
    0x3187: "NA_SE_EN_AKINDONUTS_HIDE",
    0x3188: "NA_SE_EN_RIVA_DAMAGE",
    0x3189: "NA_SE_EN_RIVA_DEAD",
    0x318A: "NA_SE_EN_RIVA_MOVE",
    0x318B: "NA_SE_EN_DEKUHIME_VOICE_SAD",
    0x318C: "NA_SE_EN_DEKUHIME_VOICE_JOY",
    0x318D: "NA_SE_EN_NUTS_JUMP",
    0x318E: "NA_SE_EN_NUTS_CLOTHES",
    0x318F: "NA_SE_EN_SITSUJI_VOICE",
    0x3190: "NA_SE_EN_LIKE_WALK",
    0x3191: "NA_SE_EN_LIKE_UNARI",
    0x3192: "NA_SE_EN_SUISEN_DRINK",
    0x3193: "NA_SE_EN_EYEGOLE_DEMO_EYE",
    0x3194: "NA_SE_EN_SUISEN_THROW",
    0x3195: "NA_SE_EN_LIKE_DAMAGE",
    0x3196: "NA_SE_EN_LIKE_DEAD",
    0x3197: "NA_SE_EN_MGANON_SWORD",
    0x3198: "NA_SE_EN_PIRATE_ATTACK",
    0x3199: "NA_SE_EN_PIRATE_DAMAGE",
    0x319A: "NA_SE_EN_PIRATE_DEAD",
    0x319B: "NA_SE_EN_MB_MOTH_FLY",
    0x319C: "NA_SE_EN_MB_MOTH_DEAD",
    0x319D: "NA_SE_EN_MB_INSECT_WALK",
    0x319E: "NA_SE_EN_B_PAMET_ROLL",
    0x319F: "NA_SE_EN_FROG_VOICE1",
    0x31A0: "NA_SE_EN_GERUDOFT_WALK",
    0x31A1: "NA_SE_EN_FROG_VOICE2",
    0x31A2: "NA_SE_EN_B_PAMET_VOICE",
    0x31A3: "NA_SE_EN_B_PAMET_REVERSE",
    0x31A4: "NA_SE_EN_FREEZAD_BREATH",
    0x31A5: "NA_SE_EN_FREEZAD_DAMAGE",
    0x31A6: "NA_SE_EN_FREEZAD_DEAD",
    0x31A7: "NA_SE_EN_DEKUHIMA_VOICE_HURY",
    0x31A8: "NA_SE_EN_KINGNUTS_VOICE",
    0x31A9: "NA_SE_EN_FROG_RUNAWAY",
    0x31AA: "NA_SE_EN_LAST3_DEAD_DEAD1_OLD",
    0x31AB: "NA_SE_EN_LAST3_DEAD_DEAD2_OLD",
    0x31AC: "NA_SE_EN_FROG_RUNAWAY2",
    0x31AD: "NA_SE_EN_DAIGOLON_SLEEP1",
    0x31AE: "NA_SE_EN_IRONNACK_HIT_GND",
    0x31AF: "NA_SE_EN_LAST3_DEAD_WIND1_OLD",
    0x31B0: "NA_SE_EN_TWINROBA_LAUGH",
    0x31B1: "NA_SE_EN_TWINROBA_LAUGH2",
    0x31B2: "NA_SE_EN_IRONNACK_PULLOUT",
    0x31B3: "NA_SE_EN_TWINROBA_SHOOT_VOICE",
    0x31B4: "NA_SE_EN_LAST3_DEAD_WIND2_OLD",
    0x31B5: "NA_SE_EN_LAST3_DEAD_WIND3_OLD",
    0x31B6: "NA_SE_EN_LAST3_DEAD_LIGHTS_OLD",
    0x31B7: "NA_SE_EN_PIRATE_BREATH",
    0x31B8: "NA_SE_EN_LAST3_DEAD_ROD",
    0x31B9: "NA_SE_EN_LAST2_SHOUT",
    0x31BA: "NA_SE_EN_LAST2_PUMP_UP_OLD",
    0x31BB: "NA_SE_EN_LAST2_GROW_HEAD_OLD",
    0x31BC: "NA_SE_EN_LAST2_HEARTBEAT_OLD",
    0x31BD: "NA_SE_EN_ANSATSUSYA_MOVING",
    0x31BE: "NA_SE_EN_ANSATSUSYA_DASH_2",
    0x31BF: "NA_SE_EN_LAST3_DEAD_FLOAT",
    0x31C0: "NA_SE_EN_ANSATSUSYA_CRYING",
    0x31C1: "NA_SE_EN_ANSATSUSYA_SKIP",
    0x31C2: "NA_SE_EN_STALTURA_APPEAR",
    0x31C3: "NA_SE_EN_ANSATSUSYA_JUMP",
    0x31C4: "NA_SE_EN_ANSATSUSYA_FALL",
    0x31C5: "NA_SE_EN_ANSATSUSYA_DAMAGE",
    0x31C6: "NA_SE_EN_ANSATSUSYA_DEAD",
    0x31C7: "NA_SE_EN_ANSATSUSYA_SWORD",
    0x31C8: "NA_SE_EN_BAKUO_DEAD",
    0x31C9: "NA_SE_EN_BAKUO_APPEAR",
    0x31CA: "NA_SE_EN_LAST3_ROD_WIND_OLD",
    0x31CB: "NA_SE_EN_LAST3_ROD_FLOOR_OLD",
    0x31CC: "NA_SE_EN_LAST3_ROD_DANCE_OLD",
    0x31CD: "NA_SE_EN_LAST3_ROD_HOP_OLD",
    0x31CE: "NA_SE_EN_LAST3_ROD_HOP2_OLD",
    0x31CF: "NA_SE_EN_GANON_RESTORE",
    0x31D0: "NA_SE_EN_GOLON_CIRCLE",
    0x31D1: "NA_SE_EN_GOLON_CIRCLE_OFF",
    0x31D2: "NA_SE_EN_LAST1_BLOW_OLD",
    0x31D3: "NA_SE_EN_LAST1_BEAM_OLD",
    0x31D4: "NA_SE_EN_LAST1_ATTACK_OLD",
    0x31D5: "NA_SE_EN_LAST1_DAMAGE1_OLD",
    0x31D6: "NA_SE_EN_LAST1_DAMAGE2_OLD",
    0x31D7: "NA_SE_EN_LAST1_FALL_OLD",
    0x31D8: "NA_SE_EN_MGANON_STAND",
    0x31D9: "NA_SE_EN_LAST2_FIRE_OLD",
    0x31DA: "NA_SE_EN_STALGOLD_ROLL",
    0x31DB: "NA_SE_EN_LAST2_WALK_OLD",
    0x31DC: "NA_SE_EN_LAST2_WAIT_OLD",
    0x31DD: "NA_SE_EN_LAST2_JUMP_OLD",
    0x31DE: "NA_SE_EN_LAST2_BIRD_OLD",
    0x31DF: "NA_SE_EN_LAST2_BIRD2_OLD",
    0x31E0: "NA_SE_EN_STALTU_WAVE",
    0x31E1: "NA_SE_EN_STALTU_DOWN_SET",
    0x31E2: "NA_SE_EN_DEKU_WAKEUP",
    0x31E3: "NA_SE_EN_LAST2_WALK2_OLD",
    0x31E4: "NA_SE_EN_LAST1_FLOAT_OLD",
    0x31E5: "NA_SE_EN_LAST1_ATTACK_2ND_OLD",
    0x31E6: "NA_SE_EN_LAST1_ROLLING_OLD",
    0x31E7: "NA_SE_EN_LAST3_GET_LINK_OLD",
    0x31E8: "NA_SE_EN_PO_BIG_CRY",
    0x31E9: "NA_SE_EN_STALTURA_BOUND",
    0x31EA: "NA_SE_EN_STALGOLD_UP_CRY",
    0x31EB: "NA_SE_EN_GOLON_CRY",
    0x31EC: "NA_SE_EN_LAST3_ROD_SOFT",
    0x31ED: "NA_SE_EN_LAST3_ROD_MID_OLD",
    0x31EE: "NA_SE_EN_RIVA_BIG_APPEAR",
    0x31EF: "NA_SE_EN_LAST3_ROD_HARD",
    0x31F0: "NA_SE_EN_MUSI_WALK",
    0x31F1: "NA_SE_EN_LAST3_COIL_ATTACK_OLD",
    0x31F2: "NA_SE_EN_STALWALL_LAUGH",
    0x31F3: "NA_SE_EN_PIRANHA_EXIST",
    0x31F4: "NA_SE_EN_PIRANHA_ATTACK",
    0x31F5: "NA_SE_EN_PIRANHA_DEAD",
    0x31F6: "NA_SE_EN_KINGNUTS_DAMAGE",
    0x31F7: "NA_SE_EN_COMMON_DEADLIGHT",
    0x31F8: "NA_SE_EN_GOLONKID_WALK",
    0x31F9: "NA_SE_EN_YMAJIN_MINI_DAMAGE",
    0x31FA: "NA_SE_EN_YMAJIN_DAMAGE",
    0x31FB: "NA_SE_EN_KOTAKE_SURPRISED",
    0x31FC: "NA_SE_EN_HANDW_GET",
    0x31FD: "NA_SE_EN_HANDW_RELEASE",
    0x31FE: "NA_SE_EN_SLIME_SURFACE",
    0x31FF: "NA_SE_EN_KOTAKE_SLEEP",
    0x3200: "NA_SE_EN_KOTAKE_SURPRISED2",
    0x3201: "NA_SE_EN_NEMURI_SLEEP",
    0x3202: "NA_SE_EN_LAST1_DEAD_OLD",
    0x3203: "NA_SE_EN_GOLON_SIRLOIN_ROLL",
    0x3204: "NA_SE_EN_GOLON_VOICE_EATFULL",
    0x3205: "NA_SE_EN_GOLON_SIRLOIN_EAT",
    0x3206: "NA_SE_EN_EYEGOLE_WALK",
    0x3207: "NA_SE_EN_EYEGOLE_STAND",
    0x3208: "NA_SE_EN_EYEGOLE_SIT",
    0x3209: "NA_SE_EN_INVADER_DEAD",
    0x320A: "NA_SE_EN_FOLLOWERS_BEAM_PRE",
    0x320B: "NA_SE_EN_FOLLOWERS_BEAM",
    0x320C: "NA_SE_EN_FOLLOWERS_DAMAGE",
    0x320D: "NA_SE_EN_FOLLOWERS_DEAD",
    0x320E: "NA_SE_EN_INBOSS_DEAD_PRE2_OLD",
    0x320F: "NA_SE_EN_IKURA_JUMP1",
    0x3210: "NA_SE_EN_IKURA_JUMP2",
    0x3211: "NA_SE_EN_IKURA_DAMAGE",
    0x3212: "NA_SE_EN_IKURA_DEAD",
    0x3213: "NA_SE_EN_ME_DAMAGE",
    0x3214: "NA_SE_EN_ME_DEAD",
    0x3215: "NA_SE_EN_ME_EXIST",
    0x3216: "NA_SE_EN_ME_ATTACK",
    0x3217: "NA_SE_EN_GOLONKID_SOB_TALK",
    0x3218: "NA_SE_EN_GOLONKID_YAWN",
    0x3219: "NA_SE_EN_GOLONKID_SNORE",
    0x321A: "NA_SE_EN_GOLON_SNORE1",
    0x321B: "NA_SE_EN_GOLON_SNORE2",
    0x321C: "NA_SE_EN_BUBLEFALL_APPEAR",
    0x321D: "NA_SE_EN_INBOSS_DEAD_OLD",
    0x321E: "NA_SE_EN_LAST1_BEAM2_OLD",
    0x321F: "NA_SE_EN_COMMON_EXTINCT_LEV",
    0x3220: "NA_SE_EN_BOSU_HEAD_MID",
    0x3221: "NA_SE_EN_BOSU_HEAD_SHORT",
    0x3222: "NA_SE_EN_DEBU_HEAD_MID",
    0x3223: "NA_SE_EN_DEBU_HEAD_SHORT",
    0x3224: "NA_SE_EN_YASE_HEAD_MID",
    0x3225: "NA_SE_EN_YASE_HEAD_SHORT",
    0x3226: "NA_SE_EN_BOSU_WALK",
    0x3227: "NA_SE_EN_DEBU_WALK",
    0x3228: "NA_SE_EN_YASE_WALK",
    0x3229: "NA_SE_EN_BOSU_SIT",
    0x322A: "NA_SE_EN_BOSU_STAND",
    0x322B: "NA_SE_EN_BOSU_HAND",
    0x322C: "NA_SE_EN_LAST3_KOMA_OLD",
    0x322D: "NA_SE_EN_KONB_PREATTACK_OLD",
    0x322E: "NA_SE_EN_BOSU_SHOCK",
    0x322F: "NA_SE_EN_BOSU_SHIT",
    0x3230: "NA_SE_EN_BOSU_ATTACK",
    0x3231: "NA_SE_EN_BOSU_CYNICAL",
    0x3232: "NA_SE_EN_BOSU_LAUGH",
    0x3233: "NA_SE_EN_BOSU_LAUGH_DEMO",
    0x3234: "NA_SE_EN_DEBU_ATTACK",
    0x3235: "NA_SE_EN_DEBU_LAUGH",
    0x3236: "NA_SE_EN_DEBU_PAUSE",
    0x3237: "NA_SE_EN_YASE_ATTACK",
    0x3238: "NA_SE_EN_YASE_LAUGH",
    0x3239: "NA_SE_EN_YASE_PAUSE",
    0x323A: "NA_SE_EN_BOSU_DAMAGE",
    0x323B: "NA_SE_EN_DEBU_DAMAGE",
    0x323C: "NA_SE_EN_YASE_DAMAGE",
    0x323D: "NA_SE_EN_BOSU_DEAD",
    0x323E: "NA_SE_EN_DEBU_DEAD",
    0x323F: "NA_SE_EN_YASE_DEAD",
    0x3240: "NA_SE_EN_DEBU_PAUSE_K",
    0x3241: "NA_SE_EN_DEBU_LAUGH_SHORT_K",
    0x3242: "NA_SE_EN_DEBU_LAUGH_K",
    0x3243: "NA_SE_EN_YASE_PAUSE_K",
    0x3244: "NA_SE_EN_YASE_LAUGH_K",
    0x3245: "NA_SE_EN_BOSU_LAUGH_DEMO_K",
    0x3246: "NA_SE_EN_DEBU_LAUGH_SHORT",
    0x3247: "NA_SE_EN_BOSU_LAUGH_K",
    0x3248: "NA_SE_EN_DEBU_ATTACK_W",
    0x3249: "NA_SE_EN_YASE_ATTACK_W",
    0x324A: "NA_SE_EN_BOSU_ATTACK_W",
    0x324B: "NA_SE_EN_STAL_FREEZE_LIGHTS",
    0x324C: "NA_SE_EN_BOSU_ATTACK_K",
    0x324D: "NA_SE_EN_BOSU_SWORD",
    0x324E: "NA_SE_EN_KONB_JUMP_LEV_OLD",
    0x324F: "NA_SE_EN_MIBOSS_FREEZE_OLD",
    0x3250: "NA_SE_EN_YMAJIN_THROW",
    0x3251: "NA_SE_EN_BOSU_HEAD_BITE",
    0x3252: "NA_SE_EN_BOSU_HEAD_FLOAT",
    0x3253: "NA_SE_EN_LAST3_VOICE_KICK_OLD",
    0x3254: "NA_SE_EN_LAST3_VOICE_KOMA_OLD",
    0x3255: "NA_SE_EN_LAST3_VOICE_ROD_OLD",
    0x3256: "NA_SE_EN_LAST3_VOICE_THROW_OLD",
    0x3257: "NA_SE_EN_LAST3_VOICE_LAUGH_OLD",
    0x3258: "NA_SE_EN_LAST3_VOICE_DAMAGE_OLD",
    0x3259: "NA_SE_EN_LAST3_VOICE_DAMAGE2_OLD",
    0x325A: "NA_SE_EN_LAST3_VOICE_DEAD_OLD",
    0x325B: "NA_SE_EN_BOSU_DEAD_VOICE",
    0x325C: "NA_SE_EN_DEBU_DEAD_VOICE",
    0x325D: "NA_SE_EN_YASE_DEAD_VOICE",
    0x325E: "NA_SE_EN_LAST2_BALLET_OLD",
    0x325F: "NA_SE_EN_LAST2_MOONWALK_OLD",
    0x3260: "NA_SE_EN_SHARP_FLOAT",
    0x3261: "NA_SE_EN_SHARP_REACTION",
    0x3262: "NA_SE_EN_REDEAD_WEAKENED1",
    0x3263: "NA_SE_EN_REDEAD_WEAKENED_L1",
    0x3264: "NA_SE_EN_REDEAD_WEAKENED2",
    0x3265: "NA_SE_EN_REDEAD_WEAKENED_L2",
    0x3266: "NA_SE_EN_PIRATE_ONGND",
    0x3267: "NA_SE_EN_FOLLOWERS_STAY",
    0x3268: "NA_SE_EN_LAST2_VOICE_BALLET",
    0x3269: "NA_SE_EN_LAST2_VOICE_UAUOO1_OLD",
    0x326A: "NA_SE_EN_LAST2_VOICE_UAUOO2_OLD",
    0x326B: "NA_SE_EN_LAST2_VOICE_SURPRISED_OLD",
    0x326C: "NA_SE_EN_LAST2_DAMAGE_OLD",
    0x326D: "NA_SE_EN_LAST2_DAMAGE2_OLD",
    0x326E: "NA_SE_EN_LAST2_DEAD_OLD",
    0x326F: "NA_SE_EN_LAST2_UAUOO_OLD",
    0x3270: "NA_SE_EN_LAST2_GYM_B_OLD",
    0x3271: "NA_SE_EN_PIRATE_COOL_LAUGH",
    0x3272: "NA_SE_EN_PIRATE_CYNICAL",
    0x3273: "NA_SE_EN_PIRATE_DAMM_BREATH",
    0x3274: "NA_SE_EN_PIRATE_SHOUT",
    0x3275: "NA_SE_EN_STAL01_LAUGH",
    0x3276: "NA_SE_EN_STAL02_LAUGH_SHORT",
    0x3277: "NA_SE_EN_STAL03_LAUGH_BIG",
    0x3278: "NA_SE_EN_STAL04_ANGER",
    0x3279: "NA_SE_EN_STAL05_CYNICAL",
    0x327A: "NA_SE_EN_STAL06_SURPRISED",
    0x327B: "NA_SE_EN_STAL07_ANTONISHED",
    0x327C: "NA_SE_EN_STAL08_CRY_BIG",
    0x327D: "NA_SE_EN_STAL09_SCREAM",
    0x327E: "NA_SE_EN_STAL10_LAUGH_SHY",
    0x327F: "NA_SE_EN_STAL11_LAUGH_SHY2",
    0x3280: "NA_SE_EN_STAL12_LAUGH_KIDLY",
    0x3281: "NA_SE_EN_STAL20_CALL_MOON",
    0x3282: "NA_SE_EN_STAL20_CALL_MOON2",
    0x3283: "NA_SE_EN_STAL21_PSYCHO_VOICE",
    0x3284: "NA_SE_EN_STALKIDS_DOWN_K",
    0x3285: "NA_SE_EN_AKINDO_FLY",
    0x3286: "NA_SE_EN_NPC_APPEAR",
    0x3287: "NA_SE_EN_NPC_FADEAWAY",
    0x3288: "NA_SE_EN_DEBU_PAUSEx2",
    0x3289: "NA_SE_EN_YASE_PAUSEx2",
    0x328A: "NA_SE_EN_DEBU_HEAD_UP",
    0x328B: "NA_SE_EN_YASE_HEAD_UP",
    0x328C: "NA_SE_EN_STAL22_LAUGH_KID_L",
    0x328D: "NA_SE_EN_EVIL_POWER",
    0x328E: "NA_SE_NE_STAL23_COLD",
    0x328F: "NA_SE_EN_STALKIDS_GASAGOSO",
    0x3290: "NA_SE_EN_BOSU_TALK",
    0x3291: "NA_SE_EN_FAMOS_REVERSE1",
    0x3292: "NA_SE_EN_FAMOS_REVERSE2",
    0x3293: "NA_SE_EN_FAMOS_FLOAT",
    0x3294: "NA_SE_EN_FAMOS_FLOAT_REVERSE",
    0x3295: "NA_SE_EN_KOTAKE_ROLL",
    0x3296: "NA_SE_EN_KOTAKE_FLY",
    0x3297: "NA_SE_EN_THIEFBIRD_VOICE",
    0x3298: "NA_SE_EN_THIEFBIRD_DAMAGE",
    0x3299: "NA_SE_EN_THIEFBIRD_DEAD",
    0x329A: "NA_SE_EN_STALKIDS_BODY",
    0x329B: "NA_SE_EN_STALKIDS_BODY_LEV",
    0x329C: "NA_SE_EN_BOSU_STAND_RAPID",
    0x329D: "NA_SE_EN_STAL24_SCREAM2",
    0x329E: "NA_SE_EN_STALKIDS_EARTHQUAKE",
    0x329F: "NA_SE_EN_MASK_FLOAT",
    0x32A0: "NA_SE_EN_STALKIDS_PULLED",
    0x32A1: "NA_SE_EN_KITA_SALUTE",
    0x32A2: "NA_SE_EN_KTIA_WALK",
    0x32A3: "NA_SE_EN_KTIA_PAUSE_K",
    0x32A4: "NA_SE_EN_KITA_LAUGH_K",
    0x32A5: "NA_SE_EN_KITA_DAMAGE",
    0x32A6: "NA_SE_EN_KITA_DEAD",
    0x32A7: "NA_SE_EN_STALBABY_LAUGH",
    0x32A8: "NA_SE_EN_STALBABY_SURPRISED",
    0x32A9: "NA_SE_EN_KITA_BREAK",
    0x32AA: "NA_SE_EN_KITA_ATTACK_W",
    0x32AB: "NA_SE_EN_KONB_WAIT_OLD",
    0x32AC: "NA_SE_EN_DEATH_SCYTHE",
    0x32AD: "NA_SE_EN_DEATH_ROLL",
    0x32AE: "NA_SE_EN_DEATH_SCYTHE_LEV",
    0x32AF: "NA_SE_EN_DEATH_SCYTHE_ONGND",
    0x32B0: "NA_SE_EN_DEATH_VOICE",
    0x32B1: "NA_SE_EN_DEATH_DAMAGE",
    0x32B2: "NA_SE_EN_DEATH_DEAD",
    0x32B3: "NA_SE_EN_DEATH_ATTACK",
    0x32B4: "NA_SE_EN_DEATH_APPEAR",
    0x32B5: "NA_SE_EN_DEATH_HEARTBREAK",
    0x32B6: "NA_SE_EN_KONB_MINI_DEAD",
    0x32B7: "NA_SE_EN_HALF_REDEAD_LOOP",
    0x32B8: "NA_SE_EN_HALF_REDEAD_SURPRISE",
    0x32B9: "NA_SE_EN_HALF_REDEAD_SCREAME",
    0x32BA: "NA_SE_EN_HALF_REDEAD_TRANS",
    0x32BB: "NA_SE_EN_GOLON_VOICE_GENERAL",
    0x32BC: "NA_SE_EN_IWAIGORON_EVERYBODY",
    0x32BD: "NA_SE_EN_IWAIGORON_SOLO",
    0x32BE: "NA_SE_EN_ROMANI_WALK",
    0x32BF: "NA_SE_EN_MOON_SCREAM1",
    0x32C0: "NA_SE_EN_MOON_SCREAM2",
    0x32C1: "NA_SE_EN_MOON_SCREAM3",
    0x32C2: "NA_SE_EN_MOON_SCREAM4",
    0x32C3: "NA_SE_EN_STALKIDS_HEADACHE",
    0x32C4: "NA_SE_EN_BIGNUTS_WALK",
    0x32C5: "NA_SE_EN_KITA_PAUSE",
    0x32C6: "NA_SE_EN_ANSATSUSYA_LAUGH",
    0x32C7: "NA_SE_EN__copy514",
    0x32C8: "NA_SE_EN__copy515",
    0x32C9: "NA_SE_EN__copy516",
    0x32CA: "NA_SE_EN__copy517",
    0x32CB: "NA_SE_EN__copy518",
    0x32CC: "NA_SE_EN__copy519",
    0x32CD: "NA_SE_EN_DALMANI_A",
    0x32CE: "NA_SE_EN_DALMANI_B",
    0x32CF: "NA_SE_EN_DALMANI_C",
    0x32D0: "NA_SE_EN_DALMANI_D",
    0x32D1: "NA_SE_EN__2d1",
    0x32D2: "NA_SE_EN__2d2",
    0x32D3: "NA_SE_EN_EVIL_POWER_PREDEMO",
    0x32D4: "NA_SE_EN_KOUME_DAMAGE",
    0x32D5: "NA_SE_EN_KOUME_DAMAGE2",
    0x32D6: "NA_SE_EN_KONB_MINI_APPEAR",
    0x32D7: "NA_SE_EN_IRONNACK_DAMAGE",
    0x32D8: "NA_SE_EN_IRONNACK_DEAD",
    0x32D9: "NA_SE_EN_ANSATSUSYA_ONGND",
    0x32DA: "NA_SE_EN_ANSATSUSYA_ROCK",
    0x32DB: "NA_SE_EN_REDEAD_REVERSE",
    0x32DC: "NA_SE_EN_STALKIDS_NOSE",
    0x32DD: "NA_SE_EN_KITA_SNORE",
    0x32DE: "NA_SE_EN_IRONNACK_DASH",
    0x32DF: "NA_SE_EN_TUBOOCK_FLY",
    0x4000: "NA_SE_SY_WIN_OPEN",
    0x4001: "NA_SE_SY_WIN_CLOSE",
    0x4002: "NA_SE_SY_CORRECT_CHIME",
    0x4003: "NA_SE_SY_GET_RUPY",
    0x4004: "NA_SE_SY_MESSAGE_WOMAN",
    0x4005: "NA_SE_SY_MESSAGE_MAN",
    0x4006: "NA_SE_SY_ERROR",
    0x4007: "NA_SE_SY_TRE_BOX_APPEAR",
    0x4008: "NA_SE_SY_DECIDE",
    0x4009: "NA_SE_SY_CURSOR",
    0x400A: "NA_SE_SY_CANCEL",
    0x400B: "NA_SE_SY_HP_RECOVER",
    0x400C: "NA_SE_SY_ATTENTION_ON",
    0x400D: "NA_SE_SY_DUMMY_13",
    0x400E: "NA_SE_SY_DUMMY_14",
    0x400F: "NA_SE_SY_LOCK_OFF",
    0x4010: "NA_SE_SY_LOCK_ON_HUMAN",
    0x4011: "NA_SE_SY_DUMMY_17",
    0x4012: "NA_SE_SY_DUMMY_18",
    0x4013: "NA_SE_SY_CAMERA_ZOOM_UP",
    0x4014: "NA_SE_SY_CAMERA_ZOOM_DOWN",
    0x4015: "NA_SE_SY_DUMMY_21",
    0x4016: "NA_SE_SY_DUMMY_22",
    0x4017: "NA_SE_SY_ATTENTION_ON_OLD",
    0x4018: "NA_SE_SY_MESSAGE_PASS",
    0x4019: "NA_SE_SY_WARNING_COUNT_N",
    0x401A: "NA_SE_SY_WARNING_COUNT_E",
    0x401B: "NA_SE_SY_HITPOINT_ALARM",
    0x401C: "NA_SE_SY_DUMMY_28",
    0x401D: "NA_SE_SY_DEMO_CUT",
    0x401E: "NA_SE_SY_NAVY_CALL",
    0x401F: "NA_SE_SY_GAUGE_UP",
    0x4020: "NA_SE_SY_DUMMY_32",
    0x4021: "NA_SE_SY_DUMMY_33",
    0x4022: "NA_SE_SY_DUMMY_34",
    0x4023: "NA_SE_SY_PIECE_OF_HEART",
    0x4024: "NA_SE_SY_GET_ITEM",
    0x4025: "NA_SE_SY_WIN_SCROLL_LEFT",
    0x4026: "NA_SE_SY_WIN_SCROLL_RIGHT",
    0x4027: "NA_SE_SY_OCARINA_ERROR",
    0x4028: "NA_SE_SY_CAMERA_ZOOM_UP_2",
    0x4029: "NA_SE_SY_CAMERA_ZOOM_DOWN_2",
    0x402A: "NA_SE_SY_GLASSMODE_ON",
    0x402B: "NA_SE_SY_GLASSMODE_OFF",
    0x402C: "NA_SE_SY_FOUND",
    0x402D: "NA_SE_SY_HIT_SOUND",
    0x402E: "NA_SE_SY_MESSAGE_END",
    0x402F: "NA_SE_SY_RUPY_COUNT",
    0x4030: "NA_SE_SY_LOCK_ON",
    0x4031: "NA_SE_SY_GET_BOXITEM",
    0x4032: "NA_SE_SY_WHITE_OUT_INTO_MOON",
    0x4033: "NA_SE_SY_WHITE_OUT_S",
    0x4034: "NA_SE_SY_WHITE_OUT_T",
    0x4035: "NA_SE_SY_START_SHOT",
    0x4036: "NA_SE_SY_METRONOME",
    0x4037: "NA_SE_SY_ATTENTION_URGENCY",
    0x4038: "NA_SE_SY_METRONOME_LV",
    0x4039: "NA_SE_SY_FSEL_CURSOR",
    0x403A: "NA_SE_SY_FSEL_DECIDE_S",
    0x403B: "NA_SE_SY_FSEL_DECIDE_L",
    0x403C: "NA_SE_SY_FSEL_CLOSE",
    0x403D: "NA_SE_SY_FSEL_ERROR",
    0x403E: "NA_SE_SY_SET_FIRE_ARROW",
    0x403F: "NA_SE_SY_SET_ICE_ARROW",
    0x4040: "NA_SE_SY_SET_LIGHT_ARROW",
    0x4041: "NA_SE_SY_SYNTH_MAGIC_ARROW",
    0x4042: "NA_SE_SY_METRONOME_2",
    0x4043: "NA_SE_SY_KINSTA_MARK_APPEAR",
    0x4044: "NA_SE_SY_FIVE_COUNT_LUPY",
    0x4045: "NA_SE_SY_CARROT_RECOVER",
    0x4046: "NA_SE_EV_FAIVE_LUPY_COUNT",
    0x4047: "NA_SE_SY_METRONOME_TEMPO",
    0x4048: "NA_SE_SY_COMICAL_SOUND0_0",
    0x4049: "NA_SE_SY_COMICAL_SOUND0_1",
    0x404A: "NA_SE_SY_COMICAL_SOUND0_LAST",
    0x404B: "NA_SE_SY_SOUT_DEMO",
    0x404C: "NA_SE_SY_TIMESIGNAL_BELL",
    0x404D: "NA_SE_SY_DEKUNUTS_JUMP_FAILED",
    0x404E: "NA_SE_SY_ATTENTION_SOUND",
    0x404F: "NA_SE_SY_TRANSFORM_MASK_FLASH",
    0x4050: "NA_SE_SY_CAMERA_SHUTTER",
    0x4051: "NA_SE_SY_STALKIDS_PSYCHO",
    0x4052: "NA_SE_SY_CHICK_JOIN_CHIME",
    0x4053: "NA_SE_SY_HIT_SOUND_L",
    0x4054: "NA_SE_SY_FAIRY_MASK_SUCCESS",
    0x4055: "NA_SE_SY_SCHEDULE_WRITE",
    0x4056: "NA_SE_SY_STOPWATCH_TIMER_3",
    0x4057: "NA_SE_SY_STOPWATCH_TIMER_INF",
    0x4058: "NA_SE_SY_EARTHQUAKE_OUTDOOR",
    0x4059: "NA_SE_SY_SPIRAL_DASH",
    0x405A: "NA_SE_SY_QUIZ_CORRECT",
    0x405B: "NA_SE_SY_QUIZ_INCORRECT",
    0x405C: "NA_SE_SY_DIZZY_EFFECT",
    0x405D: "NA_SE_SY_TIME_CONTROL_SLOW",
    0x405E: "NA_SE_SY_TIME_CONTROL_NORMAL",
    0x405F: "NA_SE_SY_SECOM_WARNING",
    0x5000: "NA_SE_OC_OCARINA",
    0x5001: "NA_SE_OC_ABYSS",
    0x5002: "NA_SE_OC_DOOR_OPEN",
    0x5003: "NA_SE_OC_SECRET_WARP_IN",
    0x5004: "NA_SE_OC_SECRET_WARP_OUT",
    0x5005: "NA_SE_OC_SECRET_HOLE_OUT",
    0x5006: "NA_SE_OC_REVENGE",
    0x5007: "NA_SE_OC_TUNAMI",
    0x5008: "NA_SE_OC_TELOP_IMPACT",
    0x5009: "NA_SE_OC_WOOD_GATE_OPEN",
    0x500A: "NA_SE_OC_FIREWORKS",
    0x500B: "NA_SE_OC_WHITE_OUT_INTO_KYOJIN",
    0x500C: "NA_SE_OC_12",
    0x500D: "NA_SE_OC_13",
    0x500E: "NA_SE_OC_14",
    0x500F: "NA_SE_OC_15",
    0x6000: "NA_SE_VO_LI_SWORD_N",
    0x6001: "NA_SE_VO_LI_SWORD_L",
    0x6002: "NA_SE_VO_LI_LASH",
    0x6003: "NA_SE_VO_LI_HANG",
    0x6004: "NA_SE_VO_LI_CLIMB_END",
    0x6005: "NA_SE_VO_LI_DAMAGE_S",
    0x6006: "NA_SE_VO_LI_FREEZE",
    0x6007: "NA_SE_VO_LI_FALL_S",
    0x6008: "NA_SE_VO_LI_FALL_L",
    0x6009: "NA_SE_VO_LI_BREATH_REST",
    0x600A: "NA_SE_VO_LI_BREATH_DRINK",
    0x600B: "NA_SE_VO_LI_DOWN",
    0x600C: "NA_SE_VO_LI_TAKEN_AWAY",
    0x600D: "NA_SE_VO_LI_HELD",
    0x600E: "NA_SE_VO_LI_SNEEZE",
    0x600F: "NA_SE_VO_LI_SWEAT",
    0x6010: "NA_SE_VO_LI_DRINK",
    0x6011: "NA_SE_VO_LI_RELAX",
    0x6012: "NA_SE_VO_LI_SWORD_PUTAWAY",
    0x6013: "NA_SE_VO_LI_GROAN",
    0x6014: "NA_SE_VO_LI_AUTO_JUMP",
    0x6015: "NA_SE_VO_LI_MAGIC_NALE",
    0x6016: "NA_SE_VO_LI_SURPRISE",
    0x6017: "NA_SE_VO_LI_MAGIC_FROL",
    0x6018: "NA_SE_VO_LI_PUSH",
    0x6019: "NA_SE_VO_LI_HOOKSHOT_HANG",
    0x601A: "NA_SE_VO_LI_LAND_DAMAGE_S",
    0x601B: "NA_SE_VO_LI_MAGIC_START",
    0x601C: "NA_SE_VO_LI_MAGIC_ATTACK",
    0x601D: "NA_SE_VO_BL_DOWN",
    0x601E: "NA_SE_VO_LI_DEMO_DAMAGE",
    0x601F: "NA_SE_VO_LI_SWORD_N_copy30",
    0x6020: "NA_SE_VO_DUMMY_32",
    0x6021: "NA_SE_VO_DUMMY_33",
    0x6022: "NA_SE_VO_DUMMY_34",
    0x6023: "NA_SE_VO_DUMMY_35",
    0x6024: "NA_SE_VO_DUMMY_36",
    0x6025: "NA_SE_VO_DUMMY_37",
    0x6026: "NA_SE_VO_DUMMY_38",
    0x6027: "NA_SE_VO_DUMMY_39",
    0x6028: "NA_SE_VO_NAVY_ENEMY",
    0x6029: "NA_SE_VO_NAVY_HELLO",
    0x602A: "NA_SE_VO_NAVY_HEAR",
    0x602B: "NA_SE_VO_DUMMY_43",
    0x602C: "NA_SE_VO_DUMMY_44",
    0x602D: "NA_SE_VO_DUMMY_45",
    0x602E: "NA_SE_VO_DUMMY_46",
    0x602F: "NA_SE_VO_DUMMY_47",
    0x6030: "NA_SE_VO_DUMMY_48",
    0x6031: "NA_SE_VO_DUMMY_49",
    0x6032: "NA_SE_VO_DUMMY_50",
    0x6033: "NA_SE_VO_DUMMY_51",
    0x6034: "NA_SE_VO_DUMMY_52",
    0x6035: "NA_SE_VO_DUMMY_53",
    0x6036: "NA_SE_VO_DUMMY_54",
    0x6037: "NA_SE_VO_DUMMY_55",
    0x6038: "NA_SE_VO_DUMMY_56",
    0x6039: "NA_SE_VO_DUMMY_57",
    0x603A: "NA_SE_VO_DUMMY_58",
    0x603B: "NA_SE_VO_DUMMY_59",
    0x603C: "NA_SE_VO_DUMMY_60",
    0x603D: "NA_SE_VO_DUMMY_61",
    0x603E: "NA_SE_VO_DUMMY_62",
    0x603F: "NA_SE_VO_DUMMY_63",
    0x6040: "NA_SE_VO_LK_WAKE_UP",
    0x6041: "NA_SE_VO_LK_CATCH_DEMO",
    0x6042: "NA_SE_VO_LK_DRAGGED_DAMAGE",
    0x6043: "NA_SE_VO_NAVY_CALL",
    0x6044: "NA_SE_VO_NA_HELLO_3",
    0x6045: "NA_SE_VO_CHAT_MESSAGE_CALL",
    0x6046: "NA_SE_VO_BELL_MESSAGE",
    0x6047: "NA_SE_VO_MONDO_MESSAGE",
    0x6048: "NA_SE_VO_LK_USING_UP_ENERGY",
    0x6049: "NA_SE_VO_DUMMY_73",
    0x604A: "NA_SE_VO_GO_SLEEP",
    0x604B: "NA_SE_VO_NP_SLEEP_OUT",
    0x604C: "NA_SE_VO_DUMMY_76",
    0x604D: "NA_SE_VO_DUMMY_77",
    0x604E: "NA_SE_VO_NP_DRINK",
    0x604F: "NA_SE_VO_DUMMY_79",
    0x6050: "NA_SE_VO_NARRATION_0",
    0x6051: "NA_SE_VO_TA_SURPRISE",
    0x6052: "NA_SE_VO_TA_CRY_0",
    0x6053: "NA_SE_VO_TA_CRY_1",
    0x6054: "NA_SE_VO_IN_CRY_0",
    0x6055: "NA_SE_VO_IN_LOST",
    0x6056: "NA_SE_VO_IN_LASH_0",
    0x6057: "NA_SE_VO_IN_LASH_1",
    0x6058: "NA_SE_VO_FR_LAUGH_0",
    0x6059: "NA_SE_VO_FR_SMILE_0",
    0x605A: "NA_SE_VO_NB_AGONY",
    0x605B: "NA_SE_VO_NB_CRY_0",
    0x605C: "NA_SE_VO_NB_NOTICE",
    0x605D: "NA_SE_VO_NA_HELLO_0",
    0x605E: "NA_SE_VO_NA_HELLO_1",
    0x605F: "NA_SE_VO_NA_HELLO_2",
    0x6060: "NA_SE_VO_RT_CRASH",
    0x6061: "NA_SE_VO_RT_DISCOVER",
    0x6062: "NA_SE_VO_RT_FALL",
    0x6063: "NA_SE_VO_RT_LAUGH_0",
    0x6064: "NA_SE_VO_RT_LIFT",
    0x6065: "NA_SE_VO_RT_THROW",
    0x6066: "NA_SE_VO_RT_UNBALLANCE",
    0x6067: "NA_SE_VO_ST_DAMAGE",
    0x6068: "NA_SE_VO_ST_ATTACK",
    0x6069: "NA_SE_VO_Z0_HURRY",
    0x606A: "NA_SE_VO_Z0_MEET",
    0x606B: "NA_SE_VO_Z0_QUESTION",
    0x606C: "NA_SE_VO_Z0_SIGH_0",
    0x606D: "NA_SE_VO_Z0_SMILE_0",
    0x606E: "NA_SE_VO_Z0_SURPRISE",
    0x606F: "NA_SE_VO_Z0_THROW",
    0x6070: "NA_SE_VO_SK_CRY_0",
    0x6071: "NA_SE_VO_SK_CRY_1",
    0x6072: "NA_SE_VO_SK_CRASH",
    0x6073: "NA_SE_VO_NA_LISTEN",
    0x6074: "NA_SE_VO_SK_SHOUT",
    0x6075: "NA_SE_VO_Z1_CRY_0",
    0x6076: "NA_SE_VO_Z1_CRY_1",
    0x6077: "NA_SE_VO_Z1_OPENDOOR",
    0x6078: "NA_SE_VO_FR_SMILE_1",
    0x6079: "NA_SE_VO_FR_SMILE_2",
    0x607A: "NA_SE_VO_KZ_MOVE",
    0x607B: "NA_SE_VO_NB_LAUGH",
    0x607C: "NA_SE_VO_IN_JOY0",
    0x607D: "NA_SE_VO_IN_JOY1",
    0x607E: "NA_SE_VO_IN_JOY2",
    0x607F: "NA_SE_VO_DUMMY_127",
    0x6080: "NA_SE_VO_DUMMY_128",
    0x6081: "NA_SE_VO_DUMMY_129",
    0x6082: "NA_SE_VO_DUMMY_130",
    0x6083: "NA_SE_VO_DUMMY_131",
    0x6084: "NA_SE_VO_DUMMY_132",
    0x6085: "NA_SE_VO_DUMMY_133",
    0x6086: "NA_SE_VO_DUMMY_134",
    0x6087: "NA_SE_VO_DUMMY_135",
    0x6088: "NA_SE_VO_DUMMY_136",
    0x6089: "NA_SE_VO_DUMMY_137",
    0x608A: "NA_SE_VO_DUMMY_138",
    0x608B: "NA_SE_VO_DUMMY_139",
    0x608C: "NA_SE_VO_DUMMY_140",
    0x608D: "NA_SE_VO_DUMMY_141",
    0x608E: "NA_SE_VO_DUMMY_142",
    0x608F: "NA_SE_VO_DUMMY_143",
    0x6090: "NA_SE_VO_DUMMY_144",
    0x6091: "NA_SE_VO_DUMMY_145",
    0x6092: "NA_SE_VO_DUMMY_146",
    0x6093: "NA_SE_VO_DUMMY_147",
    0x6094: "NA_SE_VO_DUMMY_148",
    0x6095: "NA_SE_VO_DUMMY_149",
    0x6096: "NA_SE_VO_DUMMY_150",
    0x6097: "NA_SE_VO_DUMMY_151",
    0x6098: "NA_SE_VO_DUMMY_152",
    0x6099: "NA_SE_VO_DUMMY_153",
    0x609A: "NA_SE_VO_DUMMY_154",
    0x609B: "NA_SE_VO_DUMMY_155",
    0x609C: "NA_SE_VO_DUMMY_156",
    0x609D: "NA_SE_VO_DUMMY_157",
    0x609E: "NA_SE_VO_DUMMY_158",
    0x609F: "NA_SE_VO_DUMMY_159",
    0x60A0: "NA_SE_VO_DUMMY_160",
    0x60A1: "NA_SE_VO_DUMMY_161",
    0x60A2: "NA_SE_VO_DUMMY_162",
    0x60A3: "NA_SE_VO_DUMMY_163",
    0x60A4: "NA_SE_VO_DUMMY_164",
    0x60A5: "NA_SE_VO_DUMMY_165",
    0x60A6: "NA_SE_VO_DUMMY_166",
    0x60A7: "NA_SE_VO_DUMMY_167",
    0x60A8: "NA_SE_VO_DUMMY_168",
    0x60A9: "NA_SE_VO_DUMMY_169",
    0x60AA: "NA_SE_VO_DUMMY_170",
    0x60AB: "NA_SE_VO_DUMMY_171",
    0x60AC: "NA_SE_VO_DUMMY_172",
    0x60AD: "NA_SE_VO_DUMMY_173",
    0x60AE: "NA_SE_VO_DUMMY_174",
    0x60AF: "NA_SE_VO_DUMMY_175",
    0x60B0: "NA_SE_VO_DUMMY_176",
    0x60B1: "NA_SE_VO_DUMMY_177",
    0x60B2: "NA_SE_VO_DUMMY_178",
    0x60B3: "NA_SE_VO_DUMMY_179",
    0x60B4: "NA_SE_VO_DUMMY_180",
    0x60B5: "NA_SE_VO_DUMMY_181",
    0x60B6: "NA_SE_VO_DUMMY_182",
    0x60B7: "NA_SE_VO_DUMMY_183",
    0x60B8: "NA_SE_VO_DUMMY_184",
    0x60B9: "NA_SE_VO_DUMMY_185",
    0x60BA: "NA_SE_VO_DUMMY_186",
    0x60BB: "NA_SE_VO_DUMMY_187",
    0x60BC: "NA_SE_VO_DUMMY_188",
    0x60BD: "NA_SE_VO_DUMMY_189",
    0x60BE: "NA_SE_VO_DUMMY_190",
    0x60BF: "NA_SE_VO_DUMMY_191",
    0x60C0: "NA_SE_VO_DUMMY_192",
    0x60C1: "NA_SE_VO_DUMMY_193",
    0x60C2: "NA_SE_VO_DUMMY_194",
    0x60C3: "NA_SE_VO_DUMMY_195",
    0x60C4: "NA_SE_VO_DUMMY_196",
    0x60C5: "NA_SE_VO_DUMMY_197",
    0x60C6: "NA_SE_VO_DUMMY_198",
    0x60C7: "NA_SE_VO_DUMMY_199",
    0x60C8: "NA_SE_VO_DUMMY_200",
    0x60C9: "NA_SE_VO_DUMMY_201",
    0x60CA: "NA_SE_VO_DUMMY_202",
    0x60CB: "NA_SE_VO_DUMMY_203",
    0x60CC: "NA_SE_VO_DUMMY_204",
    0x60CD: "NA_SE_VO_DUMMY_205",
    0x60CE: "NA_SE_VO_DUMMY_206",
    0x60CF: "NA_SE_VO_DUMMY_207",
    0x60D0: "NA_SE_VO_DUMMY_208",
    0x60D1: "NA_SE_VO_DUMMY_209",
    0x60D2: "NA_SE_VO_DUMMY_210",
    0x60D3: "NA_SE_VO_DUMMY_211",
    0x60D4: "NA_SE_VO_DUMMY_212",
    0x60D5: "NA_SE_VO_DUMMY_213",
    0x60D6: "NA_SE_VO_DUMMY_214",
    0x60D7: "NA_SE_VO_DUMMY_215",
    0x60D8: "NA_SE_VO_DUMMY_216",
    0x60D9: "NA_SE_VO_DUMMY_217",
    0x60DA: "NA_SE_VO_DUMMY_218",
    0x60DB: "NA_SE_VO_DUMMY_219",
    0x60DC: "NA_SE_VO_DUMMY_220",
    0x60DD: "NA_SE_VO_DUMMY_221",
    0x60DE: "NA_SE_VO_DUMMY_222",
    0x60DF: "NA_SE_VO_DUMMY_223",
    0x60E0: "NA_SE_VO_LI_POO_WAIT",
    0x60E1: "NA_SE_VO_DUMMY_225",
    0x60E2: "NA_SE_VO_DUMMY_226",
    0x60E3: "NA_SE_VO_DUMMY_227",
    0x60E4: "NA_SE_VO_DUMMY_228",
    0x60E5: "NA_SE_VO_DUMMY_229",
    0x60E6: "NA_SE_VO_DUMMY_230",
    0x60E7: "NA_SE_VO_DUMMY_231",
    0x60E8: "NA_SE_VO_DUMMY_232",
    0x60E9: "NA_SE_VO_DUMMY_233",
    0x60EA: "NA_SE_VO_DUMMY_234",
    0x60EB: "NA_SE_VO_DUMMY_235",
    0x60EC: "NA_SE_VO_DUMMY_236",
    0x60ED: "NA_SE_VO_DUMMY_237",
    0x60EE: "NA_SE_VO_DUMMY_238",
    0x60EF: "NA_SE_VO_DUMMY_239",
    0x60F0: "NA_SE_VO_DUMMY_240",
    0x60F1: "NA_SE_VO_DUMMY_241",
    0x60F2: "NA_SE_VO_DUMMY_242",
    0x60F3: "NA_SE_VO_DUMMY_243",
    0x60F4: "NA_SE_VO_DUMMY_244",
    0x60F5: "NA_SE_VO_DUMMY_245",
    0x60F6: "NA_SE_VO_DUMMY_246",
    0x60F7: "NA_SE_VO_DUMMY_247",
    0x60F8: "NA_SE_VO_DUMMY_248",
    0x60F9: "NA_SE_VO_DUMMY_249",
    0x60FA: "NA_SE_VO_DUMMY_250",
    0x60FB: "NA_SE_VO_DUMMY_251",
    0x60FC: "NA_SE_VO_DUMMY_252",
    0x60FD: "NA_SE_VO_DUMMY_253",
    0x60FE: "NA_SE_VO_DUMMY_254",
    0x60FF: "NA_SE_VO_DUMMY_255",
    0x6100: "NA_SE_VO_JMVO02",
    0x6101: "NA_SE_VO_JMVO04",
    0x6102: "NA_SE_VO_CDVO00",
    0x6103: "NA_SE_VO_CDVO01",
    0x6104: "NA_SE_VO_CDVO02",
    0x6105: "NA_SE_VO_CDVO03",
    0x6106: "NA_SE_VO_BBVO00",
    0x6107: "NA_SE_VO_BBVO01",
    0x6108: "NA_SE_VO_BBVO02",
    0x6109: "NA_SE_VO_BBVO03",
    0x610A: "NA_SE_VO_BBVO04",
    0x610B: "NA_SE_VO_BBVO05",
    0x610C: "NA_SE_VO_OBVO01",
    0x610D: "NA_SE_VO_ARVO00",
    0x610E: "NA_SE_VO_ARVO01",
    0x610F: "NA_SE_VO_MMVO00",
    0x6110: "NA_SE_VO_MMVO01",
    0x6111: "NA_SE_VO_MMVO02",
    0x6112: "NA_SE_VO_MMVO03",
    0x6113: "NA_SE_VO_MMVO04",
    0x6114: "NA_SE_VO_MMVO05",
    0x6115: "NA_SE_VO_ABVO00",
    0x6116: "NA_SE_VO_ABVO01",
    0x6117: "NA_SE_VO_NPVO00",
    0x6118: "NA_SE_VO_FPVO00",
    0x6119: "NA_SE_VO_FPVO01",
    0x611A: "NA_SE_VO_FPVO02",
    0x611B: "NA_SE_VO_FPVO03",
    0x611C: "NA_SE_VO_ROVO01",
    0x611D: "NA_SE_VO_ROVO02",
    0x611E: "NA_SE_VO_RYVO01",
    0x611F: "NA_SE_VO_RYVO02",
    0x6120: "NA_SE_VO_RYVO03",
    0x6121: "NA_SE_VO_RYVO04",
    0x6122: "NA_SE_VO_ANVO00",
    0x6123: "NA_SE_VO_ANVO01",
    0x6124: "NA_SE_VO_ANVO02",
    0x6125: "NA_SE_VO_ANVO03",
    0x6126: "NA_SE_VO_CRVO00",
    0x6127: "NA_SE_VO_CRVO01",
    0x6128: "NA_SE_VO_CRVO02",
    0x6129: "NA_SE_VO_CRVO03",
    0x612A: "NA_SE_VO_HNVO00",
    0x612B: "NA_SE_VO_HNVO01",
    0x612C: "NA_SE_VO_HNVO02",
    0x612D: "NA_SE_VO_RMVO00",
    0x612E: "NA_SE_VO_RMVO01",
    0x612F: "NA_SE_VO_RMVO02",
    0x6130: "NA_SE_VO_PMVO01",
    0x6131: "NA_SE_VO_PMVO02",
    0x6132: "NA_SE_VO_PMVO03",
    0x6133: "NA_SE_VO_DHVO00",
    0x6134: "NA_SE_VO_DHVO01",
    0x6135: "NA_SE_VO_DHVO02",
    0x6136: "NA_SE_VO_DHVO03",
    0x6137: "NA_SE_VO_DHVO04",
    0x6138: "NA_SE_VO_TFVO00",
    0x6139: "NA_SE_VO_ANVO04",
    0x613A: "NA_SE_VO_ANVO05",
    0x613B: "NA_SE_VO_PMVO00",
    0x613C: "NA_SE_VO_CHVO03",
    0x613D: "NA_SE_VO_CHVO04",
    0x613E: "NA_SE_VO_CHVO05",
    0x613F: "NA_SE_VO_CHVO06",
    0x6140: "NA_SE_VO_CHVO07",
    0x6141: "NA_SE_VO_CHVO08",
    0x6142: "NA_SE_VO_CHVO09",
    0x6143: "NA_SE_VO_DPVO00",
    0x6144: "NA_SE_VO_DPVO01",
    0x6145: "NA_SE_VO_DPVO02",
    0x6146: "NA_SE_VO_SKVO00",
    0x6147: "NA_SE_VO_SKVO01",
    0x6148: "NA_SE_VO_KHVO00",
    0x6149: "NA_SE_VO_KHVO01",
    0x614A: "NA_SE_VO_KHVO02",
    0x614B: "NA_SE_VO_SHVO00",
    0x614C: "NA_SE_VO_SHVO01",
    0x614D: "NA_SE_VO_KAVO02",
    0x614E: "NA_SE_VO_KAVO03",
    0x614F: "NA_SE_VO_MTVO00",
    0x6150: "NA_SE_VO_TTVO00",
    0x6151: "NA_SE_VO_ITVO00",
    0x6152: "NA_SE_VO_ITVO01",
    0x6153: "NA_SE_VO_ITVO02",
    0x6154: "NA_SE_VO_KMVO00",
    0x6155: "NA_SE_VO_KMVO01",
    0x6156: "NA_SE_VO_JOVO00",
    0x6157: "NA_SE_VO_JYVO00",
    0x6158: "NA_SE_VO_DTVO00",
    0x6159: "NA_SE_VO_GUVO00",
    0x615A: "NA_SE_VO_KTVO00",
    0x615B: "NA_SE_VO_KTVO01",
    0x615C: "NA_SE_VO_KTVO03",
    0x615D: "NA_SE_VO_ZBVO00",
    0x615E: "NA_SE_VO_ZBVO01",
    0x615F: "NA_SE_VO_DAVO01",
    0x6160: "NA_SE_VO_SHVO04",
    0x6161: "NA_SE_VO_GBVO02",
    0x6162: "NA_SE_VO_GBVO03",
    0x6163: "NA_SE_VO_PFVO00",
    0x6164: "NA_SE_VO_PFVO01",
    0x6165: "NA_SE_VO_GAVO00",
    0x6166: "NA_SE_VO_GAVO01",
    0x6167: "NA_SE_VO_DJVO00",
    0x6168: "NA_SE_VO_DJVO01",
    0x6169: "NA_SE_VO_MSVO00",
    0x616A: "NA_SE_VO_MSVO01",
    0x616B: "NA_SE_VO_JPVO00",
    0x616C: "NA_SE_VO_HYVO00",
    0x616D: "NA_SE_VO_HYVO01",
    0x616E: "NA_SE_VO_BAVO00",
    0x616F: "NA_SE_VO_POVO00",
    0x6170: "NA_SE_VO_DAVO00",
    0x6171: "NA_SE_VO_DAVO02",
    0x6172: "NA_SE_VO_MKVO00",
    0x6173: "NA_SE_VO_MKVO01",
    0x6174: "NA_SE_VO_MKVO02",
    0x6175: "NA_SE_VO_MKVO03",
    0x6176: "NA_SE_VO_MKVO04",
    0x6177: "NA_SE_VO_TIVO00",
    0x6178: "NA_SE_VO_TIVO01",
    0x6179: "NA_SE_VO_TIVO02",
    0x617A: "NA_SE_VO_TIVO03",
    0x617B: "NA_SE_VO_TIVO04",
    0x617C: "NA_SE_VO_TIVO05",
    0x617D: "NA_SE_VO_OMVO00",
    0x617E: "NA_SE_VO_OMVO01",
    0x617F: "NA_SE_VO_OMVO02",
    0x6180: "NA_SE_VO_OMVO03",
    0x6181: "NA_SE_VO_OMVO04",
    0x6182: "NA_SE_VO_OMVO05",
    0x6183: "NA_SE_VO_OMVO06",
    0x6184: "NA_SE_VO_DEMO_FALL2",
    0x6185: "NA_SE_VO_DEMO_384",
    0x6186: "NA_SE_VO_DEMO_385",
    0x6187: "NA_SE_VO_DEMO_386",
    0x6188: "NA_SE_VO_DEMO_387",
    0x6189: "NA_SE_VO_DEMO_388",
    0x618A: "NA_SE_VO_DEMO_389",
    0x618B: "NA_SE_VO_DEMO_390",
    0x618C: "NA_SE_VO_DEMO_391",
    0x618D: "NA_SE_VO_DEMO_392",
    0x618E: "NA_SE_VO_DEMO_393",
    0x618F: "NA_SE_VO_DEMO_394",
}

def read4(data : bytes, p : int) -> int:
    return struct.unpack(">I", data[p:p+4])[0]

def unique_or_none(lst : List[T]) -> Optional[T]:
    if not lst:
        return None
    elem = lst[0]
    for e in lst[1:]:
        if e != elem:
            return None
    return elem

class MessageDecoder:
    def __init__(self, control_end : int, control_codes : Dict[int, Tuple[str, str, Optional[Tuple[Callable[[int], str]]]]], 
                 control_header : Tuple[str, str, Optional[Tuple[Callable[[int], str]]]], extraction_charmap : Dict[int, str]) -> None:
        self.control_end : int = control_end
        self.control_codes : Dict[int, Tuple[str, str, Optional[Tuple[Callable[[int], str]]]]] = control_codes
        self.control_header : Tuple[str, str, Optional[Tuple[Callable[[int], str]]]] = control_header
        self.extraction_charmap : Dict[int, str] = extraction_charmap
        self.msg : Optional[bytes] = None

    def pop_char(self) -> int:
        # Implement in subclass
        raise NotImplementedError()

    def pop_char_end(self) -> int:
        # Implement in subclass
        raise NotImplementedError()

    def decode_char(self, c : int) -> str:
        # Implement in subclass
        raise NotImplementedError()

    def pop_byte(self) -> int:
        c, self.msg = self.msg[0], self.msg[1:]
        return c

    def pop_byte_end(self) -> int:
        c, self.msg = self.msg[-1], self.msg[:-1]
        return c

    def pop_2byte(self) -> int:
        u = self.pop_byte()
        l = self.pop_byte()
        return (u << 8) | l

    def pop_2byte_end(self) -> int:
        l = self.pop_byte_end()
        u = self.pop_byte_end()
        return (u << 8) | l

    def format_sfx_id(self, c : int) -> str:
        try:
            if c & 0x800:
                return sfx_ids[c & ~0x800]
            else:
                return f"{sfx_ids[c]} - SFX_FLAG"
        except KeyError:
            return f"0x{c:04X}"
        
    def format_byte_hex(self, c: int) -> str:
        return f"0x{c:02X}"
    
    def format_2byte_hex(self, c: int) -> str:
        return f"0x{c:04X}"

    def format_item_id(self, c : int) -> str:
        return item_ids[c]

    def format_decimal(self, c : int) -> str:
        return str(c)

    def format_text_id(self, c : int) -> str:
        return f"0x{c:04X}"

    def format_bg_arg(self, c : int) -> str:
        return {
            0 : "X_LEFT",
            1 : "X_RIGHT",
        }[c]

    def format_bg_bits1(self, c : int) -> str:
        c1 = (c >> 4) & 0xF
        c2 = (c >> 0) & 0xF

        fgcol = {
            0 : "WHITE",
            1 : "DARK_RED",
            2 : "ORANGE",
            3 : "WHITE_3",
            4 : "WHITE_4",
            5 : "WHITE_5",
            6 : "WHITE_6",
            7 : "WHITE_7",
        }[c1]
        bgcol = {
            0 : "BLACK",
            1 : "GOLD",
            2 : "BLACK_2",
            3 : "BLACK_3",
        }[c2]

        return f"{fgcol}, {bgcol}"

    def format_bg_bits2(self, c : int) -> str:
        c1 = (c >> 4) & 0xF
        c2 = (c >> 0) & 0xF

        y_offset = {
            0 : "1",
            1 : "2",
        }[c1]

        return f"{y_offset}, {c2}"

    def emit_tokens(self, tokens : List[Tuple[str, str]]) -> str:
        if len(tokens) == 0:
            return "\"\""

        out = ""

        q_state = False
        s_state = False
        nindentlines = 0

        def maybe_enter_q():
            nonlocal out, q_state
            if not q_state:
                # If we're not in quotes, open quotes
                out += "\""
                q_state = True

        def maybe_exit_q(space=False):
            nonlocal out, q_state
            if q_state:
                # If we're in quotes, close quotes
                out += "\""
                if space:
                    # If the caller asked for a trailing space following closing quotes, also add it
                    out += " "
                q_state = False

        for tok_type,tok_dat in tokens:
            if tok_type == "HEADER":
                out += tok_dat + "\n"
                continue

            if tok_type in ("BOX_BREAK", "BOX_BREAK2", "BOX_BREAK_DELAYED"):
                # Box break has special handling since it is preceded by a newline and followed by two newlines

                # Close quotes since we're about to newline
                maybe_exit_q()
                nindentlines = 0
                s_state = False

                # Emit box break control character surrounded by real newlines
                out += "\n" + tok_dat + "\n\n"
                continue

            if s_state:
                # Add a leading space before this token
                out += " "
                s_state = False

            if tok_type == "NEWLINE":
                # Coming up on a newline
                maybe_enter_q()
                # Add the escaped newline character and a real newline
                out += "\\n\"\n"
                # Always closes quotes since we're at EOL
                q_state = False
                # Indent the line if requested
                if nindentlines != 0:
                    out += "    "
                    nindentlines -= 1
            elif tok_type == "TEXT":
                # Coming up on text
                maybe_enter_q()
                # Emit text
                out += tok_dat
            else:
                # Control characters
                maybe_exit_q(space=True)

                # Emit the control character
                out += tok_dat

                if tok_type == "TWO_CHOICE":
                    # Start a new line and indent next two lines
                    nindentlines = 2-1
                    out += "\n    "
                elif tok_type == "THREE_CHOICE":
                    # Start a new line and indent next three lines
                    nindentlines = 3-1
                    out += "\n    "
                else:
                    # No particular special handling
                    # Signal to next token to add a trailing space
                    s_state = True

        # If the message ended with quotes open, close them
        maybe_exit_q()

        if out[-1] == "\n":
            out = out[:-1]

        return out

    def decode_ctrl(self, name : str, argfmt : str, formatters : Tuple[Callable[[int], str]]) -> str:
        if argfmt == "":
            # No args to handle, just return the control char name
            return name

        # Read and format args
        args : List[int] = []
        for a in argfmt:
            if a == "x":
                assert self.pop_byte() == 0
            else:
                args.append({
                    "b" : self.pop_byte,
                    "h" : self.pop_2byte,
                }[a]())
        return f"{name}({', '.join(formatters[i](a) for i,a in enumerate(args))})"

    def decode(self, msg : bytes) -> str:
        if len(msg) == 0:
            # Empty message without even an END?
            return "None"

        # Strip trailing 0 bytes (assumed padding)
        while msg[-1] == 0:
            msg = msg[:-1]

        self.msg = msg

        # Must end in an END control code
        assert self.pop_char_end() == self.control_end, msg

        tokens : List[Tuple[str, str]] = []
        token_run = ""
        def flush_text():
            nonlocal tokens, token_run
            if token_run != "":
                tokens.append(("TEXT", token_run))
                token_run = ""

        if self.control_header:
            tokens.append(("HEADER", self.decode_ctrl(*self.control_header)))

        # Consume the message, transforming it into tokens
        while len(self.msg) != 0:
            c = self.pop_char()
            # print(f"{c:02X}", self.control_codes.get(c,None))

            if c in self.control_codes:
                # Hit a control character, flush current run of text
                flush_text()
                # Add a token for the control character
                tokens.append((self.control_codes[c][0], self.decode_ctrl(*self.control_codes[c])))
            else:
                # Not a control character, accumulate a run of text
                if c in self.extraction_charmap:
                    token_run += self.extraction_charmap[c]
                else:
                    token_run += self.decode_char(c)

        # Flush any remaining text
        flush_text()

        self.msg = None

        # Convert tokens to final decoded text
        return self.emit_tokens(tokens)

    def format_highscore(self, c : int) -> str:
        return {
            0: "HS_BANK_RUPEES",
            1: "HS_UNK_1",
            2: "HS_FISHING",
            3: "HS_BOAT_ARCHERY",
            4: "HS_HORSE_BACK_BALLOON",
            6: "HS_SHOOTING_GALLERY"
        }[c]

class MessageDecoderNES(MessageDecoder):
    def __init__(self) -> None:
        control_end = 0xBF
        control_codes = {
            0x00: ("COLOR_DEFAULT", "", None),
            0x01: ("COLOR_RED", "", None),
            0x02: ("COLOR_GREEN", "", None),
            0x03: ("COLOR_BLUE", "", None),
            0x04: ("COLOR_YELLOW", "", None),
            0x05: ("COLOR_LIGHTBLUE", "", None),
            0X06: ("COLOR_PINK", "", None),
            0x07: ("COLOR_SILVER", "", None),
            0x08: ("COLOR_ORANGE", "", None),
            0x0A: ("TEXT_SPEED", "", None),
            0x0B: ("HS_BOAT_ARCHERY", "", None),
            0x0C: ("STRAY_FAIRIES", "", None),
            0x0D: ("TOKENS", "", None),
            0x0E: ("POINTS_TENS", "", None),
            0x0F: ("POINTS_THOUSANDS", "", None),
            0x10: ("BOX_BREAK", "", None),
            0x11: ("NEWLINE", "", None),
            0x12: ("BOX_BREAK2", "", None),
            0x13: ("CARRIAGE_RETURN", "", None),
            0x14: ("SHIFT", "b",   (self.format_decimal,)),
            0x15: ("CONTINUE", "", None),
            0x16: ("NAME", "", None),
            0x17: ("QUICKTEXT_ENABLE", "", None),
            0x18: ("QUICKTEXT_DISABLE", "", None),
            0x19: ("EVENT", "", None),
            0x1A: ("PERSISTENT", "", None),
            0x1B: ("BOX_BREAK_DELAYED", "h",   (self.format_decimal,)),
            0x1C: ("FADE", "h",   (self.format_decimal,)),
            0x1D: ("FADE_SKIPPABLE", "h",   (self.format_decimal,)),
            0x1E: ("SFX", "h",   (self.format_sfx_id,)),
            0x1F: ("DELAY", "h",   (self.format_decimal,)),
            0xBF: ("END", "", None),
            0xC1: ("BACKGROUND", "", None),
            0xC2: ("TWO_CHOICE", "", None),
            0xC3: ("THREE_CHOICE", "", None),
            0xC4: ("TIMER_POSTMAN", "", None),
            0xC5: ("TIMER_MINIGAME_1", "", None),
            0xC6: ("TIMER_2", "", None),
            0xC7: ("TIMER_MOON_CRASH", "", None),
            0xC8: ("TIMER_MINIGAME_2", "", None),
            0xC9: ("TIMER_TIMER_ENV_HAZARD", "", None),
            0xCA: ("TIME", "", None),
            0xCB: ("CHEST_FLAGS", "", None),
            0xCC: ("INPUT_BANK", "", None),
            0xCD: ("RUPEES_SELECTED", "", None),
            0xCE: ("RUPEES_TOTAL", "", None),
            0xCF: ("TIME_UNTIL_MOON_CRASH", "", None),
            0xD0: ("INPUT_DOGGY_RACETRACK_BET", "", None),
            0xD1: ("INPUT_BOMBER_CODE", "", None),
            0xD2: ("PAUSE_MENU", "", None),
            0xD3: ("TIME_SPEED", "", None),
            0xD4: ("OWL_WARP", "", None),
            0xD5: ("INPUT_LOTTERY_CODE", "", None),
            0xD6: ("SPIDER_HOUSE_MASK_CODE", "", None),
            0xD7: ("STRAY_FAIRIES_LEFT_WOODFALL", "", None),
            0xD8: ("STRAY_FAIRIES_LEFT_SNOWHEAD", "", None),
            0xD9: ("STRAY_FAIRIES_LEFT_GREAT_BAY", "", None),
            0xDA: ("STRAY_FAIRIES_LEFT_STONE_TOWER", "", None),
            0xDB: ("POINTS_BOAT_ARCHERY", "", None),
            0xDC: ("LOTTERY_CODE", "", None),
            0xDD: ("LOTTERY_CODE_GUESS", "", None),
            0xDE: ("HELD_ITEM_PRICE", "", None),
            0xDF: ("BOMBER_CODE", "", None),
            0xE0: ("EVENT2", "", None),
            0xE1: ("SPIDER_HOUSE_MASK_CODE_1", "", None),
            0xE2: ("SPIDER_HOUSE_MASK_CODE_2", "", None),
            0xE3: ("SPIDER_HOUSE_MASK_CODE_3", "", None),
            0xE4: ("SPIDER_HOUSE_MASK_CODE_4", "", None),
            0xE5: ("SPIDER_HOUSE_MASK_CODE_5", "", None),
            0xE6: ("SPIDER_HOUSE_MASK_CODE_6", "", None),
            0xE7: ("HOURS_UNTIL_MOON_CRASH", "", None),
            0xE8: ("TIME_UNTIL_NEW_DAY", "", None),
            0xF0: ("HS_POINTS_BANK_RUPEES", "", None),
            0xF1: ("HS_POINTS_UNK_1", "", None),
            0xF2: ("HS_POINTS_FISHING", "", None),
            0xF3: ("HS_TIME_BOAT_ARCHERY", "", None),
            0xF4: ("HS_TIME_HORSE_BACK_BALLOON", "", None),
            0xF5: ("HS_TIME_LOTTERY_GUESS", "", None),
            0xF6: ("HS_TOWN_SHOOTING_GALLERY", "", None),
            0xF7: ("HS_UNK_1", "", None),
            0xF8: ("HS_UNK_3_LOWER", "", None),
            0xF9: ("HS_HORSE_BACK_BALLOON", "", None),
            0xFA: ("HS_DEKU_PLAYGROUND_DAY_1", "", None),
            0xFB: ("HS_DEKU_PLAYGROUND_DAY_2", "", None),
            0xFC: ("HS_DEKU_PLAYGROUND_DAY_3", "", None),
            0xFD: ("DEKU_PLAYGROUND_NAME_DAY_1", "", None),
            0xFE: ("DEKU_PLAYGROUND_NAME_DAY_2", "", None),
            0xFF: ("DEKU_PLAYGROUND_NAME_DAY_3", "", None)
        }
        control_header = (
            "HEADER", "hbhhhh", 
            (
                self.format_2byte_hex, self.format_byte_hex, self.format_text_id,
                self.format_2byte_hex, self.format_2byte_hex, self.format_2byte_hex,
            )
        )
        extraction_charmap = {
            0xB0: '[A]',
            0xB1: '[B]',
            0xB2: '[C]',
            0xB3: '[L]',
            0xB4: '[R]',
            0xB5: '[Z]',
            0xB6: '[C-Up]',
            0xB7: '[C-Down]',
            0xB8: '[C-Left]',
            0xB9: '[C-Right]',
            0xBA: '▼',
            0xBB: '[Control-Pad]'
        }
        super().__init__(control_end, control_codes, control_header, extraction_charmap)
        self.pop_char = self.pop_byte
        self.pop_char_end = self.pop_byte_end

    def decode_char(self, c : int) -> str:
        decoded = bytes([c]).decode("ASCII")
        # Escape quotes within the text itself
        if decoded == "\"":
            decoded = "\\\""
        return decoded

class MessageDecoderCredits(MessageDecoder):
    def __init__(self) -> None:
        control_end = 0x2
        control_codes = {
            0x00: ("COLOR_DEFAULT", "", None),
            0x01: ("NEWLINE", "", None),
            0x02: ("END", "", None),
            0x04: ("BOX_BREAK", "", None),
            0x05: ("COLOR", "b", (self.format_color,)),
            0X06: ("SHIFT", "b", (self.format_decimal,)),
            0x07: ("TEXTID", "h", (self.format_text_id,)),
            0x08: ("QUICKTEXT_ENABLE", "", None),
            0x09: ("QUICKTEXT_DISABLE", "", None),
            0x0A: ("PERSISTENT", "", None),
            0x0B: ("EVENT", "", None),
            0x0C: ("BOX_BREAK_DELAY", "h", (self.format_decimal,)),
            0x0D: ("WAIT_INPUT", "", None),
            0x0E: ("FADE", "b", (self.format_decimal,)),
            0x0F: ("NAME", "", None),
            0x10: ("OCARINA", "", None),
            0x11: ("FADE2", "h", (self.format_decimal,)),
            0x12: ("SFX", "h", (self.format_sfx_id,)),
            0x13: ("ITEM_ICON", "b", (self.format_item_id,)),
            0x14: ("TEXT_SPEED", "b", (self.format_decimal,)),
            0x15: ("BACKGROUND", "bbb", (self.format_bg_arg, self.format_bg_bits1, self.format_bg_bits2,)),
            0x16: ("MARATHONTIME", "", None),
            0x17: ("RACETIME", "", None),
            0x18: ("POINTS", "", None),
            0x1A: ("UNSKIPPABLE", "", None),
            0x1B: ("TWO_CHOICE", "", None),
            0x1C: ("THREE_CHOICE", "", None),
            0x1D: ("FISH_INFO", "", None),
            0x1E: ("HIGHSCORE", "b",   (self.format_highscore,)),
            0x1F: ("TIME", "", None)
        }
        extraction_charmap = {}
        super().__init__(control_end, control_codes, None, extraction_charmap)
        self.pop_char = self.pop_byte
        self.pop_char_end = self.pop_byte_end

    def decode_char(self, c : int) -> str:
        decoded = bytes([c]).decode("ASCII")
        # Escape quotes within the text itself
        if decoded == "\"":
            decoded = "\\\""
        return decoded

    def format_color(self, c):
        c1 = c & 0xF
        c2 = c & ~0xF
        assert c2 == 0x0C00
        return {
            0 : "DEFAULT",
            1 : "RED",
            2 : "ADJUSTABLE",
            3 : "BLUE",
            4 : "LIGHTBLUE",
            5 : "PURPLE",
            6 : "YELLOW",
            7 : "BLACK",
        }[c1]

class MessageTableDesc:
    def __init__(self, table_name : str, seg_name : str, decoder : MessageDecoder, parent : Optional[int]) -> None:
        self.table_name : str = table_name
        self.seg_name : str = seg_name
        self.decoder : MessageDecoder = decoder
        self.parent : Optional[int] = parent

class MessageTableEntry:
    SIZE = 8

    def __init__(self, text_id : int, box_type : int, box_pos : int, addr : int) -> None:
        self.text_id, self.box_type, self.box_pos, self.addr = text_id, box_type, box_pos, addr

    @staticmethod
    def from_bin(data : bytes) -> "MessageTableEntry":
        text_id,info,addr = struct.unpack(">HBxI", data)
        box_type = (info >> 4) & 0xF
        box_pos  = (info >> 0) & 0xF
        return MessageTableEntry(text_id, box_type, box_pos, addr)

class MessageData:
    def __init__(self, box_type : int, box_pos : int, decoded_text : str):
        self.box_type : int = box_type
        self.box_pos : int = box_pos
        self.decoded_text : str = decoded_text

class MessageEntry:
    def __init__(self, message_tables : List[Optional[MessageTableDesc]], text_id : int) -> None:
        self.text_id : int = text_id
        self.data : List[Optional[MessageData]] = [None for _ in message_tables]
        self.select = tuple(tbl is not None for tbl in message_tables)

    def define_message(self, defn : str, box_type : int, box_pos : int, data : List[Optional[MessageData]]) -> str:
        out = f"{defn}(0x{self.text_id:04X}, 0x{box_type:02X}, 0x{box_pos:02X},\n"
        out += "\n,\n".join(f"MSG(\n{d.decoded_text}\n)" if d is not None else "MSG(/* MISSING */)" for d in data)
        out += "\n)\n"
        return out


    def decode(self) -> str:
        selection = tuple(not (select and data is None) for select,data in zip(self.select,self.data))
        assert any(selection)

        out = self.define_message("DEFINE_MESSAGE", self.data[0].box_type, self.data[0].box_pos, self.data)

        return out

def collect_messages(message_tables : List[Optional[MessageTableDesc]], baserom_segments_dir : Path, 
                     version_info : GameVersionInfo, code_vram : int, code_bin : bytes):

    messages : Dict[int,MessageEntry] = {}

    all_text_ids : List[Optional[List[int]]] = [None for _ in range(len(message_tables))]

    for lang_num,desc in enumerate(message_tables):
        if desc is None:
            continue

        baserom_seg = (baserom_segments_dir / desc.seg_name).read_bytes()
        code_offset = version_info.variables[desc.table_name] - code_vram

        if desc.parent is None:
            # Complete table

            table_entries : List[MessageTableEntry] = []
            text_ids : List[int] = []

            while True:
                end = code_offset + MessageTableEntry.SIZE
                entry = MessageTableEntry.from_bin(code_bin[code_offset:end])
                code_offset = end

                table_entries.append(entry)
                text_ids.append(entry.text_id)

                if entry.text_id == 0xFFFF:
                    break

            all_text_ids[lang_num] = text_ids

            for i in range(len(table_entries) - 1):
                curr = table_entries[i + 0]
                next = table_entries[i + 1]

                curr_offset = curr.addr & ~0x0F000000
                next_offset = (next.addr & ~0x0F000000) if next.text_id != 0xFFFF else len(baserom_seg)
                size = next_offset - curr_offset

                if curr.text_id not in messages:
                    messages[curr.text_id] = MessageEntry(message_tables, curr.text_id)
                messages[curr.text_id].data[lang_num] = MessageData(
                    curr.box_type, curr.box_pos, desc.decoder.decode(baserom_seg[curr_offset : curr_offset+size]))
        else:
            # Addresses only

            for text_id in all_text_ids[desc.parent][:-1]: # Exclude text id 0xFFFF
                if text_id in (0xFFFC,):
                    continue

                curr = read4(code_bin, code_offset + 0)
                next = read4(code_bin, code_offset + 4)
                code_offset += 4

                curr_offset = curr & ~0x0F000000
                next_offset = next & ~0x0F000000 if text_id != 0xFFFD else len(baserom_seg)
                size = next_offset - curr_offset

                # The text id is guaranteed to already exist
                parent_data = messages[text_id].data[desc.parent]
                messages[text_id].data[lang_num] = MessageData(
                    parent_data.box_type, parent_data.box_pos, desc.decoder.decode(baserom_seg[curr_offset:curr_offset+size]))

    return messages

def extract(version_info: GameVersionInfo, baserom_segments_dir : Path, output_dir: Path):
    output_dir.mkdir(parents=True, exist_ok=True)

    code_vram = version_info.code_vram

    code_bin = (baserom_segments_dir / "code").read_bytes()

    nes_decoder = MessageDecoderNES()
    credits_decoder = MessageDecoderCredits()

    message_tables : MessageTableDesc = [None for _ in range(1)] # EN
    message_table_staff : MessageTableDesc = None

    message_tables[0]  = MessageTableDesc("sMessageTableNES", "message_data_static", nes_decoder, None)
    message_table_staff = MessageTableDesc("sMessageTableCredits", "staff_message_data_static", credits_decoder, None)

    messages = collect_messages(message_tables, baserom_segments_dir, version_info, code_vram, code_bin)
    staff_messages = collect_messages([message_table_staff], baserom_segments_dir, version_info, code_vram, code_bin)

    message_data = []

    for text_id in sorted(messages.keys()):
        if text_id in (0xFFFC,0xFFFD):
            # Skip committed text ids
            continue
        message_data.append(messages[text_id].decode())

    message_data = "\n".join(message_data)
    message_data_staff = "\n".join(staff_messages[text_id].decode() for text_id in sorted(staff_messages.keys()))

    (output_dir / "message_data.h").write_text(message_data)
    (output_dir / "message_data_staff.h").write_text(message_data_staff)

