{
 "schema": 1,
 "platform": "apple2",
 "game": "choplifter",
 "build": "Broderbund's original 1982 disk: Choplifter.woz (SHA-1 1c498365...41efc94) from archive.org's A Woz A Day collection, item wozaday_Choplifter, run on an Apple II Plus; analysed at the loader's hand-over to $0800 (orientation.md)",
 "source": "live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    49152,
    53247,
    "I/O and the cards' ROM"
   ],
   [
    53248,
    65535,
    "the ROM, or the language card's RAM"
   ],
   [
    512,
    2047,
    "the loader's stages, over the input buffer, page 3 and text page 1: the boot code that reads the disk, checks the Monitor ROM and sums the game (orientation.md, \"The loader\"). Its error printer at $0320 stays in memory as the BRK and RESET handler, but the game never calls it (not the game's)"
   ],
   [
    8192,
    16383,
    "hi-res page 1, the screen, drawn on every other frame. As loaded it holds the loading screen, the same picture as page 2: the counters' bar, the title lettering over the stars and the planet, and the ground. The attract mode blackens the sky before its first frame, a game redraws the bar, and the scenery and every object are drawn each frame; the ground band stays as loaded, patched by erase boxes of the same colour (runtime: the screen)"
   ],
   [
    16384,
    24575,
    "hi-res page 2, the other screen, drawn on in turn with page 1. As loaded it holds the same loading screen, byte for byte (runtime: the screen)"
   ],
   [
    53248,
    65535,
    "the language card's RAM, which the game never switches in. The loader reads $C083 twice at $03A3, which switches the card in to be read and written; as the hand-over leaves it, $E000-$FFFF holds the ROM's bytes with the RESET vector ($FFFC) pointing at the loader's error printer, $0320, and $D000-$DFFF holds $FF (the loader's, not the game's)"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   768,
   1024,
   2048,
   3072,
   8192,
   16384,
   24576,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2047,
   "type": "Undefined"
  },
  {
   "start": 2048,
   "end": 2061,
   "type": "Code"
  },
  {
   "start": 2062,
   "end": 2063,
   "type": "Address"
  },
  {
   "start": 2064,
   "end": 2066,
   "type": "Code"
  },
  {
   "start": 2067,
   "end": 2068,
   "type": "Address"
  },
  {
   "start": 2069,
   "end": 2091,
   "type": "Code"
  },
  {
   "start": 2092,
   "end": 2093,
   "type": "Address"
  },
  {
   "start": 2094,
   "end": 2096,
   "type": "Code"
  },
  {
   "start": 2097,
   "end": 2099,
   "type": "Byte"
  },
  {
   "start": 2100,
   "end": 2112,
   "type": "Code"
  },
  {
   "start": 2113,
   "end": 2116,
   "type": "Byte"
  },
  {
   "start": 2117,
   "end": 2173,
   "type": "Code"
  },
  {
   "start": 2174,
   "end": 2175,
   "type": "Address"
  },
  {
   "start": 2176,
   "end": 2178,
   "type": "Code"
  },
  {
   "start": 2179,
   "end": 2180,
   "type": "Address"
  },
  {
   "start": 2181,
   "end": 2370,
   "type": "Code"
  },
  {
   "start": 2371,
   "end": 2372,
   "type": "Address"
  },
  {
   "start": 2373,
   "end": 2375,
   "type": "Code"
  },
  {
   "start": 2376,
   "end": 2377,
   "type": "Address"
  },
  {
   "start": 2378,
   "end": 2414,
   "type": "Code"
  },
  {
   "start": 2415,
   "end": 2416,
   "type": "Address"
  },
  {
   "start": 2417,
   "end": 2445,
   "type": "Code"
  },
  {
   "start": 2446,
   "end": 2447,
   "type": "Address"
  },
  {
   "start": 2448,
   "end": 2450,
   "type": "Code"
  },
  {
   "start": 2451,
   "end": 2453,
   "type": "Byte"
  },
  {
   "start": 2454,
   "end": 2466,
   "type": "Code"
  },
  {
   "start": 2467,
   "end": 2470,
   "type": "Byte"
  },
  {
   "start": 2471,
   "end": 2500,
   "type": "Code"
  },
  {
   "start": 2501,
   "end": 2502,
   "type": "Byte"
  },
  {
   "start": 2503,
   "end": 2532,
   "type": "Code"
  },
  {
   "start": 2533,
   "end": 2534,
   "type": "Address"
  },
  {
   "start": 2535,
   "end": 2537,
   "type": "Code"
  },
  {
   "start": 2538,
   "end": 2540,
   "type": "Byte"
  },
  {
   "start": 2541,
   "end": 2781,
   "type": "Code"
  },
  {
   "start": 2782,
   "end": 2782,
   "type": "Undefined"
  },
  {
   "start": 2783,
   "end": 2910,
   "type": "Byte"
  },
  {
   "start": 2911,
   "end": 3040,
   "type": "Code"
  },
  {
   "start": 3041,
   "end": 3043,
   "type": "Byte"
  },
  {
   "start": 3044,
   "end": 3049,
   "type": "Code"
  },
  {
   "start": 3050,
   "end": 3052,
   "type": "Byte"
  },
  {
   "start": 3053,
   "end": 3070,
   "type": "Code"
  },
  {
   "start": 3071,
   "end": 3072,
   "type": "Address"
  },
  {
   "start": 3073,
   "end": 3315,
   "type": "Code"
  },
  {
   "start": 3316,
   "end": 3318,
   "type": "Byte"
  },
  {
   "start": 3319,
   "end": 3326,
   "type": "Code"
  },
  {
   "start": 3327,
   "end": 3328,
   "type": "Address"
  },
  {
   "start": 3329,
   "end": 3334,
   "type": "Code"
  },
  {
   "start": 3335,
   "end": 3336,
   "type": "Address"
  },
  {
   "start": 3337,
   "end": 3354,
   "type": "Code"
  },
  {
   "start": 3355,
   "end": 3355,
   "type": "Byte"
  },
  {
   "start": 3356,
   "end": 3381,
   "type": "Code"
  },
  {
   "start": 3382,
   "end": 3383,
   "type": "Address"
  },
  {
   "start": 3384,
   "end": 3472,
   "type": "Code"
  },
  {
   "start": 3473,
   "end": 3473,
   "type": "Byte"
  },
  {
   "start": 3474,
   "end": 3641,
   "type": "Code"
  },
  {
   "start": 3642,
   "end": 3642,
   "type": "Byte"
  },
  {
   "start": 3643,
   "end": 3860,
   "type": "Code"
  },
  {
   "start": 3861,
   "end": 3873,
   "type": "Undefined"
  },
  {
   "start": 3874,
   "end": 4095,
   "type": "Byte"
  },
  {
   "start": 4096,
   "end": 4621,
   "type": "Code"
  },
  {
   "start": 4622,
   "end": 4643,
   "type": "Byte"
  },
  {
   "start": 4644,
   "end": 5849,
   "type": "Code"
  },
  {
   "start": 5850,
   "end": 5853,
   "type": "Byte"
  },
  {
   "start": 5854,
   "end": 6613,
   "type": "Code"
  },
  {
   "start": 6614,
   "end": 6615,
   "type": "Byte"
  },
  {
   "start": 6616,
   "end": 7169,
   "type": "Code"
  },
  {
   "start": 7170,
   "end": 7569,
   "type": "Byte"
  },
  {
   "start": 7570,
   "end": 24575,
   "type": "Undefined"
  },
  {
   "start": 24576,
   "end": 25132,
   "type": "Code"
  },
  {
   "start": 25133,
   "end": 25134,
   "type": "Address"
  },
  {
   "start": 25135,
   "end": 25158,
   "type": "Code"
  },
  {
   "start": 25159,
   "end": 25160,
   "type": "Address"
  },
  {
   "start": 25161,
   "end": 25185,
   "type": "Code"
  },
  {
   "start": 25186,
   "end": 25187,
   "type": "Address"
  },
  {
   "start": 25188,
   "end": 25227,
   "type": "Code"
  },
  {
   "start": 25228,
   "end": 25229,
   "type": "Byte"
  },
  {
   "start": 25230,
   "end": 25264,
   "type": "Code"
  },
  {
   "start": 25265,
   "end": 25266,
   "type": "Address"
  },
  {
   "start": 25267,
   "end": 25310,
   "type": "Code"
  },
  {
   "start": 25311,
   "end": 25312,
   "type": "Address"
  },
  {
   "start": 25313,
   "end": 25575,
   "type": "Code"
  },
  {
   "start": 25576,
   "end": 25577,
   "type": "Byte"
  },
  {
   "start": 25578,
   "end": 25909,
   "type": "Code"
  },
  {
   "start": 25910,
   "end": 25913,
   "type": "Byte"
  },
  {
   "start": 25914,
   "end": 26062,
   "type": "Code"
  },
  {
   "start": 26063,
   "end": 26064,
   "type": "Address"
  },
  {
   "start": 26065,
   "end": 26076,
   "type": "Code"
  },
  {
   "start": 26077,
   "end": 26078,
   "type": "Address"
  },
  {
   "start": 26079,
   "end": 26084,
   "type": "Code"
  },
  {
   "start": 26085,
   "end": 26086,
   "type": "Address"
  },
  {
   "start": 26087,
   "end": 26116,
   "type": "Code"
  },
  {
   "start": 26117,
   "end": 26118,
   "type": "Address"
  },
  {
   "start": 26119,
   "end": 26121,
   "type": "Code"
  },
  {
   "start": 26122,
   "end": 26123,
   "type": "Address"
  },
  {
   "start": 26124,
   "end": 26156,
   "type": "Code"
  },
  {
   "start": 26157,
   "end": 26158,
   "type": "Address"
  },
  {
   "start": 26159,
   "end": 26174,
   "type": "Code"
  },
  {
   "start": 26175,
   "end": 26176,
   "type": "Address"
  },
  {
   "start": 26177,
   "end": 26454,
   "type": "Code"
  },
  {
   "start": 26455,
   "end": 26466,
   "type": "Undefined"
  },
  {
   "start": 26467,
   "end": 26734,
   "type": "Code"
  },
  {
   "start": 26735,
   "end": 26755,
   "type": "Undefined"
  },
  {
   "start": 26756,
   "end": 26840,
   "type": "Code"
  },
  {
   "start": 26841,
   "end": 26852,
   "type": "Undefined"
  },
  {
   "start": 26853,
   "end": 27880,
   "type": "Byte"
  },
  {
   "start": 27881,
   "end": 27885,
   "type": "Undefined"
  },
  {
   "start": 27886,
   "end": 28671,
   "type": "Byte"
  },
  {
   "start": 28672,
   "end": 28708,
   "type": "Undefined"
  },
  {
   "start": 28709,
   "end": 29328,
   "type": "Byte"
  },
  {
   "start": 29329,
   "end": 29394,
   "type": "Undefined"
  },
  {
   "start": 29395,
   "end": 29424,
   "type": "Byte"
  },
  {
   "start": 29425,
   "end": 29473,
   "type": "Undefined"
  },
  {
   "start": 29474,
   "end": 29719,
   "type": "Code"
  },
  {
   "start": 29720,
   "end": 29747,
   "type": "Undefined"
  },
  {
   "start": 29748,
   "end": 30091,
   "type": "Code"
  },
  {
   "start": 30092,
   "end": 30093,
   "type": "Byte"
  },
  {
   "start": 30094,
   "end": 30347,
   "type": "Code"
  },
  {
   "start": 30348,
   "end": 30363,
   "type": "Undefined"
  },
  {
   "start": 30364,
   "end": 30474,
   "type": "Code"
  },
  {
   "start": 30475,
   "end": 30476,
   "type": "Byte"
  },
  {
   "start": 30477,
   "end": 30845,
   "type": "Code"
  },
  {
   "start": 30846,
   "end": 30890,
   "type": "Undefined"
  },
  {
   "start": 30891,
   "end": 30962,
   "type": "Code"
  },
  {
   "start": 30963,
   "end": 30964,
   "type": "Byte"
  },
  {
   "start": 30965,
   "end": 30986,
   "type": "Code"
  },
  {
   "start": 30987,
   "end": 30987,
   "type": "Byte"
  },
  {
   "start": 30988,
   "end": 31098,
   "type": "Code"
  },
  {
   "start": 31099,
   "end": 31099,
   "type": "Byte"
  },
  {
   "start": 31100,
   "end": 31484,
   "type": "Code"
  },
  {
   "start": 31485,
   "end": 31486,
   "type": "Address"
  },
  {
   "start": 31487,
   "end": 31489,
   "type": "Code"
  },
  {
   "start": 31490,
   "end": 31491,
   "type": "Address"
  },
  {
   "start": 31492,
   "end": 31500,
   "type": "Code"
  },
  {
   "start": 31501,
   "end": 31502,
   "type": "Address"
  },
  {
   "start": 31503,
   "end": 31542,
   "type": "Code"
  },
  {
   "start": 31543,
   "end": 31544,
   "type": "Address"
  },
  {
   "start": 31545,
   "end": 31547,
   "type": "Code"
  },
  {
   "start": 31548,
   "end": 31549,
   "type": "Address"
  },
  {
   "start": 31550,
   "end": 31558,
   "type": "Code"
  },
  {
   "start": 31559,
   "end": 31560,
   "type": "Address"
  },
  {
   "start": 31561,
   "end": 31567,
   "type": "Code"
  },
  {
   "start": 31568,
   "end": 31576,
   "type": "Undefined"
  },
  {
   "start": 31577,
   "end": 31867,
   "type": "Code"
  },
  {
   "start": 31868,
   "end": 31869,
   "type": "Address"
  },
  {
   "start": 31870,
   "end": 31872,
   "type": "Code"
  },
  {
   "start": 31873,
   "end": 31874,
   "type": "Address"
  },
  {
   "start": 31875,
   "end": 31900,
   "type": "Code"
  },
  {
   "start": 31901,
   "end": 31901,
   "type": "Byte"
  },
  {
   "start": 31902,
   "end": 32136,
   "type": "Code"
  },
  {
   "start": 32137,
   "end": 32138,
   "type": "Address"
  },
  {
   "start": 32139,
   "end": 32141,
   "type": "Code"
  },
  {
   "start": 32142,
   "end": 32143,
   "type": "Address"
  },
  {
   "start": 32144,
   "end": 32156,
   "type": "Code"
  },
  {
   "start": 32157,
   "end": 32160,
   "type": "Byte"
  },
  {
   "start": 32161,
   "end": 32164,
   "type": "Code"
  },
  {
   "start": 32165,
   "end": 32186,
   "type": "Undefined"
  },
  {
   "start": 32187,
   "end": 32255,
   "type": "Code"
  },
  {
   "start": 32256,
   "end": 32257,
   "type": "Address"
  },
  {
   "start": 32258,
   "end": 32302,
   "type": "Code"
  },
  {
   "start": 32303,
   "end": 32304,
   "type": "Address"
  },
  {
   "start": 32305,
   "end": 32311,
   "type": "Code"
  },
  {
   "start": 32312,
   "end": 32312,
   "type": "Byte"
  },
  {
   "start": 32313,
   "end": 32372,
   "type": "Code"
  },
  {
   "start": 32373,
   "end": 32374,
   "type": "Address"
  },
  {
   "start": 32375,
   "end": 32377,
   "type": "Code"
  },
  {
   "start": 32378,
   "end": 32379,
   "type": "Byte"
  },
  {
   "start": 32380,
   "end": 32459,
   "type": "Code"
  },
  {
   "start": 32460,
   "end": 32461,
   "type": "Address"
  },
  {
   "start": 32462,
   "end": 32473,
   "type": "Code"
  },
  {
   "start": 32474,
   "end": 32475,
   "type": "Address"
  },
  {
   "start": 32476,
   "end": 32482,
   "type": "Code"
  },
  {
   "start": 32483,
   "end": 32487,
   "type": "Undefined"
  },
  {
   "start": 32488,
   "end": 32600,
   "type": "Code"
  },
  {
   "start": 32601,
   "end": 32601,
   "type": "Byte"
  },
  {
   "start": 32602,
   "end": 32699,
   "type": "Code"
  },
  {
   "start": 32700,
   "end": 32705,
   "type": "Undefined"
  },
  {
   "start": 32706,
   "end": 32767,
   "type": "Byte"
  },
  {
   "start": 32768,
   "end": 32846,
   "type": "Code"
  },
  {
   "start": 32847,
   "end": 32848,
   "type": "Address"
  },
  {
   "start": 32849,
   "end": 32868,
   "type": "Code"
  },
  {
   "start": 32869,
   "end": 32870,
   "type": "Address"
  },
  {
   "start": 32871,
   "end": 33337,
   "type": "Code"
  },
  {
   "start": 33338,
   "end": 33397,
   "type": "Undefined"
  },
  {
   "start": 33398,
   "end": 33477,
   "type": "Code"
  },
  {
   "start": 33478,
   "end": 33479,
   "type": "Address"
  },
  {
   "start": 33480,
   "end": 33482,
   "type": "Code"
  },
  {
   "start": 33483,
   "end": 33484,
   "type": "Address"
  },
  {
   "start": 33485,
   "end": 33589,
   "type": "Code"
  },
  {
   "start": 33590,
   "end": 33591,
   "type": "Address"
  },
  {
   "start": 33592,
   "end": 33611,
   "type": "Code"
  },
  {
   "start": 33612,
   "end": 33613,
   "type": "Address"
  },
  {
   "start": 33614,
   "end": 33725,
   "type": "Code"
  },
  {
   "start": 33726,
   "end": 33727,
   "type": "Address"
  },
  {
   "start": 33728,
   "end": 33757,
   "type": "Code"
  },
  {
   "start": 33758,
   "end": 33759,
   "type": "Address"
  },
  {
   "start": 33760,
   "end": 33825,
   "type": "Code"
  },
  {
   "start": 33826,
   "end": 33827,
   "type": "Address"
  },
  {
   "start": 33828,
   "end": 33850,
   "type": "Code"
  },
  {
   "start": 33851,
   "end": 33852,
   "type": "Address"
  },
  {
   "start": 33853,
   "end": 33885,
   "type": "Code"
  },
  {
   "start": 33886,
   "end": 33887,
   "type": "Address"
  },
  {
   "start": 33888,
   "end": 33920,
   "type": "Code"
  },
  {
   "start": 33921,
   "end": 33922,
   "type": "Address"
  },
  {
   "start": 33923,
   "end": 33970,
   "type": "Code"
  },
  {
   "start": 33971,
   "end": 33972,
   "type": "Address"
  },
  {
   "start": 33973,
   "end": 33975,
   "type": "Code"
  },
  {
   "start": 33976,
   "end": 33977,
   "type": "Address"
  },
  {
   "start": 33978,
   "end": 34097,
   "type": "Code"
  },
  {
   "start": 34098,
   "end": 34099,
   "type": "Address"
  },
  {
   "start": 34100,
   "end": 34102,
   "type": "Code"
  },
  {
   "start": 34103,
   "end": 34104,
   "type": "Address"
  },
  {
   "start": 34105,
   "end": 34156,
   "type": "Code"
  },
  {
   "start": 34157,
   "end": 34158,
   "type": "Address"
  },
  {
   "start": 34159,
   "end": 34161,
   "type": "Code"
  },
  {
   "start": 34162,
   "end": 34163,
   "type": "Address"
  },
  {
   "start": 34164,
   "end": 34235,
   "type": "Code"
  },
  {
   "start": 34236,
   "end": 34237,
   "type": "Address"
  },
  {
   "start": 34238,
   "end": 34240,
   "type": "Code"
  },
  {
   "start": 34241,
   "end": 34242,
   "type": "Address"
  },
  {
   "start": 34243,
   "end": 34354,
   "type": "Code"
  },
  {
   "start": 34355,
   "end": 34355,
   "type": "Byte"
  },
  {
   "start": 34356,
   "end": 34419,
   "type": "Code"
  },
  {
   "start": 34420,
   "end": 34441,
   "type": "Undefined"
  },
  {
   "start": 34442,
   "end": 35211,
   "type": "Code"
  },
  {
   "start": 35212,
   "end": 35212,
   "type": "Byte"
  },
  {
   "start": 35213,
   "end": 35484,
   "type": "Code"
  },
  {
   "start": 35485,
   "end": 35486,
   "type": "Byte"
  },
  {
   "start": 35487,
   "end": 35636,
   "type": "Code"
  },
  {
   "start": 35637,
   "end": 35638,
   "type": "Byte"
  },
  {
   "start": 35639,
   "end": 35823,
   "type": "Code"
  },
  {
   "start": 35824,
   "end": 35825,
   "type": "Byte"
  },
  {
   "start": 35826,
   "end": 35922,
   "type": "Code"
  },
  {
   "start": 35923,
   "end": 35924,
   "type": "Address"
  },
  {
   "start": 35925,
   "end": 35927,
   "type": "Code"
  },
  {
   "start": 35928,
   "end": 35929,
   "type": "Address"
  },
  {
   "start": 35930,
   "end": 35995,
   "type": "Code"
  },
  {
   "start": 35996,
   "end": 35997,
   "type": "Address"
  },
  {
   "start": 35998,
   "end": 36029,
   "type": "Code"
  },
  {
   "start": 36030,
   "end": 36031,
   "type": "Address"
  },
  {
   "start": 36032,
   "end": 36349,
   "type": "Code"
  },
  {
   "start": 36350,
   "end": 36352,
   "type": "Undefined"
  },
  {
   "start": 36353,
   "end": 36863,
   "type": "Byte"
  },
  {
   "start": 36864,
   "end": 36969,
   "type": "Code"
  },
  {
   "start": 36970,
   "end": 36971,
   "type": "Address"
  },
  {
   "start": 36972,
   "end": 36992,
   "type": "Code"
  },
  {
   "start": 36993,
   "end": 36994,
   "type": "Address"
  },
  {
   "start": 36995,
   "end": 37009,
   "type": "Code"
  },
  {
   "start": 37010,
   "end": 37011,
   "type": "Address"
  },
  {
   "start": 37012,
   "end": 37014,
   "type": "Code"
  },
  {
   "start": 37015,
   "end": 37016,
   "type": "Address"
  },
  {
   "start": 37017,
   "end": 37064,
   "type": "Code"
  },
  {
   "start": 37065,
   "end": 37066,
   "type": "Address"
  },
  {
   "start": 37067,
   "end": 37075,
   "type": "Code"
  },
  {
   "start": 37076,
   "end": 37077,
   "type": "Address"
  },
  {
   "start": 37078,
   "end": 37083,
   "type": "Code"
  },
  {
   "start": 37084,
   "end": 37085,
   "type": "Address"
  },
  {
   "start": 37086,
   "end": 37133,
   "type": "Code"
  },
  {
   "start": 37134,
   "end": 37135,
   "type": "Address"
  },
  {
   "start": 37136,
   "end": 37138,
   "type": "Code"
  },
  {
   "start": 37139,
   "end": 37140,
   "type": "Address"
  },
  {
   "start": 37141,
   "end": 37170,
   "type": "Code"
  },
  {
   "start": 37171,
   "end": 37173,
   "type": "Byte"
  },
  {
   "start": 37174,
   "end": 37371,
   "type": "Code"
  },
  {
   "start": 37372,
   "end": 37373,
   "type": "Address"
  },
  {
   "start": 37374,
   "end": 37376,
   "type": "Code"
  },
  {
   "start": 37377,
   "end": 37378,
   "type": "Address"
  },
  {
   "start": 37379,
   "end": 37409,
   "type": "Code"
  },
  {
   "start": 37410,
   "end": 37411,
   "type": "Address"
  },
  {
   "start": 37412,
   "end": 37414,
   "type": "Code"
  },
  {
   "start": 37415,
   "end": 37416,
   "type": "Address"
  },
  {
   "start": 37417,
   "end": 37447,
   "type": "Code"
  },
  {
   "start": 37448,
   "end": 37449,
   "type": "Address"
  },
  {
   "start": 37450,
   "end": 37452,
   "type": "Code"
  },
  {
   "start": 37453,
   "end": 37454,
   "type": "Address"
  },
  {
   "start": 37455,
   "end": 37485,
   "type": "Code"
  },
  {
   "start": 37486,
   "end": 37487,
   "type": "Address"
  },
  {
   "start": 37488,
   "end": 37490,
   "type": "Code"
  },
  {
   "start": 37491,
   "end": 37492,
   "type": "Address"
  },
  {
   "start": 37493,
   "end": 37523,
   "type": "Code"
  },
  {
   "start": 37524,
   "end": 37525,
   "type": "Address"
  },
  {
   "start": 37526,
   "end": 37528,
   "type": "Code"
  },
  {
   "start": 37529,
   "end": 37530,
   "type": "Address"
  },
  {
   "start": 37531,
   "end": 37544,
   "type": "Code"
  },
  {
   "start": 37545,
   "end": 37559,
   "type": "Undefined"
  },
  {
   "start": 37560,
   "end": 37608,
   "type": "Code"
  },
  {
   "start": 37609,
   "end": 37610,
   "type": "Address"
  },
  {
   "start": 37611,
   "end": 37613,
   "type": "Code"
  },
  {
   "start": 37614,
   "end": 37615,
   "type": "Byte"
  },
  {
   "start": 37616,
   "end": 37634,
   "type": "Code"
  },
  {
   "start": 37635,
   "end": 37636,
   "type": "Address"
  },
  {
   "start": 37637,
   "end": 37639,
   "type": "Code"
  },
  {
   "start": 37640,
   "end": 37641,
   "type": "Address"
  },
  {
   "start": 37642,
   "end": 37676,
   "type": "Code"
  },
  {
   "start": 37677,
   "end": 37678,
   "type": "Address"
  },
  {
   "start": 37679,
   "end": 37707,
   "type": "Code"
  },
  {
   "start": 37708,
   "end": 37709,
   "type": "Address"
  },
  {
   "start": 37710,
   "end": 37712,
   "type": "Code"
  },
  {
   "start": 37713,
   "end": 37714,
   "type": "Address"
  },
  {
   "start": 37715,
   "end": 37747,
   "type": "Code"
  },
  {
   "start": 37748,
   "end": 37749,
   "type": "Address"
  },
  {
   "start": 37750,
   "end": 37752,
   "type": "Code"
  },
  {
   "start": 37753,
   "end": 37754,
   "type": "Address"
  },
  {
   "start": 37755,
   "end": 37779,
   "type": "Code"
  },
  {
   "start": 37780,
   "end": 37781,
   "type": "Address"
  },
  {
   "start": 37782,
   "end": 37784,
   "type": "Code"
  },
  {
   "start": 37785,
   "end": 37786,
   "type": "Address"
  },
  {
   "start": 37787,
   "end": 37814,
   "type": "Code"
  },
  {
   "start": 37815,
   "end": 37816,
   "type": "Address"
  },
  {
   "start": 37817,
   "end": 37819,
   "type": "Code"
  },
  {
   "start": 37820,
   "end": 37821,
   "type": "Address"
  },
  {
   "start": 37822,
   "end": 37856,
   "type": "Code"
  },
  {
   "start": 37857,
   "end": 37858,
   "type": "Address"
  },
  {
   "start": 37859,
   "end": 37877,
   "type": "Code"
  },
  {
   "start": 37878,
   "end": 37879,
   "type": "Address"
  },
  {
   "start": 37880,
   "end": 37888,
   "type": "Code"
  },
  {
   "start": 37889,
   "end": 37894,
   "type": "Undefined"
  },
  {
   "start": 37895,
   "end": 38686,
   "type": "Code"
  },
  {
   "start": 38687,
   "end": 38700,
   "type": "Undefined"
  },
  {
   "start": 38701,
   "end": 39254,
   "type": "Code"
  },
  {
   "start": 39255,
   "end": 39256,
   "type": "Address"
  },
  {
   "start": 39257,
   "end": 39264,
   "type": "Code"
  },
  {
   "start": 39265,
   "end": 39267,
   "type": "Byte"
  },
  {
   "start": 39268,
   "end": 39273,
   "type": "Code"
  },
  {
   "start": 39274,
   "end": 39276,
   "type": "Byte"
  },
  {
   "start": 39277,
   "end": 39282,
   "type": "Code"
  },
  {
   "start": 39283,
   "end": 39285,
   "type": "Byte"
  },
  {
   "start": 39286,
   "end": 39291,
   "type": "Code"
  },
  {
   "start": 39292,
   "end": 39293,
   "type": "Address"
  },
  {
   "start": 39294,
   "end": 39296,
   "type": "Code"
  },
  {
   "start": 39297,
   "end": 39299,
   "type": "Byte"
  },
  {
   "start": 39300,
   "end": 39305,
   "type": "Code"
  },
  {
   "start": 39306,
   "end": 39308,
   "type": "Byte"
  },
  {
   "start": 39309,
   "end": 39319,
   "type": "Code"
  },
  {
   "start": 39320,
   "end": 39322,
   "type": "Byte"
  },
  {
   "start": 39323,
   "end": 39341,
   "type": "Code"
  },
  {
   "start": 39342,
   "end": 39343,
   "type": "Address"
  },
  {
   "start": 39344,
   "end": 39346,
   "type": "Code"
  },
  {
   "start": 39347,
   "end": 39348,
   "type": "Byte"
  },
  {
   "start": 39349,
   "end": 39364,
   "type": "Code"
  },
  {
   "start": 39365,
   "end": 39366,
   "type": "Address"
  },
  {
   "start": 39367,
   "end": 39374,
   "type": "Code"
  },
  {
   "start": 39375,
   "end": 39376,
   "type": "Address"
  },
  {
   "start": 39377,
   "end": 39390,
   "type": "Code"
  },
  {
   "start": 39391,
   "end": 39392,
   "type": "Address"
  },
  {
   "start": 39393,
   "end": 39411,
   "type": "Code"
  },
  {
   "start": 39412,
   "end": 39413,
   "type": "Address"
  },
  {
   "start": 39414,
   "end": 39416,
   "type": "Code"
  },
  {
   "start": 39417,
   "end": 39418,
   "type": "Byte"
  },
  {
   "start": 39419,
   "end": 39432,
   "type": "Code"
  },
  {
   "start": 39433,
   "end": 39434,
   "type": "Address"
  },
  {
   "start": 39435,
   "end": 39437,
   "type": "Code"
  },
  {
   "start": 39438,
   "end": 39439,
   "type": "Address"
  },
  {
   "start": 39440,
   "end": 39465,
   "type": "Code"
  },
  {
   "start": 39466,
   "end": 39467,
   "type": "Address"
  },
  {
   "start": 39468,
   "end": 39470,
   "type": "Code"
  },
  {
   "start": 39471,
   "end": 39472,
   "type": "Byte"
  },
  {
   "start": 39473,
   "end": 39476,
   "type": "Code"
  },
  {
   "start": 39477,
   "end": 39494,
   "type": "Undefined"
  },
  {
   "start": 39495,
   "end": 39696,
   "type": "Code"
  },
  {
   "start": 39697,
   "end": 39698,
   "type": "Address"
  },
  {
   "start": 39699,
   "end": 39701,
   "type": "Code"
  },
  {
   "start": 39702,
   "end": 39703,
   "type": "Address"
  },
  {
   "start": 39704,
   "end": 39725,
   "type": "Code"
  },
  {
   "start": 39726,
   "end": 39727,
   "type": "Address"
  },
  {
   "start": 39728,
   "end": 39730,
   "type": "Code"
  },
  {
   "start": 39731,
   "end": 39733,
   "type": "Byte"
  },
  {
   "start": 39734,
   "end": 39749,
   "type": "Code"
  },
  {
   "start": 39750,
   "end": 39755,
   "type": "Undefined"
  },
  {
   "start": 39756,
   "end": 39974,
   "type": "Code"
  },
  {
   "start": 39975,
   "end": 39976,
   "type": "Byte"
  },
  {
   "start": 39977,
   "end": 39979,
   "type": "Code"
  },
  {
   "start": 39980,
   "end": 39981,
   "type": "Address"
  },
  {
   "start": 39982,
   "end": 39999,
   "type": "Code"
  },
  {
   "start": 40000,
   "end": 40001,
   "type": "Byte"
  },
  {
   "start": 40002,
   "end": 40011,
   "type": "Code"
  },
  {
   "start": 40012,
   "end": 40013,
   "type": "Address"
  },
  {
   "start": 40014,
   "end": 40028,
   "type": "Code"
  },
  {
   "start": 40029,
   "end": 40040,
   "type": "Undefined"
  },
  {
   "start": 40041,
   "end": 40144,
   "type": "Byte"
  },
  {
   "start": 40145,
   "end": 40469,
   "type": "Code"
  },
  {
   "start": 40470,
   "end": 40471,
   "type": "Address"
  },
  {
   "start": 40472,
   "end": 40615,
   "type": "Code"
  },
  {
   "start": 40616,
   "end": 40616,
   "type": "Byte"
  },
  {
   "start": 40617,
   "end": 40824,
   "type": "Code"
  },
  {
   "start": 40825,
   "end": 40959,
   "type": "Undefined"
  },
  {
   "start": 40960,
   "end": 41215,
   "type": "Address"
  },
  {
   "start": 41216,
   "end": 48990,
   "type": "Byte"
  },
  {
   "start": 48991,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "heli_vx",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "heli_vx_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2,
   "name": "heli_vy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3,
   "name": "heli_vy_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4,
   "name": "heli_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5,
   "name": "heli_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6,
   "name": "heli_height",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7,
   "name": "ground_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8,
   "name": "heli_pose",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9,
   "name": "heli_tilt",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10,
   "name": "stick_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11,
   "name": "stick_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12,
   "name": "airborne",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13,
   "name": "door_open",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14,
   "name": "on_pad",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15,
   "name": "bounce",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16,
   "name": "heli_down",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17,
   "name": "crash_step",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18,
   "name": "sortie_end",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19,
   "name": "shot_wanted",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20,
   "name": "erase_this",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21,
   "name": "erase_this_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22,
   "name": "erase_other",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23,
   "name": "erase_other_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24,
   "name": "erase_this_len",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25,
   "name": "erase_other_len",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26,
   "name": "shape_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 27,
   "name": "shape_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28,
   "name": "place_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29,
   "name": "place_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30,
   "name": "place_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31,
   "name": "erase_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32,
   "name": "erase_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33,
   "name": "erase_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36,
   "name": "vec_game_end",
   "type": "Pointer",
   "kind": "user"
  },
  {
   "address": 40,
   "name": "vec_title",
   "type": "Pointer",
   "kind": "user"
  },
  {
   "address": 42,
   "name": "vec_attract",
   "type": "Pointer",
   "kind": "user"
  },
  {
   "address": 58,
   "name": "vec_new_game",
   "type": "Pointer",
   "kind": "user"
  },
  {
   "address": 60,
   "name": "vec_sortie",
   "type": "Pointer",
   "kind": "user"
  },
  {
   "address": 78,
   "name": "vec_next_sortie",
   "type": "Pointer",
   "kind": "user"
  },
  {
   "address": 86,
   "name": "tmp",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 87,
   "name": "tmp2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 88,
   "name": "tmp3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 89,
   "name": "tmp3_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 90,
   "name": "erase_kind",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 91,
   "name": "erase_dx",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 92,
   "name": "erase_dy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 93,
   "name": "shift_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 94,
   "name": "shift_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 95,
   "name": "view_gap",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 96,
   "name": "view_gap_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 97,
   "name": "off_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 98,
   "name": "off_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 99,
   "name": "sign",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 100,
   "name": "dx",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 101,
   "name": "dx_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 102,
   "name": "dy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 103,
   "name": "jet_hidden",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 104,
   "name": "work_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 105,
   "name": "work_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 106,
   "name": "work_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 108,
   "name": "save_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 109,
   "name": "save_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 110,
   "name": "jet_frame",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 111,
   "name": "step_dx",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 112,
   "name": "step_dy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 113,
   "name": "step_ddepth",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 114,
   "name": "view_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 115,
   "name": "view_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 116,
   "name": "erase_above",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 117,
   "name": "erase_below",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 118,
   "name": "random",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 119,
   "name": "frame",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 120,
   "name": "page_flag",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 121,
   "name": "game_on",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 122,
   "name": "obj",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 123,
   "name": "obj_next",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 124,
   "name": "obj_free",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 128,
   "name": "g_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 129,
   "name": "g_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 130,
   "name": "g_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 131,
   "name": "g_line",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 132,
   "name": "g_line_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 133,
   "name": "g_col",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 134,
   "name": "g_bit",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 135,
   "name": "g_cur_col",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 136,
   "name": "s_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 137,
   "name": "g_dots",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 138,
   "name": "g_src_i",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 139,
   "name": "g_dots_left",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 140,
   "name": "g_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 141,
   "name": "g_page",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 142,
   "name": "g_width",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 143,
   "name": "g_height",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 144,
   "name": "g_work",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 145,
   "name": "g_work2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 147,
   "name": "g_work3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 148,
   "name": "g_src_byte",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 149,
   "name": "g_src",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 150,
   "name": "g_src_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 151,
   "name": "g_bits",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 152,
   "name": "g_byte",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 153,
   "name": "g_mask",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 157,
   "name": "s_bit",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 158,
   "name": "g_arg",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 159,
   "name": "g_arg_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 160,
   "name": "g_save_a",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 161,
   "name": "g_save_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 162,
   "name": "g_save_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 166,
   "name": "g_ret",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 167,
   "name": "g_ret_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 169,
   "name": "clip_left",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 170,
   "name": "clip_right",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 171,
   "name": "clip_top",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 172,
   "name": "clip_bottom",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 173,
   "name": "src_bit",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 174,
   "name": "copy_skip",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 175,
   "name": "src_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 176,
   "name": "src_row_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 177,
   "name": "src_bytes",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 178,
   "name": "slant_run",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 179,
   "name": "slant_step",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 180,
   "name": "g_unused_b4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 181,
   "name": "g_unused_b5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 182,
   "name": "hit_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 183,
   "name": "hit_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 184,
   "name": "hit_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 185,
   "name": "slant_dir",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 186,
   "name": "hit_off",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 187,
   "name": "hit_result",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 188,
   "name": "s_rows",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 189,
   "name": "g_row_i",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 190,
   "name": "s_dots",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 191,
   "name": "s_phase",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 192,
   "name": "shape_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 193,
   "name": "shape_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 194,
   "name": "shape_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 195,
   "name": "shape_addr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 196,
   "name": "shape_addr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 197,
   "name": "window_top",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 198,
   "name": "window_offset",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 199,
   "name": "view_left",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 200,
   "name": "view_left_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2048,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2062,
   "name": "arg_080E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2064,
   "name": "start_set_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2067,
   "name": "arg_0813",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2069,
   "name": "start_to_attract",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2079,
   "name": "title",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2092,
   "name": "arg_082C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2094,
   "name": "title_presents_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2097,
   "name": "arg_0831",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2100,
   "name": "title_presents_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2110,
   "name": "b_083E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2113,
   "name": "arg_0841",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2115,
   "name": "title_reveal_clip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2117,
   "name": "title_presents_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2142,
   "name": "title_logo",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2174,
   "name": "arg_087E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2176,
   "name": "title_logo_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2179,
   "name": "arg_0883",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2181,
   "name": "title_logo_slants",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2209,
   "name": "b_08A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2234,
   "name": "b_08BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2259,
   "name": "b_08D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2279,
   "name": "title_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2290,
   "name": "b_08F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2304,
   "name": "b_0900",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2323,
   "name": "b_0913",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2340,
   "name": "b_0924",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2347,
   "name": "j_092B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2371,
   "name": "arg_0943",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2373,
   "name": "title_left_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2376,
   "name": "arg_0948",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2378,
   "name": "title_left_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2391,
   "name": "b_0957",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2415,
   "name": "arg_096F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2417,
   "name": "title_right_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2434,
   "name": "b_0982",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2437,
   "name": "b_0985",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2446,
   "name": "arg_098E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2448,
   "name": "title_credit_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2451,
   "name": "arg_0993",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2454,
   "name": "title_credit_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2461,
   "name": "b_099D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2467,
   "name": "arg_09A3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2469,
   "name": "title_credit_clip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2471,
   "name": "title_credit_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2486,
   "name": "b_09B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2501,
   "name": "logo_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2502,
   "name": "logo_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2503,
   "name": "attract",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2533,
   "name": "arg_09E5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2535,
   "name": "attract_mission_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2538,
   "name": "arg_09EA",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2541,
   "name": "attract_mission_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2564,
   "name": "demo_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2580,
   "name": "b_0A14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2597,
   "name": "b_0A25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2615,
   "name": "b_0A37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2639,
   "name": "b_0A4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2654,
   "name": "b_0A5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2673,
   "name": "b_0A71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2680,
   "name": "j_0A78",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2696,
   "name": "b_0A88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2704,
   "name": "b_0A90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2767,
   "name": "b_0ACF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2770,
   "name": "b_0AD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2782,
   "name": "demo_mirror",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2783,
   "name": "demo_script",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2784,
   "name": "demo_stick_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2785,
   "name": "demo_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2786,
   "name": "demo_fire",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2911,
   "name": "new_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2925,
   "name": "b_0B6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2971,
   "name": "next_sortie",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2981,
   "name": "b_0BA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2991,
   "name": "j_0BAF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3005,
   "name": "b_0BBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3041,
   "name": "arg_0BE1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3044,
   "name": "sortie_text_placed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3047,
   "name": "b_0BE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3050,
   "name": "arg_0BEA",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3053,
   "name": "sortie_text_shape",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3071,
   "name": "arg_0BFF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3072,
   "name": "arg_0BFF_hi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3073,
   "name": "sortie_text_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3091,
   "name": "sortie_loop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3098,
   "name": "j_0C1A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3121,
   "name": "b_0C31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3132,
   "name": "b_0C3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3146,
   "name": "b_0C4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3218,
   "name": "game_over",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3234,
   "name": "game_won",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3247,
   "name": "end_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3258,
   "name": "b_0CBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3316,
   "name": "arg_0CF4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3319,
   "name": "end_text_choose",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3327,
   "name": "arg_0CFF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3329,
   "name": "end_text_chosen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3332,
   "name": "b_0D04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3335,
   "name": "arg_0D07",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3337,
   "name": "end_text_draw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3355,
   "name": "end_crowns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3356,
   "name": "draw_landscape_game",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3364,
   "name": "draw_landscape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3369,
   "name": "j_0D29",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3382,
   "name": "arg_0D36",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3384,
   "name": "landscape_pages",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3416,
   "name": "b_0D58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3460,
   "name": "b_0D84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3473,
   "name": "landscape_base",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3474,
   "name": "read_keys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3497,
   "name": "b_0DA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3499,
   "name": "b_0DAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3517,
   "name": "b_0DBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3532,
   "name": "b_0DCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3547,
   "name": "b_0DDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3551,
   "name": "b_0DDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3565,
   "name": "b_0DED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3569,
   "name": "b_0DF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3584,
   "name": "j_0E00",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3586,
   "name": "fire_button",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3593,
   "name": "fire_release",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3599,
   "name": "fire",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3641,
   "name": "r_0E39",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3642,
   "name": "fire_latch",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3643,
   "name": "turn_button",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3683,
   "name": "b_0E63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3696,
   "name": "j_0E70",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3706,
   "name": "j_0E7A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3714,
   "name": "b_0E82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3722,
   "name": "b_0E8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3753,
   "name": "b_0EA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3761,
   "name": "b_0EB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3773,
   "name": "b_0EBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3778,
   "name": "turn_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3787,
   "name": "b_0ECB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3799,
   "name": "b_0ED7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3804,
   "name": "b_0EDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3806,
   "name": "j_0EDE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3832,
   "name": "b_0EF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3839,
   "name": "b_0EFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3844,
   "name": "j_0F04",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3851,
   "name": "b_0F0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3856,
   "name": "j_0F10",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3860,
   "name": "r_0F14",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3861,
   "name": "turn_held",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3862,
   "name": "front_pose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3874,
   "name": "leftover_0F22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4096,
   "name": "gfx_fill_rect",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4099,
   "name": "gfx_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4102,
   "name": "gfx_hires_on",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4105,
   "name": "gfx_clear_page",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4108,
   "name": "gfx_fill_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4111,
   "name": "gfx_draw_page1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4114,
   "name": "gfx_flip_page",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4117,
   "name": "gfx_show_page",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4120,
   "name": "gfx_no_clip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4123,
   "name": "gfx_draw_opaque",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4126,
   "name": "gfx_draw_opaque_mirror",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4129,
   "name": "gfx_draw_or",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4132,
   "name": "gfx_draw_or_mirror",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4135,
   "name": "gfx_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4138,
   "name": "gfx_draw_mirror",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4141,
   "name": "gfx_draw_hit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4144,
   "name": "gfx_draw_hit_mirror",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4147,
   "name": "gfx_draw_slant",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4150,
   "name": "gfx_draw_slant_mirror",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4153,
   "name": "gfx_copy_bytes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4156,
   "name": "gfx_at",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4159,
   "name": "gfx_at_ptr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4162,
   "name": "gfx_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4165,
   "name": "gfx_clip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4168,
   "name": "gfx_slant",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4171,
   "name": "gfx_shape_direct",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4174,
   "name": "gfx_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4177,
   "name": "gfx_place_direct",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4180,
   "name": "gfx_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4183,
   "name": "gfx_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4186,
   "name": "gfx_window_offset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4189,
   "name": "gfx_window_top",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4192,
   "name": "gfx_clip_to_window",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4195,
   "name": "inline_args",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4218,
   "name": "b_107A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4221,
   "name": "inline_ptr_args",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4244,
   "name": "b_1094",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4271,
   "name": "gfx_at_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4314,
   "name": "gfx_at_ptr_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4344,
   "name": "gfx_colour_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4349,
   "name": "gfx_clip_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4397,
   "name": "gfx_shape_direct_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4435,
   "name": "gfx_shape_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4460,
   "name": "gfx_place_direct_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4503,
   "name": "gfx_place_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4533,
   "name": "gfx_view_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4558,
   "name": "gfx_window_offset_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4578,
   "name": "gfx_window_top_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4598,
   "name": "gfx_slant_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4622,
   "name": "slant_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4623,
   "name": "slant_dots",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4644,
   "name": "gfx_fill_rect_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4676,
   "name": "b_1244",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4724,
   "name": "b_1274",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4725,
   "name": "fill_odd",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4727,
   "name": "fill_row_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4728,
   "name": "fill_row_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4733,
   "name": "b_127D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4734,
   "name": "fill_even",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4736,
   "name": "fill_row2_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4737,
   "name": "fill_row2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4742,
   "name": "b_1286",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4751,
   "name": "b_128F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4758,
   "name": "gfx_reset_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4788,
   "name": "gfx_no_clip_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4801,
   "name": "gfx_hires_on_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4811,
   "name": "gfx_draw_page1_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4818,
   "name": "gfx_flip_page_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4829,
   "name": "b_12DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4835,
   "name": "gfx_show_page_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4845,
   "name": "b_12ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4850,
   "name": "gfx_clear_page_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4873,
   "name": "b_1309",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4874,
   "name": "clear_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4875,
   "name": "clear_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4891,
   "name": "gfx_fill_rows_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4896,
   "name": "b_1320",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4914,
   "name": "b_1332",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4915,
   "name": "fill_rows_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4916,
   "name": "fill_rows_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4926,
   "name": "x_to_column_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4953,
   "name": "x_to_column_slant",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4968,
   "name": "b_1368",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4984,
   "name": "j_1378",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4991,
   "name": "b_137F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4998,
   "name": "x_to_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5006,
   "name": "j_138E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5013,
   "name": "b_1395",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5024,
   "name": "b_13A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5049,
   "name": "clip_source",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5069,
   "name": "b_13CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5076,
   "name": "b_13D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5097,
   "name": "b_13E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5157,
   "name": "next_source_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5188,
   "name": "j_1444",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5197,
   "name": "b_144D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5218,
   "name": "shape_header",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5252,
   "name": "gfx_clip_to_window_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5293,
   "name": "b_14AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5309,
   "name": "b_14BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5345,
   "name": "b_14E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5349,
   "name": "j_14E5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5378,
   "name": "b_1502",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5408,
   "name": "j_1520",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5442,
   "name": "b_1542",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5446,
   "name": "b_1546",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5461,
   "name": "j_1555",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5462,
   "name": "j_1556",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5469,
   "name": "gfx_copy_bytes_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5484,
   "name": "j_156C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5533,
   "name": "b_159D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5534,
   "name": "copy_src_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5535,
   "name": "copy_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5537,
   "name": "copy_dst_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5538,
   "name": "copy_dst_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5552,
   "name": "b_15B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5559,
   "name": "copy_clip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5579,
   "name": "b_15CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5598,
   "name": "b_15DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5612,
   "name": "j_15EC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5625,
   "name": "b_15F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5656,
   "name": "j_1618",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5681,
   "name": "b_1631",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5700,
   "name": "b_1644",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5722,
   "name": "b_165A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5738,
   "name": "j_166A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5781,
   "name": "b_1695",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5791,
   "name": "div_by_7",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5800,
   "name": "b_16A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5813,
   "name": "b_16B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5826,
   "name": "mul_by_7",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5830,
   "name": "b_16C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5839,
   "name": "b_16CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5850,
   "name": "div_quotient",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5851,
   "name": "div_remainder",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5852,
   "name": "div_low",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5853,
   "name": "div_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5854,
   "name": "gfx_draw_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5869,
   "name": "j_16ED",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5878,
   "name": "j_16F6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5886,
   "name": "b_16FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5892,
   "name": "j_1704",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5937,
   "name": "b_1731",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5948,
   "name": "b_173C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5955,
   "name": "b_1743",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5959,
   "name": "b_1747",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5985,
   "name": "b_1761",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5994,
   "name": "b_176A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6005,
   "name": "b_1775",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6012,
   "name": "gfx_draw_mirror_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6035,
   "name": "j_1793",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6048,
   "name": "j_17A0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6056,
   "name": "b_17A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6062,
   "name": "j_17AE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6099,
   "name": "b_17D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6110,
   "name": "b_17DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6115,
   "name": "b_17E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6119,
   "name": "b_17E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6147,
   "name": "b_1803",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6156,
   "name": "b_180C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6167,
   "name": "b_1817",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6182,
   "name": "gfx_draw_hit_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6191,
   "name": "gfx_draw_or_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6197,
   "name": "j_1835",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6210,
   "name": "j_1842",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6215,
   "name": "j_1847",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6223,
   "name": "b_184F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6229,
   "name": "j_1855",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6257,
   "name": "b_1871",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6269,
   "name": "b_187D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6272,
   "name": "b_1880",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6277,
   "name": "b_1885",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6294,
   "name": "b_1896",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6307,
   "name": "b_18A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6318,
   "name": "b_18AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6325,
   "name": "gfx_draw_hit_mirror_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6334,
   "name": "gfx_draw_or_mirror_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6340,
   "name": "j_18C4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6361,
   "name": "j_18D9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6370,
   "name": "j_18E2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6378,
   "name": "b_18EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6384,
   "name": "j_18F0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6410,
   "name": "b_190A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6422,
   "name": "b_1916",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6425,
   "name": "b_1919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6430,
   "name": "b_191E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6445,
   "name": "b_192D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6458,
   "name": "b_193A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6469,
   "name": "b_1945",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6484,
   "name": "hit_point",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6497,
   "name": "hit_point_mirror",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6507,
   "name": "j_196B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6531,
   "name": "b_1983",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6542,
   "name": "j_198E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6549,
   "name": "b_1995",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6556,
   "name": "j_199C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6563,
   "name": "b_19A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6614,
   "name": "hit_saved_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6615,
   "name": "hit_saved_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6616,
   "name": "gfx_draw_opaque_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6631,
   "name": "j_19E7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6641,
   "name": "j_19F1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6649,
   "name": "b_19F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6655,
   "name": "j_19FF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6692,
   "name": "b_1A24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6697,
   "name": "b_1A29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6704,
   "name": "b_1A30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6732,
   "name": "b_1A4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6743,
   "name": "b_1A57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6750,
   "name": "gfx_draw_opaque_mirror_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6773,
   "name": "j_1A75",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6787,
   "name": "j_1A83",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6795,
   "name": "b_1A8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6801,
   "name": "j_1A91",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6836,
   "name": "b_1AB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6841,
   "name": "b_1AB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6848,
   "name": "b_1AC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6873,
   "name": "b_1AD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6884,
   "name": "b_1AE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6899,
   "name": "gfx_draw_slant_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6912,
   "name": "gfx_draw_slant_mirror_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6922,
   "name": "j_1B0A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6936,
   "name": "j_1B18",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6980,
   "name": "b_1B44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6992,
   "name": "b_1B50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7036,
   "name": "b_1B7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7043,
   "name": "b_1B83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7050,
   "name": "b_1B8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7067,
   "name": "b_1B9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7077,
   "name": "j_1BA5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7099,
   "name": "b_1BBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7108,
   "name": "b_1BC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7118,
   "name": "b_1BCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7127,
   "name": "b_1BD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7150,
   "name": "b_1BEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7160,
   "name": "b_1BF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7163,
   "name": "b_1BFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7170,
   "name": "row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7362,
   "name": "row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7554,
   "name": "mask_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7562,
   "name": "mask_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8197,
   "name": "a_2005",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8208,
   "name": "a_2010",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8226,
   "name": "a_2022",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8261,
   "name": "a_2045",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8286,
   "name": "a_205E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8309,
   "name": "a_2075",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8368,
   "name": "a_20B0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8378,
   "name": "a_20BA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8392,
   "name": "a_20C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8393,
   "name": "a_20C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8395,
   "name": "a_20CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8404,
   "name": "a_20D4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8408,
   "name": "a_20D8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8419,
   "name": "a_20E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8430,
   "name": "a_20EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8447,
   "name": "a_20FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8519,
   "name": "a_2147",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8520,
   "name": "a_2148",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8521,
   "name": "a_2149",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8522,
   "name": "a_214A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8535,
   "name": "a_2157",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8566,
   "name": "a_2176",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8639,
   "name": "a_21BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8648,
   "name": "a_21C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8649,
   "name": "a_21C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8650,
   "name": "a_21CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8659,
   "name": "a_21D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8688,
   "name": "a_21F0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8697,
   "name": "a_21F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8705,
   "name": "a_2201",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8706,
   "name": "a_2202",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8732,
   "name": "a_221C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8787,
   "name": "a_2253",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8801,
   "name": "a_2261",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8852,
   "name": "a_2294",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8883,
   "name": "a_22B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8892,
   "name": "a_22BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8963,
   "name": "a_2303",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8970,
   "name": "a_230A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8985,
   "name": "a_2319",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9001,
   "name": "a_2329",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9008,
   "name": "a_2330",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9016,
   "name": "a_2338",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9035,
   "name": "a_234B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9093,
   "name": "a_2385",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9235,
   "name": "a_2413",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9245,
   "name": "a_241D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9255,
   "name": "a_2427",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9268,
   "name": "a_2434",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9416,
   "name": "a_24C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9417,
   "name": "a_24C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9543,
   "name": "a_2547",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9544,
   "name": "a_2548",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9545,
   "name": "a_2549",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9546,
   "name": "a_254A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9578,
   "name": "a_256A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9672,
   "name": "a_25C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9673,
   "name": "a_25C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10133,
   "name": "a_2795",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10159,
   "name": "a_27AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10240,
   "name": "a_2800",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10440,
   "name": "a_28C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10441,
   "name": "a_28C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10442,
   "name": "a_28CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10463,
   "name": "a_28DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10567,
   "name": "a_2947",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10568,
   "name": "a_2948",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10569,
   "name": "a_2949",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10570,
   "name": "a_294A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10607,
   "name": "a_296F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10615,
   "name": "a_2977",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10666,
   "name": "a_29AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10678,
   "name": "a_29B6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10696,
   "name": "a_29C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10697,
   "name": "a_29C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11198,
   "name": "a_2BBE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11463,
   "name": "a_2CC7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11464,
   "name": "a_2CC8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11465,
   "name": "a_2CC9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11466,
   "name": "a_2CCA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11591,
   "name": "a_2D47",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11592,
   "name": "a_2D48",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11593,
   "name": "a_2D49",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11594,
   "name": "a_2D4A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11779,
   "name": "a_2E03",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11792,
   "name": "a_2E10",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12197,
   "name": "a_2FA5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12287,
   "name": "a_2FFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12288,
   "name": "a_3000",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12327,
   "name": "a_3027",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12328,
   "name": "a_3028",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12336,
   "name": "a_3030",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12339,
   "name": "a_3033",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12487,
   "name": "a_30C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12488,
   "name": "a_30C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12489,
   "name": "a_30C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12490,
   "name": "a_30CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12496,
   "name": "a_30D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12615,
   "name": "a_3147",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12616,
   "name": "a_3148",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12617,
   "name": "a_3149",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12618,
   "name": "a_314A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12685,
   "name": "a_318D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12719,
   "name": "a_31AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12998,
   "name": "a_32C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13511,
   "name": "a_34C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13512,
   "name": "a_34C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13513,
   "name": "a_34C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13514,
   "name": "a_34CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13639,
   "name": "a_3547",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13640,
   "name": "a_3548",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13641,
   "name": "a_3549",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13642,
   "name": "a_354A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13644,
   "name": "a_354C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13702,
   "name": "a_3586",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13764,
   "name": "a_35C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13828,
   "name": "a_3604",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14147,
   "name": "a_3743",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14535,
   "name": "a_38C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14536,
   "name": "a_38C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14537,
   "name": "a_38C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14538,
   "name": "a_38CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14663,
   "name": "a_3947",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14664,
   "name": "a_3948",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14665,
   "name": "a_3949",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14666,
   "name": "a_394A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14752,
   "name": "a_39A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14882,
   "name": "a_3A22",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15015,
   "name": "a_3AA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15559,
   "name": "a_3CC7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15560,
   "name": "a_3CC8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15561,
   "name": "a_3CC9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15562,
   "name": "a_3CCA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15687,
   "name": "a_3D47",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15688,
   "name": "a_3D48",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15689,
   "name": "a_3D49",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15690,
   "name": "a_3D4A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15709,
   "name": "a_3D5D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15823,
   "name": "a_3DCF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15824,
   "name": "a_3DD0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15858,
   "name": "a_3DF2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16300,
   "name": "a_3FAC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16389,
   "name": "a_4005",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16400,
   "name": "a_4010",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16418,
   "name": "a_4022",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16453,
   "name": "a_4045",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16478,
   "name": "a_405E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16501,
   "name": "a_4075",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16560,
   "name": "a_40B0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16570,
   "name": "a_40BA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16584,
   "name": "a_40C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16585,
   "name": "a_40C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16587,
   "name": "a_40CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16596,
   "name": "a_40D4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16600,
   "name": "a_40D8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16611,
   "name": "a_40E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16622,
   "name": "a_40EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16639,
   "name": "a_40FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16711,
   "name": "a_4147",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16712,
   "name": "a_4148",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16713,
   "name": "a_4149",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16714,
   "name": "a_414A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16727,
   "name": "a_4157",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16758,
   "name": "a_4176",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16831,
   "name": "a_41BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16840,
   "name": "a_41C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16841,
   "name": "a_41C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16842,
   "name": "a_41CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16851,
   "name": "a_41D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16880,
   "name": "a_41F0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16889,
   "name": "a_41F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16897,
   "name": "a_4201",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16898,
   "name": "a_4202",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16924,
   "name": "a_421C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16979,
   "name": "a_4253",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16993,
   "name": "a_4261",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17044,
   "name": "a_4294",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17075,
   "name": "a_42B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17084,
   "name": "a_42BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17155,
   "name": "a_4303",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17162,
   "name": "a_430A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17177,
   "name": "a_4319",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17193,
   "name": "a_4329",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17200,
   "name": "a_4330",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17208,
   "name": "a_4338",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17227,
   "name": "a_434B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17285,
   "name": "a_4385",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17427,
   "name": "a_4413",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17437,
   "name": "a_441D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17447,
   "name": "a_4427",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17460,
   "name": "a_4434",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17608,
   "name": "a_44C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17609,
   "name": "a_44C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17735,
   "name": "a_4547",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17736,
   "name": "a_4548",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17737,
   "name": "a_4549",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17738,
   "name": "a_454A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17770,
   "name": "a_456A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17864,
   "name": "a_45C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17865,
   "name": "a_45C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18325,
   "name": "a_4795",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18351,
   "name": "a_47AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18432,
   "name": "a_4800",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18632,
   "name": "a_48C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18633,
   "name": "a_48C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18634,
   "name": "a_48CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18655,
   "name": "a_48DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18759,
   "name": "a_4947",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18760,
   "name": "a_4948",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18761,
   "name": "a_4949",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18762,
   "name": "a_494A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18799,
   "name": "a_496F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18807,
   "name": "a_4977",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18858,
   "name": "a_49AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18870,
   "name": "a_49B6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18888,
   "name": "a_49C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18889,
   "name": "a_49C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19390,
   "name": "a_4BBE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19655,
   "name": "a_4CC7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19656,
   "name": "a_4CC8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19657,
   "name": "a_4CC9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19658,
   "name": "a_4CCA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19783,
   "name": "a_4D47",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19784,
   "name": "a_4D48",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19785,
   "name": "a_4D49",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19786,
   "name": "a_4D4A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19971,
   "name": "a_4E03",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19984,
   "name": "a_4E10",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20389,
   "name": "a_4FA5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20479,
   "name": "a_4FFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20480,
   "name": "a_5000",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20519,
   "name": "a_5027",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20520,
   "name": "a_5028",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20528,
   "name": "a_5030",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20531,
   "name": "a_5033",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20679,
   "name": "a_50C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20680,
   "name": "a_50C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20681,
   "name": "a_50C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20682,
   "name": "a_50CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20688,
   "name": "a_50D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20807,
   "name": "a_5147",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20808,
   "name": "a_5148",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20809,
   "name": "a_5149",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20810,
   "name": "a_514A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20877,
   "name": "a_518D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20911,
   "name": "a_51AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21190,
   "name": "a_52C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21703,
   "name": "a_54C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21704,
   "name": "a_54C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21705,
   "name": "a_54C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21706,
   "name": "a_54CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21831,
   "name": "a_5547",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21832,
   "name": "a_5548",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21833,
   "name": "a_5549",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21834,
   "name": "a_554A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21836,
   "name": "a_554C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21894,
   "name": "a_5586",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21956,
   "name": "a_55C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22020,
   "name": "a_5604",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22339,
   "name": "a_5743",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22727,
   "name": "a_58C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22728,
   "name": "a_58C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22729,
   "name": "a_58C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22730,
   "name": "a_58CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22855,
   "name": "a_5947",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22856,
   "name": "a_5948",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22857,
   "name": "a_5949",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22858,
   "name": "a_594A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22944,
   "name": "a_59A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23074,
   "name": "a_5A22",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23207,
   "name": "a_5AA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23751,
   "name": "a_5CC7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23752,
   "name": "a_5CC8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23753,
   "name": "a_5CC9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23754,
   "name": "a_5CCA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23879,
   "name": "a_5D47",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23880,
   "name": "a_5D48",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23881,
   "name": "a_5D49",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23882,
   "name": "a_5D4A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23901,
   "name": "a_5D5D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24015,
   "name": "a_5DCF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24016,
   "name": "a_5DD0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24050,
   "name": "a_5DF2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24492,
   "name": "a_5FAC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24576,
   "name": "hostages",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24579,
   "name": "release",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24582,
   "name": "spawn_tank",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24585,
   "name": "spawn_jet",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24588,
   "name": "spawn_drone",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24591,
   "name": "tank",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24594,
   "name": "spawn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24597,
   "name": "hostages_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24603,
   "name": "j_601B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24611,
   "name": "b_6023",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24638,
   "name": "b_603E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24649,
   "name": "b_6049",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24682,
   "name": "b_606A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24699,
   "name": "b_607B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24712,
   "name": "b_6088",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24742,
   "name": "b_60A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24745,
   "name": "b_60A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24773,
   "name": "b_60C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24804,
   "name": "b_60E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24822,
   "name": "b_60F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24827,
   "name": "b_60FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24835,
   "name": "b_6103",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24849,
   "name": "b_6111",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24857,
   "name": "j_6119",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24862,
   "name": "j_611E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24889,
   "name": "boarding",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 24900,
   "name": "b_6144",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24903,
   "name": "j_6147",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24942,
   "name": "b_616E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24967,
   "name": "b_6187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24970,
   "name": "b_618A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24973,
   "name": "b_618D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24986,
   "name": "b_619A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25011,
   "name": "b_61B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25024,
   "name": "j_61C0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25086,
   "name": "b_61FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25089,
   "name": "j_6201",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25095,
   "name": "draw_hostage_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25109,
   "name": "b_6215",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25133,
   "name": "arg_622D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25135,
   "name": "hostage_standing_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25141,
   "name": "b_6235",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25159,
   "name": "arg_6247",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25161,
   "name": "hostage_walking_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25167,
   "name": "j_624F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25186,
   "name": "arg_6262",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25188,
   "name": "hostage_climbing_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25205,
   "name": "b_6275",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25210,
   "name": "j_627A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25227,
   "name": "r_628B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25228,
   "name": "hostage_n",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25229,
   "name": "hostage_save_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25230,
   "name": "draw_hostage",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25265,
   "name": "arg_62B1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25267,
   "name": "draw_hostage_clip",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25289,
   "name": "b_62C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25293,
   "name": "r_62CD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25294,
   "name": "b_62CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25303,
   "name": "crush",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25311,
   "name": "arg_62DF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25313,
   "name": "crush_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25330,
   "name": "release_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25360,
   "name": "b_6310",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25368,
   "name": "r_6318",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25369,
   "name": "j_6319",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25395,
   "name": "b_6333",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25404,
   "name": "b_633C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25417,
   "name": "b_6349",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25424,
   "name": "b_6350",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25430,
   "name": "j_6356",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25433,
   "name": "let_out",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25436,
   "name": "b_635C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25488,
   "name": "b_6390",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25522,
   "name": "b_63B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25554,
   "name": "b_63D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25576,
   "name": "release_barracks",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25577,
   "name": "release_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25578,
   "name": "spawn_tank_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25597,
   "name": "r_63FD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25598,
   "name": "b_63FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25620,
   "name": "b_6414",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25629,
   "name": "b_641D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25652,
   "name": "j_6434",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25672,
   "name": "j_6448",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25677,
   "name": "j_644D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25688,
   "name": "b_6458",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25702,
   "name": "b_6466",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25738,
   "name": "spawn_jet_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25746,
   "name": "b_6492",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25773,
   "name": "b_64AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25804,
   "name": "b_64CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25812,
   "name": "b_64D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25817,
   "name": "j_64D9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25834,
   "name": "b_64EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25843,
   "name": "b_64F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25866,
   "name": "j_650A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25886,
   "name": "j_651E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25906,
   "name": "jet_list_full",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 25910,
   "name": "bold_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25914,
   "name": "spawn_drone_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25933,
   "name": "r_654D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25934,
   "name": "b_654E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25985,
   "name": "b_6581",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25994,
   "name": "b_658A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26012,
   "name": "j_659C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26027,
   "name": "j_65AB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26047,
   "name": "drone_list_full",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26051,
   "name": "tank_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26063,
   "name": "arg_65CF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26065,
   "name": "tank_hull_choose",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26077,
   "name": "arg_65DD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26079,
   "name": "tank_hull_chosen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26082,
   "name": "b_65E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26085,
   "name": "arg_65E5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26087,
   "name": "tank_hull_draw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26117,
   "name": "arg_6605",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26119,
   "name": "tank_turret_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26122,
   "name": "arg_660A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26124,
   "name": "tank_turret_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26137,
   "name": "b_6619",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26157,
   "name": "arg_662D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26159,
   "name": "tank_gun_place",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26175,
   "name": "arg_663F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26177,
   "name": "tank_gun_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26190,
   "name": "tank_think",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26241,
   "name": "b_6681",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26250,
   "name": "b_668A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26257,
   "name": "b_6691",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26261,
   "name": "j_6695",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26269,
   "name": "b_669D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26273,
   "name": "b_66A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26291,
   "name": "b_66B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26328,
   "name": "b_66D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26340,
   "name": "b_66E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26362,
   "name": "b_66FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26368,
   "name": "b_6700",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26385,
   "name": "b_6711",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26391,
   "name": "b_6717",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26401,
   "name": "j_6721",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26428,
   "name": "b_673C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26438,
   "name": "b_6746",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26445,
   "name": "b_674D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26451,
   "name": "b_6753",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26455,
   "name": "gun_x_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26460,
   "name": "aim_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26461,
   "name": "aim_upper",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26466,
   "name": "tank_fire",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26467,
   "name": "tank_keep",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26479,
   "name": "tank_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26487,
   "name": "tank_toward",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26494,
   "name": "tank_away",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26501,
   "name": "tank_right",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 26523,
   "name": "b_679B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26539,
   "name": "b_67AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26562,
   "name": "tank_left",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26587,
   "name": "tank_shoot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26654,
   "name": "b_681E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26669,
   "name": "j_682D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26735,
   "name": "shooter",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26736,
   "name": "shell_x_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26741,
   "name": "shell_speed_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26746,
   "name": "shell_rise_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26751,
   "name": "shell_depth_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26756,
   "name": "spawn_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26765,
   "name": "b_688D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26772,
   "name": "b_6894",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26807,
   "name": "b_68B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26826,
   "name": "b_68CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26840,
   "name": "r_68D8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 26841,
   "name": "max_tanks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26845,
   "name": "max_jets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26849,
   "name": "max_drones",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26853,
   "name": "leftover_68E5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27648,
   "name": "jet_script0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27652,
   "name": "jet_script1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27724,
   "name": "jet_script2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27784,
   "name": "jet_script3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27881,
   "name": "jet_script_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27886,
   "name": "heli_raise_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27985,
   "name": "rotor_offset_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27986,
   "name": "rotor_offset_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28227,
   "name": "rotor_tilt_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28228,
   "name": "rotor_tilt_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28249,
   "name": "tail_dot_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28250,
   "name": "tail_dot_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28271,
   "name": "tail_offset_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28272,
   "name": "tail_right_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28293,
   "name": "tail_offset_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28294,
   "name": "tail_left_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28315,
   "name": "gun_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28316,
   "name": "gun_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28557,
   "name": "shot_speed_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28558,
   "name": "shot_height_speeds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28629,
   "name": "leftover_6FD5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28672,
   "name": "heli_min_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28673,
   "name": "heli_min_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28674,
   "name": "heli_max_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28675,
   "name": "heli_max_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28676,
   "name": "view_min",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28677,
   "name": "view_min_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28678,
   "name": "view_max",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28679,
   "name": "view_max_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28680,
   "name": "base_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28681,
   "name": "base_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28682,
   "name": "post_office_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28683,
   "name": "post_office_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28684,
   "name": "fence_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28685,
   "name": "fence_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28686,
   "name": "barracks1_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28687,
   "name": "barracks1_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28688,
   "name": "bounce_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28689,
   "name": "bounce_speed_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28690,
   "name": "crash_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28691,
   "name": "crash_speed_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28692,
   "name": "lift_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28693,
   "name": "lift_speed_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28694,
   "name": "crash_steps",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28696,
   "name": "play_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28698,
   "name": "ground_depth",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28699,
   "name": "ground_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28700,
   "name": "hills_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28701,
   "name": "max_height",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28702,
   "name": "play_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28703,
   "name": "ground_line",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28704,
   "name": "sky_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28705,
   "name": "margin_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28706,
   "name": "margin_left_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28707,
   "name": "margin_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28708,
   "name": "margin_right_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28709,
   "name": "erase_list1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28869,
   "name": "erase_list2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29029,
   "name": "obj_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29030,
   "name": "obj_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29031,
   "name": "obj_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29032,
   "name": "obj_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29033,
   "name": "obj_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29034,
   "name": "obj_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29035,
   "name": "obj_height",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29036,
   "name": "obj_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29037,
   "name": "obj_prev",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29038,
   "name": "obj_link",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29329,
   "name": "obj_slots",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29330,
   "name": "hostage_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29331,
   "name": "hostage_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29332,
   "name": "hostage_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29333,
   "name": "hostage_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29394,
   "name": "hostage_slots",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29395,
   "name": "resort_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29425,
   "name": "resort_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29426,
   "name": "paddle_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29427,
   "name": "paddle_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29428,
   "name": "reverse_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29429,
   "name": "reverse_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29430,
   "name": "sound_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29431,
   "name": "paddle_x_raw",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29432,
   "name": "paddle_y_raw",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29433,
   "name": "facing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29434,
   "name": "turn_from",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29435,
   "name": "drone_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29436,
   "name": "drone_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29437,
   "name": "drone_list2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29438,
   "name": "drone_list3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29439,
   "name": "drone_list4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29440,
   "name": "jet_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29441,
   "name": "jet_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29442,
   "name": "jet_list2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29443,
   "name": "jet_list3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29444,
   "name": "jet_list4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29445,
   "name": "tank_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29446,
   "name": "tank_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29447,
   "name": "tank_list2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29448,
   "name": "tank_list3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29449,
   "name": "tank_list4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29450,
   "name": "in_barracks",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29451,
   "name": "rescued",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29452,
   "name": "killed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29453,
   "name": "out",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29454,
   "name": "aboard",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29455,
   "name": "walking_home",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29456,
   "name": "shots_in_play",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29457,
   "name": "barracks_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29458,
   "name": "barracks_state2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29459,
   "name": "barracks_state3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29460,
   "name": "barracks_state4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29461,
   "name": "barracks_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29462,
   "name": "barracks_left2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29463,
   "name": "barracks_left3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29464,
   "name": "barracks_left4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29465,
   "name": "killed_bcd",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29466,
   "name": "rescued_bcd",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29467,
   "name": "aboard_bcd",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29468,
   "name": "helis_used",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29469,
   "name": "level",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29470,
   "name": "trip_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29471,
   "name": "boarded_sound",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29472,
   "name": "killed_sound",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29473,
   "name": "drone_sound",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29474,
   "name": "heli_fly",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29477,
   "name": "list_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29480,
   "name": "add_erase",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29483,
   "name": "draw_hills",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29486,
   "name": "multiply",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29489,
   "name": "shift_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29492,
   "name": "shot_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29495,
   "name": "draw_heli",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29498,
   "name": "draw_rotor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29501,
   "name": "draw_tail_rotor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29504,
   "name": "object_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29507,
   "name": "gun_offset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29510,
   "name": "get_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29513,
   "name": "free_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29516,
   "name": "new_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29519,
   "name": "insert_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29522,
   "name": "mark_resort",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29525,
   "name": "resort_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29528,
   "name": "aboard_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29531,
   "name": "aboard_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29534,
   "name": "aboard_zero",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29537,
   "name": "killed_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29540,
   "name": "killed_add",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29543,
   "name": "rescued_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29546,
   "name": "print_counter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29549,
   "name": "click",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29552,
   "name": "tone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29555,
   "name": "noise",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29558,
   "name": "read_stick_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29561,
   "name": "read_stick_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29564,
   "name": "thrust",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29599,
   "name": "b_739F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29607,
   "name": "b_73A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29625,
   "name": "b_73B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29640,
   "name": "j_73C8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29663,
   "name": "b_73DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29668,
   "name": "b_73E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29677,
   "name": "b_73ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29711,
   "name": "b_740F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29719,
   "name": "r_7417",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 29720,
   "name": "thrust_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29721,
   "name": "thrust_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29732,
   "name": "climb_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29748,
   "name": "heli_fly_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29762,
   "name": "b_7442",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29769,
   "name": "on_ground",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29780,
   "name": "b_7454",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29797,
   "name": "b_7465",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29804,
   "name": "b_746C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29820,
   "name": "b_747C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29835,
   "name": "b_748B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29841,
   "name": "j_7491",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29847,
   "name": "j_7497",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29853,
   "name": "j_749D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29874,
   "name": "b_74B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29895,
   "name": "b_74C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29899,
   "name": "b_74CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29916,
   "name": "b_74DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29922,
   "name": "b_74E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29938,
   "name": "j_74F2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29951,
   "name": "j_74FF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29975,
   "name": "b_7517",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29990,
   "name": "b_7526",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29998,
   "name": "b_752E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30004,
   "name": "rebound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30039,
   "name": "lift",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30056,
   "name": "b_7568",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30078,
   "name": "j_757E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30092,
   "name": "lift_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30093,
   "name": "lift_step_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30094,
   "name": "fly_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30116,
   "name": "b_75A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30134,
   "name": "j_75B6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30142,
   "name": "b_75BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30180,
   "name": "b_75E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30190,
   "name": "b_75EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30209,
   "name": "j_7601",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30221,
   "name": "b_760D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30230,
   "name": "b_7616",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30246,
   "name": "j_7626",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30281,
   "name": "b_7649",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30298,
   "name": "b_765A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30306,
   "name": "r_7662",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30307,
   "name": "read_stick_y_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30321,
   "name": "b_7671",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30343,
   "name": "b_7687",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30348,
   "name": "stick_y_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30364,
   "name": "read_stick_x_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30378,
   "name": "b_76AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30392,
   "name": "b_76B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30398,
   "name": "b_76BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30408,
   "name": "b_76C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30413,
   "name": "noise_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30435,
   "name": "b_76E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30438,
   "name": "b_76E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30452,
   "name": "b_76F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30474,
   "name": "r_770A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30475,
   "name": "noise_period",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30476,
   "name": "noise_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30477,
   "name": "ground_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30484,
   "name": "b_7714",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30487,
   "name": "j_7717",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30494,
   "name": "b_771E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30505,
   "name": "b_7729",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30520,
   "name": "j_7738",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30531,
   "name": "b_7743",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30536,
   "name": "j_7748",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30571,
   "name": "b_776B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30578,
   "name": "b_7772",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30585,
   "name": "b_7779",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30600,
   "name": "b_7788",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30611,
   "name": "b_7793",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30628,
   "name": "j_77A4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30647,
   "name": "j_77B7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30690,
   "name": "b_77E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30693,
   "name": "b_77E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30698,
   "name": "j_77EA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30707,
   "name": "j_77F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30718,
   "name": "b_77FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30722,
   "name": "r_7802",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30723,
   "name": "rock",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30744,
   "name": "b_7818",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30795,
   "name": "b_784B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30846,
   "name": "rock_tilt",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30847,
   "name": "rock_x_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30848,
   "name": "rock_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30869,
   "name": "land_height_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30891,
   "name": "click_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30913,
   "name": "r_78C1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30914,
   "name": "tone_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30936,
   "name": "b_78D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30962,
   "name": "r_78F2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30963,
   "name": "tone_period",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30964,
   "name": "tone_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30965,
   "name": "random_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30984,
   "name": "b_7908",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30987,
   "name": "random2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30988,
   "name": "free_object_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31023,
   "name": "new_object_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31035,
   "name": "b_793B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31042,
   "name": "insert_object_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31053,
   "name": "j_794D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31070,
   "name": "b_795E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31076,
   "name": "b_7964",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31099,
   "name": "insert_depth",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31100,
   "name": "mark_resort_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31117,
   "name": "b_798D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31127,
   "name": "resort_objects_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31161,
   "name": "r_79B9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 31162,
   "name": "aboard_up_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31189,
   "name": "aboard_down_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31216,
   "name": "killed_up_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31275,
   "name": "b_7A2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31280,
   "name": "rescued_up_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31316,
   "name": "aboard_zero_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31339,
   "name": "killed_add_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31349,
   "name": "b_7A75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31407,
   "name": "b_7AAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31412,
   "name": "print_counter_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31419,
   "name": "b_7ABB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31485,
   "name": "arg_7AFD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31487,
   "name": "counter_digit_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31490,
   "name": "arg_7B02",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31492,
   "name": "counter_digit_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31501,
   "name": "arg_7B0D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31503,
   "name": "counter_digit_other",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31509,
   "name": "b_7B15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31523,
   "name": "b_7B23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31543,
   "name": "arg_7B37",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31545,
   "name": "counter_ones_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31548,
   "name": "arg_7B3C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31550,
   "name": "counter_ones_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31559,
   "name": "arg_7B47",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31561,
   "name": "counter_ones_other",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31567,
   "name": "r_7B4F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 31568,
   "name": "counter_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31571,
   "name": "counter_old",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31572,
   "name": "counter_new",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31573,
   "name": "counter_tens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31574,
   "name": "counter_at",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31575,
   "name": "counter_at_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31576,
   "name": "counter_at_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31577,
   "name": "object_place_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31607,
   "name": "b_7B77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31611,
   "name": "j_7B7B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31641,
   "name": "r_7B99",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 31642,
   "name": "list_init_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31705,
   "name": "j_7BD9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31719,
   "name": "b_7BE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31736,
   "name": "add_erase_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31784,
   "name": "draw_hills_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31834,
   "name": "j_7C5A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31868,
   "name": "arg_7C7C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31870,
   "name": "hill_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31873,
   "name": "arg_7C81",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31875,
   "name": "hill_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31888,
   "name": "b_7C90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31900,
   "name": "r_7C9C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 31901,
   "name": "hills_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31902,
   "name": "draw_heli_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31913,
   "name": "b_7CA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31936,
   "name": "b_7CC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31949,
   "name": "b_7CCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31968,
   "name": "j_7CE0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31983,
   "name": "b_7CEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31994,
   "name": "b_7CFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32005,
   "name": "j_7D05",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32022,
   "name": "j_7D16",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32039,
   "name": "b_7D27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32064,
   "name": "j_7D40",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32073,
   "name": "b_7D49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32115,
   "name": "j_7D73",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32137,
   "name": "arg_7D89",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32139,
   "name": "heli_body_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32142,
   "name": "arg_7D8E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32144,
   "name": "heli_body_clip",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32157,
   "name": "arg_7D9D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32160,
   "name": "heli_clip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32161,
   "name": "heli_draw_call",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 32162,
   "name": "heli_draw_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32163,
   "name": "heli_draw_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32165,
   "name": "heli_draw_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32166,
   "name": "heli_draw_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32187,
   "name": "draw_rotor_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32256,
   "name": "arg_7E00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32258,
   "name": "rotor_slant",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32281,
   "name": "b_7E19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32286,
   "name": "j_7E1E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32303,
   "name": "arg_7E2F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32305,
   "name": "rotor_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32312,
   "name": "rotor_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32313,
   "name": "draw_tail_rotor_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32334,
   "name": "b_7E4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32339,
   "name": "b_7E53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32346,
   "name": "b_7E5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32365,
   "name": "b_7E6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32373,
   "name": "arg_7E75",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32375,
   "name": "tail_dot_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32378,
   "name": "arg_7E7A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32380,
   "name": "tail_dot_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32387,
   "name": "b_7E83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32411,
   "name": "b_7E9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32421,
   "name": "j_7EA5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32439,
   "name": "b_7EB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32444,
   "name": "b_7EBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32460,
   "name": "arg_7ECC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32462,
   "name": "tail_rotor_place",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32474,
   "name": "arg_7EDA",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32476,
   "name": "tail_rotor_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32483,
   "name": "tail_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32484,
   "name": "tail_dot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32488,
   "name": "gun_offset_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32526,
   "name": "multiply_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32530,
   "name": "b_7F12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32537,
   "name": "b_7F19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32546,
   "name": "shift_right_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32570,
   "name": "b_7F3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32600,
   "name": "r_7F58",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 32601,
   "name": "shift_right_sign",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32602,
   "name": "shot_start_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32613,
   "name": "b_7F65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32635,
   "name": "b_7F7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32652,
   "name": "b_7F8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32661,
   "name": "b_7F95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32686,
   "name": "b_7FAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32700,
   "name": "shot_depth_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32706,
   "name": "leftover_7FC2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "run_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32771,
   "name": "tank_unlist",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32774,
   "name": "jet",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32847,
   "name": "arg_804F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32849,
   "name": "jet_centre",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32869,
   "name": "arg_8065",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32871,
   "name": "jet_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32902,
   "name": "b_8086",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32905,
   "name": "j_8089",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32926,
   "name": "b_809E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32959,
   "name": "b_80BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32983,
   "name": "b_80D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32991,
   "name": "j_80DF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33017,
   "name": "b_80F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33023,
   "name": "j_80FF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33024,
   "name": "jet_code_as_noise",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33026,
   "name": "b_8102",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33042,
   "name": "b_8112",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33045,
   "name": "jet_cruise",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 33057,
   "name": "b_8121",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33060,
   "name": "b_8124",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33066,
   "name": "b_812A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33103,
   "name": "b_814F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33115,
   "name": "b_815B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33136,
   "name": "b_8170",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33145,
   "name": "b_8179",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33153,
   "name": "b_8181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33182,
   "name": "b_819E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33185,
   "name": "b_81A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33198,
   "name": "b_81AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33211,
   "name": "j_81BB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33224,
   "name": "jet_attack",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33242,
   "name": "b_81DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33245,
   "name": "b_81DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33267,
   "name": "b_81F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33278,
   "name": "b_81FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33281,
   "name": "jet_swoop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33298,
   "name": "b_8212",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33315,
   "name": "b_8223",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33332,
   "name": "b_8234",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33337,
   "name": "r_8239",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33338,
   "name": "jet_erase_kinds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33378,
   "name": "jet_scripts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33379,
   "name": "jet_scripts_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33388,
   "name": "jet_pictures",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33389,
   "name": "jet_pictures_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33398,
   "name": "heli_object",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33478,
   "name": "arg_82C6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33480,
   "name": "flash_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33483,
   "name": "arg_82CB",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33485,
   "name": "flash_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33536,
   "name": "b_8300",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33541,
   "name": "j_8305",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33559,
   "name": "heli_burning",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 33566,
   "name": "b_831E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33590,
   "name": "arg_8336",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33592,
   "name": "burst_centre",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33612,
   "name": "arg_834C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33614,
   "name": "burst_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33634,
   "name": "b_8362",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33699,
   "name": "j_83A3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33703,
   "name": "explosion_air",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33726,
   "name": "arg_83BE",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33728,
   "name": "explosion_air_click",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33738,
   "name": "b_83CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33758,
   "name": "arg_83DE",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33760,
   "name": "explosion_air_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33778,
   "name": "b_83F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33797,
   "name": "b_8405",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33801,
   "name": "explosion_ground",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33826,
   "name": "arg_8422",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33828,
   "name": "flash_centre",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33851,
   "name": "arg_843B",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33853,
   "name": "flash_ground_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33866,
   "name": "b_844A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33886,
   "name": "arg_845E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33888,
   "name": "explosion_ground_click",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33898,
   "name": "b_846A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33921,
   "name": "arg_8481",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33923,
   "name": "explosion_ground_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33936,
   "name": "b_8490",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33955,
   "name": "b_84A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33959,
   "name": "heli_shot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33971,
   "name": "arg_84B3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33973,
   "name": "heli_shot_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33976,
   "name": "arg_84B8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33978,
   "name": "heli_shot_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33991,
   "name": "b_84C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34000,
   "name": "b_84D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34021,
   "name": "b_84E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34030,
   "name": "b_84EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34035,
   "name": "b_84F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34054,
   "name": "b_8506",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34079,
   "name": "j_851F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34086,
   "name": "bomb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34098,
   "name": "arg_8532",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34100,
   "name": "bomb_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34103,
   "name": "arg_8537",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34105,
   "name": "bomb_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34118,
   "name": "b_8546",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34133,
   "name": "b_8555",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34145,
   "name": "missile",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34157,
   "name": "arg_856D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34159,
   "name": "missile_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34162,
   "name": "arg_8572",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34164,
   "name": "missile_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34187,
   "name": "b_858B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34190,
   "name": "b_858E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34212,
   "name": "b_85A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34224,
   "name": "shell",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34236,
   "name": "arg_85BC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34238,
   "name": "shell_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34241,
   "name": "arg_85C1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34243,
   "name": "shell_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34256,
   "name": "b_85D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34271,
   "name": "b_85DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34291,
   "name": "move_projectile",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34319,
   "name": "b_860F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34321,
   "name": "j_8611",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34355,
   "name": "fall",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34356,
   "name": "explode",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34379,
   "name": "b_864B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34384,
   "name": "r_8650",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34385,
   "name": "run_objects_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34388,
   "name": "b_8654",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34412,
   "name": "object_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34413,
   "name": "object_call_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34414,
   "name": "object_call_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34420,
   "name": "type_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34421,
   "name": "type_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34442,
   "name": "shot_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34454,
   "name": "b_8696",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34503,
   "name": "b_86C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34520,
   "name": "b_86D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34547,
   "name": "b_86F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34553,
   "name": "b_86F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34583,
   "name": "b_8717",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34594,
   "name": "b_8722",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34605,
   "name": "b_872D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34619,
   "name": "b_873B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34632,
   "name": "b_8748",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34652,
   "name": "b_875C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34682,
   "name": "b_877A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34693,
   "name": "b_8785",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34701,
   "name": "j_878D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34707,
   "name": "b_8793",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34718,
   "name": "r_879E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34719,
   "name": "missile_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34736,
   "name": "b_87B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34756,
   "name": "b_87C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34763,
   "name": "b_87CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34770,
   "name": "b_87D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34788,
   "name": "drone_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34805,
   "name": "b_87F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34825,
   "name": "b_8809",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34832,
   "name": "b_8810",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34839,
   "name": "b_8817",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34845,
   "name": "blast",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34865,
   "name": "r_8831",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34866,
   "name": "b_8832",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34892,
   "name": "b_884C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34904,
   "name": "b_8858",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34913,
   "name": "b_8861",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34919,
   "name": "b_8867",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34965,
   "name": "b_8895",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34974,
   "name": "b_889E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34983,
   "name": "b_88A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34989,
   "name": "b_88AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35016,
   "name": "r_88C8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35017,
   "name": "blast_tanks",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35028,
   "name": "b_88D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35029,
   "name": "b_88D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35046,
   "name": "j_88E6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35050,
   "name": "b_88EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35080,
   "name": "b_8908",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35091,
   "name": "b_8913",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35102,
   "name": "b_891E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35108,
   "name": "heli_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35120,
   "name": "tank_destroyed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35212,
   "name": "tank_n",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35213,
   "name": "tank_unlist_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35218,
   "name": "j_8992",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35236,
   "name": "b_89A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35242,
   "name": "b_89AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35248,
   "name": "b_89B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35254,
   "name": "r_89B6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35255,
   "name": "drone_unlist",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35260,
   "name": "j_89BC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35278,
   "name": "b_89CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35284,
   "name": "b_89D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35290,
   "name": "b_89DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35296,
   "name": "r_89E0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35297,
   "name": "jet_unlist",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35302,
   "name": "j_89E6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35320,
   "name": "b_89F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35326,
   "name": "b_89FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35332,
   "name": "b_8A04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35338,
   "name": "r_8A0A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35339,
   "name": "jet_destroyed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35485,
   "name": "jet_n",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35486,
   "name": "jet_shot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35487,
   "name": "drone_destroyed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35637,
   "name": "drone_n",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35638,
   "name": "drone_shot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35639,
   "name": "hostage_blasted",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35659,
   "name": "barracks_blasted",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35666,
   "name": "b_8B52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35679,
   "name": "jet_missiles",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35773,
   "name": "b_8BBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35824,
   "name": "jet_firing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35825,
   "name": "missile_second",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35826,
   "name": "jet_bomb_impl",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35886,
   "name": "b_8C2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35906,
   "name": "drone",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35923,
   "name": "arg_8C53",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35925,
   "name": "drone_body_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35928,
   "name": "arg_8C58",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35930,
   "name": "drone_body_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35980,
   "name": "b_8C8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35993,
   "name": "b_8C99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35996,
   "name": "arg_8C9C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35998,
   "name": "drone_spin_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36015,
   "name": "b_8CAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36030,
   "name": "arg_8CBE",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36032,
   "name": "drone_spin_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36045,
   "name": "b_8CCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36086,
   "name": "b_8CF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36108,
   "name": "b_8D0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36123,
   "name": "b_8D1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36136,
   "name": "b_8D28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36158,
   "name": "b_8D3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36173,
   "name": "j_8D4D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36286,
   "name": "b_8DBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36318,
   "name": "b_8DDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36335,
   "name": "b_8DEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36350,
   "name": "drone_spin",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36351,
   "name": "drone_seen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36352,
   "name": "drone_self",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36353,
   "name": "leftover_8E01",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36864,
   "name": "draw_planet",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36867,
   "name": "twinkle_stars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36870,
   "name": "draw_bar",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36873,
   "name": "build_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36876,
   "name": "scroll_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36879,
   "name": "erase_old",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36882,
   "name": "draw_base",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36885,
   "name": "draw_fence",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36888,
   "name": "shift_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36891,
   "name": "draw_barracks",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36894,
   "name": "open_fourth",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36897,
   "name": "refill",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36900,
   "name": "heli_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36903,
   "name": "stars_first",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36906,
   "name": "planet_bottom",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36909,
   "name": "draw_barracks_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36922,
   "name": "b_903A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36948,
   "name": "j_9054",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36970,
   "name": "arg_906A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36972,
   "name": "barracks_choose",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36993,
   "name": "arg_9081",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36995,
   "name": "barracks_copy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37003,
   "name": "b_908B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37010,
   "name": "arg_9092",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37012,
   "name": "barracks_strip_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37015,
   "name": "arg_9097",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37017,
   "name": "barracks_strip_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37025,
   "name": "b_90A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37065,
   "name": "arg_90C9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37067,
   "name": "barracks_fire_choose",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37076,
   "name": "arg_90D4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37078,
   "name": "barracks_fire_chosen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37081,
   "name": "b_90D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37084,
   "name": "arg_90DC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37086,
   "name": "barracks_fire_draw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37108,
   "name": "b_90F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37111,
   "name": "j_90F7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37134,
   "name": "arg_910E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37136,
   "name": "rubble_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37139,
   "name": "arg_9113",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37141,
   "name": "rubble_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37154,
   "name": "j_9122",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37170,
   "name": "r_9132",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37171,
   "name": "barracks_n",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37172,
   "name": "barracks_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37173,
   "name": "barracks_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37174,
   "name": "draw_fence_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37191,
   "name": "b_9147",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37372,
   "name": "arg_91FC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37374,
   "name": "fence_post1_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37377,
   "name": "arg_9201",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37379,
   "name": "fence_post1_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37392,
   "name": "b_9210",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37410,
   "name": "arg_9222",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37412,
   "name": "fence_post2_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37415,
   "name": "arg_9227",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37417,
   "name": "fence_post2_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37430,
   "name": "b_9236",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37448,
   "name": "arg_9248",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37450,
   "name": "fence_post3_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37453,
   "name": "arg_924D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37455,
   "name": "fence_post3_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37468,
   "name": "b_925C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37486,
   "name": "arg_926E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37488,
   "name": "fence_post4_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37491,
   "name": "arg_9273",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37493,
   "name": "fence_post4_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37506,
   "name": "b_9282",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37524,
   "name": "arg_9294",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37526,
   "name": "fence_post5_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37529,
   "name": "arg_9299",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37531,
   "name": "fence_post5_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37544,
   "name": "r_92A8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37545,
   "name": "fence_x1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37546,
   "name": "fence_x1_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37547,
   "name": "fence_x2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37548,
   "name": "fence_x2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37549,
   "name": "fence_x3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37550,
   "name": "fence_x3_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37551,
   "name": "fence_x4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37552,
   "name": "fence_x4_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37553,
   "name": "fence_x5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37554,
   "name": "fence_x5_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37555,
   "name": "fence_rows",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37556,
   "name": "fence_row2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37557,
   "name": "fence_row3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37558,
   "name": "fence_row4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37559,
   "name": "fence_row5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37560,
   "name": "draw_base_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37571,
   "name": "b_92C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37609,
   "name": "arg_92E9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37611,
   "name": "pad_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37614,
   "name": "arg_92EE",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37616,
   "name": "pad_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37624,
   "name": "b_92F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37635,
   "name": "arg_9303",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37637,
   "name": "pad_end_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37640,
   "name": "arg_9308",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37642,
   "name": "pad_ends_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37648,
   "name": "b_9310",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37677,
   "name": "arg_932D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37679,
   "name": "pad_right_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37687,
   "name": "b_9337",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37708,
   "name": "arg_934C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37710,
   "name": "post_office_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37713,
   "name": "arg_9351",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37715,
   "name": "post_office_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37728,
   "name": "b_9360",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37748,
   "name": "arg_9374",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37750,
   "name": "kerb_left_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37753,
   "name": "arg_9379",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37755,
   "name": "kerb_left_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37761,
   "name": "b_9381",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37780,
   "name": "arg_9394",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37782,
   "name": "kerb_right_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37785,
   "name": "arg_9399",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37787,
   "name": "kerb_right_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37795,
   "name": "b_93A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37815,
   "name": "arg_93B7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37817,
   "name": "flagpole_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37820,
   "name": "arg_93BC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37822,
   "name": "flagpole_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37828,
   "name": "b_93C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37857,
   "name": "arg_93E1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37859,
   "name": "flag_choose",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37878,
   "name": "arg_93F6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37880,
   "name": "flag_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37888,
   "name": "r_9400",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37889,
   "name": "pad_fill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37895,
   "name": "planet_bottom_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37902,
   "name": "b_940E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37905,
   "name": "draw_planet_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37912,
   "name": "b_9418",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38147,
   "name": "planet_bottom1",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38243,
   "name": "draw_planet2",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38478,
   "name": "planet_bottom2",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38574,
   "name": "twinkle_stars_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38609,
   "name": "stars_first_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38630,
   "name": "star_bytes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38687,
   "name": "stars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38688,
   "name": "star_a2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38689,
   "name": "star_a3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38690,
   "name": "star_a4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38691,
   "name": "star_a5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38692,
   "name": "star_a6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38693,
   "name": "star_a7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38694,
   "name": "star_b1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38695,
   "name": "star_b2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38696,
   "name": "star_b3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38697,
   "name": "star_b4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38698,
   "name": "star_b5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38699,
   "name": "star_b6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38700,
   "name": "star_b7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38701,
   "name": "store_stars1",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 38975,
   "name": "store_stars2",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39249,
   "name": "draw_counter_icons",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39255,
   "name": "arg_9957",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39257,
   "name": "icon_frame_colour",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39265,
   "name": "arg_9961",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39268,
   "name": "icon_frame_second",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39274,
   "name": "arg_996A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39277,
   "name": "icon_frame_third",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39283,
   "name": "arg_9973",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39286,
   "name": "icon_frame_last",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39292,
   "name": "arg_997C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39294,
   "name": "icon_hostage_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39297,
   "name": "arg_9981",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39300,
   "name": "icon_hostage_second",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39306,
   "name": "arg_998A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39309,
   "name": "icon_hostage_third",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39320,
   "name": "arg_9998",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39323,
   "name": "icon_hostage_last",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39327,
   "name": "draw_bar_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39342,
   "name": "arg_99AE",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39344,
   "name": "bar_top_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39347,
   "name": "arg_99B3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39349,
   "name": "bar_top_fill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39365,
   "name": "arg_99C5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39367,
   "name": "bar_left_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39375,
   "name": "arg_99CF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39377,
   "name": "bar_left_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39391,
   "name": "arg_99DF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39393,
   "name": "bar_right_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39412,
   "name": "arg_99F4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39414,
   "name": "bar_green_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39417,
   "name": "arg_99F9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39419,
   "name": "bar_green_fill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39433,
   "name": "arg_9A09",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39435,
   "name": "bar_corner_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39438,
   "name": "arg_9A0E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39440,
   "name": "bar_corner_draw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39466,
   "name": "arg_9A2A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39468,
   "name": "bar_panel_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39471,
   "name": "arg_9A2F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39473,
   "name": "bar_panel_fill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39477,
   "name": "bar_fills",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39495,
   "name": "refill_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39554,
   "name": "b_9A82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39629,
   "name": "j_9ACD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39644,
   "name": "r_9ADC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39645,
   "name": "build_screen_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39697,
   "name": "arg_9B11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39699,
   "name": "build_screen_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39702,
   "name": "arg_9B16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39704,
   "name": "build_screen_ground",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39726,
   "name": "arg_9B2E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39728,
   "name": "build_screen_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39731,
   "name": "arg_9B33",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39733,
   "name": "ground_top_operand",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39734,
   "name": "build_screen_fill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39750,
   "name": "ground_fill",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39751,
   "name": "ground_fill_height",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39756,
   "name": "erase_old_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39785,
   "name": "b_9B69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39787,
   "name": "j_9B6B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39881,
   "name": "b_9BC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39910,
   "name": "b_9BE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39921,
   "name": "b_9BF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39932,
   "name": "j_9BFC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39960,
   "name": "j_9C18",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39975,
   "name": "arg_9C27",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39977,
   "name": "erase_sky_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39980,
   "name": "arg_9C2C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39982,
   "name": "erase_sky_fill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39985,
   "name": "b_9C31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40000,
   "name": "arg_9C40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40002,
   "name": "erase_ground_at",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40012,
   "name": "arg_9C4C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40014,
   "name": "erase_ground_fill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40017,
   "name": "b_9C51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40024,
   "name": "b_9C58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40029,
   "name": "erase_sky",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40030,
   "name": "erase_sky_height",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40035,
   "name": "erase_ground",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40036,
   "name": "erase_ground_height",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40041,
   "name": "erase_boxes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40042,
   "name": "erase_box_up",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40043,
   "name": "erase_box_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40044,
   "name": "erase_box_height",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40145,
   "name": "scroll_view_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40161,
   "name": "b_9CE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40168,
   "name": "b_9CE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40175,
   "name": "b_9CEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40178,
   "name": "b_9CF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40194,
   "name": "b_9D02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40223,
   "name": "b_9D1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40241,
   "name": "b_9D31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40257,
   "name": "b_9D41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40275,
   "name": "b_9D53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40278,
   "name": "j_9D56",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40310,
   "name": "b_9D76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40328,
   "name": "b_9D88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40343,
   "name": "j_9D97",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40349,
   "name": "b_9D9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40363,
   "name": "b_9DAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40382,
   "name": "b_9DBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40396,
   "name": "b_9DCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40412,
   "name": "j_9DDC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40428,
   "name": "b_9DEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40441,
   "name": "b_9DF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40457,
   "name": "b_9E09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40467,
   "name": "b_9E13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40470,
   "name": "arg_9E16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40472,
   "name": "scroll_none",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 40473,
   "name": "scroll_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40495,
   "name": "b_9E2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40534,
   "name": "b_9E56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40546,
   "name": "b_9E62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40549,
   "name": "shift_left_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40561,
   "name": "b_9E71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40584,
   "name": "j_9E88",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40597,
   "name": "b_9E95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40615,
   "name": "r_9EA7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40616,
   "name": "shift_left_sign",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40617,
   "name": "open_fourth_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40668,
   "name": "j_9EDC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40705,
   "name": "b_9F01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40727,
   "name": "r_9F17",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40728,
   "name": "heli_setup_impl",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40825,
   "name": "leftover_9F79",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "ptr_heli_tilts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40982,
   "name": "ptr_heli_poses",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40983,
   "name": "ptr_heli_poses_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40992,
   "name": "ptr_bounce_side",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40993,
   "name": "ptr_bounce_side_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40994,
   "name": "ptr_bounce_front",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40995,
   "name": "ptr_bounce_front_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40996,
   "name": "ptr_rotors",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41002,
   "name": "ptr_tail_rotors",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41003,
   "name": "ptr_tail_rotors_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41010,
   "name": "ptr_jet_cruise",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41012,
   "name": "ptr_jet_turn",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41026,
   "name": "ptr_jet_forward",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41036,
   "name": "ptr_jet_missiles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41048,
   "name": "ptr_jet_bombs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41060,
   "name": "ptr_tank_turret",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41062,
   "name": "ptr_tank_hull0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41064,
   "name": "ptr_tank_hull1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41066,
   "name": "ptr_tank_guns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41067,
   "name": "ptr_tank_guns_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41076,
   "name": "ptr_heli_shot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41078,
   "name": "ptr_tank_shell",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41080,
   "name": "ptr_missile",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41082,
   "name": "ptr_bomb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41084,
   "name": "ptr_flash",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41086,
   "name": "ptr_drone",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41088,
   "name": "ptr_drone_spins",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41089,
   "name": "ptr_drone_spins_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41094,
   "name": "ptr_bursts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41095,
   "name": "ptr_bursts_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41104,
   "name": "ptr_ground_flash",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41105,
   "name": "ptr_ground_flash_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41106,
   "name": "ptr_crushed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41108,
   "name": "ptr_hostage_run",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41109,
   "name": "ptr_hostage_run_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41116,
   "name": "ptr_hostage_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41117,
   "name": "ptr_hostage_wave_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41122,
   "name": "ptr_hostage_climb",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41123,
   "name": "ptr_hostage_climb_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41126,
   "name": "ptr_hills",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41127,
   "name": "ptr_hills_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41134,
   "name": "ptr_bar_corner",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41136,
   "name": "ptr_bar_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41138,
   "name": "ptr_post_office",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41140,
   "name": "ptr_pad_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41142,
   "name": "ptr_flagpole",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41144,
   "name": "ptr_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41145,
   "name": "ptr_flags_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41148,
   "name": "ptr_kerb_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41150,
   "name": "ptr_kerb_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41152,
   "name": "ptr_post1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41154,
   "name": "ptr_post2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41156,
   "name": "ptr_post3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41158,
   "name": "ptr_post4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41160,
   "name": "ptr_post5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41162,
   "name": "ptr_barracks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41163,
   "name": "ptr_barracks_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41166,
   "name": "ptr_barracks_strip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41168,
   "name": "ptr_rubble",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41170,
   "name": "ptr_fire0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41172,
   "name": "ptr_fire1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41174,
   "name": "ptr_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41175,
   "name": "ptr_digits_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41194,
   "name": "ptr_counter_hostage",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41196,
   "name": "ptr_counter_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41198,
   "name": "ptr_mission",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41200,
   "name": "ptr_logo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41202,
   "name": "ptr_presents",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41204,
   "name": "ptr_credit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41206,
   "name": "ptr_the_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41208,
   "name": "ptr_crowns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41210,
   "name": "ptr_sorties",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41211,
   "name": "ptr_sorties_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41216,
   "name": "shapes_gap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41218,
   "name": "shp_heli_tilt_m5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41292,
   "name": "shp_heli_tilt_m4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41358,
   "name": "shp_heli_tilt_m3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41435,
   "name": "shp_heli_tilt_m2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41507,
   "name": "shp_heli_tilt_m1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41579,
   "name": "shp_heli_tilt_p0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41646,
   "name": "shp_heli_tilt_p1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41713,
   "name": "shp_heli_tilt_p2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41780,
   "name": "shp_heli_tilt_p3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41852,
   "name": "shp_heli_tilt_p4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41929,
   "name": "shp_heli_tilt_p5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42011,
   "name": "shp_heli_pose0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42039,
   "name": "shp_heli_pose1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42067,
   "name": "shp_heli_pose2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42108,
   "name": "shp_heli_pose3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42162,
   "name": "shp_heli_pose4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42216,
   "name": "shp_heli_bounce_side",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42278,
   "name": "shp_heli_bounce_front",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42304,
   "name": "shp_rotor0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42311,
   "name": "shp_rotor1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42318,
   "name": "shp_rotor2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42325,
   "name": "shp_tail_rotor0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42333,
   "name": "shp_tail_rotor1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42341,
   "name": "shp_tail_rotor2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42347,
   "name": "shp_tail_rotor3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42356,
   "name": "shp_jet_cruise",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42373,
   "name": "shp_jet_turn0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42419,
   "name": "shp_jet_turn1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42460,
   "name": "shp_jet_turn2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42507,
   "name": "shp_jet_turn3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42541,
   "name": "shp_jet_turn4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42594,
   "name": "shp_jet_turn5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42660,
   "name": "shp_jet_turn6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42726,
   "name": "shp_jet_forward0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42761,
   "name": "shp_jet_forward1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42805,
   "name": "shp_jet_forward2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42847,
   "name": "shp_jet_forward3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42889,
   "name": "shp_jet_forward4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42946,
   "name": "shp_jet_missiles0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43038,
   "name": "shp_jet_missiles1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43100,
   "name": "shp_jet_missiles2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43154,
   "name": "shp_jet_missiles3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43204,
   "name": "shp_jet_missiles4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43239,
   "name": "shp_jet_missiles5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43259,
   "name": "shp_jet_bombs0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43351,
   "name": "shp_jet_bombs1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43413,
   "name": "shp_jet_bombs2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43467,
   "name": "shp_jet_bombs3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43521,
   "name": "shp_jet_bombs4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43556,
   "name": "shp_jet_bombs5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43576,
   "name": "shp_tank_turret",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43584,
   "name": "shp_tank_hull0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43610,
   "name": "shp_tank_hull1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43636,
   "name": "shp_tank_gun0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43643,
   "name": "shp_tank_gun1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43649,
   "name": "shp_tank_gun2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43655,
   "name": "shp_tank_gun3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43661,
   "name": "shp_tank_gun4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43668,
   "name": "shp_heli_shot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43673,
   "name": "shp_tank_shell",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43678,
   "name": "shp_missile",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43686,
   "name": "shp_bomb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43689,
   "name": "shp_flash",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43695,
   "name": "shp_drone",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43717,
   "name": "shp_drone_spin0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43723,
   "name": "shp_drone_spin1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43729,
   "name": "shp_drone_spin2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43735,
   "name": "shp_burst0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43764,
   "name": "shp_burst1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43799,
   "name": "shp_burst2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43837,
   "name": "shp_burst3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43875,
   "name": "shp_burst4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43901,
   "name": "shp_ground_flash",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43911,
   "name": "shp_crushed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43935,
   "name": "shp_hostage_run0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43959,
   "name": "shp_hostage_run1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43983,
   "name": "shp_hostage_run2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44007,
   "name": "shp_hostage_run3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44031,
   "name": "shp_hostage_wave0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44055,
   "name": "shp_hostage_wave1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44079,
   "name": "shp_hostage_wave2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44103,
   "name": "shp_hostage_climb0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44127,
   "name": "shp_hostage_climb1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44151,
   "name": "shp_hills0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44377,
   "name": "shp_hills1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44575,
   "name": "shp_hills2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44829,
   "name": "shp_hills3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45083,
   "name": "shp_bar_corner",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45108,
   "name": "shp_bar_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45134,
   "name": "shp_post_office",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45892,
   "name": "shp_pad_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45904,
   "name": "shp_flagpole",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45918,
   "name": "shp_flag0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45936,
   "name": "shp_flag1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45954,
   "name": "shp_kerb_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45962,
   "name": "shp_kerb_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45970,
   "name": "shp_post1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45977,
   "name": "shp_post2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45991,
   "name": "shp_post3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46007,
   "name": "shp_post4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46036,
   "name": "shp_post5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46071,
   "name": "shp_barracks_closed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46458,
   "name": "shp_barracks_open",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46845,
   "name": "shp_barracks_strip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46855,
   "name": "shp_rubble",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46861,
   "name": "shp_fire0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46873,
   "name": "shp_fire1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46885,
   "name": "shp_digit0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46894,
   "name": "shp_digit1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46903,
   "name": "shp_digit2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46912,
   "name": "shp_digit3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46921,
   "name": "shp_digit4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46930,
   "name": "shp_digit5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46939,
   "name": "shp_digit6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46948,
   "name": "shp_digit7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46957,
   "name": "shp_digit8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46966,
   "name": "shp_digit9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46975,
   "name": "shp_counter_hostage",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46991,
   "name": "shp_counter_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47047,
   "name": "shp_mission",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47427,
   "name": "shp_logo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47728,
   "name": "shp_presents",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48038,
   "name": "shp_credit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48261,
   "name": "shp_the_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48368,
   "name": "shp_crowns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48475,
   "name": "shp_first_sortie",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48642,
   "name": "shp_second_sortie",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48824,
   "name": "shp_third_sortie",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "a_C000",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49168,
   "name": "a_C010",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49184,
   "name": "a_C020",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49200,
   "name": "a_C030",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49232,
   "name": "a_C050",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49234,
   "name": "a_C052",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49236,
   "name": "a_C054",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49237,
   "name": "a_C055",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49239,
   "name": "a_C057",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49249,
   "name": "a_C061",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49250,
   "name": "a_C062",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64286,
   "name": "PREAD",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 64477,
   "name": "BELL1",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65535,
   "name": "f_FFFF",
   "type": "Field",
   "kind": "auto"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The helicopter's horizontal speed, a signed 16-bit number in $00/$01 in 256ths of a dot a frame: negative is towards the left (lower world X). Each frame a sixteenth of it is taken off as drag and the stick's thrust added ($737C); kept between -21 and +21 dots a frame."
  },
  {
   "address": 1,
   "type": "line",
   "text": "The high byte of the helicopter's horizontal speed ($00/$01), whole dots a frame. Its sign also tells the enemies which way the helicopter is going."
  },
  {
   "address": 2,
   "type": "line",
   "text": "The helicopter's vertical speed, a signed 16-bit number in $02/$03, positive upwards. The stick sets a target ($7424) that the speed closes on by half the difference each frame."
  },
  {
   "address": 3,
   "type": "line",
   "text": "The high byte of the helicopter's vertical speed ($02/$03)."
  },
  {
   "address": 4,
   "type": "line",
   "text": "The helicopter's world X, low byte of $04/$05, in dots. The helicopter is kept between $02D0 and $1300 (the limits at $7000 and $7002); it starts at $1293, on its pad."
  },
  {
   "address": 5,
   "type": "line",
   "text": "The high byte of the helicopter's world X ($04/$05): the 256-dot stretch of the world it is over, compared with the barracks' ($700F), the fence's ($700D) and the base's ($7009)."
  },
  {
   "address": 6,
   "type": "line",
   "text": "The helicopter's height in rows, counted up from the row it stands on (ground_row, $07): on the ground it is the height for its tilt from land_height_table ($7895), 7 when level; at most 112 ($701D); a value with bit 7 set counts as airborne for the landing check ($770D)."
  },
  {
   "address": 7,
   "type": "line",
   "text": "The row of the ground line, 22, from $701A: the depth every object on the ground is drawn at and the row the hostages stand on."
  },
  {
   "address": 8,
   "type": "line",
   "text": "The helicopter's pose, -5 to +5: 5 is side-on facing one way, -5 side-on facing the other, 0 facing the viewer, and the values between are the steps of turning. turn_step ($0EC2) moves it a step a frame towards the facing asked for."
  },
  {
   "address": 9,
   "type": "line",
   "text": "The helicopter's tilt, -5 to +5, the nose dipped forward as it flies; it follows the horizontal stick $0A a step a frame ($758E) and shears the body, the rotor and the gun."
  },
  {
   "address": 10,
   "type": "line",
   "text": "The horizontal stick, -5 to +5, read from paddle 0 ($769C) or set by the demonstration's script: the thrust and the tilt the helicopter goes for."
  },
  {
   "address": 11,
   "type": "line",
   "text": "The vertical stick, 0 to 15, read from paddle 1 ($7663) or set by the demonstration's script: the climb rate the helicopter goes for, from the table at $7424 (10 holds the height, 15 climbs fastest, 0 sinks fastest)."
  },
  {
   "address": 12,
   "type": "line",
   "text": "1 while the helicopter is in the air, 0 when it is on the ground ($770D)."
  },
  {
   "address": 13,
   "type": "line",
   "text": "1 while the helicopter sits on the ground with no tilt, when hostages near it climb in; 0 otherwise ($77F3)."
  },
  {
   "address": 14,
   "type": "line",
   "text": "1 while the helicopter sits on the post office's landing pad (within 13 to 63 dots of the base's X), when the hostages aboard climb out; it also makes the view scroll to the base ($9CD1)."
  },
  {
   "address": 15,
   "type": "line",
   "text": "Set for one frame when the helicopter comes down at more than about 4.4 dots a frame ($747C): it sinks a row, and the next frame it is lifted back and its vertical speed reversed at an eighth, a bounce ($7454)."
  },
  {
   "address": 16,
   "type": "line",
   "text": "1 once the helicopter has been hit, or has touched the ground at its top horizontal speed ($77EA): the controls are cut and its crash plays out."
  },
  {
   "address": 17,
   "type": "line",
   "text": "The crash's progress, from 1 up to 6 ($7016): the wreck sinks a row a frame into the ground, clipped by this many rows at the bottom ($7DA0), and the sound stops at 6, when the hostages aboard are counted as killed."
  },
  {
   "address": 18,
   "type": "line",
   "text": "Zero during a sortie; set to 1 when the wreck has settled, then counted up by 6 a frame (5 in the demonstration) until it turns negative, when the next sortie, or the title, follows."
  },
  {
   "address": 19,
   "type": "line",
   "text": "$FF from a press of button 0 until the helicopter's object fires the shot ($8276), then 0."
  },
  {
   "address": 20,
   "type": "line",
   "text": "The address of this frame's erase list ($14/$15), where every shape drawn on the page being drawn records its box (kind, X, row) for erasing two frames later: $7025 or $70C5, swapped with $16/$17 each frame by erase_old ($9B4C)."
  },
  {
   "address": 21,
   "type": "line",
   "text": "High byte of erase_this ($14/$15)."
  },
  {
   "address": 22,
   "type": "line",
   "text": "The address of the other page's erase list ($16/$17), swapped with $14/$15 each frame."
  },
  {
   "address": 23,
   "type": "line",
   "text": "High byte of erase_other ($16/$17)."
  },
  {
   "address": 24,
   "type": "line",
   "text": "The length in bytes of this frame's erase list (four bytes an entry), swapped with $19 each frame."
  },
  {
   "address": 25,
   "type": "line",
   "text": "The length in bytes of the other page's erase list."
  },
  {
   "address": 26,
   "type": "line",
   "text": "A shape's address ($1A/$1B), looked up in a table and handed to gfx_shape ($104E) by its address."
  },
  {
   "address": 27,
   "type": "line",
   "text": "High byte of shape_ptr ($1A/$1B)."
  },
  {
   "address": 28,
   "type": "line",
   "text": "A shape's world X ($1C/$1D) and row ($1E), the three bytes handed to gfx_place ($1054) by their address, and read back by add_erase ($7BF8) to record the box."
  },
  {
   "address": 29,
   "type": "line",
   "text": "High byte of place_x ($1C/$1D)."
  },
  {
   "address": 30,
   "type": "line",
   "text": "The row of place_x ($1C-$1E), counted up from the bottom of the screen."
  },
  {
   "address": 31,
   "type": "line",
   "text": "An erase box's screen X ($1F/$20) and row ($21): add_erase stores the shape's X less the view's left edge, and its row plus the window offset; erase_old reads them back and adjusts them by the kind's box."
  },
  {
   "address": 32,
   "type": "line",
   "text": "High byte of erase_x ($1F/$20)."
  },
  {
   "address": 33,
   "type": "line",
   "text": "The row of an erase box ($1F-$21)."
  },
  {
   "address": 36,
   "type": "line",
   "text": "A vector set by the loader to $0C92 (game_over): the sortie loop jumps through it when the hostages brought home and killed make 64."
  },
  {
   "address": 40,
   "type": "line",
   "text": "A vector set by the loader to $081F (title): the attract mode jumps through it when it ends."
  },
  {
   "address": 42,
   "type": "line",
   "text": "A vector set by the loader to $09C7 (attract): where the game starts after the load."
  },
  {
   "address": 58,
   "type": "line",
   "text": "A vector set by the loader to $0B5F (new_game): taken when a key or button is pressed in the title or the attract mode."
  },
  {
   "address": 60,
   "type": "line",
   "text": "A vector set by the loader to $0C13 (sortie_loop): taken when a sortie's announcement is over."
  },
  {
   "address": 78,
   "type": "line",
   "text": "A vector set by the loader to $0B9B (next_sortie): taken at the start of a game."
  },
  {
   "address": 86,
   "type": "line",
   "text": "The game's main working byte: a count, a difference, a table index, whatever the routine at hand needs."
  },
  {
   "address": 87,
   "type": "line",
   "text": "A second working byte, the high byte of a difference or a product."
  },
  {
   "address": 88,
   "type": "line",
   "text": "A third working byte; also a random number kept for several tests ($6894), a distance to the helicopter, or a pointer's low byte with $59."
  },
  {
   "address": 89,
   "type": "line",
   "text": "The high byte that goes with $58: a distance's or a pointer's."
  },
  {
   "address": 90,
   "type": "line",
   "text": "The kind of shape add_erase ($7BF8) records, and the kind erase_old reads back: an index into erase_boxes ($9C69)."
  },
  {
   "address": 91,
   "type": "line",
   "text": "erase_old's box: dots to the left of the recorded X ($5B), from erase_boxes; also the view's scroll step in scroll_step ($9E19)."
  },
  {
   "address": 92,
   "type": "line",
   "text": "erase_old's box: rows above the recorded row, from erase_boxes."
  },
  {
   "address": 93,
   "type": "line",
   "text": "The signed 16-bit number ($5D/$5E) that shift_right ($7F22) and shift_left ($9E65) halve or double Y times."
  },
  {
   "address": 94,
   "type": "line",
   "text": "High byte of the number in $5D/$5E."
  },
  {
   "address": 95,
   "type": "line",
   "text": "A 16-bit distance ($5F/$60): the hills' world X in draw_hills, the gap between the view and its target in scroll_step."
  },
  {
   "address": 96,
   "type": "line",
   "text": "High byte of $5F/$60."
  },
  {
   "address": 97,
   "type": "line",
   "text": "The signed X offset handed to object_place ($7B59) in X, and erase_old's box width in bytes."
  },
  {
   "address": 98,
   "type": "line",
   "text": "The row offset handed to object_place in Y, and erase_old's box height in rows."
  },
  {
   "address": 99,
   "type": "line",
   "text": "A sign or a flag kept across a calculation: the sign of a difference ($73C8), a hostage's way of being drawn ($628E: $40 for the squashed one), or a jet's direction ($8B5F)."
  },
  {
   "address": 100,
   "type": "line",
   "text": "The helicopter's X less a tank's ($64/$65), and with $80 added the tank's aim; also the drone's horizontal distance."
  },
  {
   "address": 101,
   "type": "line",
   "text": "High byte of $64/$65."
  },
  {
   "address": 102,
   "type": "line",
   "text": "The helicopter's height less an object's."
  },
  {
   "address": 103,
   "type": "line",
   "text": "$FF when the jet being drawn was off the screen ($8006), 0 when it was drawn: a jet's manoeuvre ends only off the screen."
  },
  {
   "address": 104,
   "type": "line",
   "text": "A world X ($68/$69) and row ($6A) worked out for a shape or a new object: the fence's, the base's, an exploding enemy's."
  },
  {
   "address": 105,
   "type": "line",
   "text": "High byte of $68/$69."
  },
  {
   "address": 106,
   "type": "line",
   "text": "The row that goes with $68/$69."
  },
  {
   "address": 108,
   "type": "line",
   "text": "X saved across a counter update ($79BA-$7A6B)."
  },
  {
   "address": 109,
   "type": "line",
   "text": "Y saved across a counter update."
  },
  {
   "address": 110,
   "type": "line",
   "text": "The jet's step from its manoeuvre's script ($8006): the picture to draw."
  },
  {
   "address": 111,
   "type": "line",
   "text": "The X step of a jet's script or of the helicopter's rotors (with $70, the row step)."
  },
  {
   "address": 112,
   "type": "line",
   "text": "The row step that goes with $6F."
  },
  {
   "address": 113,
   "type": "line",
   "text": "The jet's change of depth from its script; also a depth kept for a comparison ($88C9)."
  },
  {
   "address": 114,
   "type": "line",
   "text": "The world X of the screen's left edge ($72/$73): starts at $1208, follows the helicopter ($9CD1) between $02B0 and $1208 (the limits at $7004 and $7006)."
  },
  {
   "address": 115,
   "type": "line",
   "text": "High byte of view_x ($72/$73)."
  },
  {
   "address": 116,
   "type": "line",
   "text": "erase_old's rows of a box above the ground line, filled black."
  },
  {
   "address": 117,
   "type": "line",
   "text": "erase_old's rows of a box below the ground line, filled with the ground's colour."
  },
  {
   "address": 118,
   "type": "line",
   "text": "The random number generator's byte ($78F5), seeded at start-up from whatever A held."
  },
  {
   "address": 119,
   "type": "line",
   "text": "The frame counter of the current phase: the title's, the demonstration's, a sortie's, the end screen's."
  },
  {
   "address": 120,
   "type": "line",
   "text": "$00 or $FF, flipped every frame with the page drawn on: the planet and the stars, which are stored straight into screen memory, pick the page by it."
  },
  {
   "address": 121,
   "type": "line",
   "text": "$FF in a real game, 0 in the title, the attract mode and after the end: the sound and the counters at the top are only updated while it is set."
  },
  {
   "address": 122,
   "type": "line",
   "text": "The object being worked on: its offset in the object table ($7165 + $7A), a multiple of 10."
  },
  {
   "address": 123,
   "type": "line",
   "text": "The next object in the list, kept by the object loop ($8651) before the current one's routine runs, since that may unlink it."
  },
  {
   "address": 124,
   "type": "line",
   "text": "The first free slot of the object table, the head of the free list (linked through the slots' last byte), 0 when none is left."
  },
  {
   "address": 128,
   "type": "line",
   "text": "The library's drawing position: the row of the shape's top line, counted up from the bottom of the screen."
  },
  {
   "address": 129,
   "type": "line",
   "text": "The library's drawing position: screen X ($81/$82), 0 to 279."
  },
  {
   "address": 130,
   "type": "line",
   "text": "High byte of the screen X ($81/$82)."
  },
  {
   "address": 131,
   "type": "line",
   "text": "The address of the screen line being drawn ($83/$84), from row_lo and row_hi, with the page's bit EORed in."
  },
  {
   "address": 132,
   "type": "line",
   "text": "High byte of the screen line's address ($83/$84)."
  },
  {
   "address": 133,
   "type": "line",
   "text": "The byte column (0-39) the shape starts at, from x_to_column. copy_clip turns it into the last column of the clipped copy (g_col + g_width - 1, $1695-$169C), which gfx_copy_bytes works back from; gfx_draw_slant steps it a column at a time as it shears ($1BE9, $1BF6)."
  },
  {
   "address": 134,
   "type": "line",
   "text": "The dot within the byte column where the shape starts (0-6), or that dot's mask."
  },
  {
   "address": 135,
   "type": "line",
   "text": "The byte column being written as a row is drawn."
  },
  {
   "address": 136,
   "type": "line",
   "text": "gfx_draw_slant's row at which the current source row starts."
  },
  {
   "address": 137,
   "type": "line",
   "text": "The dots left in the screen byte being filled; in gfx_draw_slant, the current dot's mask."
  },
  {
   "address": 138,
   "type": "line",
   "text": "The source byte being read within a row; in gfx_draw_slant, the byte column being written."
  },
  {
   "address": 139,
   "type": "line",
   "text": "The dots of the source row still to draw."
  },
  {
   "address": 140,
   "type": "line",
   "text": "The colour bit, $00 or $80, ORed into every byte drawn (gfx_colour)."
  },
  {
   "address": 141,
   "type": "line",
   "text": "$00 when drawing on page 1, $60 when drawing on page 2: EORed into the high byte of every line address ($20 EOR $60 is $40)."
  },
  {
   "address": 142,
   "type": "line",
   "text": "The shape's width in dots, from its header, less what the clip takes off. For gfx_fill_rect ($126B) and once copy_clip has clipped a copy for gfx_copy_bytes ($1655, $1668) it counts screen bytes instead."
  },
  {
   "address": 143,
   "type": "line",
   "text": "The shape's height in rows, from its header, less what the clip takes off; counted down as the rows are drawn."
  },
  {
   "address": 144,
   "type": "line",
   "text": "A working byte of the column arithmetic (x_to_column, clip_source, the row fill) and of the collision check."
  },
  {
   "address": 145,
   "type": "line",
   "text": "A second working byte of the column arithmetic and of the clip."
  },
  {
   "address": 147,
   "type": "line",
   "text": "A third working byte: the last line of gfx_fill_rows, a quotient or remainder in the clip."
  },
  {
   "address": 148,
   "type": "line",
   "text": "The source byte being shifted out, a dot at a time."
  },
  {
   "address": 149,
   "type": "line",
   "text": "The source pointer ($95/$96): the inline arguments while a service reads them, then the shape's bits."
  },
  {
   "address": 150,
   "type": "line",
   "text": "High byte of the source pointer ($95/$96)."
  },
  {
   "address": 151,
   "type": "line",
   "text": "The lit dots of the screen byte being built, as they leave $94."
  },
  {
   "address": 152,
   "type": "line",
   "text": "The screen byte being built, before it is merged."
  },
  {
   "address": 153,
   "type": "line",
   "text": "The edge mask of the byte being built: a dot of margin beside each lit run (gfx_draw)."
  },
  {
   "address": 157,
   "type": "line",
   "text": "gfx_draw_slant's count of the dots taken from the current source byte, 0 to 7."
  },
  {
   "address": 158,
   "type": "line",
   "text": "The address of an inline word ($9E/$9F) in the services that take the address of their data (inline_ptr_args)."
  },
  {
   "address": 159,
   "type": "line",
   "text": "High byte of $9E/$9F."
  },
  {
   "address": 160,
   "type": "line",
   "text": "A as the service was called: every service puts it back on the way out."
  },
  {
   "address": 161,
   "type": "line",
   "text": "X as the service was called."
  },
  {
   "address": 162,
   "type": "line",
   "text": "Y as the service was called."
  },
  {
   "address": 166,
   "type": "line",
   "text": "The service's own return address ($A6/$A7), taken off the stack by inline_args to get at the caller's."
  },
  {
   "address": 167,
   "type": "line",
   "text": "High byte of $A6/$A7."
  },
  {
   "address": 169,
   "type": "line",
   "text": "The clip margins ($A9-$AC): dots of the shape hidden at the left, set by gfx_clip or by gfx_clip_to_window."
  },
  {
   "address": 170,
   "type": "line",
   "text": "Dots of the shape hidden at the right."
  },
  {
   "address": 171,
   "type": "line",
   "text": "Rows of the shape hidden at the top."
  },
  {
   "address": 172,
   "type": "line",
   "text": "Rows of the shape hidden at the bottom."
  },
  {
   "address": 173,
   "type": "line",
   "text": "The dot within the first source byte where a clipped row starts."
  },
  {
   "address": 174,
   "type": "line",
   "text": "The whole bytes of the source cut off the left of each row by the clip: 0 with nothing cut, or (clip_left - 1) / 7 + 1 in copy_clip ($15E7, $15F4, $1616), and clip_left / 8 in clip_source. It is added to the source's address ($13FE, $156C), and copy_clip takes it off the row's bytes for the count copied ($1653)."
  },
  {
   "address": 175,
   "type": "line",
   "text": "The address of the next source row ($AF/$B0)."
  },
  {
   "address": 176,
   "type": "line",
   "text": "High byte of $AF/$B0."
  },
  {
   "address": 177,
   "type": "line",
   "text": "The bytes in each source row: the width in dots rounded up to a multiple of 8, over 8."
  },
  {
   "address": 178,
   "type": "line",
   "text": "gfx_slant's dots between row steps."
  },
  {
   "address": 179,
   "type": "line",
   "text": "gfx_slant's row step: $FF, $00 or $01."
  },
  {
   "address": 180,
   "type": "line",
   "text": "Set to zero by gfx_reset and read by nothing."
  },
  {
   "address": 181,
   "type": "line",
   "text": "Set to zero by gfx_reset after $B4 and, like it, never read."
  },
  {
   "address": 182,
   "type": "line",
   "text": "Where gfx_draw_hit's shape first met a lit dot: world X ($B6/$B7) and row ($B8). Unused in this game."
  },
  {
   "address": 183,
   "type": "line",
   "text": "High byte of hit_x ($B6/$B7)."
  },
  {
   "address": 184,
   "type": "line",
   "text": "The row of the first hit."
  },
  {
   "address": 185,
   "type": "line",
   "text": "gfx_draw_slant's direction: 0 left to right, $FF right to left (mirrored)."
  },
  {
   "address": 186,
   "type": "line",
   "text": "$80 while a drawer records no collision: gfx_draw_or sets it, and hit_point sets it after the first hit. gfx_draw_hit clears it, so its first hit is recorded."
  },
  {
   "address": 187,
   "type": "line",
   "text": "The value the OR drawers return in A: for gfx_draw_or the A it was called with; for gfx_draw_hit 0, or $B6 once hit_point has recorded a hit."
  },
  {
   "address": 188,
   "type": "line",
   "text": "gfx_draw_slant's rows to go before the start of the next source row shifts by a step."
  },
  {
   "address": 189,
   "type": "line",
   "text": "The row being drawn, an index into row_lo and row_hi."
  },
  {
   "address": 190,
   "type": "line",
   "text": "gfx_draw_slant's dots to go before the next row step."
  },
  {
   "address": 191,
   "type": "line",
   "text": "gfx_draw_slant's step phase within a source row."
  },
  {
   "address": 192,
   "type": "line",
   "text": "The shape's world X ($C0/$C1) and row ($C2), set by gfx_place."
  },
  {
   "address": 193,
   "type": "line",
   "text": "High byte of $C0/$C1."
  },
  {
   "address": 194,
   "type": "line",
   "text": "The shape's row in the world, before the window offset is added."
  },
  {
   "address": 195,
   "type": "line",
   "text": "The current shape's address ($C3/$C4), set by gfx_shape or gfx_shape_direct."
  },
  {
   "address": 196,
   "type": "line",
   "text": "High byte of $C3/$C4."
  },
  {
   "address": 197,
   "type": "line",
   "text": "The highest row a shape may reach, from gfx_window_top; above it a shape is clipped."
  },
  {
   "address": 198,
   "type": "line",
   "text": "A number of rows added to every shape's row (gfx_window_offset): 0 in this game ($7018)."
  },
  {
   "address": 199,
   "type": "line",
   "text": "The world X of the screen's left edge ($C7/$C8), from gfx_view."
  },
  {
   "address": 200,
   "type": "line",
   "text": "High byte of $C7/$C8."
  },
  {
   "address": 2048,
   "type": "line",
   "text": "The game's entry, reached from the loader through ($0020). Clears decimal mode, masks interrupts (twice), seeds the random number generator's byte $76 with whatever A holds, takes any key off the keyboard, resets the graphics library, gives it the window offset at $7018 and the window top at $701E, sets up a new game ($9024), marks the attract mode ($79 = 0) and jumps through the vector at $2A, which the loader set to $09C7, so that the first thing shown after the load is the attract mode's mission screen."
  },
  {
   "address": 2062,
   "type": "line",
   "text": "gfx_window_offset's inline argument (the call at $080B): the address of the window offset, play_offset ($7018), 0."
  },
  {
   "address": 2064,
   "type": "line",
   "text": "Gives the library the window's top, the word after the call pointing at $701E."
  },
  {
   "address": 2067,
   "type": "line",
   "text": "gfx_window_top's inline argument (the call at $0810): the address of the window's top, play_top ($701E), 166."
  },
  {
   "address": 2069,
   "type": "line",
   "text": "Puts the helicopter on its pad, marks the attract mode ($79 = 0) and jumps through the vector at $2A to the attract mode."
  },
  {
   "address": 2079,
   "type": "line",
   "text": "The title sequence, reached through the vector at $28 when the attract mode ends. Draws the empty landscape on both pages ($0D24), sets up the helicopter ($9024), then wipes in \"Broderbund Software presents...\" (the shape whose pointer is at $A0F2) at X 31, row 140: eleven passes with the clip's top margin (the inline byte at $0843) counting down from 10 to 0, so a line more of the lettering shows at each pass, each drawn on both pages. A key or button between passes jumps through the vector at $3A to a new game."
  },
  {
   "address": 2092,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $0829): the address of the shape's pointer, ptr_presents ($A0F2), which holds $BA70, shp_presents."
  },
  {
   "address": 2094,
   "type": "line",
   "text": "Places \"Broderbund Software presents...\" by the three bytes after the call: X 31 (low and high byte) and row 140."
  },
  {
   "address": 2097,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $082E): the screen position, X 31 and row 140."
  },
  {
   "address": 2100,
   "type": "line",
   "text": "Draws with the colour bit set (the blue and orange group), with the clip's top margin at 10 for the first pass."
  },
  {
   "address": 2113,
   "type": "line",
   "text": "gfx_clip's inline arguments (the call at $083E), the clip's margins in dots and rows: the left margin 0, the right margin 0."
  },
  {
   "address": 2115,
   "type": "line",
   "text": "The top margin byte of the gfx_clip call above: the title rewrites it from 10 down to 0, so each pass shows one more line of the lettering."
  },
  {
   "address": 2117,
   "type": "line",
   "text": "One pass of the wipe: the lettering on both pages, the margin one less, until it passes 0 and the logo follows; a key between passes starts a game."
  },
  {
   "address": 2142,
   "type": "line",
   "text": "Places the CHOPLIFTER logo (the shape whose pointer is at $A0F0) 31 dots right of the view's left edge, at row 105, remembering its world X at $09C5, and draws it sheared by the library's slant: at +2 and -2, then mirrored at +2 and -2, each on both pages, with a check for a key between. Then it empties the erase lists and the object list ($7325)."
  },
  {
   "address": 2174,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $087B): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 2176,
   "type": "line",
   "text": "The logo's shape, the word after the call: $A0F0."
  },
  {
   "address": 2179,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $0880): the address of the shape's pointer, ptr_logo ($A0F0), which holds $B943, shp_logo."
  },
  {
   "address": 2181,
   "type": "line",
   "text": "Clips the logo to the window and draws it slanted by +2 on both pages, then by -2, then mirrored at +2 and at -2, a key between each starting a game; then empties the erase lists and the object list."
  },
  {
   "address": 2279,
   "type": "line",
   "text": "The title's frame loop, counted in $77 to 56, then the attract mode ($09C7). From frame 2 a key or button starts a game. From frame 20 to 33 it blanks rows 93 to 105; each frame it erases what it drew on this page two frames before ($900F) and redraws the planet's bottom six lines ($902A), which the logo crosses, then the logo twice, the two copies (31 - frame) x 8 dots either side of its place, closing up to one dot apart by frame 32, the right-hand copy drawn by OR from frame 20. At frame 32 it adds \"Dan Gorlin, Copyright 1982\" ($A0F4) at X 48, row 68, wiped in over 17 passes of the clip's top margin as the first line was."
  },
  {
   "address": 2371,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $0940): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 2373,
   "type": "line",
   "text": "The left-hand copy of the logo: the shape whose pointer is at $A0F0 again."
  },
  {
   "address": 2376,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $0945): the address of the shape's pointer, ptr_logo ($A0F0), which holds $B943, shp_logo."
  },
  {
   "address": 2378,
   "type": "line",
   "text": "Draws the left-hand copy with the colour bit set, then works out the right-hand copy's X, one dot further from the place the closing gap is measured from."
  },
  {
   "address": 2415,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $096C): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 2417,
   "type": "line",
   "text": "Draws the right-hand copy, opaque before frame 20 and by OR from then on; at frame 32 the credit line follows."
  },
  {
   "address": 2446,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $098B): the address of the shape's pointer, ptr_credit ($A0F4), which holds $BBA6, shp_credit."
  },
  {
   "address": 2448,
   "type": "line",
   "text": "The credit line's place, from the three bytes after the call: X 48, row 68."
  },
  {
   "address": 2451,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $0990): the screen position, X 48 and row 68."
  },
  {
   "address": 2454,
   "type": "line",
   "text": "The colour bit set, and the credit's clip margin starts at 16."
  },
  {
   "address": 2467,
   "type": "line",
   "text": "gfx_clip's inline arguments (the call at $09A0), the clip's margins in dots and rows: the left margin 0, the right margin 0."
  },
  {
   "address": 2469,
   "type": "line",
   "text": "The top margin byte of the gfx_clip call that wipes in the credit line, rewritten from 16 down to 0."
  },
  {
   "address": 2471,
   "type": "line",
   "text": "One pass of the credit's wipe on both pages, 17 in all; then the page drawn is shown and the pages swap."
  },
  {
   "address": 2501,
   "type": "line",
   "text": "The CHOPLIFTER logo's world X during the title, low and high bytes: the view's left edge plus 31."
  },
  {
   "address": 2502,
   "type": "line",
   "text": "The logo's world X, high byte."
  },
  {
   "address": 2503,
   "type": "line",
   "text": "The attract mode, reached through the vector at $2A: draws the empty landscape, redraws the counters' bar if a game was on ($9021, which also refills the barracks), sets up the helicopter ($9024), zeroes the frame counter $77 and the mirror flag $0ADE, opens the fourth barracks ($901E) and sets the level $731D to 0, then draws \"your mission: RESCUE HOSTAGES\" ($A0EE) at X 82, row 110 on both pages before the demonstration flight."
  },
  {
   "address": 2533,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $09E2): the address of the shape's pointer, ptr_mission ($A0EE), which holds $B7C7, shp_mission."
  },
  {
   "address": 2535,
   "type": "line",
   "text": "The mission text's place, from the three bytes after the call: X 82, row 110."
  },
  {
   "address": 2538,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $09E7): the screen position, X 82 and row 110."
  },
  {
   "address": 2541,
   "type": "line",
   "text": "Draws \"your mission: RESCUE HOSTAGES\" with the colour bit set on one page, shows it, flips, and does the same on the other."
  },
  {
   "address": 2564,
   "type": "line",
   "text": "The demonstration's frame loop. The helicopter is flown by the script at $0ADF, one entry per eight frames of $77. At frame 224 the flight is played again mirrored ($0ADE = $FF, the speeds reset); at the end of the mirrored run, or when the demonstration's helicopter has crashed and its countdown $12 has run out, it goes back to the title. Each frame a key or button starts a game (through $3A); then the same calls as a sortie's frame, without the joystick and the buttons; at frames 48 and 49 of the first run it blanks rows 80 to 112, the mission text."
  },
  {
   "address": 2782,
   "type": "line",
   "text": "$00 during the demonstration's first run, $FF during the second, when the script's stick and facing are negated so the helicopter flies the other way."
  },
  {
   "address": 2783,
   "type": "line",
   "text": "The demonstration's script, 32 entries of 4 bytes, one per eight frames: the vertical stick ($0B, 0-15, 10 holds the height), the horizontal stick ($0A, -5 to +5, negated in the mirrored run), the facing the helicopter turns to ($72F9: 0 towards the viewer, 1 and $FF the two sides, negated in the mirrored run) and a fire flag: a positive flag fires only in the first run, a negative one only in the mirrored run. The last twelve entries hold the vertical stick at 6, a slow descent."
  },
  {
   "address": 2784,
   "type": "line",
   "text": "The second byte of each entry of demo_script, read one on from it: the horizontal stick."
  },
  {
   "address": 2785,
   "type": "line",
   "text": "The third byte of each entry: the facing to turn to."
  },
  {
   "address": 2786,
   "type": "line",
   "text": "The fourth byte of each entry, the fire flag; the rest of the 32 entries follow."
  },
  {
   "address": 2911,
   "type": "line",
   "text": "A new game, reached through the vector at $3A from the title or the attract mode: draws the landscape on both pages with the buildings ($0D1C), marks a real game ($79 = $FF, which lets the sound and the counters through), redraws the counters' bar at 00 and refills the barracks ($9021), plays three phrases of three notes (periods 144, 67, 97; then 112, 67, 97; then 80, 67, 97; 48 clicks each), opens the fourth barracks ($901E) and jumps through the vector at $4E to announce the first sortie."
  },
  {
   "address": 2971,
   "type": "line",
   "text": "Announces a sortie, reached through the vector at $4E for a game's first and by the JMP at $0C47 once a lost helicopter's countdown runs out: after the third helicopter ($731C = 3) the game ends ($0C92). Otherwise it draws the landscape and sets up the helicopter on its pad ($9024), then for 23 frames reads the keys and redraws the scenery (the erase list, the stars, the planet, the hills and the base, but no objects and no flight) with \"FIRST SORTIE\", \"SECOND SORTIE\" or \"THIRD SORTIE\" (the shape pointers at $A0FA, one per helicopter used) drawn at row 107, X 95 (89 for the second, which is wider); then it counts the helicopter in $731C and jumps through the vector at $3C to play."
  },
  {
   "address": 3041,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $0BDE): the screen position, X 95 and row 107."
  },
  {
   "address": 3044,
   "type": "line",
   "text": "The first and third sorties' messages are placed at X 95; this jumps past the second's placing at X 89, which is wider."
  },
  {
   "address": 3050,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $0BE7): the screen position, X 89 and row 107."
  },
  {
   "address": 3053,
   "type": "line",
   "text": "Takes the sortie's message from the pointers at $A0FA, by the helicopters used so far."
  },
  {
   "address": 3071,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $0BFC): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 3072,
   "type": "line",
   "text": "The high byte of gfx_shape's inline argument at $0BFF, $00: shape_ptr is in page zero."
  },
  {
   "address": 3073,
   "type": "line",
   "text": "Draws the sortie's message opaque, shows the page and flips, then loops back for the next of the 23 frames."
  },
  {
   "address": 3091,
   "type": "line",
   "text": "A sortie's frame loop, reached through the vector at $3C. Each frame clears the once-a-frame sound flags ($731F-$7321). If all 64 hostages have been brought home ($730B) the game ends with the crowns ($0CA2); if those brought home and those killed ($730C) make 64 it ends through the vector at $24 ($0C92). When the helicopter has been lost and its countdown $12 runs out, the next sortie ($0B9B). Then: the keys, the vertical stick ($7376), button 1 ($0E3B), button 0 ($0E02, checked twice more in the frame), the erase list, the stars, the planet, the scrolling, the hills, the base, the fence, the barracks, the hostages, the horizontal stick ($7379), the spawning of enemies, every object ($8000), the re-sorting of the objects whose depth changed ($7355), and it shows the page drawn and flips to the other."
  },
  {
   "address": 3218,
   "type": "line",
   "text": "The end of a game, through the vector at $24 or after the third helicopter: \"THE END\" ($0D1B = 0)."
  },
  {
   "address": 3234,
   "type": "line",
   "text": "The end of a game in which all 64 hostages were brought home: the three crowns instead of \"THE END\" ($0D1B = $FF)."
  },
  {
   "address": 3247,
   "type": "line",
   "text": "The end screen's loop, 32 frames, then the title. The stick is held at 2 (a steep descent) and centred, and the world goes on while \"THE END\", or the crowns, is drawn at X 117, row 112 every frame."
  },
  {
   "address": 3316,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $0CF1): the screen position, X 117 and row 112."
  },
  {
   "address": 3319,
   "type": "line",
   "text": "Picks the end screen's picture: \"THE END\", or the crowns when end_crowns is set."
  },
  {
   "address": 3327,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $0CFC): the address of the shape's pointer, ptr_the_end ($A0F6), which holds $BC85, shp_the_end."
  },
  {
   "address": 3329,
   "type": "line",
   "text": "\"THE END\" is chosen; this skips the crowns."
  },
  {
   "address": 3335,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $0D04): the address of the shape's pointer, ptr_crowns ($A0F8), which holds $BCF0, shp_crowns."
  },
  {
   "address": 3337,
   "type": "line",
   "text": "Draws \"THE END\" or the crowns opaque, shows the page, swaps the pages and goes round the end screen's loop again."
  },
  {
   "address": 3355,
   "type": "line",
   "text": "$FF when the game ended with all 64 hostages brought home, so the end screen shows the three crowns ($A0F8) instead of \"THE END\" ($A0F6)."
  },
  {
   "address": 3356,
   "type": "line",
   "text": "Draws the landscape with the base ($0D91 = $FF), then goes on as draw_landscape."
  },
  {
   "address": 3364,
   "type": "line",
   "text": "Draws the empty landscape on both pages ($0D91 = 0, without the base): sets the view from $7006/$7007, then on each page erases the last lists ($900F), blackens the sky from row 26 to row 166 ($701B + 1 to $701E), draws the stars in their first pattern ($9027) and the planet ($9000), the hills ($732B) and, for a game, the base ($9012), shows the page and flips. Entered at $0D1C, it draws the base too."
  },
  {
   "address": 3382,
   "type": "line",
   "text": "gfx_view's inline argument (the call at $0D33): the address of the view's left edge, view_x ($0072/$0073)."
  },
  {
   "address": 3384,
   "type": "line",
   "text": "On each page in turn: the erase list, the sky blackened from the ground's top to the window's top, the stars, the planet, the hills, the base when asked for, then the page shown and the pages swapped."
  },
  {
   "address": 3473,
   "type": "line",
   "text": "$FF when draw_landscape also draws the base ($9012), $00 when it does not."
  },
  {
   "address": 3474,
   "type": "line",
   "text": "Reads the keyboard and the buttons, called once a frame. Returns carry set when a key is waiting or button 0 or 1 is pressed, and acts on the game's keys: CTRL-S flips the sound ($72F6), CTRL-V and CTRL-A flip the joystick's up and down ($72F5) and left and right ($72F4), ESC waits for a second ESC (the pause; another key there is handled as if typed on its own), and CTRL-L waits for a key and keeps its low two bits as the level ($731D), which counts from then on: pressed before a game, it is lost, since a new game sets the level to 0 ($9021). All of those return carry clear except the sound and joystick keys and any other key, which return carry set. Carry clear: nothing pressed."
  },
  {
   "address": 3586,
   "type": "line",
   "text": "Button 0 in play: while it is held, firing (below); released, the latch at $0E3A is cleared."
  },
  {
   "address": 3593,
   "type": "line",
   "text": "Clears the fire latch at $0E3A: the next press of button 0 fires again."
  },
  {
   "address": 3599,
   "type": "line",
   "text": "Button 0 pressed: nothing while a shot is already waiting to be fired ($13) or the button has not been released since the last press ($0E3A). Otherwise the press is latched, and a shot is asked for unless the helicopter is on the ground ($0C = 0) or has been hit ($10), or five of its shots are in flight ($7310): $13 = $FF, for the helicopter's object to fire, and a short tone sweeps (period 48, 32 clicks, rising by 1)."
  },
  {
   "address": 3642,
   "type": "line",
   "text": "$FF from a shot until button 0 is let go."
  },
  {
   "address": 3643,
   "type": "line",
   "text": "Button 1 in play, airborne. A press chooses the side the helicopter is to face: if it is already turning, or faces the viewer, it remembers its pose in $72FA and turns to the side the stick leans to ($72F7's sign: $FF left, 1 right); if it faces a side, it remembers that side. On release, a helicopter facing a side whose pose has not passed the front turns to face the viewer ($72F9 = 0); otherwise it carries on round to the remembered side. A short press thus turns it to face the viewer, a long one turns it all the way round. Then turns the body one step ($0EC2)."
  },
  {
   "address": 3778,
   "type": "line",
   "text": "Moves the helicopter's pose $08 one step a frame towards the facing $72F9 asks for: 5 for one side, -5 for the other, and when it faces the viewer, the pose the table at $0F16 gives for its tilt $09. A step of 2 when it is more than one pose away."
  },
  {
   "address": 3861,
   "type": "line",
   "text": "$FF while button 1 is held."
  },
  {
   "address": 3862,
   "type": "line",
   "text": "The pose the helicopter takes when facing the viewer, by its tilt $09 + 5 (tilts -5 to +6): 1 when tilted hard one way, -1 hard the other way, 0 between."
  },
  {
   "address": 3874,
   "type": "line",
   "text": "Not run and not read: 222 bytes of another program, left in memory when the page was saved to the disk. They disassemble as a page copier ($0F22) and a command prompt that reads a line through the Monitor's GETLN ($FD6F) and asks for Y or N ($0F3F); the game never reaches them."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "The graphics library's jump table, 33 entries of JMP, one per service, so that the game calls each service at a fixed address ($1000-$1060, 3 bytes apart). This first entry goes to gfx_fill_rect_impl ($1224). Every service saves A, X and Y in $A0-$A2 and gives them back unchanged, except the collision drawers, which return a flag in A."
  },
  {
   "address": 4099,
   "type": "line",
   "text": "Jump-table entry to $1296: draw on page 1, colour bit clear, no slant, the clip margins zero, the clip window's top at 192 and its offset and view position zero."
  },
  {
   "address": 4102,
   "type": "line",
   "text": "Jump-table entry to $12C1: switch the display to full-screen hi-res graphics."
  },
  {
   "address": 4105,
   "type": "line",
   "text": "Jump-table entry to $12F2: fill the whole hi-res page being drawn on with zeros (black)."
  },
  {
   "address": 4108,
   "type": "line",
   "text": "Jump-table entry to $131B: fill whole 40-byte screen lines with the byte in A, from the line in X up to the line in Y (lines counted from the bottom)."
  },
  {
   "address": 4111,
   "type": "line",
   "text": "Jump-table entry to $12CB: draw on page 1 from now on."
  },
  {
   "address": 4114,
   "type": "line",
   "text": "Jump-table entry to $12D2: draw on the other hi-res page from now on."
  },
  {
   "address": 4117,
   "type": "line",
   "text": "Jump-table entry to $12E3: show the page being drawn on."
  },
  {
   "address": 4120,
   "type": "line",
   "text": "Jump-table entry to $12B4: set the four clip margins to zero."
  },
  {
   "address": 4123,
   "type": "line",
   "text": "Jump-table entry to $19D8: draw the current shape facing right, replacing the pixels under it."
  },
  {
   "address": 4126,
   "type": "line",
   "text": "Jump-table entry to $1A5E: draw the current shape mirrored left to right, replacing the pixels under it."
  },
  {
   "address": 4129,
   "type": "line",
   "text": "Jump-table entry to $182F: draw the current shape facing right by OR, with no collision report."
  },
  {
   "address": 4132,
   "type": "line",
   "text": "Jump-table entry to $18BE: the same, mirrored left to right."
  },
  {
   "address": 4135,
   "type": "line",
   "text": "Jump-table entry to $16DE: draw the current shape facing right, keeping the byte's other pixels and blending its edges."
  },
  {
   "address": 4138,
   "type": "line",
   "text": "Jump-table entry to $177C: the same, mirrored left to right."
  },
  {
   "address": 4141,
   "type": "line",
   "text": "Jump-table entry to $1826: draw the current shape facing right by OR and report the first lit dot that lands on one already lit. Nothing in the game calls it."
  },
  {
   "address": 4144,
   "type": "line",
   "text": "Jump-table entry to $18B5: the same, mirrored left to right. Nothing in the game calls it."
  },
  {
   "address": 4147,
   "type": "line",
   "text": "Jump-table entry to $1AF3: draw the current shape a dot at a time, sheared by the slant $1048 set, left to right."
  },
  {
   "address": 4150,
   "type": "line",
   "text": "Jump-table entry to $1B00: the same, right to left."
  },
  {
   "address": 4153,
   "type": "line",
   "text": "Jump-table entry to $155D: copy the current shape's bytes straight onto the screen, whole bytes at a time."
  },
  {
   "address": 4156,
   "type": "line",
   "text": "Jump-table entry to $10AF. Takes three inline bytes after the JSR: the screen position's X (low, high) and the row from the bottom, into $81, $82 and $80."
  },
  {
   "address": 4159,
   "type": "line",
   "text": "Jump-table entry to $10DA. Takes an inline word after the JSR: the address of three bytes, X (low, high) and the row, copied into $81, $82 and $80."
  },
  {
   "address": 4162,
   "type": "line",
   "text": "Jump-table entry to $10F8: keep bit 7 of A in $8C, the colour group every byte drawn gets (clear: violet and green; set: blue and orange)."
  },
  {
   "address": 4165,
   "type": "line",
   "text": "Jump-table entry to $10FD. Takes four inline bytes after the JSR: the clip margins left, right, top and bottom, into $A9-$AC."
  },
  {
   "address": 4168,
   "type": "line",
   "text": "Jump-table entry to $11F6: set the slant for gfx_draw_slant from A, -5 to +5."
  },
  {
   "address": 4171,
   "type": "line",
   "text": "Jump-table entry to $112D. Takes an inline word after the JSR: the address of the shape to draw, into $C3/$C4."
  },
  {
   "address": 4174,
   "type": "line",
   "text": "Jump-table entry to $1153. Takes an inline word after the JSR: the address of a word holding the shape's address, copied into $C3/$C4."
  },
  {
   "address": 4177,
   "type": "line",
   "text": "Jump-table entry to $116C. Takes three inline bytes after the JSR: the shape's world X (low, high) and row, into $C0-$C2."
  },
  {
   "address": 4180,
   "type": "line",
   "text": "Jump-table entry to $1197. Takes an inline word after the JSR: the address of three bytes, world X (low, high) and row, copied into $C0-$C2."
  },
  {
   "address": 4183,
   "type": "line",
   "text": "Jump-table entry to $11B5. Takes an inline word after the JSR: the address of a word holding the world X of the screen's left edge, into $C7/$C8."
  },
  {
   "address": 4186,
   "type": "line",
   "text": "Jump-table entry to $11CE. Takes an inline word after the JSR: the address of the byte added to every row before drawing, into $C6."
  },
  {
   "address": 4189,
   "type": "line",
   "text": "Jump-table entry to $11E2. Takes an inline word after the JSR: the address of the byte giving the highest row a shape may reach, into $C5."
  },
  {
   "address": 4192,
   "type": "line",
   "text": "Jump-table entry to $1484: turn the shape at $C3 placed at world X $C0/$C1, row $C2 into a screen position and clip margins; returns carry set when nothing of it is on the screen."
  },
  {
   "address": 4195,
   "type": "line",
   "text": "Shared by the inline-argument services: called from inside one of them, it takes that service's own return address off the stack into $A6/$A7, then the caller's (the address of the JSR's last byte), adds one and leaves it in $95/$96, pointing at the inline bytes, and jumps back into the service through ($A6). The service reads the bytes through ($95),Y, adds their count to $95 and jumps through ($95) to the instruction after them."
  },
  {
   "address": 4221,
   "type": "line",
   "text": "The same as inline_args ($1063) for services whose inline argument is the address of their data: the inline word's address goes in $9E/$9F, the word itself in $95/$96, and $9E/$9F is moved past the two bytes for the service's return through ($9E)."
  },
  {
   "address": 4271,
   "type": "line",
   "text": "gfx_at ($103C): reads the three inline bytes into $81 (X low), $82 (X high) and $80 (row from the bottom), and returns past them."
  },
  {
   "address": 4314,
   "type": "line",
   "text": "gfx_at_ptr ($103F): reads X low, X high and the row from the three bytes the inline word points at, into $81, $82 and $80, and returns past the word."
  },
  {
   "address": 4344,
   "type": "line",
   "text": "gfx_colour ($1042): AND #$80 and keep it in $8C, which every drawing routine ORs into the bytes it writes."
  },
  {
   "address": 4349,
   "type": "line",
   "text": "gfx_clip ($1045): reads four inline bytes into the clip margins $A9 (left), $AA (right), $AB (top) and $AC (bottom), and returns past them."
  },
  {
   "address": 4397,
   "type": "line",
   "text": "gfx_shape_direct ($104B): the inline word is the shape's address, into $C3/$C4."
  },
  {
   "address": 4435,
   "type": "line",
   "text": "gfx_shape ($104E): the inline word points at a word, read into $C3/$C4 as the shape's address."
  },
  {
   "address": 4460,
   "type": "line",
   "text": "gfx_place_direct ($1051): three inline bytes into $C0, $C1 and $C2, the world X and the row."
  },
  {
   "address": 4503,
   "type": "line",
   "text": "gfx_place ($1054): the inline word points at three bytes, copied into $C0, $C1 and $C2."
  },
  {
   "address": 4533,
   "type": "line",
   "text": "gfx_view ($1057): the inline word points at a word, copied into $C7/$C8, the world X of the screen's left edge."
  },
  {
   "address": 4558,
   "type": "line",
   "text": "gfx_window_offset ($105A): the inline word points at a byte, copied into $C6, added to every shape's row."
  },
  {
   "address": 4578,
   "type": "line",
   "text": "gfx_window_top ($105D): the inline word points at a byte, copied into $C5, the highest row a shape may reach."
  },
  {
   "address": 4598,
   "type": "line",
   "text": "gfx_slant ($1048): with A from -5 to +5, index (A+5)*2 into slant_steps ($120E) gives $B3, the row step ($FF, $00 or $01), and $B2, how many dots go by between steps."
  },
  {
   "address": 4622,
   "type": "line",
   "text": "Eleven pairs for gfx_slant ($11F6), one for each slant -5 to +5: the row step taken ($FF up, $00 none, $01 down) and the number of dots between steps (3, 4, 5, 10, 13, 0, 13, 10, 5, 4, 3). Slant 0 never steps."
  },
  {
   "address": 4623,
   "type": "line",
   "text": "The second byte of each of slant_steps' pairs, read one on from it: the dots between row steps."
  },
  {
   "address": 4644,
   "type": "line",
   "text": "gfx_fill_rect ($1000): fills a box with a dither pattern. The current shape's header gives its width in screen bytes and its height in rows, and its first four data bytes the pattern: on even rows the bytes alternate between the first two, on odd rows between the other two. The box starts at the byte column of screen X $81/$82 and at row $80 and goes down; it is cut at column 40."
  },
  {
   "address": 4725,
   "type": "line",
   "text": "The operand of this LDA #, written for each row by gfx_fill_rect: the pattern's byte for the odd columns."
  },
  {
   "address": 4727,
   "type": "line",
   "text": "The low byte of the STA's address, written for each row: the start of the row on the page being drawn."
  },
  {
   "address": 4728,
   "type": "line",
   "text": "The high byte of that address, with the page in it. The loop stores the two pattern bytes in turn across the row's columns."
  },
  {
   "address": 4734,
   "type": "line",
   "text": "The operand of the second LDA #: the pattern's byte for the even columns."
  },
  {
   "address": 4736,
   "type": "line",
   "text": "The second STA's address, low byte: the same row start again."
  },
  {
   "address": 4737,
   "type": "line",
   "text": "Its high byte. When the row is done, the next row up, until the box's height is filled; then the registers come back."
  },
  {
   "address": 4758,
   "type": "line",
   "text": "gfx_reset ($1003): calls gfx_no_clip, then sets the page ($8D), the colour bit ($8C), the slant ($B2/$B3), $B4, $B5, the window offset ($C6) and the view position ($C7/$C8) to zero, and the window top ($C5) to 192."
  },
  {
   "address": 4788,
   "type": "line",
   "text": "gfx_no_clip ($1018): zero the clip margins $A9-$AC."
  },
  {
   "address": 4801,
   "type": "line",
   "text": "gfx_hires_on ($1006): touches $C057 (hi-res), $C052 (full screen) and $C050 (graphics)."
  },
  {
   "address": 4811,
   "type": "line",
   "text": "gfx_draw_page1 ($100F): $8D = 0, so drawing goes to page 1 at $2000."
  },
  {
   "address": 4818,
   "type": "line",
   "text": "gfx_flip_page ($1012): toggle $8D between $00 and $60. Every line address's high byte is EORed with it, which turns $20-$3F into $40-$5F: page 2."
  },
  {
   "address": 4835,
   "type": "line",
   "text": "gfx_show_page ($1015): show page 1 ($C054) when $8D is 0, page 2 ($C055) otherwise."
  },
  {
   "address": 4850,
   "type": "line",
   "text": "gfx_clear_page ($1009): zero the 8 KB of the page being drawn on, $2000 or $4000, by rewriting the operand of its own store."
  },
  {
   "address": 4874,
   "type": "line",
   "text": "The low byte of the clearing store's address, $00."
  },
  {
   "address": 4875,
   "type": "line",
   "text": "The high byte of the clearing store's address: $20 or $40 for the page, one more after each 256 bytes, 32 times."
  },
  {
   "address": 4891,
   "type": "line",
   "text": "gfx_fill_rows ($100C): store A across all 40 bytes of every line from index X up to Y inclusive, lines counted from the bottom (row_lo/row_hi), on the page being drawn on."
  },
  {
   "address": 4915,
   "type": "line",
   "text": "The low byte of gfx_fill_rows' store, written for each line: the line's start."
  },
  {
   "address": 4916,
   "type": "line",
   "text": "Its high byte, with the page. The 40 bytes of the line are stored, then the next line, up to the last."
  },
  {
   "address": 4926,
   "type": "line",
   "text": "For the mirrored drawers: moves the X in $81/$82 to the shape's right edge (X + width - 1) and converts it like x_to_column ($138E)."
  },
  {
   "address": 4953,
   "type": "line",
   "text": "For gfx_draw_slant: converts X like x_to_column, from the right edge when $B9 is negative (drawing right to left), and turns $86 into a single-bit mask for the dot."
  },
  {
   "address": 4998,
   "type": "line",
   "text": "Divides the screen X in $81/$82 by 7: the byte column into $85 and 7 minus the remainder into $86, the number of dots from the left of the byte to the right of the byte; $81/$82 are kept."
  },
  {
   "address": 5049,
   "type": "line",
   "text": "Before a clipped draw: works out the bytes per source row ($B1), steps the data pointer past the rows clipped at the top ($AB rows) and the whole bytes clipped at the left ($A9/8), keeps the bit offset ($AD), and takes the clipped rows and columns off the width $8E and height $8F. Starts the row counter $BD at the shape's top row $80."
  },
  {
   "address": 5157,
   "type": "line",
   "text": "At the start of each row: points $95/$96 at the next source row and advances $AF/$B0 by a row, loads its first byte shifted past the bits clipped at the left into $94, and looks up the screen line's address for row $BD into $83/$84 on the page being drawn on."
  },
  {
   "address": 5218,
   "type": "line",
   "text": "Copies the shape pointer $C3/$C4 to $95/$96, reads the header's width (dots) into $8E and height (rows) into $8F, and steps $95/$96 to the first row of bits."
  },
  {
   "address": 5252,
   "type": "line",
   "text": "gfx_clip_to_window ($1060): reads the shape's size, then compares the shape's world X ($C0/$C1) with the view's left edge ($C7/$C8) to get its screen X ($81/$82), or how many dots hang off the left ($A9). A shape more than 280 dots to the right of the view's edge ($118), or entirely to its left, returns carry set. Its row $C2 plus the offset $C6 goes in $80, clipped at the window's top $C5 ($AB) and at row 0 ($AC); a shape wholly above the top or at row 0 returns carry set too. Otherwise carry clear."
  },
  {
   "address": 5469,
   "type": "line",
   "text": "gfx_copy_bytes ($1039): copies a shape that is stored as screen bytes, row by row, straight into the page being drawn on, ending at byte column $85, with the clipping worked out by copy_clip ($15B7)."
  },
  {
   "address": 5534,
   "type": "line",
   "text": "The low byte of the LDA's address, the source row in the shape, written for each row by gfx_copy_bytes."
  },
  {
   "address": 5535,
   "type": "line",
   "text": "Its high byte."
  },
  {
   "address": 5537,
   "type": "line",
   "text": "The low byte of the STA's address, the screen row on the page being drawn."
  },
  {
   "address": 5538,
   "type": "line",
   "text": "Its high byte. The row's bytes are copied right to left, then the next row, until the shape's height is done."
  },
  {
   "address": 5559,
   "type": "line",
   "text": "For gfx_copy_bytes: converts the shape's width and clip margins from dots into whole screen bytes (7 dots to a byte) with mul_by_7 and div_by_7, and moves the source pointer past the clipped bytes and rows."
  },
  {
   "address": 5791,
   "type": "line",
   "text": "Divides the number in $16DD/$16DC by 7: the quotient into $16DA and $16DC, the remainder into $16DB. The quotient is built in one byte, so it is right only for numbers below 896; both callers ($15C1, $1605) clear the high byte, so in the game it divides a single byte."
  },
  {
   "address": 5826,
   "type": "line",
   "text": "Multiplies $16DA by $16DB: the 16-bit product into $16DD (high) and $16DC (low)."
  },
  {
   "address": 5850,
   "type": "line",
   "text": "Working byte of div_by_7 and mul_by_7 ($16DA-$16DD): the quotient or first factor, the remainder or second factor, and the number's low and high bytes."
  },
  {
   "address": 5851,
   "type": "line",
   "text": "Working byte of div_by_7 and mul_by_7: the remainder, or the second factor."
  },
  {
   "address": 5852,
   "type": "line",
   "text": "Working byte of div_by_7 and mul_by_7: the number's low byte."
  },
  {
   "address": 5853,
   "type": "line",
   "text": "Working byte of div_by_7 and mul_by_7: the number's high byte."
  },
  {
   "address": 5854,
   "type": "line",
   "text": "gfx_draw ($1027): draws the current shape with its top-left corner at screen X $81/$82, row $80, row by row down the screen. The bits of each source row are shifted into screen bytes of 7 dots; each byte written keeps the screen's own dots outside the shape's lit ones, plus a dot of margin either side of each lit run (the mask built from $97 and $99), so a white shape over a coloured background keeps a black edge, and gets the colour bit $8C."
  },
  {
   "address": 6012,
   "type": "line",
   "text": "gfx_draw_mirror ($102A): the same as gfx_draw, reading each row's bits from the right edge leftwards, so the shape faces the other way. The left and right clip margins are swapped while it draws."
  },
  {
   "address": 6182,
   "type": "line",
   "text": "gfx_draw_hit ($102D): clears $BA and $BB and draws as gfx_draw_or does; with $BA clear, the first lit dot of the shape that lands on a lit dot of the screen calls hit_point ($1954), which records where and makes the routine return $B6 in A instead of 0."
  },
  {
   "address": 6191,
   "type": "line",
   "text": "gfx_draw_or ($1021): ORs the current shape onto the screen, facing right, with the collision report off: $BA is set to $80, which makes the drawing loop skip hit_point ($186A), and A comes back as it was called (kept in $BB)."
  },
  {
   "address": 6325,
   "type": "line",
   "text": "gfx_draw_hit_mirror ($1030): the mirrored form of gfx_draw_hit ($1826)."
  },
  {
   "address": 6334,
   "type": "line",
   "text": "gfx_draw_or_mirror ($1024): the mirrored form of gfx_draw_or ($182F), the collision report off ($BA = $80)."
  },
  {
   "address": 6484,
   "type": "line",
   "text": "Called by gfx_draw_hit when a lit dot of the shape first lands on a lit dot of the screen: works out the world position of that dot, its X from the byte column times 7 plus the dot within the byte plus the view's left edge ($C7/$C8), into $B6/$B7, and its row less the window offset into $B8; then sets $BA to $80 so no later hit is recorded, and $BB to $B6, the value the drawer returns. Unused in this game, which tests its collisions by distance."
  },
  {
   "address": 6497,
   "type": "line",
   "text": "The same as hit_point for the mirrored drawer, scanning the byte's dots from the other end."
  },
  {
   "address": 6614,
   "type": "line",
   "text": "The A and Y that hit_point keeps while it works ($19D6, $19D7)."
  },
  {
   "address": 6615,
   "type": "line",
   "text": "The Y that hit_point keeps while it works."
  },
  {
   "address": 6616,
   "type": "line",
   "text": "gfx_draw_opaque ($101B): draws the current shape facing right, clearing every dot of the screen inside its box, lit or not, with the masks at mask_right ($1D82) at the edges, and setting the colour bit $8C."
  },
  {
   "address": 6750,
   "type": "line",
   "text": "gfx_draw_opaque_mirror ($101E): the same, mirrored, with the masks at mask_left ($1D8A)."
  },
  {
   "address": 6899,
   "type": "line",
   "text": "gfx_draw_slant ($1033): sets $B9 to 0 (left to right) and goes on at $1B0A: plots the current shape a dot at a time by OR into the screen, starting at screen X $81/$82 and row $80, and steps a row up or down ($B3) after every $B2 dots and every $B2 rows, which shears the picture. Used to draw the title's lettering leaning one way and the other."
  },
  {
   "address": 6912,
   "type": "line",
   "text": "gfx_draw_slant_mirror ($1036): $B9 = $FF, the same plotting right to left."
  },
  {
   "address": 7170,
   "type": "line",
   "text": "The low bytes of the 192 hi-res line addresses, indexed by row counted from the bottom: index 0 is line 191 ($3FD0), index 191 is line 0 ($2000). With row_hi ($1CC2) and the page byte $8D, the address of any line on either page."
  },
  {
   "address": 7362,
   "type": "line",
   "text": "The high bytes of the line addresses for row_lo, page 1's ($20-$3F); EOR with $8D ($60) gives page 2's."
  },
  {
   "address": 7554,
   "type": "line",
   "text": "Eight masks for gfx_draw_opaque's first byte of a row, by the dot it starts at: the dots of the screen byte left of the shape that are kept ($00, $3F, $1F, $0F, $07, $03, $01, $00)."
  },
  {
   "address": 7562,
   "type": "line",
   "text": "The same eight for the mirrored drawer, keeping the dots right of the shape ($00, $7E, $7C, $78, $70, $60, $40, $00)."
  },
  {
   "address": 24576,
   "type": "line",
   "text": "Jump-table entry to $6015: move and draw every hostage. The module's seven services are reached through this table, $6000-$6012."
  },
  {
   "address": 24579,
   "type": "line",
   "text": "Jump-table entry to $62F2: let one hostage out, of a barracks or of the helicopter on the pad."
  },
  {
   "address": 24582,
   "type": "line",
   "text": "Jump-table entry to $63EA: a new tank."
  },
  {
   "address": 24585,
   "type": "line",
   "text": "Jump-table entry to $648A: a new jet."
  },
  {
   "address": 24588,
   "type": "line",
   "text": "Jump-table entry to $653A: a new drone."
  },
  {
   "address": 24591,
   "type": "line",
   "text": "Jump-table entry to $65C3: a tank's routine, type 3 in the object dispatch ($8674)."
  },
  {
   "address": 24594,
   "type": "line",
   "text": "Jump-table entry to $6884: once a frame, the hostages' release and the enemies' arrival."
  },
  {
   "address": 24597,
   "type": "line",
   "text": "Each frame, for each of the 16 hostage slots in use: a hostage three or more blocks of 256 dots from the helicopter is left alone, or, if it is walking home past the base's block, counted in and its slot freed. The others take a step: walking ones move 2 dots, and after four steps each one chooses again. While the helicopter is falling they run from it; while it sits on the ground away from the pad with room aboard they run to it; at the base they walk on to the post office or stand; otherwise they stop, or start off left or right, at random. One that reaches the post office's door ($700A) goes in. Then the boarding ($6139) and the drawing ($6207)."
  },
  {
   "address": 24889,
   "type": "line",
   "text": "A hostage beside a helicopter that sits level on the ground (its door open, $0D) and has not been hit, outside the base's block: one 8 or 9 dots right of it, or 10 or 11 dots left, climbs in (state $FE or 2) if fewer than 16 are aboard, or turns away if the helicopter is full; one closer than that, under the helicopter, is crushed ($62D7). Climbing in counts it aboard at once ($730E, the counter, $731E for the level) and plays the boarding sound once a frame: three notes, periods 255, 224 and 152."
  },
  {
   "address": 25095,
   "type": "line",
   "text": "Picks the hostage's picture by its state: standing, the waving pictures whose pointers are at $A09C (steps 0, 1, 2, 1); walking, the four running pictures whose pointers are at $A094, mirrored for the left; climbing in, the two whose pointers are at $A0A2, after which its slot is freed (it is aboard) at the fourth step or as soon as the door closes."
  },
  {
   "address": 25133,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $622A): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 25135,
   "type": "line",
   "text": "Draws the standing hostage and goes on to the next slot."
  },
  {
   "address": 25159,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $6244): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 25161,
   "type": "line",
   "text": "Draws the walking hostage and goes on to the next slot."
  },
  {
   "address": 25186,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $625F): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 25188,
   "type": "line",
   "text": "Draws the climbing hostage. At its fourth step, or once the door has closed, its slot is marked empty ($FF): it is aboard."
  },
  {
   "address": 25228,
   "type": "line",
   "text": "The hostage slot being handled, 0-15."
  },
  {
   "address": 25229,
   "type": "line",
   "text": "X saved across a call to the random number generator, and across the three calls to tone when a hostage climbs in ($61D8-$61F6)."
  },
  {
   "address": 25230,
   "type": "line",
   "text": "Draws the hostage's current shape at its X less 4, with the view's parity, at the ground's row plus 11, and records it for erasing as kind $11: by OR, mirrored when $63 is negative, or whole with its mask and the colour bit set when $63 is $40 (the crushed one)."
  },
  {
   "address": 25265,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $62AE): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 25267,
   "type": "line",
   "text": "Clips to the window; off the screen it stops there. Otherwise it records the box (kind $11) and draws: by OR, mirrored for a hostage facing left, or whole with its mask and the colour bit set for the crushed one."
  },
  {
   "address": 25303,
   "type": "line",
   "text": "A hostage under the helicopter as it sits on the ground: its slot freed, the flattened picture ($A092) drawn where it stood, one more killed ($730C, the counter and its tune), one fewer out."
  },
  {
   "address": 25311,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $62DC): the address of the shape's pointer, ptr_crushed ($A092), which holds $AB87, shp_crushed."
  },
  {
   "address": 25313,
   "type": "line",
   "text": "Draws the flattened hostage opaque ($63 = $40), counts one more killed and one fewer out, and updates the killed counter with its tune."
  },
  {
   "address": 25330,
   "type": "line",
   "text": "Called every fourth frame. Nothing while 16 hostages are out or walking home. On the pad, with hostages aboard, one climbs out ($6359). Elsewhere, with hostages still in the barracks and fewer than five out, one comes out of the barracks the helicopter is over, if it is open and has some left, or else of an open barracks with some left, starting the search at a random one; none open, none comes."
  },
  {
   "address": 25433,
   "type": "line",
   "text": "Finds an empty hostage slot. On the pad: one more brought home ($730B), one fewer aboard, one more walking home, both counters redrawn and the rescued note played; if hostages climbed aboard since the last unloading ($731E), the level goes up by one, to 3 at most. The hostage starts walking right, towards the post office, 4 dots right of the helicopter. From a barracks: one fewer in it and in the barracks altogether, one more out, walking left or right at random from 10 dots right of the barracks' X."
  },
  {
   "address": 25576,
   "type": "line",
   "text": "The barracks a hostage is let out of, 0-3."
  },
  {
   "address": 25577,
   "type": "line",
   "text": "The hostage slot the new hostage takes, times 4."
  },
  {
   "address": 25578,
   "type": "line",
   "text": "A new tank, while the helicopter is at least two blocks of 256 dots short of the fence ($700D) and fewer than four tanks are in play. It appears 432 dots ahead of a helicopter flying at 17 dots a frame or more, otherwise on either side at random, at height 6, at a random depth from 5 to 12 not taken by another tank, type 3, stopped, its first decision 10 frames off (counted only in frames when it is within 128 dots, $66A8), its gun aimed at the helicopter (aim 4 on the left, 0 on the right). On the right a slip loses its X's high byte: the LDA #$00 at $6440 replaces the high byte the ADC #$01 has just worked out, and that 0 is stored as the aim and as the high byte, so the tank is put at world X $0000-$00FF, at the world's far left. The tank's routine drops a tank three blocks or more from the helicopter ($6672), so it vanishes at once, unless the helicopter is at $02D0-$034F: then it is kept and drives in from the left."
  },
  {
   "address": 25738,
   "type": "line",
   "text": "A new jet, while fewer than four are in play: type 9, cruising (manoeuvre 0); at half the helicopter's height plus 48, at most 104, and 32 rows deep in the background; 440 dots ahead of a fast helicopter, otherwise on either side at random, set to fly towards it. At levels 2 and 3 some jets are marked bold ($7166 = $80, one in eight at level 2 and one in four at level 3, by the masks at $6536): from one or two blocks away they swoop at a helicopter coming at them at 15 dots a frame (20 for the others), and close by they always swoop ($8115)."
  },
  {
   "address": 25906,
   "type": "line",
   "text": "Four jets already listed: a beep and a BRK, a check the game never fails."
  },
  {
   "address": 25910,
   "type": "line",
   "text": "The masks a random number must clear for a jet to be bold, by level: none at 0 and 1, $2C at 2, $44 at 3."
  },
  {
   "address": 25914,
   "type": "line",
   "text": "A new drone, while the helicopter is at least two blocks short of the fence and fewer than four drones are in play: type $0A, at height 112, one row in front of the ground's depth, 440 dots ahead of a fast helicopter or on either side at random."
  },
  {
   "address": 26047,
   "type": "line",
   "text": "Four drones already listed: a beep and a BRK."
  },
  {
   "address": 26051,
   "type": "line",
   "text": "A tank, each frame. Draws its body (one of two pictures by its X, by the pointers at $A066 or $A068, so the tracks seem to turn), its turret ($A064) and its gun, one of five angles ($A06A) by its aim ($7168). Then, from the helicopter's distance: three or more blocks away it is dropped ($8003, $7349); further than 128 dots it drives towards the helicopter, or away from a falling one. Within 128 dots it decides every 8 to 23 frames, at random: it fires if the helicopter is inside its gun's arc for the aim ($675C), and stops, comes on or backs off, more often towards the helicopter than away. Its gun turns a step a frame towards the helicopter."
  },
  {
   "address": 26063,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $65CC): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 26065,
   "type": "line",
   "text": "The tank's hull picture by bit 2 of its X: the two pictures swap every four dots, so the tracks seem to turn."
  },
  {
   "address": 26077,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $65DA): the address of the shape's pointer, ptr_tank_hull0 ($A066), which holds $AA40, shp_tank_hull0."
  },
  {
   "address": 26079,
   "type": "line",
   "text": "The first hull picture is chosen; this skips the second."
  },
  {
   "address": 26085,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $65E2): the address of the shape's pointer, ptr_tank_hull1 ($A068), which holds $AA5A, shp_tank_hull1."
  },
  {
   "address": 26087,
   "type": "line",
   "text": "Draws the hull with the colour bit clear (erase kind 2), then places the turret 7 dots left of the tank's X and 3 rows up."
  },
  {
   "address": 26117,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $6602): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 26119,
   "type": "line",
   "text": "The turret's shape, by its pointer at $A064."
  },
  {
   "address": 26122,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $6607): the address of the shape's pointer, ptr_tank_turret ($A064), which holds $AA38, shp_tank_turret."
  },
  {
   "address": 26124,
   "type": "line",
   "text": "Draws the turret (erase kind 3), then picks the gun's picture for the tank's aim from the five at $A06A."
  },
  {
   "address": 26157,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $662A): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 26159,
   "type": "line",
   "text": "Places the gun at the turret, X from gun_x_table for the aim, 7 rows up."
  },
  {
   "address": 26175,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $663C): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 26177,
   "type": "line",
   "text": "Draws the gun (erase kind 4)."
  },
  {
   "address": 26190,
   "type": "line",
   "text": "The tank's decisions, from the helicopter's distance $64/$65 and height difference $66."
  },
  {
   "address": 26455,
   "type": "line",
   "text": "The gun's X offset from the tank for each aim, 0 to 4: 11, 7, 1, -1, -5."
  },
  {
   "address": 26460,
   "type": "line",
   "text": "The edges of the five aims, in the helicopter's distance plus 128: 0, $40, $70, $90, $C0, $FF; aim n covers the distances between entries n and n + 1."
  },
  {
   "address": 26461,
   "type": "line",
   "text": "aim_table read one on: the upper edge of each aim."
  },
  {
   "address": 26466,
   "type": "line",
   "text": "$FF when the tank is to fire this frame."
  },
  {
   "address": 26467,
   "type": "line",
   "text": "Keeps the tank going the way it was, or stopped."
  },
  {
   "address": 26479,
   "type": "line",
   "text": "Stops the tank ($7167 = 0)."
  },
  {
   "address": 26487,
   "type": "line",
   "text": "Drives the tank towards the helicopter ($64's sign)."
  },
  {
   "address": 26494,
   "type": "line",
   "text": "Drives the tank away from the helicopter."
  },
  {
   "address": 26501,
   "type": "line",
   "text": "Drives the tank 4 dots right, unless it is at the fence: it stops short of the fence's X by 192 less 8 times its depth, so the nearer tanks stop further from it, in line with the fence's posts in perspective."
  },
  {
   "address": 26562,
   "type": "line",
   "text": "Drives the tank 4 dots left."
  },
  {
   "address": 26587,
   "type": "line",
   "text": "Fires a shell: a new object of type 8, 16 dots left of the tank plus the gun's offset for its aim ($6870) and the tank's own step, 9 rows up and one row further back, with the speed for the aim ($6875, plus the tank's), rising 3 dots a frame and going back 2 to 4 rows a frame (the table at $687F), towards the helicopter's depth; and the noise of the shot ($7373)."
  },
  {
   "address": 26735,
   "type": "line",
   "text": "The tank firing."
  },
  {
   "address": 26736,
   "type": "line",
   "text": "The shell's X offset for each aim: 0, 6, 16, 25, 31."
  },
  {
   "address": 26741,
   "type": "line",
   "text": "The shell's horizontal speed for each aim: -12, -7, 0, 7, 12 dots a frame."
  },
  {
   "address": 26746,
   "type": "line",
   "text": "The shell's starting climb for each aim: 3 dots a frame."
  },
  {
   "address": 26751,
   "type": "line",
   "text": "The shell's change of depth a frame for each aim, rows further back: 2, 3, 4, 3, 2."
  },
  {
   "address": 26756,
   "type": "line",
   "text": "Every fourth frame a hostage may be let out ($62F2). Eight frames in every 256 ($77 and $2F = 0) an enemy may come, by the level $731D: at level 0 only tanks, one at a time; at 1, a jet half the time, else a tank; at 2 and 3, a drone when a random test passes (one time in four), else a jet half the time, else a tank. Each kind comes only while fewer than its most for the level are in play: tanks 1, 2, 2, 2; jets 0, 1, 2, 2; drones 0, 0, 1, 2."
  },
  {
   "address": 26841,
   "type": "line",
   "text": "The most tanks in play for each level, 0-3: 1, 2, 2, 2."
  },
  {
   "address": 26845,
   "type": "line",
   "text": "The most jets in play for each level: 0, 1, 2, 2."
  },
  {
   "address": 26849,
   "type": "line",
   "text": "The most drones in play for each level: 0, 0, 1, 2."
  },
  {
   "address": 26853,
   "type": "line",
   "text": "Not run and not read: 795 bytes laid out like hi-res screen memory, groups of three 40-byte lines (black sky, $80, with a few star dots, and the ground's $55 $2A) and the eight unused bytes after them, a piece of a screen that was in memory when the file was saved."
  },
  {
   "address": 27648,
   "type": "line",
   "text": "The jets' manoeuvres, four bytes a step: the picture, the X step (for a jet flying right), the height step and the depth step. Manoeuvre 0, cruising, is this one step: picture 0, 8 dots a frame, level, at its depth."
  },
  {
   "address": 27652,
   "type": "line",
   "text": "Manoeuvre 1, 18 steps: the jet turns round towards the viewer (its depth falling from 32 rows to the ground's) and flies the other way."
  },
  {
   "address": 27724,
   "type": "line",
   "text": "Manoeuvre 2, 15 steps: the jet comes forward from the background without turning."
  },
  {
   "address": 27784,
   "type": "line",
   "text": "Manoeuvres 3 and 4, 24 steps: the attack run, which climbs back into the background; manoeuvre 3 fires two missiles at its first step, 4 drops a bomb."
  },
  {
   "address": 27881,
   "type": "line",
   "text": "The number of steps of each manoeuvre: 0, 18, 15, 24, 24."
  },
  {
   "address": 27886,
   "type": "line",
   "text": "The rows the helicopter's picture is raised by, for the poses -4 to 4 at each tilt -5 to +5 (9 by 11): a sheared picture has to be lifted so its skids stay where they were."
  },
  {
   "address": 27985,
   "type": "line",
   "text": "The main rotor's offset from the body, X and row, for each pose -5 to +5 at each tilt (11 by 11 pairs)."
  },
  {
   "address": 27986,
   "type": "line",
   "text": "The second byte of each of rotor_offset_table's pairs, read one on from it: the rotor's row offset. The rest of the 121 pairs follow."
  },
  {
   "address": 28227,
   "type": "line",
   "text": "The main rotor's further offset for each tilt, X and row (11 pairs)."
  },
  {
   "address": 28228,
   "type": "line",
   "text": "The second byte of each of rotor_tilt_table's pairs: the row offset."
  },
  {
   "address": 28249,
   "type": "line",
   "text": "The end-on tail rotor's offset for each tilt, X and row; an X of $80 means it is hidden."
  },
  {
   "address": 28250,
   "type": "line",
   "text": "The second byte of each of tail_dot_table's pairs: the end-on tail rotor's row offset."
  },
  {
   "address": 28271,
   "type": "line",
   "text": "The side-on tail rotor's offset for each tilt, facing right."
  },
  {
   "address": 28272,
   "type": "line",
   "text": "The second byte of each pair of the side-on tail rotor's offsets facing right: the row."
  },
  {
   "address": 28293,
   "type": "line",
   "text": "The side-on tail rotor's offset for each tilt, facing left."
  },
  {
   "address": 28294,
   "type": "line",
   "text": "The second byte of each pair of the side-on tail rotor's offsets facing left: the row."
  },
  {
   "address": 28315,
   "type": "line",
   "text": "The gun's offset from the helicopter's place, X and row, for each pose at each tilt (11 by 11 pairs): where a shot and the flash start."
  },
  {
   "address": 28316,
   "type": "line",
   "text": "The second byte of each of gun_table's pairs, read one on from it: the gun's row offset. The rest of the 121 pairs follow."
  },
  {
   "address": 28557,
   "type": "line",
   "text": "A shot's speeds for each size of pose (0 to 5) and of tilt (0 to 5): the horizontal speed, 0 to 2 dots a frame facing the viewer and 25 or 26 side-on, and the height speed, 0 for a level helicopter and more as it tilts (to 10 side-on at the full tilt)."
  },
  {
   "address": 28558,
   "type": "line",
   "text": "The second byte of each of shot_speed_table's pairs: the shot's height speed."
  },
  {
   "address": 28629,
   "type": "line",
   "text": "Not read: 35 bytes of the ground's $2A $55 and eight zeros, more of the screen that was in memory."
  },
  {
   "address": 28672,
   "type": "line",
   "text": "The helicopter's lowest world X, $02D0 ($7000/$7001): at it the helicopter stops dead ($75EE). The constants $7000-$7024 are the world's layout and the flying limits, read where the comments say."
  },
  {
   "address": 28673,
   "type": "line",
   "text": "High byte of heli_min_x."
  },
  {
   "address": 28674,
   "type": "line",
   "text": "The helicopter's highest world X, $1300 ($7002/$7003), 140 dots right of the base's: at it the helicopter stops dead ($7616)."
  },
  {
   "address": 28675,
   "type": "line",
   "text": "High byte of heli_max_x."
  },
  {
   "address": 28676,
   "type": "line",
   "text": "The view's lowest left edge, $02B0 ($7004/$7005), 208 dots short of the first barracks."
  },
  {
   "address": 28677,
   "type": "line",
   "text": "High byte of view_min."
  },
  {
   "address": 28678,
   "type": "line",
   "text": "The view's highest left edge, $1208 ($7006/$7007), where every sortie starts, with the base on the screen."
  },
  {
   "address": 28679,
   "type": "line",
   "text": "High byte of view_max."
  },
  {
   "address": 28680,
   "type": "line",
   "text": "The base's world X, $1274 ($7008/$7009): the landing pad and the post office are drawn from it ($92B8), and the helicopter is on the pad 13 to 63 dots right of it ($774D)."
  },
  {
   "address": 28681,
   "type": "line",
   "text": "High byte of base_x, also compared on its own: in the base's block of 256 dots and beyond, hostages walk home rather than run to the helicopter, and blasts do no harm ($881D)."
  },
  {
   "address": 28682,
   "type": "line",
   "text": "The post office's door, world X $12D5 ($700A/$700B): the hostages set down on the pad walk to it and go in ($6121)."
  },
  {
   "address": 28683,
   "type": "line",
   "text": "High byte of post_office_x."
  },
  {
   "address": 28684,
   "type": "line",
   "text": "The fence's world X, $1174 ($700C/$700D), 256 dots short of the base: drawn by draw_fence ($9136); tanks stop short of it ($6785), jets leave once over its block ($8115), and tanks and drones arrive only while the helicopter is two blocks or more short of it."
  },
  {
   "address": 28685,
   "type": "line",
   "text": "High byte of fence_x, compared on its own by the enemies."
  },
  {
   "address": 28686,
   "type": "line",
   "text": "The first barracks' world X, $0380 ($700E/$700F); the other three are 256, 512 and 768 dots to its right."
  },
  {
   "address": 28687,
   "type": "line",
   "text": "High byte of barracks1_x: barracks n is at high byte $03 + n."
  },
  {
   "address": 28688,
   "type": "line",
   "text": "The vertical speed below which a landing bounces, $FBA0 ($7010/$7011), about 4.4 dots a frame downwards ($746C)."
  },
  {
   "address": 28689,
   "type": "line",
   "text": "High byte of bounce_speed."
  },
  {
   "address": 28690,
   "type": "line",
   "text": "The horizontal speed at which touching the ground is a crash, compared as minus its size: $EB01, so a speed of $1500, the top speed, crashes ($77A4)."
  },
  {
   "address": 28691,
   "type": "line",
   "text": "High byte of crash_speed."
  },
  {
   "address": 28692,
   "type": "line",
   "text": "The climbing speed, $0100 (one dot a frame, $7014/$7015), at which a helicopter on the ground takes off ($74B2)."
  },
  {
   "address": 28693,
   "type": "line",
   "text": "High byte of lift_speed."
  },
  {
   "address": 28694,
   "type": "line",
   "text": "6: the steps of a crash ($11): at 6 the wreck has settled, the sound stops and the hostages aboard are counted as killed. The byte after it, $7017, is 0 and unread."
  },
  {
   "address": 28696,
   "type": "line",
   "text": "0: the row offset handed to the graphics library for the play area ($080B), and added to every erase box's row. The byte after it, $7019, is 6 and unread."
  },
  {
   "address": 28698,
   "type": "line",
   "text": "22: the depth (row) objects on the ground stand on, given to $07 and to the helicopter's object ($7BC2)."
  },
  {
   "address": 28699,
   "type": "line",
   "text": "25: the ground's top row; the sky is blackened from the row above it."
  },
  {
   "address": 28700,
   "type": "line",
   "text": "29: the row the hills are drawn at ($7C50)."
  },
  {
   "address": 28701,
   "type": "line",
   "text": "112: the helicopter's highest height ($7650)."
  },
  {
   "address": 28702,
   "type": "line",
   "text": "166: the highest row a shape may reach, just below the counters' bar."
  },
  {
   "address": 28703,
   "type": "line",
   "text": "25: the row that divides an erase box: black above, the ground's colour below ($9BC9)."
  },
  {
   "address": 28704,
   "type": "line",
   "text": "166: the highest row erase_old fills."
  },
  {
   "address": 28705,
   "type": "line",
   "text": "70 ($7021/$7022): the helicopter's nearest distance to the screen's left edge before the view follows it, and its lead point's place when it flies left ($9CD1)."
  },
  {
   "address": 28706,
   "type": "line",
   "text": "High byte of margin_left."
  },
  {
   "address": 28707,
   "type": "line",
   "text": "210 ($7023/$7024): the helicopter's furthest distance from the screen's left edge, and its lead point's place when it flies right."
  },
  {
   "address": 28708,
   "type": "line",
   "text": "High byte of margin_right."
  },
  {
   "address": 28709,
   "type": "line",
   "text": "One of the two erase lists, 160 bytes, 40 boxes of four bytes (kind, screen X low and high, row), filled by add_erase ($7BF8) while a page is drawn and read back by erase_old ($9B4C) two frames later. At load it holds stale bytes, a jump table of an earlier build ($4C xx $10 over and over); nothing reads them before they are written."
  },
  {
   "address": 28869,
   "type": "line",
   "text": "The other erase list, 160 bytes at $70C5-$7164; the two swap every frame (erase_this, $14)."
  },
  {
   "address": 29029,
   "type": "line",
   "text": "The object table, 30 slots of 10 bytes from $7165, each: the type (0 the helicopter, 1 and 2 an explosion in the air and on the ground, 3 a tank, 4 a missile, 5 a bomb, 6 the helicopter's shot, 8 a shell from a tank or a drone, 9 a jet, $0A a drone; dispatched at $8674), three bytes of the type's own, the world X (two bytes), the height, the depth (the row the object stands on, which orders the drawing), and the previous and next slots in the list. Slot 0 is the head of the list. Slots are addressed by their offset in X, so only the first 26 can be reached."
  },
  {
   "address": 29030,
   "type": "line",
   "text": "An object's first byte of its own (offset 1): a moving object's horizontal speed, a jet's manoeuvre, a tank's countdown to its next decision, an explosion's picture."
  },
  {
   "address": 29031,
   "type": "line",
   "text": "An object's second byte of its own (offset 2): a moving object's height speed, a jet's step in its manoeuvre, a tank's drive (4, -4 or 0)."
  },
  {
   "address": 29032,
   "type": "line",
   "text": "An object's third byte of its own (offset 3): a moving object's change of depth a frame, a jet's direction ($FF flying left), a tank's aim, a drone's spin."
  },
  {
   "address": 29033,
   "type": "line",
   "text": "An object's world X, low byte (offset 4)."
  },
  {
   "address": 29034,
   "type": "line",
   "text": "An object's world X, high byte (offset 5)."
  },
  {
   "address": 29035,
   "type": "line",
   "text": "An object's height above its depth (offset 6)."
  },
  {
   "address": 29036,
   "type": "line",
   "text": "An object's depth (offset 7), the row it stands on: the list is kept in order of depth, furthest first, so the nearest objects are drawn last."
  },
  {
   "address": 29037,
   "type": "line",
   "text": "The previous slot in the list (offset 8)."
  },
  {
   "address": 29038,
   "type": "line",
   "text": "The next slot in the list (offset 9), 0 at the end; in a free slot, the next free one. The rest of the table, slots 1 to 29, follows to $7290; slot 1 ($716F) is the helicopter's."
  },
  {
   "address": 29329,
   "type": "line",
   "text": "30, the number of slots in the object table: list_init ($7B9A) links the free list from it, 27 links from slot 2, more than the 24 offsets left below 256. The 25th free slot would land on the head's bytes, but so many objects are never in play."
  },
  {
   "address": 29330,
   "type": "line",
   "text": "The hostage table, 16 slots of 4 bytes from $7292 ($72D2 of them): the hostage's step (0-3, the picture of its running, waving or climbing), or $FF for an empty slot; its state; its world X, low and high."
  },
  {
   "address": 29331,
   "type": "line",
   "text": "A hostage's state, the slot's second byte: 0 standing (waving), 1 walking right, $FF walking left, 2 and $FE climbing into the helicopter from its left and its right."
  },
  {
   "address": 29332,
   "type": "line",
   "text": "A hostage's world X, low byte."
  },
  {
   "address": 29333,
   "type": "line",
   "text": "A hostage's world X, high byte. The other fifteen slots follow, to $72D1."
  },
  {
   "address": 29394,
   "type": "line",
   "text": "16, the number of slots in the hostage table."
  },
  {
   "address": 29395,
   "type": "line",
   "text": "Up to 30 objects whose depth has changed this frame, kept by mark_resort ($797C) and put back in their place in the list at the end of the frame ($7997)."
  },
  {
   "address": 29425,
   "type": "line",
   "text": "The number of objects in resort_list."
  },
  {
   "address": 29426,
   "type": "line",
   "text": "0: the paddle read for the horizontal stick (paddle 0, the joystick's left and right)."
  },
  {
   "address": 29427,
   "type": "line",
   "text": "1: the paddle read for the vertical stick (paddle 1)."
  },
  {
   "address": 29428,
   "type": "line",
   "text": "$FF when CTRL-A has reversed the joystick's left and right."
  },
  {
   "address": 29429,
   "type": "line",
   "text": "$FF when CTRL-V has reversed the joystick's up and down."
  },
  {
   "address": 29430,
   "type": "line",
   "text": "$FF while the sound is on (CTRL-S flips it); every sound routine tests it."
  },
  {
   "address": 29431,
   "type": "line",
   "text": "The horizontal paddle as read, turned over unless reversed: its sign tells the turn button which way the stick leans ($0E68)."
  },
  {
   "address": 29432,
   "type": "line",
   "text": "The vertical paddle as read, turned over unless reversed."
  },
  {
   "address": 29433,
   "type": "line",
   "text": "The side the helicopter turns to face: 1 and $FF the two sides, 0 the viewer."
  },
  {
   "address": 29434,
   "type": "line",
   "text": "The pose remembered when button 1 was pressed."
  },
  {
   "address": 29435,
   "type": "line",
   "text": "The number of drones in play, listed in $72FC-$72FF."
  },
  {
   "address": 29436,
   "type": "line",
   "text": "The drones' object slots, four places; when one is removed the places after it move up ($89BC). At load these bytes hold leftovers, unread while the count is 0."
  },
  {
   "address": 29437,
   "type": "line",
   "text": "The second drone's slot."
  },
  {
   "address": 29438,
   "type": "line",
   "text": "The third drone's slot."
  },
  {
   "address": 29439,
   "type": "line",
   "text": "The fourth drone's slot."
  },
  {
   "address": 29440,
   "type": "line",
   "text": "The number of jets in play, listed in $7301-$7304."
  },
  {
   "address": 29441,
   "type": "line",
   "text": "The jets' object slots, as drone_list."
  },
  {
   "address": 29442,
   "type": "line",
   "text": "The second jet's slot."
  },
  {
   "address": 29443,
   "type": "line",
   "text": "The third jet's slot."
  },
  {
   "address": 29444,
   "type": "line",
   "text": "The fourth jet's slot."
  },
  {
   "address": 29445,
   "type": "line",
   "text": "The number of tanks in play, listed in $7306-$7309."
  },
  {
   "address": 29446,
   "type": "line",
   "text": "The tanks' object slots, as drone_list."
  },
  {
   "address": 29447,
   "type": "line",
   "text": "The second tank's slot."
  },
  {
   "address": 29448,
   "type": "line",
   "text": "The third tank's slot."
  },
  {
   "address": 29449,
   "type": "line",
   "text": "The fourth tank's slot."
  },
  {
   "address": 29450,
   "type": "line",
   "text": "The hostages still in the barracks, 64 at the start."
  },
  {
   "address": 29451,
   "type": "line",
   "text": "The hostages brought home: at 64 the game is won."
  },
  {
   "address": 29452,
   "type": "line",
   "text": "The hostages killed."
  },
  {
   "address": 29453,
   "type": "line",
   "text": "The hostages out of the barracks and on the ground."
  },
  {
   "address": 29454,
   "type": "line",
   "text": "The hostages aboard the helicopter, at most 16."
  },
  {
   "address": 29455,
   "type": "line",
   "text": "The hostages set down on the pad and walking to the post office."
  },
  {
   "address": 29456,
   "type": "line",
   "text": "The helicopter's shots in flight, one more for each fired ($82AE), one fewer as each ends: it cannot fire a sixth ($0E25)."
  },
  {
   "address": 29457,
   "type": "line",
   "text": "The four barracks' states, $7311-$7314: 0 closed, 1 open."
  },
  {
   "address": 29458,
   "type": "line",
   "text": "The second barracks' state."
  },
  {
   "address": 29459,
   "type": "line",
   "text": "The third barracks' state."
  },
  {
   "address": 29460,
   "type": "line",
   "text": "The fourth barracks' state, open from the start of each game ($9EA9)."
  },
  {
   "address": 29461,
   "type": "line",
   "text": "The hostages left in each barracks, $7315-$7318, 16 each at the start."
  },
  {
   "address": 29462,
   "type": "line",
   "text": "The hostages left in the second barracks."
  },
  {
   "address": 29463,
   "type": "line",
   "text": "The hostages left in the third barracks."
  },
  {
   "address": 29464,
   "type": "line",
   "text": "The hostages left in the fourth barracks, 8 once it has been opened."
  },
  {
   "address": 29465,
   "type": "line",
   "text": "The killed counter's digits, in decimal (BCD), shown in the left frame."
  },
  {
   "address": 29466,
   "type": "line",
   "text": "The rescued counter's digits, shown in the right frame."
  },
  {
   "address": 29467,
   "type": "line",
   "text": "The aboard counter's digits, shown in the middle frame."
  },
  {
   "address": 29468,
   "type": "line",
   "text": "The helicopters used, 0 to 3; it picks the sortie's announcement."
  },
  {
   "address": 29469,
   "type": "line",
   "text": "The level, 0 to 3: it sets how many tanks, jets and drones may be in play ($6884), how many jets are bold ($64B8), how close a jet lets the helicopter come before it attacks ($814F), and whether drones drop shells ($8D65). 0 at the start of a game, it goes up by one when hostages are set down on the pad after a boarding ($6386), and CTRL-L sets it."
  },
  {
   "address": 29470,
   "type": "line",
   "text": "Set when hostages climb aboard. The first hostage set down on the pad after that clears it and raises the level ($637C); setting up a helicopter clears it too."
  },
  {
   "address": 29471,
   "type": "line",
   "text": "Cleared each frame: the boarding sound plays once a frame at most ($61D3)."
  },
  {
   "address": 29472,
   "type": "line",
   "text": "Cleared each frame: the killed tune plays once a frame at most ($7A06)."
  },
  {
   "address": 29473,
   "type": "line",
   "text": "Cleared each frame: the drones' buzz plays once a frame at most ($8C71)."
  },
  {
   "address": 29474,
   "type": "line",
   "text": "Jump-table entry to $7434: the helicopter's flight for this frame. The table, $7322-$7376, gives the other modules this module's services, three bytes apart."
  },
  {
   "address": 29477,
   "type": "line",
   "text": "Jump-table entry to $7B9A: empty the erase lists and the object list."
  },
  {
   "address": 29480,
   "type": "line",
   "text": "Jump-table entry to $7BF8: record the shape just placed in this page's erase list, as the kind in A."
  },
  {
   "address": 29483,
   "type": "line",
   "text": "Jump-table entry to $7C28: draw the hills."
  },
  {
   "address": 29486,
   "type": "line",
   "text": "Jump-table entry to $7F0E, an 8-by-8-bit multiply. Nothing calls it."
  },
  {
   "address": 29489,
   "type": "line",
   "text": "Jump-table entry to $7F22: halve the signed number in $5D/$5E Y times."
  },
  {
   "address": 29492,
   "type": "line",
   "text": "Jump-table entry to $7F5A: give a new shot its speeds from the helicopter's pose and tilt."
  },
  {
   "address": 29495,
   "type": "line",
   "text": "Jump-table entry to $7C9E: draw the helicopter's body."
  },
  {
   "address": 29498,
   "type": "line",
   "text": "Jump-table entry to $7DBB: draw the main rotor."
  },
  {
   "address": 29501,
   "type": "line",
   "text": "Jump-table entry to $7E39: draw the tail rotor."
  },
  {
   "address": 29504,
   "type": "line",
   "text": "Jump-table entry to $7B59: the place to draw the current object's shape, from its X, height and depth and the offsets in X and Y."
  },
  {
   "address": 29507,
   "type": "line",
   "text": "Jump-table entry to $7EE8: where the gun is, for the helicopter's pose and tilt."
  },
  {
   "address": 29510,
   "type": "line",
   "text": "Jump-table entry to $78F5: the next random number, in A."
  },
  {
   "address": 29513,
   "type": "line",
   "text": "Jump-table entry to $790C: take the current object out of the list and free its slot."
  },
  {
   "address": 29516,
   "type": "line",
   "text": "Jump-table entry to $792F: take a free slot for a new object."
  },
  {
   "address": 29519,
   "type": "line",
   "text": "Jump-table entry to $7942: put the current object into the list by its depth."
  },
  {
   "address": 29522,
   "type": "line",
   "text": "Jump-table entry to $797C: note the current object for re-sorting at the end of the frame."
  },
  {
   "address": 29525,
   "type": "line",
   "text": "Jump-table entry to $7997: put each noted object back in its place by depth."
  },
  {
   "address": 29528,
   "type": "line",
   "text": "Jump-table entry to $79BA: one more hostage aboard, on the counter."
  },
  {
   "address": 29531,
   "type": "line",
   "text": "Jump-table entry to $79D5: one fewer aboard, on the counter."
  },
  {
   "address": 29534,
   "type": "line",
   "text": "Jump-table entry to $7A54: none aboard, on the counter."
  },
  {
   "address": 29537,
   "type": "line",
   "text": "Jump-table entry to $79F0: one more hostage killed, on the counter, with its tune."
  },
  {
   "address": 29540,
   "type": "line",
   "text": "Jump-table entry to $7A6B: add A hostages killed, on the counter, with the dirge."
  },
  {
   "address": 29543,
   "type": "line",
   "text": "Jump-table entry to $7A30: one more hostage brought home, on the counter, with its note."
  },
  {
   "address": 29546,
   "type": "line",
   "text": "Jump-table entry to $7AB4: draw a counter's new digits."
  },
  {
   "address": 29549,
   "type": "line",
   "text": "Jump-table entry to $78AB: one click of the speaker."
  },
  {
   "address": 29552,
   "type": "line",
   "text": "Jump-table entry to $78C2: a tone of Y clicks, the period in X, changed by A after each."
  },
  {
   "address": 29555,
   "type": "line",
   "text": "Jump-table entry to $76CD: the noise of a tank or a jet firing ($686B, $8BEC)."
  },
  {
   "address": 29558,
   "type": "line",
   "text": "Jump-table entry to $7663: read the vertical stick."
  },
  {
   "address": 29561,
   "type": "line",
   "text": "Jump-table entry to $769C: read the horizontal stick."
  },
  {
   "address": 29564,
   "type": "line",
   "text": "The stick's effect on the speeds, each frame: a sixteenth of the horizontal speed is taken off as drag, then the thrust for the stick's lean is added (the table at $7418), towards the left when the stick ($0A) is positive; the vertical speed's whole dots close on the climb rate for the vertical stick (the table at $7424) by half the difference, or the whole of it when it is one; the horizontal speed is kept to 21 dots a frame either way."
  },
  {
   "address": 29720,
   "type": "line",
   "text": "The thrust for each lean of the horizontal stick, 0 to 5, in 256ths of a dot a frame: 0, 96, 180, 264, 348, 420."
  },
  {
   "address": 29721,
   "type": "line",
   "text": "The high bytes of thrust_table's two-byte entries."
  },
  {
   "address": 29732,
   "type": "line",
   "text": "The climb rate for each position of the vertical stick, 0 to 15, in dots a frame: -10 to -1 for 0 to 9, 0 at 10 (holding the height), then 1, 2, 3, 4 and 6."
  },
  {
   "address": 29748,
   "type": "line",
   "text": "The helicopter's flight, from its object each frame: the thrust ($737C), then on the ground the ground's handling ($7449), in the air the tilt and the move ($758E), then whether it is on the ground ($770D)."
  },
  {
   "address": 29769,
   "type": "line",
   "text": "The helicopter on the ground, each frame. Sitting level, its vertical speed: in a bounce it is lifted a row and the speed reversed at an eighth ($7534); coming down faster than bounce_speed, it bounces (sinks a row, the bounce flag set, the fall checked by lift, $7557) and nothing more is done this frame; coming down slower, the speed is reversed at an eighth; otherwise lift adds to it. Its horizontal speed is halved, unless its tilt has the speed's sign. Then, climbing at a dot a frame or more, it takes off (fly_move, $758E); if not, it rocks on its skids ($7803) to a tilt worked out from its speeds, between -5 and +5."
  },
  {
   "address": 30004,
   "type": "line",
   "text": "Reverses the vertical speed and divides it by 8, or by 16 once the helicopter has been hit."
  },
  {
   "address": 30039,
   "type": "line",
   "text": "Adds $04B0, 4.7 dots a frame, to the vertical speed, halved once for every eighth of a dot a frame the helicopter is already rising: a level helicopter on the ground with the vertical stick at 10 or more is lifted off by it, and a bouncing one's fall is checked."
  },
  {
   "address": 30092,
   "type": "line",
   "text": "$04B0, the upward speed lift adds."
  },
  {
   "address": 30093,
   "type": "line",
   "text": "lift_step's high byte, 4."
  },
  {
   "address": 30094,
   "type": "line",
   "text": "The helicopter in the air: the tilt moves a step a frame towards the horizontal stick, and each step moves it a dot the same way, as the body leans; then the X moves by the speed's whole dots and the height by the vertical speed's. The X is held between heli_min_x and heli_max_x, where the speed is stopped; the height is held between 0 and 112."
  },
  {
   "address": 30307,
   "type": "line",
   "text": "Reads paddle 1 through the Monitor's PREAD ($FB1E), turned over unless CTRL-V has reversed it ($72F8), and a sixteenth of it is the vertical stick $0B, 0-15 (the table at $768C). A helicopter that has been hit, or whose sortie is over, gets 2: it comes down."
  },
  {
   "address": 30348,
   "type": "line",
   "text": "The vertical stick for each sixteenth of the paddle: 0 to 15, unchanged."
  },
  {
   "address": 30364,
   "type": "line",
   "text": "Reads paddle 0 through PREAD, turned over unless CTRL-A has reversed it ($72F7), and makes the horizontal stick $0A from a sixteenth of it: less 2, held between 0 and 10, less 5, so -5 to +5 with a dead band at each end. Centred when the sortie is over."
  },
  {
   "address": 30413,
   "type": "line",
   "text": "The noise of a tank's shell or a jet's missiles being fired (its two callers, $686B and $8BEC), if the sound is on in a game and the helicopter is not a settled wreck: Y pairs of clicks, the first of each after a delay read from the game's own code, from $8100 + Y down to $8101, bytes that serve as random numbers, the second after half a period that starts at X and grows by A each pair. Each click of the speaker ($C030) is followed by a read of the cassette output ($C020), so a speaker plugged in there plays it too."
  },
  {
   "address": 30475,
   "type": "line",
   "text": "The noise's second delay, growing by noise_step each pair."
  },
  {
   "address": 30476,
   "type": "line",
   "text": "What noise adds to noise_period after each pair of clicks."
  },
  {
   "address": 30477,
   "type": "line",
   "text": "Whether the helicopter is on the ground. In the air: the flag $0C set, the door and the pad's flag cleared. It is down when it bounces or when its height is at or below the landing height for its tilt (the table at $7895), where it is held. On the ground: on the pad if 13 to 63 dots right of base_x. A crash goes on a step a frame ($77B7); at the sixth the sortie is over and the hostages aboard are added to the killed ($7A6B, $7A54). A helicopter hit, or touching down at top speed, starts its crash. Otherwise its door opens if it sits level."
  },
  {
   "address": 30723,
   "type": "line",
   "text": "Rocks the helicopter on its skids to the tilt in A: moves it by the difference between the two tilts' offsets (the table at $787F, for the side it faces) and raises or lowers it by the difference between their landing heights ($7895), so it pivots on the skid on the ground, then takes the new tilt."
  },
  {
   "address": 30846,
   "type": "line",
   "text": "The tilt rock is going to."
  },
  {
   "address": 30847,
   "type": "line",
   "text": "The helicopter's X offset on its skids for each tilt, -5 to +5, two bytes each: 6, 5, 3, 2, 0, 0, -1, -2, -4, -5, -7."
  },
  {
   "address": 30848,
   "type": "line",
   "text": "The high bytes of rock_x_table's entries, $00 or $FF for a negative offset."
  },
  {
   "address": 30869,
   "type": "line",
   "text": "The helicopter's height on the ground for each tilt, -5 to +5, two bytes each: 10, 9, 9, 8, 8, 7, 7, 7, 7, 8, 8. The tilted pictures are taller than the level one's 13 rows, up to 18 nose down and 16 nose up, and each height lifts its picture just enough to keep the lowest dots, the end of a skid, on the ground: within a row of the level helicopter's at every tilt. It is read by the tilt as it leans for the way the helicopter faces (turned over when the pose is negative, $7720)."
  },
  {
   "address": 30891,
   "type": "line",
   "text": "One click of the speaker ($C030, then the cassette output $C020), if the sound is on, in a game, and the helicopter is not a settled wreck."
  },
  {
   "address": 30914,
   "type": "line",
   "text": "A tone, if the sound is on, in a game and the helicopter is not a settled wreck: Y clicks, each after a delay loop of X counts, X growing by A after each click (A = 0, a steady note; positive, a falling one)."
  },
  {
   "address": 30963,
   "type": "line",
   "text": "The tone's current delay."
  },
  {
   "address": 30964,
   "type": "line",
   "text": "What tone adds to the delay after each click."
  },
  {
   "address": 30965,
   "type": "line",
   "text": "The random number generator: rotates and mixes the byte $76 with itself and adds the second byte at $790B, which counts up by one each call (and again on overflow) and by five each time an object is freed."
  },
  {
   "address": 30987,
   "type": "line",
   "text": "The random number generator's second byte."
  },
  {
   "address": 30988,
   "type": "line",
   "text": "Takes the current object ($7A) out of the list and puts its slot at the head of the free list; stirs the random generator by adding 5 to its second byte."
  },
  {
   "address": 31023,
   "type": "line",
   "text": "Takes the first free slot into $7A. With none left it beeps twice through the Monitor's BELL1 ($FBDD) and stops at a BRK: a check the game never fails."
  },
  {
   "address": 31042,
   "type": "line",
   "text": "Puts the current object into the list before the first object at a smaller depth, so the list runs from the furthest to the nearest. If that object is the one the object loop goes to next, the new one becomes the next, so it runs this frame."
  },
  {
   "address": 31099,
   "type": "line",
   "text": "The depth of the object being inserted."
  },
  {
   "address": 31100,
   "type": "line",
   "text": "Adds the current object to resort_list. The 30th beeps three times and stops at a BRK."
  },
  {
   "address": 31127,
   "type": "line",
   "text": "Takes each object off resort_list, unlinks it and inserts it again by its depth ($7942), so the list stays in order after objects have moved nearer or further."
  },
  {
   "address": 31162,
   "type": "line",
   "text": "One more hostage aboard: adds 1 to the aboard counter's digits ($731B) in decimal and redraws it, keeping X and Y."
  },
  {
   "address": 31189,
   "type": "line",
   "text": "One fewer aboard: takes 1 from the aboard counter's digits and redraws it."
  },
  {
   "address": 31216,
   "type": "line",
   "text": "One more hostage killed: adds 1 to the killed counter's digits ($7319) and redraws it, and plays the killed tune, three short notes (periods 48, 67 and 97, 48 clicks each), once a frame at most ($7320)."
  },
  {
   "address": 31280,
   "type": "line",
   "text": "One more hostage brought home: adds 1 to the rescued counter's digits ($731A), redraws it, and plays one note (period 40, 40 clicks)."
  },
  {
   "address": 31316,
   "type": "line",
   "text": "The aboard counter to 00, redrawn."
  },
  {
   "address": 31339,
   "type": "line",
   "text": "Adds A to the killed counter's digits, one at a time in decimal, redraws it, and plays the dirge for a lost helicopter's passengers: four notes, falling (periods 64, 84, 97 and 131, of 80, 64, 48 and 32 clicks)."
  },
  {
   "address": 31412,
   "type": "line",
   "text": "Draws a counter's digits in a game, on both pages: X holds the old value and Y the new, in decimal, and A the counter (0 killed, 1 aboard, 2 rescued), whose X is in the table at $7B50, at row 178. The tens digit is drawn only when it changed, the units always; the digits are shapes, from the table at $A0D6."
  },
  {
   "address": 31485,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $7AFA): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 31487,
   "type": "line",
   "text": "The digit's place, the word after the call pointing at counter_at."
  },
  {
   "address": 31490,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $7AFF): the address of the screen position, counter_at ($7B56-$7B58: X, low and high, and the row)."
  },
  {
   "address": 31492,
   "type": "line",
   "text": "Draws the digit on this page, then places it again on the other page."
  },
  {
   "address": 31501,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $7B0A): the address of the screen position, counter_at ($7B56-$7B58: X, low and high, and the row)."
  },
  {
   "address": 31503,
   "type": "line",
   "text": "Draws the digit on the other page and flips back."
  },
  {
   "address": 31543,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $7B34): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 31545,
   "type": "line",
   "text": "The ones digit's place, 8 dots to the right of the tens."
  },
  {
   "address": 31548,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $7B39): the address of the screen position, counter_at ($7B56-$7B58: X, low and high, and the row)."
  },
  {
   "address": 31550,
   "type": "line",
   "text": "Draws the ones digit on this page, then places it again on the other page."
  },
  {
   "address": 31559,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $7B44): the address of the screen position, counter_at ($7B56-$7B58: X, low and high, and the row)."
  },
  {
   "address": 31561,
   "type": "line",
   "text": "Draws the ones digit on the other page and flips back."
  },
  {
   "address": 31568,
   "type": "line",
   "text": "The X of each counter's first digit: 63, 141 and 219."
  },
  {
   "address": 31571,
   "type": "line",
   "text": "The counter's old value."
  },
  {
   "address": 31572,
   "type": "line",
   "text": "The counter's new value."
  },
  {
   "address": 31573,
   "type": "line",
   "text": "The old value's tens, for the comparison."
  },
  {
   "address": 31574,
   "type": "line",
   "text": "The digit's screen position for gfx_at_ptr: X low and high and the row, 178."
  },
  {
   "address": 31575,
   "type": "line",
   "text": "The digit's X, high byte."
  },
  {
   "address": 31576,
   "type": "line",
   "text": "The digit's row, 178."
  },
  {
   "address": 31577,
   "type": "line",
   "text": "Works out where to draw the current object's shape: its X less the offset in X (signed), and its height plus its depth plus the offset in Y as the row, into place_x ($1C-$1E). If A is not zero, the X is moved a dot when its parity, with the view's, differs from A's bit 1, so the shape keeps its colours as the view scrolls."
  },
  {
   "address": 31642,
   "type": "line",
   "text": "Empties both erase lists ($7025 and $70C5) and resort_list, makes the list's head (slot 0) and the helicopter's object (slot 1, type 0, at the ground's depth) the whole list, chains the other slots from slot 2 into the free list, and empties the drone, jet and tank lists."
  },
  {
   "address": 31736,
   "type": "line",
   "text": "Records a box in this page's erase list: the kind in A, the place just used for gfx_place ($1C-$1E) less the view's left edge, and the row plus the window offset."
  },
  {
   "address": 31784,
   "type": "line",
   "text": "Draws the hills, which scroll at half the view's speed: the world is cut into blocks of 256 dots at half scale, and the three blocks the screen can show are drawn at row 29, each one of the four hill shapes whose pointers are at $A0A6 chosen by its number ((n + n/4) and 3), copied as screen bytes (erase kind 1). Blocks 0 to 3 have none, so the hills end before the barracks."
  },
  {
   "address": 31868,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $7C79): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 31870,
   "type": "line",
   "text": "The hill's shape, chosen from the four at $A0A6."
  },
  {
   "address": 31873,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $7C7E): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 31875,
   "type": "line",
   "text": "Clips the hill to the window and copies its bytes onto the screen (erase kind 1), then moves on to the next block of 256 dots until the count of hills is done."
  },
  {
   "address": 31901,
   "type": "line",
   "text": "The blocks left to draw."
  },
  {
   "address": 31902,
   "type": "line",
   "text": "Draws the helicopter's body. Side-on (pose 5 or -5) it is one of the eleven tilted pictures whose pointers are at $A000, or the squashed one whose pointer is at $A020 in a bounce; facing the viewer and bouncing, the squashed front view whose pointer is at $A022; otherwise the picture for its pose from the pointers at $A016, sheared by gfx_slant for its tilt and raised by the table at $6CEE. The drawing routine, OR for side-on and level, slanted otherwise, mirrored for the other side, is written into the JSR at $7DA1. A crashing helicopter is clipped at the bottom by its crash step, so it sinks into the ground."
  },
  {
   "address": 32137,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $7D86): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 32139,
   "type": "line",
   "text": "The body's shape, by the pose and tilt."
  },
  {
   "address": 32142,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $7D8B): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 32144,
   "type": "line",
   "text": "Clips the body to the window; while the helicopter is crashing, its crash step cuts rows off its bottom as it sinks into the ground."
  },
  {
   "address": 32157,
   "type": "line",
   "text": "gfx_clip's inline arguments (the call at $7D9A), the clip's margins in dots and rows: the left margin 0, the right margin 0, the top margin 0."
  },
  {
   "address": 32160,
   "type": "line",
   "text": "The bottom margin of the gfx_clip call, rewritten with the crash step."
  },
  {
   "address": 32161,
   "type": "line",
   "text": "The JSR whose address ($7DA2/$7DA3) draw_heli writes: gfx_draw_or ($1021), its mirror ($1024), gfx_draw_slant ($1033) or its mirror ($1036). As loaded it reads JSR $FFFF."
  },
  {
   "address": 32162,
   "type": "line",
   "text": "The low byte of heli_draw_call's address, written by draw_heli for the pose."
  },
  {
   "address": 32163,
   "type": "line",
   "text": "The high byte of heli_draw_call's address, $10."
  },
  {
   "address": 32165,
   "type": "line",
   "text": "The drawing routine for each pose, -5 to +5, when the helicopter is tilted: the mirrored OR for -5, the mirrored slant for -4 to -1, the slant for 0 to 4, the OR for 5."
  },
  {
   "address": 32166,
   "type": "line",
   "text": "The high bytes of heli_draw_table's addresses, all $10."
  },
  {
   "address": 32187,
   "type": "line",
   "text": "Draws the main rotor, sheared by the tilt, at an offset from the body's place given by the table at $6D51 (11 tilts by 11 poses) plus the one at $6E43 (by tilt). It turns through three pictures ($A024), one a frame, and stops when the helicopter crashes."
  },
  {
   "address": 32256,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $7DFD): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 32258,
   "type": "line",
   "text": "Slants the rotor by the helicopter's tilt and steps the rotor's picture on, 4, 2, 0, unless it is crashing."
  },
  {
   "address": 32303,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $7E2C): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 32305,
   "type": "line",
   "text": "Clips the main rotor to the window and draws it slanted."
  },
  {
   "address": 32312,
   "type": "line",
   "text": "The rotor's picture, 4, 2, 0, 4...: an offset into $A024."
  },
  {
   "address": 32313,
   "type": "line",
   "text": "Draws the tail rotor. Facing the viewer, or one step from it and tilted away, every other frame it is a dot two rows tall (the shape at $7EE4) at the offset for the tilt from the table at $6E59. Side-on it turns through four pictures ($A02A) at the offset for the tilt from $6E6F, or $6E85 for the other side, and stops when the helicopter crashes. Between, none is drawn."
  },
  {
   "address": 32373,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $7E72): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 32375,
   "type": "line",
   "text": "The end-on tail rotor's shape, given directly by the two bytes after the call: $7EE4."
  },
  {
   "address": 32378,
   "type": "line",
   "text": "gfx_shape_direct's inline argument (the call at $7E77): the shape itself, at tail_dot ($7EE4)."
  },
  {
   "address": 32380,
   "type": "line",
   "text": "Draws the end-on tail rotor by OR. A helicopter side-on has the side-on tail rotor instead, at its offset for the tilt, left or right."
  },
  {
   "address": 32460,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $7EC9): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 32462,
   "type": "line",
   "text": "Places the side-on tail rotor at its offset from the helicopter."
  },
  {
   "address": 32474,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $7ED7): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 32476,
   "type": "line",
   "text": "Draws the side-on tail rotor by OR."
  },
  {
   "address": 32483,
   "type": "line",
   "text": "The tail rotor's picture, 6, 4, 2, 0, 6...: an offset into $A02A."
  },
  {
   "address": 32484,
   "type": "line",
   "text": "The end-on tail rotor's shape: one dot wide, two rows, both lit."
  },
  {
   "address": 32488,
   "type": "line",
   "text": "Returns in X and Y the gun's offset from the helicopter's place, from the table at $6E9B, by tilt and pose: where a shot starts."
  },
  {
   "address": 32526,
   "type": "line",
   "text": "Multiplies $5B by $5C into $5E/$5D. Never called."
  },
  {
   "address": 32546,
   "type": "line",
   "text": "Halves the signed number in $5D/$5E Y times, working on its size and putting the sign back, so it rounds towards zero."
  },
  {
   "address": 32601,
   "type": "line",
   "text": "The sign of the number shift_right works on."
  },
  {
   "address": 32602,
   "type": "line",
   "text": "Gives a new shot (the current object) its speeds from the table at $6F8D, by the size of the pose and the tilt: its horizontal speed, its sign by the side the helicopter faces, plus the helicopter's own speed in whole dots; its height speed, upwards or downwards with the tilt's sign against the pose's; and its change of depth from the table at $7FBC."
  },
  {
   "address": 32700,
   "type": "line",
   "text": "The shot's change of depth a frame for each size of pose, 0 to 5: -2, -2, -1, -1, -1, 0, so a shot fired towards the viewer comes forward and one fired side-on stays at its depth."
  },
  {
   "address": 32706,
   "type": "line",
   "text": "Not read: fourteen $80 bytes (black), forty of $55 $2A (the ground's colour), seven zeros and $A0, the patterns of the erase fills, left in memory when the page was saved."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "Jump-table entry to $8651: run every object in the list."
  },
  {
   "address": 32771,
   "type": "line",
   "text": "Jump-table entry to $898D: take the current tank off the tank list."
  },
  {
   "address": 32774,
   "type": "line",
   "text": "A jet, type 9. Reads its manoeuvre's step ($8262: picture, X, height and depth steps), draws the picture for it ($826C) with the colour bit set (the blue and orange group), centred, mirrored when it flies left ($7168 negative), recording it for erasing as kind 7 plus the table at $823A; $67 says whether it was off the screen. Then it moves by the step (the X step turned round for a jet flying left). In manoeuvres 1 and 2 its height follows the helicopter's: it comes down a dot when 30 or more above it, and goes up a dot when below."
  },
  {
   "address": 32847,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $804C): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 32849,
   "type": "line",
   "text": "Centres the jet's picture on its position, back by half of each of the shape's first two bytes, its width and height."
  },
  {
   "address": 32869,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $8062): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 32871,
   "type": "line",
   "text": "Draws the jet with the colour bit set, mirrored when it flies left, and records its box (erase kind 7 plus its picture's entry), or marks it off the screen. Then moves it by the step, the X step turned round for a jet flying left; in manoeuvres 1 and 2 its height follows the helicopter's. Then the manoeuvre's own routine."
  },
  {
   "address": 33024,
   "type": "line",
   "text": "Here the jet's code doubles as data: the noise routine ($76E3) reads the delay before each pair of clicks from $8101 onwards, the bytes of the instructions that follow. The code: in manoeuvres 1 and 2 the jet's height closes on the helicopter's, then the manoeuvre's routine."
  },
  {
   "address": 33045,
   "type": "line",
   "text": "Manoeuvre 0, cruising. A jet leaves (the last five steps of manoeuvre 4, climbing away) once the helicopter has been hit, once it is over the fence's block or beyond, or when it is more than two blocks from the helicopter. Within 152 dots (plus 4 a level), a bold jet ($80) swoops (manoeuvre 2); the others turn round to attack (manoeuvre 1) when flying away from the helicopter, and when coming at it, turn or swoop once it is within 64 dots and moving at 9 dots a frame or more. Further off they act only when the helicopter comes at them at 20 dots a frame or more (15 for a bold jet)."
  },
  {
   "address": 33224,
   "type": "line",
   "text": "Manoeuvres 3 and 4, the attack run: at its first step manoeuvre 3 fires two missiles ($8B5F) and manoeuvre 4 drops a bomb ($8BF2). At its last step the jet stays there until it is off the screen, then leaves the jet list and frees its slot."
  },
  {
   "address": 33281,
   "type": "line",
   "text": "Manoeuvres 1 and 2: the next step; at the end a turning jet (1) faces the other way, and the jet starts its attack: missiles (3) at a helicopter in the air, a bomb (4) at one on the ground."
  },
  {
   "address": 33338,
   "type": "line",
   "text": "The erase kind for each jet picture, eight a manoeuvre, added to 7: kinds 6 to 11, smaller boxes for the smaller pictures far away."
  },
  {
   "address": 33378,
   "type": "line",
   "text": "The address of each manoeuvre's steps: $6C00, $6C04, $6C4C, $6C88, and $6C88 again for manoeuvre 4."
  },
  {
   "address": 33379,
   "type": "line",
   "text": "The high bytes of jet_scripts' addresses."
  },
  {
   "address": 33388,
   "type": "line",
   "text": "The address of each manoeuvre's picture table: $A032, $A034, $A042, $A04C, $A058."
  },
  {
   "address": 33389,
   "type": "line",
   "text": "The high bytes of jet_pictures' addresses."
  },
  {
   "address": 33398,
   "type": "line",
   "text": "The helicopter's object, type 0, run in its place in the list. Copies the helicopter's X, height (less the crash step) and depth into its slot, draws the body, the main rotor and the tail rotor, and records the box (kind 0). A shot asked for by button 0 is fired here: one more in flight ($7310), the muzzle flash ($A07C) drawn at the gun ($7343), and a new object of type 6 at the gun, given its speeds by shot_start ($7334). Then the flight ($7322)."
  },
  {
   "address": 33478,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $82C3): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 33480,
   "type": "line",
   "text": "The muzzle flash's shape, by its pointer at $A07C."
  },
  {
   "address": 33483,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $82C8): the address of the shape's pointer, ptr_flash ($A07C), which holds $AAA9, shp_flash."
  },
  {
   "address": 33485,
   "type": "line",
   "text": "Draws the flash with the colour bit set, then makes the shot: a new object of type 6 at the gun's offset from the helicopter, at the ground's depth, its speeds from shot_start, put in the list."
  },
  {
   "address": 33559,
   "type": "line",
   "text": "A helicopter that has been hit: in the air, one of the four burst pictures whose pointers are at $A086, at random, over it, with a click either side; on the ground, every frame a new burst (an explosion object on the ground, $8634) somewhere within 8 dots of it."
  },
  {
   "address": 33590,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $8333): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 33592,
   "type": "line",
   "text": "Centres the burst picture on the helicopter."
  },
  {
   "address": 33612,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $8349): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 33614,
   "type": "line",
   "text": "Draws the burst with the colour bit set between two clicks. On the ground, a new explosion on the ground is made each frame within 8 dots of the helicopter. Either way the flight goes on ($7322)."
  },
  {
   "address": 33703,
   "type": "line",
   "text": "An explosion in the air, type 1: five pictures whose pointers are at $A086, one a frame, drawn with the colour bit set, centred (erase kind 5), with clicks, then the slot is freed."
  },
  {
   "address": 33726,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $83BB): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 33728,
   "type": "line",
   "text": "A click for the first two pictures, then the picture is centred on the explosion."
  },
  {
   "address": 33758,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $83DB): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 33760,
   "type": "line",
   "text": "Draws the picture with the colour bit set (erase kind 5) with a click, then the next picture; after the fifth the slot is freed."
  },
  {
   "address": 33801,
   "type": "line",
   "text": "An explosion on the ground, type 2: for the first three frames a flash ($A090), then each of the five pictures whose pointers are at $A086 by OR, raised four rows (erase kind 5), with clicks; then the slot is freed."
  },
  {
   "address": 33826,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $841F): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 33828,
   "type": "line",
   "text": "Centres the ground flash, four rows up."
  },
  {
   "address": 33851,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $8438): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 33853,
   "type": "line",
   "text": "Draws the flash with the colour bit set; then the explosion's picture for this frame from the five at $A086."
  },
  {
   "address": 33886,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $845B): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 33888,
   "type": "line",
   "text": "A click for the first two pictures, then the picture is centred on the explosion, raised four rows."
  },
  {
   "address": 33921,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $847E): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 33923,
   "type": "line",
   "text": "Draws the picture by OR (erase kind 5) with a click, then the next; after the fifth the slot is freed."
  },
  {
   "address": 33959,
   "type": "line",
   "text": "The helicopter's shot, type 6: a dot ($A074, erase kind $0E) moved by its speeds, falling at 2 a frame when it was fired towards the viewer (its depth changing), straight otherwise. It is dropped when more than a block of 256 dots from the helicopter's, or at height 144 or more. Its depth is kept at 3 or more. Below height 4 it hits the ground: at depth 3 it is simply dropped; otherwise it explodes there ($8634) and its blast does its harm ($881D). In between it may hit a barracks, a jet or a drone ($868A). Each end counts one fewer in flight ($7310)."
  },
  {
   "address": 33971,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $84B0): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 33973,
   "type": "line",
   "text": "The shot's shape, by its pointer at $A074."
  },
  {
   "address": 33976,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $84B5): the address of the shape's pointer, ptr_heli_shot ($A074), which holds $AA94, shp_heli_shot."
  },
  {
   "address": 33978,
   "type": "line",
   "text": "Draws the shot (erase kind $0E) and moves it, falling 2 a frame when it was fired towards the viewer. Then its range and height limits, the ground, and what it hits."
  },
  {
   "address": 34086,
   "type": "line",
   "text": "A jet's bomb, type 5 ($A07A, erase kind $10), falling at 4 more a frame, until it reaches the ground and explodes there, with its blast."
  },
  {
   "address": 34098,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $852F): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 34100,
   "type": "line",
   "text": "The bomb's shape, by its pointer at $A07A."
  },
  {
   "address": 34103,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $8534): the address of the shape's pointer, ptr_bomb ($A07A), which holds $AAA6, shp_bomb."
  },
  {
   "address": 34105,
   "type": "line",
   "text": "Draws the bomb (erase kind $10) and moves it, 4 more a frame downwards, until it reaches the ground and explodes there with its blast."
  },
  {
   "address": 34145,
   "type": "line",
   "text": "A jet's missile, type 4 ($A078, mirrored when flying left, erase kind $0F), dropping at 1 more a frame: it explodes on the ground, with its blast, or on the helicopter ($879F)."
  },
  {
   "address": 34157,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $856A): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 34159,
   "type": "line",
   "text": "The missile's shape, by its pointer at $A078."
  },
  {
   "address": 34162,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $856F): the address of the shape's pointer, ptr_missile ($A078), which holds $AA9E, shp_missile."
  },
  {
   "address": 34164,
   "type": "line",
   "text": "Draws the missile (erase kind $0F), mirrored when it flies left, and moves it, 1 more a frame downwards; it explodes on the ground with its blast, or on the helicopter."
  },
  {
   "address": 34224,
   "type": "line",
   "text": "A shell, type 8 ($A076, erase kind $0D), fired by a tank ($67E8) or dropped by a drone ($8D90), falling at 3 more a frame: when it comes down to height 0 it is brought to the ground's depth and explodes there, with its blast."
  },
  {
   "address": 34236,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $85B9): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 34238,
   "type": "line",
   "text": "The shell's shape, by its pointer at $A076."
  },
  {
   "address": 34241,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $85BE): the address of the shape's pointer, ptr_tank_shell ($A076), which holds $AA99, shp_tank_shell."
  },
  {
   "address": 34243,
   "type": "line",
   "text": "Draws the shell (erase kind $0D) and moves it, 3 more a frame downwards; at height 0 it is brought to the ground's depth and explodes with its blast."
  },
  {
   "address": 34291,
   "type": "line",
   "text": "Moves the current object by its speeds: X by $7166 (signed), height by $7167, depth by $7168; then takes A, its fall, from the height's speed."
  },
  {
   "address": 34355,
   "type": "line",
   "text": "The fall move_projectile takes from the height's speed."
  },
  {
   "address": 34356,
   "type": "line",
   "text": "Turns the current object into an explosion at its first picture: type 1 in the air, type 2 when its height is 0."
  },
  {
   "address": 34385,
   "type": "line",
   "text": "The object loop, once a frame: from the head's next slot along the list, each object's routine by its type (the table at $8674), through the JSR at $866C, whose address is written for each; the next slot is kept in $7B first, since the routine may free its own."
  },
  {
   "address": 34412,
   "type": "line",
   "text": "The JSR whose address ($866D/$866E) run_objects writes from the type table. As loaded it reads JSR $FFFF."
  },
  {
   "address": 34413,
   "type": "line",
   "text": "The low byte of object_call's address, written from type_table."
  },
  {
   "address": 34414,
   "type": "line",
   "text": "The high byte of object_call's address. After the call, the next object in the list, until the list ends."
  },
  {
   "address": 34420,
   "type": "line",
   "text": "The routine for each object type, 0 to $0A: the helicopter ($8276), an explosion in the air ($83A7), on the ground ($8409), a tank ($600F), a missile ($8561), a bomb ($8526), the helicopter's shot ($84A7), none for 7, a shell from a tank or a drone ($85B0), a jet ($8006), a drone ($8C42)."
  },
  {
   "address": 34421,
   "type": "line",
   "text": "The high bytes of type_table's addresses."
  },
  {
   "address": 34442,
   "type": "line",
   "text": "What a flying shot hits. At the ground's depth and lower than 14, within 24 dots right of a barracks' X, it explodes against it (and the blast can open it, $88AD). Higher than 24 it can hit a jet that has come forward to within 8 rows of the ground's depth: within 8 rows of its height and 19 dots of its X; at any height, a drone within 8 rows and 16 dots. Either is destroyed ($8A0B, $8A9F) and the shot becomes an explosion."
  },
  {
   "address": 34719,
   "type": "line",
   "text": "A missile within 9 rows and 10 dots of the helicopter explodes, at one row in front of the ground's depth, and the helicopter is hit ($8924)."
  },
  {
   "address": 34788,
   "type": "line",
   "text": "A drone within 7 rows and 18 dots of the helicopter is taken off the drone list and explodes, and the helicopter is hit."
  },
  {
   "address": 34845,
   "type": "line",
   "text": "The harm an explosion does where it lands, nothing in the base's block or beyond. At the ground's depth or behind it: a helicopter on the ground within 11 dots is hit ($8924); every hostage within about 10 dots that is not climbing aboard is killed ($8B37); a closed barracks (of the first three) within 24 dots right of its X is opened ($8B4B). In front of the ground's depth: a tank within 10 rows of depth and 13 dots is destroyed ($8930)."
  },
  {
   "address": 35017,
   "type": "line",
   "text": "The blast's search of the tank list."
  },
  {
   "address": 35108,
   "type": "line",
   "text": "The helicopter is hit ($10 = 1); the object that hit it is marked 4."
  },
  {
   "address": 35120,
   "type": "line",
   "text": "A tank destroyed by a blast, A its place in the tank list: the blast's explosion is moved 3 dots left of the tank and to its depth, the tank becomes an explosion 3 dots right, and the tank list loses it."
  },
  {
   "address": 35212,
   "type": "line",
   "text": "The destroyed tank's place in the tank list."
  },
  {
   "address": 35213,
   "type": "line",
   "text": "Takes the current object off the tank list: one fewer tank, and the entries after it move up."
  },
  {
   "address": 35255,
   "type": "line",
   "text": "Takes the current object off the drone list."
  },
  {
   "address": 35297,
   "type": "line",
   "text": "Takes the current object off the jet list."
  },
  {
   "address": 35339,
   "type": "line",
   "text": "A jet hit by a shot, A its place in the jet list: it comes to the ground's depth and explodes, a new explosion is made 4 dots left of it and the shot's explosion moved 4 dots right, three bursts across it; the jet list loses it."
  },
  {
   "address": 35485,
   "type": "line",
   "text": "The destroyed jet's place in the jet list."
  },
  {
   "address": 35486,
   "type": "line",
   "text": "The shot that hit the jet."
  },
  {
   "address": 35487,
   "type": "line",
   "text": "A drone hit by a shot: the same three bursts as a jet's, and the drone list loses it."
  },
  {
   "address": 35637,
   "type": "line",
   "text": "The destroyed drone's place in the drone list."
  },
  {
   "address": 35638,
   "type": "line",
   "text": "The shot that hit the drone."
  },
  {
   "address": 35639,
   "type": "line",
   "text": "A hostage caught in a blast: its slot freed, one more killed (the counter and its tune), one fewer out."
  },
  {
   "address": 35659,
   "type": "line",
   "text": "A blast at barracks A: if it was closed it is open now ($7311 + A), and its hostages can come out ($62F2)."
  },
  {
   "address": 35679,
   "type": "line",
   "text": "A jet fires: two missiles (type 4), 8 rows above and 9 below it, at the ground's depth, flying 24 dots a frame the way the jet flies, with the noise of the launch."
  },
  {
   "address": 35824,
   "type": "line",
   "text": "The jet that fires or bombs."
  },
  {
   "address": 35825,
   "type": "line",
   "text": "The second missile's slot."
  },
  {
   "address": 35826,
   "type": "line",
   "text": "A jet drops a bomb (type 5) just below it, at the ground's depth, moving 20 dots a frame the way the jet flies."
  },
  {
   "address": 35906,
   "type": "line",
   "text": "A drone, type $0A. Draws its body ($A07E) with the colour bit set (erase kind $19) and, 6 rows below, one of three pictures ($A080) of its spinning part with the bit clear; while it is on the screen it buzzes, once a frame for all the drones, a short tone whose pitch follows the spin. Three or more blocks from the helicopter it is dropped. Its horizontal speed turns a dot a frame towards the helicopter, to 5 at most, and on the screen its height closes on the helicopter's a dot a frame. At level 3, one time in four when its spin is at the first picture, on the screen and lower than 88, it drops a shell (type 8) moving 10 dots a frame faster or slower than itself. A drone that reaches the ground (lower than 10) explodes with its blast; otherwise it may hit the helicopter ($87E4)."
  },
  {
   "address": 35923,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $8C50): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 35925,
   "type": "line",
   "text": "The drone's body, $A07E."
  },
  {
   "address": 35928,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $8C55): the address of the shape's pointer, ptr_drone ($A07E), which holds $AAAF, shp_drone."
  },
  {
   "address": 35930,
   "type": "line",
   "text": "Draws the body with the colour bit set (erase kind $19), marks the drone as on the screen, and buzzes once a frame for all the drones; then places its spinning part 6 rows below."
  },
  {
   "address": 35996,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $8C99): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 35998,
   "type": "line",
   "text": "Steps the drone's spin, 0, 1, 2, and picks its picture from the three at $A080."
  },
  {
   "address": 36030,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $8CBB): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 36032,
   "type": "line",
   "text": "Draws the spinning part opaque with the colour bit clear (the violet and green group). Then the drone's steering and height, its shells at level 3, and the ground or the helicopter."
  },
  {
   "address": 36350,
   "type": "line",
   "text": "The drone's spin, kept while move_projectile runs with no change of depth."
  },
  {
   "address": 36351,
   "type": "line",
   "text": "$FF when the drone was drawn on the screen this frame."
  },
  {
   "address": 36352,
   "type": "line",
   "text": "The drone dropping a shell."
  },
  {
   "address": 36353,
   "type": "line",
   "text": "Not run and not read: 511 bytes laid out like hi-res screen memory, black sky ($80) and the ground's $55 $2A in 40-byte lines with eight unused bytes after each three, part of a screen that was in memory when the file was saved."
  },
  {
   "address": 36864,
   "type": "line",
   "text": "Jump-table entry to $9411: draw the planet on the page being drawn. The module's fifteen services are reached through this table of JMPs, $9000-$902A, three bytes apart."
  },
  {
   "address": 36867,
   "type": "line",
   "text": "Jump-table entry to $96AE: give the stars a new random pattern and store them on the page being drawn."
  },
  {
   "address": 36870,
   "type": "line",
   "text": "Jump-table entry to $999F: draw the counters' bar, its top at the row in Y."
  },
  {
   "address": 36873,
   "type": "line",
   "text": "Jump-table entry to $9ADD, a routine that builds the whole screen from nothing. Nothing in the game calls it."
  },
  {
   "address": 36876,
   "type": "line",
   "text": "Jump-table entry to $9CD1: move the view to follow the helicopter."
  },
  {
   "address": 36879,
   "type": "line",
   "text": "Jump-table entry to $9B4C: swap the two pages' erase lists and erase every box in the list for the page about to be drawn."
  },
  {
   "address": 36882,
   "type": "line",
   "text": "Jump-table entry to $92B8: draw the base: its landing pad, the post office and its flag."
  },
  {
   "address": 36885,
   "type": "line",
   "text": "Jump-table entry to $9136: draw the fence posts in perspective."
  },
  {
   "address": 36888,
   "type": "line",
   "text": "Jump-table entry to $9E65: double the signed number in $5D/$5E Y times. Only the fence uses it, directly."
  },
  {
   "address": 36891,
   "type": "line",
   "text": "Jump-table entry to $902D: draw the four barracks."
  },
  {
   "address": 36894,
   "type": "line",
   "text": "Jump-table entry to $9EA9: open the fourth barracks and let its first eight hostages out."
  },
  {
   "address": 36897,
   "type": "line",
   "text": "Jump-table entry to $9A47: a new game's counters, barracks and hostages."
  },
  {
   "address": 36900,
   "type": "line",
   "text": "Jump-table entry to $9F18: put the helicopter on its pad, ready for a sortie."
  },
  {
   "address": 36903,
   "type": "line",
   "text": "Jump-table entry to $96D1: store the stars in their first pattern."
  },
  {
   "address": 36906,
   "type": "line",
   "text": "Jump-table entry to $9407: draw the planet's bottom six lines only, which the title's logo crosses."
  },
  {
   "address": 36909,
   "type": "line",
   "text": "Draws the four barracks, at world X $0380, $0480, $0580 and $0680 (the low byte $700E with the view's parity, the high byte $700F plus 0-3), when the view's high byte is at most three more than the first's. Each: the barracks itself at row 36 by its state ($7311 + n): 0 closed, otherwise open, the picture from the table at $A0CA copied as screen bytes; the strip at its foot ($A0CE, row 25), recorded for erasing as kind $17. An open barracks also has its fire, the shape whose pointer is at $A0D2 or $A0D4 by the frame's parity, mirrored every other two frames, drawn with the colour bit set 6 dots in at row 28, and the rubble in front of it ($A0D0, row 22, erase kind $18)."
  },
  {
   "address": 36970,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $9067): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 36972,
   "type": "line",
   "text": "The barracks' picture by its state, closed or open, from the table at $A0CA."
  },
  {
   "address": 36993,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $907E): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 36995,
   "type": "line",
   "text": "Copies the barracks' bytes onto the screen, then places the strip at its foot at row 25."
  },
  {
   "address": 37010,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $908F): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37012,
   "type": "line",
   "text": "The strip's shape, by its pointer at $A0CE."
  },
  {
   "address": 37015,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9094): the address of the shape's pointer, ptr_barracks_strip ($A0CE), which holds $B6FD, shp_barracks_strip."
  },
  {
   "address": 37017,
   "type": "line",
   "text": "Draws the strip by OR and records the box for the barracks and its strip (kind $17) at row 36; then, for an open barracks, places its fire 6 dots in at row 28."
  },
  {
   "address": 37065,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $90C6): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37067,
   "type": "line",
   "text": "The fire's picture by the frame's parity, by the pointers at $A0D2 or $A0D4."
  },
  {
   "address": 37076,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $90D1): the address of the shape's pointer, ptr_fire0 ($A0D2), which holds $B70D, shp_fire0."
  },
  {
   "address": 37078,
   "type": "line",
   "text": "The first fire picture is chosen; this skips the second."
  },
  {
   "address": 37084,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $90D9): the address of the shape's pointer, ptr_fire1 ($A0D4), which holds $B719, shp_fire1."
  },
  {
   "address": 37086,
   "type": "line",
   "text": "Draws the fire opaque with the colour bit set, mirrored every other two frames, then places the rubble in front of the barracks."
  },
  {
   "address": 37134,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $910B): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37136,
   "type": "line",
   "text": "The rubble's shape, by its pointer at $A0D0."
  },
  {
   "address": 37139,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9110): the address of the shape's pointer, ptr_rubble ($A0D0), which holds $B707, shp_rubble."
  },
  {
   "address": 37141,
   "type": "line",
   "text": "Draws the rubble by OR (erase kind $18); then the next barracks, its X's high byte one more, until four are drawn."
  },
  {
   "address": 37171,
   "type": "line",
   "text": "The barracks being drawn, 0-3."
  },
  {
   "address": 37172,
   "type": "line",
   "text": "The barracks' world X, low byte: $700E with the view's parity, less one."
  },
  {
   "address": 37173,
   "type": "line",
   "text": "The barracks' world X, high byte: $700F plus the barracks' number."
  },
  {
   "address": 37174,
   "type": "line",
   "text": "Draws the fence when the view's high byte is within one of the fence's ($700D): five posts that grow from 7 to 17 dots wide ($A0C0-$A0C8), at rows 28, 27, 25, 22 and 17, the higher ones further away. A post's distance from the screen's centre is the fence's own distance from the centre (d, from $700C less the view's left edge less 140) times 1 1/8, 1 1/4, 1 1/2, 2 and 3 (shift_right and shift_left give d/8, d/4, d/2, d and 2d, added to the fence's X), so the posts swing apart as the view passes, a fence running into the screen. Each is recorded for erasing as kind $16."
  },
  {
   "address": 37372,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $91F9): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37374,
   "type": "line",
   "text": "The far post's shape, by its pointer at $A0C0, 7 dots wide."
  },
  {
   "address": 37377,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $91FE): the address of the shape's pointer, ptr_post1 ($A0C0), which holds $B392, shp_post1."
  },
  {
   "address": 37379,
   "type": "line",
   "text": "Draws the far post (erase kind $16), then places the second at its X and row."
  },
  {
   "address": 37410,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $921F): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37412,
   "type": "line",
   "text": "The second post's shape, by its pointer at $A0C2."
  },
  {
   "address": 37415,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9224): the address of the shape's pointer, ptr_post2 ($A0C2), which holds $B399, shp_post2."
  },
  {
   "address": 37417,
   "type": "line",
   "text": "Draws the second post, then places the third."
  },
  {
   "address": 37448,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $9245): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37450,
   "type": "line",
   "text": "The third post's shape, by its pointer at $A0C4."
  },
  {
   "address": 37453,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $924A): the address of the shape's pointer, ptr_post3 ($A0C4), which holds $B3A7, shp_post3."
  },
  {
   "address": 37455,
   "type": "line",
   "text": "Draws the third post, then places the fourth."
  },
  {
   "address": 37486,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $926B): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37488,
   "type": "line",
   "text": "The fourth post's shape, by its pointer at $A0C6."
  },
  {
   "address": 37491,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9270): the address of the shape's pointer, ptr_post4 ($A0C6), which holds $B3B7, shp_post4."
  },
  {
   "address": 37493,
   "type": "line",
   "text": "Draws the fourth post, then places the near one."
  },
  {
   "address": 37524,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $9291): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37526,
   "type": "line",
   "text": "The near post's shape, by its pointer at $A0C8, 17 dots wide."
  },
  {
   "address": 37529,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9296): the address of the shape's pointer, ptr_post5 ($A0C8), which holds $B3D4, shp_post5."
  },
  {
   "address": 37531,
   "type": "line",
   "text": "Draws the near post, and the fence is done."
  },
  {
   "address": 37545,
   "type": "line",
   "text": "The far post's world X ($92A9/$92AA): the fence's X plus d/8."
  },
  {
   "address": 37546,
   "type": "line",
   "text": "The far post's world X, high byte."
  },
  {
   "address": 37547,
   "type": "line",
   "text": "The second post's world X ($92AB/$92AC): the fence's X plus d/4."
  },
  {
   "address": 37548,
   "type": "line",
   "text": "The second post's world X, high byte."
  },
  {
   "address": 37549,
   "type": "line",
   "text": "The third post's world X ($92AD/$92AE): the fence's X plus d/2."
  },
  {
   "address": 37550,
   "type": "line",
   "text": "The third post's world X, high byte."
  },
  {
   "address": 37551,
   "type": "line",
   "text": "The fourth post's world X ($92AF/$92B0): the fence's X plus d."
  },
  {
   "address": 37552,
   "type": "line",
   "text": "The fourth post's world X, high byte."
  },
  {
   "address": 37553,
   "type": "line",
   "text": "The near post's world X ($92B1/$92B2): the fence's X plus 2d."
  },
  {
   "address": 37554,
   "type": "line",
   "text": "The near post's world X, high byte."
  },
  {
   "address": 37555,
   "type": "line",
   "text": "The five posts' rows, far to near: 28, 27, 25, 22, 17."
  },
  {
   "address": 37556,
   "type": "line",
   "text": "The second post's row, 27."
  },
  {
   "address": 37557,
   "type": "line",
   "text": "The third post's row, 25."
  },
  {
   "address": 37558,
   "type": "line",
   "text": "The fourth post's row, 22."
  },
  {
   "address": 37559,
   "type": "line",
   "text": "The near post's row, 17."
  },
  {
   "address": 37560,
   "type": "line",
   "text": "Draws the base when the view's high byte is within one of the base's ($7009), all of it at the base's X ($7008/$7009, $1274) with the view's parity: the green landing pad, a box 19 screen bytes wide and 5 rows deep filled with the pattern at $9401, from X+7 at row 25; its sloping ends ($A0B4) at X, mirrored, and at X+132 (erase kind $13); the post office ($A0B2, its screen bytes copied) at X+73, row 34 (kind $14); its kerbs ($A0BC at X+63, $A0BE at X+123, row 25); and the flagpole ($A0B6) at X+113, row 46 (kind $15), with its flag waving: the shapes whose pointers are at $A0B8 and $A0BA, a frame each, 2 dots to its right."
  },
  {
   "address": 37609,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $92E6): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37611,
   "type": "line",
   "text": "The pad's fill, given directly by the two bytes after the call: pad_fill at $9401."
  },
  {
   "address": 37614,
   "type": "line",
   "text": "gfx_shape_direct's inline argument (the call at $92EB): the shape itself, at pad_fill ($9401)."
  },
  {
   "address": 37616,
   "type": "line",
   "text": "Fills the pad, then places its left end at the base's X."
  },
  {
   "address": 37635,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $9300): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37637,
   "type": "line",
   "text": "The pad's sloping end, $A0B4."
  },
  {
   "address": 37640,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9305): the address of the shape's pointer, ptr_pad_end ($A0B4), which holds $B344, shp_pad_end."
  },
  {
   "address": 37642,
   "type": "line",
   "text": "Draws the left end mirrored and opaque with the colour bit clear (erase kind $13); off the screen the rest of the base is skipped. Then places the right end 132 dots further on."
  },
  {
   "address": 37677,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $932A): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37679,
   "type": "line",
   "text": "Draws the right end, then places the post office at X+73, row 34."
  },
  {
   "address": 37708,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $9349): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37710,
   "type": "line",
   "text": "The post office's shape, by its pointer at $A0B2."
  },
  {
   "address": 37713,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $934E): the address of the shape's pointer, ptr_post_office ($A0B2), which holds $B04E, shp_post_office."
  },
  {
   "address": 37715,
   "type": "line",
   "text": "Copies the post office's bytes onto the screen (erase kind $14), then places the first kerb at X+63."
  },
  {
   "address": 37748,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $9371): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37750,
   "type": "line",
   "text": "The left kerb's shape, by its pointer at $A0BC."
  },
  {
   "address": 37753,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9376): the address of the shape's pointer, ptr_kerb_left ($A0BC), which holds $B382, shp_kerb_left."
  },
  {
   "address": 37755,
   "type": "line",
   "text": "Draws the left kerb by OR, then places the right kerb at X+123."
  },
  {
   "address": 37780,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $9391): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37782,
   "type": "line",
   "text": "The right kerb's shape, by its pointer at $A0BE."
  },
  {
   "address": 37785,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9396): the address of the shape's pointer, ptr_kerb_right ($A0BE), which holds $B38A, shp_kerb_right."
  },
  {
   "address": 37787,
   "type": "line",
   "text": "Draws the right kerb by OR, then places the flagpole at X+113, row 46."
  },
  {
   "address": 37815,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $93B4): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37817,
   "type": "line",
   "text": "The flagpole's shape, by its pointer at $A0B6."
  },
  {
   "address": 37820,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $93B9): the address of the shape's pointer, ptr_flagpole ($A0B6), which holds $B350, shp_flagpole."
  },
  {
   "address": 37822,
   "type": "line",
   "text": "Draws the flagpole opaque with the colour bit set (erase kind $15), then places the flag 2 dots to its right."
  },
  {
   "address": 37857,
   "type": "line",
   "text": "gfx_place's inline argument (the call at $93DE): the address of the place to draw at, place_x ($001C-$001E: the world X, low and high, and the row)."
  },
  {
   "address": 37859,
   "type": "line",
   "text": "The flag's picture by the frame's parity, by the pointers at $A0B8 or $A0BA, so it waves."
  },
  {
   "address": 37878,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $93F3): the address of the shape's pointer, shape_ptr ($001A), which the code above has just set."
  },
  {
   "address": 37880,
   "type": "line",
   "text": "Draws the flag opaque."
  },
  {
   "address": 37889,
   "type": "line",
   "text": "The landing pad's fill for gfx_fill_rect: 19 screen bytes wide, 5 rows, the pattern $2A $55 on every row, a solid colour."
  },
  {
   "address": 37895,
   "type": "line",
   "text": "Draws the planet's bottom six lines on the page being drawn, by entering the planet's routine for that page part way ($9503 or $964E)."
  },
  {
   "address": 37905,
   "type": "line",
   "text": "Draws the planet on the page being drawn, chosen by $78: 66 LDA # and STA pairs that store its bytes straight into screen memory, screen lines 72 to 90 counted from the top (rows 101 to 119 in the game's count from the bottom) at byte columns 31 to 34; $9418 for page 1, $9563 for page 2. The picture is in the code: no shape, no table."
  },
  {
   "address": 38147,
   "type": "line",
   "text": "The planet's bottom six screen lines (85 to 90 from the top) on page 1, entered here by planet_bottom; 19 stores."
  },
  {
   "address": 38243,
   "type": "line",
   "text": "The planet on page 2, the same 66 stores as $9418 at addresses $2000 higher."
  },
  {
   "address": 38478,
   "type": "line",
   "text": "The planet's bottom six lines on page 2."
  },
  {
   "address": 38574,
   "type": "line",
   "text": "Called once a frame: takes two random numbers ($7346), keeps in each only the bits also set in the next bit up (so each bit is set one time in four), makes the two groups of seven star bytes from them (star_bytes, $96E6) and stores the stars on the page being drawn ($972D for page 1, $983F for page 2)."
  },
  {
   "address": 38609,
   "type": "line",
   "text": "Makes the stars' bytes from the fixed patterns $16 and $63 and stores them on the page being drawn, for the landscape's first drawing."
  },
  {
   "address": 38630,
   "type": "line",
   "text": "Makes seven star bytes from the bits of X, at $971F + Y: each byte has the colour bit and one lit dot, and a second, neighbouring dot when its bit of X is set, so a star twinkles between one dot and two."
  },
  {
   "address": 38687,
   "type": "line",
   "text": "The fourteen star bytes, two groups of seven ($971F-$9725, $9726-$972C). Each is stored at four to seven fixed places on the screen, 76 stars in all; $9725's and $9726's share one place ($2427), so the second wins."
  },
  {
   "address": 38688,
   "type": "line",
   "text": "The first group's second star byte, stored at 4 places."
  },
  {
   "address": 38689,
   "type": "line",
   "text": "The first group's third star byte, stored at 5 places."
  },
  {
   "address": 38690,
   "type": "line",
   "text": "The first group's fourth star byte, stored at 4 places."
  },
  {
   "address": 38691,
   "type": "line",
   "text": "The first group's fifth star byte, stored at 6 places."
  },
  {
   "address": 38692,
   "type": "line",
   "text": "The first group's sixth star byte, stored at 5 places."
  },
  {
   "address": 38693,
   "type": "line",
   "text": "The first group's seventh star byte, stored at 6 places, the first of them $2427."
  },
  {
   "address": 38694,
   "type": "line",
   "text": "The second group's first star byte, stored at 7 places, $2427 among them, after $9725's."
  },
  {
   "address": 38695,
   "type": "line",
   "text": "The second group's second star byte, stored at 6 places."
  },
  {
   "address": 38696,
   "type": "line",
   "text": "The second group's third star byte, stored at 6 places."
  },
  {
   "address": 38697,
   "type": "line",
   "text": "The second group's fourth star byte, stored at 6 places."
  },
  {
   "address": 38698,
   "type": "line",
   "text": "The second group's fifth star byte, stored at 6 places."
  },
  {
   "address": 38699,
   "type": "line",
   "text": "The second group's sixth star byte, stored at 5 places."
  },
  {
   "address": 38700,
   "type": "line",
   "text": "The second group's seventh star byte, stored at 7 places."
  },
  {
   "address": 38701,
   "type": "line",
   "text": "Stores the fourteen star bytes at their 77 places on page 1."
  },
  {
   "address": 38975,
   "type": "line",
   "text": "Stores them at the same places on page 2."
  },
  {
   "address": 39249,
   "type": "line",
   "text": "Draws the three counters' frames ($A0EC, at X 41, 119 and 197, row 179) and the little hostage in each ($A0EA, at X 47, 124 and 203, row 178), the third in the other colour group, so the three read red, blue and green."
  },
  {
   "address": 39255,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9954): the address of the shape's pointer, ptr_counter_frame ($A0EC), which holds $B78F, shp_counter_frame."
  },
  {
   "address": 39257,
   "type": "line",
   "text": "Draws the frames with the colour bit set, the first at X 41, row 179."
  },
  {
   "address": 39265,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $995E): the screen position, X 41 and row 179."
  },
  {
   "address": 39268,
   "type": "line",
   "text": "Draws the first frame, then places the second at X 119."
  },
  {
   "address": 39274,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $9967): the screen position, X 119 and row 179."
  },
  {
   "address": 39277,
   "type": "line",
   "text": "Draws the second frame, then places the third at X 197."
  },
  {
   "address": 39283,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $9970): the screen position, X 197 and row 179."
  },
  {
   "address": 39286,
   "type": "line",
   "text": "Draws the third frame, then takes the little hostage, $A0EA."
  },
  {
   "address": 39292,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9979): the address of the shape's pointer, ptr_counter_hostage ($A0EA), which holds $B77F, shp_counter_hostage."
  },
  {
   "address": 39294,
   "type": "line",
   "text": "The first little hostage's place: X 47, row 178."
  },
  {
   "address": 39297,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $997E): the screen position, X 47 and row 178."
  },
  {
   "address": 39300,
   "type": "line",
   "text": "Draws the first little hostage, then places the second at X 124."
  },
  {
   "address": 39306,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $9987): the screen position, X 124 and row 178."
  },
  {
   "address": 39309,
   "type": "line",
   "text": "Draws the second, then switches to the other colour group (gfx_colour 0) and places the third at X 203."
  },
  {
   "address": 39320,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $9995): the screen position, X 203 and row 178."
  },
  {
   "address": 39323,
   "type": "line",
   "text": "Draws the third little hostage, green."
  },
  {
   "address": 39327,
   "type": "line",
   "text": "Draws the counters' bar with its top at the row in Y less 2: a band 40 bytes wide and 6 rows deep (the fill at $9A3B), the bar's ends ($A0B0 at X 0, mirrored at X 262), a green band 17 rows deep (the fill at $9A41) 8 rows lower, the corner at X 279 ($A0AE), and the orange panel 38 bytes wide and 11 rows deep from X 8 (the fill at $9A35)."
  },
  {
   "address": 39342,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $99AB): the address of the screen position, work_x ($0068-$006A: X, low and high, and the row)."
  },
  {
   "address": 39344,
   "type": "line",
   "text": "The band at the top, given directly by the two bytes after the call: $9A3B."
  },
  {
   "address": 39347,
   "type": "line",
   "text": "gfx_shape_direct's inline argument (the call at $99B0): the fill itself, at $9A3B, the band at the top of the counters' bar, in bar_fills."
  },
  {
   "address": 39349,
   "type": "line",
   "text": "Fills the band, then places the bar's left end two rows lower at X 0."
  },
  {
   "address": 39365,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $99C2): the address of the screen position, work_x ($0068-$006A: X, low and high, and the row)."
  },
  {
   "address": 39367,
   "type": "line",
   "text": "The colour bit set, and the bar's end shape, $A0B0."
  },
  {
   "address": 39375,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $99CC): the address of the shape's pointer, ptr_bar_end ($A0B0), which holds $B034, shp_bar_end."
  },
  {
   "address": 39377,
   "type": "line",
   "text": "Draws the left end, then places the right end at X 262."
  },
  {
   "address": 39391,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $99DC): the address of the screen position, work_x ($0068-$006A: X, low and high, and the row)."
  },
  {
   "address": 39393,
   "type": "line",
   "text": "Draws the right end mirrored, then places the green band 8 rows lower at X 0."
  },
  {
   "address": 39412,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $99F1): the address of the screen position, work_x ($0068-$006A: X, low and high, and the row)."
  },
  {
   "address": 39414,
   "type": "line",
   "text": "The green band, given directly by the two bytes after the call: $9A41."
  },
  {
   "address": 39417,
   "type": "line",
   "text": "gfx_shape_direct's inline argument (the call at $99F6): the fill itself, at $9A41, the green band, in bar_fills."
  },
  {
   "address": 39419,
   "type": "line",
   "text": "Fills the green band, then places the corner at X 279."
  },
  {
   "address": 39433,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $9A06): the address of the screen position, work_x ($0068-$006A: X, low and high, and the row)."
  },
  {
   "address": 39435,
   "type": "line",
   "text": "The corner's shape, by its pointer at $A0AE."
  },
  {
   "address": 39438,
   "type": "line",
   "text": "gfx_shape's inline argument (the call at $9A0B): the address of the shape's pointer, ptr_bar_corner ($A0AE), which holds $B01B, shp_bar_corner."
  },
  {
   "address": 39440,
   "type": "line",
   "text": "Draws the corner opaque with the colour bit clear, then places the orange panel 3 rows higher at X 8."
  },
  {
   "address": 39466,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $9A27): the address of the screen position, work_x ($0068-$006A: X, low and high, and the row)."
  },
  {
   "address": 39468,
   "type": "line",
   "text": "The orange panel, given directly by the two bytes after the call: $9A35."
  },
  {
   "address": 39471,
   "type": "line",
   "text": "gfx_shape_direct's inline argument (the call at $9A2C): the shape itself, at bar_fills ($9A35)."
  },
  {
   "address": 39473,
   "type": "line",
   "text": "Fills the panel; the bar is done."
  },
  {
   "address": 39477,
   "type": "line",
   "text": "The fills of the counters' bar, three shapes for gfx_fill_rect (width in bytes, height in rows, then the four pattern bytes): $9A35 the orange panel, 38 by 11, $AA $D5; $9A3B the band at the top, 40 by 6, $D5 $AA; $9A41 the green band, 40 by 17, $2A $55."
  },
  {
   "address": 39495,
   "type": "line",
   "text": "A new game's state. In a game ($79 set) it first redraws the counters' bar on both pages and prints 00 in each of the three counters ($736A). Then: no hostage brought home, killed, out, aboard or walking home ($730B-$730F), 64 in the barracks ($730A), all four barracks closed with 16 inside each ($7311-$7318), the level ($731D) and the helicopters used ($731C) back to 0, the three counters' digits ($7319-$731B) to 0, and every hostage slot marked empty ($7292, $72D2 of them)."
  },
  {
   "address": 39645,
   "type": "line",
   "text": "Never called: builds the screen from nothing. Clears both pages, blackens rows 0 to 180, draws the counters' bar on each, sets the window, fills the ground on both pages (the fill at $9B46: 40 bytes wide, the pattern $55 $2A) and turns on the hi-res display. The game has no need of it: the screen comes ready made, with the title picture the loader puts in both pages."
  },
  {
   "address": 39697,
   "type": "line",
   "text": "gfx_window_offset's inline argument (the call at $9B0E): the address of the window offset, play_offset ($7018), 0."
  },
  {
   "address": 39699,
   "type": "line",
   "text": "Gives the library the window's top, as start does."
  },
  {
   "address": 39702,
   "type": "line",
   "text": "gfx_window_top's inline argument (the call at $9B13): the address of the window's top, play_top ($701E), 166."
  },
  {
   "address": 39704,
   "type": "line",
   "text": "Writes the ground's row into the operand at $9B35 and its height into the fill at $9B47, and takes that fill."
  },
  {
   "address": 39726,
   "type": "line",
   "text": "gfx_shape_direct's inline argument (the call at $9B2B): the shape itself, at ground_fill ($9B46)."
  },
  {
   "address": 39728,
   "type": "line",
   "text": "Places the ground's fill at X 0 and the row just written."
  },
  {
   "address": 39731,
   "type": "line",
   "text": "gfx_at's inline arguments (the call at $9B30): X 0; the row's byte follows."
  },
  {
   "address": 39733,
   "type": "line",
   "text": "The row operand of the gfx_at call before it, rewritten by build_screen: the window offset plus the ground top ($7018 + $701B)."
  },
  {
   "address": 39734,
   "type": "line",
   "text": "Fills the ground on both pages and turns on the hi-res display."
  },
  {
   "address": 39750,
   "type": "line",
   "text": "The ground's fill for build_screen: 40 bytes wide, its height ($9B47) rewritten to $701B + 1, the pattern $55 $2A."
  },
  {
   "address": 39751,
   "type": "line",
   "text": "The ground fill's height, rewritten by build_screen."
  },
  {
   "address": 39756,
   "type": "line",
   "text": "The first drawing step of every frame, once the keys, the stick and the buttons have been read: swaps the two erase lists' addresses and lengths, so this page's list is the one recorded when this page was last drawn, two frames before, and erases each box in it. A box is four bytes (kind, X low, X high, row); the kind's line in erase_boxes ($9C69) moves it left and up and gives its width in bytes and height in rows. A box cut by the screen's left edge is narrowed. Its rows above the ground line ($701F) are filled black, those below with the ground's colour, so nothing redrawn has to be put back behind it; the sky is cut at row 166 ($7020). The list is then emptied."
  },
  {
   "address": 39975,
   "type": "line",
   "text": "gfx_shape_direct's inline argument (the call at $9C24): the shape itself, at erase_sky ($9C5D)."
  },
  {
   "address": 39977,
   "type": "line",
   "text": "The black box's place, the word after the call pointing at the box's X and row."
  },
  {
   "address": 39980,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $9C29): the address of the screen position, erase_x ($001F-$0021: X, low and high, and the row)."
  },
  {
   "address": 39982,
   "type": "line",
   "text": "Fills the part of the box above the ground line black, then takes the ground's fill for the part below."
  },
  {
   "address": 40000,
   "type": "line",
   "text": "gfx_shape_direct's inline argument (the call at $9C3D): the shape itself, at erase_ground ($9C63)."
  },
  {
   "address": 40002,
   "type": "line",
   "text": "Moves the row up by the rows already filled, for the part of the box below the ground line."
  },
  {
   "address": 40012,
   "type": "line",
   "text": "gfx_at_ptr's inline argument (the call at $9C49): the address of the screen position, erase_x ($001F-$0021: X, low and high, and the row)."
  },
  {
   "address": 40014,
   "type": "line",
   "text": "Fills the part below the ground line with the ground's colour, then the next box, until the list is done and emptied."
  },
  {
   "address": 40029,
   "type": "line",
   "text": "The black fill for erase_old (width and height rewritten for each box, the pattern $80)."
  },
  {
   "address": 40030,
   "type": "line",
   "text": "The black fill's height, rewritten for each box."
  },
  {
   "address": 40035,
   "type": "line",
   "text": "The ground's fill for erase_old (width and height rewritten, the pattern $55 $2A)."
  },
  {
   "address": 40036,
   "type": "line",
   "text": "The ground fill's height for erase_old, rewritten for each box."
  },
  {
   "address": 40041,
   "type": "line",
   "text": "26 lines of four bytes, one per kind of shape recorded by add_erase ($7BF8): dots left of the recorded X, rows above the recorded row, width in screen bytes, height in rows. Kind 0 is the helicopter, whose box reaches 22 dots left and 14 rows up of its X and row, 7 bytes by 23 rows; kinds $13 to $18 are the base's pad, the post office, the flag, the fence posts, a barracks and its rubble. The others belong to the hostages, the enemies, the shots and the explosions; the callers name them."
  },
  {
   "address": 40042,
   "type": "line",
   "text": "The second byte of each of erase_boxes' lines, read one on from it: the rows above the recorded row."
  },
  {
   "address": 40043,
   "type": "line",
   "text": "The third byte of each line: the width in screen bytes."
  },
  {
   "address": 40044,
   "type": "line",
   "text": "The fourth byte of each line, the height in rows; the rest of the 26 lines follow."
  },
  {
   "address": 40145,
   "type": "line",
   "text": "Moves the view each frame. While the helicopter is on the pad the view runs 4 dots a frame towards the base. On the ground, or flying backwards (facing one way, moving the other), the view only keeps the helicopter between 70 and 210 dots from the screen's left edge ($7021 and $7023). Flying the way it faces, or facing the viewer, the view leads: it aims to put the point the helicopter will reach in eight frames ($00/$01 halved five times) 70 dots from the left edge when it flies left, 210 when it flies right, and closes on that at the helicopter's own speed plus 4 dots a frame (scroll_step). The view is kept between $02B0 and $1208 ($7004 and $7006) and handed to the graphics library."
  },
  {
   "address": 40470,
   "type": "line",
   "text": "gfx_view's inline argument (the call at $9E13): the address of the view's left edge, view_x ($0072/$0073)."
  },
  {
   "address": 40472,
   "type": "line",
   "text": "Returns with the view where it was: the helicopter is inside its margins, or the view has already reached the point it leads to."
  },
  {
   "address": 40473,
   "type": "line",
   "text": "The view's step this frame into $5B: the helicopter's speed in whole dots a frame ($01), made positive, plus 4, but never more than the gap left to the view's target."
  },
  {
   "address": 40549,
   "type": "line",
   "text": "Doubles the signed number in $5D/$5E Y times, working on its size and putting the sign back."
  },
  {
   "address": 40616,
   "type": "line",
   "text": "$FF while shift_left works on a negative number."
  },
  {
   "address": 40617,
   "type": "line",
   "text": "Opens the fourth barracks ($7314 = 1) and lets eight of its hostages out ($730D = 8, eight fewer in the barracks and in the fourth, $730A and $7318). Their slots ($7292, four bytes each) get a step 0 to 3 in turn and a world X, the first $03D0 dots right of the first barracks ($0750, in front of the fourth), each next 32 to 158 dots further right, a random even number."
  },
  {
   "address": 40728,
   "type": "line",
   "text": "A helicopter on its pad: side-on (pose 5, facing 1), level, the sticks centred, on the ground with its door open and on the pad, no crash, no shot waiting and none in flight ($7310), at rest at world X $1293, height 7, on the ground row from $701A. Empties the object list ($7325), shows page 1 and draws on page 2, and clears the trip flag $731E."
  },
  {
   "address": 40825,
   "type": "line",
   "text": "Not run and not read: 92 bytes identical to the table at $6F79-$6FD4, an older copy left in memory when this page was saved; then zeros to $9FFF."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The shape table: 128 pointers, low byte first, one for each shape, which gfx_shape and the code's own lookups read. $A000-$A015: the helicopter side-on, one for each tilt, -5 to +5."
  },
  {
   "address": 40982,
   "type": "line",
   "text": "$A016-$A01F: the helicopter's poses 0 to 4, from facing the viewer round towards side-on; the negative poses are the same pictures mirrored."
  },
  {
   "address": 40983,
   "type": "line",
   "text": "The high bytes of the pose pointers, read one on from ptr_heli_poses."
  },
  {
   "address": 40992,
   "type": "line",
   "text": "The squashed side-on helicopter of a bounce."
  },
  {
   "address": 40993,
   "type": "line",
   "text": "That pointer's high byte, read on its own."
  },
  {
   "address": 40994,
   "type": "line",
   "text": "The squashed front view of a bounce."
  },
  {
   "address": 40995,
   "type": "line",
   "text": "The squashed front view's high byte, read on its own."
  },
  {
   "address": 40996,
   "type": "line",
   "text": "$A024-$A029: the main rotor's three pictures, picked by rotor_frame (4, 2, 0)."
  },
  {
   "address": 41002,
   "type": "line",
   "text": "$A02A-$A031: the side-on tail rotor's four pictures, picked by tail_frame."
  },
  {
   "address": 41003,
   "type": "line",
   "text": "The high bytes of the tail rotor's pointers."
  },
  {
   "address": 41010,
   "type": "line",
   "text": "The jets' pictures, by manoeuvre (jet_pictures, $826C): $A032 cruising, the one picture."
  },
  {
   "address": 41012,
   "type": "line",
   "text": "$A034-$A041: manoeuvre 1's seven, the turn towards the viewer."
  },
  {
   "address": 41026,
   "type": "line",
   "text": "$A042-$A04B: manoeuvre 2's five, coming forward."
  },
  {
   "address": 41036,
   "type": "line",
   "text": "$A04C-$A057: manoeuvre 3's six, the attack run with missiles."
  },
  {
   "address": 41048,
   "type": "line",
   "text": "$A058-$A063: manoeuvre 4's six, the bombing run."
  },
  {
   "address": 41060,
   "type": "line",
   "text": "The tank's turret."
  },
  {
   "address": 41062,
   "type": "line",
   "text": "The tank's hull, first picture."
  },
  {
   "address": 41064,
   "type": "line",
   "text": "The tank's hull, second picture."
  },
  {
   "address": 41066,
   "type": "line",
   "text": "$A06A-$A073: the tank's gun at its five aims."
  },
  {
   "address": 41067,
   "type": "line",
   "text": "The high bytes of the gun's pointers."
  },
  {
   "address": 41076,
   "type": "line",
   "text": "The helicopter's shot."
  },
  {
   "address": 41078,
   "type": "line",
   "text": "A shell, a tank's or a drone's."
  },
  {
   "address": 41080,
   "type": "line",
   "text": "A jet's missile."
  },
  {
   "address": 41082,
   "type": "line",
   "text": "A jet's bomb."
  },
  {
   "address": 41084,
   "type": "line",
   "text": "The muzzle flash."
  },
  {
   "address": 41086,
   "type": "line",
   "text": "The drone's body."
  },
  {
   "address": 41088,
   "type": "line",
   "text": "$A080-$A085: the drone's spinning part, three pictures."
  },
  {
   "address": 41089,
   "type": "line",
   "text": "The high bytes of the spinning part's pointers."
  },
  {
   "address": 41094,
   "type": "line",
   "text": "$A086-$A08F: the five pictures of an explosion."
  },
  {
   "address": 41095,
   "type": "line",
   "text": "The high bytes of the explosion's pointers."
  },
  {
   "address": 41104,
   "type": "line",
   "text": "The flash of an explosion on the ground."
  },
  {
   "address": 41105,
   "type": "line",
   "text": "The ground flash pointer's high byte, read on its own."
  },
  {
   "address": 41106,
   "type": "line",
   "text": "The crushed hostage."
  },
  {
   "address": 41108,
   "type": "line",
   "text": "$A094-$A09B: a hostage running, four pictures."
  },
  {
   "address": 41109,
   "type": "line",
   "text": "The high bytes of the running pictures' pointers."
  },
  {
   "address": 41116,
   "type": "line",
   "text": "$A09C-$A0A1: a hostage waving, three pictures."
  },
  {
   "address": 41117,
   "type": "line",
   "text": "The high bytes of the waving pictures' pointers."
  },
  {
   "address": 41122,
   "type": "line",
   "text": "$A0A2-$A0A5: a hostage climbing aboard, two pictures."
  },
  {
   "address": 41123,
   "type": "line",
   "text": "The high bytes of the climbing pictures' pointers."
  },
  {
   "address": 41126,
   "type": "line",
   "text": "$A0A6-$A0AD: the four stretches of hills."
  },
  {
   "address": 41127,
   "type": "line",
   "text": "The high bytes of the hills' pointers."
  },
  {
   "address": 41134,
   "type": "line",
   "text": "The counters' bar: its corner."
  },
  {
   "address": 41136,
   "type": "line",
   "text": "The counters' bar: its sloping end."
  },
  {
   "address": 41138,
   "type": "line",
   "text": "The base: the post office."
  },
  {
   "address": 41140,
   "type": "line",
   "text": "The base: the pad's sloping end."
  },
  {
   "address": 41142,
   "type": "line",
   "text": "The base: the flagpole."
  },
  {
   "address": 41144,
   "type": "line",
   "text": "$A0B8-$A0BB: the base's flag, two pictures."
  },
  {
   "address": 41145,
   "type": "line",
   "text": "The high bytes of the flag's pointers."
  },
  {
   "address": 41148,
   "type": "line",
   "text": "The base: the pad's left kerb."
  },
  {
   "address": 41150,
   "type": "line",
   "text": "The base: the pad's right kerb."
  },
  {
   "address": 41152,
   "type": "line",
   "text": "The fence: the far post."
  },
  {
   "address": 41154,
   "type": "line",
   "text": "The fence: the second post."
  },
  {
   "address": 41156,
   "type": "line",
   "text": "The fence: the third post."
  },
  {
   "address": 41158,
   "type": "line",
   "text": "The fence: the fourth post."
  },
  {
   "address": 41160,
   "type": "line",
   "text": "The fence: the near post."
  },
  {
   "address": 41162,
   "type": "line",
   "text": "$A0CA-$A0CD: a barracks closed, then open, by its state."
  },
  {
   "address": 41163,
   "type": "line",
   "text": "The high bytes of the barracks' pointers."
  },
  {
   "address": 41166,
   "type": "line",
   "text": "The strip at a barracks' foot."
  },
  {
   "address": 41168,
   "type": "line",
   "text": "An open barracks' rubble."
  },
  {
   "address": 41170,
   "type": "line",
   "text": "An open barracks' fire, first picture."
  },
  {
   "address": 41172,
   "type": "line",
   "text": "An open barracks' fire, second picture."
  },
  {
   "address": 41174,
   "type": "line",
   "text": "$A0D6-$A0E9: the counters' digits, 0 to 9."
  },
  {
   "address": 41175,
   "type": "line",
   "text": "The high bytes of the digits' pointers."
  },
  {
   "address": 41194,
   "type": "line",
   "text": "The counters: the little hostage."
  },
  {
   "address": 41196,
   "type": "line",
   "text": "The counters: the frame."
  },
  {
   "address": 41198,
   "type": "line",
   "text": "The attract mode's mission text."
  },
  {
   "address": 41200,
   "type": "line",
   "text": "The title's CHOPLIFTER logo."
  },
  {
   "address": 41202,
   "type": "line",
   "text": "The title's first line, Broderbund's."
  },
  {
   "address": 41204,
   "type": "line",
   "text": "The title's credit line."
  },
  {
   "address": 41206,
   "type": "line",
   "text": "The end screen's \"THE END\"."
  },
  {
   "address": 41208,
   "type": "line",
   "text": "The end screen's crowns."
  },
  {
   "address": 41210,
   "type": "line",
   "text": "$A0FA-$A0FF: the three sorties' messages, by the helicopters used."
  },
  {
   "address": 41211,
   "type": "line",
   "text": "The high bytes of the sortie messages' pointers."
  },
  {
   "address": 41216,
   "type": "line",
   "text": "Two zero bytes between the pointer table and the first shape, which nothing reads."
  },
  {
   "address": 41218,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt -5: nose down 5 steps, 32 dots wide and 18 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A000)."
  },
  {
   "address": 41292,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt -4: nose down 4 steps, 32 dots wide and 16 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A002)."
  },
  {
   "address": 41358,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt -3: nose down 3 steps, 33 dots wide and 15 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A004)."
  },
  {
   "address": 41435,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt -2: nose down 2 steps, 34 dots wide and 14 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A006)."
  },
  {
   "address": 41507,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt -1: nose down 1 step, 35 dots wide and 14 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A008)."
  },
  {
   "address": 41579,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt +0: level, 35 dots wide and 13 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A00A)."
  },
  {
   "address": 41646,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt +1: nose up 1 step, 35 dots wide and 13 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A00C)."
  },
  {
   "address": 41713,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt +2: nose up 2 steps, 35 dots wide and 13 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A00E)."
  },
  {
   "address": 41780,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt +3: nose up 3 steps, 34 dots wide and 14 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A010)."
  },
  {
   "address": 41852,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt +4: nose up 4 steps, 35 dots wide and 15 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A012)."
  },
  {
   "address": 41929,
   "type": "line",
   "text": "The helicopter side-on, facing right, at tilt +5: nose up 5 steps, 34 dots wide and 16 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A014)."
  },
  {
   "address": 42011,
   "type": "line",
   "text": "The helicopter at pose 0, facing the viewer, 12 dots wide and 13 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A016)."
  },
  {
   "address": 42039,
   "type": "line",
   "text": "The helicopter at pose 1, a step round from facing the viewer, 12 dots wide and 13 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A018)."
  },
  {
   "address": 42067,
   "type": "line",
   "text": "The helicopter at pose 2, two steps round, 18 dots wide and 13 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A01A)."
  },
  {
   "address": 42108,
   "type": "line",
   "text": "The helicopter at pose 3, three steps round, 26 dots wide and 13 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A01C)."
  },
  {
   "address": 42162,
   "type": "line",
   "text": "The helicopter at pose 4, four steps round, almost side-on, 32 dots wide and 13 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A01E)."
  },
  {
   "address": 42216,
   "type": "line",
   "text": "The helicopter side-on, squashed, for a bounce on landing, 35 dots wide and 12 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A020)."
  },
  {
   "address": 42278,
   "type": "line",
   "text": "The helicopter facing the viewer, squashed, for a bounce on landing, 12 dots wide and 12 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A022)."
  },
  {
   "address": 42304,
   "type": "line",
   "text": "The main rotor, picture 1 of 3, a line seen edge-on, 38 dots wide and 1 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A024)."
  },
  {
   "address": 42311,
   "type": "line",
   "text": "The main rotor, picture 2 of 3, a line seen edge-on, 38 dots wide and 1 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A026)."
  },
  {
   "address": 42318,
   "type": "line",
   "text": "The main rotor, picture 3 of 3, a line seen edge-on, 38 dots wide and 1 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A028)."
  },
  {
   "address": 42325,
   "type": "line",
   "text": "The side-on tail rotor, picture 1 of 4, 7 dots wide and 6 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A02A)."
  },
  {
   "address": 42333,
   "type": "line",
   "text": "The side-on tail rotor, picture 2 of 4, 6 dots wide and 6 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A02C)."
  },
  {
   "address": 42341,
   "type": "line",
   "text": "The side-on tail rotor, picture 3 of 4, 7 dots wide and 4 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A02E)."
  },
  {
   "address": 42347,
   "type": "line",
   "text": "The side-on tail rotor, picture 4 of 4, 4 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A030)."
  },
  {
   "address": 42356,
   "type": "line",
   "text": "The jet cruising side-on, manoeuvre 0's only picture, 21 dots wide and 5 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A032)."
  },
  {
   "address": 42373,
   "type": "line",
   "text": "The jet turning round towards the viewer, manoeuvre 1's picture 1 of 7, 25 dots wide and 11 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A034)."
  },
  {
   "address": 42419,
   "type": "line",
   "text": "The jet turning round towards the viewer, manoeuvre 1's picture 2 of 7, 23 dots wide and 13 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A036)."
  },
  {
   "address": 42460,
   "type": "line",
   "text": "The jet turning round towards the viewer, manoeuvre 1's picture 3 of 7, 17 dots wide and 15 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A038)."
  },
  {
   "address": 42507,
   "type": "line",
   "text": "The jet turning round towards the viewer, manoeuvre 1's picture 4 of 7, 15 dots wide and 16 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A03A)."
  },
  {
   "address": 42541,
   "type": "line",
   "text": "The jet turning round towards the viewer, manoeuvre 1's picture 5 of 7, 17 dots wide and 17 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A03C)."
  },
  {
   "address": 42594,
   "type": "line",
   "text": "The jet turning round towards the viewer, manoeuvre 1's picture 6 of 7, 25 dots wide and 16 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A03E)."
  },
  {
   "address": 42660,
   "type": "line",
   "text": "The jet turning round towards the viewer, manoeuvre 1's picture 7 of 7, 31 dots wide and 16 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A040)."
  },
  {
   "address": 42726,
   "type": "line",
   "text": "The jet coming forward out of the background, manoeuvre 2's picture 1 of 5, 21 dots wide and 11 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A042)."
  },
  {
   "address": 42761,
   "type": "line",
   "text": "The jet coming forward out of the background, manoeuvre 2's picture 2 of 5, 23 dots wide and 14 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A044)."
  },
  {
   "address": 42805,
   "type": "line",
   "text": "The jet coming forward out of the background, manoeuvre 2's picture 3 of 5, 29 dots wide and 10 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A046)."
  },
  {
   "address": 42847,
   "type": "line",
   "text": "The jet coming forward out of the background, manoeuvre 2's picture 4 of 5, 33 dots wide and 8 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A048)."
  },
  {
   "address": 42889,
   "type": "line",
   "text": "The jet coming forward out of the background, manoeuvre 2's picture 5 of 5, 35 dots wide and 11 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A04A)."
  },
  {
   "address": 42946,
   "type": "line",
   "text": "The jet's attack run, manoeuvre 3's picture 1 of 6, from close to far as it climbs away, 35 dots wide and 18 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A04C)."
  },
  {
   "address": 43038,
   "type": "line",
   "text": "The jet's attack run, manoeuvre 3's picture 2 of 6, from close to far as it climbs away, 29 dots wide and 15 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A04E)."
  },
  {
   "address": 43100,
   "type": "line",
   "text": "The jet's attack run, manoeuvre 3's picture 3 of 6, from close to far as it climbs away, 27 dots wide and 13 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A050)."
  },
  {
   "address": 43154,
   "type": "line",
   "text": "The jet's attack run, manoeuvre 3's picture 4 of 6, from close to far as it climbs away, 25 dots wide and 12 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A052)."
  },
  {
   "address": 43204,
   "type": "line",
   "text": "The jet's attack run, manoeuvre 3's picture 5 of 6, from close to far as it climbs away, 21 dots wide and 11 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A054)."
  },
  {
   "address": 43239,
   "type": "line",
   "text": "The jet's attack run, manoeuvre 3's picture 6 of 6, from close to far as it climbs away, 15 dots wide and 9 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A056)."
  },
  {
   "address": 43259,
   "type": "line",
   "text": "The jet's bombing run, manoeuvre 4's picture 1 of 6, from close to far as it climbs away, 35 dots wide and 18 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A058)."
  },
  {
   "address": 43351,
   "type": "line",
   "text": "The jet's bombing run, manoeuvre 4's picture 2 of 6, from close to far as it climbs away, 29 dots wide and 15 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A05A)."
  },
  {
   "address": 43413,
   "type": "line",
   "text": "The jet's bombing run, manoeuvre 4's picture 3 of 6, from close to far as it climbs away, 27 dots wide and 13 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A05C)."
  },
  {
   "address": 43467,
   "type": "line",
   "text": "The jet's bombing run, manoeuvre 4's picture 4 of 6, from close to far as it climbs away, 25 dots wide and 13 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A05E)."
  },
  {
   "address": 43521,
   "type": "line",
   "text": "The jet's bombing run, manoeuvre 4's picture 5 of 6, from close to far as it climbs away, 21 dots wide and 11 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A060)."
  },
  {
   "address": 43556,
   "type": "line",
   "text": "The jet's bombing run, manoeuvre 4's picture 6 of 6, from close to far as it climbs away, 15 dots wide and 9 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A062)."
  },
  {
   "address": 43576,
   "type": "line",
   "text": "The tank's turret, 15 dots wide and 3 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A064)."
  },
  {
   "address": 43584,
   "type": "line",
   "text": "The tank's hull with its tracks, the first of two pictures that turn the tracks, 31 dots wide and 6 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A066)."
  },
  {
   "address": 43610,
   "type": "line",
   "text": "The tank's hull with its tracks, the second picture, 31 dots wide and 6 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A068)."
  },
  {
   "address": 43636,
   "type": "line",
   "text": "The tank's gun at aim 0, the furthest left, 7 dots wide and 5 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A06A)."
  },
  {
   "address": 43643,
   "type": "line",
   "text": "The tank's gun at aim 1, up and to the left, 7 dots wide and 4 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A06C)."
  },
  {
   "address": 43649,
   "type": "line",
   "text": "The tank's gun at aim 2, straight up, 3 dots wide and 4 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A06E)."
  },
  {
   "address": 43655,
   "type": "line",
   "text": "The tank's gun at aim 3, up and to the right, 7 dots wide and 4 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A070)."
  },
  {
   "address": 43661,
   "type": "line",
   "text": "The tank's gun at aim 4, the furthest right, 7 dots wide and 5 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A072)."
  },
  {
   "address": 43668,
   "type": "line",
   "text": "The helicopter's shot, 4 dots wide and 3 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A074)."
  },
  {
   "address": 43673,
   "type": "line",
   "text": "A shell, a tank's or a drone's, 3 dots wide and 3 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A076)."
  },
  {
   "address": 43678,
   "type": "line",
   "text": "A jet's missile, pointing right, 11 dots wide and 3 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A078)."
  },
  {
   "address": 43686,
   "type": "line",
   "text": "A jet's bomb, 8 dots wide and 1 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A07A)."
  },
  {
   "address": 43689,
   "type": "line",
   "text": "The muzzle flash at the helicopter's gun, 7 dots wide and 4 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A07C)."
  },
  {
   "address": 43695,
   "type": "line",
   "text": "The drone's body, a saucer, 13 dots wide and 10 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A07E)."
  },
  {
   "address": 43717,
   "type": "line",
   "text": "The drone's spinning part, picture 1 of 3, 11 dots wide and 2 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A080)."
  },
  {
   "address": 43723,
   "type": "line",
   "text": "The drone's spinning part, picture 2 of 3, 11 dots wide and 2 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A082)."
  },
  {
   "address": 43729,
   "type": "line",
   "text": "The drone's spinning part, picture 3 of 3, 11 dots wide and 2 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A084)."
  },
  {
   "address": 43735,
   "type": "line",
   "text": "An explosion, picture 1 of 5, a full burst, 20 dots wide and 9 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A086)."
  },
  {
   "address": 43764,
   "type": "line",
   "text": "An explosion, picture 2 of 5, a wider burst, 22 dots wide and 11 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A088)."
  },
  {
   "address": 43799,
   "type": "line",
   "text": "An explosion, picture 3 of 5, the largest burst, a ring, 24 dots wide and 12 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A08A)."
  },
  {
   "address": 43837,
   "type": "line",
   "text": "An explosion, picture 4 of 5, breaking up into specks, 24 dots wide and 12 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A08C)."
  },
  {
   "address": 43875,
   "type": "line",
   "text": "An explosion, picture 5 of 5, the last specks, 19 dots wide and 8 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A08E)."
  },
  {
   "address": 43901,
   "type": "line",
   "text": "The flash of an explosion on the ground, 8 dots wide and 8 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A090)."
  },
  {
   "address": 43911,
   "type": "line",
   "text": "A hostage crushed under the helicopter, a flat heap, 11 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A092)."
  },
  {
   "address": 43935,
   "type": "line",
   "text": "A hostage running, picture 1 of 4, facing right, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A094)."
  },
  {
   "address": 43959,
   "type": "line",
   "text": "A hostage running, picture 2 of 4, facing right, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A096)."
  },
  {
   "address": 43983,
   "type": "line",
   "text": "A hostage running, picture 3 of 4, facing right, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A098)."
  },
  {
   "address": 44007,
   "type": "line",
   "text": "A hostage running, picture 4 of 4, facing right, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A09A)."
  },
  {
   "address": 44031,
   "type": "line",
   "text": "A hostage standing and waving, picture 1 of 3, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A09C)."
  },
  {
   "address": 44055,
   "type": "line",
   "text": "A hostage standing and waving, picture 2 of 3, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A09E)."
  },
  {
   "address": 44079,
   "type": "line",
   "text": "A hostage standing and waving, picture 3 of 3, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0A0)."
  },
  {
   "address": 44103,
   "type": "line",
   "text": "A hostage climbing into the helicopter, picture 1 of 2, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0A2)."
  },
  {
   "address": 44127,
   "type": "line",
   "text": "A hostage climbing into the helicopter, picture 2 of 2, 9 dots wide and 11 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0A4)."
  },
  {
   "address": 44151,
   "type": "line",
   "text": "A stretch of the hills on the horizon, the first of four, 48 dots wide and 4 rows high, stored as screen bytes for gfx_copy_bytes: seven copies of 8 bytes a row, one for each of the seven dots a byte can start at, 226 bytes with the header (pointer at $A0A6)."
  },
  {
   "address": 44377,
   "type": "line",
   "text": "A stretch of the hills on the horizon, the second of four, 36 dots wide and 4 rows high, stored as screen bytes for gfx_copy_bytes: seven copies of 7 bytes a row, one for each of the seven dots a byte can start at, 198 bytes with the header (pointer at $A0A8)."
  },
  {
   "address": 44575,
   "type": "line",
   "text": "A stretch of the hills on the horizon, the third of four, 54 dots wide and 4 rows high, stored as screen bytes for gfx_copy_bytes: seven copies of 9 bytes a row, one for each of the seven dots a byte can start at, 254 bytes with the header (pointer at $A0AA)."
  },
  {
   "address": 44829,
   "type": "line",
   "text": "A stretch of the hills on the horizon, the fourth of four, 56 dots wide and 4 rows high, stored as screen bytes for gfx_copy_bytes: seven copies of 9 bytes a row, one for each of the seven dots a byte can start at, 254 bytes with the header (pointer at $A0AC)."
  },
  {
   "address": 45083,
   "type": "line",
   "text": "The corner at the counters' bar's right end, a line 23 rows high, 1 dots wide and 23 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0AE)."
  },
  {
   "address": 45108,
   "type": "line",
   "text": "The sloping end of the counters' bar, 17 dots wide and 8 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A0B0)."
  },
  {
   "address": 45134,
   "type": "line",
   "text": "The post office at the base, 51 dots wide and 12 rows high, stored as screen bytes for gfx_copy_bytes: seven copies of 9 bytes a row, one for each of the seven dots a byte can start at, 758 bytes with the header (pointer at $A0B2)."
  },
  {
   "address": 45892,
   "type": "line",
   "text": "The sloping end of the landing pad, 11 dots wide and 5 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0B4)."
  },
  {
   "address": 45904,
   "type": "line",
   "text": "The flagpole at the base, 2 dots wide and 12 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0B6)."
  },
  {
   "address": 45918,
   "type": "line",
   "text": "The flag on the pole, the first of two pictures that make it wave, 11 dots wide and 8 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0B8)."
  },
  {
   "address": 45936,
   "type": "line",
   "text": "The flag on the pole, the second picture, 11 dots wide and 8 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0BA)."
  },
  {
   "address": 45954,
   "type": "line",
   "text": "The landing pad's left kerb, 10 dots wide and 3 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0BC)."
  },
  {
   "address": 45962,
   "type": "line",
   "text": "The landing pad's right kerb, 14 dots wide and 3 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0BE)."
  },
  {
   "address": 45970,
   "type": "line",
   "text": "A fence post, the far one of five, 7 dots wide and 5 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0C0)."
  },
  {
   "address": 45977,
   "type": "line",
   "text": "A fence post, the second one of five, 10 dots wide and 6 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0C2)."
  },
  {
   "address": 45991,
   "type": "line",
   "text": "A fence post, the third one of five, 11 dots wide and 7 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0C4)."
  },
  {
   "address": 46007,
   "type": "line",
   "text": "A fence post, the fourth one of five, 17 dots wide and 9 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A0C6)."
  },
  {
   "address": 46036,
   "type": "line",
   "text": "A fence post, the near one of five, 17 dots wide and 11 rows high: the header, then 3 bytes a row, one bit a dot (pointer at $A0C8)."
  },
  {
   "address": 46071,
   "type": "line",
   "text": "A barracks, closed, 27 dots wide and 11 rows high, stored as screen bytes for gfx_copy_bytes: seven copies of 5 bytes a row, one for each of the seven dots a byte can start at, 387 bytes with the header (pointer at $A0CA)."
  },
  {
   "address": 46458,
   "type": "line",
   "text": "A barracks, open, 27 dots wide and 11 rows high, stored as screen bytes for gfx_copy_bytes: seven copies of 5 bytes a row, one for each of the seven dots a byte can start at, 387 bytes with the header (pointer at $A0CC)."
  },
  {
   "address": 46845,
   "type": "line",
   "text": "The strip at a barracks' foot, 27 dots wide and 2 rows high: the header, then 4 bytes a row, one bit a dot (pointer at $A0CE)."
  },
  {
   "address": 46855,
   "type": "line",
   "text": "The rubble in front of an open barracks, 15 dots wide and 2 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0D0)."
  },
  {
   "address": 46861,
   "type": "line",
   "text": "An open barracks' fire, the first of two pictures, 15 dots wide and 5 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0D2)."
  },
  {
   "address": 46873,
   "type": "line",
   "text": "An open barracks' fire, the second picture, 15 dots wide and 5 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0D4)."
  },
  {
   "address": 46885,
   "type": "line",
   "text": "The digit 0 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0D6)."
  },
  {
   "address": 46894,
   "type": "line",
   "text": "The digit 1 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0D8)."
  },
  {
   "address": 46903,
   "type": "line",
   "text": "The digit 2 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0DA)."
  },
  {
   "address": 46912,
   "type": "line",
   "text": "The digit 3 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0DC)."
  },
  {
   "address": 46921,
   "type": "line",
   "text": "The digit 4 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0DE)."
  },
  {
   "address": 46930,
   "type": "line",
   "text": "The digit 5 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0E0)."
  },
  {
   "address": 46939,
   "type": "line",
   "text": "The digit 6 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0E2)."
  },
  {
   "address": 46948,
   "type": "line",
   "text": "The digit 7 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0E4)."
  },
  {
   "address": 46957,
   "type": "line",
   "text": "The digit 8 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0E6)."
  },
  {
   "address": 46966,
   "type": "line",
   "text": "The digit 9 of the counters, 6 dots wide and 7 rows high: the header, then 1 byte a row, one bit a dot (pointer at $A0E8)."
  },
  {
   "address": 46975,
   "type": "line",
   "text": "The little hostage in each counter's frame, 11 dots wide and 7 rows high: the header, then 2 bytes a row, one bit a dot (pointer at $A0EA)."
  },
  {
   "address": 46991,
   "type": "line",
   "text": "A counter's frame, 43 dots wide and 9 rows high: the header, then 6 bytes a row, one bit a dot (pointer at $A0EC)."
  },
  {
   "address": 47047,
   "type": "line",
   "text": "\"your mission: RESCUE HOSTAGES\", the attract mode's lettering, 106 dots wide and 27 rows high: the header, then 14 bytes a row, one bit a dot (pointer at $A0EE)."
  },
  {
   "address": 47427,
   "type": "line",
   "text": "The CHOPLIFTER logo, 183 dots wide and 13 rows high: the header, then 23 bytes a row, one bit a dot (pointer at $A0F0)."
  },
  {
   "address": 47728,
   "type": "line",
   "text": "\"Broderbund Software presents...\", 220 dots wide and 11 rows high: the header, then 28 bytes a row, one bit a dot (pointer at $A0F2)."
  },
  {
   "address": 48038,
   "type": "line",
   "text": "\"Dan Gorlin, Copyright 1982\", 98 dots wide and 17 rows high: the header, then 13 bytes a row, one bit a dot (pointer at $A0F4)."
  },
  {
   "address": 48261,
   "type": "line",
   "text": "\"THE END\", 39 dots wide and 21 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A0F6)."
  },
  {
   "address": 48368,
   "type": "line",
   "text": "The three crowns of a game in which every hostage came home, 40 dots wide and 21 rows high: the header, then 5 bytes a row, one bit a dot (pointer at $A0F8)."
  },
  {
   "address": 48475,
   "type": "line",
   "text": "\"FIRST SORTIE\", 83 dots wide and 15 rows high: the header, then 11 bytes a row, one bit a dot (pointer at $A0FA)."
  },
  {
   "address": 48642,
   "type": "line",
   "text": "\"SECOND SORTIE\", 90 dots wide and 15 rows high: the header, then 12 bytes a row, one bit a dot (pointer at $A0FC)."
  },
  {
   "address": 48824,
   "type": "line",
   "text": "\"THIRD SORTIE\", 83 dots wide and 15 rows high: the header, then 11 bytes a row, one bit a dot (pointer at $A0FE)."
  }
 ]
}