{
 "schema": 1,
 "platform": "c64",
 "game": "spy-vs-spy",
 "build": "North American disk, NTSC (the image's directory: \"spy vs spy\" m4)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    24576,
    25599,
    "screen RAM"
   ],
   [
    0,
    255,
    "runtime: zero page, the game's variables (named in the listing), written as it runs"
   ],
   [
    512,
    1023,
    "runtime: the game's variables at $0200-$02C3 and the KERNAL's unused work area"
   ],
   [
    1024,
    1535,
    "runtime: the pre-shift tables built at start-up by $8CAC"
   ],
   [
    1536,
    2047,
    "runtime: the two monitors' room object maps, rebuilt by $838B and $8199 for each room drawn"
   ],
   [
    11776,
    16383,
    "runtime: the backdrop copies of the two monitors' room pictures, drawn by $8199 and copied by $7E50"
   ],
   [
    25576,
    26111,
    "runtime: sprite pointers and the sprite shapes built from packed data by $8574 and $8722"
   ],
   [
    53237,
    53247,
    "runtime: the demo player's counters and pointers"
   ],
   [
    57344,
    59391,
    "runtime: the room records, 41 bytes for each of up to 36 rooms ($E000-$E5C3), built for each game by build_embassy ($7EF8) and changed in play; above them the RAM keeps its power-on pattern"
   ],
   [
    59392,
    61183,
    "runtime: the mirror, mask, shape-facing and line-address tables built by $8CAC and $6627"
   ],
   [
    61184,
    61951,
    "runtime: the visited-room lists, the route search's tables and the computer player's task stack"
   ],
   [
    61952,
    62975,
    "runtime: the pre-shift tables' low halves, built by $8CAC"
   ],
   [
    64512,
    65023,
    "runtime: pre-shift tables built by $8CAC"
   ],
   [
    17040,
    17239,
    "runtime: the white spy's room view, character row 2, drawn by the game"
   ],
   [
    17360,
    17559,
    "runtime: the white spy's room view, character row 3, drawn by the game"
   ],
   [
    17680,
    17879,
    "runtime: the white spy's room view, character row 4, drawn by the game"
   ],
   [
    18000,
    18199,
    "runtime: the white spy's room view, character row 5, drawn by the game"
   ],
   [
    18320,
    18519,
    "runtime: the white spy's room view, character row 6, drawn by the game"
   ],
   [
    18640,
    18839,
    "runtime: the white spy's room view, character row 7, drawn by the game"
   ],
   [
    18960,
    19159,
    "runtime: the white spy's room view, character row 8, drawn by the game"
   ],
   [
    19280,
    19479,
    "runtime: the white spy's room view, character row 9, drawn by the game"
   ],
   [
    19600,
    19799,
    "runtime: the white spy's room view, character row 10, drawn by the game"
   ],
   [
    20880,
    21079,
    "runtime: the black spy's room view, character row 14, drawn by the game"
   ],
   [
    21200,
    21399,
    "runtime: the black spy's room view, character row 15, drawn by the game"
   ],
   [
    21520,
    21719,
    "runtime: the black spy's room view, character row 16, drawn by the game"
   ],
   [
    21840,
    22039,
    "runtime: the black spy's room view, character row 17, drawn by the game"
   ],
   [
    22160,
    22359,
    "runtime: the black spy's room view, character row 18, drawn by the game"
   ],
   [
    22480,
    22679,
    "runtime: the black spy's room view, character row 19, drawn by the game"
   ],
   [
    22800,
    22999,
    "runtime: the black spy's room view, character row 20, drawn by the game"
   ],
   [
    23120,
    23319,
    "runtime: the black spy's room view, character row 21, drawn by the game"
   ],
   [
    23440,
    23639,
    "runtime: the black spy's room view, character row 22, drawn by the game"
   ]
  ],
  "extra": [
   [
    16384,
    24383,
    "the play screen's bitmap (file S2): the two monitors, trapulators and panels, loaded at $4000 and drawn into"
   ],
   [
    49152,
    53236,
    "the attract demo's recorded moves (file S5): run-length values and counts for each spy"
   ],
   [
    63232,
    64511,
    "the airport picture, packed (file S3, loaded here by the loader)"
   ]
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2303,
   "type": "Undefined"
  },
  {
   "start": 2304,
   "end": 5993,
   "type": "Byte"
  },
  {
   "start": 5994,
   "end": 6584,
   "type": "Screencode Text"
  },
  {
   "start": 6585,
   "end": 11775,
   "type": "Byte"
  },
  {
   "start": 11776,
   "end": 16383,
   "type": "Undefined"
  },
  {
   "start": 16384,
   "end": 24383,
   "type": "Byte"
  },
  {
   "start": 24384,
   "end": 26111,
   "type": "Undefined"
  },
  {
   "start": 26112,
   "end": 26114,
   "type": "Code"
  },
  {
   "start": 26115,
   "end": 26115,
   "type": "Undefined"
  },
  {
   "start": 26116,
   "end": 29771,
   "type": "Code"
  },
  {
   "start": 29772,
   "end": 29775,
   "type": "Undefined"
  },
  {
   "start": 29776,
   "end": 43893,
   "type": "Code"
  },
  {
   "start": 43894,
   "end": 49135,
   "type": "Byte"
  },
  {
   "start": 49136,
   "end": 49142,
   "type": "Code"
  },
  {
   "start": 49143,
   "end": 53236,
   "type": "Byte"
  },
  {
   "start": 53237,
   "end": 63231,
   "type": "Undefined"
  },
  {
   "start": 63232,
   "end": 64511,
   "type": "Byte"
  },
  {
   "start": 64512,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "zpf_02",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5,
   "name": "zpa_05",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7,
   "name": "zpa_07",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8,
   "name": "zpa_08",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12,
   "name": "zpa_0C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13,
   "name": "zpa_0D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "zpa_11",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19,
   "name": "zpa_13",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20,
   "name": "zpa_14",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21,
   "name": "zpa_15",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22,
   "name": "zpa_16",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23,
   "name": "zpa_17",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24,
   "name": "zpa_18",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25,
   "name": "zpa_19",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26,
   "name": "zpa_1A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27,
   "name": "zpp_1B",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 28,
   "name": "zpa_1C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29,
   "name": "zpp_1D",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 30,
   "name": "zpa_1E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31,
   "name": "zpa_1F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32,
   "name": "zpa_20",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33,
   "name": "zpa_21",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35,
   "name": "zpf_23",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 36,
   "name": "zpa_24",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37,
   "name": "zpa_25",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38,
   "name": "zpa_26",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "zpa_28",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41,
   "name": "zpa_29",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42,
   "name": "zpa_2A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44,
   "name": "zpa_2C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 45,
   "name": "zpa_2D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46,
   "name": "zpa_2E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "zpa_30",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49,
   "name": "zpa_31",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50,
   "name": "zpa_32",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51,
   "name": "zpa_33",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52,
   "name": "zpa_34",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53,
   "name": "zpa_35",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 54,
   "name": "zpa_36",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55,
   "name": "zpa_37",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56,
   "name": "zpa_38",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "zpa_39",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58,
   "name": "zpa_3A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59,
   "name": "zpf_3B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 61,
   "name": "zpf_3D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 63,
   "name": "zpa_3F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64,
   "name": "zpa_40",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 65,
   "name": "zpa_41",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "zpa_42",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpa_43",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 69,
   "name": "zpf_45",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 71,
   "name": "zpf_47",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 73,
   "name": "zpf_49",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpf_4B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "zpf_4D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 79,
   "name": "zpf_4F",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 81,
   "name": "zpf_51",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "zpf_53",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 84,
   "name": "zpa_54",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 85,
   "name": "zpf_55",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 87,
   "name": "zpf_57",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 88,
   "name": "zpa_58",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 89,
   "name": "zpf_59",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 90,
   "name": "zpa_5A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "f_005B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 92,
   "name": "zpa_5C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 93,
   "name": "zpf_5D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 95,
   "name": "zpf_5F",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 97,
   "name": "zpf_61",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 99,
   "name": "zpf_63",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 101,
   "name": "zpf_65",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 103,
   "name": "zpf_67",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 104,
   "name": "zpa_68",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 105,
   "name": "zpf_69",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 107,
   "name": "zpf_6B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "zpf_6D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 111,
   "name": "zpf_6F",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 113,
   "name": "zpf_71",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 115,
   "name": "zpf_73",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 117,
   "name": "zpf_75",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "zpa_77",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 120,
   "name": "zpa_78",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 121,
   "name": "zpf_79",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 122,
   "name": "zpa_7A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 123,
   "name": "zpa_7B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "zpa_7C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 125,
   "name": "zpf_7D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 127,
   "name": "zpf_7F",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 129,
   "name": "zpf_81",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 130,
   "name": "zpa_82",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 131,
   "name": "zpf_83",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 133,
   "name": "zpf_85",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 135,
   "name": "zpf_87",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 137,
   "name": "zpf_89",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 139,
   "name": "zpf_8B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 141,
   "name": "zpf_8D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 143,
   "name": "zpf_8F",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 145,
   "name": "zpf_91",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 147,
   "name": "zpf_93",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 148,
   "name": "zpa_94",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 149,
   "name": "zpf_95",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 151,
   "name": "zpf_97",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 152,
   "name": "zpa_98",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 153,
   "name": "zpf_99",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 155,
   "name": "zpa_9B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 156,
   "name": "zpa_9C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 157,
   "name": "zpa_9D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 158,
   "name": "zpf_9E",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 160,
   "name": "zpf_A0",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 162,
   "name": "zpf_A2",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "zpf_A4",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 166,
   "name": "zpf_A6",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 168,
   "name": "zpf_A8",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 170,
   "name": "zpf_AA",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 172,
   "name": "zpf_AC",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 174,
   "name": "zpa_AE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 175,
   "name": "zpa_AF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 176,
   "name": "zpa_B0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 177,
   "name": "zpa_B1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 178,
   "name": "zpa_B2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 179,
   "name": "zpa_B3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 180,
   "name": "zpa_B4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 181,
   "name": "zpa_B5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 182,
   "name": "zpa_B6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 183,
   "name": "zpa_B7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 184,
   "name": "zpa_B8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 185,
   "name": "zpa_B9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpa_BA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 187,
   "name": "zpa_BB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 188,
   "name": "zpa_BC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 189,
   "name": "zpa_BD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 190,
   "name": "zpa_BE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 191,
   "name": "zpa_BF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "zpa_C0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 193,
   "name": "zpf_C1",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "zpf_C3",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 197,
   "name": "zpf_C5",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 198,
   "name": "zpa_C6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "zpf_C7",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 200,
   "name": "zpa_C8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 201,
   "name": "zpf_C9",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 203,
   "name": "zpa_CB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 204,
   "name": "zpa_CC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 205,
   "name": "zpa_CD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 206,
   "name": "zpa_CE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 207,
   "name": "zpa_CF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 208,
   "name": "zpa_D0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 209,
   "name": "zpa_D1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 210,
   "name": "zpa_D2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 211,
   "name": "zpa_D3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 212,
   "name": "zpa_D4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 213,
   "name": "zpa_D5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 214,
   "name": "zpa_D6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 215,
   "name": "zpa_D7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 216,
   "name": "zpa_D8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 217,
   "name": "zpa_D9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 218,
   "name": "zpa_DA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 219,
   "name": "zpa_DB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 220,
   "name": "zpa_DC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 221,
   "name": "zpa_DD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 222,
   "name": "zpa_DE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 223,
   "name": "zpa_DF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 224,
   "name": "zpa_E0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 225,
   "name": "zpa_E1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 226,
   "name": "zpa_E2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 227,
   "name": "zpa_E3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 228,
   "name": "zpa_E4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 229,
   "name": "zpa_E5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 230,
   "name": "zpa_E6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 231,
   "name": "zpa_E7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 232,
   "name": "zpa_E8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 233,
   "name": "zpa_E9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 235,
   "name": "zpa_EB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 236,
   "name": "zpa_EC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 237,
   "name": "f_00ED",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 243,
   "name": "zpa_F3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 244,
   "name": "zpf_F4",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 245,
   "name": "zpa_F5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 246,
   "name": "zpf_F6",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 248,
   "name": "zpa_F8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 512,
   "name": "f_0200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 514,
   "name": "f_0202",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 516,
   "name": "f_0204",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 518,
   "name": "f_0206",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 520,
   "name": "f_0208",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 522,
   "name": "f_020A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 524,
   "name": "f_020C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 526,
   "name": "f_020E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 528,
   "name": "f_0210",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 533,
   "name": "f_0215",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 534,
   "name": "f_0216",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 538,
   "name": "f_021A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 543,
   "name": "f_021F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 545,
   "name": "a_0221",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 546,
   "name": "a_0222",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 547,
   "name": "a_0223",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 549,
   "name": "a_0225",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 550,
   "name": "f_0226",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 551,
   "name": "a_0227",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 552,
   "name": "f_0228",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 554,
   "name": "f_022A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 555,
   "name": "a_022B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 556,
   "name": "a_022C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 557,
   "name": "a_022D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 558,
   "name": "a_022E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 559,
   "name": "a_022F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 560,
   "name": "a_0230",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 561,
   "name": "a_0231",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 562,
   "name": "a_0232",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 563,
   "name": "a_0233",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 564,
   "name": "a_0234",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 565,
   "name": "a_0235",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 566,
   "name": "a_0236",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 567,
   "name": "f_0237",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 568,
   "name": "a_0238",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 569,
   "name": "f_0239",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 571,
   "name": "f_023B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 573,
   "name": "f_023D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 575,
   "name": "f_023F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 577,
   "name": "a_0241",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 578,
   "name": "a_0242",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 579,
   "name": "a_0243",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 580,
   "name": "f_0244",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 582,
   "name": "f_0246",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 584,
   "name": "a_0248",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 588,
   "name": "a_024C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 589,
   "name": "a_024D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 590,
   "name": "a_024E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 591,
   "name": "f_024F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 593,
   "name": "f_0251",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 596,
   "name": "a_0254",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 597,
   "name": "f_0255",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 599,
   "name": "a_0257",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 600,
   "name": "a_0258",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 601,
   "name": "a_0259",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 602,
   "name": "a_025A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 603,
   "name": "f_025B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 605,
   "name": "a_025D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 606,
   "name": "a_025E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 607,
   "name": "f_025F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 608,
   "name": "a_0260",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 609,
   "name": "a_0261",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 610,
   "name": "a_0262",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 611,
   "name": "a_0263",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 612,
   "name": "a_0264",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 613,
   "name": "a_0265",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 614,
   "name": "a_0266",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 615,
   "name": "a_0267",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 616,
   "name": "a_0268",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 617,
   "name": "a_0269",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 618,
   "name": "a_026A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 619,
   "name": "a_026B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 620,
   "name": "a_026C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 621,
   "name": "a_026D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 624,
   "name": "f_0270",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 626,
   "name": "f_0272",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 628,
   "name": "f_0274",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 630,
   "name": "f_0276",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 632,
   "name": "f_0278",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 634,
   "name": "f_027A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 636,
   "name": "f_027C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 638,
   "name": "a_027E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 639,
   "name": "a_027F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 640,
   "name": "a_0280",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 641,
   "name": "a_0281",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 642,
   "name": "a_0282",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 644,
   "name": "a_0284",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 645,
   "name": "a_0285",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 646,
   "name": "a_0286",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 647,
   "name": "a_0287",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 648,
   "name": "a_0288",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 649,
   "name": "f_0289",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 651,
   "name": "f_028B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 653,
   "name": "a_028D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 654,
   "name": "a_028E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 655,
   "name": "a_028F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 656,
   "name": "a_0290",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 657,
   "name": "a_0291",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 658,
   "name": "a_0292",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 659,
   "name": "a_0293",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 660,
   "name": "a_0294",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 661,
   "name": "a_0295",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 662,
   "name": "a_0296",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 663,
   "name": "a_0297",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 664,
   "name": "a_0298",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 665,
   "name": "a_0299",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 666,
   "name": "a_029A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 667,
   "name": "a_029B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 668,
   "name": "a_029C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 669,
   "name": "a_029D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 670,
   "name": "a_029E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 671,
   "name": "a_029F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 672,
   "name": "a_02A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 673,
   "name": "a_02A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 674,
   "name": "a_02A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 675,
   "name": "a_02A3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 676,
   "name": "a_02A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 677,
   "name": "f_02A5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 679,
   "name": "f_02A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 681,
   "name": "f_02A9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 683,
   "name": "f_02AB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 685,
   "name": "f_02AD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 687,
   "name": "f_02AF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 689,
   "name": "f_02B1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 691,
   "name": "f_02B3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 693,
   "name": "f_02B5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 695,
   "name": "f_02B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 697,
   "name": "f_02B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 699,
   "name": "f_02BB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 701,
   "name": "f_02BD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 703,
   "name": "f_02BF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 705,
   "name": "a_02C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 706,
   "name": "a_02C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 707,
   "name": "a_02C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "f_0400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1280,
   "name": "f_0500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1536,
   "name": "f_0600",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1792,
   "name": "f_0700",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2304,
   "name": "furniture_contents",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2321,
   "name": "furniture_type_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2324,
   "name": "furniture_rec_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2341,
   "name": "furniture_rec_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2358,
   "name": "furniture_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2413,
   "name": "action_sounds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2419,
   "name": "action_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2435,
   "name": "bounce_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2443,
   "name": "bounce_height_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2467,
   "name": "bounce_across",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2475,
   "name": "bounce_height",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2483,
   "name": "object_shape_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2535,
   "name": "object_shape_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2587,
   "name": "object_shape_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2639,
   "name": "object_shape_height",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2691,
   "name": "object_shape_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2743,
   "name": "object_shape_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2795,
   "name": "object_shapes_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3584,
   "name": "object_shapes_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4096,
   "name": "object_shapes_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5120,
   "name": "object_shapes_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5168,
   "name": "shapes_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5259,
   "name": "item_bits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5263,
   "name": "trapulator_sprite_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5267,
   "name": "trapulator_sprite_x9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5268,
   "name": "overlay_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5270,
   "name": "trapulator_sprite_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5274,
   "name": "trapulator_sprite_cols",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5278,
   "name": "action_start_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5280,
   "name": "frame_class",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5297,
   "name": "arrow_dcol",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5301,
   "name": "arrow_drow",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5305,
   "name": "arrow_col_clamp",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5310,
   "name": "arrow_row_clamp",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5314,
   "name": "button_objects",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5320,
   "name": "arrow_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5323,
   "name": "arrow_y_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5325,
   "name": "arrow_col_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5328,
   "name": "arrow_half_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5330,
   "name": "overlay_sprite_num",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5332,
   "name": "overlay_sprite_bit",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5334,
   "name": "overlay_sprite_mask",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5336,
   "name": "overlay_offset_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5350,
   "name": "overlay_offset_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5406,
   "name": "overlay_nudge_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5410,
   "name": "overlay_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5414,
   "name": "overlay_sprite_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5416,
   "name": "overlay_sprite_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5418,
   "name": "sprite_shape_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5437,
   "name": "sprite_shape_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5456,
   "name": "sprite_shape_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5475,
   "name": "sprite_shape_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5494,
   "name": "sprite_shapes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5777,
   "name": "sprite_shape_15",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5861,
   "name": "out_of_time_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5863,
   "name": "ranking_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5865,
   "name": "rank_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5867,
   "name": "option_cursor_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5871,
   "name": "option_cursor_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5875,
   "name": "option_var_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5879,
   "name": "option_var_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5883,
   "name": "stick_delta",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5887,
   "name": "option_max",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5891,
   "name": "cursor_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5895,
   "name": "yn_glyph_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5898,
   "name": "yn_glyph_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5901,
   "name": "string_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5932,
   "name": "string_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5963,
   "name": "string_len",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5994,
   "name": "strings",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6585,
   "name": "strings_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6586,
   "name": "font_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6634,
   "name": "digit_glyph_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6644,
   "name": "font_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6692,
   "name": "digit_glyph_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6702,
   "name": "font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6872,
   "name": "digit_glyphs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6877,
   "name": "digit_glyph_area",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6922,
   "name": "demo_value_page",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6924,
   "name": "demo_count_page",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6926,
   "name": "level_minutes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6934,
   "name": "level_minutes_bin",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6942,
   "name": "iq_swing_rate",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6948,
   "name": "cpu_weight_items",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6950,
   "name": "cpu_weight_route",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6953,
   "name": "cpu_weight_remedy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6956,
   "name": "cpu_trap_choice",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6974,
   "name": "cpu_goal_other",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6977,
   "name": "cpu_goal_own",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6980,
   "name": "cpu_goal_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6985,
   "name": "cpu_goal_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7030,
   "name": "look_around_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7039,
   "name": "look_around_dz",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7048,
   "name": "random_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7057,
   "name": "door_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7066,
   "name": "search_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7075,
   "name": "trap_button_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7081,
   "name": "trap_button_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7087,
   "name": "shift_tab_lo1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7091,
   "name": "shift_tab_hi1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7095,
   "name": "shift_tab_lo2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7099,
   "name": "shift_tab_hi2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7103,
   "name": "pixel_bits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7119,
   "name": "screen_colour_runs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7215,
   "name": "line_pixel",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7219,
   "name": "door_clip_mask_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7223,
   "name": "door_clip_skip_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7227,
   "name": "door_clip_mask_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7231,
   "name": "door_clip_skip_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7235,
   "name": "door_clip_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7256,
   "name": "floor_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7257,
   "name": "floor_line_black",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7258,
   "name": "shared_row_shift",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7260,
   "name": "raster_lines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7262,
   "name": "map_depth_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7287,
   "name": "map_across_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7310,
   "name": "map_across_index",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7361,
   "name": "trail_list_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7363,
   "name": "trail_list_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7365,
   "name": "trail_strip_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7367,
   "name": "trail_strip_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7369,
   "name": "trail_opposite",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7375,
   "name": "trail_glyph_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7382,
   "name": "trail_glyph_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7449,
   "name": "blank_trail_glyph",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7454,
   "name": "blank_trail_glyph2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7459,
   "name": "score_points",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7467,
   "name": "score_sign",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7475,
   "name": "score_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7483,
   "name": "digit_pos_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7497,
   "name": "digit_pos_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7511,
   "name": "digit_pos_black_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7515,
   "name": "digit_pos_black_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7519,
   "name": "clock_pos_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7525,
   "name": "clock_pos_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7531,
   "name": "clock_pos_black_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7537,
   "name": "clock_pos_black_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7543,
   "name": "clock_glyph_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7553,
   "name": "clock_glyph_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7603,
   "name": "clock_glyph_tail",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7613,
   "name": "visited_list_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7615,
   "name": "visited_list_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7617,
   "name": "map_cell_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7621,
   "name": "map_cell_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7625,
   "name": "map_origin_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7627,
   "name": "map_origin_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7693,
   "name": "perspective_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7719,
   "name": "perspective_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7745,
   "name": "perspective_tables",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8192,
   "name": "perspective_tables_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8395,
   "name": "sfx_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8415,
   "name": "sfx_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8435,
   "name": "sfx_priority",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8455,
   "name": "sfx_gate_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8471,
   "name": "sfx_length",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8487,
   "name": "sfx_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8602,
   "name": "plane_sprites",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8639,
   "name": "airport_matrix_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8641,
   "name": "airport_matrix_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8643,
   "name": "airport_sprite_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8645,
   "name": "plane_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8652,
   "name": "plane_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8659,
   "name": "plane_x9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8666,
   "name": "plane_sprite_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8858,
   "name": "plane_sprite_second",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9050,
   "name": "winner_sprite_white",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9114,
   "name": "winner_sprite_black",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9178,
   "name": "note_lengths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9186,
   "name": "note_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9198,
   "name": "note_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9210,
   "name": "instrument_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9218,
   "name": "voice_regs_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9220,
   "name": "voice_regs_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9222,
   "name": "tune_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9224,
   "name": "tune_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9226,
   "name": "instrument_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9242,
   "name": "instrument_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9258,
   "name": "instruments",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9306,
   "name": "tune_voice2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9393,
   "name": "tunes_gap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9426,
   "name": "tune_voice3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9549,
   "name": "stale_symbols",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9570,
   "name": "backdrop_page_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9572,
   "name": "backdrop_page_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9574,
   "name": "floor_pic_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9576,
   "name": "floor_pic_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9578,
   "name": "room_shell_packed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10006,
   "name": "floor_packed_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10126,
   "name": "floor_pattern",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10134,
   "name": "floor_packed_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10684,
   "name": "level5_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10894,
   "name": "level5_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10929,
   "name": "level8_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11145,
   "name": "level8_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11181,
   "name": "level1_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11217,
   "name": "level1_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11223,
   "name": "level7_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11427,
   "name": "level7_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11461,
   "name": "level2_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11539,
   "name": "level2_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11552,
   "name": "level3_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11672,
   "name": "level3_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11692,
   "name": "stale_code",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11792,
   "name": "f_2E10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12048,
   "name": "f_2F10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12304,
   "name": "f_3010",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12560,
   "name": "f_3110",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12816,
   "name": "f_3210",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 13072,
   "name": "f_3310",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 13328,
   "name": "f_3410",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 13584,
   "name": "f_3510",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 13840,
   "name": "f_3610",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14096,
   "name": "f_3710",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14352,
   "name": "f_3810",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14608,
   "name": "f_3910",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14864,
   "name": "f_3A10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15120,
   "name": "f_3B10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15376,
   "name": "f_3C10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15632,
   "name": "f_3D10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15888,
   "name": "f_3E10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16144,
   "name": "f_3F10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16384,
   "name": "screen_rows_0_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16416,
   "name": "debug_pixel_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16432,
   "name": "debug_pixel_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17040,
   "name": "f_4290",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17224,
   "name": "f_4348",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17240,
   "name": "screen_r2_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17344,
   "name": "screen_rows_3_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17360,
   "name": "f_43D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17560,
   "name": "screen_r3_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17680,
   "name": "f_4510",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17880,
   "name": "screen_r4_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18000,
   "name": "f_4650",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18200,
   "name": "screen_r5_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18304,
   "name": "screen_rows_6_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18320,
   "name": "f_4790",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18520,
   "name": "screen_r6_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18640,
   "name": "f_48D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18840,
   "name": "screen_r7_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18960,
   "name": "f_4A10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19160,
   "name": "screen_r8_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19264,
   "name": "screen_rows_9_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19280,
   "name": "f_4B50",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19480,
   "name": "screen_r9_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19600,
   "name": "f_4C90",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19800,
   "name": "screen_r10_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19944,
   "name": "trail_strip_white",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20224,
   "name": "screen_rows_12_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20880,
   "name": "f_5190",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21080,
   "name": "screen_r14_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21162,
   "name": "clock_slot_black",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21184,
   "name": "screen_rows_15_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21200,
   "name": "f_52D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21400,
   "name": "screen_r15_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21520,
   "name": "f_5410",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21720,
   "name": "screen_r16_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21840,
   "name": "f_5550",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22040,
   "name": "screen_r17_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22144,
   "name": "screen_rows_18_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22160,
   "name": "f_5690",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22360,
   "name": "screen_r18_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22480,
   "name": "f_57D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22680,
   "name": "screen_r19_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22800,
   "name": "f_5910",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 23000,
   "name": "screen_r20_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23104,
   "name": "screen_rows_21_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23120,
   "name": "f_5A50",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 23320,
   "name": "screen_r21_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23440,
   "name": "f_5B90",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 23640,
   "name": "screen_r22_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23784,
   "name": "trail_strip_black",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23792,
   "name": "trail_strip_black_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24064,
   "name": "screen_row_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24654,
   "name": "a_604E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25134,
   "name": "a_622E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25592,
   "name": "f_63F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25600,
   "name": "f_6400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25856,
   "name": "f_6500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25920,
   "name": "a_6540",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25984,
   "name": "f_6580",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26112,
   "name": "game_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26115,
   "name": "record_switch",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26116,
   "name": "start_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26151,
   "name": "new_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26166,
   "name": "b_6636",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26167,
   "name": "shape_restore_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26185,
   "name": "b_6649",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26259,
   "name": "b_6693",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26310,
   "name": "b_66C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26332,
   "name": "main_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26342,
   "name": "b_66E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26382,
   "name": "b_670E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26392,
   "name": "b_6718",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26407,
   "name": "b_6727",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26414,
   "name": "b_672E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26421,
   "name": "b_6735",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26437,
   "name": "restart_game",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26446,
   "name": "next_spy",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26454,
   "name": "spy_turn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26471,
   "name": "b_6767",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26490,
   "name": "b_677A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26504,
   "name": "b_6788",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26527,
   "name": "b_679F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26538,
   "name": "b_67AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26544,
   "name": "b_67B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26559,
   "name": "j_67BF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26567,
   "name": "b_67C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26584,
   "name": "b_67D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26597,
   "name": "b_67E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26599,
   "name": "j_67E7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26602,
   "name": "demo_ptr_value",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26615,
   "name": "demo_ptr_count",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26628,
   "name": "read_spy_input",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26641,
   "name": "b_6811",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26647,
   "name": "b_6817",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26655,
   "name": "j_681F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26657,
   "name": "b_6821",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26658,
   "name": "spy_state_checks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26671,
   "name": "b_682F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26735,
   "name": "b_686F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26743,
   "name": "b_6877",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26746,
   "name": "spy_out_of_time_or_hit",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26756,
   "name": "b_6884",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26764,
   "name": "b_688C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26788,
   "name": "b_68A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26806,
   "name": "b_68B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26828,
   "name": "b_68CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26833,
   "name": "j_68D1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26855,
   "name": "map_or_trapulator",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26878,
   "name": "b_68FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26889,
   "name": "b_6909",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26901,
   "name": "spy_action",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26914,
   "name": "b_6922",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26917,
   "name": "b_6925",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26941,
   "name": "b_693D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26953,
   "name": "b_6949",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26969,
   "name": "spy_sinking",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26979,
   "name": "b_6963",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27056,
   "name": "b_69B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27059,
   "name": "b_69B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27074,
   "name": "spy_action_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 27079,
   "name": "b_69C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27112,
   "name": "b_69E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27115,
   "name": "b_69EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27142,
   "name": "b_6A06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27164,
   "name": "j_6A1C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27186,
   "name": "b_6A32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27208,
   "name": "b_6A48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27214,
   "name": "spy_action_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 27221,
   "name": "b_6A55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27257,
   "name": "b_6A79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27278,
   "name": "b_6A8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27303,
   "name": "b_6AA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27332,
   "name": "j_6AC4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27334,
   "name": "b_6AC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27344,
   "name": "b_6AD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27366,
   "name": "b_6AE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27376,
   "name": "b_6AF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27418,
   "name": "b_6B1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27432,
   "name": "action_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 27440,
   "name": "b_6B30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27453,
   "name": "spy_walk",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 27468,
   "name": "b_6B4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27479,
   "name": "b_6B57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27486,
   "name": "b_6B5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27494,
   "name": "b_6B66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27515,
   "name": "b_6B7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27544,
   "name": "b_6B98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27551,
   "name": "b_6B9F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27561,
   "name": "b_6BA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27595,
   "name": "b_6BCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27615,
   "name": "b_6BDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27623,
   "name": "b_6BE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27626,
   "name": "spy_move",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 27656,
   "name": "b_6C08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27664,
   "name": "j_6C10",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27673,
   "name": "b_6C19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27700,
   "name": "b_6C34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27721,
   "name": "b_6C49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27732,
   "name": "b_6C54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27764,
   "name": "b_6C74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27849,
   "name": "b_6CC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27851,
   "name": "j_6CCB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27879,
   "name": "b_6CE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27884,
   "name": "b_6CEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27886,
   "name": "j_6CEE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27889,
   "name": "club_in_reach",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 27903,
   "name": "b_6CFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27921,
   "name": "b_6D11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27923,
   "name": "walk_by_stick",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 27958,
   "name": "b_6D36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27966,
   "name": "b_6D3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28015,
   "name": "b_6D6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28018,
   "name": "b_6D72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28050,
   "name": "spy_anim_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28105,
   "name": "spy_anim_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28114,
   "name": "b_6DD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28123,
   "name": "b_6DDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28131,
   "name": "b_6DE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28156,
   "name": "b_6DFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28162,
   "name": "b_6E02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28212,
   "name": "b_6E34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28239,
   "name": "b_6E4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28241,
   "name": "spy_climb_step",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 28274,
   "name": "b_6E72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28291,
   "name": "b_6E83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28304,
   "name": "b_6E90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28307,
   "name": "b_6E93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28315,
   "name": "b_6E9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28326,
   "name": "b_6EA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28342,
   "name": "b_6EB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28351,
   "name": "b_6EBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28370,
   "name": "b_6ED2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28385,
   "name": "b_6EE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28396,
   "name": "b_6EEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28408,
   "name": "b_6EF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28410,
   "name": "spy_step_done",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28433,
   "name": "b_6F11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28474,
   "name": "b_6F3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28477,
   "name": "b_6F3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28480,
   "name": "door_or_ladder",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28492,
   "name": "b_6F4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28510,
   "name": "b_6F5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28530,
   "name": "b_6F72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28533,
   "name": "b_6F75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28546,
   "name": "b_6F82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28567,
   "name": "b_6F97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28586,
   "name": "b_6FAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28597,
   "name": "b_6FB5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28612,
   "name": "b_6FC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28643,
   "name": "door_clip",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28661,
   "name": "b_6FF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28666,
   "name": "stand_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28674,
   "name": "b_7002",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28689,
   "name": "walk_redraw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28706,
   "name": "store_position",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28744,
   "name": "b_7048",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28754,
   "name": "b_7052",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28756,
   "name": "set_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28758,
   "name": "j_7056",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 28773,
   "name": "b_7065",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28805,
   "name": "b_7085",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28820,
   "name": "b_7094",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28846,
   "name": "b_70AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28855,
   "name": "search_target",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 28891,
   "name": "b_70DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28901,
   "name": "b_70E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28919,
   "name": "b_70F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28923,
   "name": "b_70FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28924,
   "name": "end_of_turn",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28932,
   "name": "b_7104",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28938,
   "name": "b_710A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28945,
   "name": "look_ahead",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 28962,
   "name": "b_7122",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28968,
   "name": "b_7128",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28982,
   "name": "b_7136",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28988,
   "name": "b_713C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29039,
   "name": "b_716F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29042,
   "name": "b_7172",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29055,
   "name": "b_717F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29063,
   "name": "b_7187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29084,
   "name": "b_719C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29105,
   "name": "b_71B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29116,
   "name": "b_71BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29134,
   "name": "b_71CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29160,
   "name": "b_71E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29170,
   "name": "b_71F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29174,
   "name": "b_71F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29192,
   "name": "b_7208",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29221,
   "name": "b_7225",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29237,
   "name": "b_7235",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29274,
   "name": "search_door",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29295,
   "name": "b_726F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29306,
   "name": "b_727A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29324,
   "name": "b_728C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29342,
   "name": "b_729E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29366,
   "name": "j_72B6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29370,
   "name": "b_72BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29374,
   "name": "toggle_door",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29387,
   "name": "b_72CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29397,
   "name": "b_72D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29446,
   "name": "b_7306",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29453,
   "name": "b_730D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29456,
   "name": "search_furniture",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29479,
   "name": "b_7327",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29498,
   "name": "b_733A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29524,
   "name": "b_7354",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29566,
   "name": "b_737E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29574,
   "name": "b_7386",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29580,
   "name": "b_738C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29586,
   "name": "b_7392",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29607,
   "name": "open_furniture",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29634,
   "name": "b_73C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29652,
   "name": "j_73D4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29657,
   "name": "b_73D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29659,
   "name": "j_73DB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29661,
   "name": "end_search",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29672,
   "name": "take_item",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29674,
   "name": "b_73EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29689,
   "name": "b_73F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29702,
   "name": "b_7406",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29705,
   "name": "b_7409",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29713,
   "name": "b_7411",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29721,
   "name": "b_7419",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29727,
   "name": "b_741F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29733,
   "name": "add_to_briefcase",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29766,
   "name": "b_7446",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29772,
   "name": "unused_bytes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29776,
   "name": "hold_item",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29791,
   "name": "b_745F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29814,
   "name": "drop_item",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 29844,
   "name": "check_full_briefcase",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29846,
   "name": "b_7496",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29867,
   "name": "b_74AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29872,
   "name": "b_74B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29939,
   "name": "r_74F3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 29940,
   "name": "follow_briefcase",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29942,
   "name": "b_74F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29959,
   "name": "b_7507",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29963,
   "name": "door_leads_to_other",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29990,
   "name": "near_other_spy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29996,
   "name": "b_752C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30008,
   "name": "b_7538",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30036,
   "name": "b_7554",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30052,
   "name": "b_7564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30073,
   "name": "b_7579",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30078,
   "name": "change_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30093,
   "name": "b_758D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30140,
   "name": "b_75BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30149,
   "name": "enter_shared_room",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30238,
   "name": "b_761E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30243,
   "name": "leave_shared_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30248,
   "name": "b_7628",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30259,
   "name": "b_7633",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30263,
   "name": "j_7637",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30301,
   "name": "b_765D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30307,
   "name": "draw_spies",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30314,
   "name": "b_766A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30356,
   "name": "b_7694",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30365,
   "name": "b_769D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30370,
   "name": "b_76A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30404,
   "name": "b_76C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30414,
   "name": "j_76CE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30444,
   "name": "b_76EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30454,
   "name": "b_76F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30510,
   "name": "b_772E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30525,
   "name": "b_773D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30535,
   "name": "b_7747",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30542,
   "name": "draw_lone_spy",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30545,
   "name": "set_draw_backdrop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30573,
   "name": "spy_screen_box",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30593,
   "name": "b_7781",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30619,
   "name": "b_779B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30621,
   "name": "j_779D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30667,
   "name": "b_77CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30703,
   "name": "b_77EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30716,
   "name": "draw_spy_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30737,
   "name": "b_7811",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30766,
   "name": "b_782E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30776,
   "name": "j_7838",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30790,
   "name": "b_7846",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30821,
   "name": "b_7865",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30833,
   "name": "j_7871",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30841,
   "name": "j_7879",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30849,
   "name": "b_7881",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30880,
   "name": "b_78A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30896,
   "name": "b_78B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30938,
   "name": "b_78DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30942,
   "name": "restore_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30961,
   "name": "draw_strip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30999,
   "name": "j_7917",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31043,
   "name": "b_7943",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31052,
   "name": "draw_strip_line",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 31066,
   "name": "draw_mask_operand",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31074,
   "name": "draw_src_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31075,
   "name": "draw_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31079,
   "name": "backdrop_tab_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31080,
   "name": "backdrop_tab_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31089,
   "name": "b_7971",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31100,
   "name": "b_797C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31108,
   "name": "b_7984",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31109,
   "name": "shape_data_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31110,
   "name": "shape_data_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31131,
   "name": "clip_skip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31140,
   "name": "b_79A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31144,
   "name": "b_79A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31157,
   "name": "b_79B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31163,
   "name": "j_79BB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31198,
   "name": "b_79DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31204,
   "name": "b_79E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31215,
   "name": "b_79EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31224,
   "name": "draw_strip_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31229,
   "name": "restore_back_spy_box",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31235,
   "name": "restore_box",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31257,
   "name": "b_7A19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31267,
   "name": "b_7A23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31312,
   "name": "b_7A50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31323,
   "name": "b_7A5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31331,
   "name": "b_7A63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31340,
   "name": "restore_lines",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31343,
   "name": "b_7A6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31364,
   "name": "b_7A84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31375,
   "name": "b_7A8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31383,
   "name": "j_7A97",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31400,
   "name": "b_7AA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31418,
   "name": "bake_spy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31448,
   "name": "b_7AD8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31473,
   "name": "b_7AF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31495,
   "name": "redraw_string",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31550,
   "name": "b_7B3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31612,
   "name": "j_7B7C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31637,
   "name": "draw_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31666,
   "name": "b_7BB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31690,
   "name": "b_7BCA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31713,
   "name": "b_7BE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31721,
   "name": "j_7BE9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31733,
   "name": "r_7BF5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 31734,
   "name": "b_7BF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31754,
   "name": "b_7C0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31759,
   "name": "plot_line_point",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31773,
   "name": "b_7C1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31786,
   "name": "b_7C2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31799,
   "name": "b_7C37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31844,
   "name": "b_7C64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31856,
   "name": "draw_object_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31870,
   "name": "draw_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31876,
   "name": "b_7C84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31901,
   "name": "b_7C9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31927,
   "name": "b_7CB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31929,
   "name": "j_7CB9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31972,
   "name": "b_7CE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32001,
   "name": "b_7D01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32002,
   "name": "object_data_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32003,
   "name": "object_data_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32038,
   "name": "b_7D26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32047,
   "name": "b_7D2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32069,
   "name": "b_7D45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32070,
   "name": "object_bdata_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32071,
   "name": "object_bdata_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32106,
   "name": "monitor_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32128,
   "name": "b_7D80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32138,
   "name": "b_7D8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32142,
   "name": "b_7D8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32154,
   "name": "b_7D9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32180,
   "name": "b_7DB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32220,
   "name": "b_7DDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32264,
   "name": "copy_shared_backdrop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32272,
   "name": "b_7E10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32279,
   "name": "b_7E17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32303,
   "name": "b_7E2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32311,
   "name": "j_7E37",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32313,
   "name": "b_7E39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32329,
   "name": "save_both_backdrops",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32336,
   "name": "save_backdrop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32343,
   "name": "b_7E57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32362,
   "name": "b_7E6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32378,
   "name": "restore_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32384,
   "name": "b_7E80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32444,
   "name": "b_7EBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32504,
   "name": "build_embassy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32579,
   "name": "j_7F43",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32614,
   "name": "b_7F66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32616,
   "name": "j_7F68",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32656,
   "name": "b_7F90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32676,
   "name": "b_7FA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32717,
   "name": "b_7FCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32719,
   "name": "j_7FCF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32726,
   "name": "b_7FD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32752,
   "name": "b_7FF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32786,
   "name": "b_8012",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32797,
   "name": "b_801D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32811,
   "name": "b_802B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32816,
   "name": "b_8030",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32844,
   "name": "b_804C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32846,
   "name": "j_804E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32857,
   "name": "j_8059",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32894,
   "name": "b_807E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32903,
   "name": "b_8087",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32962,
   "name": "b_80C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32968,
   "name": "b_80C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33011,
   "name": "b_80F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33019,
   "name": "b_80FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33030,
   "name": "b_8106",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33040,
   "name": "b_8110",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33045,
   "name": "b_8115",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33055,
   "name": "b_811F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33059,
   "name": "b_8123",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33071,
   "name": "b_812F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33077,
   "name": "b_8135",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33097,
   "name": "b_8149",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33139,
   "name": "b_8173",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33142,
   "name": "b_8176",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33158,
   "name": "b_8186",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33176,
   "name": "r_8198",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33177,
   "name": "draw_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33193,
   "name": "b_81A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33221,
   "name": "b_81C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33262,
   "name": "b_81EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33279,
   "name": "b_81FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33323,
   "name": "b_822B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33337,
   "name": "b_8239",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33343,
   "name": "j_823F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33346,
   "name": "b_8242",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33361,
   "name": "b_8251",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33363,
   "name": "b_8253",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33430,
   "name": "b_8296",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33437,
   "name": "b_829D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33444,
   "name": "j_82A4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33470,
   "name": "b_82BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33475,
   "name": "draw_door",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33500,
   "name": "b_82DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33505,
   "name": "b_82E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33508,
   "name": "j_82E4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33520,
   "name": "mark_slot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33529,
   "name": "mark_block",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33549,
   "name": "b_830D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33553,
   "name": "j_8311",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33561,
   "name": "b_8319",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33598,
   "name": "mark_left_door",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33602,
   "name": "b_8342",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33612,
   "name": "mark_back_door",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33616,
   "name": "b_8350",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33626,
   "name": "mark_cell",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33656,
   "name": "set_map_cell",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33675,
   "name": "clear_object_map",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33690,
   "name": "b_839A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33699,
   "name": "b_83A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33725,
   "name": "b_83BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33748,
   "name": "draw_room_shell",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33786,
   "name": "b_83FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33814,
   "name": "b_8416",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33828,
   "name": "b_8424",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33832,
   "name": "floor_dest_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33833,
   "name": "floor_dest_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33876,
   "name": "b_8454",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33910,
   "name": "unpack_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33928,
   "name": "b_8488",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33936,
   "name": "b_8490",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33938,
   "name": "b_8492",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33939,
   "name": "unpack_src_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33940,
   "name": "unpack_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33944,
   "name": "unpack_dst_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33945,
   "name": "unpack_dst_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33949,
   "name": "b_849D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33965,
   "name": "b_84AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33974,
   "name": "b_84B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33975,
   "name": "unpack_src2_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33976,
   "name": "unpack_src2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33986,
   "name": "b_84C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33991,
   "name": "b_84C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33992,
   "name": "unpack_zero_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33993,
   "name": "unpack_zero_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34012,
   "name": "b_84DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34020,
   "name": "door_screen_pos",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34027,
   "name": "room_to_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34041,
   "name": "b_84F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34065,
   "name": "b_8511",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34068,
   "name": "b_8514",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34076,
   "name": "room_ptr_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34087,
   "name": "other_room_ptr_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34098,
   "name": "other_room_ptr_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34109,
   "name": "room_ptr_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34120,
   "name": "setup_video",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34164,
   "name": "draw_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34173,
   "name": "b_857D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34186,
   "name": "b_858A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34205,
   "name": "b_859D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34222,
   "name": "b_85AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34231,
   "name": "b_85B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34234,
   "name": "sprite_dest_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34235,
   "name": "sprite_dest_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34244,
   "name": "b_85C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34251,
   "name": "b_85CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34266,
   "name": "b_85DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34295,
   "name": "draw_screen_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34298,
   "name": "b_85FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34324,
   "name": "unpack_colour_runs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34342,
   "name": "b_8626",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34351,
   "name": "b_862F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34360,
   "name": "b_8638",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34367,
   "name": "b_863F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34380,
   "name": "face_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34391,
   "name": "r_8657",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34392,
   "name": "b_8658",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34395,
   "name": "mirror_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34431,
   "name": "b_867F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34491,
   "name": "escape_to_airport",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34534,
   "name": "b_86E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34544,
   "name": "b_86F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34553,
   "name": "b_86F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34572,
   "name": "b_870C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34580,
   "name": "next_matrix_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34594,
   "name": "airport_scene",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34599,
   "name": "b_8727",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34683,
   "name": "b_877B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34704,
   "name": "b_8790",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34716,
   "name": "b_879C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34725,
   "name": "j_87A5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34856,
   "name": "airport_walk",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34885,
   "name": "b_8845",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34893,
   "name": "b_884D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34898,
   "name": "b_8852",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34909,
   "name": "plane_takeoff",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 34967,
   "name": "b_8897",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34998,
   "name": "b_88B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35015,
   "name": "b_88C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35047,
   "name": "b_88E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35056,
   "name": "b_88F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35085,
   "name": "b_890D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35107,
   "name": "b_8923",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35127,
   "name": "score_event",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35170,
   "name": "b_8962",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35177,
   "name": "b_8969",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35209,
   "name": "b_8989",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35214,
   "name": "b_898E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35226,
   "name": "b_899A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35239,
   "name": "b_89A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35246,
   "name": "final_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35263,
   "name": "b_89BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35276,
   "name": "b_89CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35315,
   "name": "b_89F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35322,
   "name": "b_89FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35336,
   "name": "b_8A08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35373,
   "name": "draw_score_digit_hi",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35377,
   "name": "draw_score_digit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35396,
   "name": "b_8A44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35405,
   "name": "j_8A4D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35426,
   "name": "b_8A62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35436,
   "name": "j_8A6C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35441,
   "name": "b_8A71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35442,
   "name": "sd_glyph_op_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35443,
   "name": "sd_glyph_op_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35445,
   "name": "digit_dest_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35446,
   "name": "digit_dest_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35451,
   "name": "clear_trail",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35469,
   "name": "b_8A8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35475,
   "name": "trail_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35520,
   "name": "b_8AC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35527,
   "name": "draw_trail",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35537,
   "name": "b_8AD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35555,
   "name": "b_8AE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35561,
   "name": "b_8AE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35627,
   "name": "b_8B2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35628,
   "name": "tr_glyph_op_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35629,
   "name": "tr_glyph_op_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35631,
   "name": "trail_dest_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35632,
   "name": "trail_dest_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35634,
   "name": "trail_glyph2_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35635,
   "name": "trail_glyph2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35637,
   "name": "trail_dest2_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35638,
   "name": "trail_dest2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35654,
   "name": "blank_trail",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35670,
   "name": "b_8B56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35672,
   "name": "b_8B58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35673,
   "name": "blank_dest_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35674,
   "name": "blank_dest_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35687,
   "name": "trail_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35696,
   "name": "b_8B70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35700,
   "name": "trail_prev",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35707,
   "name": "b_8B7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35711,
   "name": "show_map",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35751,
   "name": "b_8BA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35759,
   "name": "b_8BAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35841,
   "name": "map_next_row",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35878,
   "name": "map_cell",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35884,
   "name": "b_8C2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35894,
   "name": "b_8C36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35898,
   "name": "b_8C3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35914,
   "name": "b_8C4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35921,
   "name": "b_8C51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35928,
   "name": "b_8C58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35930,
   "name": "b_8C5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35960,
   "name": "b_8C78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35972,
   "name": "b_8C84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35979,
   "name": "map_next_cell",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36003,
   "name": "b_8CA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36011,
   "name": "r_8CAB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36012,
   "name": "build_tables",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36014,
   "name": "b_8CAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36025,
   "name": "b_8CB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36034,
   "name": "b_8CC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36043,
   "name": "b_8CCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36052,
   "name": "b_8CD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36061,
   "name": "b_8CDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36113,
   "name": "b_8D11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36115,
   "name": "b_8D13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36136,
   "name": "b_8D28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36163,
   "name": "b_8D43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36165,
   "name": "b_8D45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36188,
   "name": "b_8D5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36261,
   "name": "delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36269,
   "name": "b_8DAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36282,
   "name": "delay_long",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36290,
   "name": "b_8DC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36292,
   "name": "b_8DC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36310,
   "name": "seed_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36324,
   "name": "b_8DE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36329,
   "name": "b_8DE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36331,
   "name": "b_8DEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36337,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36356,
   "name": "b_8E04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36371,
   "name": "b_8E13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36386,
   "name": "b_8E22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36408,
   "name": "wait_ntsc_sync",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36427,
   "name": "b_8E4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36431,
   "name": "b_8E4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36442,
   "name": "b_8E5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36454,
   "name": "b_8E66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36460,
   "name": "setup_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36503,
   "name": "b_8E97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36508,
   "name": "b_8E9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36543,
   "name": "reset_play_state",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36548,
   "name": "b_8EC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36666,
   "name": "b_8F3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36760,
   "name": "reset_handler",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36773,
   "name": "nmi_handler",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36774,
   "name": "irq_handler",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36791,
   "name": "b_8FB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36794,
   "name": "b_8FBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36832,
   "name": "b_8FE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36835,
   "name": "b_8FE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36838,
   "name": "b_8FE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36846,
   "name": "b_8FEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36901,
   "name": "b_9025",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36912,
   "name": "b_9030",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36936,
   "name": "b_9048",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36939,
   "name": "b_904B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36964,
   "name": "b_9064",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36972,
   "name": "flash_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36987,
   "name": "r_907B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36988,
   "name": "shake_screen",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 37008,
   "name": "b_9090",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37025,
   "name": "b_90A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37028,
   "name": "place_spy_sprite",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 37050,
   "name": "b_90BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37080,
   "name": "b_90D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37084,
   "name": "b_90DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37092,
   "name": "b_90E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37095,
   "name": "b_90E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37186,
   "name": "place_arrow",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37204,
   "name": "b_9154",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37279,
   "name": "irq_play_tail",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37295,
   "name": "b_91AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37302,
   "name": "irq_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37308,
   "name": "place_plane_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37314,
   "name": "b_91C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37324,
   "name": "b_91CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37336,
   "name": "b_91D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37356,
   "name": "b_91EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37382,
   "name": "b_9206",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37391,
   "name": "silence",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37414,
   "name": "play_sfx",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37433,
   "name": "b_9239",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37445,
   "name": "b_9245",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37460,
   "name": "r_9254",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37461,
   "name": "b_9255",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37483,
   "name": "b_926B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37528,
   "name": "b_9298",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37548,
   "name": "build_spy_sprite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37609,
   "name": "b_92E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37610,
   "name": "sprite_clear_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37611,
   "name": "sprite_clear_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37619,
   "name": "b_92F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37627,
   "name": "b_92FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37628,
   "name": "bs_shape_op_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37629,
   "name": "bs_shape_op_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37631,
   "name": "sprite_dest_lo2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37632,
   "name": "sprite_dest_hi2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37641,
   "name": "b_9309",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37648,
   "name": "b_9310",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37658,
   "name": "b_931A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37670,
   "name": "r_9326",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37671,
   "name": "b_9327",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37691,
   "name": "b_933B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37730,
   "name": "tick_clock",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37736,
   "name": "b_9368",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37758,
   "name": "b_937E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37762,
   "name": "b_9382",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37778,
   "name": "b_9392",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37782,
   "name": "b_9396",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37784,
   "name": "b_9398",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37794,
   "name": "b_93A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37797,
   "name": "b_93A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37831,
   "name": "b_93C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37840,
   "name": "b_93D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37870,
   "name": "b_93EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37871,
   "name": "j_93EF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37880,
   "name": "b_93F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37907,
   "name": "j_9413",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37917,
   "name": "draw_clock",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37931,
   "name": "b_942B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37945,
   "name": "b_9439",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37983,
   "name": "r_945F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37984,
   "name": "draw_digit_hi",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37988,
   "name": "draw_digit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38011,
   "name": "b_947B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38023,
   "name": "j_9487",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38039,
   "name": "b_9497",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38040,
   "name": "dd_glyph_op_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38041,
   "name": "dd_glyph_op_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38043,
   "name": "clock_dest_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38044,
   "name": "clock_dest_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38049,
   "name": "read_controls",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38081,
   "name": "b_94C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38093,
   "name": "j_94CD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38095,
   "name": "b_94CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38109,
   "name": "b_94DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38128,
   "name": "b_94F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38207,
   "name": "b_953F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38211,
   "name": "b_9543",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38213,
   "name": "b_9545",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38222,
   "name": "play_music",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38224,
   "name": "j_9550",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38252,
   "name": "b_956C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38256,
   "name": "b_9570",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38272,
   "name": "b_9580",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38280,
   "name": "b_9588",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38283,
   "name": "b_958B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38314,
   "name": "b_95AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38336,
   "name": "b_95C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38355,
   "name": "j_95D3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38374,
   "name": "j_95E6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38377,
   "name": "j_95E9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38426,
   "name": "b_961A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38440,
   "name": "b_9628",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38472,
   "name": "b_9648",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38493,
   "name": "b_965D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38546,
   "name": "b_9692",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38554,
   "name": "b_969A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38597,
   "name": "j_96C5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38607,
   "name": "b_96CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38634,
   "name": "j_96EA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38640,
   "name": "r_96F0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38641,
   "name": "release_voice",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38660,
   "name": "r_9704",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38661,
   "name": "place_spies",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38681,
   "name": "b_9719",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38813,
   "name": "b_979D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38823,
   "name": "b_97A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38867,
   "name": "map_at_probe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38901,
   "name": "tie_string",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39009,
   "name": "spy_room_ptr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39015,
   "name": "close_furniture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39024,
   "name": "b_9870",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39037,
   "name": "b_987D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39050,
   "name": "b_988A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39053,
   "name": "guard_done",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39079,
   "name": "b_98A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39087,
   "name": "close_doors_unused",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39096,
   "name": "b_98B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39126,
   "name": "b_98D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39141,
   "name": "r_98E5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39142,
   "name": "trapulator",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39162,
   "name": "b_98FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39216,
   "name": "b_9930",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39256,
   "name": "b_9958",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39265,
   "name": "j_9961",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39276,
   "name": "b_996C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39280,
   "name": "b_9970",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39283,
   "name": "b_9973",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39299,
   "name": "b_9983",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39317,
   "name": "set_height",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39324,
   "name": "shift_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39343,
   "name": "shift_columns",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39360,
   "name": "drop_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39377,
   "name": "b_99D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39383,
   "name": "b_99D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39395,
   "name": "b_99E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39431,
   "name": "b_9A07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39442,
   "name": "b_9A12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39447,
   "name": "trap_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39455,
   "name": "reset_computer_player",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39457,
   "name": "reset_computer_spy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39510,
   "name": "b_9A56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39521,
   "name": "b_9A61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39527,
   "name": "computer_player",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39543,
   "name": "b_9A77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39556,
   "name": "b_9A84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39566,
   "name": "b_9A8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39624,
   "name": "b_9AC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39646,
   "name": "b_9ADE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39654,
   "name": "b_9AE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39661,
   "name": "b_9AED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39669,
   "name": "b_9AF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39682,
   "name": "b_9B02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39697,
   "name": "b_9B11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39718,
   "name": "cpu_next_task",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 39736,
   "name": "b_9B38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39755,
   "name": "b_9B4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39782,
   "name": "b_9B66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39798,
   "name": "b_9B76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39814,
   "name": "b_9B86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39817,
   "name": "cpu_route",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39921,
   "name": "cpu_task_kind",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39936,
   "name": "cpu_walk",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 39981,
   "name": "b_9C2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39987,
   "name": "b_9C33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39993,
   "name": "b_9C39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40009,
   "name": "cpu_set_input",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40012,
   "name": "j_9C4C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40018,
   "name": "cpu_replan",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 40026,
   "name": "cpu_trapulator",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40050,
   "name": "b_9C72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40064,
   "name": "b_9C80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40067,
   "name": "b_9C83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40080,
   "name": "b_9C90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40093,
   "name": "b_9C9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40120,
   "name": "b_9CB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40128,
   "name": "b_9CC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40141,
   "name": "b_9CCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40146,
   "name": "b_9CD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40173,
   "name": "b_9CED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40177,
   "name": "b_9CF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40182,
   "name": "b_9CF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40185,
   "name": "j_9CF9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40193,
   "name": "cpu_check_route",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40210,
   "name": "b_9D12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40213,
   "name": "b_9D15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40234,
   "name": "b_9D2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40241,
   "name": "b_9D31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40246,
   "name": "b_9D36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40277,
   "name": "b_9D55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40289,
   "name": "b_9D61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40330,
   "name": "b_9D8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40333,
   "name": "b_9D8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40340,
   "name": "b_9D94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40367,
   "name": "b_9DAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40422,
   "name": "b_9DE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40434,
   "name": "b_9DF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40467,
   "name": "b_9E13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40472,
   "name": "j_9E18",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40478,
   "name": "b_9E1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40488,
   "name": "b_9E28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40509,
   "name": "b_9E3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40542,
   "name": "b_9E5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40546,
   "name": "j_9E62",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40581,
   "name": "cpu_maybe_trap",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40589,
   "name": "b_9E8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40619,
   "name": "b_9EAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40667,
   "name": "b_9EDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40682,
   "name": "b_9EEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40687,
   "name": "b_9EEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40689,
   "name": "j_9EF1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40705,
   "name": "b_9F01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40709,
   "name": "j_9F05",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40714,
   "name": "b_9F0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40740,
   "name": "b_9F24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40762,
   "name": "b_9F3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40767,
   "name": "b_9F3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40779,
   "name": "b_9F4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40789,
   "name": "cpu_put_item_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40826,
   "name": "b_9F7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40828,
   "name": "b_9F7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40830,
   "name": "options_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40846,
   "name": "b_9F8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40909,
   "name": "j_9FCD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40947,
   "name": "b_9FF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40955,
   "name": "b_9FFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40960,
   "name": "demo_mode_value",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40971,
   "name": "options_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40990,
   "name": "b_A01E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41046,
   "name": "b_A056",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41049,
   "name": "b_A059",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41052,
   "name": "b_A05C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41056,
   "name": "b_A060",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41088,
   "name": "b_A080",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41090,
   "name": "b_A082",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41100,
   "name": "b_A08C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41102,
   "name": "j_A08E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41154,
   "name": "b_A0C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41157,
   "name": "b_A0C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41181,
   "name": "b_A0DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41221,
   "name": "draw_two_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41225,
   "name": "b_A109",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41251,
   "name": "options_done",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41297,
   "name": "b_A151",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41331,
   "name": "toggle_cursor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41345,
   "name": "b_A181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41358,
   "name": "draw_string",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41381,
   "name": "draw_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41426,
   "name": "b_A1D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41441,
   "name": "cpu_fight",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41466,
   "name": "b_A1FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41489,
   "name": "b_A211",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41515,
   "name": "b_A22B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41554,
   "name": "b_A252",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41557,
   "name": "b_A255",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41595,
   "name": "b_A27B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41626,
   "name": "b_A29A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41630,
   "name": "b_A29E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41646,
   "name": "b_A2AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41648,
   "name": "j_A2B0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41651,
   "name": "b_A2B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41654,
   "name": "b_A2B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41694,
   "name": "b_A2DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41710,
   "name": "b_A2EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41716,
   "name": "b_A2F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41743,
   "name": "cpu_flee",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41763,
   "name": "b_A323",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41770,
   "name": "b_A32A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41782,
   "name": "b_A336",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41795,
   "name": "b_A343",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41816,
   "name": "b_A358",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41821,
   "name": "b_A35D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41825,
   "name": "b_A361",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41830,
   "name": "b_A366",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41859,
   "name": "b_A383",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41864,
   "name": "b_A388",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41866,
   "name": "j_A38A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41869,
   "name": "cpu_steer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41879,
   "name": "b_A397",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41889,
   "name": "b_A3A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41899,
   "name": "b_A3AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41909,
   "name": "b_A3B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41919,
   "name": "b_A3BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41941,
   "name": "b_A3D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41949,
   "name": "cpu_walk_to",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41962,
   "name": "b_A3EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41980,
   "name": "b_A3FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41998,
   "name": "b_A40E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42007,
   "name": "b_A417",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42020,
   "name": "b_A424",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42032,
   "name": "b_A430",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42037,
   "name": "b_A435",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42047,
   "name": "j_A43F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42059,
   "name": "b_A44B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42064,
   "name": "b_A450",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42092,
   "name": "b_A46C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42099,
   "name": "b_A473",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42111,
   "name": "b_A47F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42124,
   "name": "b_A48C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42136,
   "name": "b_A498",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42141,
   "name": "b_A49D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42151,
   "name": "j_A4A7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42163,
   "name": "b_A4B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42168,
   "name": "b_A4B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42184,
   "name": "b_A4C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42196,
   "name": "cpu_arrived",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42206,
   "name": "b_A4DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42229,
   "name": "b_A4F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42243,
   "name": "b_A503",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42246,
   "name": "cpu_search",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42259,
   "name": "j_A513",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42283,
   "name": "b_A52B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42288,
   "name": "b_A530",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42297,
   "name": "b_A539",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42320,
   "name": "b_A550",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42328,
   "name": "b_A558",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42360,
   "name": "b_A578",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42378,
   "name": "b_A58A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42401,
   "name": "cpu_open_furniture",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42415,
   "name": "b_A5AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42436,
   "name": "b_A5C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42441,
   "name": "cpu_wander",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 42460,
   "name": "b_A5DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42468,
   "name": "cpu_open_door",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42482,
   "name": "b_A5F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42519,
   "name": "b_A617",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42524,
   "name": "b_A61C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42538,
   "name": "b_A62A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42560,
   "name": "b_A640",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42570,
   "name": "b_A64A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42587,
   "name": "cpu_door_ahead",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42613,
   "name": "b_A675",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42621,
   "name": "cpu_waypoint_done",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42662,
   "name": "b_A6A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42667,
   "name": "cpu_store_input",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42671,
   "name": "cpu_at_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42673,
   "name": "cpu_look_around",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42688,
   "name": "b_A6C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42694,
   "name": "b_A6C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42706,
   "name": "b_A6D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42712,
   "name": "b_A6D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42755,
   "name": "r_A703",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42756,
   "name": "cpu_close_across",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42773,
   "name": "cpu_close_depth",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42790,
   "name": "add_25",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42794,
   "name": "add_0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42798,
   "name": "abs_diff",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42807,
   "name": "b_A737",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42810,
   "name": "unused_abs_diff",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42819,
   "name": "b_A743",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42822,
   "name": "cpu_new_plan",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42836,
   "name": "b_A754",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42839,
   "name": "b_A757",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42864,
   "name": "cpu_plan_trap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42895,
   "name": "b_A78F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42919,
   "name": "b_A7A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42928,
   "name": "cpu_plan_trap_target",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42957,
   "name": "b_A7CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42962,
   "name": "push_door_target",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42982,
   "name": "b_A7E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43006,
   "name": "pick_furniture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43012,
   "name": "b_A804",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43026,
   "name": "b_A812",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43028,
   "name": "b_A814",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43037,
   "name": "push_trapulator_task",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43079,
   "name": "cpu_choose_goal",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43097,
   "name": "b_A859",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43117,
   "name": "b_A86D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43181,
   "name": "b_A8AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43184,
   "name": "b_A8B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43187,
   "name": "b_A8B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43190,
   "name": "b_A8B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43193,
   "name": "b_A8B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43196,
   "name": "cpu_goal_item",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43201,
   "name": "cpu_goal_next_item",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43205,
   "name": "b_A8C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43237,
   "name": "b_A8E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43245,
   "name": "b_A8ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43260,
   "name": "b_A8FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43264,
   "name": "b_A900",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43274,
   "name": "cpu_goal_here",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43276,
   "name": "push_room_trip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43284,
   "name": "cpu_goal_chase",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43294,
   "name": "push_trip_to",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43312,
   "name": "cpu_goal_exit_or_chase",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43329,
   "name": "cpu_goal_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43374,
   "name": "push_item_trip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43392,
   "name": "push_furniture_trip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43454,
   "name": "b_A9BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43459,
   "name": "push_task",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43503,
   "name": "route_search",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43518,
   "name": "b_A9FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43536,
   "name": "b_AA10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43543,
   "name": "b_AA17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43545,
   "name": "b_AA19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43554,
   "name": "b_AA22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43568,
   "name": "b_AA30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43598,
   "name": "b_AA4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43609,
   "name": "b_AA59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43628,
   "name": "b_AA6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43633,
   "name": "b_AA71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43638,
   "name": "b_AA76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43665,
   "name": "j_AA91",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 43671,
   "name": "b_AA97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43677,
   "name": "route_goal",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43686,
   "name": "b_AAA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43723,
   "name": "b_AACB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43729,
   "name": "remedy_compare",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43742,
   "name": "b_AADE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43758,
   "name": "b_AAEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43760,
   "name": "b_AAF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43772,
   "name": "b_AAFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43779,
   "name": "route_to_waypoints",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43794,
   "name": "b_AB12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43797,
   "name": "b_AB15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43829,
   "name": "b_AB35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43836,
   "name": "j_AB3C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 43894,
   "name": "spy_shapes_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44510,
   "name": "spy_shape_operand",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44800,
   "name": "spy_shapes_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45824,
   "name": "spy_shapes_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46386,
   "name": "stick_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46402,
   "name": "fight_turn",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46418,
   "name": "stand_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46426,
   "name": "anim_frame_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46428,
   "name": "spy_frame_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46430,
   "name": "airport_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46432,
   "name": "sink_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46434,
   "name": "flinch_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46436,
   "name": "action_frames_spy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46448,
   "name": "seq9_flash",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46457,
   "name": "seq9_sound",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46466,
   "name": "seq9_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46484,
   "name": "stick_move",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46500,
   "name": "move_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46520,
   "name": "swing_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46540,
   "name": "swing_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46560,
   "name": "club_reach",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46574,
   "name": "probe_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46584,
   "name": "probe_dz",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46594,
   "name": "anim_seq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46606,
   "name": "anim_seq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46618,
   "name": "anim_seqs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46678,
   "name": "step_across_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46683,
   "name": "step_across_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46708,
   "name": "step_height_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46713,
   "name": "step_height_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46738,
   "name": "step_depth_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46743,
   "name": "step_depth_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46768,
   "name": "step_frames_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46780,
   "name": "step_frames_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46864,
   "name": "frame_hdr_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46933,
   "name": "frame_hdr_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47002,
   "name": "frame_headers",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47592,
   "name": "spy_shape_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47658,
   "name": "spy_shape_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47724,
   "name": "spy_shape_size",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47725,
   "name": "spy_shape_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47856,
   "name": "shape_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47922,
   "name": "door_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47928,
   "name": "door_across",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47930,
   "name": "exit_target_dz",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47934,
   "name": "door_target_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47936,
   "name": "exit_target_dx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47940,
   "name": "door_target_dz",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47942,
   "name": "exit_target_dz2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47946,
   "name": "door_place_side",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47950,
   "name": "door_place_back",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47954,
   "name": "furniture_random_mask",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47957,
   "name": "furniture_place_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47960,
   "name": "furniture_place_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48043,
   "name": "rec_furn_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48044,
   "name": "rec_furn_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48047,
   "name": "rec_furn_across",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48050,
   "name": "rec_furn_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48053,
   "name": "rec_furn_contents",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48056,
   "name": "rec_furn_trap",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48059,
   "name": "rec_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48060,
   "name": "rec_door_link",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48061,
   "name": "rec_link_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48062,
   "name": "rec_link_back",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48063,
   "name": "rec_link_front",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48064,
   "name": "rec_link_down",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48065,
   "name": "rec_link_up",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48066,
   "name": "rec_door_place",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48068,
   "name": "rec_place_back",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48072,
   "name": "rec_door_mark",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48078,
   "name": "rec_door_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48080,
   "name": "rec_flags_back",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48081,
   "name": "rec_flags_front",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48084,
   "name": "rec_door_opposite",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48090,
   "name": "rec_opposite_place",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48102,
   "name": "rec_opposite_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48108,
   "name": "door_step_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48114,
   "name": "door_trail_arrow",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48120,
   "name": "room_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48152,
   "name": "room_rec_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48188,
   "name": "room_rec_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48224,
   "name": "layout_stride",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48225,
   "name": "level_layout_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48233,
   "name": "level_layout_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48241,
   "name": "level_map_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48249,
   "name": "level_map_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48257,
   "name": "map_origin_dx_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48265,
   "name": "map_origin_dx_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48273,
   "name": "level_rooms",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48281,
   "name": "map_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48289,
   "name": "map_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48297,
   "name": "item_chance",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48305,
   "name": "exit_choice_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48313,
   "name": "exit_choice_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48321,
   "name": "exit_choices",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48353,
   "name": "level4_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48551,
   "name": "level4_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48584,
   "name": "level6_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48800,
   "name": "level6_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48836,
   "name": "stale_symbol_table",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49136,
   "name": "stop_climb_wait",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49143,
   "name": "stale_symbol_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "demo_white_values",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50176,
   "name": "demo_white_counts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51200,
   "name": "demo_black_values",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52224,
   "name": "demo_black_counts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53237,
   "name": "a_CFF5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53238,
   "name": "a_CFF6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53239,
   "name": "a_CFF7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53240,
   "name": "a_CFF8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53241,
   "name": "a_CFF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53242,
   "name": "a_CFFA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53243,
   "name": "a_CFFB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53244,
   "name": "a_CFFC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53245,
   "name": "a_CFFD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53246,
   "name": "f_CFFE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55296,
   "name": "f_D800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55378,
   "name": "f_D852",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55418,
   "name": "f_D87A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55458,
   "name": "f_D8A2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55498,
   "name": "f_D8CA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55538,
   "name": "f_D8F2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55552,
   "name": "f_D900",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55578,
   "name": "f_D91A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55618,
   "name": "f_D942",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55658,
   "name": "f_D96A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55698,
   "name": "f_D992",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55808,
   "name": "f_DA00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55858,
   "name": "f_DA32",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55898,
   "name": "f_DA5A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55938,
   "name": "f_DA82",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55978,
   "name": "f_DAAA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56018,
   "name": "f_DAD2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56058,
   "name": "f_DAFA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56064,
   "name": "f_DB00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56098,
   "name": "f_DB22",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56138,
   "name": "f_DB4A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56178,
   "name": "f_DB72",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59392,
   "name": "f_E800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59648,
   "name": "f_E900",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59904,
   "name": "f_EA00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60160,
   "name": "f_EB00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60416,
   "name": "f_EC00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60672,
   "name": "f_ED00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60832,
   "name": "f_EDA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60928,
   "name": "f_EE00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60944,
   "name": "f_EE10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61024,
   "name": "f_EE60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61040,
   "name": "f_EE70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61216,
   "name": "f_EF20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61264,
   "name": "f_EF50",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61312,
   "name": "f_EF80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61350,
   "name": "f_EFA6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61388,
   "name": "f_EFCC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61632,
   "name": "f_F0C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61648,
   "name": "f_F0D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61664,
   "name": "f_F0E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61680,
   "name": "f_F0F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61696,
   "name": "f_F100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61712,
   "name": "a_F110",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61728,
   "name": "f_F120",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61744,
   "name": "a_F130",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61749,
   "name": "f_F135",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61750,
   "name": "a_F136",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61787,
   "name": "f_F15B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61788,
   "name": "a_F15C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61825,
   "name": "f_F181",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61826,
   "name": "a_F182",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61863,
   "name": "f_F1A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61864,
   "name": "a_F1A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61901,
   "name": "f_F1CD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61902,
   "name": "a_F1CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61952,
   "name": "f_F200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62208,
   "name": "f_F300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62464,
   "name": "f_F400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62720,
   "name": "f_F500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63232,
   "name": "airport_packed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64256,
   "name": "airport_packed_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64452,
   "name": "airport_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64512,
   "name": "f_FC00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64738,
   "name": "KERNAL_RESET_VECTOR",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 64768,
   "name": "f_FD00",
   "type": "Field",
   "kind": "auto"
  }
 ],
 "comments": [
  {
   "address": 2304,
   "type": "line",
   "text": "What a new piece of furniture holds, by furniture type (17 entries, read by build_embassy): 0 nothing, otherwise a remedy, coded (remedy \u00d7 4) + 2: types 2 and 4 hold remedy 0 (the fire bucket), 6 and 8 remedy 1 (the wire cutters), $0B remedy 3 (the scissors), $0E remedy 2 (the umbrella). An item is only ever put into a piece holding nothing."
  },
  {
   "address": 2321,
   "type": "line",
   "text": "The first furniture type for each wall: 1 for the left wall, 5 for the right, 9 for the back. build_embassy adds a random number (masked by $BB52) to it."
  },
  {
   "address": 2324,
   "type": "line",
   "text": "Low bytes of the furniture type records' addresses, by type 0-$10 (high bytes at $0925: $09 for types 1-$10, $00 for type 0). Type 0 is unused."
  },
  {
   "address": 2341,
   "type": "line",
   "text": "High bytes of the furniture type records' addresses, by type: $09 for types 1-$10, the records being at $0936-$096C; $00 for type 0, which is unused."
  },
  {
   "address": 2358,
   "type": "line",
   "text": "The furniture type records, five bytes each from $0936 to $096C, shared by some types: byte 0 the fixed coordinate the piece gets on its wall (build_embassy), byte 1 its extent across the room less one (bit 7: counted leftwards), byte 2 its depth less one, byte 3 the closed shape, byte 4 the open shape (shape numbers in the object shape tables at $09B3). Used to draw a room ($8199), to mark it in the object map, and by the computer player to stand in front of a piece."
  },
  {
   "address": 2413,
   "type": "line",
   "text": "The sound effect played at the first step of each action type (types 0-5, $83 & 7): 8, $0D, $0C, 9, 9, 8."
  },
  {
   "address": 2419,
   "type": "line",
   "text": "The object shapes drawn for each step of an action, eight steps per action type, read by spy_action_step at (type \u00d7 8) + step and drawn with draw_shape at the spy's position. The entries $0993-$09A2 serve types 4 and 5."
  },
  {
   "address": 2435,
   "type": "line",
   "text": "The base of the across offsets for action type 4 (the trap of the gun with its string; trap object 8 gives type 4 at $733A and $71F6): read as $0983 + step for steps $20-$27, so the offsets themselves are at $09A3-$09AA; the bytes here belong to the action frames."
  },
  {
   "address": 2443,
   "type": "line",
   "text": "The base of the height offsets for action type 4, read as $098B + step for steps $20-$27 (the offsets are at $09AB-$09B2); these bytes are action frames."
  },
  {
   "address": 2467,
   "type": "line",
   "text": "For action steps $20-$27 (type 4, the trap of the gun with its string going off), the across offset ($11) added as the shape is drawn, read as $0983 + step: 0, 0, 8, 8, 0, 0, 0, 0 for steps $20-$27 (the step counter $89 counts down, so the last two entries come first)."
  },
  {
   "address": 2475,
   "type": "line",
   "text": "For action steps $20-$27, the height offset ($12) added to the shape's screen line, read as $098B + step: \u221212, \u221212, \u22127, \u22127, \u22122, \u22122, +3, +3 for steps $20-$27 (the step counter counts down, so the shape starts low and rises)."
  },
  {
   "address": 2483,
   "type": "line",
   "text": "Low bytes of the 52 object shapes' data addresses (furniture, doors, trap animations, the guard). Shapes 27, 43 and 47 point at $E900, a page cleared at start-up: an empty shape."
  },
  {
   "address": 2535,
   "type": "line",
   "text": "High bytes of the 52 object shapes' data addresses, $0A-$13 (and $E9 for the empty ones)."
  },
  {
   "address": 2587,
   "type": "line",
   "text": "Width in bytes (four pixels each) of each of the 52 object shapes."
  },
  {
   "address": 2639,
   "type": "line",
   "text": "Height in lines, less one, of each of the 52 object shapes."
  },
  {
   "address": 2691,
   "type": "line",
   "text": "Each object shape's offset across, added to its screen column so it lines up with its place in the room."
  },
  {
   "address": 2743,
   "type": "line",
   "text": "Each object shape's offset down, added to its screen line (negative values lift it)."
  },
  {
   "address": 2795,
   "type": "line",
   "text": "The object shapes' pixels, first part: multicolour bitmap bytes, row after row, each shape at the address its entry in $09B3/$09E7 gives, from shape 0 at $0AEB to the end of shape 11 at $0DFF: the doors of the six door slots, closed and open (draw_door draws shape 2 \u00d7 slot + open flag). The furniture starts with shape 12 at $0E00."
  },
  {
   "address": 3584,
   "type": "line",
   "text": "The object shapes' pixels, continued ($0E00-$0FFF)."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "The object shapes' pixels, continued from $1000 to $13FF (the last bytes, to the end of shape 51 at $142F, are labelled at $1400), including most of the shapes the actions and traps animate through ($0973)."
  },
  {
   "address": 5120,
   "type": "line",
   "text": "The last object shape bytes, $1400 to the end of shape 51 at $142F."
  },
  {
   "address": 5168,
   "type": "line",
   "text": "Bytes after the last object shape ($1430-$148A) that no shape table points into."
  },
  {
   "address": 5259,
   "type": "line",
   "text": "One bit per item (1, 2, 4, 8) for the spies' inventory bytes $79: items 1-4, the passport, money, key and plans, in the briefcase. Also the sprite bits blinked for carried items."
  },
  {
   "address": 5263,
   "type": "line",
   "text": "The x positions of sprites 0-3, the trapulator's sprites (not the in-hand overlay sprite), set by reset_play_state."
  },
  {
   "address": 5267,
   "type": "line",
   "text": "The ninth x bit for the trapulator sprites, $0F."
  },
  {
   "address": 5268,
   "type": "line",
   "text": "The y position of the trapulator's sprites 0-3 in each half, written on each play interrupt: $76 for the white spy's, $D6 for the black's."
  },
  {
   "address": 5270,
   "type": "line",
   "text": "The sprite pointers for the four overlay sprites: $90-$93."
  },
  {
   "address": 5274,
   "type": "line",
   "text": "Their colours: 6, 5, 2, 8."
  },
  {
   "address": 5278,
   "type": "line",
   "text": "The value put into the spy's held object $7B,x when an action starts ($69CD): $0F for the white spy, $10 for the black (overlay classes $0C and $0D in $14A0). It is replaced by $FF ($6A62) when the step counter first runs out and the action's sound starts."
  },
  {
   "address": 5280,
   "type": "line",
   "text": "The overlay-sprite class for each held-object number $7B,x (17 entries, objects 0-$10): which small sprite is shown in the spy's hand. Objects 0-$0A have classes 0-$0A, the four items $0B-$0E share class $0B, $0F and $10 have $0C and $0D. Classes $0C and up still get a sprite but are never mirrored ($9322) and take a fixed x nudge of \u221210 ($90D0); class 2 takes \u221218."
  },
  {
   "address": 5297,
   "type": "line",
   "text": "The trapulator arrow's change of column for each stick direction (right, front, left, back): +1, 0, \u22121, 0."
  },
  {
   "address": 5301,
   "type": "line",
   "text": "The arrow's change of row for each direction: 0, +1, 0, \u22121."
  },
  {
   "address": 5305,
   "type": "line",
   "text": "Clamps the arrow's column (index column + 1 after the change): moving off either side wraps to the other end."
  },
  {
   "address": 5310,
   "type": "line",
   "text": "Clamps the arrow's row the same way: two rows."
  },
  {
   "address": 5314,
   "type": "line",
   "text": "The object each trapulator button gives, by (column \u00d7 2) + row: 4 the bomb, 7 the gun, 5 the spring, 9 (the time bomb, handled apart), 6 the water bucket, 9 (the map, handled apart)."
  },
  {
   "address": 5320,
   "type": "line",
   "text": "The arrow sprite's x for each trapulator column: 0, $1A, $34 (its ninth x bit is set)."
  },
  {
   "address": 5323,
   "type": "line",
   "text": "The arrow sprite's y offset for each trapulator row: $53, $66."
  },
  {
   "address": 5325,
   "type": "line",
   "text": "A small y adjustment for each trapulator column: \u22121, 0, +1."
  },
  {
   "address": 5328,
   "type": "line",
   "text": "The arrow's y base in each half: 4 (white), $64 (black)."
  },
  {
   "address": 5330,
   "type": "line",
   "text": "The overlay sprite used for each spy: 5 (white), 6 (black)."
  },
  {
   "address": 5332,
   "type": "line",
   "text": "Its enable bit: $20, $40."
  },
  {
   "address": 5334,
   "type": "line",
   "text": "Its enable bit cleared: $DF, $BF."
  },
  {
   "address": 5336,
   "type": "line",
   "text": "Low bytes of the pointers to each class's three-byte overlay record (x offset, y offset, colour), read by place_spy_sprite."
  },
  {
   "address": 5350,
   "type": "line",
   "text": "High bytes of the overlay record pointers ($14, $15); the records follow, from $14F4."
  },
  {
   "address": 5406,
   "type": "line",
   "text": "An x nudge for the overlay sprite by the spy's facing."
  },
  {
   "address": 5410,
   "type": "line",
   "text": "The overlay sprite's facing for each spy facing, compared with the sprite as built to decide whether to mirror it."
  },
  {
   "address": 5414,
   "type": "line",
   "text": "The overlay sprites' data addresses, low: $40 (white, $6540), $80 (black, $6580)."
  },
  {
   "address": 5416,
   "type": "line",
   "text": "The overlay sprites' data addresses, high: $65."
  },
  {
   "address": 5418,
   "type": "line",
   "text": "Low bytes of the 19 packed sprite shapes' addresses ($1576-$16E4, the last shape starting at $16CD): the trapulator sprites and the things a spy can hold."
  },
  {
   "address": 5437,
   "type": "line",
   "text": "High bytes of the packed sprite shapes' addresses."
  },
  {
   "address": 5456,
   "type": "line",
   "text": "Bytes per row of each packed sprite shape (1-3)."
  },
  {
   "address": 5475,
   "type": "line",
   "text": "Rows in each packed sprite shape."
  },
  {
   "address": 5494,
   "type": "line",
   "text": "The 19 packed sprite shapes, each its rows of 1-3 bytes, unpacked into 64-byte sprites by draw_screen and build_spy_sprite."
  },
  {
   "address": 5777,
   "type": "line",
   "text": "Packed sprite shape 15 ($1691-$16A0), the operand build_spy_sprite's copy loop is assembled with."
  },
  {
   "address": 5861,
   "type": "line",
   "text": "The text row for \"OUT OF TIME..ITS ALL OVER\" in each spy's monitor: 6 (white), $12 (black)."
  },
  {
   "address": 5863,
   "type": "line",
   "text": "The text row for \"YOUR RANKING:\" at the airport: 6, $12."
  },
  {
   "address": 5865,
   "type": "line",
   "text": "The text row for the rank: 7, $13."
  },
  {
   "address": 5867,
   "type": "line",
   "text": "Low bytes of the option cursor's bitmap address for each option row."
  },
  {
   "address": 5871,
   "type": "line",
   "text": "High bytes of the option cursor's address."
  },
  {
   "address": 5875,
   "type": "line",
   "text": "The low bytes of each option's variable: $022F players, $022D level, $0231 IQ, $0233 hide."
  },
  {
   "address": 5879,
   "type": "line",
   "text": "The high bytes of the option variables: $02."
  },
  {
   "address": 5883,
   "type": "line",
   "text": "The change for a pair of stick bits (as read, 0 = pressed): none, +1, \u22121, none."
  },
  {
   "address": 5887,
   "type": "line",
   "text": "Each option's largest value: 2 players, 8 levels, IQ 5, and 2 for the airport (1 Y, hidden; 2 N)."
  },
  {
   "address": 5891,
   "type": "line",
   "text": "The offsets of the cursor's bytes within its row, inverted by toggle_cursor."
  },
  {
   "address": 5895,
   "type": "line",
   "text": "Glyph addresses, low, for the hide-airport value drawn in digit slot 7: value 1 is Y ($1AA6), 2 is N ($1A6F); value 0 never occurs."
  },
  {
   "address": 5898,
   "type": "line",
   "text": "Glyph addresses, high, for the same."
  },
  {
   "address": 5901,
   "type": "line",
   "text": "Low bytes of the 31 text strings' addresses (high bytes at $172C, lengths at $174B): the options screen's 18 lines (0-17), OUT OF TIME..ITS ALL OVER (18), YOUR RANKING: (19) and the ten ranks (20-29). Entry 30 points into the font pointers and is never drawn."
  },
  {
   "address": 5932,
   "type": "line",
   "text": "High bytes of the text strings' addresses."
  },
  {
   "address": 5963,
   "type": "line",
   "text": "The text strings' lengths. The last one, $0E, doubles as the first letter of string 0 (N)."
  },
  {
   "address": 5994,
   "type": "line",
   "text": "The text, in C64 screen codes: the options screen (NUMBER OF PLAYERS......, LEVEL OF DIFFICULTY...., COMPUTER IQ (1 PLAYER)., HIDE AIRPORT TILL END.., a rule, CURRENT LEVEL:, TOTAL NUMBER OF ROOMS.., TOTAL TRAPS AVAILABLE.., MINUTES ON THE CLOCK..., then UP/DOWN MOVES THE CURSOR, LEFT/RIGHT ALTERS SETTING, HIT F5 TO RESTART GAME, RUN/STOP KEY PAUSES GAME, USE JOYPORT 2 FOR WHITE SPY OR SINGLE PLAYER AND JOYPORT 1 FOR BLACK SPY, FIRE BUTTON TO START GAME), then OUT OF TIME..ITS ALL OVER, YOUR RANKING: and the ranks A KNEE HIGH SPY, A SMALL FRY SPY, AVERAGE GUY SPY, SPY SPY AGAIN, YOU SPY HARDER, QUITE A SLY SPY, A WISE GUY SPY, WHAT A GUY SPY, A SKY HIGH SPY, GRAND MASTER SPY. Two codes draw the game's own glyphs: \" is a colon and & is the letter F."
  },
  {
   "address": 6585,
   "type": "line",
   "text": "The last byte of the text block (a space)."
  },
  {
   "address": 6586,
   "type": "line",
   "text": "Low bytes of the font's glyph addresses, by screen code 0-$2F (high bytes at $19F4): five bytes a glyph, from $1A2E."
  },
  {
   "address": 6634,
   "type": "line",
   "text": "Low bytes of the glyph addresses for the digits 0-9, used by draw_score_digit (high bytes at $1A24)."
  },
  {
   "address": 6644,
   "type": "line",
   "text": "High bytes of the font's glyph addresses."
  },
  {
   "address": 6692,
   "type": "line",
   "text": "High bytes of the digit glyph addresses."
  },
  {
   "address": 6702,
   "type": "line",
   "text": "The font: five bytes per glyph, multicolour, one character cell (four pixels) wide, for the screen codes that have a pointer in $19BA/$19F4: the letters 1-$1A, space, and the few signs \" (a colon), & (a small f), (, ), -, . and /. The digits' glyphs follow at $1AD8 with their own pointers ($19EA). The same glyphs draw the options, the messages and the score."
  },
  {
   "address": 6872,
   "type": "line",
   "text": "The glyph for the digit 0 ($1AD8-$1ADC); the digits 1-9 follow at $1ADD. The hide-airport Y and N are drawn with the letters' glyphs ($1AA6, $1A6F), not from here."
  },
  {
   "address": 6877,
   "type": "line",
   "text": "Glyphs in the font's last stretch ($1ADD-$1B09), the address draw_score_digit's copy loop is assembled with."
  },
  {
   "address": 6922,
   "type": "line",
   "text": "The pages of the attract demo's recorded stick values: $C0 for the white spy, $C8 for the black."
  },
  {
   "address": 6924,
   "type": "line",
   "text": "The pages of the demo's run counts: $C4, $CC."
  },
  {
   "address": 6926,
   "type": "line",
   "text": "Each level's time, in BCD minutes: 07, 12, 15, 20, 22, 24, 24, 24."
  },
  {
   "address": 6934,
   "type": "line",
   "text": "The same minutes in binary, for the options screen's display."
  },
  {
   "address": 6942,
   "type": "line",
   "text": "The computer's fighting speed by IQ (1-5): turns between swings, $0D, $0A, 6, 3, 2 (index 0 unused)."
  },
  {
   "address": 6948,
   "type": "line",
   "text": "Weights in the computer's decision about a trap on its route: by whether the briefcase holds three or more items."
  },
  {
   "address": 6950,
   "type": "line",
   "text": "The trap decision's weight by the detour: whether going round the trap (a second search to the waypoint's room, $02A3 = 0) is impossible, short, or 8 or more rooms longer than the plan ($0F, $9DDA-$9DE5)."
  },
  {
   "address": 6953,
   "type": "line",
   "text": "The trap decision's weight by how far the remedy is ($0B, from the remedy search at $9D94-$9DAF): 0 no route to one, 1 under three rooms away, 2 farther."
  },
  {
   "address": 6956,
   "type": "line",
   "text": "The decision table: 1 plan a route round, 2 carry on, 3 fetch the remedy first."
  },
  {
   "address": 6974,
   "type": "line",
   "text": "The computer's goal choice, weight by what its own spy holds ($7C, the black spy, which the computer always plays): 0 for nothing or any object other than the briefcase or an item, $0F for the briefcase, $1E for an item."
  },
  {
   "address": 6977,
   "type": "line",
   "text": "The goal choice's weight by what the other spy holds ($7B, the white spy): 0 nothing or another object, 5 the briefcase, $0A an item."
  },
  {
   "address": 6980,
   "type": "line",
   "text": "The goal choice's weight by the items in the briefcase."
  },
  {
   "address": 6985,
   "type": "line",
   "text": "The goal table: 1 fetch the briefcase, 2 fetch the next item, 3 its own room, 4 chase, 5 exit or chase by time, other values go for the exit door."
  },
  {
   "address": 7030,
   "type": "line",
   "text": "The eight neighbouring places the computer checks for its target object: across offsets."
  },
  {
   "address": 7039,
   "type": "line",
   "text": "The same places' depth offsets."
  },
  {
   "address": 7048,
   "type": "line",
   "text": "Control bytes for a random move (stick directions in the joystick's format, 0 = pressed)."
  },
  {
   "address": 7057,
   "type": "line",
   "text": "The control byte that walks into a door in each slot."
  },
  {
   "address": 7066,
   "type": "line",
   "text": "The control byte that walks into each kind of object while searching."
  },
  {
   "address": 7075,
   "type": "line",
   "text": "The trapulator button's column for each trap the computer wants."
  },
  {
   "address": 7081,
   "type": "line",
   "text": "The button's row for each trap."
  },
  {
   "address": 7087,
   "type": "line",
   "text": "The first shift table's low byte for each pixel shift (0-3), used by draw_strip with $1BB3: high parts of the pre-shifted bytes."
  },
  {
   "address": 7091,
   "type": "line",
   "text": "The first shift table's high byte for each shift: $04, $05, $FC, $FD."
  },
  {
   "address": 7095,
   "type": "line",
   "text": "The second shift table's low byte for each shift: the bits pushed out."
  },
  {
   "address": 7099,
   "type": "line",
   "text": "The second shift table's high byte for each shift: $F2-$F5."
  },
  {
   "address": 7103,
   "type": "line",
   "text": "Sixteen bytes up to $1BCE: $FE, $FD, $FB, $F7, $EF, $DF, $BF, $7F (each bit cleared in turn) and more. No routine found reads them."
  },
  {
   "address": 7119,
   "type": "line",
   "text": "The play screen's colour matrix, run-length coded (value, count pairs, 96 bytes): unpacked into both monitor halves by draw_screen_colours."
  },
  {
   "address": 7215,
   "type": "line",
   "text": "The pixel pair ORed in for each position in a byte when the string is drawn: $C0, $30, $0C, $03."
  },
  {
   "address": 7219,
   "type": "line",
   "text": "Masks for the byte at a left door frame's edge, by pixel position: the part of the figure that shows."
  },
  {
   "address": 7223,
   "type": "line",
   "text": "Bytes skipped at the left door frame's edge, by position."
  },
  {
   "address": 7227,
   "type": "line",
   "text": "Masks for the byte at a right door frame's edge."
  },
  {
   "address": 7231,
   "type": "line",
   "text": "Bytes skipped at the right frame's edge."
  },
  {
   "address": 7235,
   "type": "line",
   "text": "The number of pixel bytes left out of a strip for each distance past a door frame's edge."
  },
  {
   "address": 7256,
   "type": "line",
   "text": "The floor line of the white spy's monitor, $2C (and $8C for the black's, next byte)."
  },
  {
   "address": 7257,
   "type": "line",
   "text": "The black spy's monitor's floor line, $8C."
  },
  {
   "address": 7258,
   "type": "line",
   "text": "How far a spy's sprite rows move when it enters the other monitor's room: $60, $A0."
  },
  {
   "address": 7260,
   "type": "line",
   "text": "The raster interrupt's lines: $96 (150, the black spy's half) and $32 (50, the white spy's half)."
  },
  {
   "address": 7262,
   "type": "line",
   "text": "The object map offset for each depth (0-24): 0 to 10, so 11 rows; two depths to a row up to depth 10, three from there on (0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6 ... 9, 10)."
  },
  {
   "address": 7287,
   "type": "line",
   "text": "The object map offset for each across index: multiples of 11, so the map is 23 cells across by 11 deep."
  },
  {
   "address": 7310,
   "type": "line",
   "text": "The across index for each across position + 25 (0-50): two positions to a cell."
  },
  {
   "address": 7361,
   "type": "line",
   "text": "The bread-crumb trail lists' addresses, low: $EF00 and $EF10."
  },
  {
   "address": 7363,
   "type": "line",
   "text": "The trail lists' addresses, high: $EF."
  },
  {
   "address": 7365,
   "type": "line",
   "text": "The trail strips' screen addresses, low."
  },
  {
   "address": 7367,
   "type": "line",
   "text": "The trail strips' screen addresses, high: $4D (white), $5C (black)."
  },
  {
   "address": 7369,
   "type": "line",
   "text": "The opposite of each move (door slot): left and right, back and front, down and up swap."
  },
  {
   "address": 7375,
   "type": "line",
   "text": "The trail arrows' glyph addresses, low, for the six moves and blank."
  },
  {
   "address": 7382,
   "type": "line",
   "text": "The trail arrows' glyph addresses, high; the glyphs follow, ten bytes each (two columns of five), from $1CDD."
  },
  {
   "address": 7449,
   "type": "line",
   "text": "The blank trail place, left column: five $55 bytes."
  },
  {
   "address": 7454,
   "type": "line",
   "text": "The blank trail place, right column: five $55 bytes."
  },
  {
   "address": 7459,
   "type": "line",
   "text": "The points for each scoring cause, BCD: 80, 30, 60, 40, 80, 20, 70, 0."
  },
  {
   "address": 7467,
   "type": "line",
   "text": "Whether each cause takes the points away: causes 4, 5 and 6."
  },
  {
   "address": 7475,
   "type": "line",
   "text": "The change of time for each cause, in seconds: 0, \u221210, 0, \u221210, \u221220, \u221210, \u221215, \u22123."
  },
  {
   "address": 7483,
   "type": "line",
   "text": "Screen addresses, low, of the digit slots: 0-3 the white spy's score, 4-7 the four options' values, 8-13 the rooms, traps and minutes of the chosen level."
  },
  {
   "address": 7497,
   "type": "line",
   "text": "The same addresses' high bytes."
  },
  {
   "address": 7511,
   "type": "line",
   "text": "The black spy's score digit slots, low."
  },
  {
   "address": 7515,
   "type": "line",
   "text": "The black spy's score digit slots, high."
  },
  {
   "address": 7519,
   "type": "line",
   "text": "The white spy's six clock digit slots on the trapulator, low."
  },
  {
   "address": 7525,
   "type": "line",
   "text": "The white spy's clock digit slots, high: $43."
  },
  {
   "address": 7531,
   "type": "line",
   "text": "The black spy's clock digit slots, low."
  },
  {
   "address": 7537,
   "type": "line",
   "text": "The black spy's clock digit slots, high: $52."
  },
  {
   "address": 7543,
   "type": "line",
   "text": "The clock digits' glyph addresses, low (0-9, five bytes each, from $1D8B)."
  },
  {
   "address": 7553,
   "type": "line",
   "text": "The clock digits' glyph addresses, high; the glyphs follow from $1D8B."
  },
  {
   "address": 7603,
   "type": "line",
   "text": "The glyphs of the clock digits 8 and 9 ($1DB3-$1DBC); draw_digit's copy loop is assembled with this address."
  },
  {
   "address": 7613,
   "type": "line",
   "text": "The two spies' visited-room lists for the map, low: $EF20, $EF50."
  },
  {
   "address": 7615,
   "type": "line",
   "text": "The visited lists, high: $EF."
  },
  {
   "address": 7617,
   "type": "line",
   "text": "The four map cell pictures' addresses, low: unvisited, visited, unvisited with a dot, visited with a dot."
  },
  {
   "address": 7621,
   "type": "line",
   "text": "The map cell pictures' addresses, high."
  },
  {
   "address": 7625,
   "type": "line",
   "text": "The top left of the map in each monitor, low."
  },
  {
   "address": 7627,
   "type": "line",
   "text": "The top left of the map, high; the four cell pictures follow, 16 bytes each, from $1DCD."
  },
  {
   "address": 7693,
   "type": "line",
   "text": "Low bytes of the 26 perspective tables, one for each across position (0-25 from the middle): the column offset at each depth."
  },
  {
   "address": 7719,
   "type": "line",
   "text": "High bytes of the perspective tables."
  },
  {
   "address": 7745,
   "type": "line",
   "text": "The perspective tables, 25 bytes each (depth 0 at the back to 24 at the front), from across position 25 at $1E41 to 0 at $20B2: how far from the middle of the screen, in pixel pairs, a point at that across position and depth appears. The back of the room is narrower than the front."
  },
  {
   "address": 8192,
   "type": "line",
   "text": "The perspective tables, continued to $20CA."
  },
  {
   "address": 8395,
   "type": "line",
   "text": "Low bytes of the 19 sound effects' records (effect 1-19; 0 is none). High bytes at $20DF."
  },
  {
   "address": 8415,
   "type": "line",
   "text": "High bytes of the sound effects' records."
  },
  {
   "address": 8435,
   "type": "line",
   "text": "Each effect's priority: an effect of lower priority than the one playing is dropped."
  },
  {
   "address": 8455,
   "type": "line",
   "text": "Gate times, in interrupts, picked by the high nibble of an effect's eighth byte."
  },
  {
   "address": 8471,
   "type": "line",
   "text": "Lengths, in interrupts, picked by the low nibble."
  },
  {
   "address": 8487,
   "type": "line",
   "text": "The sound effects, eight bytes each: SID voice 1's frequency, pulse width, control, attack/decay and sustain/release, then the timing byte. Effect 1 is the footstep; the others include the searches, the beeps of a penalty, the warning, the bomb's ticking and the refusal."
  },
  {
   "address": 8602,
   "type": "line",
   "text": "The airport's sprite block, 512 bytes copied to $6400-$65FF (sprites $90-$97) by airport_scene. Its first 64 bytes land in sprite $90, which the winner's own sprite then replaces, so the program keeps the last sound effects and small tables in them."
  },
  {
   "address": 8639,
   "type": "line",
   "text": "The screen matrix address of the winner's monitor, low, for the airport's colours."
  },
  {
   "address": 8641,
   "type": "line",
   "text": "The same address, high."
  },
  {
   "address": 8643,
   "type": "line",
   "text": "The winner's sprite colour."
  },
  {
   "address": 8645,
   "type": "line",
   "text": "The seven plane sprites' x offsets."
  },
  {
   "address": 8652,
   "type": "line",
   "text": "The seven plane sprites' y offsets."
  },
  {
   "address": 8659,
   "type": "line",
   "text": "The plane sprites' ninth-bit masks."
  },
  {
   "address": 8666,
   "type": "line",
   "text": "The aeroplane: six sprites ($91-$96), drawn as one picture by place_plane_sprites."
  },
  {
   "address": 8858,
   "type": "line",
   "text": "The second half of the airport sprite block, copied to $6500-$65FF (sprites $94-$97)."
  },
  {
   "address": 9050,
   "type": "line",
   "text": "The white spy's own sprite at the airport (64 bytes), copied to sprite $90; the block copy also puts it in sprite $97, which is not shown."
  },
  {
   "address": 9114,
   "type": "line",
   "text": "The black spy's own sprite at the airport (64 bytes)."
  },
  {
   "address": 9178,
   "type": "line",
   "text": "Note lengths in interrupts for the eight length codes: 5, $0A, $0F, $14, $23, $28, $3C, $50."
  },
  {
   "address": 9186,
   "type": "line",
   "text": "Low bytes of the top octave's note frequencies (12 notes)."
  },
  {
   "address": 9198,
   "type": "line",
   "text": "High bytes of the top octave's frequencies; lower octaves shift them down."
  },
  {
   "address": 9210,
   "type": "line",
   "text": "Eight bytes ($23FA-$2401) where instrument 0's pointer leads; a note with instrument 0 keeps the instrument it has, so they are never read as one."
  },
  {
   "address": 9218,
   "type": "line",
   "text": "The SID voices the music uses, low: $D407 (voice 2), $D40E (voice 3)."
  },
  {
   "address": 9220,
   "type": "line",
   "text": "The voices' high bytes: $D4."
  },
  {
   "address": 9222,
   "type": "line",
   "text": "The two voices' tunes, low: $245A, $24D2."
  },
  {
   "address": 9224,
   "type": "line",
   "text": "The tunes, high: $24."
  },
  {
   "address": 9226,
   "type": "line",
   "text": "The 16 instruments' addresses, low (high at $241A): eight bytes each, from $242A."
  },
  {
   "address": 9242,
   "type": "line",
   "text": "The instruments' addresses, high."
  },
  {
   "address": 9258,
   "type": "line",
   "text": "The instruments: a control and slide byte, a step, and the waveform, pulse and envelope bytes copied to the voice. The tunes begin inside this block, at $245A."
  },
  {
   "address": 9306,
   "type": "line",
   "text": "Voice 2's tune, $245A-$24B0: three bytes per note (pitch and octave, length and rest flags, instrument), looping after the note at $54 ($0268). The game's music is credited to Nick Scarim."
  },
  {
   "address": 9393,
   "type": "line",
   "text": "33 bytes between the tunes that neither voice reaches ($24B1-$24D1), laid out like more notes."
  },
  {
   "address": 9426,
   "type": "line",
   "text": "Voice 3's tune, $24D2-$254C, three bytes per note, looping after the note at $78 ($0269)."
  },
  {
   "address": 9549,
   "type": "line",
   "text": "From $254D to $2561, bytes of an assembler's symbol table left in the file: entries ERASH ($90C1) and DGT0 ($90CB) with the start of DGT1, each a length byte ($80 + length), the name and an address. The addresses belong to an earlier build of the program."
  },
  {
   "address": 9570,
   "type": "line",
   "text": "The backdrop's first row in each monitor, low: $10."
  },
  {
   "address": 9572,
   "type": "line",
   "text": "The backdrop's first row, high: $2E (white), $37 (black)."
  },
  {
   "address": 9574,
   "type": "line",
   "text": "The two floor pictures' addresses, low."
  },
  {
   "address": 9576,
   "type": "line",
   "text": "The two floor pictures' addresses, high: $2716 and $2796."
  },
  {
   "address": 9578,
   "type": "line",
   "text": "The room's walls, packed with the zero-run coding of unpack_rows: five character rows of 200 bytes, the same for every room. Ends at $2715."
  },
  {
   "address": 10006,
   "type": "line",
   "text": "The first floor picture, packed: three rows, to $278D."
  },
  {
   "address": 10126,
   "type": "line",
   "text": "The eight bytes repeated along the bottom row of the floor ($278E-$2795), between the two packed floor pictures (the second begins at $2796)."
  },
  {
   "address": 10134,
   "type": "line",
   "text": "The second floor picture, packed: three rows, to $29BB. The colour byte's bit 7 picks it."
  },
  {
   "address": 10684,
   "type": "line",
   "text": "Level 5's embassy: 35 rooms, six door links each (left, right, back and front walls, then the two openings between floors), each the room it leads to or $FF for none."
  },
  {
   "address": 10894,
   "type": "line",
   "text": "Level 5's map positions, one byte per room: floor (bit 7), row and column."
  },
  {
   "address": 10929,
   "type": "line",
   "text": "Level 8's embassy: 36 rooms of six door links."
  },
  {
   "address": 11145,
   "type": "line",
   "text": "Level 8's map positions."
  },
  {
   "address": 11181,
   "type": "line",
   "text": "Level 1's embassy: 6 rooms of six door links."
  },
  {
   "address": 11217,
   "type": "line",
   "text": "Level 1's map positions."
  },
  {
   "address": 11223,
   "type": "line",
   "text": "Level 7's embassy: 34 rooms of six door links."
  },
  {
   "address": 11427,
   "type": "line",
   "text": "Level 7's map positions."
  },
  {
   "address": 11461,
   "type": "line",
   "text": "Level 2's embassy: 13 rooms of six door links."
  },
  {
   "address": 11539,
   "type": "line",
   "text": "Level 2's map positions."
  },
  {
   "address": 11552,
   "type": "line",
   "text": "Level 3's embassy: 20 rooms of six door links."
  },
  {
   "address": 11672,
   "type": "line",
   "text": "Level 3's map positions."
  },
  {
   "address": 11692,
   "type": "line",
   "text": "The rest of the file, $2DAC-$2DFF: a byte-for-byte copy of $8AAC-$8AFF (the end of trail_step and the start of draw_trail, identical to the code that runs), left over from building the file. Nothing reads it."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "The play screen's bitmap (file S2), character rows 0-2: the top of the upper monitor's frame and the trapulator's top with its clock. The room windows (rows 2-10 and 14-22, 200 bytes each from column 2) are drawn by the game and not counted."
  },
  {
   "address": 16416,
   "type": "line",
   "text": "A bitmap byte in the white spy's monitor frame top that the computer player's search code overwrites with a random number when its target is not in reach ($A549), apparently left in from debugging: a speck that changes on screen."
  },
  {
   "address": 16432,
   "type": "line",
   "text": "Another frame byte the computer player overwrites with a random number ($9CB1), the same kind of leftover."
  },
  {
   "address": 17240,
   "type": "line",
   "text": "Bitmap row 2, columns 27-39: the white spy's trapulator beside its room."
  },
  {
   "address": 17344,
   "type": "line",
   "text": "The bitmap, row 3, columns 0-1 ($43C0-$43CF): the left edge of the white spy's monitor frame. The room window follows, not counted; the rest of rows 3-5 is in the bands labelled at $4498, $45D8 and $4718."
  },
  {
   "address": 17560,
   "type": "line",
   "text": "Bitmap row 3, columns 27-39 (the white spy's trapulator beside its room), and row 4, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 17880,
   "type": "line",
   "text": "Bitmap row 4, columns 27-39 (the white spy's trapulator beside its room), and row 5, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 18200,
   "type": "line",
   "text": "Bitmap row 5, columns 27-39 ($4718-$477F): the white spy's trapulator beside its room. Row 6 begins at $4780."
  },
  {
   "address": 18304,
   "type": "line",
   "text": "The bitmap, row 6, columns 0-1 ($4780-$478F): the left edge of the white spy's monitor frame. The room window follows, not counted; the rest of rows 6-8 is in the bands labelled at $4858, $4998 and $4AD8."
  },
  {
   "address": 18520,
   "type": "line",
   "text": "Bitmap row 6, columns 27-39 (the white spy's trapulator beside its room), and row 7, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 18840,
   "type": "line",
   "text": "Bitmap row 7, columns 27-39 (the white spy's trapulator beside its room), and row 8, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 19160,
   "type": "line",
   "text": "Bitmap row 8, columns 27-39 ($4AD8-$4B3F): the white spy's trapulator beside its room. Row 9 begins at $4B40."
  },
  {
   "address": 19264,
   "type": "line",
   "text": "The bitmap, row 9, columns 0-1 ($4B40-$4B4F): the left edge of the white spy's monitor frame. The room window follows, not counted; the foot of the monitor and the bread-crumb strip are in the bands at $4D58 and $4DE8."
  },
  {
   "address": 19480,
   "type": "line",
   "text": "Bitmap row 9, columns 27-39 (the white spy's trapulator beside its room), and row 10, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 19800,
   "type": "line",
   "text": "Bitmap row 10, columns 27-39 (the white spy's trapulator beside its room), and the rows below it up to the next labelled band: the foot of the white spy's monitor frame."
  },
  {
   "address": 19944,
   "type": "line",
   "text": "The start of the white spy's bread-crumb strip in the bitmap (row 11), cleared by blank_trail."
  },
  {
   "address": 20224,
   "type": "line",
   "text": "The bitmap, rows 12-14: between the monitors, and the top of the black spy's monitor and trapulator."
  },
  {
   "address": 21080,
   "type": "line",
   "text": "Bitmap row 14, columns 27-39: the black spy's trapulator beside its room."
  },
  {
   "address": 21162,
   "type": "line",
   "text": "The black spy's clock digits on its trapulator; draw_digit's copy loop is assembled with this address."
  },
  {
   "address": 21184,
   "type": "line",
   "text": "The bitmap, row 15, columns 0-1 ($52C0-$52CF): the left edge of the black spy's monitor frame. The room window follows, not counted; the rest of rows 15-17 is in the bands labelled at $5398, $54D8 and $5618."
  },
  {
   "address": 21400,
   "type": "line",
   "text": "Bitmap row 15, columns 27-39 (the black spy's trapulator beside its room), and row 16, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 21720,
   "type": "line",
   "text": "Bitmap row 16, columns 27-39 (the black spy's trapulator beside its room), and row 17, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 22040,
   "type": "line",
   "text": "Bitmap row 17, columns 27-39 ($5618-$567F): the black spy's trapulator beside its room. Row 18 begins at $5680."
  },
  {
   "address": 22144,
   "type": "line",
   "text": "The bitmap, row 18, columns 0-1 ($5680-$568F): the left edge of the black spy's monitor frame. The room window follows, not counted; the rest of rows 18-20 is in the bands labelled at $5758, $5898 and $59D8."
  },
  {
   "address": 22360,
   "type": "line",
   "text": "Bitmap row 18, columns 27-39 (the black spy's trapulator beside its room), and row 19, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 22680,
   "type": "line",
   "text": "Bitmap row 19, columns 27-39 (the black spy's trapulator beside its room), and row 20, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 23000,
   "type": "line",
   "text": "Bitmap row 20, columns 27-39 ($59D8-$5A3F): the black spy's trapulator beside its room. Row 21 begins at $5A40."
  },
  {
   "address": 23104,
   "type": "line",
   "text": "The bitmap, row 21, columns 0-1 ($5A40-$5A4F): the left edge of the black spy's monitor frame. The room window follows, not counted; the foot of the monitor and the bread-crumb strip are in the bands at $5C58 and $5CE8."
  },
  {
   "address": 23320,
   "type": "line",
   "text": "Bitmap row 21, columns 27-39 (the black spy's trapulator beside its room), and row 22, columns 0-1 (the left edge of the monitor's frame)."
  },
  {
   "address": 23640,
   "type": "line",
   "text": "Bitmap row 22, columns 27-39 (the black spy's trapulator beside its room), and the rows below it up to the next labelled band: the foot of the black spy's monitor frame."
  },
  {
   "address": 23784,
   "type": "line",
   "text": "The start of the black spy's bread-crumb strip (row 23); draw_trail's loop is assembled with it."
  },
  {
   "address": 23792,
   "type": "line",
   "text": "The black spy's bread-crumb strip, second column of its first place, and on."
  },
  {
   "address": 24064,
   "type": "line",
   "text": "The bitmap's last row, 24: the foot of the black spy's monitor with the BLACK label."
  },
  {
   "address": 26112,
   "type": "line",
   "text": "The game's first instruction: the loader's jmp $6600 lands here, after S0 has loaded every file. Jumps over the build switch at $6603."
  },
  {
   "address": 26115,
   "type": "line",
   "text": "A build switch, 0 on the disk. start_up copies it into the operand of the lda #$00 at $9FFF, whose value the options screen stores in demo_mode $CFF7 each time it opens. Set to 1 it would open every game in the recording mode (demo_mode 1), in which the main loop writes both joysticks into the demo tables at $1B0A/$1B0C, the way the attract demo's moves were presumably made."
  },
  {
   "address": 26116,
   "type": "line",
   "text": "Runs once after the hand-over: patches the record switch into the options code, waits a moment (delay_long, A = $18), resets the stack, synchronises with the NTSC frame ($8E38), and sets the options to their defaults: level 1 ($022D), one player ($022F), computer IQ 1 ($0231), airport hidden till the end ($0233 = 1, shown as Y)."
  },
  {
   "address": 26151,
   "type": "line",
   "text": "The top of every game, reached at start-up and whenever a game ends or F5 is pressed. Stops the interrupt's work (irq_mode 0), resets both spies (reset_play_state), then, in irq_mode 1, puts every shape back the way it is stored: $EA00 holds which way each of the 66 shapes currently faces and $BAF0 the stored facing; each shape the last game mirrored is mirrored back ($865B) and the table copied. Clears the screen and draws the two monitors ($8574), runs the options screen ($9F7E), seeds the random numbers ($8DD6), builds the embassy ($7EF8) and places the spies ($9705). Then starts both clocks ($025D/$025E), sets the idle timeout ($CFF5/$CFF6 = $1000 passes), decides whether the computer plays the black spy ($0288 = 1 in a one-player game outside the demo and recording modes) and enters play (irq_mode 2). In the demo it points both spies' recorded-input readers at the start of their tables; in recording mode it marks the tables empty."
  },
  {
   "address": 26167,
   "type": "line",
   "text": "The operand of lda #$01 in new_game's shape loop; new_game stores 1 here at $6656 after the loop, the value it already holds, so the beq after it never branches and every game compares each shape's facing with the stored one."
  },
  {
   "address": 26332,
   "type": "line",
   "text": "The top of the game loop, once per pass. A game where both spies have finished ($0261 and $0262) goes back to new_game. Outside the demo, a pass with neither stick nor key touched counts the idle timeout down, and after $1000 such passes the game goes back to the options screen too. Then the keys from read_controls ($0282): F5 (bit 7) restarts at once; RUN/STOP (bit 6) pauses, stopping both clocks until RUN/STOP has been released, pressed again and released."
  },
  {
   "address": 26437,
   "type": "line",
   "text": "Ends the game: marks both spies' held objects as nothing ($7B, $7C = $FF) and jumps to new_game."
  },
  {
   "address": 26446,
   "type": "line",
   "text": "Alternates the spy this pass serves: current_spy $41 flips between 0 (white) and 1 (black) and other_spy $42 is the one served last time. Each spy therefore moves every other pass."
  },
  {
   "address": 26454,
   "type": "line",
   "text": "Starts a spy's turn. When the two share a room ($43 not negative), the one nearer the front of the room (larger depth $57, the current $43 on a tie) becomes $43, the one drawn last. Points ($1B) at the spy's room record ($9861), counts down $021F,x (a short freeze after being hit), then fetches this pass's control byte: from the demo tables in the demo ($CFF7 negative: run-length pairs of value and count, through $67EA/$67F7), written to them in recording mode ($CFF7 positive), or from the joystick otherwise ($6804)."
  },
  {
   "address": 26602,
   "type": "line",
   "text": "Points $E5/$E6 at the spy's demo table page (base $1B0A,x plus the page count $CFFC,x) and Y at the offset $CFFA,x: the value byte of the current run."
  },
  {
   "address": 26615,
   "type": "line",
   "text": "Like demo_ptr_value, from base $1B0C,x: the count byte of the current run in the parallel table."
  },
  {
   "address": 26628,
   "type": "line",
   "text": "The spy's control byte for the pass: from the computer player ($9A67, its answer in $0289,x) when $0287,x says the computer controls this spy, otherwise the joystick read by the interrupt ($0285,x). Stored in $02,x: bits 0-3 the directions (0 = pressed: up, down, left, right) and bit 4 fire."
  },
  {
   "address": 26658,
   "type": "line",
   "text": "The checks that come before moving a spy. A spy who has finished ($0261,x) only waits. A spy lying stunned ($020C,x non-zero) counts its stun time $0246,x down; when it runs out the spy gets up again in room 0 (room 1 if the other spy is in room 0), across 0 and depth 12, with its trap and action states cleared, and is redrawn ($8199). A spy whose clock has run out ($025F,x) is handled at $687A."
  },
  {
   "address": 26746,
   "type": "line",
   "text": "A spy whose time has just run out ($025F,x = 1) is marked ($025F,x = $81), drops what it holds ($99C0), has its trapulator closed and map flag cleared, and goes into the action state $C0 with the room redrawn ($8199); once marked it goes straight to spy_action. Otherwise the time bombs: $0228,x is the room of the bomb a spy set and $022A,x its fuse, counted down on its owner's passes. While a fuse of either spy burns in this spy's room the bomb ticks (effect $12 or $13 when the fuse's low two bits are both set, one pass in four), and when it reaches 1 the spy is caught in the blast (scoring cause 4, $8937; action $C0). Otherwise goes on to the map and trapulator check at $68E7."
  },
  {
   "address": 26855,
   "type": "line",
   "text": "While the spy is looking at the map ($0237,x, set by the trapulator's map button at $9978) it stays on it, the map redrawn each pass ($8B7F), until fire is pressed: that clears $0237,x and redraws the room and its bread-crumb trail ($8199, $8AC7). Then a spy whose trapulator is open ($81,x negative) is handed to the trapulator's own code ($98E6) after a short delay."
  },
  {
   "address": 26901,
   "type": "line",
   "text": "Dispatches on the spy's action state $83,x: 0 is ordinary walking ($6B3D); a value with bit 7 set is an action under way: opening or searching something, setting or springing a trap, or the explosion and death animations ($69C2); a positive non-zero value is a fall or an animation that runs a fixed number of steps (the flash and sound for each step from $B570/$B579, the frames from $B582)."
  },
  {
   "address": 26969,
   "type": "line",
   "text": "Action state 1, after a trap, the guard or a lost fight: the spy sinks out of the picture, its height $55,x falling one unit every other pass, until floor line + depth + height ($97 + $57 + $55) is less than the floor line less 14. Then its sprite rows are moved by depth + 14 ($999C), the action cleared, the shared room left ($7623) and the spy's own monitor turned off ($7D6A, with $F8 set to the other spy), and the spy lies stunned for $90 of its turns ($0246,x, $020C,x). If its time has also run out, its game ends ($0261,x) and its monitor shows OUT OF TIME..ITS ALL OVER (string $12). Until then the sinking frame ($B560) is drawn with effect $10."
  },
  {
   "address": 27074,
   "type": "line",
   "text": "The first pass of an action (bit 6 of $83,x set): clears bit 6, puts the action marker $149E,x into the held object $7B,x, sets the timing ($89 = 8 steps, $87 = 12 passes) and, when the spies share a room ($F8 not negative), redraws the room and both spies in their new order ($7E7A, $7663). An action of type 1 (the spring, or the guard at the exit door) adds 6 to the facing $45,x and shortens the wait to 2 passes; any other copies the spy's figure into the backdrop ($7ABA, bake_spy), and notes in $0242 whether the spies share a room and the type is 2, 3 or 4."
  },
  {
   "address": 27214,
   "type": "line",
   "text": "The later passes of an action: every $87 passes it moves on one step ($89). When the wait first runs out the action marker in $7B,x is replaced by $FF, the other spy is frozen for $28 passes ($021F,y) and the action's sound plays ($096D). Type 1 (the spring or the guard) runs the spy animation ($6D92, $6DC9) while its step is 7, then shakes the screen ($8B = $84), puts the facing back ($45,x \u2212 6), calls guard_done ($988D) and becomes state 1, the sinking. The other types count their steps down; at the end type 2 (the water bucket) flashes ($8B,x = 4) and becomes the nine-step sequence (state 2), the rest state 1. Until then each step draws the frame at $0973 + type \u00d7 8 + step with draw_shape ($7C7E): type 0 shakes the screen ($8B = $82), type 3 sounds effect 9 on odd steps, and type 4 adds the offsets read through $0983/$098B and sounds effect 9 on odd steps."
  },
  {
   "address": 27432,
   "type": "line",
   "text": "Picks the standing frame for the spy's facing $45,x (a value of 4 or more counts as 1) from $B552 (base $B55C,x: 0 white, 4 black) and draws it."
  },
  {
   "address": 27453,
   "type": "line",
   "text": "An ordinary pass. A spy frozen by a hit ($021F,x) shows its flinch frame. A spy with an animation under way ($99,x, set while it goes through an opening between floors) carries it on ($6DC9, or $6D92 when the facing changes). Then the fire button, latched in $23,x ($80 released, 1 on the pass it is pressed): in separate rooms, a press while holding nothing ($7B,x = $FF) with the stick centred counts down $81,x, and the second such press opens the trapulator ($81,x = $80, $98E6); any other press resets the count. When the spies share a room, the pass fire is pressed walks ($6D13) and the passes it is held fight ($6BEA). The club hits a spy has taken ($020E,x) knock it out at ten (cause 5 for the loser, 0 for the winner, both via $8937; the winner is frozen for $28 passes, the loser goes into state 1); while no hit is being shown ($73,x negative) the count goes down one every $19 passes. Then movement ($6BEA or $6D13)."
  },
  {
   "address": 27626,
   "type": "line",
   "text": "Fight movement, used while the spies share a room with fire held or while a hit is being shown ($73,x): the spy faces the other spy ($45,x from $77/$78, set by which side the other is on, from the across positions $53/$54). The stick ($B594: 1-4) gives a direction; a change to the opposite direction is a club swing, whose frame and depth class come from $B5B8/$B5CC; a swing that reaches the other spy (checked by $6CF1) is a hit: the other spy gets the hit frame ($73), effect $0F, one more hit counted in its $020E and cause 7 via $8937. The new frame comes from $B5A4 by direction, side and spy, with effect $0E when it changes."
  },
  {
   "address": 27889,
   "type": "line",
   "text": "Whether a club swing reaches the other spy: their depths ($57) must be within 2, and the gap across the room ($04) at most the reach for this depth and swing in $B5E0. Carry set for a hit."
  },
  {
   "address": 27923,
   "type": "line",
   "text": "The spy walks by the stick ($B532 gives the facing for the stick bits): a pressed direction resets the trapulator count ($81,x = 1); keeping the same facing steps the walk animation ($6DC9); a new facing shows a turning frame from $B542 (old facing \u00d7 4 + new, $FF for none) and starts the new facing's animation ($6D92). With the stick centred the spy stands (frame from $B552) and, standing on the opening between floors marked $85 in the object map (slot 5) while it is open (bit 7 of the record's slot-5 link), goes through it ($6F40)."
  },
  {
   "address": 28050,
   "type": "line",
   "text": "Starts an animation sequence for the spy from the table at $B602/$B60E indexed by its facing: step count ($47), the frame list ($4B, plus $B55A,x for the black spy) and the step tables for across ($4D), height ($4F) and depth ($51). A goes to $CF, a frame held before the first step ($FF for none)."
  },
  {
   "address": 28105,
   "type": "line",
   "text": "One step of a walking or climbing animation: moves the spy by the sequence's offsets (depth from $B692, across from $B656, height from $B674), stopping it at the room's edges. Stepping off the left or right edge (across below $E7 or from $1A) goes through that side's door if one is there ($750B, $757E); otherwise the spy stops at the wall."
  },
  {
   "address": 28241,
   "type": "line",
   "text": "The height part of a step, and climbing: a spy on a ladder ($99,x = 4 up, 5 down) climbs until it reaches the floor above or below, where it changes room ($757E) and is put at the ladder's foot or top ($9995). Off a ladder, the step leads to the front or back wall's door when the spy walks through it."
  },
  {
   "address": 28410,
   "type": "line",
   "text": "Ends the step: checks the spies against each other ($7526), then what lies at the spy's new position in the object map ($97D3). During an animation through an opening ($99,x) the position is simply stored. Otherwise the target $6B,x is cleared and: nothing there walks on ($7011); a piece of furniture, a wall ($FF) or any value below $80 stops the spy (standing frame, $6FFA); a door slot ($80 + slot) that is open (bit 7 of its link) is gone through ($6F40); a closed door in slots 0-3 stops the spy; a closed opening (slot 4 or 5) or the value $86 is walked over."
  },
  {
   "address": 28480,
   "type": "line",
   "text": "The spy reached a door or opening ($0F = its slot). A side door (slot 0 or 1) sets the clip edge of its frame ($6FE3), so the figure passes behind the frame. A back or front door (2, 3): slot 2 of the exit room is the exit, which lets a spy through only with the briefcase holding all four items ($021B-$021E, then $86BB), otherwise the guard throws the spy back (scoring cause 4, $8937, action $C1); any other back or front door takes the spy to the depth for going through ($BBEC) and into the next room ($750B, $757E). Slots 4 and 5, the openings between floors, start climbing ($99,x = slot, target depth from $BB32, position from the room record) unless the other spy is on the same ladder or opening."
  },
  {
   "address": 28643,
   "type": "line",
   "text": "Going through a side door: stores the door frame's screen column (room-record byte 2 or 6, the door's place) as the spy's clip edge, $5D,x for the left door, $5F,x (+4) for the right. draw_spy_shape leaves out whatever of the figure lies beyond it, so the spy walks out behind the frame."
  },
  {
   "address": 28666,
   "type": "line",
   "text": "The spy's standing frame for its facing (and, facing 6 or more, the end of an action step)."
  },
  {
   "address": 28689,
   "type": "line",
   "text": "Clears the door-clip edges ($5D, $5F) and redraws the room if the spy's room needs it ($9867 closes open furniture; then $8199, $9861)."
  },
  {
   "address": 28706,
   "type": "line",
   "text": "Writes the new position ($9B across, $9C height, $9D depth) back into the spy's $53, $55, $57 and takes the frame for this step of the sequence from $B6B0/$B6BC; the steps that put a foot down play the footstep (effect 1, unless effect $12 is playing)."
  },
  {
   "address": 28756,
   "type": "line",
   "text": "Stores the frame to draw ($C9,x). Then redraws the room if it was marked as needing it ($F4,x, $7E7A). During an action of type 1 (the spring or the guard) the frame comes from $B564 by facing \u2212 6 and spy; during any other action the routine goes straight on to search_target without drawing. Computes $61,x (the floor line plus 17 while the height $55,x is positive, 0 when it is 0 or negative), and, for a spy holding the gun with its string (object 8), moves the string's loose end to the spy's hand ($A6/$AA) and redraws the string (effect $0A, $7B07). Draws both spies in order ($7663). In the airport scene the routine returns here."
  },
  {
   "address": 28855,
   "type": "line",
   "text": "A spy with no action under way ($83,x not negative) looks at the two places ahead of it ($7111, twice). On the pass fire is pressed ($23,x = 1) whatever is there is searched (look_ahead does that); with nothing in either place the spy drops what it holds ($99C0). Without fire, when something is within the two places the room flashes and effect 6 sounds the first time ($8B,x = 2, $69,x latched until nothing is in reach)."
  },
  {
   "address": 28924,
   "type": "line",
   "text": "When nothing was drawn this pass ($F3 = 0) waits about 9,000 cycles so that passes take a similar time, then goes back to main_loop."
  },
  {
   "address": 28945,
   "type": "line",
   "text": "Steps the probe position ($9B, $9D) one step in the spy's facing ($B5EE/$B5F8) and reads the room's object map at that place: the map row for the depth ($1C5E) and column for the across position ($1C77 through $1C8E), in the page ($59,x + 6) of the spy's monitor, keeping the value in $028B,x. Returns 1 for nothing there (0 or $FF); 0 for something when fire is not pressed. With fire pressed: a piece of furniture (1-3) is searched at $7310, unless the spies share a room (then it returns 1); a door slot ($80 + slot) is handled here. An open door goes to $725A. At a closed door: slot 2 of the exit room brings the guard (action $C1, $0244,x, the held object dropped, cause 4) unless the spy holds the briefcase with all four items ($021B-$021E), and the door is then toggled ($72BE); a trap in the flag byte's high nibble (object number \u00d7 16: $60 the water bucket, $80 the gun and string) is disarmed by its remedy in hand (2, the umbrella, for $60; 3, the scissors, for anything higher; 1 for anything lower); without it the trap goes off (action $C0 + object \u2212 4, cause 4) and the code runs on into the disarming, so either way the trap is cleared on both sides of the door, the held object dropped, cause 3 scored and the door toggled; an untrapped door in slots 0-3 with the water bucket (6) or the gun with its string (8) in hand gets that trap set on both sides ($1B and $1D, $9A17); anything else goes on to $725A."
  },
  {
   "address": 29274,
   "type": "line",
   "text": "Fire at an open door, a closed opening between floors, or an untrapped closed door with no trap in hand. Slot 2 of the exit room: with the briefcase holding all four items ($021B-$021E) the door is toggled; without, the guard comes (action $C1, $0244,x, the held object dropped, cause 4) and the door is toggled anyway. Otherwise nothing happens if this spy stands in the doorway ($6B,x = the slot) or the other spy does (the same slot in a shared room, or the matching slot from the room beyond, $BBF2); else effect 2 sounds and the door is opened or closed ($72BE)."
  },
  {
   "address": 29374,
   "type": "line",
   "text": "Opens or closes the door: flips bit 7 of its link byte in this room's record and, unless it is the exit door (slot 2 of the exit room), in the neighbouring room's record too. If the door leads to the other spy's room, the spies are not sharing a room, and the other spy is not stunned, finished or looking at the map, redraws the other spy's room ($8199; not for the exit door)."
  },
  {
   "address": 29456,
   "type": "line",
   "text": "Fire at a piece of furniture ($0F = its slot). Its trap byte ($BBB8, bit 7 set when trapped, bits 0-2 the trap): when the spy holds the trap's remedy (the trap number less 4: the fire bucket, 0, for the bomb, 4; the wire cutters, 1, for the spring, 5) it is removed (scoring cause 3) and the furniture opened; otherwise it goes off (action $C0 + trap number \u2212 4, the trap cleared, the held object dropped, cause 4). With no trap: the gun (object 7) in hand has its string tied to the furniture ($97F5); the bomb or spring (4, 5) in hand is hidden there (trap byte = object + $80; $9A17 counts it as set); otherwise the spy opens it and looks inside ($73A7)."
  },
  {
   "address": 29607,
   "type": "line",
   "text": "Opens or closes the furniture's door (bit 7 of its contents byte $BBB5) and takes what is inside: an item ($73E8), or a remedy (contents with low bits 2: object number from bits 2-3). Plays effect 4 for something found, 3 for nothing."
  },
  {
   "address": 29661,
   "type": "line",
   "text": "Redraws the room ($8199), points ($1B) back at the spy's room ($9861) and clears the fire latch $23,x."
  },
  {
   "address": 29672,
   "type": "line",
   "text": "Looks for one of the five items (room $0210, place $0215) in this room at the furniture slot $0221. None there: a spy holding an item (object $0A or more) puts it down here instead ($7476); otherwise returns minus. Found: item 0 is the briefcase, which collects every item the spy carries ($7425 for each); another item goes into the briefcase if the spy has it, or is carried on its own. The item's place becomes the spy ($80 + spy), and $74F4 makes every item in the briefcase follow it."
  },
  {
   "address": 29733,
   "type": "line",
   "text": "Marks item Y as carried in the spy's briefcase (its bit $148B,y\u22121 in the spy's inventory $79,x) and, if the other spy had it, takes it from the other's inventory (scoring cause 2, the stealing points, for this spy)."
  },
  {
   "address": 29772,
   "type": "line",
   "text": "Four bytes, lda #$04 / sta $67,x, that nothing jumps to: the same two instructions follow at $7450."
  },
  {
   "address": 29776,
   "type": "line",
   "text": "The spy takes item number $0222: the held object becomes $0A + item, the item's place the spy ($80 + spy), effect 4. Returns 1."
  },
  {
   "address": 29814,
   "type": "line",
   "text": "Puts the held item down in this room at furniture slot $0221, where it stays hidden; items in the briefcase go with it ($7494, $74F4). The spy's hand becomes empty ($7B = $FF)."
  },
  {
   "address": 29844,
   "type": "line",
   "text": "Flags ($021A,y = 1) every item at the same place as the briefcase, and when all four are there with it (none of $021B-$021E negative) opens the exit: writes the exit room's number into its door slot 2 ($BBBE) if it was hidden ($FF), and, when the spies are in separate rooms, redraws the other spy's room if the other spy is in the exit room and not finished, stunned or looking at the map."
  },
  {
   "address": 29940,
   "type": "line",
   "text": "Every item flagged as in the briefcase ($021A,y not negative) takes the briefcase's room and place."
  },
  {
   "address": 29963,
   "type": "line",
   "text": "Whether the door at room-record offset Y leads to the room where the other spy is (and the other spy is up and in play). Falls into $7526 if so."
  },
  {
   "address": 29990,
   "type": "line",
   "text": "When the spies share a room and this one is walking or in an action other than type 1 (the spring or the guard; those and the positive states skip the check), checks whether the probe position ($9B across, $9D depth) is within 4 across and 1 deep of the other spy: if so the move is cancelled (the position is put back) and the routine returns 1, else 0. Spies cannot walk through each other."
  },
  {
   "address": 30078,
   "type": "line",
   "text": "The spy goes through to the room at room-record offset Y: lets go of the gun and string (object 8) if it holds it, erasing the string ($7B07), sets the spy's room $5B,x, records the move in its bread-crumb trail ($8A93), marks the room visited in its list for the map ($1DBD/$1DBF), and either starts the shared-room state ($75C5), when the other spy is in that room and neither spy is stunned, or leaves any shared room and draws the new room in the spy's monitor ($7623, $8199, $9861)."
  },
  {
   "address": 30149,
   "type": "line",
   "text": "The two spies are now in one room: $F8 = the spy whose monitor shows it (the one who was there first). Both spies drop what they hold ($99C0), their trapulators close, their fire latches and map flags clear, the room's picture is copied for sharing and the arriving spy's monitor turned off ($7E08, $7D6A), the room drawn ($8199), and the new arrival is moved into that monitor's coordinates: its monitor page $59,x, its floor line $97,x from $1C58, and its sprite rows $C1/$C3 shifted by $1C5A. The spy with the larger depth goes in front ($43, $44)."
  },
  {
   "address": 30243,
   "type": "line",
   "text": "When the shared-room state ends ($F8 not negative): the guest spy (the one that is not $F8) goes back to its own monitor (its page, floor line from $1C58 and sprite rows shifted back by $1C5A), $F8 and $43 become $FF, and a room is redrawn ($8199): the guest's own when this spy is the host, the host's (now without the guest) when this spy is the guest."
  },
  {
   "address": 30307,
   "type": "line",
   "text": "Draws the two spies into the bitmap in the right order. With the spies in separate rooms ($43 negative) it draws the current spy alone ($774E). In a shared room, $43 is the front spy (larger depth): when the order has changed ($43 against $44) the backdrop under the front spy's box is first refreshed from the clean copy of the shared room ($7A03 with $0D = 7). Called for the front spy it does nothing more. Called for the back spy, it draws the back spy into the backdrop itself (destination table $EE00, background from the clean copy $EE60 or $EDA0, mask 7), widens the box to restore ($CB-$CE) over its old and new places, draws the front spy over the backdrop into the bitmap ($7751, skipped while $0242 is set), and copies the backdrop to the bitmap over the rest of the box ($79FD), which shows the back spy behind the front one."
  },
  {
   "address": 30542,
   "type": "line",
   "text": "Draws a spy who has a monitor to itself: works out its box ($776D), then points the drawing loop's source and mask at the standard backdrop pages and draws it ($7751, $77FC)."
  },
  {
   "address": 30545,
   "type": "line",
   "text": "Writes the backdrop page and mask bytes into the shape-drawing loop at $7962/$7963, $795A and $7967/$7968 (self-modified operands) for drawing over the room picture, then draws ($77FC)."
  },
  {
   "address": 30573,
   "type": "line",
   "text": "Works out where a spy appears on screen and the box its frame covers. The screen line ($7F,x and $BE) is depth + floor line + height ($57 + $97 + $55). The screen column ($7D,x and $DD) is $39 (the middle) plus or minus the perspective offset for the across position and depth: the table for the across position (pointer pair $1E0D/$1E27) indexed by depth, so the room narrows with distance. The frame's shape header (pointer pair $B710/$B755 by frame $C9,x) gives its width, which sets the left and right columns $C5/$C7, the old box's columns saved for restoring."
  },
  {
   "address": 30716,
   "type": "line",
   "text": "Draws a spy's frame into the bitmap, strip by strip. The frame header holds the width (byte 0), the strip count (byte 1), the top's offset from the spy's line (byte 2) and the facing it was drawn in (byte 3, into $BC); then two bytes per strip, the row count and the shape number, each strip drawn by $78F1 with the pixel shift of the figure's left edge ($D4 & 3). The figure is clipped at the bottom at line $61,x (or line $BF when that is 0) and, while it walks through a side door, at the door frame's column: left of $5D,x or right of $5F,x nothing is drawn, the partly covered byte masked by $1C33-$1C43. Updates the box's top and bottom lines ($C1/$C3), restoring the lines between the old and new box ($78DE)."
  },
  {
   "address": 30942,
   "type": "line",
   "text": "Restores lines of the room picture where the spy was and no longer is (no shape, shift 0, four bytes wide), through the drawing loop at $7917."
  },
  {
   "address": 30961,
   "type": "line",
   "text": "Draws one strip of a spy's frame: shape number A, with its width from $BA6C. Mirrored frames ($BC = 2) adjust the pixel shift. The four pre-shift tables for the shift ($1BAF-$1BBB) and the shape's data address ($B9E8/$BA2A, written into the loop at $7985) are set up, then each line is drawn at $794C."
  },
  {
   "address": 31052,
   "type": "line",
   "text": "One line of a strip: copies the clean backdrop under the figure's left margin, builds the line's shifted pixels from the shape bytes through the shift tables, and writes each byte into the bitmap as (backdrop AND mask) OR pixels, the mask for each pixel byte coming from $EB00 so that transparent pairs show the room behind. The bitmap and backdrop addresses for the line come from the line tables $EC00 (low byte), $ED00 (bitmap high byte) and $EE00 (backdrop high byte)."
  },
  {
   "address": 31066,
   "type": "line",
   "text": "The operand of and #$FF in the strip-drawing loop: $FF, or 7 while a shared room's back spy is redrawn ($76AE). Written by $76AE and $7751."
  },
  {
   "address": 31074,
   "type": "line",
   "text": "The low byte of lda $ED00,y in the strip-drawing loop: the bitmap page table's low byte, set to 0 by $76A4 and $7753."
  },
  {
   "address": 31075,
   "type": "line",
   "text": "The high byte of lda $ED00,y in the strip-drawing loop: $ED for the bitmap's line table, $EE for the backdrop's ($76A9 and $7758), so the loop can draw into the screen or into the picture behind."
  },
  {
   "address": 31079,
   "type": "line",
   "text": "The low byte of the backdrop line table read at $7966: 0 for the spy's own monitor, $A0 or $60 for the other monitor's picture in a shared room (written at $76B9, $76C6 and $7762)."
  },
  {
   "address": 31080,
   "type": "line",
   "text": "The high byte of the backdrop line table read at $7966: $EE, or $ED with the low byte $A0 (written at $76BE, $76CB and $7767)."
  },
  {
   "address": 31109,
   "type": "line",
   "text": "The low byte of lda $ADDE,x in draw_strip_line: the shape's data address, from $B9E8 (written at $7933)."
  },
  {
   "address": 31110,
   "type": "line",
   "text": "The high byte of the shape-data address at $7984, from $BA2A (written at $7939)."
  },
  {
   "address": 31131,
   "type": "line",
   "text": "The operand of ldx #$00 at $799A in draw_strip_line: the number of pixel bytes skipped at the start of each line, 0 normally (written at $7800) or, past a left door frame's edge, the count from $1C43 (written at $783C). When it is not 0 the beq at $799C falls through and the bits carried over from the last skipped byte are fetched ($799E)."
  },
  {
   "address": 31224,
   "type": "line",
   "text": "Puts X and Y back and returns."
  },
  {
   "address": 31229,
   "type": "line",
   "text": "Sets up for $7A03: Y = the front spy ($43), X = the other, the back one; the box's lines covered by the front spy are left alone."
  },
  {
   "address": 31235,
   "type": "line",
   "text": "Restores the room picture over a box of the screen ($CB-$CE widened to the spy's box), from the backdrop copy, a line at a time ($7A6C). In a shared room it restores only the part that the other spy does not cover, so that one spy's erase does not wipe the other."
  },
  {
   "address": 31340,
   "type": "line",
   "text": "Copies $0F + 1 lines of $D2 + 1 bytes each, starting at line $DC and byte $D0. With $0D negative it copies the backdrop ($EE00 table) to the bitmap ($ED00 table); with $0D positive (7) it copies into the backdrop from the clean copy of a shared room ($EE60 table, or $EDA0 when $0E is negative), the line's low byte masked with $0D."
  },
  {
   "address": 31418,
   "type": "line",
   "text": "Copies a spy's box from the bitmap into the backdrop, so the figure as it stands becomes part of the room picture: done when an action starts, the action's animation then being drawn over a still spy."
  },
  {
   "address": 31495,
   "type": "line",
   "text": "Redraws the string of a gun-and-string trap (object 8) for spy X: erases the old line from the gun ($0204/$0206/$0208/$020A) to the spy's hand ($9E-$AC hold both ends, old and new) by restoring the backdrop along it, then draws the new one. Sets $F3 (something was drawn this pass)."
  },
  {
   "address": 31637,
   "type": "line",
   "text": "Draws a line from ($B3, $B4) to the other end with Bresenham's method: works out the lengths across and down ($AE, $AF), the octant ($B5 bits 0-2) and steps along the longer axis, plotting each point with $7C0F. Bit 3 of A (and $B5) chooses drawing (set) or erasing (clear)."
  },
  {
   "address": 31759,
   "type": "line",
   "text": "Plots one point of the line: from the step counts and octant, the screen position; on erase, copies the byte from the backdrop; on draw, ORs in the pixel pair from $1C2F."
  },
  {
   "address": 31856,
   "type": "line",
   "text": "Entry to draw_shape with no extra offset ($11, $12 = 0), for drawing the room's objects."
  },
  {
   "address": 31870,
   "type": "line",
   "text": "Draws object shape A ($0D) at room position $BF across, $C0 deep (plus offsets $11, $12): its screen line from the depth, floor line and the shape's own offset ($0AB7), its column through the perspective table as for the spies, plus $0A83. Width $0A1B, height $0A4F, data address $09B3/$09E7, written into the loop. Draws with the pixel masks from $EB00: into the bitmap over the backdrop when $EB is 0, or into the backdrop itself when $EB is not 0 (building the room picture)."
  },
  {
   "address": 32002,
   "type": "line",
   "text": "The low byte of ldy $FFFF,x in draw_shape's screen loop: the object shape's data address from $09B3 (written at $7CDB)."
  },
  {
   "address": 32003,
   "type": "line",
   "text": "The high byte of the object-data address at $7D01, from $09E7 (written at $7CDE)."
  },
  {
   "address": 32070,
   "type": "line",
   "text": "The low byte of ldy $0E00,x in draw_shape's backdrop loop: the shape's data address from $09B3 (written at $7D26)."
  },
  {
   "address": 32071,
   "type": "line",
   "text": "The high byte of the object-data address at $7D45, from $09E7 (written at $7D29)."
  },
  {
   "address": 32106,
   "type": "line",
   "text": "Turns off the monitor of the spy who is not shown ($F8 xor 1): its background colour becomes red ($0255,y = 2), its picture is cleared in eight passes of a widening pattern, with short pauses, and its frame's inner edge redrawn; then its bread-crumb strip is blanked ($8B46). Also used with $F8 set by the caller to turn off a given monitor (both of them for the options screen)."
  },
  {
   "address": 32264,
   "type": "line",
   "text": "Copies the shared room's picture from the backdrop of the showing monitor ($F8; the $EE00 line table, nine character rows from line $10 or $70) into the clean-copy pages ($EE60 table for the white spy's monitor, $EDA0 for the black's) used while the spies share it."
  },
  {
   "address": 32329,
   "type": "line",
   "text": "Copies both monitors' room pictures from the bitmap into their backdrop pages, so the spies can be drawn and erased over them."
  },
  {
   "address": 32336,
   "type": "line",
   "text": "Copies one monitor's room picture (nine character rows from line X) from the bitmap to its backdrop page ($EE00)."
  },
  {
   "address": 32378,
   "type": "line",
   "text": "Copies a monitor's whole room picture back from its backdrop: the white spy's from $2E10-$36D7 to the bitmap at $4290 on, the black spy's from $3710-$3FD7 to $5190 on, 200 bytes for each of nine character rows. Wipes both spies off at once."
  },
  {
   "address": 32504,
   "type": "line",
   "text": "Builds the embassy for the chosen level ($022C, 0-7). From the level's tables: the chance that a piece of furniture gets an item ($BCA9, out of 32), the layout ($BC61/$BC69: six door links per room, six bytes a room), the four candidate exit rooms ($BCB1/$BCB9, one picked at random into $0243) and the room count ($BC91, $0225 = count \u2212 1). For each room: copies its six links into the room record, the exit room's slot 2 pointing at itself (the exit door), picks a colour byte at random ($BBF8, with bit 7 for the second floor pattern when slot 5 leads nowhere), and marks every door closed and untrapped. Then, for each door that leads somewhere, chooses its place along the wall at random (0-3, $BB4A or $BB4E) and writes it on both sides ($1D). Then the furniture: up to three pieces, one per wall, each chosen at random from the wall's types ($0911, $BB52) and placed along the wall where the door leaves room ($BB55/$BB58 tables), with its contents (a remedy for some types, $0900) and no trap; rooms are redone until each has a piece with no remedy in it. Then the five items: each goes into a random empty piece of furniture in a room with no item yet, by the level's chance, until all five are placed. With the airport hidden ($0232 = 0) the exit door becomes a wall ($FF) until a briefcase is complete."
  },
  {
   "address": 33177,
   "type": "line",
   "text": "Draws the room of spy X (or of the shared monitor's spy $F8 when the spies share a room) into that monitor's backdrop, ready to be copied to the screen. Points ($1B) at the room's record ($853D), draws the walls and floor ($83D4), clears the room's object map and walls it in ($838B), then draws into the backdrop ($EB = 1) each of the six door slots that has a door (the record's link byte not $FF; bit 7 = open), each marked in the object map with $80 + the slot: slots 0 and 1, the side doors, six places along the depth ($833E); slots 2 and 3, the back and front doors, six places across ($834C); slot 4 a block 2 across and 1 deep; slot 5 a block 8 across and 6 deep when closed, or, when open, a block 8 by 5 marked $86 with one 6 by 5 marked $85 over it. Then each piece of furniture ($BBAB of them): its type's record (pointer pair $0914/$0925) gives the extents and the closed or open shape (bit 7 of its contents), drawn at its across and depth ($BBAF, $BBB2) by $7C70 and marked in the map with its number + 1 ($82F9). Finally sets the monitor's background colour from the low nibble of the room's colour byte ($BBBB) and marks the spy's monitor as needing to be copied to the screen ($F4,x, $F3); in a shared room it also refreshes the clean copy ($7E08)."
  },
  {
   "address": 33475,
   "type": "line",
   "text": "Draws the door in slot X: shape 2X + open flag ($0254), or, for the exit door (slot 2 of the exit room $0243), shape $30, or $32 when the guard is showing ($0244,x), whatever the open flag."
  },
  {
   "address": 33520,
   "type": "line",
   "text": "Marks a block of the object map for the door slot X ($80 + X), A + 1 places across and Y + 1 deep, then falls into mark_block."
  },
  {
   "address": 33529,
   "type": "line",
   "text": "Fills a block of the room's object map with the value $0D: ($27 & $7F) + 1 places across, from $BF rightwards, or ending at $BF when bit 7 of $27 is set, and $28 + 1 deep from $C0. Each map cell's offset is the row for the depth ($1C5E) plus the column for the across position ($1C77 through $1C8E)."
  },
  {
   "address": 33598,
   "type": "line",
   "text": "Marks the six map places of a door in the left or right wall (slot 0 or 1), from depth $C0 backwards (decreasing depth)."
  },
  {
   "address": 33612,
   "type": "line",
   "text": "Marks the six map places of a door in the back or front wall (slot 2 or 3), from across $BF rightwards."
  },
  {
   "address": 33626,
   "type": "line",
   "text": "Writes $80 + X into the object map cell at across $BF (offset by 25) and depth $C0."
  },
  {
   "address": 33656,
   "type": "line",
   "text": "Writes A into the object map cell at column $BF, row $C0 (no offset on the column)."
  },
  {
   "address": 33675,
   "type": "line",
   "text": "Clears the 256-byte object map of the spy's monitor (page $06 + $59,x) and writes $FF along its edges: map columns 0 and $16, and the rows for depths 0 and $18 (map rows 0 and 10). The spies and the search probe read this map to know what is at each place in the room."
  },
  {
   "address": 33748,
   "type": "line",
   "text": "Draws the room's walls and floor into the monitor's backdrop pages (from $2E10 for the white spy, $3710 for the black, from $2562/$2564): the run-length-packed picture at $256A (five character rows), then one of two floor pictures by bit 7 of A (the room's colour byte: $2566/$2568), three rows. Then fills the bottom row with the floor pattern from $278E, closes its corners, and redraws the monitor frame's left and right inner edges."
  },
  {
   "address": 33832,
   "type": "line",
   "text": "The low byte of sta $3F10,x in draw_room_shell's floor loop, set at $8416 with its high byte to the bottom row of the monitor's backdrop."
  },
  {
   "address": 33833,
   "type": "line",
   "text": "The high byte of the floor loop's destination: $36 for the white spy's backdrop, $3F for the black's (written at $8419)."
  },
  {
   "address": 33910,
   "type": "line",
   "text": "The run-length unpacker for the room pictures: copies bytes from the packed source (A/Y, written into the loop) into X character rows of 200 bytes, starting at the destination in the loop's operand ($8498/$84C8). A zero byte is followed by a count, and stands for that many zero bytes."
  },
  {
   "address": 33939,
   "type": "line",
   "text": "The low byte of lda $2716,y in unpack_rows: the packed picture's address, from A (written at $8476)."
  },
  {
   "address": 33940,
   "type": "line",
   "text": "The high byte of unpack_rows' source at $8492, from Y at the start and stepped a page at a time as the data runs on ($847C, $8488, $84B0, $84BC)."
  },
  {
   "address": 33944,
   "type": "line",
   "text": "The low byte of sta $3F10,x in unpack_rows: the first destination row ($83DB, $87AA)."
  },
  {
   "address": 33945,
   "type": "line",
   "text": "The high byte of unpack_rows' destination at $8497, moved down a row (a page) after each 200 bytes ($83E4, $84A2, $84D1, $87B3)."
  },
  {
   "address": 33975,
   "type": "line",
   "text": "The low byte of the second read of the packed source in unpack_rows (lda $2716,y at $84B6, after a zero byte), kept equal to $8493 (written at $8479)."
  },
  {
   "address": 33976,
   "type": "line",
   "text": "The high byte of the second source read at $84B6, kept equal to $8494 ($847F, $848B, $84B3, $84BF)."
  },
  {
   "address": 33992,
   "type": "line",
   "text": "The low byte of sta $3F10,x where unpack_rows writes a run of zeros, kept equal to $8498 ($83DE, $87AD)."
  },
  {
   "address": 33993,
   "type": "line",
   "text": "The high byte of the zero-run destination at $84C7, kept equal to $8499 ($83E7, $84A5, $84D4, $87B6)."
  },
  {
   "address": 34020,
   "type": "line",
   "text": "The screen position of door slot X: for a side door (slot 0 or 1) the column, through $84EB; for any other, the line, from the slot's depth ($BB32) and the monitor's floor line."
  },
  {
   "address": 34027,
   "type": "line",
   "text": "Converts a room position (across Y, depth A) to a screen column: $39 plus or minus the perspective table entry (pointer pair $1E0D/$1E27 by across, indexed by depth)."
  },
  {
   "address": 34076,
   "type": "line",
   "text": "Points ($1B) at the record of room X, through the record address table $BC18 (low) and $BC3C (high)."
  },
  {
   "address": 34087,
   "type": "line",
   "text": "Points ($1D) at the record of room X."
  },
  {
   "address": 34098,
   "type": "line",
   "text": "Points ($1D) at the record of room Y."
  },
  {
   "address": 34109,
   "type": "line",
   "text": "Points ($1B) at the record of room Y."
  },
  {
   "address": 34120,
   "type": "line",
   "text": "Sets the video chip up for play: bank 1 ($DD00: $4000-$7FFF), screen matrix at $6000 and bitmap at $4000 ($D018 = $80), border blue, bitmap mode on with bit 8 of the raster compare cleared ($D011), multicolour ($D016)."
  },
  {
   "address": 34164,
   "type": "line",
   "text": "Builds the play screen before the options: colour RAM and the screen matrix ($85F7), the line tables and the screen's frames ($8CAC), clears the page at $E900 and the sprite area $6400-$653F, then unpacks the first five packed sprite shapes, the trapulator's four sprites and its arrow, into $6400-$653F (sprite pointers $90-$94), each from $152A/$153D with its row count ($1563) and bytes per row ($1550), padded to three bytes a row."
  },
  {
   "address": 34234,
   "type": "line",
   "text": "The low byte of sta $6540 in draw_screen's sprite unpacker, stepped one byte at a time from $6400 ($8591, $85BC, $85CF, $85E5)."
  },
  {
   "address": 34235,
   "type": "line",
   "text": "The high byte of the sprite unpacker's destination at $85B9 ($8598, $85C1, $85D4, $85EE)."
  },
  {
   "address": 34295,
   "type": "line",
   "text": "Clears colour RAM and fills the screen matrix's two monitor halves, $6000 and $61E0 (twelve rows apart), from the same run-length list at $1BCF: pairs of colour byte and count, 96 bytes of them. The matrix holds the multicolour bitmap's colours for each 4 x 8 cell."
  },
  {
   "address": 34324,
   "type": "line",
   "text": "Writes the (value, count) runs from $1BCF to the screen matrix at A/Y."
  },
  {
   "address": 34380,
   "type": "line",
   "text": "Makes shape X face the way $BC asks before it is drawn: shape 0 is left alone; otherwise, if $EA00,x shows the shape facing the other way, records the new facing and mirrors it ($865B)."
  },
  {
   "address": 34395,
   "type": "line",
   "text": "Mirrors shape X left to right in place: for each of its rows (count from $BA6D, width from $BA6C, data at $B9E8/$BA2A) swaps the bytes end for end and reverses the pixel pairs in each through the table at $E800. The spies' frames are stored facing one way and flipped when a spy turns."
  },
  {
   "address": 34491,
   "type": "line",
   "text": "The win: the spy at the exit door with the briefcase holding all four items ($6FB2) gets out. Both clocks stop, both monitors go off ($7D6A), and the winner's monitor turns green ($0255,x = 5) and shows the airport: its screen-matrix cells (pointer pair $21BF/$21C1) are recoloured row by row, 27 cells wide: a border of $5C round nine rows of $1A."
  },
  {
   "address": 34580,
   "type": "line",
   "text": "Adds 40 to the screen-matrix pointer $E5/$E6: the next character row."
  },
  {
   "address": 34594,
   "type": "line",
   "text": "Sets the airport up: clears both object maps, puts the spies' floor lines and monitor pages back, gives the winner to the computer ($0287,x = 1) facing back ($45 = 3), clears every per-spy state, copies the aeroplane's sprite block from $219A/$229A into $6400-$65FF (then the winner's own 64 bytes from $235A or $239A over $6400-$643F), unpacks the airport picture from $F700 (the file S3) into the winner's backdrop ($8476, nine rows) and puts it on screen ($7E7A). The spy stands at across $0E, depth $11; the plane's sprites start at $02C2 = $0C across and the floor line, airport mode on ($02C1 = $80). Then the score ($89AE) and two lines of text: YOUR RANKING: (string $13) and the rank, string $14 + the thousands digit of the score ($02BD), so 0-999 points is A KNEE HIGH SPY and 9000 or more GRAND MASTER SPY ($A18E)."
  },
  {
   "address": 34856,
   "type": "line",
   "text": "The winner walks to the plane by itself: the computer's input $0289,x is $FB (left) until the spy passes across $F0; near the plane's door (across 0-3) it stops once for 20 passes ($021F,x). Each step is a normal spy turn ($6756) with a pause."
  },
  {
   "address": 34909,
   "type": "line",
   "text": "The plane leaves: airport mode $81 moves the plane's sprites, the spy disappears ($7E7A), and voice 1 plays the engine, its frequency ($0005/$0006) rising from $0100 by 2 for 255 steps. For 160 more steps, each with a pause, the plane moves right ($02C2), climbing ($02C3) one line every fourth step once past $4B across, while the engine's pitch keeps rising for the first 61; the volume then fades from 15 to 0. The game waits for fire on either stick (or 256 waits), turns both monitors off, clears colour RAM and starts a new game ($6745)."
  },
  {
   "address": 35127,
   "type": "line",
   "text": "Scores an event for spy X: A is the cause, 0-7, indexing three tables. $1D23 holds the points in BCD, $1D2B whether they are taken away (bit 7), $1D33 the change of time in seconds. The points go on the four-digit BCD score $02BB/$02BD, which stops at 9999, and is held at 0 below zero ($02BF bit 7); the time is added to the pending change $95,x that tick_clock pays out a second at a time with a beep. The causes, as the tables hold them: 0 win a fight +80; 1 set a trap +30 and 10 seconds; 2 take the other spy's item +60; 3 use a remedy +40 and 10 seconds; 4 caught by a trap or the airport guard \u221280 and 20 seconds; 5 lose a fight \u221220 and 10 seconds; 6 look at the map \u221270 and 15 seconds; 7 take a club hit, 3 seconds."
  },
  {
   "address": 35246,
   "type": "line",
   "text": "The winner's score at the airport: adds 7 points for every second left on the clock ($93:$91, minutes and seconds, counted down in BCD), holds a negative score at 0, and draws the four digits ($8A31)."
  },
  {
   "address": 35373,
   "type": "line",
   "text": "The high BCD digit of A: shifts it down and falls into draw_score_digit."
  },
  {
   "address": 35377,
   "type": "line",
   "text": "Draws one digit, A, at digit slot Y: the screen position from $1D3B/$1D49 (white spy) or $1D57/$1D5B (black), the digit's five bitmap bytes from the font pointers $19EA/$1A24 (or $1707/$170A for slot 7, the options screen's numbers), copied by the loop at $8A71."
  },
  {
   "address": 35442,
   "type": "line",
   "text": "The low byte of lda $1ADD,y in draw_score_digit: the digit's glyph, from $19EA or $1707 ($8A59, $8A66)."
  },
  {
   "address": 35443,
   "type": "line",
   "text": "The high byte of the glyph address read at $8A71, from $1A24 or $170A (written at $8A6C)."
  },
  {
   "address": 35445,
   "type": "line",
   "text": "The low byte of sta $4348,y in draw_score_digit: the digit slot's screen address, from $1D3B or $1D57 ($8A3B, $8A47)."
  },
  {
   "address": 35446,
   "type": "line",
   "text": "The high byte of the digit's screen address at $8A74, from $1D49 or $1D5B (written at $8A4D)."
  },
  {
   "address": 35451,
   "type": "line",
   "text": "Empties a spy's \"bread crumb\" trail: ten entries of $FF in its list (pointer pair $1CC1/$1CC3), the position $F6,x back to 0."
  },
  {
   "address": 35475,
   "type": "line",
   "text": "Records a move through a door in the spy's trail. The door's slot (room-record offset / 4) gives the arrow that leads back ($BBF2). If the latest entry is the opposite move ($1CC9), the spy is retracing its steps and the entry is removed; otherwise the arrow is added, the list wrapping after ten."
  },
  {
   "address": 35527,
   "type": "line",
   "text": "Draws the spy's trail under its room, newest on the right, ten places of 16 bytes: each entry's arrow glyph (pointer pair $1CCF/$1CD6; an empty place $FF draws glyph 6, blank), five bytes each. Only on levels 1-4 ($022C below 4): the higher levels have no bread crumbs."
  },
  {
   "address": 35628,
   "type": "line",
   "text": "The low byte of lda $1D19,x in draw_trail: the arrow glyph's top half, from $1CCF (written at $8AEE)."
  },
  {
   "address": 35629,
   "type": "line",
   "text": "The high byte of the arrow glyph's address at $8B2B, from $1CD6 (written at $8AF9)."
  },
  {
   "address": 35631,
   "type": "line",
   "text": "The low byte of sta $5CE8,x in draw_trail: the trail place's screen address, 16 bytes per place from $1CC5 ($8B0D, $8B19)."
  },
  {
   "address": 35632,
   "type": "line",
   "text": "The high byte of the trail place's screen address at $8B2E, from $1CC7 ($8B15, $8B21)."
  },
  {
   "address": 35634,
   "type": "line",
   "text": "The low byte of lda $1D1E,x in draw_trail: the glyph's second half, five bytes on from $8B2C (written at $8AF3)."
  },
  {
   "address": 35635,
   "type": "line",
   "text": "The high byte of the glyph's second half at $8B31 (written at $8AFE)."
  },
  {
   "address": 35637,
   "type": "line",
   "text": "The low byte of sta $5CF0,x in draw_trail: the place's second column, eight bytes on (written at $8B1E)."
  },
  {
   "address": 35638,
   "type": "line",
   "text": "The high byte of the place's second column at $8B34 (written at $8B26)."
  },
  {
   "address": 35654,
   "type": "line",
   "text": "Fills the strip under the monitor with the empty pattern ($55): no trail."
  },
  {
   "address": 35673,
   "type": "line",
   "text": "The low byte of sta $4DE8,x in blank_trail: the start of the spy's trail strip, from $1CC5 (written at $8B49)."
  },
  {
   "address": 35674,
   "type": "line",
   "text": "The high byte of the trail strip's address at $8B58, from $1CC7 (written at $8B4F)."
  },
  {
   "address": 35687,
   "type": "line",
   "text": "Moves the trail position $F6,x on by one, wrapping from 9 to 0."
  },
  {
   "address": 35700,
   "type": "line",
   "text": "Moves the trail position $F6,x back by one, wrapping from 0 to 9."
  },
  {
   "address": 35711,
   "type": "line",
   "text": "The map button. While the map is up ($0237,x set) each call blinks the spy's own room: alternates the cell's picture ($0239,x) and copies its 16 bytes to the cell's place ($023B/$023D). The first time, it turns the spy's monitor off ($7D6A) and draws the map of the level's embassy in it: the level's grid (rooms from $BC71/$BC79, rows $BCA1 and columns $BC99, placed from $1DC9/$1DCB + $BC81/$BC89), one 16-byte cell per room, only for the floor the spy is on ($0226,x). Each room's picture is chosen from four at $1DC1/$1DC5: visited or not (the spy's visited list, $1DBD/$1DBF), with a dot if any of the five items is in it or carried by a spy who is in it. The other spy is not shown."
  },
  {
   "address": 35841,
   "type": "line",
   "text": "Moves the map's drawing position down a row (320 + 64 bytes) and to the next row of the grid."
  },
  {
   "address": 35878,
   "type": "line",
   "text": "Finds the room for this place in the grid (searching the level's room list for the code $0234) and draws its cell, or leaves the place empty; remembers the spy's own room's cell for blinking."
  },
  {
   "address": 35979,
   "type": "line",
   "text": "Moves to the next cell across, then down."
  },
  {
   "address": 36012,
   "type": "line",
   "text": "Builds the drawing tables once, at start-up. $EB00: the mask for each pixel byte, with %11 where a multicolour pixel is 0 (transparent) and %00 elsewhere. $E800: each byte with its four pixel pairs in reverse order, for mirroring. $EC00/$ED00: the bitmap address of each of the 200 screen lines ($4000 + 320 per character row + the line in the row). $EE00, $EE10 and $EE70: the backdrop page for each line of the two monitors ($2E-$36 and $37-$3F). The shift tables: each byte value shifted right by 0, 2, 4 and 6 pixels' worth, high parts in $0400, $0500, $FC00 and $FD00 and the bits pushed out in $F200-$F500, which the spy and shape drawing use to place figures at any pixel."
  },
  {
   "address": 36261,
   "type": "line",
   "text": "Busy-wait: Y times 256 turns of an empty X loop (about 1,280 cycles per unit of Y). X and Y are kept in $024D/$024E and given back unchanged. Used for pauses during animations, sound effects and the options screen."
  },
  {
   "address": 36282,
   "type": "line",
   "text": "A longer busy-wait: A times Y times 256 empty turns (Y starts at 0, so 256), X and Y preserved. Called once at start-up with A = $18 and once at the airport as the plane's engine starts (A = 1)."
  },
  {
   "address": 36310,
   "type": "line",
   "text": "Seeds the five-byte random state $0248-$024C with one value in every byte. In a real game the value is the raster line ($D012) plus the sum of zero page $03-$FF, so it differs every time; in the attract demo ($CFF7 non-zero) it is $AD, the opcode of this routine's own first instruction (lda $8DD6 reads itself), so the demo's embassy and its recorded moves replay identically. Falls through into random."
  },
  {
   "address": 36337,
   "type": "line",
   "text": "The random number generator: a 40-bit state in $0248-$024C, most significant byte first. It keeps the low byte's top three bits, with bit 5 forced on, and clears its other five, doubles the state into $024F-$0253, adds the double to the state (times 3) and adds the double again 16 bits higher (times 131,075 in all), keeping 40 bits. Returns the top byte in A; X and Y preserved. Called from room generation, item placement, the computer player and the fights."
  },
  {
   "address": 36408,
   "type": "line",
   "text": "Start-up synchronisation. Stops the interrupt (mode $0257 = 0), sets up the video ($8548) and the vectors and raster interrupt ($8E6C), then waits, with interrupts off, for eleven raster interrupts in a row by polling $D019 ($0D counts from $0A down past 0). If 1,536 polls (about 18,400 cycles) pass without one it bumps the border colour and starts again. An NTSC frame is 17,095 cycles and a PAL frame 19,656, so on a PAL machine this never finishes: the game hangs here on a garbled screen. On NTSC it returns with interrupts on."
  },
  {
   "address": 36460,
   "type": "line",
   "text": "Points the 6510's own vectors (in the RAM under the KERNAL) at the game: NMI $8FA5 (an RTI, so RESTORE does nothing), reset $8F98, IRQ $8FA6. Stops CIA 1's timer A, writes $2F/$35 to the processor port (BASIC and KERNAL out, I/O in), waits for the top of a frame, sets irq_half $35 to 0, puts the first raster line from raster_lines ($1C5C) into $D012 and enables the raster interrupt alone."
  },
  {
   "address": 36543,
   "type": "line",
   "text": "Puts both spies and the machine into the state every new game starts from: silences sound ($920F), clears the pause, F5 and airport flags, the per-spy timers and status bytes, turns every sprite off and sets them multicolour, unexpanded and in front, clears both clocks (and redraws their digits through $941D), places the four trapulator sprites from $148F-$149A, turns the SID's filter off at full volume, and resets the music driver's per-voice state ($0264-$0281). X counts the two spies, 1 then 0."
  },
  {
   "address": 36760,
   "type": "line",
   "text": "The reset vector while the game runs: puts the processor port back ($37: BASIC, KERNAL and I/O in) and jumps to the KERNAL's own reset at $FCE2, so a reset cartridge or a reset button reboots the machine normally."
  },
  {
   "address": 36773,
   "type": "line",
   "text": "The NMI vector: a bare RTI, so the RESTORE key has no effect."
  },
  {
   "address": 36774,
   "type": "line",
   "text": "The raster interrupt, twice a frame. irq_half $35 flips each time: 0 for the white spy's (upper) half, 1 for the black spy's (lower) half. Each time it sets the next raster line from raster_lines ($1C5C: line $32 = 50 and line $96 = 150) and the background colour for the half beginning from $0255,x, then works by irq_mode $0257. Mode 0: nothing more. Mode 1 (the options screen and other pauses): reads the controls ($94A1), plays the music on the lower half's interrupt ($954E) and the sound effects ($9226). Mode 2 (play): places that half's spy and trapulator sprites, the flash and shake effects, the clocks and red warning light ($9362), the controls, the music, the sound effects, and the airport scene's sprites ($91BC). A non-raster interrupt is acknowledged and ignored."
  },
  {
   "address": 36972,
   "type": "line",
   "text": "Counts down a spy's flash timer $8B,x and, while it runs, turns the background of the half being drawn white ($D021 = 1). The timer is set to 2 with a sound when a spy comes up against something it can act on ($70F3), and by the action and nine-step sequences ($6ABA, $6942). A negative timer is the screen-shake timer instead and is left alone here."
  },
  {
   "address": 36988,
   "type": "line",
   "text": "On the upper half's interrupt (X = 0; with X = 1 it goes straight to place_spy_sprite), so the setting holds for the whole frame: while the white spy's timer $8B has bit 7 set it counts down its low bits, and the horizontal scroll ($D016 bits 0-2) alternates between 0 and 1 every frame, shaking the picture sideways (an explosion). Then goes on to place the half's spy sprite."
  },
  {
   "address": 37028,
   "type": "line",
   "text": "Places the small sprite showing what the spy of the half being drawn ($35) holds, when it holds something ($7B,x not negative; otherwise place_arrow): the held object picks a class from $14A0; the class's x offset, y offset and colour come from the pointer pair $14D8/$14E6; the position is $7D,x (times 2) and $7F,x plus an x nudge (by facing from $151E, or \u221218 for class 2, \u221210 for classes $0C and up). The sprite's data is rebuilt in $6540 or $6580 by $92AC when the class or facing changes. Not drawn (place_arrow instead) while the spy passes through a side door's frame ($5D,x or $5F,x not 0), or while $99,x is set and $55,x is 9-$7F. Sprite 5 for the white spy, 6 for the black ($14D2), pointer $90 + that number."
  },
  {
   "address": 37186,
   "type": "line",
   "text": "The trapulator's selection arrow: while a spy's trapulator is open ($81,x >= $81) its sprite (pointer $94, yellow) is put over the button the spy has chosen, column $0200,x and row $0202,x, the positions read from $14C8, $14CD and $14CB. Otherwise the spy's sprite is turned off."
  },
  {
   "address": 37279,
   "type": "line",
   "text": "The common end of a play interrupt: sound effects ($9226), clock and warning light ($9362), controls ($94A1), the music on the lower half ($954E), and on the upper half the airport scene's sprites ($91BC). Then restores the registers and returns from the interrupt."
  },
  {
   "address": 37302,
   "type": "line",
   "text": "Pulls Y, X and A back and returns from the interrupt."
  },
  {
   "address": 37308,
   "type": "line",
   "text": "The airport scene: while $02C1 has bit 7 set, turns on sprites 0-6 (or 1-6) and places them as one picture at $02C2 (x, doubled) and $02C3 (y) plus the offsets in $21C5 and $21CC, with the ninth x bit from $21D3; their pointers are $90-$96. This is the aeroplane that taxis away with the winner."
  },
  {
   "address": 37391,
   "type": "line",
   "text": "Turns the filter off and the volume up ($D417 = 0, $D418 = $0F) and clears the sound-effect state ($36-$38) and both spies' pending effects ($67, $68)."
  },
  {
   "address": 37414,
   "type": "line",
   "text": "The sound-effect player, on SID voice 1. On the upper half it counts down the note's gate time $37 (then drops the gate bit) and its length $38 (then frees the voice). For the spy of the half ($67,x = effect number, 0 none) an effect of lower priority ($20F3) than the one playing ($36) is dropped; one of equal or higher priority first cuts the playing one off (voice silent, $36-$38 cleared) and starts on that spy's next interrupt, a frame later, writing the effect's seven register bytes (pointer from $20CB/$20DF) to $D400-$D406 and gating it on. The effect's eighth byte holds two nibbles that pick its gate time ($2107) and length ($2117)."
  },
  {
   "address": 37548,
   "type": "line",
   "text": "Rebuilds a spy's overlay sprite ($6540 for the white spy, $6580 for the black, from $1526/$1528) when the class of its held object changes ($3B,x): clears the 64 bytes and copies the shape (number class + 5) from the packed table, a given number of bytes per row and rows (from $152A-$1563, self-modified into the copy loop). Then, for classes below $0C, if the spy faces the other way ($3A against $3D,x), mirrors the sprite through the bit-reversal table at $E800."
  },
  {
   "address": 37610,
   "type": "line",
   "text": "The low byte of sta $6580,x in build_spy_sprite's clearing loop: the spy's overlay sprite, from $1526 (written at $92BE)."
  },
  {
   "address": 37611,
   "type": "line",
   "text": "The high byte of the sprite clearing loop's destination at $92E9, from $1528 (written at $92C7)."
  },
  {
   "address": 37628,
   "type": "line",
   "text": "The low byte of lda $1691,y in build_spy_sprite: the packed shape for the frame class, from $152A (written at $92D2)."
  },
  {
   "address": 37629,
   "type": "line",
   "text": "The high byte of the packed shape's address at $92FB, from $153D (written at $92D8)."
  },
  {
   "address": 37631,
   "type": "line",
   "text": "The low byte of sta $6580,x in build_spy_sprite's copy loop: the same sprite as $92EA (written at $92BB)."
  },
  {
   "address": 37632,
   "type": "line",
   "text": "The high byte of the copy loop's destination at $92FE, from $1528 (written at $92C4)."
  },
  {
   "address": 37730,
   "type": "line",
   "text": "Runs a spy's clock (X = $35) once a frame while $025D,x says it is running. Under two minutes left the red light on the trapulator ($604E for white, $622E for black, in the screen matrix) blinks with the low digit of $8F, and a warning beep (effect 7) sounds each time $8F reaches $40; the black spy's beep is skipped while the white spy also has under two minutes, so the two do not sound together. A pending penalty in $95,x (low 7 bits a count, bit 7 add or take away) moves one second every ten frames with a beep (effect $11), the clock running backwards or forwards meanwhile; otherwise the clock counts down by one in BCD: $8F (frames, 99 to 0), $91 (seconds, 59 to 0), $93 (minutes). At zero it stops the clock ($025D,x = 0) and marks the spy out of time ($025F,x = 1). Falls through to draw the digits."
  },
  {
   "address": 37917,
   "type": "line",
   "text": "Draws a spy's six clock digits (minutes, seconds, frames from $93, $91, $8F) into the trapulator's bitmap through $9460/$9464."
  },
  {
   "address": 37984,
   "type": "line",
   "text": "The high BCD digit of A: shifts it down and falls into draw_digit."
  },
  {
   "address": 37988,
   "type": "line",
   "text": "Draws one clock digit: the screen position for digit slot Y comes from $1D5F/$1D65 (white spy) or $1D6B/$1D71 (black) and the digit's five bitmap bytes from $1D77/$1D81; both addresses are written into the copy loop at $9497, which copies five bytes."
  },
  {
   "address": 38040,
   "type": "line",
   "text": "The low byte of lda $1DB3,y in draw_digit: the clock digit's glyph, from $1D77 (written at $948C)."
  },
  {
   "address": 38041,
   "type": "line",
   "text": "The high byte of the clock glyph's address at $9497, from $1D81 (written at $9492)."
  },
  {
   "address": 38043,
   "type": "line",
   "text": "The low byte of sta $52AA,y in draw_digit: the digit slot's place on the trapulator's clock, from $1D5F or $1D6B ($946F, $947E)."
  },
  {
   "address": 38044,
   "type": "line",
   "text": "The high byte of the clock digit's screen address at $949A, from $1D65 or $1D71 ($9475, $9484)."
  },
  {
   "address": 38049,
   "type": "line",
   "text": "Reads the controls each interrupt. Normally the two joysticks: $DC00 (port 2, the white spy) into $0285 and $DC01 (port 1, the black spy) into $0286. In the attract demo ($CFF7 negative) both read as nothing pressed, and fire on either stick sets bit 7 of $0282 to end the demo. Then the keyboard: F5 (row 0, column 6) sets bit 7 of $0282 (back to the options), RUN/STOP (row 7, column 7) sets bit 6 (pause, not in the demo). S (row 1, column 5), counted once per press through $0284, toggles music_off $0263 and resets the music to the start of its tune."
  },
  {
   "address": 38222,
   "type": "line",
   "text": "The music driver, called on the lower half's interrupt (60 times a second on NTSC). Two voices, X = 1 then 0, each with its SID register pointer from $2402/$2404 and its tune pointer from $2406/$2408. Skipped (and the voice's gate released) while music_off $0263 is set or the voice's bit in $0264 is clear. Otherwise it counts down the note's length $026C,x; while the note lasts it applies the instrument's slide or vibrato ($0270-$027C, stepping the frequency by $0272/$0274 every $0278 frames). When the note ends it reads the next one: three bytes: pitch and octave (note $23E2/$23EE shifted down by the octave), length (via $23DA; a length code of 8 or more ties the note on) and instrument (pointer from $240A/$241A: its control, pulse, attack/decay and sustain/release bytes), with a release between notes. The tune loops at its end ($0268)."
  },
  {
   "address": 38641,
   "type": "line",
   "text": "Clears the gate bit of the voice's control byte ($027E,x) and writes it to the SID, ending the note."
  },
  {
   "address": 38661,
   "type": "line",
   "text": "Puts both spies at the start of a game: in room 0 (set by $7EF8), at depth 12, the white spy 5 to the left of the middle (across $FB) and the black 5 to the right, facing right, standing, with empty hands. Clears every per-spy state, score and counter, the bread-crumb trails ($8A7B), the items' flags ($021A-$021E) and the two visited-room lists ($EF20, $EF50), and sets up the computer player ($9A1F). Then draws room 0 in the white spy's monitor ($8199, $7E7A, $7E49) and blanks the black spy's trail: the spies start together, so the game opens with one monitor showing both."
  },
  {
   "address": 38867,
   "type": "line",
   "text": "Reads the room's object map at the probe position ($25 across, $9D depth) in the spy's monitor page: 0 nothing, $FF wall, $80 + slot a door or opening, otherwise a piece of furniture's number + 1."
  },
  {
   "address": 38901,
   "type": "line",
   "text": "The gun (object 7) at a piece of furniture: the string's fixed end is tied there. Works out the furniture's screen position from its across and depth ($BBAF, $BBB2), its type's closed shape and that shape's offsets ($0A83, $0AB7), and stores it as both ends of the string ($0204/$0206, $0208/$020A, $9E/$A2) so it starts with no length. The spy's object becomes 8, the gun with its string tied."
  },
  {
   "address": 39009,
   "type": "line",
   "text": "Points ($1B) at the record of spy X's room."
  },
  {
   "address": 39015,
   "type": "line",
   "text": "Closes every piece of furniture in the spy's room that is open (bit 7 of its contents byte), with effect 3 if any was. Returns the count."
  },
  {
   "address": 39053,
   "type": "line",
   "text": "After the guard has thrown a spy out: the guard leaves ($0244,x = 0), the exit door in the exit room closes (bit 7 of its slot-2 byte cleared, unless it is hidden), effect 2."
  },
  {
   "address": 39087,
   "type": "line",
   "text": "A routine nothing calls: it would close every open door in the spy's room, on both sides (clearing bit 7 of each link byte here and in the neighbouring room), with effect 2 if any was open, and return 1."
  },
  {
   "address": 39142,
   "type": "line",
   "text": "The open trapulator. On opening ($81,x = $80) the arrow goes to the first button. Every fourth pass the stick moves the arrow over the six buttons, three columns ($0200,x) by two rows ($0202,x), wrapping round at the edges ($14B1-$14BE). Fire, pressed after a release ($81,x = $82), chooses: button 5 is the map ($9973, scoring cause 6); otherwise, when the spy's trap count $85,x is more than twice $0225 (the room count less one) it hears the refusal (effect $0B) and gets nothing; button 3 is the time bomb, which is lit in the spy's room ($0228,x = the room, fuse $022A,x = 200 passes) unless one of the spy's is already burning; the others hand the spy its trap object from $14C2 (4 bomb, 7 gun, 5 spring, 6 water bucket). Choosing closes the trapulator."
  },
  {
   "address": 39317,
   "type": "line",
   "text": "Moves the spy's sprite rows ($C1, $C3) by the difference between the new height A and the old ($55,x)."
  },
  {
   "address": 39324,
   "type": "line",
   "text": "Adds A to the spy's top and bottom sprite rows ($C1, $C3)."
  },
  {
   "address": 39343,
   "type": "line",
   "text": "Adds A to the spy's left and right columns ($C5, $C7): used when a spy walks out of one side of the room and in at the other."
  },
  {
   "address": 39360,
   "type": "line",
   "text": "The spy lets go of what it holds ($7B,x). An item (object $0A and up) is hidden in a random piece of furniture in the room that is not a remedy's place (contents low bits not 2), and the items in the briefcase go with it ($7494, $74F4). The gun with its string tied (8) has its string erased ($7B07). A trap or remedy is lost. The hand becomes empty ($FF)."
  },
  {
   "address": 39447,
   "type": "line",
   "text": "Counts a trap the spy has set: scoring cause 1 (+30 points, 10 seconds) and one more on the spy's trap count $85,x."
  },
  {
   "address": 39455,
   "type": "line",
   "text": "Resets the computer player's memory for both spies (X = 1 and then $9A21 for 0)."
  },
  {
   "address": 39457,
   "type": "line",
   "text": "Clears the computer player's state for spy X ($028D-$02A9, $F110, $F130, $F1CD) and gives it a random order in which to go after the four items: $F131-$F134 hold 1-4 rotated by a random amount."
  },
  {
   "address": 39527,
   "type": "line",
   "text": "The computer's turn for the spy X it controls (the black spy in a one-player game; the attract demo plays both spies from recorded moves instead, $0288 being 0 there): works out a control byte in the joystick's format and leaves it in $0289,x for read_spy_input. Nothing while the spy is in an action or stunned (it lets go of everything, $FF). After a stun its plan is thrown away and started again ($9A1F). A spy frozen by a hit waits. It notices when it has not moved for two turns while pushing the stick ($02B1, $02AF: stuck), keeps its last position ($02B3-$02B7), and, when the spies share a room, fights instead ($A1E1). Otherwise it counts the items in the briefcase ($029A) and works its plan: a stack of tasks for each spy (pointer $02A5,x; per task: kind $F110, flag $F120, target across $F0C0, depth $F0D0, room $F0E0, object or door $F100, and wanted object $F0F0). Throughout, it writes a step number into $D024 (a colour register that bitmap mode does not show), apparently a trace for the programmer."
  },
  {
   "address": 39718,
   "type": "line",
   "text": "Pops the next task. An empty stack makes a new plan ($A746). A task of kind $FF (fetch an object) is skipped when the object is already carried or in the briefcase; otherwise the item is fetched ($A96E)."
  },
  {
   "address": 39817,
   "type": "line",
   "text": "Plans the way to the task's target room ($F0E0): a breadth-first search over the rooms ($A9EF), then the route as a list of doors to walk to ($AB03), stored as waypoints ($F135 across, $F15B depth, $F181 room, $F1A7 door or object; $F1CD,x counts them). The first waypoint becomes the current one ($0299 = its room)."
  },
  {
   "address": 39921,
   "type": "line",
   "text": "Dispatches on the task's kind: 0 open the trapulator or wait ($9C5A), 2 consider setting a trap where it stands ($9E85), otherwise walk the route ($9C00)."
  },
  {
   "address": 39936,
   "type": "line",
   "text": "Walks the route: checks the next stretch for traps ($9D01), gives up the plan when the waypoint's room is past the level's room count or the door or furniture it wants is gone ($9C52: start again), else steers towards it ($A38D)."
  },
  {
   "address": 40009,
   "type": "line",
   "text": "Stores A as the computer's control byte ($0289,x) and points ($1B) back at the spy's room."
  },
  {
   "address": 40018,
   "type": "line",
   "text": "Throws the plan away ($9A1F) and leaves the stick at rest."
  },
  {
   "address": 40026,
   "type": "line",
   "text": "A task done at a standstill: with the map up it waits 40 turns, pressing fire at the end to close it; with the trapulator open it moves the arrow to the button the task wants ($F0C0/$F0D0) and presses fire; standing at a door or furniture it presses fire to search, holding the stick still; otherwise it jiggles: a random direction from $1B88."
  },
  {
   "address": 40193,
   "type": "line",
   "text": "Looks ahead along the route for traps, more carefully the higher the computer's IQ ($0230): below IQ 3 it skips the check three times in four, and it looks at IQ \u2212 1 waypoints (at least one). A door on the route with a trap in its flag byte, or furniture with a trap in its trap byte, makes it find the remedy: a search ($A9EF) for a room holding the right remedy ($02A3 = remedy + 1: 4 for the gun, 3 for the bucket), then a choice from the tables at $1B24-$1B2C, weighing how far away it is and how many items it has, between going round ($9B89), ignoring it, or fetching the remedy first: tasks pushed for the remedy's furniture ($A7D2/$A980), for the object it holds to be put back ($F0F0 = $FF), and for the trip ($A90C). The computer reads the trap bytes directly: it knows where every trap is."
  },
  {
   "address": 40581,
   "type": "line",
   "text": "On reaching a new room on its route, the computer may set a trap there for the other spy: only if it holds no item or only an item it is not carrying in the briefcase, and only when its waypoint is a door it is going through or furniture. For furniture (one chance in four, if not already trapped and not the last useful one) it plans to fetch a bomb or spring and hide it ($A770, Y = 0); for a door (three chances in eight, on rooms other than the exit's back door, the door not trapped) the bucket or gun ($A770, Y = 2). An item in hand is put down first ($9F55)."
  },
  {
   "address": 40789,
   "type": "line",
   "text": "If the computer's spy holds an item (object $0A-$0E), pushes a task to fetch it again later ($F0F0 = item, kind $FF) and returns carry clear; carry set when it holds something else."
  },
  {
   "address": 40830,
   "type": "line",
   "text": "The options screen. Turns both monitors off, colours the text area (colour RAM = $0A on 18 rows of 25 cells) and draws the 18 lines of text, nine (strings 0-8) in the upper monitor from text row 2 and the other nine in the lower from row $0E ($A1A5, strings 0-$11 of the table at $170D/$172C/$174B). Then demo_mode $CFF7 is set from the operand at $A000 (0, unless the record switch at $6603 says 1) and the option cursor is shown on the first line ($A173)."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The operand of lda #$00 at $9FFF, the value the options screen stores in demo_mode $CFF7: start_up copies the record switch $6603 here ($6607). 0 on the disk."
  },
  {
   "address": 40971,
   "type": "line",
   "text": "Waits for the stick. For its first four passes ($04) it acts as if down were pressed, stepping the cursor once round the four options so each value is drawn. The idle count (CFF5 from $58, CFF6 from 3: $58 + 2 \u00d7 256 = 600 rounds of two short waits, the cursor blinking) runs out into the attract demo ($CFF7 = $FF, $A123); $0282 going negative while it waits restarts the options screen ($A056). Up and down (bits 0 and 1 of the white stick, or of the black when the white is idle; $16FB) move the cursor over the four options, wrapping, with effect 4, or $11 when the cursor stays where it is; left and right change the value under the cursor through its pointer ($16F3/$16F7: $022F players, $022D level, $0231 IQ, $0233 hide airport), wrapping between 1 and the option's maximum ($16FF: 2, 8, 5, 2), and redraw its digit ($8A31; the last is drawn as N or Y). Any move with the cursor on the level line redraws the three figures below: rooms (the level's room count, $BC91), traps (twice that) and minutes ($1B16), each as two decimal digits ($A105). Fire starts the game ($A123)."
  },
  {
   "address": 41221,
   "type": "line",
   "text": "Draws A (0-99) as two decimal digits at digit slots Y and Y+1: divides by ten by repeated subtraction, then $8A31 for each digit."
  },
  {
   "address": 41251,
   "type": "line",
   "text": "Leaves the options: both monitors off, colour RAM cleared and the screen's colours put back ($85F7). In the attract demo the game is fixed at level 5 ($022C = 4) with the airport shown, two spies both played from the demo's recorded moves ($022E = 2) and IQ 2. Otherwise the chosen level less one goes to $022C, the hide flag less one to $0232 (0 = hidden), the players and IQ to $022E and $0230. Both clocks get the level's minutes from $1B0E (BCD: 07, 12, 15, 20, 22, 24, 24, 24)."
  },
  {
   "address": 41331,
   "type": "line",
   "text": "Inverts the two bitmap bytes of the option cursor at row $0F (addresses from $16EB/$16EF, offsets $1703), showing or hiding it."
  },
  {
   "address": 41358,
   "type": "line",
   "text": "Draws text string Y from the table at $170D/$172C (length $174B) with its last character at character column $BF, row $BE."
  },
  {
   "address": 41381,
   "type": "line",
   "text": "Draws the text at ($17) from its last character (index Y) leftwards: each screen code's five-byte glyph (pointer pair $19BA/$19F4) is copied into the bitmap at row $BE, column $BF (line address from $EC00/$ED00 plus 8 per column), and the column steps left."
  },
  {
   "address": 41441,
   "type": "line",
   "text": "The computer fighting in a shared room. It closes its trapulator first. With the other spy down or busy it does nothing. Otherwise it works out the gap across the room ($04). After five or more hits taken it considers fleeing ($A30F) unless the other spy is no better off. In club reach ($6CF1) it swings, pressing fire with the stick moving between two directions: how often depends on the IQ ($1B1E,y: a count of turns between changes), and it picks at random between up-down (a head blow) and left-right (a jab). Out of reach it walks to within reach of the other spy: its target across is the other spy's position plus the reach for that depth, less 2 ($B5E0), and a random flag sets how it approaches ($A3DD)."
  },
  {
   "address": 41743,
   "type": "line",
   "text": "Getting away from a losing fight: below IQ 3 it only sometimes thinks of it (half the time at IQ 1, one in sixteen at IQ 2) and then runs in a random direction ($1B88); otherwise, and the rest of the time, it moves away from the other spy, front or back, then left or right, towards the nearest side door, now and then at random."
  },
  {
   "address": 41869,
   "type": "line",
   "text": "Steers towards the current waypoint. Not in its room yet: the waypoint is done ($A67D). Then by state flags in $02A7,x: bit 7 searching furniture ($A513), bit 6 going through a door ($A5E4), bit 5 opening furniture ($A5A1), bit 4 a door in the next room ($A65B); otherwise it walks across and deep to the target ($A3DD), checking first whether it already stands at the object ($A6AF)."
  },
  {
   "address": 41949,
   "type": "line",
   "text": "Walks across ($F135) and deep ($F15B) towards the target position, using a random flag (bit 3 of $02A7,x) to choose which to close first; within 2 of both it has arrived ($A4D4). A spy that has got stuck ($02AF) goes round the obstacle: away from the walls and furniture, down the middle of the room. Back doors and holes are lined up across first, side doors in depth first."
  },
  {
   "address": 42196,
   "type": "line",
   "text": "At the target: in the demo's first moves it waits; a task to stand still ends here; at furniture or a door it starts searching ($A506), else it carries on."
  },
  {
   "address": 42246,
   "type": "line",
   "text": "Searching: presses fire at the object ($02A7 bit 7) and holds the stick still for 8 turns, or walks into a door a few steps ($1B9A by direction) to go through. Otherwise it decides from what it is standing at ($028B,x, the object map value) and what it wanted: the right object starts the next stage, a wrong one sends it on its way in a random direction ($1B88)."
  },
  {
   "address": 42401,
   "type": "line",
   "text": "Opening furniture: presses and releases fire. Once the fire latch is clear the waypoint is done ($A67D); if ten tries ($0292) pass first, the computer gives up and takes a random step ($A5C9)."
  },
  {
   "address": 42441,
   "type": "line",
   "text": "A random step: a random direction from $1B88, and a random flag for the next walk."
  },
  {
   "address": 42468,
   "type": "line",
   "text": "Going through a door: presses fire until the door is open (its link byte's bit 7), giving up after ten tries, then walks through ($A67D). The exit door is handled the same way."
  },
  {
   "address": 42587,
   "type": "line",
   "text": "A waypoint that is a door in this room: if it is open the spy walks into it ($1B91, by door slot); if it is shut it wanders a step."
  },
  {
   "address": 42621,
   "type": "line",
   "text": "The waypoint is reached: the next one from the list ($F1CD,x counts down; $F181, $F135, $F15B, $F1A7) becomes current, or, with none left, the task is done ($02A7 = $FF)."
  },
  {
   "address": 42667,
   "type": "line",
   "text": "Stores A as the computer's control byte, $0289,x."
  },
  {
   "address": 42671,
   "type": "line",
   "text": "Whether the object the computer wants ($F1A7) is in reach: looks at the eight map cells around the spy (offsets $1B76/$1B7F, clamped to the room) for its map value. Returns 0 (with Z set) when found, 1 otherwise."
  },
  {
   "address": 42673,
   "type": "line",
   "text": "The loop of $A6AF from offset Y downwards."
  },
  {
   "address": 42756,
   "type": "line",
   "text": "Carry clear when the spy is within 1 across of the target ($F135)."
  },
  {
   "address": 42773,
   "type": "line",
   "text": "Carry clear when the spy is within 1 deep of the target ($F15B)."
  },
  {
   "address": 42790,
   "type": "line",
   "text": "A + 25: the across position as an unsigned column."
  },
  {
   "address": 42794,
   "type": "line",
   "text": "A + 0: the depth unchanged, kept as a routine to match add_25."
  },
  {
   "address": 42798,
   "type": "line",
   "text": "|A \u2212 $10|, and carry set when it is 2 or more."
  },
  {
   "address": 42810,
   "type": "line",
   "text": "Twelve bytes nothing calls: |A \u2212 $10| compared with $0D, a variant of abs_diff."
  },
  {
   "address": 42822,
   "type": "line",
   "text": "The computer's task stack is empty: it makes a new plan. One time in eight, while the briefcase holds fewer than four items, it goes off to fetch a trap and set it ($A81D, a task for the trapulator button at $1BA3/$1BA9, then the trip, $A90C); otherwise it chooses a goal ($A847)."
  },
  {
   "address": 42864,
   "type": "line",
   "text": "Plans setting a trap at the furniture or door X in this room: Y + a random 0 or 1 picks the trap (Y = 0: bomb or spring; Y = 2: bucket or gun); pushes a trapulator task for its button ($A81D), the trip back to this object ($A7B0), and for the gun also the trip to tie its string."
  },
  {
   "address": 42928,
   "type": "line",
   "text": "The target for setting the trap: for a door ($0B = 2 or 3) the door's place ($A7D2, the gun's string being tied first to a random piece of furniture, $A7FE); for furniture its place ($A980)."
  },
  {
   "address": 42962,
   "type": "line",
   "text": "Pushes a task whose target is door X of this room: its position from the room record ($BBC2) and the slot's fixed coordinate ($BB38), plus the slot's offsets ($BB44, $BB3E), object $80 + X."
  },
  {
   "address": 43006,
   "type": "line",
   "text": "Picks a piece of furniture in the room at random (not the first), or the given one, and pushes the trip to it ($A980)."
  },
  {
   "address": 43037,
   "type": "line",
   "text": "Pushes a task to open the trapulator and choose the button at column $1BA3,y, row $1BA9,y, in the spy's current room."
  },
  {
   "address": 43079,
   "type": "line",
   "text": "Chooses what to do next from what each spy holds (nothing or another object, an item, or the briefcase: $7B and $7C) and how many items the briefcase has ($029A), through the tables $1B3E + $1B41 + $1B44 \u2192 $1B49. The choices: 1 fetch the briefcase (item 0); 2 fetch the next item in its own random order ($F130) that is still loose (in furniture, not carried), or one in the briefcase of the other spy; 3 a trip to the middle of its own room; 4 go to the other spy's room; 5 chase the other spy if the black spy's clock shows fewer minutes than the white's, else go to the exit's room; otherwise go to the exit door itself ($A941). The computer reads the items' rooms and places directly from $0210/$0215: it knows where everything is hidden."
  },
  {
   "address": 43196,
   "type": "line",
   "text": "Choice 1: fetch item 0, the briefcase ($A96E)."
  },
  {
   "address": 43201,
   "type": "line",
   "text": "Choice 2: the first item in the computer's order whose furniture is not trapped, or, failing that, the first not yet in a briefcase."
  },
  {
   "address": 43274,
   "type": "line",
   "text": "Choice 3: a trip to the spy's own room ($A90C with flag 1)."
  },
  {
   "address": 43276,
   "type": "line",
   "text": "Pushes a trip to the middle of the spy's current room (across 0, depth 12), with flag A."
  },
  {
   "address": 43284,
   "type": "line",
   "text": "Choice 4: a trip to the other spy's room."
  },
  {
   "address": 43294,
   "type": "line",
   "text": "Pushes a trip to the middle of room A."
  },
  {
   "address": 43312,
   "type": "line",
   "text": "Choice 5: compares the minutes on the two clocks ($94, the black spy's, against $93): with fewer minutes than the white spy it chases ($A914); otherwise it heads for the exit room. The test assumes the computer is the black spy."
  },
  {
   "address": 43329,
   "type": "line",
   "text": "Pushes the trip to the exit door: slot 2 of the exit room, at its across from the record plus offsets ($BB40, $BB3A, $BB46), task kind 3."
  },
  {
   "address": 43374,
   "type": "line",
   "text": "Pushes a trip to item Y's furniture: its room $0210,y and place $0215,y."
  },
  {
   "address": 43392,
   "type": "line",
   "text": "Pushes a trip to furniture X of the room in ($1B): its across and depth ($BBAF, $BBB2) moved to the side of the piece that faces the room, by its type's size (the type record via $0914/$0925; types 9 and up stand against the back wall and need no offset)."
  },
  {
   "address": 43459,
   "type": "line",
   "text": "Writes the task in $BF (across), $C0 (depth), $02A4 (room), $0D (object or door), $0F (wanted object), $0297 (kind) and $02A0 (flag) at the computer's stack position."
  },
  {
   "address": 43503,
   "type": "line",
   "text": "A breadth-first search over the embassy's rooms from the spy's room for the goal $AA9D tests. $EF80 holds each room's distance (0 unvisited; the start $FF), $EFA6 the room it was reached from and $EFCC the door slot used. Each round looks through every door of every room at the current distance, skipping doors that lead nowhere, trapped doors when $0298 says to avoid them, and the exit room's exit door. Stops at the goal ($02A1 = its distance) or after 35 rounds (sets bit 7 of $0298: no route)."
  },
  {
   "address": 43677,
   "type": "line",
   "text": "The search's goal test for room Y: with $02A3 = 0, the room $02A2 itself; 1-4, a room whose furniture holds remedy $02A3 \u2212 1 (its contents byte $02A3 \u00d7 4 \u2212 2, compared through the self-modified operand at $AAD1); 5 and up, a room where one of items 1-4 lies. Returns 0 (Z set) on the goal, and records the room ($02A2, $029E) and the furniture ($029F)."
  },
  {
   "address": 43729,
   "type": "line",
   "text": "The operand of cmp #$FF in route_goal: the contents byte of the furniture holding the wanted remedy, written at $AAB7 as ($02A3 \u2212 1) \u00d7 4 + 2."
  },
  {
   "address": 43779,
   "type": "line",
   "text": "Turns the search's result into the route: from the goal room back to the spy's room through the \"came from\" list ($EFA6) and its door slots ($EFCC), each step adding a waypoint at the door's position (from the room record and $BB38/$BB44/$BB3E) to $F135, $F15B, $F181 and $F1A7 ($80 + slot), counted in $F1CD,x."
  },
  {
   "address": 43894,
   "type": "line",
   "text": "The spies' shapes, first part: the pixel strips the frames are built from (shapes 1-65; shape 0 is the empty page at $E900), multicolour bitmap bytes row after row, each at the address its entry in $B9E8/$BA2A gives, its width in bytes and its rows in $BA6C/$BA6D. Stored facing one way and mirrored in place when a spy turns ($865B). Draw_strip_line's copy loop is assembled with the address $ADDE, inside this block."
  },
  {
   "address": 44510,
   "type": "line",
   "text": "A point inside the spy shapes that draw_strip_line's loop is assembled with ($ADDE-$AE1D)."
  },
  {
   "address": 44800,
   "type": "line",
   "text": "The spies' shapes, continued ($AF00-$B2FF)."
  },
  {
   "address": 45824,
   "type": "line",
   "text": "The spies' shapes, continued to the end of shape 63 at $B531."
  },
  {
   "address": 46386,
   "type": "line",
   "text": "The facing for each stick reading (low nibble of the control byte, 0 = pressed): 0 right, 1 front, 2 left, 3 back, $FF for none or an impossible pair; diagonals go with the left or right."
  },
  {
   "address": 46402,
   "type": "line",
   "text": "The in-between facing shown when a walking spy turns round ($6D83, old facing \u00d7 4 + new): right to left passes through front (1), front to back through left (2), left to right through back (3), back to front through right (0); $FF for any other turn, which shows none."
  },
  {
   "address": 46418,
   "type": "line",
   "text": "The standing frame for each facing, 0-3 for the white spy and 4-7 for the black: 2, 5, 8, $0B and $0E, $11, $14, $17."
  },
  {
   "address": 46426,
   "type": "line",
   "text": "Added to an animation's frame-list number ($4B) for each spy: 0 (white), 6 (black), so the black spy uses lists 6-11."
  },
  {
   "address": 46428,
   "type": "line",
   "text": "Added to the facing for each spy's standing frame: 0, 4."
  },
  {
   "address": 46430,
   "type": "line",
   "text": "The frame each spy shows at the airport: 5, $11."
  },
  {
   "address": 46432,
   "type": "line",
   "text": "The frame of a sinking spy: $1D (white), $1F (black)."
  },
  {
   "address": 46434,
   "type": "line",
   "text": "The frame of a spy frozen by a hit: $19, $1B (plus 1 every other pass)."
  },
  {
   "address": 46436,
   "type": "line",
   "text": "The spy's frame during an action of type 1 (the spring or the guard), by facing, two bytes per facing (white, black): read at $707D with (facing $45,x \u2212 6)."
  },
  {
   "address": 46448,
   "type": "line",
   "text": "The flash time for each step of the nine-step sequence of action state 2 and up (spy_action), which follows a trap going off."
  },
  {
   "address": 46457,
   "type": "line",
   "text": "The sound effect for each step of the same sequence."
  },
  {
   "address": 46466,
   "type": "line",
   "text": "The frames of the same sequence, two per step (white and black spy)."
  },
  {
   "address": 46484,
   "type": "line",
   "text": "The move for each stick reading: 0 none, 1 right, 2 front, 3 left, 4 back."
  },
  {
   "address": 46500,
   "type": "line",
   "text": "The walking frame for each move, spy and side of the other spy (move \u00d7 4 + side + spy)."
  },
  {
   "address": 46520,
   "type": "line",
   "text": "The club-swing frame for each change of direction in a fight, $FF where the change is no swing."
  },
  {
   "address": 46540,
   "type": "line",
   "text": "For each swing, 0 or 1: which of the two club reaches in $B5E0 it has."
  },
  {
   "address": 46560,
   "type": "line",
   "text": "The club's reach across the room, by depth (two entries for each band of four depths, index (depth / 2) AND $FE) and swing kind ($B5CC)."
  },
  {
   "address": 46574,
   "type": "line",
   "text": "The probe's step across for each facing: +1, 0, \u22121, 0, then zeros."
  },
  {
   "address": 46584,
   "type": "line",
   "text": "The probe's step in depth for each facing: 0, +1, 0, \u22121."
  },
  {
   "address": 46594,
   "type": "line",
   "text": "Low bytes of the 12 animation sequences' records ($B61A-$B655), by facing and kind: walking right, front, left, back, climbing and others."
  },
  {
   "address": 46606,
   "type": "line",
   "text": "High bytes of the animation sequence records."
  },
  {
   "address": 46618,
   "type": "line",
   "text": "The animation sequences, five bytes each: the number of steps less one, the frame list ($B6B0/$B6BC, 0-5, plus 6 for the black spy from $B55A), and which across, height and depth step tables to use."
  },
  {
   "address": 46678,
   "type": "line",
   "text": "The five across step tables' addresses, low ($B660-$B673)."
  },
  {
   "address": 46683,
   "type": "line",
   "text": "The across step tables' addresses, high; the tables follow."
  },
  {
   "address": 46708,
   "type": "line",
   "text": "The five height step tables' addresses, low ($B67E-$B691)."
  },
  {
   "address": 46713,
   "type": "line",
   "text": "The height step tables' addresses, high; the tables follow."
  },
  {
   "address": 46738,
   "type": "line",
   "text": "The five depth step tables' addresses, low ($B69C-$B6AF)."
  },
  {
   "address": 46743,
   "type": "line",
   "text": "The depth step tables' addresses, high; the tables follow."
  },
  {
   "address": 46768,
   "type": "line",
   "text": "The 12 sequences' frame lists' addresses, low ($B6C8-$B70F, six frames each)."
  },
  {
   "address": 46780,
   "type": "line",
   "text": "The frame lists' addresses, high; the lists follow from $B6C8."
  },
  {
   "address": 46864,
   "type": "line",
   "text": "Low bytes of the 69 spy frames' headers ($B79A-$B9EA)."
  },
  {
   "address": 46933,
   "type": "line",
   "text": "High bytes of the spy frames' headers."
  },
  {
   "address": 47002,
   "type": "line",
   "text": "The spy frames: per frame a header of width, strip count and height, then three bytes per strip (shape number, pixel shift, rows), drawn by draw_spy_shape. Frames 0-$17 stand and walk; the rest are the fight, flinch, fall, climbing and trap frames."
  },
  {
   "address": 47592,
   "type": "line",
   "text": "Low bytes of the 66 spy shapes' addresses (shape 0, the empty page $E900; 1-65 from $AB76)."
  },
  {
   "address": 47658,
   "type": "line",
   "text": "High bytes of the spy shapes' addresses."
  },
  {
   "address": 47724,
   "type": "line",
   "text": "Each spy shape's width (bits 2-7: bytes less one; bits 0-1 a shift for mirroring) and rows less one, two bytes per shape."
  },
  {
   "address": 47725,
   "type": "line",
   "text": "The rows-less-one byte of each spy shape's size pair (read at $BA6D + 2 \u00d7 shape)."
  },
  {
   "address": 47856,
   "type": "line",
   "text": "The way each of the 66 spy shapes faces as stored: copied to $EA00 at every new game, after the shapes mirrored in the last game are turned back."
  },
  {
   "address": 47922,
   "type": "line",
   "text": "The depth or across position of each door slot's opening: $E8 and $18 for the side walls, then the back and front, the openings between floors."
  },
  {
   "address": 47928,
   "type": "line",
   "text": "The across position of the side doors (left $E7, right $19), for the computer's targets."
  },
  {
   "address": 47930,
   "type": "line",
   "text": "The computer's target depth offsets for door slots, read with the exit door."
  },
  {
   "address": 47934,
   "type": "line",
   "text": "The computer's target across offsets for each door slot."
  },
  {
   "address": 47936,
   "type": "line",
   "text": "More across offsets, read for the exit door."
  },
  {
   "address": 47940,
   "type": "line",
   "text": "The computer's target depth offsets for each door slot."
  },
  {
   "address": 47942,
   "type": "line",
   "text": "Depth offsets read for the exit door."
  },
  {
   "address": 47946,
   "type": "line",
   "text": "The four possible places for a side door along its wall."
  },
  {
   "address": 47950,
   "type": "line",
   "text": "The four possible places for a back or front door."
  },
  {
   "address": 47954,
   "type": "line",
   "text": "The random mask for each wall's furniture choice: 3, 3, 7."
  },
  {
   "address": 47957,
   "type": "line",
   "text": "The furniture placement tables' addresses for each wall, low ($BB5B, $BB6F, $BB83)."
  },
  {
   "address": 47960,
   "type": "line",
   "text": "The placement tables' addresses, high; the tables follow, giving a position along the wall for each door place and random number ($FF: no room for one)."
  },
  {
   "address": 48043,
   "type": "line",
   "text": "The room record's offset of the furniture count, $18. The room record layout, 41 bytes per room at $E000: four bytes for each of six door slots ($00-$17: link, place, mark and flags with the trap in the high nibble), the furniture count ($18), five bytes for each of up to three pieces ($19-$27: type, across, depth, contents, trap) and the colour byte ($28)."
  },
  {
   "address": 48044,
   "type": "line",
   "text": "The offsets of the three pieces' types: $19, $1E, $23."
  },
  {
   "address": 48047,
   "type": "line",
   "text": "The offsets of the pieces' across positions."
  },
  {
   "address": 48050,
   "type": "line",
   "text": "The offsets of the pieces' depths."
  },
  {
   "address": 48053,
   "type": "line",
   "text": "The offsets of the pieces' contents (bit 7: open)."
  },
  {
   "address": 48056,
   "type": "line",
   "text": "The offsets of the pieces' trap bytes."
  },
  {
   "address": 48059,
   "type": "line",
   "text": "The offset of the room's colour byte, $28."
  },
  {
   "address": 48060,
   "type": "line",
   "text": "The offsets of the six door slots' link bytes: 0, 4, 8, $0C, $10, $14."
  },
  {
   "address": 48061,
   "type": "line",
   "text": "The offset of slot 1's link byte (the right wall door): 4."
  },
  {
   "address": 48062,
   "type": "line",
   "text": "The offset of slot 2's link byte (the back wall door, the exit's slot): 8."
  },
  {
   "address": 48063,
   "type": "line",
   "text": "The offset of slot 3's link byte (the front): $0C."
  },
  {
   "address": 48064,
   "type": "line",
   "text": "The offset of slot 4's link byte: $10."
  },
  {
   "address": 48065,
   "type": "line",
   "text": "The offset of slot 5's link byte: $14."
  },
  {
   "address": 48066,
   "type": "line",
   "text": "The offsets of the door slots' place bytes."
  },
  {
   "address": 48068,
   "type": "line",
   "text": "The offset of slot 2's place byte, read for the exit door; then slots 3-5."
  },
  {
   "address": 48072,
   "type": "line",
   "text": "The offsets of the door slots' third bytes."
  },
  {
   "address": 48078,
   "type": "line",
   "text": "The offsets of the door slots' flag bytes (trap in the high nibble)."
  },
  {
   "address": 48080,
   "type": "line",
   "text": "The offset of slot 2's flag byte, $0B, read when build_embassy checks the back wall."
  },
  {
   "address": 48081,
   "type": "line",
   "text": "The offsets of slots 3-5's flag bytes."
  },
  {
   "address": 48084,
   "type": "line",
   "text": "The offset of the matching door in the neighbouring room for each slot: left and right, back and front, and the two floor openings swap."
  },
  {
   "address": 48090,
   "type": "line",
   "text": "The offsets of the matching door's place byte (six), then of its third byte (six)."
  },
  {
   "address": 48102,
   "type": "line",
   "text": "The offsets of the matching door's flag byte."
  },
  {
   "address": 48108,
   "type": "line",
   "text": "The depth a spy is put at on going through each kind of door."
  },
  {
   "address": 48114,
   "type": "line",
   "text": "The bread-crumb arrow for leaving by each door slot: the way back is the opposite slot."
  },
  {
   "address": 48120,
   "type": "line",
   "text": "32 colour bytes, one picked at random for each room: the low nibble is the room's background colour, bit 7 the second floor picture."
  },
  {
   "address": 48152,
   "type": "line",
   "text": "The 36 room records' addresses, low: $E000 + 41 \u00d7 room."
  },
  {
   "address": 48188,
   "type": "line",
   "text": "The room records' addresses, high."
  },
  {
   "address": 48224,
   "type": "line",
   "text": "The bytes per room in a level layout: 6."
  },
  {
   "address": 48225,
   "type": "line",
   "text": "Each level's layout address, low (high at $BC69)."
  },
  {
   "address": 48233,
   "type": "line",
   "text": "Each level's layout address, high."
  },
  {
   "address": 48241,
   "type": "line",
   "text": "Each level's list of map positions, low (high at $BC79)."
  },
  {
   "address": 48249,
   "type": "line",
   "text": "Each level's map position list, high."
  },
  {
   "address": 48257,
   "type": "line",
   "text": "Each level's map offset from the monitor's map origin, low."
  },
  {
   "address": 48265,
   "type": "line",
   "text": "Each level's map offset, high."
  },
  {
   "address": 48273,
   "type": "line",
   "text": "Each level's room count: 6, 13, 20, 33, 35, 36, 34, 36."
  },
  {
   "address": 48281,
   "type": "line",
   "text": "Each level's map width less one."
  },
  {
   "address": 48289,
   "type": "line",
   "text": "Each level's map height less one."
  },
  {
   "address": 48297,
   "type": "line",
   "text": "Each level's chance, out of 32, that an empty piece of furniture gets an item when the items are placed: 8, 6, 4, then 2."
  },
  {
   "address": 48305,
   "type": "line",
   "text": "Each level's list of four candidate exit rooms, low ($BCC1-$BCE0)."
  },
  {
   "address": 48313,
   "type": "line",
   "text": "The candidate lists' addresses, high."
  },
  {
   "address": 48321,
   "type": "line",
   "text": "The four rooms that may hold the exit, for each level in turn."
  },
  {
   "address": 48353,
   "type": "line",
   "text": "Level 4's embassy: 33 rooms of six door links."
  },
  {
   "address": 48551,
   "type": "line",
   "text": "Level 4's map positions."
  },
  {
   "address": 48584,
   "type": "line",
   "text": "Level 6's embassy: 36 rooms of six door links."
  },
  {
   "address": 48800,
   "type": "line",
   "text": "Level 6's map positions."
  },
  {
   "address": 48836,
   "type": "line",
   "text": "A fragment of the original assembler's symbol table, left in memory when the file was saved: each entry a length byte ($80 + the name's length), the name and its address. It names the computer player's fighting and steering code: CMB3 $A255, ASWNGINT $A27B, ACMBLTRT $A29A, AUTOSWNG $A29E, AUTOSWG1-3 $A2AE-$A2B3, HOMECMBT $A2B6 and HOMECMB0-3, UNHOMCMB $A30F (getting away from a fight) with UNHOMIQ2 $A323 and UNHOMIQ1 $A32A (its IQ 2 and IQ 1 branches), UNHOMC00 to UNHOMCB9, and MOVEHOME $A38D (steering to the target) with MOVEHM00 and MOVEHOM0. The routine at $BFF0 was written over its last entries."
  },
  {
   "address": 49136,
   "type": "line",
   "text": "Clears the spy's ladder state ($99,x = 0) and waits (delay, Y): called when a stun ends, before the spy is moved."
  },
  {
   "address": 49143,
   "type": "line",
   "text": "The table's last bytes after the routine at $BFF0: the end of an entry EHOM2 ($A3B5) and the start of another."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "The attract demo's recorded moves for the white spy: the control byte of each run (stick bits and fire), read with the counts at $C400 by spy_turn."
  },
  {
   "address": 50176,
   "type": "line",
   "text": "The white spy's run lengths: how many of its turns each value in $C000 lasts."
  },
  {
   "address": 51200,
   "type": "line",
   "text": "The demo's recorded control bytes for the black spy."
  },
  {
   "address": 52224,
   "type": "line",
   "text": "The black spy's run lengths, to $CFF4."
  },
  {
   "address": 63232,
   "type": "line",
   "text": "The airport picture (file S3), packed with the zero-run coding: nine character rows of 200 bytes unpacked into the winner's backdrop by airport_scene. The packed data ends at $FBC3."
  },
  {
   "address": 64256,
   "type": "line",
   "text": "The airport picture's packed data, continued from $FB00 to its end at $FBC3."
  },
  {
   "address": 64452,
   "type": "line",
   "text": "The rest of the file S3 after the packed picture, $FBC4-$FBFF: not read."
  }
 ]
}