{
 "schema": 1,
 "platform": "c64",
 "game": "gunship",
 "part": "flight",
 "build": "original disk, Rapidlok V6, PAL, C64 Preservation Project gunship_s1/s2[microprose_1985](rl6)(pal)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    53311,
    "I/O and colour RAM"
   ],
   [
    54072,
    54151,
    "I/O and colour RAM"
   ],
   [
    54392,
    54471,
    "I/O and colour RAM"
   ],
   [
    54712,
    54791,
    "I/O and colour RAM"
   ],
   [
    55032,
    55111,
    "I/O and colour RAM"
   ],
   [
    55352,
    55431,
    "I/O and colour RAM"
   ],
   [
    55672,
    55751,
    "I/O and colour RAM"
   ],
   [
    32744,
    32767,
    "screen RAM"
   ],
   [
    0,
    1023,
    "zero page, the stack and the KERNAL's work area: the engine's variables while it flies, swapped with $3F00-$3FFF (swap_zp), and BASIC's before and after"
   ],
   [
    1024,
    2047,
    "the text screen before the flight; while the big map or a picture is up the engine keeps colour RAM here (save_colours)"
   ],
   [
    16128,
    16383,
    "the engine's zero page as G2 sets it before the flight, and BASIC's and the KERNAL's while the engine runs (swap_zp)"
   ],
   [
    65344,
    65529,
    "never written: the RAM's power-on pattern. $FFBA, $FFBD and $FFD5 are the KERNAL's SETLFS, SETNAM and LOAD, called with the ROM in"
   ],
   [
    16736,
    16991,
    "the 3D window's row 1 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    17056,
    17311,
    "the 3D window's row 2 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    17376,
    17631,
    "the 3D window's row 3 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    17696,
    17951,
    "the 3D window's row 4 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    18016,
    18271,
    "the 3D window's row 5 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    18336,
    18591,
    "the 3D window's row 6 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    18656,
    18911,
    "the 3D window's row 7 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    18976,
    19231,
    "the 3D window's row 8 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    19296,
    19551,
    "the 3D window's row 9 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    19616,
    19871,
    "the 3D window's row 10 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    19936,
    20191,
    "the 3D window's row 11 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    20256,
    20511,
    "the 3D window's row 12 in the first buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    24928,
    25183,
    "the 3D window's row 1 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    25248,
    25503,
    "the 3D window's row 2 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    25568,
    25823,
    "the 3D window's row 3 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    25888,
    26143,
    "the 3D window's row 4 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    26208,
    26463,
    "the 3D window's row 5 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    26528,
    26783,
    "the 3D window's row 6 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    26848,
    27103,
    "the 3D window's row 7 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    27168,
    27423,
    "the 3D window's row 8 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    27488,
    27743,
    "the 3D window's row 9 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    27808,
    28063,
    "the 3D window's row 10 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    28128,
    28383,
    "the 3D window's row 11 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    28448,
    28703,
    "the 3D window's row 12 in the second buffer's bitmap, 32 cells drawn afresh every frame (draw_view)"
   ],
   [
    54072,
    54151,
    "the CRT's map in the first panel bitmap, row 15, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    54392,
    54471,
    "the CRT's map in the first panel bitmap, row 16, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    54712,
    54791,
    "the CRT's map in the first panel bitmap, row 17, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    55032,
    55111,
    "the CRT's map in the first panel bitmap, row 18, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    55352,
    55431,
    "the CRT's map in the first panel bitmap, row 19, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    55672,
    55751,
    "the CRT's map in the first panel bitmap, row 20, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    62264,
    62343,
    "the CRT's map in the second panel bitmap, row 15, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    62584,
    62663,
    "the CRT's map in the second panel bitmap, row 16, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    62904,
    62983,
    "the CRT's map in the second panel bitmap, row 17, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    63224,
    63303,
    "the CRT's map in the second panel bitmap, row 18, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    63544,
    63623,
    "the CRT's map in the second panel bitmap, row 19, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    63864,
    63943,
    "the CRT's map in the second panel bitmap, row 20, columns 15-24: copied from the terrain map as the helicopter moves (crt_map_row)"
   ],
   [
    3701,
    5119,
    "left over in memory after G2: never read or written by the flight"
   ],
   [
    12372,
    12543,
    "left over in memory after the last load: never read or written"
   ],
   [
    30784,
    30911,
    "left over in memory after the last load: never read or written"
   ],
   [
    31701,
    31743,
    "left over in memory after the messages: never read or written"
   ],
   [
    32744,
    32759,
    "the window screen's unused bytes after its 1,000 cells, before the sprite pointers"
   ],
   [
    32995,
    33023,
    "left over in memory after the loader's helpers: never read or written"
   ],
   [
    59392,
    60391,
    "the big map's screen: written when the map is called up (draw_map)"
   ],
   [
    59244,
    59391,
    "left over after M: never read or written"
   ],
   [
    57344,
    57855,
    "the four needles' sprites, two copies each, drawn by dials whenever a needle's value changes"
   ],
   [
    61031,
    61040,
    "the CRT's colours in the panel's screen, row 15, columns 15-24: painted by crt_frame for the CRT's mode"
   ],
   [
    61071,
    61080,
    "the CRT's colours in the panel's screen, row 16, columns 15-24: painted by crt_frame for the CRT's mode"
   ],
   [
    61111,
    61120,
    "the CRT's colours in the panel's screen, row 17, columns 15-24: painted by crt_frame for the CRT's mode"
   ],
   [
    61151,
    61160,
    "the CRT's colours in the panel's screen, row 18, columns 15-24: painted by crt_frame for the CRT's mode"
   ],
   [
    61191,
    61200,
    "the CRT's colours in the panel's screen, row 19, columns 15-24: painted by crt_frame for the CRT's mode"
   ],
   [
    61231,
    61240,
    "the CRT's colours in the panel's screen, row 20, columns 15-24: painted by crt_frame for the CRT's mode"
   ],
   [
    32768,
    32994,
    "Side two helpers"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    32768,
    32994,
    "Side two helpers"
   ]
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2048,
   "type": "Undefined"
  },
  {
   "start": 2049,
   "end": 3700,
   "type": "BASIC"
  },
  {
   "start": 3701,
   "end": 6789,
   "type": "Undefined"
  },
  {
   "start": 6790,
   "end": 7045,
   "type": "Byte"
  },
  {
   "start": 7046,
   "end": 7047,
   "type": "Undefined"
  },
  {
   "start": 7048,
   "end": 7105,
   "type": "Byte"
  },
  {
   "start": 7106,
   "end": 7107,
   "type": "Undefined"
  },
  {
   "start": 7108,
   "end": 7177,
   "type": "Byte"
  },
  {
   "start": 7178,
   "end": 7179,
   "type": "Undefined"
  },
  {
   "start": 7180,
   "end": 7836,
   "type": "Byte"
  },
  {
   "start": 7837,
   "end": 7838,
   "type": "Undefined"
  },
  {
   "start": 7839,
   "end": 12371,
   "type": "Byte"
  },
  {
   "start": 12372,
   "end": 12543,
   "type": "Undefined"
  },
  {
   "start": 12544,
   "end": 16127,
   "type": "Code"
  },
  {
   "start": 16128,
   "end": 16383,
   "type": "Undefined"
  },
  {
   "start": 16384,
   "end": 16735,
   "type": "Byte"
  },
  {
   "start": 16736,
   "end": 16991,
   "type": "Undefined"
  },
  {
   "start": 16992,
   "end": 17055,
   "type": "Byte"
  },
  {
   "start": 17056,
   "end": 17311,
   "type": "Undefined"
  },
  {
   "start": 17312,
   "end": 17375,
   "type": "Byte"
  },
  {
   "start": 17376,
   "end": 17631,
   "type": "Undefined"
  },
  {
   "start": 17632,
   "end": 17695,
   "type": "Byte"
  },
  {
   "start": 17696,
   "end": 17951,
   "type": "Undefined"
  },
  {
   "start": 17952,
   "end": 18015,
   "type": "Byte"
  },
  {
   "start": 18016,
   "end": 18271,
   "type": "Undefined"
  },
  {
   "start": 18272,
   "end": 18335,
   "type": "Byte"
  },
  {
   "start": 18336,
   "end": 18591,
   "type": "Undefined"
  },
  {
   "start": 18592,
   "end": 18655,
   "type": "Byte"
  },
  {
   "start": 18656,
   "end": 18911,
   "type": "Undefined"
  },
  {
   "start": 18912,
   "end": 18975,
   "type": "Byte"
  },
  {
   "start": 18976,
   "end": 19231,
   "type": "Undefined"
  },
  {
   "start": 19232,
   "end": 19295,
   "type": "Byte"
  },
  {
   "start": 19296,
   "end": 19551,
   "type": "Undefined"
  },
  {
   "start": 19552,
   "end": 19615,
   "type": "Byte"
  },
  {
   "start": 19616,
   "end": 19871,
   "type": "Undefined"
  },
  {
   "start": 19872,
   "end": 19935,
   "type": "Byte"
  },
  {
   "start": 19936,
   "end": 20191,
   "type": "Undefined"
  },
  {
   "start": 20192,
   "end": 20255,
   "type": "Byte"
  },
  {
   "start": 20256,
   "end": 20511,
   "type": "Undefined"
  },
  {
   "start": 20512,
   "end": 20735,
   "type": "Byte"
  },
  {
   "start": 20736,
   "end": 21411,
   "type": "Undefined"
  },
  {
   "start": 21412,
   "end": 21415,
   "type": "Byte"
  },
  {
   "start": 21416,
   "end": 21469,
   "type": "Undefined"
  },
  {
   "start": 21470,
   "end": 21471,
   "type": "Byte"
  },
  {
   "start": 21472,
   "end": 21495,
   "type": "Undefined"
  },
  {
   "start": 21496,
   "end": 21498,
   "type": "Byte"
  },
  {
   "start": 21499,
   "end": 21499,
   "type": "Undefined"
  },
  {
   "start": 21500,
   "end": 21503,
   "type": "Byte"
  },
  {
   "start": 21504,
   "end": 23260,
   "type": "Code"
  },
  {
   "start": 23261,
   "end": 23268,
   "type": "Undefined"
  },
  {
   "start": 23269,
   "end": 23567,
   "type": "Code"
  },
  {
   "start": 23568,
   "end": 24927,
   "type": "Byte"
  },
  {
   "start": 24928,
   "end": 25183,
   "type": "Undefined"
  },
  {
   "start": 25184,
   "end": 25247,
   "type": "Byte"
  },
  {
   "start": 25248,
   "end": 25503,
   "type": "Undefined"
  },
  {
   "start": 25504,
   "end": 25567,
   "type": "Byte"
  },
  {
   "start": 25568,
   "end": 25823,
   "type": "Undefined"
  },
  {
   "start": 25824,
   "end": 25887,
   "type": "Byte"
  },
  {
   "start": 25888,
   "end": 26143,
   "type": "Undefined"
  },
  {
   "start": 26144,
   "end": 26207,
   "type": "Byte"
  },
  {
   "start": 26208,
   "end": 26463,
   "type": "Undefined"
  },
  {
   "start": 26464,
   "end": 26527,
   "type": "Byte"
  },
  {
   "start": 26528,
   "end": 26783,
   "type": "Undefined"
  },
  {
   "start": 26784,
   "end": 26847,
   "type": "Byte"
  },
  {
   "start": 26848,
   "end": 27103,
   "type": "Undefined"
  },
  {
   "start": 27104,
   "end": 27167,
   "type": "Byte"
  },
  {
   "start": 27168,
   "end": 27423,
   "type": "Undefined"
  },
  {
   "start": 27424,
   "end": 27487,
   "type": "Byte"
  },
  {
   "start": 27488,
   "end": 27743,
   "type": "Undefined"
  },
  {
   "start": 27744,
   "end": 27807,
   "type": "Byte"
  },
  {
   "start": 27808,
   "end": 28063,
   "type": "Undefined"
  },
  {
   "start": 28064,
   "end": 28127,
   "type": "Byte"
  },
  {
   "start": 28128,
   "end": 28383,
   "type": "Undefined"
  },
  {
   "start": 28384,
   "end": 28447,
   "type": "Byte"
  },
  {
   "start": 28448,
   "end": 28703,
   "type": "Undefined"
  },
  {
   "start": 28704,
   "end": 28735,
   "type": "Byte"
  },
  {
   "start": 28736,
   "end": 28738,
   "type": "Code"
  },
  {
   "start": 28739,
   "end": 28739,
   "type": "Undefined"
  },
  {
   "start": 28740,
   "end": 28835,
   "type": "Code"
  },
  {
   "start": 28836,
   "end": 28837,
   "type": "Undefined"
  },
  {
   "start": 28838,
   "end": 28857,
   "type": "Code"
  },
  {
   "start": 28858,
   "end": 30783,
   "type": "Byte"
  },
  {
   "start": 30784,
   "end": 30911,
   "type": "Undefined"
  },
  {
   "start": 30912,
   "end": 30920,
   "type": "Code"
  },
  {
   "start": 30921,
   "end": 30968,
   "type": "Undefined"
  },
  {
   "start": 30969,
   "end": 31154,
   "type": "Code"
  },
  {
   "start": 31155,
   "end": 31491,
   "type": "Byte"
  },
  {
   "start": 31492,
   "end": 31524,
   "type": "Undefined"
  },
  {
   "start": 31525,
   "end": 31525,
   "type": "Byte"
  },
  {
   "start": 31526,
   "end": 31558,
   "type": "Undefined"
  },
  {
   "start": 31559,
   "end": 31700,
   "type": "Byte"
  },
  {
   "start": 31701,
   "end": 31743,
   "type": "Undefined"
  },
  {
   "start": 31744,
   "end": 32743,
   "type": "Byte"
  },
  {
   "start": 32744,
   "end": 32767,
   "type": "Undefined"
  },
  {
   "start": 32995,
   "end": 33023,
   "type": "Undefined"
  },
  {
   "start": 33024,
   "end": 33068,
   "type": "Code"
  },
  {
   "start": 33069,
   "end": 33174,
   "type": "Undefined"
  },
  {
   "start": 33175,
   "end": 33177,
   "type": "Code"
  },
  {
   "start": 33178,
   "end": 33179,
   "type": "Undefined"
  },
  {
   "start": 33180,
   "end": 33191,
   "type": "Code"
  },
  {
   "start": 33192,
   "end": 33198,
   "type": "Undefined"
  },
  {
   "start": 33199,
   "end": 33201,
   "type": "Code"
  },
  {
   "start": 33202,
   "end": 33204,
   "type": "Undefined"
  },
  {
   "start": 33205,
   "end": 33207,
   "type": "Code"
  },
  {
   "start": 33208,
   "end": 33219,
   "type": "Undefined"
  },
  {
   "start": 33220,
   "end": 33222,
   "type": "Code"
  },
  {
   "start": 33223,
   "end": 33225,
   "type": "Undefined"
  },
  {
   "start": 33226,
   "end": 33228,
   "type": "Code"
  },
  {
   "start": 33229,
   "end": 33312,
   "type": "Undefined"
  },
  {
   "start": 33313,
   "end": 33318,
   "type": "Code"
  },
  {
   "start": 33319,
   "end": 33578,
   "type": "Undefined"
  },
  {
   "start": 33579,
   "end": 33845,
   "type": "Code"
  },
  {
   "start": 33846,
   "end": 33872,
   "type": "Undefined"
  },
  {
   "start": 33873,
   "end": 34097,
   "type": "Code"
  },
  {
   "start": 34098,
   "end": 34100,
   "type": "Undefined"
  },
  {
   "start": 34101,
   "end": 35957,
   "type": "Code"
  },
  {
   "start": 35958,
   "end": 35969,
   "type": "Undefined"
  },
  {
   "start": 35970,
   "end": 37131,
   "type": "Code"
  },
  {
   "start": 37132,
   "end": 37135,
   "type": "Byte"
  },
  {
   "start": 37136,
   "end": 38264,
   "type": "Code"
  },
  {
   "start": 38265,
   "end": 38286,
   "type": "Undefined"
  },
  {
   "start": 38287,
   "end": 38414,
   "type": "Code"
  },
  {
   "start": 38415,
   "end": 38419,
   "type": "Undefined"
  },
  {
   "start": 38420,
   "end": 39002,
   "type": "Code"
  },
  {
   "start": 39003,
   "end": 39003,
   "type": "Byte"
  },
  {
   "start": 39004,
   "end": 39025,
   "type": "Code"
  },
  {
   "start": 39026,
   "end": 39026,
   "type": "Undefined"
  },
  {
   "start": 39027,
   "end": 39254,
   "type": "Code"
  },
  {
   "start": 39255,
   "end": 39262,
   "type": "Undefined"
  },
  {
   "start": 39263,
   "end": 39322,
   "type": "Code"
  },
  {
   "start": 39323,
   "end": 39325,
   "type": "Undefined"
  },
  {
   "start": 39326,
   "end": 39476,
   "type": "Code"
  },
  {
   "start": 39477,
   "end": 39480,
   "type": "Undefined"
  },
  {
   "start": 39481,
   "end": 39622,
   "type": "Code"
  },
  {
   "start": 39623,
   "end": 39632,
   "type": "Undefined"
  },
  {
   "start": 39633,
   "end": 40021,
   "type": "Code"
  },
  {
   "start": 40022,
   "end": 40077,
   "type": "Undefined"
  },
  {
   "start": 40078,
   "end": 40251,
   "type": "Code"
  },
  {
   "start": 40252,
   "end": 40252,
   "type": "Undefined"
  },
  {
   "start": 40253,
   "end": 40683,
   "type": "Code"
  },
  {
   "start": 40684,
   "end": 40733,
   "type": "Undefined"
  },
  {
   "start": 40734,
   "end": 41022,
   "type": "Code"
  },
  {
   "start": 41023,
   "end": 41034,
   "type": "Undefined"
  },
  {
   "start": 41035,
   "end": 41218,
   "type": "Code"
  },
  {
   "start": 41219,
   "end": 41271,
   "type": "Undefined"
  },
  {
   "start": 41272,
   "end": 41826,
   "type": "Code"
  },
  {
   "start": 41827,
   "end": 41832,
   "type": "Undefined"
  },
  {
   "start": 41833,
   "end": 43301,
   "type": "Code"
  },
  {
   "start": 43302,
   "end": 43394,
   "type": "Undefined"
  },
  {
   "start": 43395,
   "end": 44167,
   "type": "Code"
  },
  {
   "start": 44168,
   "end": 44175,
   "type": "Byte"
  },
  {
   "start": 44176,
   "end": 44371,
   "type": "Code"
  },
  {
   "start": 44372,
   "end": 44377,
   "type": "Byte"
  },
  {
   "start": 44378,
   "end": 44529,
   "type": "Code"
  },
  {
   "start": 44530,
   "end": 44571,
   "type": "Undefined"
  },
  {
   "start": 44572,
   "end": 46349,
   "type": "Code"
  },
  {
   "start": 46350,
   "end": 46369,
   "type": "Undefined"
  },
  {
   "start": 46370,
   "end": 46499,
   "type": "Byte"
  },
  {
   "start": 46500,
   "end": 46569,
   "type": "Undefined"
  },
  {
   "start": 46570,
   "end": 46873,
   "type": "Code"
  },
  {
   "start": 46874,
   "end": 46875,
   "type": "Undefined"
  },
  {
   "start": 46876,
   "end": 47179,
   "type": "Code"
  },
  {
   "start": 47180,
   "end": 47359,
   "type": "Undefined"
  },
  {
   "start": 47360,
   "end": 47945,
   "type": "Code"
  },
  {
   "start": 47946,
   "end": 48074,
   "type": "Undefined"
  },
  {
   "start": 48075,
   "end": 48139,
   "type": "Byte"
  },
  {
   "start": 48140,
   "end": 48219,
   "type": "Undefined"
  },
  {
   "start": 48220,
   "end": 48293,
   "type": "Code"
  },
  {
   "start": 48294,
   "end": 48333,
   "type": "Undefined"
  },
  {
   "start": 48334,
   "end": 48767,
   "type": "Code"
  },
  {
   "start": 48768,
   "end": 48899,
   "type": "Undefined"
  },
  {
   "start": 48900,
   "end": 49179,
   "type": "Code"
  },
  {
   "start": 49180,
   "end": 49192,
   "type": "Undefined"
  },
  {
   "start": 49193,
   "end": 49384,
   "type": "Code"
  },
  {
   "start": 49385,
   "end": 49409,
   "type": "Undefined"
  },
  {
   "start": 49410,
   "end": 49923,
   "type": "Code"
  },
  {
   "start": 49924,
   "end": 49926,
   "type": "Undefined"
  },
  {
   "start": 49927,
   "end": 50072,
   "type": "Byte"
  },
  {
   "start": 50073,
   "end": 50159,
   "type": "Undefined"
  },
  {
   "start": 50160,
   "end": 53247,
   "type": "Byte"
  },
  {
   "start": 53248,
   "end": 53311,
   "type": "Undefined"
  },
  {
   "start": 53312,
   "end": 54071,
   "type": "Byte"
  },
  {
   "start": 54072,
   "end": 54151,
   "type": "Undefined"
  },
  {
   "start": 54152,
   "end": 54391,
   "type": "Byte"
  },
  {
   "start": 54392,
   "end": 54471,
   "type": "Undefined"
  },
  {
   "start": 54472,
   "end": 54711,
   "type": "Byte"
  },
  {
   "start": 54712,
   "end": 54791,
   "type": "Undefined"
  },
  {
   "start": 54792,
   "end": 55031,
   "type": "Byte"
  },
  {
   "start": 55032,
   "end": 55111,
   "type": "Undefined"
  },
  {
   "start": 55112,
   "end": 55351,
   "type": "Byte"
  },
  {
   "start": 55352,
   "end": 55431,
   "type": "Undefined"
  },
  {
   "start": 55432,
   "end": 55671,
   "type": "Byte"
  },
  {
   "start": 55672,
   "end": 55751,
   "type": "Undefined"
  },
  {
   "start": 55752,
   "end": 57343,
   "type": "Byte"
  },
  {
   "start": 57344,
   "end": 57855,
   "type": "Undefined"
  },
  {
   "start": 57856,
   "end": 58111,
   "type": "Byte"
  },
  {
   "start": 58112,
   "end": 58379,
   "type": "Undefined"
  },
  {
   "start": 58380,
   "end": 58716,
   "type": "Code"
  },
  {
   "start": 58717,
   "end": 58844,
   "type": "Undefined"
  },
  {
   "start": 58845,
   "end": 59200,
   "type": "Code"
  },
  {
   "start": 59201,
   "end": 59216,
   "type": "Undefined"
  },
  {
   "start": 59217,
   "end": 59243,
   "type": "Code"
  },
  {
   "start": 59244,
   "end": 60391,
   "type": "Undefined"
  },
  {
   "start": 60392,
   "end": 60407,
   "type": "Byte"
  },
  {
   "start": 60408,
   "end": 60409,
   "type": "Undefined"
  },
  {
   "start": 60410,
   "end": 61431,
   "type": "Byte"
  },
  {
   "start": 61432,
   "end": 61439,
   "type": "Undefined"
  },
  {
   "start": 61440,
   "end": 62263,
   "type": "Byte"
  },
  {
   "start": 62264,
   "end": 62343,
   "type": "Undefined"
  },
  {
   "start": 62344,
   "end": 62583,
   "type": "Byte"
  },
  {
   "start": 62584,
   "end": 62663,
   "type": "Undefined"
  },
  {
   "start": 62664,
   "end": 62903,
   "type": "Byte"
  },
  {
   "start": 62904,
   "end": 62983,
   "type": "Undefined"
  },
  {
   "start": 62984,
   "end": 63223,
   "type": "Byte"
  },
  {
   "start": 63224,
   "end": 63303,
   "type": "Undefined"
  },
  {
   "start": 63304,
   "end": 63543,
   "type": "Byte"
  },
  {
   "start": 63544,
   "end": 63623,
   "type": "Undefined"
  },
  {
   "start": 63624,
   "end": 63863,
   "type": "Byte"
  },
  {
   "start": 63864,
   "end": 63943,
   "type": "Undefined"
  },
  {
   "start": 63944,
   "end": 65343,
   "type": "Byte"
  },
  {
   "start": 65344,
   "end": 65529,
   "type": "Undefined"
  },
  {
   "start": 65530,
   "end": 65535,
   "type": "Word"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "zpf_00",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 1,
   "name": "zpf_01",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 3,
   "name": "zpa_03",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5,
   "name": "zpa_05",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7,
   "name": "zpa_07",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8,
   "name": "zpa_08",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12,
   "name": "zpa_0C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13,
   "name": "zpa_0D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "zpa_11",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19,
   "name": "zpa_13",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20,
   "name": "zpa_14",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21,
   "name": "zpa_15",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22,
   "name": "zpa_16",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23,
   "name": "zpa_17",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24,
   "name": "zpa_18",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25,
   "name": "zpa_19",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26,
   "name": "zpa_1A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27,
   "name": "zpa_1B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28,
   "name": "zpa_1C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29,
   "name": "zpa_1D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30,
   "name": "zpa_1E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31,
   "name": "zpa_1F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32,
   "name": "zpa_20",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33,
   "name": "zpa_21",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35,
   "name": "zpa_23",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36,
   "name": "zpa_24",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37,
   "name": "zpa_25",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38,
   "name": "zpa_26",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "zpa_28",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41,
   "name": "zpa_29",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42,
   "name": "zpa_2A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44,
   "name": "zpa_2C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 45,
   "name": "zpa_2D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46,
   "name": "zpa_2E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "zpa_30",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49,
   "name": "zpa_31",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50,
   "name": "zpa_32",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51,
   "name": "zpa_33",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52,
   "name": "zpa_34",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53,
   "name": "zpa_35",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 54,
   "name": "zpa_36",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55,
   "name": "zpa_37",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56,
   "name": "zpa_38",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "zpa_39",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58,
   "name": "zpa_3A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59,
   "name": "zpa_3B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60,
   "name": "zpa_3C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61,
   "name": "zpa_3D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62,
   "name": "zpa_3E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 63,
   "name": "zpa_3F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64,
   "name": "zpa_40",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 65,
   "name": "zpa_41",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "zpa_42",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpa_43",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 69,
   "name": "zpa_45",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 70,
   "name": "zpa_46",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 71,
   "name": "zpa_47",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 72,
   "name": "zpa_48",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 74,
   "name": "zpa_4A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpa_4B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 76,
   "name": "zpa_4C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "zpa_4D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 78,
   "name": "zpa_4E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 79,
   "name": "zpa_4F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 80,
   "name": "zpa_50",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 81,
   "name": "zpa_51",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 82,
   "name": "zpa_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "zpa_53",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 84,
   "name": "zpa_54",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 85,
   "name": "zpa_55",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 87,
   "name": "zpa_57",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 88,
   "name": "zpa_58",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 89,
   "name": "zpa_59",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 90,
   "name": "zpa_5A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "zpa_5B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 92,
   "name": "zpa_5C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 94,
   "name": "zpa_5E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 95,
   "name": "zpa_5F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 96,
   "name": "zpa_60",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 97,
   "name": "zpa_61",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 98,
   "name": "zpa_62",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 99,
   "name": "zpa_63",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 100,
   "name": "zpa_64",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 101,
   "name": "zpa_65",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 102,
   "name": "zpa_66",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 103,
   "name": "zpa_67",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 104,
   "name": "zpa_68",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 105,
   "name": "zpa_69",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 106,
   "name": "zpa_6A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 107,
   "name": "zpa_6B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 108,
   "name": "zpa_6C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "zpa_6D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 110,
   "name": "zpa_6E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 111,
   "name": "zpa_6F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 112,
   "name": "zpa_70",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 113,
   "name": "zpa_71",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 114,
   "name": "zpa_72",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 115,
   "name": "zpa_73",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 116,
   "name": "zpa_74",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 117,
   "name": "zpa_75",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 118,
   "name": "zpa_76",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "zpa_77",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 120,
   "name": "zpa_78",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 121,
   "name": "zpa_79",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 122,
   "name": "zpa_7A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 123,
   "name": "zpa_7B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "zpa_7C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 125,
   "name": "zpa_7D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 126,
   "name": "zpa_7E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 127,
   "name": "zpa_7F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 128,
   "name": "zpa_80",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 129,
   "name": "zpa_81",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 130,
   "name": "zpa_82",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 131,
   "name": "zpa_83",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 132,
   "name": "zpa_84",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 133,
   "name": "zpa_85",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 134,
   "name": "zpa_86",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 136,
   "name": "zpa_88",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 137,
   "name": "zpa_89",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 138,
   "name": "zpa_8A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 144,
   "name": "zpa_90",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 160,
   "name": "zpa_A0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 161,
   "name": "zpa_A1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 162,
   "name": "zpa_A2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 163,
   "name": "zpa_A3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "zpa_A4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 165,
   "name": "zpa_A5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 166,
   "name": "zpa_A6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 167,
   "name": "zpa_A7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 168,
   "name": "zpa_A8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 169,
   "name": "a_00A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 170,
   "name": "zpa_AA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 171,
   "name": "zpa_AB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 172,
   "name": "zpa_AC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 173,
   "name": "zpa_AD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 174,
   "name": "zpa_AE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 175,
   "name": "zpa_AF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 177,
   "name": "zpa_B1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 178,
   "name": "zpa_B2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 179,
   "name": "zpa_B3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 180,
   "name": "zpa_B4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 181,
   "name": "zpa_B5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 182,
   "name": "zpa_B6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 183,
   "name": "zpa_B7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 184,
   "name": "zpa_B8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 185,
   "name": "zpa_B9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpa_BA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 187,
   "name": "zpa_BB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 188,
   "name": "zpa_BC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 189,
   "name": "zpa_BD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 191,
   "name": "zpa_BF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "zpa_C0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 193,
   "name": "zpa_C1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 194,
   "name": "zpa_C2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "zpa_C3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 196,
   "name": "zpa_C4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 197,
   "name": "zpa_C5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 198,
   "name": "zpa_C6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "zpa_C7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 200,
   "name": "zpa_C8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 201,
   "name": "zpa_C9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 202,
   "name": "zpa_CA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 203,
   "name": "zpa_CB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 204,
   "name": "zpf_CC",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 208,
   "name": "zpf_D0",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 210,
   "name": "zpf_D2",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 243,
   "name": "zpa_F3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 244,
   "name": "zpa_F4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 245,
   "name": "zpa_F5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 246,
   "name": "zpa_F6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 247,
   "name": "zpa_F7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 248,
   "name": "zpa_F8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 249,
   "name": "zpa_F9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 250,
   "name": "zpa_FA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 251,
   "name": "zpa_FB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 252,
   "name": "zpa_FC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 253,
   "name": "zpa_FD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 254,
   "name": "zpa_FE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 255,
   "name": "zpa_FF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 425,
   "name": "a_01A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 631,
   "name": "a_0277",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 632,
   "name": "f_0278",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 649,
   "name": "a_0289",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 792,
   "name": "a_0318",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 828,
   "name": "a_033C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 937,
   "name": "a_03A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 955,
   "name": "f_03BB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "f_0400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1280,
   "name": "f_0500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1449,
   "name": "a_05A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1536,
   "name": "f_0600",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1792,
   "name": "f_0700",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2049,
   "name": "line_0_list_guard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2066,
   "name": "line_1_setup",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2143,
   "name": "line_7_poke_word",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2234,
   "name": "line_10_copy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2308,
   "name": "line_900_variables",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2527,
   "name": "line_940_waypoint",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2596,
   "name": "line_950_window",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2729,
   "name": "a_0AA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2745,
   "name": "line_989_copy_word",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2836,
   "name": "line_1000_turn_disk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3100,
   "name": "line_15000_fly",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3282,
   "name": "line_16000_back",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3364,
   "name": "line_19000_constants",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3538,
   "name": "g2_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5120,
   "name": "f_1400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5271,
   "name": "f_1497",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5422,
   "name": "f_152E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5573,
   "name": "f_15C5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5724,
   "name": "f_165C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5875,
   "name": "f_16F3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6026,
   "name": "f_178A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6055,
   "name": "f_17A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6084,
   "name": "f_17C4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6113,
   "name": "f_17E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6142,
   "name": "f_17FE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6171,
   "name": "f_181B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6200,
   "name": "f_1838",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6235,
   "name": "f_185B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6270,
   "name": "f_187E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6305,
   "name": "f_18A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6340,
   "name": "f_18C4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6375,
   "name": "f_18E7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6410,
   "name": "f_190A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6431,
   "name": "f_191F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6452,
   "name": "f_1934",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6473,
   "name": "f_1949",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6494,
   "name": "a_195E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6513,
   "name": "a_1971",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6514,
   "name": "a_1972",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6515,
   "name": "a_1973",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6534,
   "name": "a_1986",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6535,
   "name": "a_1987",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6536,
   "name": "a_1988",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6555,
   "name": "a_199B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6556,
   "name": "a_199C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6557,
   "name": "a_199D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6576,
   "name": "a_19B0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6577,
   "name": "a_19B1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6578,
   "name": "a_19B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6597,
   "name": "a_19C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6598,
   "name": "a_19C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6599,
   "name": "a_19C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6618,
   "name": "a_19DA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6619,
   "name": "a_19DB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6620,
   "name": "a_19DC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6640,
   "name": "a_19F0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6660,
   "name": "a_1A04",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6680,
   "name": "a_1A18",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6700,
   "name": "f_1A2C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6720,
   "name": "f_1A40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6740,
   "name": "f_1A54",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6760,
   "name": "f_1A68",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6780,
   "name": "a_1A7C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6790,
   "name": "theatre_map",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7046,
   "name": "a_1B86",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7047,
   "name": "a_1B87",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7048,
   "name": "f_1B88",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7053,
   "name": "a_1B8D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7054,
   "name": "f_1B8E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7077,
   "name": "f_1BA5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7082,
   "name": "a_1BAA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7083,
   "name": "f_1BAB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7106,
   "name": "a_1BC2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7107,
   "name": "a_1BC3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7108,
   "name": "f_1BC4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7114,
   "name": "a_1BCA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7115,
   "name": "f_1BCB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7143,
   "name": "f_1BE7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7149,
   "name": "a_1BED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7150,
   "name": "f_1BEE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7178,
   "name": "a_1C0A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7179,
   "name": "a_1C0B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7180,
   "name": "f_1C0C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7183,
   "name": "a_1C0F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7184,
   "name": "f_1C10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7201,
   "name": "f_1C21",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7204,
   "name": "a_1C24",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7205,
   "name": "f_1C25",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7222,
   "name": "a_1C36",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7223,
   "name": "point_x_numbers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7336,
   "name": "point_y_numbers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7337,
   "name": "a_1CA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7401,
   "name": "point_y_numbers_65",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7449,
   "name": "point_height_numbers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7562,
   "name": "a_1D8A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7563,
   "name": "fraction_sources",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7601,
   "name": "fraction_shifts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7639,
   "name": "f_1DD7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7672,
   "name": "f_1DF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7705,
   "name": "f_1E19",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7738,
   "name": "f_1E3A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7771,
   "name": "f_1E5B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7804,
   "name": "f_1E7C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7837,
   "name": "a_1E9D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7838,
   "name": "a_1E9E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7839,
   "name": "hind_object",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7845,
   "name": "missile_objects",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7881,
   "name": "outline_1EC9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7910,
   "name": "outline_1EE6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7950,
   "name": "outline_1F0E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7974,
   "name": "outline_1F26",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7998,
   "name": "outline_1F3E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8038,
   "name": "outline_1F66",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8063,
   "name": "outline_1F7F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8087,
   "name": "line_1F97",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8098,
   "name": "line_1FA2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8109,
   "name": "line_1FAD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8120,
   "name": "line_1FB8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8131,
   "name": "line_1FC3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8146,
   "name": "line_1FD2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8156,
   "name": "line_1FDC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8167,
   "name": "line_1FE7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8183,
   "name": "line_1FF7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8200,
   "name": "line_2008",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8211,
   "name": "line_2013",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8221,
   "name": "line_201D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8232,
   "name": "line_2028",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8242,
   "name": "strokes_2032",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8265,
   "name": "dots_2049",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8282,
   "name": "zigzag_205A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8302,
   "name": "zigzag_206E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8322,
   "name": "zigzag_2082",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8347,
   "name": "zigzag_209B",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8372,
   "name": "zigzag_20B4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8397,
   "name": "hill1_near",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8473,
   "name": "hill1_far",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8529,
   "name": "hill2_near",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8605,
   "name": "hill2_far",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8661,
   "name": "hill3_near",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8723,
   "name": "hill3_far",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8769,
   "name": "hill4_near",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8859,
   "name": "hill4_far",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8929,
   "name": "hill5_near",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9024,
   "name": "hill5_far",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9095,
   "name": "box_2387",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9181,
   "name": "box_far_23DD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9205,
   "name": "pad_23F5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9300,
   "name": "pad_far_2454",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9334,
   "name": "box_2476",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9419,
   "name": "box_far_24CB",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9443,
   "name": "shape_dot_24E3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9451,
   "name": "shape_nato_base_24EB",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9569,
   "name": "nato_base_far_2561",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9594,
   "name": "shape_pact_depot_257A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9708,
   "name": "pact_depot_far_25EC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9748,
   "name": "shape_pact_hq_2614",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9861,
   "name": "pact_hq_far_2685",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9886,
   "name": "shape_pact_base_269E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10003,
   "name": "pact_base_far_2713",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10038,
   "name": "shape_bunker_2736",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10125,
   "name": "shape_pact_inf_278D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10174,
   "name": "shape_t72_27BE",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10309,
   "name": "shape_bmp1_2845",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10444,
   "name": "shape_zsu234_28CC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10603,
   "name": "shape_sa8_296B",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10719,
   "name": "shape_s60_57mm_29DF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10742,
   "name": "shape_sa9_29F6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10852,
   "name": "shape_m2_bradley_2A64",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11025,
   "name": "shape_m1_abrams_2B11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11198,
   "name": "terrain1_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11204,
   "name": "terrain1_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11222,
   "name": "terrain2_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11228,
   "name": "terrain2_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11252,
   "name": "terrain3_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11258,
   "name": "terrain3_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11270,
   "name": "terrain4_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11276,
   "name": "terrain4_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11300,
   "name": "terrain5_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11306,
   "name": "terrain5_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11336,
   "name": "terrain6_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11342,
   "name": "terrain6_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11372,
   "name": "terrain7_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11378,
   "name": "terrain7_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11402,
   "name": "terrain8_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11408,
   "name": "terrain8_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11438,
   "name": "terrain9_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11444,
   "name": "terrain9_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11474,
   "name": "terrain10_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11480,
   "name": "terrain10_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11498,
   "name": "terrain11_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11528,
   "name": "terrain12_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11534,
   "name": "terrain12_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11558,
   "name": "terrain13_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11594,
   "name": "terrain14_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11600,
   "name": "terrain14_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11624,
   "name": "terrain15_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11654,
   "name": "terrain16_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11696,
   "name": "terrain17_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11702,
   "name": "terrain17_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11732,
   "name": "terrain18_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11768,
   "name": "terrain19_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11774,
   "name": "terrain19_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11798,
   "name": "terrain20_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11840,
   "name": "terrain21_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11888,
   "name": "terrain22_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11930,
   "name": "terrain23_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11972,
   "name": "terrain24_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11978,
   "name": "terrain24_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12002,
   "name": "terrain25_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12032,
   "name": "terrain26_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12038,
   "name": "terrain26_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12062,
   "name": "terrain27_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12104,
   "name": "terrain28_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12110,
   "name": "terrain28_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12128,
   "name": "terrain29_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12134,
   "name": "terrain29_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12164,
   "name": "terrain30_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12200,
   "name": "terrain31_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12236,
   "name": "terrain32_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12272,
   "name": "shape_hind",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12544,
   "name": "flight_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12557,
   "name": "b_310D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12568,
   "name": "main_loop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12618,
   "name": "b_314A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12695,
   "name": "b_3197",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12701,
   "name": "b_319D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12707,
   "name": "b_31A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12805,
   "name": "b_3205",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12827,
   "name": "b_321B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12847,
   "name": "b_322F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12861,
   "name": "b_323D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12879,
   "name": "b_324F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12891,
   "name": "b_325B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12901,
   "name": "b_3265",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12918,
   "name": "b_3276",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12936,
   "name": "b_3288",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12947,
   "name": "b_3293",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12978,
   "name": "b_32B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12980,
   "name": "b_32B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13003,
   "name": "b_32CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13009,
   "name": "b_32D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13053,
   "name": "b_32FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13063,
   "name": "b_3307",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13082,
   "name": "b_331A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13102,
   "name": "b_332E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13107,
   "name": "b_3333",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13112,
   "name": "b_3338",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13132,
   "name": "b_334C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13142,
   "name": "b_3356",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13159,
   "name": "b_3367",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13173,
   "name": "b_3375",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13187,
   "name": "b_3383",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13196,
   "name": "b_338C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13213,
   "name": "b_339D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13224,
   "name": "b_33A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13235,
   "name": "b_33B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13246,
   "name": "b_33BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13257,
   "name": "b_33C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13271,
   "name": "b_33D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13280,
   "name": "b_33E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13289,
   "name": "b_33E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13300,
   "name": "j_33F4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13311,
   "name": "b_33FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13315,
   "name": "b_3403",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13318,
   "name": "b_3406",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13352,
   "name": "b_3428",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13372,
   "name": "b_343C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13392,
   "name": "b_3450",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13412,
   "name": "b_3464",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13430,
   "name": "b_3476",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13453,
   "name": "b_348D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13464,
   "name": "b_3498",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13489,
   "name": "b_34B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13514,
   "name": "b_34CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13539,
   "name": "b_34E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13564,
   "name": "b_34FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13592,
   "name": "b_3518",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13595,
   "name": "b_351B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13623,
   "name": "b_3537",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13626,
   "name": "b_353A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13659,
   "name": "b_355B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13681,
   "name": "b_3571",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13708,
   "name": "b_358C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13729,
   "name": "b_35A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13735,
   "name": "b_35A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13741,
   "name": "j_35AD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13753,
   "name": "b_35B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13759,
   "name": "b_35BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13761,
   "name": "b_35C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13770,
   "name": "b_35CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13778,
   "name": "b_35D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13790,
   "name": "b_35DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13802,
   "name": "b_35EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13811,
   "name": "j_35F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13824,
   "name": "count_load",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13843,
   "name": "b_3613",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13847,
   "name": "b_3617",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13867,
   "name": "b_362B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13877,
   "name": "b_3635",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13903,
   "name": "b_364F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13917,
   "name": "b_365D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13927,
   "name": "b_3667",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13946,
   "name": "b_367A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14055,
   "name": "b_36E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14057,
   "name": "b_36E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14090,
   "name": "b_370A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14092,
   "name": "b_370C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14121,
   "name": "b_3729",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14142,
   "name": "b_373E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14144,
   "name": "b_3740",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14162,
   "name": "b_3752",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14207,
   "name": "j_377F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14220,
   "name": "b_378C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14237,
   "name": "b_379D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14244,
   "name": "b_37A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14289,
   "name": "b_37D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14314,
   "name": "b_37EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14320,
   "name": "b_37F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14326,
   "name": "b_37F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14337,
   "name": "b_3801",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14365,
   "name": "b_381D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14367,
   "name": "b_381F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14375,
   "name": "b_3827",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14411,
   "name": "b_384B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14444,
   "name": "j_386C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14476,
   "name": "j_388C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14498,
   "name": "b_38A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14510,
   "name": "b_38AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14529,
   "name": "b_38C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14537,
   "name": "b_38C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14561,
   "name": "b_38E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14577,
   "name": "b_38F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14585,
   "name": "b_38F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14603,
   "name": "b_390B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14641,
   "name": "j_3931",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14682,
   "name": "b_395A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14689,
   "name": "b_3961",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14701,
   "name": "b_396D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14752,
   "name": "b_39A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14766,
   "name": "b_39AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14787,
   "name": "b_39C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14796,
   "name": "b_39CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14810,
   "name": "b_39DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14834,
   "name": "b_39F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14854,
   "name": "b_3A06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14860,
   "name": "b_3A0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14872,
   "name": "b_3A18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14881,
   "name": "b_3A21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14929,
   "name": "b_3A51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14931,
   "name": "b_3A53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14944,
   "name": "b_3A60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14964,
   "name": "b_3A74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14987,
   "name": "b_3A8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15024,
   "name": "b_3AB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15061,
   "name": "b_3AD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15094,
   "name": "keep_on_map",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15107,
   "name": "b_3B03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15119,
   "name": "r_3B0F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15120,
   "name": "j_3B10",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15140,
   "name": "b_3B24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15157,
   "name": "b_3B35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15166,
   "name": "b_3B3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15199,
   "name": "b_3B5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15202,
   "name": "b_3B62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15204,
   "name": "b_3B64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15225,
   "name": "b_3B79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15234,
   "name": "b_3B82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15242,
   "name": "b_3B8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15265,
   "name": "b_3BA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15279,
   "name": "b_3BAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15289,
   "name": "b_3BB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15291,
   "name": "b_3BBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15293,
   "name": "j_3BBD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15326,
   "name": "b_3BDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15330,
   "name": "b_3BE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15350,
   "name": "b_3BF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15364,
   "name": "b_3C04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15381,
   "name": "b_3C15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15405,
   "name": "b_3C2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15436,
   "name": "b_3C4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15439,
   "name": "b_3C4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15470,
   "name": "b_3C6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15483,
   "name": "b_3C7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15501,
   "name": "b_3C8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15515,
   "name": "b_3C9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15525,
   "name": "b_3CA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15542,
   "name": "b_3CB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15570,
   "name": "b_3CD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15598,
   "name": "b_3CEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15621,
   "name": "b_3D05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15660,
   "name": "b_3D2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15666,
   "name": "b_3D32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15691,
   "name": "b_3D4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15712,
   "name": "b_3D60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15732,
   "name": "b_3D74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15740,
   "name": "b_3D7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15749,
   "name": "b_3D85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15758,
   "name": "b_3D8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15765,
   "name": "b_3D95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15793,
   "name": "b_3DB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15827,
   "name": "b_3DD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15850,
   "name": "j_3DEA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15889,
   "name": "b_3E11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15899,
   "name": "j_3E1B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15902,
   "name": "j_3E1E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15920,
   "name": "b_3E30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15923,
   "name": "b_3E33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15998,
   "name": "b_3E7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16000,
   "name": "b_3E80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16024,
   "name": "b_3E98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16047,
   "name": "b_3EAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16050,
   "name": "j_3EB2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16094,
   "name": "b_3EDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16102,
   "name": "b_3EE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16107,
   "name": "b_3EEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16111,
   "name": "next_unit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16125,
   "name": "b_3EFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16128,
   "name": "f_3F00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16272,
   "name": "a_3F90",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16324,
   "name": "a_3FC4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16384,
   "name": "window1_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16736,
   "name": "f_4160",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16908,
   "name": "a_420C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16909,
   "name": "a_420D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16938,
   "name": "a_422A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16939,
   "name": "a_422B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17056,
   "name": "f_42A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17376,
   "name": "f_43E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17696,
   "name": "f_4520",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18016,
   "name": "f_4660",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18336,
   "name": "f_47A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18656,
   "name": "f_48E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18976,
   "name": "f_4A20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19296,
   "name": "f_4B60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19616,
   "name": "f_4CA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19936,
   "name": "f_4DE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20256,
   "name": "f_4F20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20544,
   "name": "sprite_sight",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20608,
   "name": "sprite_42",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20672,
   "name": "sprite_43",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20736,
   "name": "f_5100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20741,
   "name": "unit_x_hind",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20805,
   "name": "unit_x_more",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20858,
   "name": "f_517A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20863,
   "name": "a_517F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20864,
   "name": "f_5180",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20869,
   "name": "unit_y_hind",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20933,
   "name": "unit_y_more",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20986,
   "name": "f_51FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20991,
   "name": "a_51FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20992,
   "name": "f_5200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20997,
   "name": "unit_square_hind",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21061,
   "name": "unit_square_more",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21114,
   "name": "f_527A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21119,
   "name": "a_527F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21120,
   "name": "f_5280",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21184,
   "name": "unit_alert_more",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21242,
   "name": "f_52FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21247,
   "name": "a_52FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21248,
   "name": "f_5300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21312,
   "name": "unit_type_more",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21376,
   "name": "f_5380",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21400,
   "name": "f_5398",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21406,
   "name": "f_539E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21412,
   "name": "target_box_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21416,
   "name": "f_53A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21432,
   "name": "f_53B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21448,
   "name": "f_53C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21464,
   "name": "f_53D8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21465,
   "name": "a_53D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21466,
   "name": "a_53DA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21467,
   "name": "a_53DB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21468,
   "name": "store_flares",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21469,
   "name": "store_chaff",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21472,
   "name": "a_53E0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21484,
   "name": "a_53EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21499,
   "name": "a_53FB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21504,
   "name": "unit_turn",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 21516,
   "name": "b_540C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21580,
   "name": "b_544C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21638,
   "name": "b_5486",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21668,
   "name": "b_54A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21709,
   "name": "b_54CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21733,
   "name": "b_54E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21735,
   "name": "b_54E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21745,
   "name": "b_54F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21751,
   "name": "b_54F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21761,
   "name": "b_5501",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21777,
   "name": "b_5511",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21798,
   "name": "b_5526",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21805,
   "name": "b_552D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21846,
   "name": "b_5556",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21860,
   "name": "b_5564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21869,
   "name": "b_556D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21926,
   "name": "b_55A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21944,
   "name": "b_55B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21954,
   "name": "b_55C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22044,
   "name": "b_561C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22051,
   "name": "j_5623",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22054,
   "name": "j_5626",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22057,
   "name": "j_5629",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22062,
   "name": "j_562E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22069,
   "name": "b_5635",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22088,
   "name": "b_5648",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22103,
   "name": "b_5657",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22121,
   "name": "b_5669",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22133,
   "name": "b_5675",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22145,
   "name": "b_5681",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22157,
   "name": "j_568D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22218,
   "name": "b_56CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22242,
   "name": "b_56E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22284,
   "name": "b_570C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22311,
   "name": "j_5727",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22422,
   "name": "b_5796",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22447,
   "name": "b_57AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22472,
   "name": "b_57C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22490,
   "name": "b_57DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22511,
   "name": "b_57EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22574,
   "name": "b_582E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22578,
   "name": "b_5832",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22587,
   "name": "b_583B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22605,
   "name": "b_584D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22637,
   "name": "j_586D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22719,
   "name": "b_58BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22733,
   "name": "j_58CD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22742,
   "name": "b_58D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22749,
   "name": "j_58DD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22767,
   "name": "b_58EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22779,
   "name": "b_58FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22790,
   "name": "b_5906",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22804,
   "name": "b_5914",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22823,
   "name": "b_5927",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22836,
   "name": "b_5934",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22853,
   "name": "b_5945",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22868,
   "name": "b_5954",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22881,
   "name": "b_5961",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22898,
   "name": "b_5972",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22949,
   "name": "b_59A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22952,
   "name": "b_59A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22971,
   "name": "j_59BB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22980,
   "name": "j_59C4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22983,
   "name": "sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23004,
   "name": "unit_calm",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23031,
   "name": "b_59F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23038,
   "name": "lamp",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23048,
   "name": "b_5A08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23058,
   "name": "weapon_lamps_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23060,
   "name": "b_5A14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23077,
   "name": "use_store",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23090,
   "name": "r_5A32",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23091,
   "name": "draw_stores",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 23095,
   "name": "b_5A37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23121,
   "name": "destroy_unit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23151,
   "name": "b_5A6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23210,
   "name": "b_5AAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23252,
   "name": "b_5AD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23260,
   "name": "r_5ADC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23261,
   "name": "f_5ADD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 23269,
   "name": "hit_helicopter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23292,
   "name": "b_5AFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23295,
   "name": "b_5AFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23330,
   "name": "b_5B22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23334,
   "name": "b_5B26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23343,
   "name": "b_5B2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23352,
   "name": "b_5B38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23361,
   "name": "b_5B41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23367,
   "name": "j_5B47",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23375,
   "name": "b_5B4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23387,
   "name": "b_5B5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23403,
   "name": "b_5B6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23435,
   "name": "j_5B8B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23444,
   "name": "damage_lamps",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23454,
   "name": "b_5B9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23466,
   "name": "b_5BAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23481,
   "name": "landed_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23505,
   "name": "r_5BD1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23506,
   "name": "hill_between",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23560,
   "name": "message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23680,
   "name": "sprite_gun_flash",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24064,
   "name": "sprite_ffar_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24320,
   "name": "sprite_ffar_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24576,
   "name": "window2_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24928,
   "name": "f_6160",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25248,
   "name": "f_62A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25568,
   "name": "f_63E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25888,
   "name": "f_6520",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26208,
   "name": "f_6660",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26528,
   "name": "f_67A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26848,
   "name": "f_68E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27168,
   "name": "f_6A20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27488,
   "name": "f_6B60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27648,
   "name": "j_6C00",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27808,
   "name": "f_6CA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28128,
   "name": "f_6DE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28448,
   "name": "f_6F20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28736,
   "name": "s_7040",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 28739,
   "name": "mission_bits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28740,
   "name": "s_7044",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 28743,
   "name": "check_missions",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28756,
   "name": "b_7054",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28769,
   "name": "b_7061",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28774,
   "name": "b_7066",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28782,
   "name": "b_706E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28790,
   "name": "b_7076",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28803,
   "name": "b_7083",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28808,
   "name": "b_7088",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28819,
   "name": "b_7093",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28836,
   "name": "a_70A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28837,
   "name": "a_70A5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28838,
   "name": "swap_missions",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28840,
   "name": "b_70A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28864,
   "name": "sprite_solid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28928,
   "name": "sprite_launch_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29184,
   "name": "sprite_missile",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29824,
   "name": "sprite_explosion",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30208,
   "name": "sprite_target_box",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30272,
   "name": "sprite_box_hits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30528,
   "name": "sprite_launch_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30912,
   "name": "s_78C0",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30915,
   "name": "s_78C3",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30918,
   "name": "s_78C6",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30930,
   "name": "f_78D2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30931,
   "name": "f_78D3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30958,
   "name": "f_78EE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30969,
   "name": "print_message",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30979,
   "name": "j_7903",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31007,
   "name": "j_791F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31010,
   "name": "a_7922",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31011,
   "name": "a_7923",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31043,
   "name": "b_7943",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31058,
   "name": "b_7952",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31059,
   "name": "a_7953",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31060,
   "name": "a_7954",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31079,
   "name": "b_7967",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31083,
   "name": "r_796B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 31084,
   "name": "show_message",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31085,
   "name": "a_796D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31092,
   "name": "b_7974",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31106,
   "name": "b_7982",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31109,
   "name": "b_7985",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31119,
   "name": "b_798F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31124,
   "name": "b_7994",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31126,
   "name": "a_7996",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31138,
   "name": "s_79A2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31148,
   "name": "b_79AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31151,
   "name": "j_79AF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31155,
   "name": "msg_blank",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31166,
   "name": "msg_target",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31176,
   "name": "msg_radio_msg",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31186,
   "name": "msg_incorrect",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31217,
   "name": "msg_false",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31263,
   "name": "msg_mission_change",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31314,
   "name": "msg_hind_airborne",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31363,
   "name": "msg_cease_fire",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31408,
   "name": "msg_primary_destroyed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31444,
   "name": "msg_secondary_destroyed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31481,
   "name": "msg_hind_name",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31492,
   "name": "f_7B04",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31526,
   "name": "f_7B26",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31559,
   "name": "msg_pact_inf",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31569,
   "name": "msg_t72",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31577,
   "name": "msg_bmp1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31585,
   "name": "msg_sa8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31593,
   "name": "msg_sa9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31601,
   "name": "msg_zsu234",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31611,
   "name": "msg_s60",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31621,
   "name": "msg_bunker",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31630,
   "name": "msg_pact_base",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31640,
   "name": "msg_pact_depot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31651,
   "name": "msg_pact_hq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31660,
   "name": "msg_m1_abrams",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31670,
   "name": "msg_m2_bradley",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31681,
   "name": "msg_nato_inf",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31691,
   "name": "msg_nato_base",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31744,
   "name": "window_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32264,
   "name": "window_screen_low",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32760,
   "name": "f_7FF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32761,
   "name": "a_7FF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32762,
   "name": "f_7FFA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33024,
   "name": "engine_jumps",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33027,
   "name": "s_8103",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33030,
   "name": "s_8106",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33033,
   "name": "s_8109",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33036,
   "name": "s_810C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33039,
   "name": "s_810F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33042,
   "name": "s_8112",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33045,
   "name": "s_8115",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33048,
   "name": "s_8118",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33051,
   "name": "s_811B",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33054,
   "name": "s_811E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33060,
   "name": "s_8124",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33066,
   "name": "s_812A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33069,
   "name": "a_812D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33070,
   "name": "a_812E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33071,
   "name": "a_812F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33072,
   "name": "a_8130",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33073,
   "name": "a_8131",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33074,
   "name": "a_8132",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33075,
   "name": "a_8133",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33076,
   "name": "a_8134",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33077,
   "name": "a_8135",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33078,
   "name": "a_8136",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33079,
   "name": "a_8137",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33080,
   "name": "a_8138",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33081,
   "name": "a_8139",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33082,
   "name": "a_813A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33083,
   "name": "a_813B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33084,
   "name": "a_813C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33085,
   "name": "a_813D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33086,
   "name": "a_813E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33087,
   "name": "a_813F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33088,
   "name": "a_8140",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33089,
   "name": "a_8141",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33090,
   "name": "a_8142",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33091,
   "name": "a_8143",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33092,
   "name": "a_8144",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33093,
   "name": "a_8145",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33094,
   "name": "a_8146",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33095,
   "name": "a_8147",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33096,
   "name": "a_8148",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33097,
   "name": "a_8149",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33098,
   "name": "a_814A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33099,
   "name": "a_814B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33100,
   "name": "a_814C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33101,
   "name": "a_814D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33102,
   "name": "a_814E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33103,
   "name": "a_814F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33104,
   "name": "a_8150",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33105,
   "name": "a_8151",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33106,
   "name": "a_8152",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33107,
   "name": "a_8153",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33108,
   "name": "f_8154",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33109,
   "name": "a_8155",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33110,
   "name": "f_8156",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33116,
   "name": "a_815C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33117,
   "name": "a_815D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33118,
   "name": "f_815E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33124,
   "name": "f_8164",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33125,
   "name": "a_8165",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33126,
   "name": "f_8166",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33132,
   "name": "f_816C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33134,
   "name": "f_816E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33140,
   "name": "a_8174",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33141,
   "name": "f_8175",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33142,
   "name": "a_8176",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33143,
   "name": "a_8177",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33144,
   "name": "a_8178",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33145,
   "name": "f_8179",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33148,
   "name": "a_817C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33149,
   "name": "f_817D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33150,
   "name": "a_817E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33153,
   "name": "f_8181",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33157,
   "name": "f_8185",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33165,
   "name": "f_818D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33166,
   "name": "a_818E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33169,
   "name": "f_8191",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33173,
   "name": "a_8195",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33174,
   "name": "a_8196",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33175,
   "name": "s_8197",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33178,
   "name": "a_819A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33179,
   "name": "a_819B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33180,
   "name": "s_819C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33183,
   "name": "s_819F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33186,
   "name": "s_81A2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33189,
   "name": "s_81A5",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33192,
   "name": "a_81A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33193,
   "name": "a_81A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33194,
   "name": "a_81AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33195,
   "name": "a_81AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33196,
   "name": "a_81AC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33197,
   "name": "a_81AD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33198,
   "name": "a_81AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33199,
   "name": "s_81AF",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33202,
   "name": "a_81B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33203,
   "name": "a_81B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33204,
   "name": "a_81B4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33205,
   "name": "s_81B5",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33208,
   "name": "a_81B8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33210,
   "name": "f_81BA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33211,
   "name": "a_81BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33212,
   "name": "a_81BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33216,
   "name": "a_81C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33217,
   "name": "a_81C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33218,
   "name": "a_81C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33219,
   "name": "a_81C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33220,
   "name": "s_81C4",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33223,
   "name": "a_81C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33224,
   "name": "a_81C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33226,
   "name": "s_81CA",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33229,
   "name": "a_81CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33230,
   "name": "a_81CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33231,
   "name": "a_81CF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33232,
   "name": "a_81D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33241,
   "name": "f_81D9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33253,
   "name": "f_81E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33257,
   "name": "f_81E9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33261,
   "name": "f_81ED",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33267,
   "name": "f_81F3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33273,
   "name": "f_81F9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33279,
   "name": "f_81FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33285,
   "name": "f_8205",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33291,
   "name": "f_820B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33297,
   "name": "f_8211",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33303,
   "name": "f_8217",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33309,
   "name": "a_821D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33310,
   "name": "a_821E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33311,
   "name": "a_821F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33312,
   "name": "a_8220",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33313,
   "name": "s_8221",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33316,
   "name": "s_8224",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 33322,
   "name": "f_822A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33327,
   "name": "f_822F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33332,
   "name": "f_8234",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33337,
   "name": "f_8239",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33342,
   "name": "a_823E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33343,
   "name": "f_823F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33345,
   "name": "a_8241",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33346,
   "name": "f_8242",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33355,
   "name": "f_824B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33364,
   "name": "f_8254",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33373,
   "name": "f_825D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33382,
   "name": "f_8266",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33391,
   "name": "f_826F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33392,
   "name": "a_8270",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33400,
   "name": "f_8278",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33409,
   "name": "f_8281",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33481,
   "name": "f_82C9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33489,
   "name": "f_82D1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33497,
   "name": "f_82D9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33569,
   "name": "f_8321",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33577,
   "name": "a_8329",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33578,
   "name": "a_832A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33579,
   "name": "view_squares",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33629,
   "name": "b_835D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33636,
   "name": "a_8364",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33746,
   "name": "b_83D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33751,
   "name": "b_83D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33814,
   "name": "b_8416",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33821,
   "name": "a_841D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33834,
   "name": "a_842A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33842,
   "name": "b_8432",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33845,
   "name": "r_8435",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33846,
   "name": "f_8436",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33852,
   "name": "f_843C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33873,
   "name": "draw_view",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33883,
   "name": "b_845B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33891,
   "name": "b_8463",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33917,
   "name": "b_847D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33923,
   "name": "b_8483",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33951,
   "name": "b_849F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33970,
   "name": "j_84B2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34006,
   "name": "a_84D6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34051,
   "name": "b_8503",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34087,
   "name": "j_8527",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34098,
   "name": "a_8532",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34099,
   "name": "a_8533",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34100,
   "name": "a_8534",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34101,
   "name": "horizon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34148,
   "name": "b_8564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34153,
   "name": "a_8569",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34168,
   "name": "a_8578",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34172,
   "name": "a_857C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34176,
   "name": "a_8580",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34180,
   "name": "a_8584",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34209,
   "name": "r_85A1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34210,
   "name": "j_85A2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34236,
   "name": "b_85BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34240,
   "name": "a_85C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34288,
   "name": "b_85F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34302,
   "name": "b_85FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34363,
   "name": "b_863B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34418,
   "name": "b_8672",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34462,
   "name": "b_869E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34505,
   "name": "r_86C9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34506,
   "name": "set_plot_op",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34518,
   "name": "s_86D6",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 34534,
   "name": "draw_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34582,
   "name": "b_8716",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34586,
   "name": "b_871A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34589,
   "name": "b_871D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34676,
   "name": "b_8774",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34677,
   "name": "a_8775",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34682,
   "name": "b_877A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34685,
   "name": "b_877D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34686,
   "name": "a_877E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34689,
   "name": "b_8781",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34709,
   "name": "b_8795",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34720,
   "name": "j_87A0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34747,
   "name": "b_87BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34757,
   "name": "j_87C5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34768,
   "name": "b_87D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34775,
   "name": "b_87D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34789,
   "name": "b_87E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34796,
   "name": "b_87EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34842,
   "name": "b_881A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34857,
   "name": "b_8829",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34870,
   "name": "b_8836",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34896,
   "name": "b_8850",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34917,
   "name": "b_8865",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34931,
   "name": "j_8873",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34939,
   "name": "b_887B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34950,
   "name": "b_8886",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34960,
   "name": "r_8890",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34961,
   "name": "hill",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35022,
   "name": "b_88CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35031,
   "name": "b_88D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35042,
   "name": "b_88E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35047,
   "name": "behind_hill",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35061,
   "name": "b_88F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35068,
   "name": "b_88FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35070,
   "name": "b_88FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35082,
   "name": "b_890A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35091,
   "name": "b_8913",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35093,
   "name": "b_8915",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35096,
   "name": "b_8918",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35114,
   "name": "b_892A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35115,
   "name": "a_892B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35123,
   "name": "b_8933",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35129,
   "name": "a_8939",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35142,
   "name": "b_8946",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35145,
   "name": "r_8949",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35146,
   "name": "project",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35158,
   "name": "b_8956",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35166,
   "name": "a_895E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35174,
   "name": "a_8966",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35183,
   "name": "a_896F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35191,
   "name": "a_8977",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35200,
   "name": "a_8980",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35208,
   "name": "a_8988",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35223,
   "name": "b_8997",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35231,
   "name": "b_899F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35252,
   "name": "b_89B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35253,
   "name": "j_89B5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35257,
   "name": "b_89B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35268,
   "name": "j_89C4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35281,
   "name": "b_89D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35303,
   "name": "b_89E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35311,
   "name": "b_89EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35330,
   "name": "b_8A02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35364,
   "name": "b_8A24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35374,
   "name": "b_8A2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35390,
   "name": "b_8A3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35407,
   "name": "a_8A4F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35445,
   "name": "b_8A75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35471,
   "name": "b_8A8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35485,
   "name": "b_8A9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35515,
   "name": "b_8ABB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35521,
   "name": "j_8AC1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35535,
   "name": "b_8ACF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35543,
   "name": "j_8AD7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35551,
   "name": "b_8ADF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35558,
   "name": "b_8AE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35580,
   "name": "b_8AFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35588,
   "name": "j_8B04",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35612,
   "name": "b_8B1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35639,
   "name": "dot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35653,
   "name": "a_8B45",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35660,
   "name": "a_8B4C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35668,
   "name": "r_8B54",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35669,
   "name": "b_8B55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35734,
   "name": "b_8B96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35737,
   "name": "j_8B99",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35739,
   "name": "b_8B9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35746,
   "name": "a_8BA2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35758,
   "name": "a_8BAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35760,
   "name": "a_8BB0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35764,
   "name": "perspective",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35794,
   "name": "b_8BD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35806,
   "name": "a_8BDE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35828,
   "name": "a_8BF4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35845,
   "name": "a_8C05",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35874,
   "name": "b_8C22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35875,
   "name": "a_8C23",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35886,
   "name": "a_8C2E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35908,
   "name": "a_8C44",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35913,
   "name": "b_8C49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35927,
   "name": "a_8C57",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35932,
   "name": "extent",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35940,
   "name": "b_8C64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35948,
   "name": "b_8C6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35957,
   "name": "r_8C75",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35958,
   "name": "f_8C76",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 35964,
   "name": "f_8C7C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 35970,
   "name": "roll_scale",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35989,
   "name": "b_8C95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35990,
   "name": "a_8C96",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35991,
   "name": "a_8C97",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35992,
   "name": "j_8C98",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36010,
   "name": "b_8CAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36059,
   "name": "r_8CDB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36060,
   "name": "clip_near",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36078,
   "name": "j_8CEE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36104,
   "name": "b_8D08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36105,
   "name": "a_8D09",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36109,
   "name": "b_8D0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36125,
   "name": "b_8D1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36149,
   "name": "b_8D35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36150,
   "name": "a_8D36",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36153,
   "name": "b_8D39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36169,
   "name": "b_8D49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36193,
   "name": "b_8D61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36194,
   "name": "a_8D62",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36197,
   "name": "b_8D65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36213,
   "name": "b_8D75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36219,
   "name": "b_8D7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36232,
   "name": "b_8D88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36238,
   "name": "a_8D8E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36260,
   "name": "edge_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36279,
   "name": "b_8DB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36311,
   "name": "rotate_points",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36312,
   "name": "a_8DD8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36321,
   "name": "j_8DE1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36378,
   "name": "b_8E1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36405,
   "name": "a_8E35",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36425,
   "name": "b_8E49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36452,
   "name": "a_8E64",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36459,
   "name": "a_8E6B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36463,
   "name": "b_8E6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36471,
   "name": "j_8E77",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36500,
   "name": "b_8E94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36510,
   "name": "b_8E9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36518,
   "name": "j_8EA6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36538,
   "name": "b_8EBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36548,
   "name": "b_8EC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36556,
   "name": "j_8ECC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36576,
   "name": "b_8EE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36586,
   "name": "b_8EEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36594,
   "name": "j_8EF2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36606,
   "name": "j_8EFE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36609,
   "name": "view_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36669,
   "name": "b_8F3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36710,
   "name": "j_8F66",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36755,
   "name": "rotate_axes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36834,
   "name": "b_8FE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36853,
   "name": "b_8FF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36867,
   "name": "j_9003",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36946,
   "name": "b_9052",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36965,
   "name": "b_9065",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36979,
   "name": "j_9073",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37058,
   "name": "b_90C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37083,
   "name": "b_90DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37103,
   "name": "j_90EF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37132,
   "name": "f_910C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37136,
   "name": "engine_on",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37179,
   "name": "b_913B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37241,
   "name": "engine_off",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37262,
   "name": "s_918E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 37275,
   "name": "swap_zp",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37277,
   "name": "b_919D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37291,
   "name": "irq_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37341,
   "name": "irq_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37359,
   "name": "nmi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37378,
   "name": "b_9202",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37382,
   "name": "irq_bottom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37422,
   "name": "b_922E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37433,
   "name": "a_9239",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37469,
   "name": "b_925D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37475,
   "name": "a_9263",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37479,
   "name": "f_9267",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37519,
   "name": "f_928F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37559,
   "name": "f_92B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37625,
   "name": "b_92F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37648,
   "name": "b_9310",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37666,
   "name": "b_9322",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37668,
   "name": "b_9324",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37678,
   "name": "b_932E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37714,
   "name": "b_9352",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37722,
   "name": "a_935A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37734,
   "name": "b_9366",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37739,
   "name": "b_936B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37772,
   "name": "b_938C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37804,
   "name": "b_93AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37819,
   "name": "a_93BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37824,
   "name": "a_93C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37841,
   "name": "b_93D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37903,
   "name": "b_940F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37943,
   "name": "b_9437",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37946,
   "name": "j_943A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37965,
   "name": "b_944D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37992,
   "name": "b_9468",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38007,
   "name": "b_9477",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38011,
   "name": "a_947B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38016,
   "name": "a_9480",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38031,
   "name": "irq_c128",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38072,
   "name": "irq_split",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38094,
   "name": "a_94CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38099,
   "name": "a_94D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38114,
   "name": "a_94E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38119,
   "name": "a_94E7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38124,
   "name": "a_94EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38128,
   "name": "f_94F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38134,
   "name": "a_94F6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38168,
   "name": "f_9518",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38174,
   "name": "a_951E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38208,
   "name": "f_9540",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38214,
   "name": "a_9546",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38265,
   "name": "a_9579",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38266,
   "name": "f_957A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38270,
   "name": "f_957E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38286,
   "name": "a_958E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38287,
   "name": "missile_sprite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38297,
   "name": "b_9599",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38335,
   "name": "b_95BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38365,
   "name": "b_95DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38412,
   "name": "b_960C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38415,
   "name": "a_960F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38416,
   "name": "a_9610",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38417,
   "name": "a_9611",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38418,
   "name": "a_9612",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38419,
   "name": "a_9613",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38420,
   "name": "change_view",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38430,
   "name": "b_961E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38433,
   "name": "b_9621",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38478,
   "name": "b_964E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38505,
   "name": "b_9669",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38518,
   "name": "b_9676",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38533,
   "name": "draw_map",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38561,
   "name": "b_96A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38602,
   "name": "b_96CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38620,
   "name": "b_96DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38665,
   "name": "b_9709",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38667,
   "name": "j_970B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38700,
   "name": "b_972C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38705,
   "name": "b_9731",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38714,
   "name": "b_973A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38748,
   "name": "b_975C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38761,
   "name": "b_9769",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38763,
   "name": "b_976B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38791,
   "name": "b_9787",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38800,
   "name": "b_9790",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38802,
   "name": "b_9792",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38804,
   "name": "b_9794",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38812,
   "name": "b_979C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38857,
   "name": "r_97C9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38858,
   "name": "j_97CA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38872,
   "name": "irq_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38916,
   "name": "b_9804",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38935,
   "name": "map_cross",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38946,
   "name": "b_9822",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38993,
   "name": "b_9851",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39002,
   "name": "r_985A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39004,
   "name": "map_square",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39006,
   "name": "b_985E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39016,
   "name": "b_9868",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39026,
   "name": "a_9872",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39027,
   "name": "heading_sprite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39051,
   "name": "b_988B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39052,
   "name": "a_988C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39088,
   "name": "b_98B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39089,
   "name": "a_98B1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39108,
   "name": "sprites_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39114,
   "name": "b_98CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39125,
   "name": "hill_test",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39218,
   "name": "b_9932",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39226,
   "name": "b_993A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39248,
   "name": "b_9950",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39255,
   "name": "f_9957",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 39259,
   "name": "f_995B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 39263,
   "name": "save_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39265,
   "name": "b_9961",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39293,
   "name": "load_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39295,
   "name": "b_997F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39323,
   "name": "a_999B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39324,
   "name": "f_999C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 39326,
   "name": "picture",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39417,
   "name": "a_99F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39437,
   "name": "picture_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39477,
   "name": "a_9A35",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39478,
   "name": "a_9A36",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39479,
   "name": "a_9A37",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39480,
   "name": "a_9A38",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39481,
   "name": "sound_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39491,
   "name": "b_9A43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39505,
   "name": "j_9A51",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39511,
   "name": "b_9A57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39535,
   "name": "j_9A6F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39548,
   "name": "b_9A7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39568,
   "name": "b_9A90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39574,
   "name": "b_9A96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39595,
   "name": "r_9AAB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39596,
   "name": "sound_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39623,
   "name": "f_9AC7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 39625,
   "name": "f_9AC9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 39633,
   "name": "swap_buffers",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39657,
   "name": "r_9AE9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39658,
   "name": "sprites_copy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39660,
   "name": "b_9AEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39749,
   "name": "r_9B45",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39750,
   "name": "scope_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39757,
   "name": "b_9B4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39792,
   "name": "r_9B70",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39793,
   "name": "clear_window",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39802,
   "name": "b_9B7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39842,
   "name": "b_9BA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39882,
   "name": "crt_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39883,
   "name": "a_9BCB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39886,
   "name": "b_9BCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39908,
   "name": "a_9BE4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39911,
   "name": "b_9BE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39941,
   "name": "lamp_set",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39958,
   "name": "j_9C16",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39966,
   "name": "a_9C1E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39976,
   "name": "b_9C28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39991,
   "name": "b_9C37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39998,
   "name": "b_9C3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40002,
   "name": "b_9C42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40018,
   "name": "b_9C52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40022,
   "name": "f_9C56",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 40023,
   "name": "f_9C57",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 40078,
   "name": "crt_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40090,
   "name": "b_9C9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40099,
   "name": "b_9CA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40101,
   "name": "b_9CA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40111,
   "name": "b_9CAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40114,
   "name": "b_9CB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40141,
   "name": "crt_next",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40145,
   "name": "b_9CD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40177,
   "name": "b_9CF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40213,
   "name": "b_9D15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40237,
   "name": "b_9D2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40252,
   "name": "a_9D3C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40253,
   "name": "cos_mul",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40260,
   "name": "j_9D44",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40265,
   "name": "j_9D49",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40286,
   "name": "b_9D5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40291,
   "name": "b_9D63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40306,
   "name": "b_9D72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40313,
   "name": "b_9D79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40320,
   "name": "b_9D80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40327,
   "name": "b_9D87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40334,
   "name": "b_9D8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40341,
   "name": "b_9D95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40348,
   "name": "b_9D9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40355,
   "name": "b_9DA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40356,
   "name": "b_9DA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40370,
   "name": "b_9DB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40377,
   "name": "b_9DB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40384,
   "name": "b_9DC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40391,
   "name": "b_9DC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40398,
   "name": "b_9DCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40405,
   "name": "b_9DD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40412,
   "name": "b_9DDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40419,
   "name": "b_9DE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40427,
   "name": "a_9DEB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40434,
   "name": "b_9DF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40453,
   "name": "r_9E05",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40454,
   "name": "mul8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40470,
   "name": "b_9E16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40477,
   "name": "b_9E1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40484,
   "name": "b_9E24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40491,
   "name": "b_9E2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40498,
   "name": "b_9E32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40505,
   "name": "b_9E39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40512,
   "name": "b_9E40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40519,
   "name": "b_9E47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40520,
   "name": "b_9E48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40525,
   "name": "divide",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40544,
   "name": "b_9E60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40548,
   "name": "b_9E64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40559,
   "name": "b_9E6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40564,
   "name": "b_9E74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40574,
   "name": "b_9E7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40586,
   "name": "b_9E8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40594,
   "name": "b_9E92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40599,
   "name": "map_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40675,
   "name": "b_9EE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40676,
   "name": "b_9EE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40684,
   "name": "f_9EEC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 40709,
   "name": "f_9F05",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 40734,
   "name": "crt_map",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40753,
   "name": "b_9F31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40755,
   "name": "b_9F33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40767,
   "name": "b_9F3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40769,
   "name": "b_9F41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40789,
   "name": "b_9F55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40803,
   "name": "b_9F63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40817,
   "name": "b_9F71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40821,
   "name": "b_9F75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40830,
   "name": "b_9F7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40851,
   "name": "b_9F93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40863,
   "name": "b_9F9F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40872,
   "name": "b_9FA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40913,
   "name": "b_9FD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40946,
   "name": "b_9FF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41003,
   "name": "b_A02B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41013,
   "name": "j_A035",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41023,
   "name": "f_A03F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41025,
   "name": "f_A041",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41027,
   "name": "f_A043",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41031,
   "name": "f_A047",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41035,
   "name": "crt_map_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41074,
   "name": "j_A072",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41085,
   "name": "b_A07D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41127,
   "name": "b_A0A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41128,
   "name": "a_A0A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41129,
   "name": "a_A0A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41135,
   "name": "b_A0AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41146,
   "name": "b_A0BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41153,
   "name": "a_A0C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41166,
   "name": "a_A0CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41211,
   "name": "b_A0FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41218,
   "name": "r_A102",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41219,
   "name": "f_A103",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41225,
   "name": "f_A109",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41247,
   "name": "a_A11F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41248,
   "name": "a_A120",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41249,
   "name": "a_A121",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41250,
   "name": "a_A122",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41251,
   "name": "a_A123",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41252,
   "name": "a_A124",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41253,
   "name": "a_A125",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41254,
   "name": "a_A126",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41255,
   "name": "a_A127",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41256,
   "name": "a_A128",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41257,
   "name": "a_A129",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41258,
   "name": "a_A12A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41259,
   "name": "f_A12B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41272,
   "name": "line_hidden",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41289,
   "name": "b_A149",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41315,
   "name": "a_A163",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41318,
   "name": "b_A166",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41332,
   "name": "r_A174",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41333,
   "name": "line_clip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41348,
   "name": "b_A184",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41361,
   "name": "b_A191",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41373,
   "name": "b_A19D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41376,
   "name": "b_A1A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41385,
   "name": "a_A1A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41388,
   "name": "j_A1AC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41392,
   "name": "j_A1B0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41402,
   "name": "b_A1BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41422,
   "name": "b_A1CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41425,
   "name": "b_A1D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41472,
   "name": "b_A200",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41474,
   "name": "b_A202",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41489,
   "name": "b_A211",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41509,
   "name": "b_A225",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41536,
   "name": "b_A240",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41562,
   "name": "b_A25A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41577,
   "name": "b_A269",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41603,
   "name": "b_A283",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41700,
   "name": "b_A2E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41707,
   "name": "b_A2EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41710,
   "name": "s_A2EE",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 41714,
   "name": "b_A2F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41719,
   "name": "b_A2F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41721,
   "name": "s_A2F9",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 41727,
   "name": "b_A2FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41733,
   "name": "r_A305",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41734,
   "name": "outcode",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41748,
   "name": "b_A314",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41756,
   "name": "b_A31C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41757,
   "name": "a_A31D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41766,
   "name": "b_A326",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41776,
   "name": "b_A330",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41784,
   "name": "b_A338",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41785,
   "name": "a_A339",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41794,
   "name": "b_A342",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41796,
   "name": "b_A344",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41802,
   "name": "r_A34A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41803,
   "name": "swap_ends",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41805,
   "name": "b_A34D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41827,
   "name": "f_A363",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41830,
   "name": "f_A366",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41833,
   "name": "clip_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41857,
   "name": "a_A381",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41870,
   "name": "a_A38E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41881,
   "name": "b_A399",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41889,
   "name": "a_A3A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41902,
   "name": "a_A3AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41913,
   "name": "b_A3B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41925,
   "name": "b_A3C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41943,
   "name": "b_A3D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41949,
   "name": "b_A3DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41964,
   "name": "b_A3EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41984,
   "name": "b_A400",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41990,
   "name": "a_A406",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41991,
   "name": "a_A407",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42019,
   "name": "b_A423",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42038,
   "name": "b_A436",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42055,
   "name": "b_A447",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42072,
   "name": "b_A458",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42079,
   "name": "j_A45F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42093,
   "name": "b_A46D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42109,
   "name": "b_A47D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42114,
   "name": "b_A482",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42122,
   "name": "j_A48A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42146,
   "name": "a_A4A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42151,
   "name": "b_A4A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42159,
   "name": "a_A4AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42164,
   "name": "r_A4B4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42165,
   "name": "pixel_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42187,
   "name": "b_A4CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42189,
   "name": "a_A4CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42193,
   "name": "a_A4D1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42211,
   "name": "plot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42220,
   "name": "a_A4EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42225,
   "name": "line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42239,
   "name": "b_A4FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42255,
   "name": "b_A50F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42288,
   "name": "b_A530",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42300,
   "name": "b_A53C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42313,
   "name": "b_A549",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42315,
   "name": "b_A54B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42327,
   "name": "b_A557",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42359,
   "name": "b_A577",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42360,
   "name": "a_A578",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42362,
   "name": "a_A57A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42372,
   "name": "a_A584",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42380,
   "name": "a_A58C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42401,
   "name": "b_A5A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42403,
   "name": "b_A5A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42421,
   "name": "r_A5B5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42422,
   "name": "b_A5B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42423,
   "name": "a_A5B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42425,
   "name": "a_A5B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42435,
   "name": "a_A5C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42443,
   "name": "a_A5CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42462,
   "name": "b_A5DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42464,
   "name": "b_A5E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42482,
   "name": "j_A5F2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42483,
   "name": "a_A5F3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42485,
   "name": "a_A5F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42511,
   "name": "r_A60F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42512,
   "name": "j_A610",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42521,
   "name": "b_A619",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42533,
   "name": "b_A625",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42558,
   "name": "b_A63E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42559,
   "name": "a_A63F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42561,
   "name": "a_A641",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42571,
   "name": "a_A64B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42579,
   "name": "a_A653",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42598,
   "name": "b_A666",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42616,
   "name": "b_A678",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42620,
   "name": "b_A67C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42621,
   "name": "a_A67D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42623,
   "name": "a_A67F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42633,
   "name": "a_A689",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42641,
   "name": "a_A691",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42660,
   "name": "b_A6A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42676,
   "name": "b_A6B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42680,
   "name": "r_A6B8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42681,
   "name": "j_A6B9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42700,
   "name": "b_A6CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42714,
   "name": "b_A6DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42721,
   "name": "b_A6E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42722,
   "name": "a_A6E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42734,
   "name": "b_A6EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42735,
   "name": "a_A6EF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42737,
   "name": "a_A6F1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42744,
   "name": "a_A6F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42764,
   "name": "b_A70C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42783,
   "name": "b_A71F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42788,
   "name": "b_A724",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42793,
   "name": "b_A729",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42794,
   "name": "a_A72A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42796,
   "name": "a_A72C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42803,
   "name": "a_A733",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42823,
   "name": "b_A747",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42824,
   "name": "b_A748",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42842,
   "name": "b_A75A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42847,
   "name": "j_A75F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42862,
   "name": "b_A76E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42876,
   "name": "b_A77C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42883,
   "name": "b_A783",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42884,
   "name": "a_A784",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42896,
   "name": "b_A790",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42897,
   "name": "a_A791",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42899,
   "name": "a_A793",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42906,
   "name": "a_A79A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42930,
   "name": "b_A7B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42946,
   "name": "b_A7C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42951,
   "name": "b_A7C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42957,
   "name": "a_A7CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42959,
   "name": "a_A7CF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42966,
   "name": "a_A7D6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42988,
   "name": "b_A7EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42989,
   "name": "b_A7ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43005,
   "name": "b_A7FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43010,
   "name": "set_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43011,
   "name": "a_A803",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43051,
   "name": "r_A82B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43052,
   "name": "fill_sky",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43054,
   "name": "j_A82E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 43076,
   "name": "b_A844",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43167,
   "name": "b_A89F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43169,
   "name": "b_A8A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43217,
   "name": "b_A8D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43223,
   "name": "r_A8D7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43224,
   "name": "keyboard",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43242,
   "name": "b_A8EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43246,
   "name": "b_A8EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43256,
   "name": "b_A8F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43271,
   "name": "b_A907",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43294,
   "name": "b_A91E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43296,
   "name": "b_A920",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43302,
   "name": "f_A926",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43366,
   "name": "a_A966",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43367,
   "name": "a_A967",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43368,
   "name": "a_A968",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43369,
   "name": "a_A969",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43370,
   "name": "a_A96A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43371,
   "name": "a_A96B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43372,
   "name": "a_A96C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43373,
   "name": "a_A96D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43374,
   "name": "a_A96E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43375,
   "name": "a_A96F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43376,
   "name": "a_A970",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43377,
   "name": "a_A971",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43378,
   "name": "a_A972",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43379,
   "name": "f_A973",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43395,
   "name": "r_A983",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43396,
   "name": "target_pick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43416,
   "name": "b_A998",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43457,
   "name": "b_A9C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43480,
   "name": "b_A9D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43489,
   "name": "b_A9E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43506,
   "name": "j_A9F2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 43525,
   "name": "b_AA05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43555,
   "name": "b_AA23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43621,
   "name": "r_AA65",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43622,
   "name": "target_lock",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43645,
   "name": "b_AA7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43652,
   "name": "b_AA84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43655,
   "name": "target_view",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43666,
   "name": "b_AA92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43683,
   "name": "b_AAA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43850,
   "name": "b_AB4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43862,
   "name": "b_AB56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43866,
   "name": "b_AB5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43903,
   "name": "b_AB7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43915,
   "name": "b_AB8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44107,
   "name": "b_AC4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44114,
   "name": "crt_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44120,
   "name": "s_AC58",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44122,
   "name": "b_AC5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44144,
   "name": "s_AC70",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44146,
   "name": "b_AC72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44176,
   "name": "s_AC90",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44179,
   "name": "s_AC93",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44182,
   "name": "j_AC96",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44185,
   "name": "j_AC99",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44188,
   "name": "j_AC9C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44191,
   "name": "j_AC9F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44194,
   "name": "j_ACA2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44197,
   "name": "j_ACA5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44200,
   "name": "launch",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44206,
   "name": "b_ACAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44267,
   "name": "a_ACEB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44321,
   "name": "b_AD21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44335,
   "name": "b_AD2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44371,
   "name": "f_AD53",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44372,
   "name": "wing_sprites_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44374,
   "name": "f_AD56",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44375,
   "name": "wing_sprites_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44378,
   "name": "b_AD5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44390,
   "name": "b_AD66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44396,
   "name": "b_AD6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44402,
   "name": "b_AD72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44403,
   "name": "b_AD73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44408,
   "name": "b_AD78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44411,
   "name": "b_AD7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44417,
   "name": "s_AD81",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44425,
   "name": "missile_box",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44477,
   "name": "b_ADBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44488,
   "name": "b_ADC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44508,
   "name": "b_ADDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44510,
   "name": "b_ADDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44521,
   "name": "j_ADE9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44530,
   "name": "f_ADF2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44538,
   "name": "f_ADFA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44546,
   "name": "f_AE02",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44554,
   "name": "f_AE0A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44562,
   "name": "f_AE12",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44570,
   "name": "a_AE1A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44571,
   "name": "a_AE1B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44572,
   "name": "missiles",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44604,
   "name": "b_AE3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44614,
   "name": "b_AE46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44625,
   "name": "j_AE51",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44636,
   "name": "b_AE5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44650,
   "name": "b_AE6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44671,
   "name": "b_AE7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44684,
   "name": "b_AE8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44693,
   "name": "b_AE95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44709,
   "name": "b_AEA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44736,
   "name": "b_AEC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44756,
   "name": "b_AED4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44778,
   "name": "b_AEEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44789,
   "name": "b_AEF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44813,
   "name": "b_AF0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44824,
   "name": "j_AF18",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44826,
   "name": "j_AF1A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44882,
   "name": "b_AF52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44896,
   "name": "b_AF60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44904,
   "name": "b_AF68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44911,
   "name": "b_AF6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44974,
   "name": "b_AFAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44994,
   "name": "b_AFC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45028,
   "name": "b_AFE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45031,
   "name": "b_AFE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45046,
   "name": "b_AFF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45066,
   "name": "b_B00A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45075,
   "name": "b_B013",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45110,
   "name": "b_B036",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45124,
   "name": "b_B044",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45147,
   "name": "b_B05B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45157,
   "name": "j_B065",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45167,
   "name": "b_B06F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45173,
   "name": "b_B075",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45190,
   "name": "b_B086",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45200,
   "name": "j_B090",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45229,
   "name": "b_B0AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45252,
   "name": "b_B0C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45253,
   "name": "b_B0C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45282,
   "name": "b_B0E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45299,
   "name": "j_B0F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45327,
   "name": "b_B10F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45344,
   "name": "j_B120",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45372,
   "name": "b_B13C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45380,
   "name": "b_B144",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45383,
   "name": "b_B147",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45398,
   "name": "b_B156",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45402,
   "name": "b_B15A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45416,
   "name": "b_B168",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45422,
   "name": "b_B16E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45437,
   "name": "b_B17D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45441,
   "name": "b_B181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45455,
   "name": "b_B18F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45461,
   "name": "b_B195",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45476,
   "name": "b_B1A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45482,
   "name": "b_B1AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45496,
   "name": "b_B1B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45504,
   "name": "b_B1C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45532,
   "name": "b_B1DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45546,
   "name": "b_B1EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45571,
   "name": "b_B203",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45585,
   "name": "b_B211",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45606,
   "name": "b_B226",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45631,
   "name": "b_B23F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45639,
   "name": "b_B247",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45678,
   "name": "b_B26E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45687,
   "name": "b_B277",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45719,
   "name": "b_B297",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45732,
   "name": "j_B2A4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45779,
   "name": "b_B2D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45786,
   "name": "j_B2DA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45799,
   "name": "b_B2E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45809,
   "name": "j_B2F1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45858,
   "name": "b_B322",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45864,
   "name": "b_B328",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45869,
   "name": "b_B32D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45896,
   "name": "b_B348",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45906,
   "name": "b_B352",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45912,
   "name": "j_B358",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45927,
   "name": "b_B367",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45937,
   "name": "r_B371",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45938,
   "name": "target_unit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45945,
   "name": "b_B379",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45963,
   "name": "b_B38B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45970,
   "name": "b_B392",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45973,
   "name": "b_B395",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45977,
   "name": "near_target",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46011,
   "name": "b_B3BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46014,
   "name": "target_delta",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46030,
   "name": "b_B3CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46050,
   "name": "b_B3E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46076,
   "name": "b_B3FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46078,
   "name": "b_B3FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46108,
   "name": "b_B41C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46129,
   "name": "b_B431",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46150,
   "name": "b_B446",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46160,
   "name": "b_B450",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46166,
   "name": "b_B456",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46172,
   "name": "b_B45C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46192,
   "name": "b_B470",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46198,
   "name": "b_B476",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46206,
   "name": "b_B47E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46220,
   "name": "b_B48C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46226,
   "name": "b_B492",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46257,
   "name": "b_B4B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46264,
   "name": "s_B4B8",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46272,
   "name": "s_B4C0",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46302,
   "name": "free_slot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46304,
   "name": "b_B4E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46316,
   "name": "b_B4EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46327,
   "name": "free_missile",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46339,
   "name": "s_B503",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46350,
   "name": "f_B50E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46354,
   "name": "f_B512",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46370,
   "name": "missile_side_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46435,
   "name": "missile_fore_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46500,
   "name": "f_B5A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46516,
   "name": "f_B5B4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46522,
   "name": "f_B5BA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46528,
   "name": "f_B5C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46534,
   "name": "f_B5C6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46540,
   "name": "f_B5CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46546,
   "name": "f_B5D2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46552,
   "name": "f_B5D8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46558,
   "name": "f_B5DE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46564,
   "name": "f_B5E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46570,
   "name": "place_decoy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46607,
   "name": "radar_add",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46609,
   "name": "b_B611",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46622,
   "name": "b_B61E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46632,
   "name": "radar_remove",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46634,
   "name": "b_B62A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46649,
   "name": "b_B639",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46657,
   "name": "radar_scope",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46674,
   "name": "b_B652",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46682,
   "name": "b_B65A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46699,
   "name": "a_B66B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46700,
   "name": "a_B66C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46701,
   "name": "b_B66D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46729,
   "name": "b_B689",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46775,
   "name": "b_B6B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46800,
   "name": "b_B6D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46812,
   "name": "b_B6DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46840,
   "name": "b_B6F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46874,
   "name": "f_B71A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46876,
   "name": "s_B71C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46908,
   "name": "b_B73C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46922,
   "name": "scope_dot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46994,
   "name": "r_B792",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46995,
   "name": "b_B793",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47024,
   "name": "b_B7B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47029,
   "name": "b_B7B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47064,
   "name": "a_B7D8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47078,
   "name": "s_B7E6",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47088,
   "name": "b_B7F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47115,
   "name": "b_B80B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47140,
   "name": "b_B824",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47164,
   "name": "b_B83C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47180,
   "name": "f_B84C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47182,
   "name": "f_B84E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47184,
   "name": "f_B850",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47211,
   "name": "f_B86B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47238,
   "name": "f_B886",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47274,
   "name": "f_B8AA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47310,
   "name": "f_B8CE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47346,
   "name": "f_B8F2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47356,
   "name": "a_B8FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47360,
   "name": "j_B900",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47363,
   "name": "j_B903",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47366,
   "name": "s_B906",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47369,
   "name": "j_B909",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47372,
   "name": "j_B90C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47375,
   "name": "j_B90F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47378,
   "name": "j_B912",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47381,
   "name": "s_B915",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47387,
   "name": "dials",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 47435,
   "name": "j_B94B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47440,
   "name": "b_B950",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47450,
   "name": "b_B95A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47459,
   "name": "b_B963",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47473,
   "name": "b_B971",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47485,
   "name": "b_B97D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47532,
   "name": "b_B9AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47553,
   "name": "b_B9C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47560,
   "name": "j_B9C8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47574,
   "name": "b_B9D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47577,
   "name": "b_B9D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47580,
   "name": "j_B9DC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47587,
   "name": "r_B9E3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47588,
   "name": "b_B9E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47631,
   "name": "b_BA0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47634,
   "name": "b_BA12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47654,
   "name": "b_BA26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47657,
   "name": "j_BA29",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47681,
   "name": "b_BA41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47684,
   "name": "j_BA44",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47723,
   "name": "b_BA6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47726,
   "name": "j_BA6E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47733,
   "name": "b_BA75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47746,
   "name": "b_BA82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47754,
   "name": "b_BA8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47760,
   "name": "b_BA90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47774,
   "name": "j_BA9E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47781,
   "name": "b_BAA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47794,
   "name": "b_BAB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47805,
   "name": "b_BABD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47822,
   "name": "j_BACE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47829,
   "name": "b_BAD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47842,
   "name": "b_BAE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47850,
   "name": "b_BAEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47856,
   "name": "b_BAF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47870,
   "name": "j_BAFE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47877,
   "name": "b_BB05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47890,
   "name": "b_BB12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47901,
   "name": "b_BB1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47918,
   "name": "s_BB2E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47946,
   "name": "f_BB4A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47950,
   "name": "f_BB4E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47954,
   "name": "f_BB52",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47958,
   "name": "f_BB56",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47962,
   "name": "f_BB5A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47966,
   "name": "f_BB5E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47988,
   "name": "f_BB74",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48010,
   "name": "f_BB8A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48032,
   "name": "f_BBA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48053,
   "name": "f_BBB5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48075,
   "name": "needle_line_for_angle",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48140,
   "name": "f_BC0C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48144,
   "name": "f_BC10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48166,
   "name": "f_BC26",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48188,
   "name": "f_BC3C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48192,
   "name": "f_BC40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48196,
   "name": "f_BC44",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48200,
   "name": "f_BC48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48212,
   "name": "f_BC54",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48216,
   "name": "f_BC58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48220,
   "name": "j_BC5C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48228,
   "name": "b_BC64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48243,
   "name": "b_BC73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48257,
   "name": "b_BC81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48273,
   "name": "b_BC91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48278,
   "name": "b_BC96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48294,
   "name": "f_BCA6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48302,
   "name": "f_BCAE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48334,
   "name": "attitude",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48351,
   "name": "b_BCDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48393,
   "name": "b_BD09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48394,
   "name": "j_BD0A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48422,
   "name": "b_BD26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48424,
   "name": "j_BD28",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48454,
   "name": "b_BD46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48457,
   "name": "j_BD49",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48482,
   "name": "b_BD62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48519,
   "name": "b_BD87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48521,
   "name": "b_BD89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48546,
   "name": "b_BDA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48548,
   "name": "j_BDA4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48554,
   "name": "j_BDAA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48561,
   "name": "b_BDB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48580,
   "name": "b_BDC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48586,
   "name": "j_BDCA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48589,
   "name": "b_BDCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48599,
   "name": "b_BDD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48601,
   "name": "j_BDD9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48614,
   "name": "b_BDE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48659,
   "name": "s_BE13",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 48680,
   "name": "b_BE28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48700,
   "name": "b_BE3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48720,
   "name": "b_BE50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48744,
   "name": "j_BE68",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48768,
   "name": "f_BE80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48774,
   "name": "f_BE86",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48785,
   "name": "f_BE91",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48810,
   "name": "f_BEAA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48835,
   "name": "f_BEC3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48900,
   "name": "bar_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48925,
   "name": "b_BF1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48967,
   "name": "b_BF47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48989,
   "name": "j_BF5D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49064,
   "name": "a_BFA8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49066,
   "name": "a_BFAA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49070,
   "name": "a_BFAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49074,
   "name": "a_BFB2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49076,
   "name": "b_BFB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49113,
   "name": "b_BFD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49124,
   "name": "b_BFE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49147,
   "name": "b_BFFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49171,
   "name": "b_C013",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49180,
   "name": "f_C01C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49181,
   "name": "a_C01D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49182,
   "name": "a_C01E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49183,
   "name": "a_C01F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49184,
   "name": "f_C020",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49185,
   "name": "a_C021",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49186,
   "name": "a_C022",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49187,
   "name": "a_C023",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49188,
   "name": "a_C024",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49189,
   "name": "a_C025",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49190,
   "name": "a_C026",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49191,
   "name": "a_C027",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49192,
   "name": "a_C028",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49193,
   "name": "gauges",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49201,
   "name": "j_C031",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49219,
   "name": "b_C043",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49228,
   "name": "b_C04C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49236,
   "name": "b_C054",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49239,
   "name": "j_C057",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49321,
   "name": "a_C0A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49327,
   "name": "b_C0AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49363,
   "name": "b_C0D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49373,
   "name": "j_C0DD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49380,
   "name": "b_C0E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49385,
   "name": "f_C0E9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49392,
   "name": "f_C0F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49399,
   "name": "f_C0F7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49403,
   "name": "f_C0FB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49410,
   "name": "print_crt_number",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49436,
   "name": "b_C11C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49439,
   "name": "j_C11F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49456,
   "name": "j_C130",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49474,
   "name": "j_C142",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49490,
   "name": "j_C152",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49506,
   "name": "print_bearing",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49560,
   "name": "b_C198",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49598,
   "name": "b_C1BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49608,
   "name": "j_C1C8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49613,
   "name": "print_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49623,
   "name": "b_C1D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49629,
   "name": "b_C1DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49631,
   "name": "b_C1DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49666,
   "name": "b_C202",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49695,
   "name": "b_C21F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49704,
   "name": "b_C228",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49744,
   "name": "a_C250",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49752,
   "name": "j_C258",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49773,
   "name": "b_C26D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49776,
   "name": "b_C270",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49794,
   "name": "b_C282",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49800,
   "name": "a_C288",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49801,
   "name": "a_C289",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49804,
   "name": "j_C28C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49818,
   "name": "b_C29A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49826,
   "name": "b_C2A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49846,
   "name": "a_C2B6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49852,
   "name": "a_C2BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49861,
   "name": "a_C2C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49862,
   "name": "a_C2C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49867,
   "name": "a_C2CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49884,
   "name": "a_C2DC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49885,
   "name": "a_C2DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49890,
   "name": "a_C2E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49895,
   "name": "b_C2E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49919,
   "name": "b_C2FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49924,
   "name": "f_C304",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49930,
   "name": "figure_masks_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49938,
   "name": "f_C312",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49959,
   "name": "figure_masks_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49967,
   "name": "f_C32F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49988,
   "name": "figure_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50060,
   "name": "f_C38C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50073,
   "name": "f_C399",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50078,
   "name": "f_C39E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50083,
   "name": "a_C3A3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50084,
   "name": "a_C3A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50085,
   "name": "a_C3A5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50086,
   "name": "a_C3A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50087,
   "name": "f_C3A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50151,
   "name": "f_C3E7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50155,
   "name": "f_C3EB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50160,
   "name": "row_addr_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50360,
   "name": "row_addr_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50432,
   "name": "f_C500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50560,
   "name": "reciprocals",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50688,
   "name": "sine",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50944,
   "name": "arctangent",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51200,
   "name": "map_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51256,
   "name": "f_C838",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51456,
   "name": "map_units_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51664,
   "name": "map_terrain_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52224,
   "name": "map_terrain_font2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53080,
   "name": "f_CF58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 53312,
   "name": "panelB_row13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53632,
   "name": "panelB_row14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53952,
   "name": "panelB_row15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54072,
   "name": "f_D338",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 54272,
   "name": "panelB_row16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54392,
   "name": "f_D478",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 54592,
   "name": "panelB_row17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54712,
   "name": "f_D5B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 54912,
   "name": "panelB_row18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55032,
   "name": "f_D6F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55232,
   "name": "panelB_row19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "f_D800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55340,
   "name": "a_D82C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55352,
   "name": "f_D838",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55552,
   "name": "panelB_row20",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55672,
   "name": "f_D978",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55808,
   "name": "f_DA00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55871,
   "name": "f_DA3F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55872,
   "name": "panelB_row21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55911,
   "name": "f_DA67",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55951,
   "name": "f_DA8F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55991,
   "name": "f_DAB7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56031,
   "name": "f_DADF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56064,
   "name": "f_DB00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56071,
   "name": "f_DB07",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56111,
   "name": "f_DB2F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56192,
   "name": "panelB_row22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56488,
   "name": "a_DCA8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56512,
   "name": "panelB_row23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56832,
   "name": "panelB_row24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57152,
   "name": "heli_outlines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57216,
   "name": "rotor_frames",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57240,
   "name": "f_DF98",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57280,
   "name": "f_DFC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57856,
   "name": "unit_bits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58112,
   "name": "f_E300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58132,
   "name": "f_E314",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58152,
   "name": "f_E328",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58172,
   "name": "map_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58368,
   "name": "f_E400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58372,
   "name": "f_E404",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58376,
   "name": "f_E408",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58380,
   "name": "joystick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58420,
   "name": "b_E434",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58427,
   "name": "r_E43B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58428,
   "name": "unit_read",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58489,
   "name": "r_E479",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58490,
   "name": "unit_write",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58545,
   "name": "r_E4B1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58546,
   "name": "bearing",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58561,
   "name": "b_E4C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58576,
   "name": "b_E4D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58592,
   "name": "b_E4E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58594,
   "name": "b_E4E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58608,
   "name": "b_E4F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58611,
   "name": "b_E4F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58619,
   "name": "b_E4FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58628,
   "name": "b_E504",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58634,
   "name": "KERNAL_PLOTj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 58644,
   "name": "b_E514",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58658,
   "name": "b_E522",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58678,
   "name": "b_E536",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58692,
   "name": "b_E544",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58707,
   "name": "b_E553",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58712,
   "name": "b_E558",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58717,
   "name": "f_E55D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58781,
   "name": "bearing_angles_more",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58845,
   "name": "s_E5DD",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 58859,
   "name": "s_E5EB",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 58876,
   "name": "s_E5FC",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 58881,
   "name": "s_E601",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 58905,
   "name": "b_E619",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58942,
   "name": "b_E63E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58962,
   "name": "r_E652",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58963,
   "name": "s_E653",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 58976,
   "name": "r_E660",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58977,
   "name": "challenge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 58983,
   "name": "r_E667",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 58984,
   "name": "b_E668",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59010,
   "name": "b_E682",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59024,
   "name": "b_E690",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59038,
   "name": "b_E69E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59040,
   "name": "b_E6A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59069,
   "name": "b_E6BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59075,
   "name": "b_E6C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59084,
   "name": "b_E6CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59104,
   "name": "b_E6E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59119,
   "name": "b_E6EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59130,
   "name": "j_E6FA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59134,
   "name": "j_E6FE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59141,
   "name": "b_E705",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59158,
   "name": "b_E716",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59161,
   "name": "b_E719",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59164,
   "name": "b_E71C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59181,
   "name": "b_E72D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59191,
   "name": "j_E737",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59201,
   "name": "f_E741",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59217,
   "name": "get_key",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59228,
   "name": "b_E75C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59243,
   "name": "r_E76B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 60408,
   "name": "a_EBF8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60409,
   "name": "a_EBF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60416,
   "name": "sound_effects",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60432,
   "name": "sfx_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60469,
   "name": "sfx_cannon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60491,
   "name": "sfx_release",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60507,
   "name": "sfx_missile_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60529,
   "name": "sfx_jammer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60540,
   "name": "a_EC7C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60545,
   "name": "sfx_hit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60561,
   "name": "sfx_launch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60572,
   "name": "a_EC9C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60578,
   "name": "a_ECA2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60589,
   "name": "sfx_explosion",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60605,
   "name": "sfx_blip",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60607,
   "name": "a_ECBF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60624,
   "name": "sfx_starter",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60672,
   "name": "sprite_ladder",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60736,
   "name": "sprite_slip",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60800,
   "name": "sprite_waypoint",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60864,
   "name": "sprite_cross",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60936,
   "name": "panel_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61031,
   "name": "f_EE67",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61071,
   "name": "f_EE8F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61111,
   "name": "f_EEB7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61151,
   "name": "f_EEDF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61191,
   "name": "f_EF07",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61231,
   "name": "f_EF2F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61290,
   "name": "f_EF6A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61291,
   "name": "f_EF6B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61292,
   "name": "f_EF6C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61293,
   "name": "f_EF6D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61294,
   "name": "f_EF6E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61332,
   "name": "a_EF94",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61432,
   "name": "f_EFF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61433,
   "name": "a_EFF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61434,
   "name": "a_EFFA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61440,
   "name": "sprite_empty",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61504,
   "name": "panelA_row13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61824,
   "name": "panelA_row14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62144,
   "name": "panelA_row15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62264,
   "name": "f_F338",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62464,
   "name": "panelA_row16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62584,
   "name": "f_F478",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62626,
   "name": "a_F4A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62784,
   "name": "panelA_row17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62904,
   "name": "f_F5B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63104,
   "name": "panelA_row18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63224,
   "name": "f_F6F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63424,
   "name": "panelA_row19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63544,
   "name": "f_F838",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63744,
   "name": "panelA_row20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63864,
   "name": "f_F978",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64064,
   "name": "panelA_row21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64384,
   "name": "panelA_row22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64704,
   "name": "panelA_row23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65024,
   "name": "panelA_row24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65449,
   "name": "a_FFA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 65466,
   "name": "KERNAL_SETLFS",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65469,
   "name": "KERNAL_SETNAM",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65493,
   "name": "KERNAL_LOAD",
   "type": "Predefined",
   "kind": "system"
  }
 ],
 "comments": [
  {
   "address": 2049,
   "type": "line",
   "text": "Line 0: REM, five DEL characters and a shifted L, the guard five of the game's six BASIC programs start with (all but B; BEGIN's is line 1): LIST rubs out \"0 REM\" and stops with ?SYNTAX ERROR at the shifted L."
  },
  {
   "address": 2066,
   "type": "line",
   "text": "Line 1 turns off CIA 1's interrupts (56333) and RESTORE (the NMI vector to $FEC1, an RTI), lowers BASIC's top to $1300, below the engine's tables at $1400, and clears the variables. Line 2 is the program: the constants (19000), the flight's variables (900), the flight (15000), then the disk turned for the debriefing (1000)."
  },
  {
   "address": 2143,
   "type": "line",
   "text": "Line 7 writes ZV as a word, low byte first, to the engine's variable V: zero-page address V in the copy at $3F00 (SV). Line 8 reads one back into ZV; nothing calls it."
  },
  {
   "address": 2234,
   "type": "line",
   "text": "Lines 10 and 11 copy L pages from page F to page T with the helper at $8014 (M6). Nothing calls them, and line 2's F, $8100, is not a page number."
  },
  {
   "address": 2308,
   "type": "line",
   "text": "Line 900 clears $3F00-$3FFF, the engine's zero page, with the helper at $8029 (SB). Line 905 names the SID, the stores at $53D8 (OD) and the units at $5100 (EN); line 920 copies the six stores counts from the front end's record at $0350 into $53D8-$53DD. Lines 930-936 copy words of that record ($033C on) into the engine's variables named by the DATA, through line 990: line 931 puts words 1-9 at $7C (night), $7F (3 less the enemy's quality), the words $70 and $72 (the two tanks' fuel), $4B (the flying realism times 2 plus the landings'), $4C (the style plus 1, or 0 in training), $39 (the heat) and $4F and $50 (the wind)."
  },
  {
   "address": 2527,
   "type": "line",
   "text": "Lines 940 and 941: the waypoint, engine words $76 and $78, is put on the first unit of the primary target ($53E1 gives its number): the high bytes of that unit's x and y times 256."
  },
  {
   "address": 2596,
   "type": "line",
   "text": "Lines 950-955 colour the cockpit window: DATA sets 0 to the theatre's number ($035E), or all six at night ($033E), each passed to the helper at $8099, so the last one read stays. A set is the window's colour-RAM colour, its two screen colours, and its background, which also goes to zpa_C4 and to four of the picture's colour cells below the window's corners."
  },
  {
   "address": 2729,
   "type": "line",
   "text": "A false label in line 955's DATA: the BIT at $7981 hides an LDA #$0A and names this address by chance."
  },
  {
   "address": 2745,
   "type": "line",
   "text": "Line 989 ends line 900's subroutine. Lines 990-993 copy one word of the front end's record ($033C + 2I) to the engine's variable read from DATA; a number of 256 or more is a word at that number less 256, written by line 7, else one byte."
  },
  {
   "address": 2836,
   "type": "line",
   "text": "Lines 1000-1062, after the flight: the drive is asked to initialise (\"i0:\") until it finds side 2 again, asking for it back side up and waiting for fire; then LOAD \"b\",8,1 is printed with a RETURN in the keyboard buffer and NEW, so BASIC loads the debriefing."
  },
  {
   "address": 3100,
   "type": "line",
   "text": "Lines 15000-15003 start the flight: border black, screen off, the mission bits at $7043 from the front end's $03B4, the SID's voice 2 sustain set; the cockpit picture's colours copied from $4000 to colour RAM, the second window bitmap from $6000 to $4000. Then the STOP vector goes back to the KERNAL's $F6ED and LOAD \"awh\" runs: AWH's few bytes overwrite the stack, so the LOAD returns into the engine at $3100."
  },
  {
   "address": 3282,
   "type": "line",
   "text": "Line 16000 runs when the engine returns: colour RAM copied back to $4000 (SYS MVB, read as MV, since BASIC keeps two letters of a name). Line 16001 turns the border and background white and the SID's volume off."
  },
  {
   "address": 3364,
   "type": "line",
   "text": "Lines 19000-19004, the constants: FNLB gives a word's low byte; SB, MV, BM, KE, S6 and M6 are the helpers in $8000-$80E2; A0-A6 their parameter bytes $A5-$AB; KP and KK 256 and 65536; SV the engine's zero page at $3F00."
  },
  {
   "address": 3538,
   "type": "line",
   "text": "The program's end, then 161 bytes the file still holds: tokenised lines of the side 2 loader (POKE A0... SYS KE, its SETNAM and LOAD calls). BASIC's variables start after them, at $0E75."
  },
  {
   "address": 5120,
   "type": "line",
   "text": "The points' sideways offsets from the eye, low bytes: room for 151 points, the theatre's (113 in Western Europe's file, $1C36) and after them those made as fractions of others (rotate_points)."
  },
  {
   "address": 5271,
   "type": "line",
   "text": "The points' sideways offsets, high bytes."
  },
  {
   "address": 5422,
   "type": "line",
   "text": "The points' up-down offsets from the eye, low bytes."
  },
  {
   "address": 5573,
   "type": "line",
   "text": "The points' up-down offsets, high bytes."
  },
  {
   "address": 5724,
   "type": "line",
   "text": "The points' distances ahead of the eye, low bytes."
  },
  {
   "address": 5875,
   "type": "line",
   "text": "The points' distances ahead, high bytes."
  },
  {
   "address": 6026,
   "type": "line",
   "text": "Each x value turned by the heading and pitch (rotate_axes): its sideways part, low bytes, room for 29."
  },
  {
   "address": 6055,
   "type": "line",
   "text": "The x values' sideways parts, high bytes."
  },
  {
   "address": 6084,
   "type": "line",
   "text": "The x values' parts ahead, low bytes."
  },
  {
   "address": 6113,
   "type": "line",
   "text": "The x values' parts ahead, high bytes."
  },
  {
   "address": 6142,
   "type": "line",
   "text": "The x values' up-down parts, low bytes."
  },
  {
   "address": 6171,
   "type": "line",
   "text": "The x values' up-down parts, high bytes."
  },
  {
   "address": 6200,
   "type": "line",
   "text": "Each y value turned by the heading and pitch: its sideways part, low bytes, room for 35."
  },
  {
   "address": 6235,
   "type": "line",
   "text": "The y values' sideways parts, high bytes."
  },
  {
   "address": 6270,
   "type": "line",
   "text": "The y values' parts ahead, low bytes."
  },
  {
   "address": 6305,
   "type": "line",
   "text": "The y values' parts ahead, high bytes."
  },
  {
   "address": 6340,
   "type": "line",
   "text": "The y values' up-down parts, low bytes."
  },
  {
   "address": 6375,
   "type": "line",
   "text": "The y values' up-down parts, high bytes."
  },
  {
   "address": 6410,
   "type": "line",
   "text": "Each height turned by the pitch: its part ahead, low bytes, room for 21."
  },
  {
   "address": 6431,
   "type": "line",
   "text": "The heights' parts ahead, high bytes."
  },
  {
   "address": 6452,
   "type": "line",
   "text": "The heights' up-down parts, which are the heights themselves, less the eye's height for a place on the map; low bytes."
  },
  {
   "address": 6473,
   "type": "line",
   "text": "The heights' up-down parts, high bytes."
  },
  {
   "address": 6494,
   "type": "line",
   "text": "The object being drawn, in eye space: its points' sideways offsets, low bytes, up to 19 points. Entries 19 and 20 are the clipper's two ends of an edge."
  },
  {
   "address": 6513,
   "type": "line",
   "text": "The clipper's first end of an edge: sideways offset, low byte (s_8CE9)."
  },
  {
   "address": 6514,
   "type": "line",
   "text": "The clipper's second end: sideways offset, low byte."
  },
  {
   "address": 6515,
   "type": "line",
   "text": "The object's points' sideways offsets, high bytes."
  },
  {
   "address": 6534,
   "type": "line",
   "text": "The clipper's first end: sideways offset, high byte."
  },
  {
   "address": 6535,
   "type": "line",
   "text": "The clipper's second end: sideways offset, high byte."
  },
  {
   "address": 6536,
   "type": "line",
   "text": "The object's points' up-down offsets, low bytes."
  },
  {
   "address": 6555,
   "type": "line",
   "text": "The clipper's first end: up-down offset, low byte."
  },
  {
   "address": 6556,
   "type": "line",
   "text": "The clipper's second end: up-down offset, low byte."
  },
  {
   "address": 6557,
   "type": "line",
   "text": "The object's points' up-down offsets, high bytes."
  },
  {
   "address": 6576,
   "type": "line",
   "text": "The clipper's first end: up-down offset, high byte."
  },
  {
   "address": 6577,
   "type": "line",
   "text": "The clipper's second end: up-down offset, high byte."
  },
  {
   "address": 6578,
   "type": "line",
   "text": "The object's points' distances ahead, low bytes."
  },
  {
   "address": 6597,
   "type": "line",
   "text": "The clipper's first end: distance, low byte."
  },
  {
   "address": 6598,
   "type": "line",
   "text": "The clipper's second end: distance, low byte."
  },
  {
   "address": 6599,
   "type": "line",
   "text": "The object's points' distances ahead, high bytes; bit 7 set marks a point behind the eye."
  },
  {
   "address": 6618,
   "type": "line",
   "text": "The clipper's first end: distance, high byte."
  },
  {
   "address": 6619,
   "type": "line",
   "text": "The clipper's second end: distance, high byte."
  },
  {
   "address": 6620,
   "type": "line",
   "text": "The object's points on the screen: x, low bytes, 20 entries (perspective), with the window's middle added."
  },
  {
   "address": 6640,
   "type": "line",
   "text": "The points' screen x, high bytes."
  },
  {
   "address": 6660,
   "type": "line",
   "text": "The points' screen y, low bytes, 0 at the window's top."
  },
  {
   "address": 6680,
   "type": "line",
   "text": "The points' screen y, high bytes."
  },
  {
   "address": 6700,
   "type": "line",
   "text": "The points' sideways offsets divided by their distances, low bytes, before the roll is applied."
  },
  {
   "address": 6720,
   "type": "line",
   "text": "The points' sideways offsets over their distances, high bytes."
  },
  {
   "address": 6740,
   "type": "line",
   "text": "The points' up-down offsets divided by their distances, low bytes."
  },
  {
   "address": 6760,
   "type": "line",
   "text": "The points' up-down offsets over their distances, high bytes."
  },
  {
   "address": 6780,
   "type": "line",
   "text": "One byte for each face of the shape being drawn, up to ten: not 0 when it faces the eye. An edge is drawn when either of its two faces is."
  },
  {
   "address": 6790,
   "type": "line",
   "text": "The theatre's map, from W3.<theatre>: 16 by 16 squares, a byte each, numbered as the units' squares are (row in the high nibble, column in the low); the byte is the square's terrain, 1 to 32, which picks its fixed object and its switchable ones ($1DD7 on), and 0 off the map's edge."
  },
  {
   "address": 7046,
   "type": "line",
   "text": "The x values' last entry, 28 in Western Europe's file."
  },
  {
   "address": 7047,
   "type": "line",
   "text": "How many x values, less one, from the last down, the view's rotation turns: 23, entries 28 to 5. Entries 0-4 are the Hind's own shape, turned again by its heading (view_frame)."
  },
  {
   "address": 7048,
   "type": "line",
   "text": "The x values, low bytes, 29: entries 0-4 the Hind's shape, 5 the Hind's place, 6-11 the missiles' places, 12 on the theatre's own coordinates."
  },
  {
   "address": 7053,
   "type": "line",
   "text": "x value 5, low byte: the Hind's x within its square, set each frame by view_squares."
  },
  {
   "address": 7054,
   "type": "line",
   "text": "x values 6 on, low bytes: the six missiles' x (view_squares), then the theatre's values."
  },
  {
   "address": 7077,
   "type": "line",
   "text": "The x values, high bytes: entries 0-4, the Hind's shape."
  },
  {
   "address": 7082,
   "type": "line",
   "text": "x value 5, high byte: the Hind's."
  },
  {
   "address": 7083,
   "type": "line",
   "text": "x values 6 on, high bytes."
  },
  {
   "address": 7106,
   "type": "line",
   "text": "The y values' last entry, 34."
  },
  {
   "address": 7107,
   "type": "line",
   "text": "How many y values, less one, the view's rotation turns: 28, entries 34 to 6; entries 0-5 are the Hind's shape."
  },
  {
   "address": 7108,
   "type": "line",
   "text": "The y values, low bytes, 35: entries 0-5 the Hind's shape, 6 the Hind's place, 7-12 the missiles', 13 on the theatre's."
  },
  {
   "address": 7114,
   "type": "line",
   "text": "y value 6, low byte: the Hind's y within its square."
  },
  {
   "address": 7115,
   "type": "line",
   "text": "y values 7 on, low bytes: the missiles' y, then the theatre's values."
  },
  {
   "address": 7143,
   "type": "line",
   "text": "The y values, high bytes: entries 0-5, the Hind's shape."
  },
  {
   "address": 7149,
   "type": "line",
   "text": "y value 6, high byte: the Hind's."
  },
  {
   "address": 7150,
   "type": "line",
   "text": "y values 7 on, high bytes."
  },
  {
   "address": 7178,
   "type": "line",
   "text": "The heights' last entry, 20."
  },
  {
   "address": 7179,
   "type": "line",
   "text": "How many heights, less one, the view's rotation turns: 17, entries 20 to 3; entries 0-2 are the Hind's shape."
  },
  {
   "address": 7180,
   "type": "line",
   "text": "The heights, low bytes, 21: entries 0-2 the Hind's shape, 3 the Hind's height, 4-9 the missiles', 10 on the theatre's."
  },
  {
   "address": 7183,
   "type": "line",
   "text": "Height 3, low byte: the Hind's."
  },
  {
   "address": 7184,
   "type": "line",
   "text": "Heights 4 on, low bytes: the missiles', then the theatre's values."
  },
  {
   "address": 7201,
   "type": "line",
   "text": "The heights, high bytes: entries 0-2, the Hind's shape."
  },
  {
   "address": 7204,
   "type": "line",
   "text": "Height 3, high byte: the Hind's."
  },
  {
   "address": 7205,
   "type": "line",
   "text": "Heights 4 on, high bytes."
  },
  {
   "address": 7222,
   "type": "line",
   "text": "The points' last number, 112: 113 points, each made of an x value, a y value and a height."
  },
  {
   "address": 7223,
   "type": "line",
   "text": "For each point, the number of its x value (an entry of $1B88)."
  },
  {
   "address": 7336,
   "type": "line",
   "text": "For each point, the number of its y value (an entry of $1BC4)."
  },
  {
   "address": 7337,
   "type": "line",
   "text": "A false label inside the y numbers: the BITs at $36E6 and $3709 hide an LDA #$1C and name this address by chance."
  },
  {
   "address": 7401,
   "type": "line",
   "text": "The y value numbers of points 65 to 112, past the false label's reach."
  },
  {
   "address": 7449,
   "type": "line",
   "text": "For each point, the number of its height (an entry of $1C0C)."
  },
  {
   "address": 7562,
   "type": "line",
   "text": "The last of the points made as fractions of others, 37: 38 of them, numbered 113 on."
  },
  {
   "address": 7563,
   "type": "line",
   "text": "For each fraction point, the point it is a fraction of."
  },
  {
   "address": 7601,
   "type": "line",
   "text": "For each fraction point, how many times its source's offsets are halved."
  },
  {
   "address": 7639,
   "type": "line",
   "text": "For each terrain, 0-32, how many fixed objects it has (0 or 1, a hill)."
  },
  {
   "address": 7672,
   "type": "line",
   "text": "For each terrain, its fixed objects' list, low byte."
  },
  {
   "address": 7705,
   "type": "line",
   "text": "For each terrain, its fixed objects' list, high byte."
  },
  {
   "address": 7738,
   "type": "line",
   "text": "For each terrain, how many switchable objects it has, up to eight, one for each bit of a square's byte at $E200."
  },
  {
   "address": 7771,
   "type": "line",
   "text": "For each terrain, its switchable objects' list, low byte."
  },
  {
   "address": 7804,
   "type": "line",
   "text": "For each terrain, its switchable objects' list, high byte."
  },
  {
   "address": 7837,
   "type": "line",
   "text": "The low byte of $24E3: a shape at or after it can be locked as a target, so target_pick compares each drawn object's shape with this word."
  },
  {
   "address": 7838,
   "type": "line",
   "text": "The high byte of the first target shape's address, $24."
  },
  {
   "address": 7839,
   "type": "line",
   "text": "The Hind's object entry: it stands on point 10, which view_squares moves to the Hind's place; size class 3; no far shape; near, its shape at $2FF0."
  },
  {
   "address": 7845,
   "type": "line",
   "text": "Six object entries for the missiles in flight, on points 11 to 16, which view_squares moves to them; with no shape (both $FFFF), as the missiles are drawn with sprites."
  },
  {
   "address": 7881,
   "type": "line",
   "text": "Shape: a flat outline on the ground, five corners; colour 2. Used as switchable objects on terrains 15, 32."
  },
  {
   "address": 7910,
   "type": "line",
   "text": "Shape: two flat four-sided outlines joined, on the ground (near view; far, $1F0E); colour 2. Used as a switchable object on terrain 13."
  },
  {
   "address": 7950,
   "type": "line",
   "text": "Shape: a flat four-sided outline, the far view of $1EE6; colour 2. Used as a switchable object on terrain 13."
  },
  {
   "address": 7974,
   "type": "line",
   "text": "Shape: a flat four-sided outline on the ground; colour 2. Used as switchable objects on terrains 7, 21."
  },
  {
   "address": 7998,
   "type": "line",
   "text": "Shape: two flat outlines joined, on the ground (near view; far, $1F66); colour 2. Used as switchable objects on terrains 25, 27, 30."
  },
  {
   "address": 8038,
   "type": "line",
   "text": "Shape: a flat five-cornered outline, the far view of $1F3E; colour 2. Used as switchable objects on terrains 25, 27, 30."
  },
  {
   "address": 8063,
   "type": "line",
   "text": "Shape: a flat four-sided outline on the ground, the largest; colour 2. Used as switchable objects on terrains 1, 18, 23, 31."
  },
  {
   "address": 8087,
   "type": "line",
   "text": "Shape: a straight line on the ground; colour 1. Used as switchable objects on terrains 6, 8, 16, 17, 25."
  },
  {
   "address": 8098,
   "type": "line",
   "text": "Shape: a straight line on the ground, another heading; colour 1. Used as switchable objects on terrains 8, 10, 25, 26, 27, 32."
  },
  {
   "address": 8109,
   "type": "line",
   "text": "Shape: a straight line on the ground, a third heading; colour 1. Used as switchable objects on terrains 6, 9, 16, 22, 28, 29, 30."
  },
  {
   "address": 8120,
   "type": "line",
   "text": "Shape: a straight line on the ground, a fourth heading; colour 1. Used as switchable objects on terrains 22, 30, 32."
  },
  {
   "address": 8131,
   "type": "line",
   "text": "Shape: a line on the ground with one bend; colour 1. Used as a switchable object on terrain 23."
  },
  {
   "address": 8146,
   "type": "line",
   "text": "Shape: a short straight line on the ground; colour 1. Used as a switchable object on terrain 2."
  },
  {
   "address": 8156,
   "type": "line",
   "text": "Shape: a straight line on the ground, a fifth heading; colour 1. Used as switchable objects on terrains 18, 20."
  },
  {
   "address": 8167,
   "type": "line",
   "text": "Shape: two lines on the ground meeting in a V; colour 1. Used as a switchable object on terrain 21."
  },
  {
   "address": 8183,
   "type": "line",
   "text": "Shape: two lines on the ground crossing; colour 1. Used as a switchable object on terrain 22."
  },
  {
   "address": 8200,
   "type": "line",
   "text": "Shape: a straight line on the ground, a sixth heading; colour 1. Used as switchable objects on terrains 18, 21, 23, 24."
  },
  {
   "address": 8211,
   "type": "line",
   "text": "Shape: a short line on the ground; colour 1. Used as a switchable object on terrain 17."
  },
  {
   "address": 8221,
   "type": "line",
   "text": "Shape: a straight line on the ground, a seventh heading; colour 1. Used as a switchable object on terrain 2."
  },
  {
   "address": 8232,
   "type": "line",
   "text": "Shape: a short line on the ground, another heading; colour 1. Used as a switchable object on terrain 24."
  },
  {
   "address": 8242,
   "type": "line",
   "text": "Shape: three short upright strokes standing apart (near view; far, three dots at $2049); colour 2. Used as switchable objects on terrains 1, 2, 3, 4, 5, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 24, 26, 27, 28, 31, 32."
  },
  {
   "address": 8265,
   "type": "line",
   "text": "Shape: three dots, the far view of $2032; colour 2. Used as switchable objects on terrains 1, 2, 3, 4, 5, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 24, 26, 27, 28, 31, 32."
  },
  {
   "address": 8282,
   "type": "line",
   "text": "Shape: a broken line on the ground, three segments; colour 3. Used as a switchable object on terrain 12."
  },
  {
   "address": 8302,
   "type": "line",
   "text": "Shape: a broken line on the ground, three segments, another course; colour 3. Used as switchable objects on terrains 13, 16."
  },
  {
   "address": 8322,
   "type": "line",
   "text": "Shape: a broken line on the ground, four segments; colour 3. Used as switchable objects on terrains 13, 16."
  },
  {
   "address": 8347,
   "type": "line",
   "text": "Shape: a broken line on the ground, four segments, another course; colour 3. Used as a switchable object on terrain 11."
  },
  {
   "address": 8372,
   "type": "line",
   "text": "Shape: a broken line on the ground, four segments, a third course; colour 3. Used as switchable objects on terrains 14, 15."
  },
  {
   "address": 8397,
   "type": "line",
   "text": "Shape: hill 1, near view: a filled hill of 7 points and 5 faces (far view, its ridges only, at $2119); colour 2. Used as the fixed object of terrain 3, 10."
  },
  {
   "address": 8473,
   "type": "line",
   "text": "Shape: hill 1, far view: the ridge lines of $20CD; colour 2. Used as the fixed object of terrain 3, 10."
  },
  {
   "address": 8529,
   "type": "line",
   "text": "Shape: hill 2, near view: a filled hill of 7 points and 5 faces (far view, its ridges only, at $219D); colour 2. Used as the fixed object of terrain 4, 7, 24, 28."
  },
  {
   "address": 8605,
   "type": "line",
   "text": "Shape: hill 2, far view: the ridge lines of $2151; colour 2. Used as the fixed object of terrain 4, 7, 24, 28."
  },
  {
   "address": 8661,
   "type": "line",
   "text": "Shape: hill 3, near view: a filled hill of 6 points and 4 faces (far view, its ridges only, at $2213); colour 2. Used as the fixed object of terrain 5, 8, 12, 17."
  },
  {
   "address": 8723,
   "type": "line",
   "text": "Shape: hill 3, far view: the ridge lines of $21D5; colour 2. Used as the fixed object of terrain 5, 8, 12, 17."
  },
  {
   "address": 8769,
   "type": "line",
   "text": "Shape: hill 4, near view: a filled hill of 8 points and 6 faces (far view, its ridges only, at $229B); colour 2. Used as the fixed object of terrain 2, 6, 9, 19, 26."
  },
  {
   "address": 8859,
   "type": "line",
   "text": "Shape: hill 4, far view: the ridge lines of $2241; colour 2. Used as the fixed object of terrain 2, 6, 9, 19, 26."
  },
  {
   "address": 8929,
   "type": "line",
   "text": "Shape: hill 5, near view: a filled hill of 9 points and 6 faces (far view, its ridges only, at $2340); colour 2. Used as the fixed object of terrain 1, 14, 29."
  },
  {
   "address": 9024,
   "type": "line",
   "text": "Shape: hill 5, far view: the ridge lines of $22E1; colour 2. Used as the fixed object of terrain 1, 14, 29."
  },
  {
   "address": 9095,
   "type": "line",
   "text": "Shape: a box, eight corners and five faces (near view; far, its outline at $23DD); colour 1. Used as switchable objects on terrains 20, 21, 22, 23."
  },
  {
   "address": 9180,
   "type": "line",
   "text": "A name byte after the box at $2387: 14, which would be message 25, M1 ABRAMS; it is never read, as the shape lies before $24E3."
  },
  {
   "address": 9181,
   "type": "line",
   "text": "Shape: a square outline, the far view of the box at $2387; colour 1. Used as switchable objects on terrains 20, 21, 22, 23."
  },
  {
   "address": 9205,
   "type": "line",
   "text": "Shape: a flat square with a small box on it (near view; far, $2454); colour 1. Used as a switchable object on terrain 22."
  },
  {
   "address": 9300,
   "type": "line",
   "text": "Shape: an outline and a small square, the far view of $23F5; colour 1. Used as a switchable object on terrain 22."
  },
  {
   "address": 9334,
   "type": "line",
   "text": "Shape: a larger box, eight corners and five faces (near view; far, $24CB); colour 1. Used as a switchable object on terrain 21."
  },
  {
   "address": 9419,
   "type": "line",
   "text": "Shape: a square outline, the far view of the box at $2476; colour 1. Used as a switchable object on terrain 21."
  },
  {
   "address": 9443,
   "type": "line",
   "text": "Shape: a single dot, colour 3, at point 31, which no object uses; $1E9D points here as the first shape that can be a target."
  },
  {
   "address": 9451,
   "type": "line",
   "text": "Shape: NATO BASE as the target view names it (the byte after it): 16 points, 5 faces, 18 edges; colour 1. Used as switchable objects on terrains 19, 27."
  },
  {
   "address": 9568,
   "type": "line",
   "text": "The name byte of the shape at $24EB: 19, so the target view prints message 30, NATO BASE."
  },
  {
   "address": 9569,
   "type": "line",
   "text": "Shape: the far view of NATO BASE ($24EB), 4 lines in a closed loop through points 1-4; point 0 is on none; colour 1. Used as switchable objects on terrains 19, 27."
  },
  {
   "address": 9594,
   "type": "line",
   "text": "Shape: PACT DEPOT as the target view names it (the byte after it): 15 points, 5 faces, 18 edges, 3 of them dots; colour 1. Used as a switchable object on terrain 8."
  },
  {
   "address": 9707,
   "type": "line",
   "text": "The name byte of the shape at $257A: 12, so the target view prints message 23, PACT DEPOT."
  },
  {
   "address": 9708,
   "type": "line",
   "text": "Shape: the far view of PACT DEPOT ($257A), 7 lines: a closed loop through points 1-4 and a path from point 2 through 5, 6 and 7; point 0 is on none; colour 1. Used as a switchable object on terrain 8."
  },
  {
   "address": 9748,
   "type": "line",
   "text": "Shape: PACT HQ as the target view names it (the byte after it): 15 points, 5 faces, 17 edges; colour 1. Used as switchable objects on terrains 16, 17."
  },
  {
   "address": 9860,
   "type": "line",
   "text": "The name byte of the shape at $2614: 13, so the target view prints message 24, PACT HQ."
  },
  {
   "address": 9861,
   "type": "line",
   "text": "Shape: the far view of PACT HQ ($2614), 4 lines in a closed loop through points 1-4; point 0, the centre, is on none; colour 1. Used as switchable objects on terrains 16, 17."
  },
  {
   "address": 9886,
   "type": "line",
   "text": "Shape: PACT BASE as the target view names it (the byte after it): 15 points, 5 faces, 18 edges; colour 1. Used as switchable objects on terrains 7, 8."
  },
  {
   "address": 10002,
   "type": "line",
   "text": "The name byte of the shape at $269E: 11, so the target view prints message 22, PACT BASE."
  },
  {
   "address": 10003,
   "type": "line",
   "text": "Shape: the far view of PACT BASE ($269E), 6 lines in a closed loop through points 1-6; point 0, the centre, is on none; colour 1. Used as switchable objects on terrains 7, 8."
  },
  {
   "address": 10038,
   "type": "line",
   "text": "Shape: BUNKER as the target view names it (the byte after it): 9 points, 5 faces, 12 edges; colour 3. Used as switchable objects on terrains 12, 13, 27."
  },
  {
   "address": 10124,
   "type": "line",
   "text": "The name byte of the shape at $2736: 10, so the target view prints message 21, BUNKER."
  },
  {
   "address": 10125,
   "type": "line",
   "text": "Shape: PACT INF as the target view names it (the byte after it): 11 points, 0 faces, 11 edges, all of them dots, one on each point; colour 3. Used as switchable objects on terrains 8, 11, 13, 14, 19, 23, 26, 29."
  },
  {
   "address": 10173,
   "type": "line",
   "text": "The name byte of the shape at $278D: 1, so the target view prints message 12, PACT INF."
  },
  {
   "address": 10174,
   "type": "line",
   "text": "Shape: T-72 as the target view names it (the byte after it): 14 points, 8 faces, 19 edges; colour 3. Used as switchable objects on terrains 2, 3, 6, 10, 12, 14, 21, 23, 24, 30, 31."
  },
  {
   "address": 10308,
   "type": "line",
   "text": "The name byte of the shape at $27BE: 3, so the target view prints message 14, T-72."
  },
  {
   "address": 10309,
   "type": "line",
   "text": "Shape: BMP-1 as the target view names it (the byte after it): 14 points, 8 faces, 19 edges; colour 3. Used as switchable objects on terrains 4, 5, 6, 7, 9, 11, 15, 16, 17, 18, 20, 21, 22, 23, 25, 27, 29, 32."
  },
  {
   "address": 10443,
   "type": "line",
   "text": "The name byte of the shape at $2845: 4, so the target view prints message 15, BMP-1."
  },
  {
   "address": 10444,
   "type": "line",
   "text": "Shape: ZSU-23-4 as the target view names it (the byte after it): 19 points, 8 faces, 24 edges, one of them a dot; colour 3. Used as switchable objects on terrains 22, 29, 31."
  },
  {
   "address": 10602,
   "type": "line",
   "text": "The name byte of the shape at $28CC: 7, so the target view prints message 18, ZSU-23-4."
  },
  {
   "address": 10603,
   "type": "line",
   "text": "Shape: SA-8 as the target view names it (the byte after it): 15 points, 4 faces, 19 edges; colour 3. Used as switchable objects on terrains 15, 20."
  },
  {
   "address": 10718,
   "type": "line",
   "text": "The name byte of the shape at $296B: 5, so the target view prints message 16, SA-8."
  },
  {
   "address": 10719,
   "type": "line",
   "text": "Shape: S60 57MM as the target view names it (the byte after it): 6 points, 0 faces, 3 edges; colour 3. Used as switchable objects on terrains 17, 25."
  },
  {
   "address": 10741,
   "type": "line",
   "text": "The name byte of the shape at $29DF: 8, so the target view prints message 19, S60 57MM."
  },
  {
   "address": 10742,
   "type": "line",
   "text": "Shape: SA-9 as the target view names it (the byte after it): 9 points, 8 faces, 14 edges; colour 3. Used as switchable objects on terrains 1, 6, 32."
  },
  {
   "address": 10851,
   "type": "line",
   "text": "The name byte of the shape at $29F6: 6, so the target view prints message 17, SA-9."
  },
  {
   "address": 10852,
   "type": "line",
   "text": "Shape: M2 BRADLEY as the target view names it (the byte after it): 19 points, 9 faces, 26 edges; colour 1. Used as switchable objects on terrains 4, 5, 9, 19."
  },
  {
   "address": 11024,
   "type": "line",
   "text": "The name byte of the shape at $2A64: 16, so the target view prints message 27, M2 BRADLEY."
  },
  {
   "address": 11025,
   "type": "line",
   "text": "Shape: M1 ABRAMS as the target view names it (the byte after it): 19 points, 9 faces, 26 edges; colour 1. Used as a switchable object on terrain 5."
  },
  {
   "address": 11197,
   "type": "line",
   "text": "The name byte of the shape at $2B11: 15, so the target view prints message 26, M1 ABRAMS."
  },
  {
   "address": 11198,
   "type": "line",
   "text": "Terrain 1's fixed object, six bytes: hill5_near at point 28. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11204,
   "type": "line",
   "text": "Terrain 1's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): SA-9 at point 36; outline_1F7F at point 32; strokes_2032 at point 26."
  },
  {
   "address": 11222,
   "type": "line",
   "text": "Terrain 2's fixed object, six bytes: hill4_near at point 31. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11228,
   "type": "line",
   "text": "Terrain 2's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 36; line_1FD2 at point 27; line_201D at point 28; strokes_2032 at point 32."
  },
  {
   "address": 11252,
   "type": "line",
   "text": "Terrain 3's fixed object, six bytes: hill1_near at point 31. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11258,
   "type": "line",
   "text": "Terrain 3's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 32; strokes_2032 at point 29."
  },
  {
   "address": 11270,
   "type": "line",
   "text": "Terrain 4's fixed object, six bytes: hill2_near at point 31. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11276,
   "type": "line",
   "text": "Terrain 4's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): BMP-1 at point 30; M2 BRADLEY at point 28; strokes_2032 at point 36; strokes_2032 at point 29."
  },
  {
   "address": 11300,
   "type": "line",
   "text": "Terrain 5's fixed object, six bytes: hill3_near at point 40. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11306,
   "type": "line",
   "text": "Terrain 5's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): M1 ABRAMS at point 27; M2 BRADLEY at point 29; BMP-1 at point 35; strokes_2032 at point 36; strokes_2032 at point 32."
  },
  {
   "address": 11336,
   "type": "line",
   "text": "Terrain 6's fixed object, six bytes: hill4_near at point 40. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11342,
   "type": "line",
   "text": "Terrain 6's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): BMP-1 at point 34; SA-9 at point 32; T-72 at point 27; line_1FAD at point 36; line_1F97 at point 30."
  },
  {
   "address": 11372,
   "type": "line",
   "text": "Terrain 7's fixed object, six bytes: hill2_near at point 28. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11378,
   "type": "line",
   "text": "Terrain 7's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): BMP-1 at point 26; BMP-1 at point 33; PACT BASE at point 32; outline_1F26 at point 36."
  },
  {
   "address": 11402,
   "type": "line",
   "text": "Terrain 8's fixed object, six bytes: hill3_near at point 40. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11408,
   "type": "line",
   "text": "Terrain 8's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): PACT DEPOT at point 36; PACT BASE at point 32; PACT INF at point 27; line_1F97 at point 33; line_1FA2 at point 29."
  },
  {
   "address": 11438,
   "type": "line",
   "text": "Terrain 9's fixed object, six bytes: hill4_near at point 110. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11444,
   "type": "line",
   "text": "Terrain 9's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): M2 BRADLEY at point 27; BMP-1 at point 26; line_1FAD at point 36; line_1FAD at point 32; strokes_2032 at point 33."
  },
  {
   "address": 11474,
   "type": "line",
   "text": "Terrain 10's fixed object, six bytes: hill1_near at point 40. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11480,
   "type": "line",
   "text": "Terrain 10's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 33; line_1FA2 at point 32; line_1FA2 at point 29."
  },
  {
   "address": 11498,
   "type": "line",
   "text": "Terrain 11's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): BMP-1 at point 27; PACT INF at point 31; zigzag_209B at point 32; strokes_2032 at point 36; strokes_2032 at point 29."
  },
  {
   "address": 11528,
   "type": "line",
   "text": "Terrain 12's fixed object, six bytes: hill3_near at point 31. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11534,
   "type": "line",
   "text": "Terrain 12's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 36; BUNKER at point 29; zigzag_205A at point 27; strokes_2032 at point 32."
  },
  {
   "address": 11558,
   "type": "line",
   "text": "Terrain 13's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): BUNKER at point 36; PACT INF at point 27; strokes_2032 at point 26; zigzag_206E at point 33; zigzag_2082 at point 28; outline_1EE6 at point 30."
  },
  {
   "address": 11594,
   "type": "line",
   "text": "Terrain 14's fixed object, six bytes: hill5_near at point 33. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11600,
   "type": "line",
   "text": "Terrain 14's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 28; PACT INF at point 30; zigzag_20B4 at point 29; strokes_2032 at point 27."
  },
  {
   "address": 11624,
   "type": "line",
   "text": "Terrain 15's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): BMP-1 at point 33; SA-8 at point 32; outline_1EC9 at point 42; zigzag_20B4 at point 36; strokes_2032 at point 27."
  },
  {
   "address": 11654,
   "type": "line",
   "text": "Terrain 16's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): BMP-1 at point 27; PACT HQ at point 30; zigzag_206E at point 28; line_1F97 at point 26; line_1FAD at point 29; strokes_2032 at point 32; zigzag_2082 at point 33."
  },
  {
   "address": 11696,
   "type": "line",
   "text": "Terrain 17's fixed object, six bytes: hill3_near at point 40. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11702,
   "type": "line",
   "text": "Terrain 17's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): PACT HQ at point 32; S60 57MM at point 36; BMP-1 at point 27; line_2013 at point 33; line_1F97 at point 30."
  },
  {
   "address": 11732,
   "type": "line",
   "text": "Terrain 18's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): BMP-1 at point 28; BMP-1 at point 110; outline_1F7F at point 36; strokes_2032 at point 29; line_2008 at point 32; line_1FDC at point 27."
  },
  {
   "address": 11768,
   "type": "line",
   "text": "Terrain 19's fixed object, six bytes: hill4_near at point 31. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11774,
   "type": "line",
   "text": "Terrain 19's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): PACT INF at point 33; M2 BRADLEY at point 36; NATO BASE at point 27; strokes_2032 at point 32."
  },
  {
   "address": 11798,
   "type": "line",
   "text": "Terrain 20's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): SA-8 at point 33; BMP-1 at point 32; box_2387 at point 40; strokes_2032 at point 36; strokes_2032 at point 29; line_1FDC at point 27; line_1FDC at point 30."
  },
  {
   "address": 11840,
   "type": "line",
   "text": "Terrain 21's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 29; BMP-1 at point 30; BMP-1 at point 26; box_2476 at point 110; outline_1F26 at point 36; line_1FE7 at point 27; line_2008 at point 32; box_2387 at point 111."
  },
  {
   "address": 11888,
   "type": "line",
   "text": "Terrain 22's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): ZSU-23-4 at point 27; BMP-1 at point 29; line_1FF7 at point 32; pad_23F5 at point 35; box_2387 at point 110; line_1FAD at point 36; line_1FB8 at point 28."
  },
  {
   "address": 11930,
   "type": "line",
   "text": "Terrain 23's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 32; PACT INF at point 35; BMP-1 at point 29; box_2387 at point 112; outline_1F7F at point 36; line_2008 at point 28; line_1FC3 at point 30."
  },
  {
   "address": 11972,
   "type": "line",
   "text": "Terrain 24's fixed object, six bytes: hill2_near at point 111. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 11978,
   "type": "line",
   "text": "Terrain 24's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 28; line_2028 at point 36; line_2008 at point 26; strokes_2032 at point 29."
  },
  {
   "address": 12002,
   "type": "line",
   "text": "Terrain 25's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): S60 57MM at point 27; BMP-1 at point 29; outline_1F3E at point 32; line_1FA2 at point 36; line_1F97 at point 28."
  },
  {
   "address": 12032,
   "type": "line",
   "text": "Terrain 26's fixed object, six bytes: hill4_near at point 110. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 12038,
   "type": "line",
   "text": "Terrain 26's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): PACT INF at point 27; line_1FA2 at point 36; line_1FA2 at point 27; strokes_2032 at point 32."
  },
  {
   "address": 12062,
   "type": "line",
   "text": "Terrain 27's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): NATO BASE at point 111; BMP-1 at point 33; BUNKER at point 26; strokes_2032 at point 36; outline_1F3E at point 27; line_1FA2 at point 32; line_1FA2 at point 29."
  },
  {
   "address": 12104,
   "type": "line",
   "text": "Terrain 28's fixed object, six bytes: hill2_near at point 40. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 12110,
   "type": "line",
   "text": "Terrain 28's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): line_1FAD at point 36; line_1FAD at point 32; strokes_2032 at point 29."
  },
  {
   "address": 12128,
   "type": "line",
   "text": "Terrain 29's fixed object, six bytes: hill5_near at point 33. Each entry: the point it stands on, measured from the square's centre; its size class, which picks how far outside the view it may lie and still be drawn ($822A, $822F, $8239); then its far and near shapes."
  },
  {
   "address": 12134,
   "type": "line",
   "text": "Terrain 29's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): ZSU-23-4 at point 42; BMP-1 at point 30; PACT INF at point 27; line_1FAD at point 27; line_1FAD at point 29."
  },
  {
   "address": 12164,
   "type": "line",
   "text": "Terrain 30's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 36; T-72 at point 27; T-72 at point 35; line_1FB8 at point 26; line_1FAD at point 32; outline_1F3E at point 42."
  },
  {
   "address": 12200,
   "type": "line",
   "text": "Terrain 31's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): T-72 at point 28; T-72 at point 110; ZSU-23-4 at point 36; outline_1F7F at point 32; strokes_2032 at point 26; strokes_2032 at point 29."
  },
  {
   "address": 12236,
   "type": "line",
   "text": "Terrain 32's switchable objects, one for each bit of a square's byte at $E200 (bit 0 first): SA-9 at point 27; BMP-1 at point 110; line_1FB8 at point 28; outline_1EC9 at point 36; strokes_2032 at point 29; line_1FA2 at point 32."
  },
  {
   "address": 12272,
   "type": "line",
   "text": "Shape: the Mi-24 Hind, the enemy helicopter, ten points and six faces; colour byte $81. Used as the Hind's object at $1E9F."
  },
  {
   "address": 12544,
   "type": "line",
   "text": "The flight's start and end. The load of AWH, the last file G2 loads, ends in an RTS to here: $30FF was on the stack above BASIC's own return into LOAD ($E177). Starts the engine ($8115), runs the main loop until the flight ends, leaves a map or picture view if one is up ($8112), stops the engine ($8118) and blanks the screen. The two PLAs drop BASIC's return into LOAD, so the RTS goes back to BASIC's statement loop and G2 runs on from the statement after its LOAD, with its variables kept."
  },
  {
   "address": 12568,
   "type": "line",
   "text": "The top of the main loop, once a pass. A damaged engine (damage bits 2 and 3) cannot run: its bit in zpa_44 is cleared. With both fuel tanks empty both engines stop, their sounds end, and a helicopter sitting on the ground with no landing recorded counts as landed (zpa_86 = 2)."
  },
  {
   "address": 12618,
   "type": "line",
   "text": "The first pass only (zpa_4E still 0): the jammers off, the two engine gauges ($8141, $8143) set to $80 so they drop to nothing at once, the lamps set for the starting state, the stores counted (count_load), the cannon selected and its lamp lit, and sprite 2's pointer in the panel ($EFFA) set to $C0."
  },
  {
   "address": 12695,
   "type": "line",
   "text": "Every pass: the pass counter zpa_6A-zpa_6B, the flight's clock, goes up; zpa_51 counts down. The helicopter's position (zpa_5E-zpa_61) and height (zpa_62-zpa_63) are copied to $812D-$8132 and $814E-$8153 for the 3D view and the map, the eye 24 units above the helicopter; the view's heading (minus the helicopter's heading zpa_34 and the look direction zpa_37), its pitch and its roll go to $8133-$8135."
  },
  {
   "address": 12792,
   "type": "line",
   "text": "The chaff and flare timers (zpa_46, zpa_47) count down, their lamps ($19, $1B) lit while they run. Then the 3D view is drawn (s_8106). The sight, sprite 0, is shown ($815C = $55) only when looking ahead. If the view drawing found the eye inside a hill (zpa_05), the flight ends as a crash: zpa_82 = 1."
  },
  {
   "address": 12861,
   "type": "line",
   "text": "Moves the missiles and shells (s_819C) and draws the radar scope (s_81AF). A hit on the helicopter ($81B3) is damage (hit_helicopter, effect 5); a missile caught by chaff or flares ($81B2) makes sound 7; a unit hit by the player's missile ($81B4) is destroyed (destroy_unit)."
  },
  {
   "address": 12901,
   "type": "line",
   "text": "The seven bar gauges' values, which s_811B draws: the fore and aft fuel ($813D, $813E), each engine's torque from the collective while it runs ($813F, $8140), the rotor speed ($8142); $8141 and $8143 are each engine's bar, full while it runs. Then the heading ($8144); the pitch, clamped to -$14 to $13 ($813A), and the roll, negated ($813B). With the forward avionics hit (damage bit 4) all seven bars show $80: nothing."
  },
  {
   "address": 13009,
   "type": "line",
   "text": "Draws the attitude indicator (s_811E); then the airspeed needle's angle ($8137, three quarters of the speed zpa_6C), the height times 1.25 ($8145-$8146) and the vertical speed as a needle angle ($8139, from the sine table at $C600) for the dials, which s_811B draws. Then the buffers are swapped (s_810F) and one key is taken from the keyboard buffer (get_key)."
  },
  {
   "address": 13102,
   "type": "line",
   "text": "The keys. $FF, RESTORE with RUN/STOP, aborts the flight (zpa_82 = $80). \u2190 on the big map toggles fast motion (zpa_85) and shows it in the border, light red when on. SPACE steps the CRT display on (s_810C). Z shows the big map (s_8112 with 1); C= ($7E) and left SHIFT ($7D) show the stores and damage pictures (s_8112 with 2 and 3), which are loaded from disk."
  },
  {
   "address": 13187,
   "type": "line",
   "text": "RUN/STOP ($7F) pauses: the sound off until a key is pressed; RESTORE with RUN/STOP still aborts. Right SHIFT ($7C) asks for the next target (zpa_FA = 1). HOME looks ahead, \u00a3 and DEL look to the two sides (zpa_37 = 0, $E0 and $20). F1, F3, F5 and F7 move the collective (zpa_3A) by +4, +1, -1 and -4, kept between 0 and 42."
  },
  {
   "address": 13318,
   "type": "line",
   "text": "Keys 1 and 2 start and stop engines 1 and 2 (bits 0 and 1 of zpa_44), only while there is fuel and the engine is not damaged (damage bits 2 and 3), with the starter's sound; the engine's bar ($8141, $8143) is filled or emptied. Key 3 engages and frees the rotor's clutch (bit 2); freeing it drops the collective to 0, and the clutch lamp ($0E) shows which."
  },
  {
   "address": 13453,
   "type": "line",
   "text": "RETURN stops the turn (zpa_40 = 0). Keys 4, 5, 6 and 7 choose the Sidewinders, the FFARs, the Hellfires and the cannon (zpa_43 = 1, 2, 3, 0), lighting the weapon's lamp ($16, $17, $18, $1A) after weapon_lamps_off has put the others out."
  },
  {
   "address": 13564,
   "type": "line",
   "text": "Key 9 fires chaff, when the chaff launcher works (damage bit 13): one from the store at $53DD, and the chaff timer zpa_46 set to 36. The - key fires a flare the same way, when the flare launcher works (bit 7): the store at $53DC and the timer zpa_47."
  },
  {
   "address": 13626,
   "type": "line",
   "text": "Key 0 turns the radar jammer on and off (bit 4 of zpa_44, $81AA) and + the infrared jammer (bit 3, $81AB), each lighting its lamp ($12, $13); neither works with the aft avionics hit (damage bit 5). The cursor keys turn: CRSR right/left adds 1 to the turn rate zpa_40 and CRSR down/up takes 1 off."
  },
  {
   "address": 13741,
   "type": "line",
   "text": "The turn rate is kept between -4 and 4, and stopped when the speed zpa_7B is 15 or more either way: the helicopter turns on the spot only when slow. RESTORE with 4, 5 or 6 ($B4-$B6) jettisons all the Sidewinders, FFARs or Hellfires, with sound 2, and the load is counted again."
  },
  {
   "address": 13824,
   "type": "line",
   "text": "The missiles' weight, zpa_3C: twice the Sidewinders, FFARs and Hellfires together, plus the Hellfires again; then the stores numbers are redrawn (draw_stores)."
  },
  {
   "address": 13843,
   "type": "line",
   "text": "The joystick, read (joystick) into zpa_84 (left -1, right +1) and zpa_7A (up -1, down +1). On the big map (zpa_18 = 1) it moves the waypoint, zpa_76-zpa_79, and its cross (sprite 0), for as long as it is held, and the flying goes on without it."
  },
  {
   "address": 13946,
   "type": "line",
   "text": "In the cockpit: the bearing from the helicopter to the waypoint (bearing on the two differences) goes to $813C and is printed (s_812A); against the heading it places sprite 3, the waypoint's mark on the heading strip ($8178). The direction of travel zpa_3E against the heading places sprite 2, the slip mark ($8177)."
  },
  {
   "address": 14095,
   "type": "line",
   "text": "The stick's roll: zpa_84 times 4 is added to the roll zpa_36, kept within \u00b120; a main rotor hit (damage bit 0) adds a random shake. Pushing the stick changes the pitch zpa_35; hovering low over the ground (height below zpa_6C, climbing) adds a random pitch kick."
  },
  {
   "address": 14207,
   "type": "line",
   "text": "The lift, zpa_38: the collective, at most the rotor speed / 4 + 4. With realistic flight (bit 1 of zpa_4B) it gains up to 9 from the speed and loses the missiles' weight / 8, the heat (zpa_39) and the fuel's weight; with the rotor's clutch free it loses the vertical speed / 4. Kept between 0 and 45."
  },
  {
   "address": 14328,
   "type": "line",
   "text": "Turning. On the ground nothing turns. With the nose about level (pitch 0 to -3) the turn rate turns the helicopter on the spot, and a roll makes it slide sideways; otherwise the roll banks it round and the heading follows the direction of travel. A hit on either rotor (damage bits 0 and 1) adds a random yaw."
  },
  {
   "address": 14476,
   "type": "line",
   "text": "The lift is split by the pitch and the roll (s_8109, the sine product) into an upward part, zpa_3B, less the height's high byte, and a push, zpa_80-zpa_81: forward from the pitch, or sideways from the roll when the pitch is 0."
  },
  {
   "address": 14641,
   "type": "line",
   "text": "The vertical speed zpa_3F moves a quarter of the way towards zpa_3B, the lift's upward part, less 104, with a ground cushion of (64 less the height) / 4 below height 26 when slow (realistic flight only). The height zpa_62-zpa_63 then changes by a quarter of the vertical speed (after adding 1 and bit 0 of zpa_6A), never below 0."
  },
  {
   "address": 14796,
   "type": "line",
   "text": "Touchdown, the pass the height reaches 0. A hard one (the speed and the sink rate together $60 or more) is a crash, zpa_82 = 1, with sound 7 and the screen shaken, when landings are realistic (bit 0 of zpa_4B) or both engines are damaged. Otherwise the landing's grade, zpa_86: 2 plus that sum over 32, one more when rolled 10 or more, unless it is 4. On the ground the speeds, the pitch and the roll are zeroed."
  },
  {
   "address": 14872,
   "type": "line",
   "text": "The speed zpa_6C-zpa_6D moves a sixteenth of the way towards the push (less a part of the vertical speed by the pitch), and zpa_7B is a quarter of it. The helicopter moves by it along the direction of travel zpa_3E, in x then in y, each kept on the map by keep_on_map."
  },
  {
   "address": 15094,
   "type": "line",
   "text": "Keeps a coordinate's high byte between $18 and $D8: x indexes the coordinate's two bytes in zero page."
  },
  {
   "address": 15120,
   "type": "line",
   "text": "The wind: every second pass while airborne, zpa_4F and zpa_50, from the mission block, are added to the position."
  },
  {
   "address": 15166,
   "type": "line",
   "text": "The rotor. The engines running give a target speed for it, zpa_42, from the table at $E400 (none, one, the other or both) less twice the collective, at most 156. With the clutch in, the rotor speed zpa_41 moves an eighth of the way towards it; with it free the rotor slows by a quarter of the collective, a little more on the ground, the forward speed keeping it turning, and stops at 0."
  },
  {
   "address": 15293,
   "type": "line",
   "text": "The rotor sound: SID voice 2's frequency is the rotor speed, its pulse width from the height. Voice 3, the engines' whine, follows the speed while an engine runs, and is silent otherwise."
  },
  {
   "address": 15364,
   "type": "line",
   "text": "A cannon hit decided last pass (zpa_4A): a positive one destroys its unit (destroy_unit); a negative one, every second pass, makes sound 7 and the gun's flash, and becomes positive."
  },
  {
   "address": 15405,
   "type": "line",
   "text": "With the CRT on the map or a message (zpa_FF not 0): the fire button with a target picked (zpa_FA = 2) moves the CRT on (s_810C), with sound 8, and nothing is fired. Then on to the units."
  },
  {
   "address": 15439,
   "type": "line",
   "text": "Aiming, with the CRT on the target view: how far the target's box, sprite 1, is from the middle of the window ($8155, $815D) is the aim error zpa_64-zpa_65; looking to the side it is $7F. The locked target's unit (s_81C4) is zpa_3D, $7F for none. Its record is read (unit_read) and, the first time, marked identified (bit 4 of its type byte) and the map redrawn."
  },
  {
   "address": 15542,
   "type": "line",
   "text": "The distance to the target, zpa_7D-zpa_7E, is the difference in x plus the difference in y. With the aim error, scaled for the weapon, it gives a class 0 to 3; the target box's colour, $8165, comes from the table at $53A4 by that class, one step lighter at night."
  },
  {
   "address": 15712,
   "type": "line",
   "text": "The fire button (zpa_CA). Firing lets the units see the helicopter from further for a while: zpa_51 = 50 passes, 114 at night. The cannon ($3D7E on) uses a round from $53D8, recoils the nose, and hits when a random fraction of a range is beyond the target's distance; the range shrinks with a worse aim, with the style (zpa_4C) and with the gun damaged (damage bit 12). zpa_4A is then the target with bit 7 set. Ground units of type 3 can be hit only on every fourth pass."
  },
  {
   "address": 15902,
   "type": "line",
   "text": "A missile: one from the store for the weapon chosen ($53D8 + zpa_43), when fewer than six are in flight ($81AC). It starts from the helicopter's position ($8148-$814D); an FFAR's climb follows the pitch. s_819F launches it on the heading, of type zpa_43 - 1, at the target zpa_3D; sound 6; a Sidewinder or a Hellfire lifts the nose by 4. The load is counted again."
  },
  {
   "address": 16050,
   "type": "line",
   "text": "How near an object must be to be picked as a target, $8147, grows with the height. Then how many units are handled this pass, zpa_33: twice the enemy's quality (zpa_7F) plus 2, one more with the infrared jammer on, one more for chaff and one for flares out."
  },
  {
   "address": 16111,
   "type": "line",
   "text": "The next unit in turn, zpa_45: five on from the last, wrapping into 6-$79, so all are visited over the passes. Then to $5400."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "The window bitmap at $4000, row 0: the strip of fourteen damage lamps along the canopy's top, each a letter in a box, which the lamps' colour RAM lights; then row 1's first four cells, the left canopy pillar. The same picture as the other buffer's."
  },
  {
   "address": 16992,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 1's right four cells and row 2's left four."
  },
  {
   "address": 17312,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 2's right four cells and row 3's left four."
  },
  {
   "address": 17632,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 3's right four cells and row 4's left four."
  },
  {
   "address": 17952,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 4's right four cells and row 5's left four."
  },
  {
   "address": 18272,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 5's right four cells and row 6's left four."
  },
  {
   "address": 18592,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 6's right four cells and row 7's left four."
  },
  {
   "address": 18912,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 7's right four cells and row 8's left four."
  },
  {
   "address": 19232,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 8's right four cells and row 9's left four."
  },
  {
   "address": 19552,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 9's right four cells and row 10's left four."
  },
  {
   "address": 19872,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 10's right four cells and row 11's left four."
  },
  {
   "address": 20192,
   "type": "line",
   "text": "The window bitmap at $4000: the canopy pillars beside the view, row 11's right four cells and row 12's left four."
  },
  {
   "address": 20512,
   "type": "line",
   "text": "The window bitmap at $4000: row 12's right four cells, the bottom of the right canopy pillar."
  },
  {
   "address": 20544,
   "type": "line",
   "text": "Sprite block $41: the gunsight, a cross with a gap in the middle, window sprite 0 while looking ahead."
  },
  {
   "address": 20608,
   "type": "line",
   "text": "Sprite block $42: a small dot in its top corner, where window sprites 2-6 point when the flight starts, before any missile is fired."
  },
  {
   "address": 20672,
   "type": "line",
   "text": "Sprite block $43: four corners of a large box, where window sprite 7 points when the flight starts."
  },
  {
   "address": 20736,
   "type": "line",
   "text": "The high bytes of the units' x positions, in sixteenths of a map square (the square's column is (x + 8) / 16), 128 units: 0 the helicopter, 1 the chaff, 2 the flares, 3 and 4 unused here, 5 the Hind, 6 on the ground units (88 in this mission, to $5D). Units 0-5 keep their low bytes at $517A."
  },
  {
   "address": 20741,
   "type": "line",
   "text": "The high byte of the Hind's x, then the ground units' (unit 6 at $5106)."
  },
  {
   "address": 20805,
   "type": "line",
   "text": "The high bytes of x of units 69 to 127, past unit_x_hind's reach; this mission's last unit is 93."
  },
  {
   "address": 20858,
   "type": "line",
   "text": "The fine x of units 0-5 (low bytes): the helicopter, chaff, flares, two unused and the Hind."
  },
  {
   "address": 20863,
   "type": "line",
   "text": "The Hind's fine x (low byte); view_squares takes it, even, for the Hind's object."
  },
  {
   "address": 20864,
   "type": "line",
   "text": "The high bytes of the units' y positions, in sixteenths of a map square, 128 units."
  },
  {
   "address": 20869,
   "type": "line",
   "text": "The high byte of the Hind's y, then the ground units'."
  },
  {
   "address": 20933,
   "type": "line",
   "text": "The high bytes of y of units 69 to 127."
  },
  {
   "address": 20986,
   "type": "line",
   "text": "The fine y of units 0-5 (low bytes)."
  },
  {
   "address": 20991,
   "type": "line",
   "text": "The Hind's fine y."
  },
  {
   "address": 20992,
   "type": "line",
   "text": "For units 0-5 the heading; for ground units the map square they stand in, row and column in a nibble each, kept when the unit is destroyed so its place in $E200 can be cleared."
  },
  {
   "address": 20997,
   "type": "line",
   "text": "The Hind's heading, then the ground units' squares."
  },
  {
   "address": 21061,
   "type": "line",
   "text": "The map squares of units 69 to 127."
  },
  {
   "address": 21114,
   "type": "line",
   "text": "The heights of units 0-5, low bytes."
  },
  {
   "address": 21119,
   "type": "line",
   "text": "The Hind's height, low byte."
  },
  {
   "address": 21120,
   "type": "line",
   "text": "Each unit's alert byte: bits 0-2 its slot among the units of its square (its bit in $E200), the bits above how roused it is."
  },
  {
   "address": 21184,
   "type": "line",
   "text": "The alert bytes of units 64 to 127."
  },
  {
   "address": 21242,
   "type": "line",
   "text": "The heights of units 0-5, high bytes."
  },
  {
   "address": 21247,
   "type": "line",
   "text": "The Hind's height, high byte."
  },
  {
   "address": 21248,
   "type": "line",
   "text": "Each unit's type byte: bits 0-3 its kind, bit 4 seen, bit 5 friendly, bits 6 and 7 a secondary or primary target; 0 once destroyed."
  },
  {
   "address": 21312,
   "type": "line",
   "text": "The type bytes of units 64 to 127; 0 past the mission's last unit."
  },
  {
   "address": 21376,
   "type": "line",
   "text": "A fifth byte of each unit's record, read into zpa_59 and written back with it (unit_read, unit_write); no routine uses zpa_59. For units 24 on it is the bytes of the tables that follow."
  },
  {
   "address": 21400,
   "type": "line",
   "text": "Where each store's count is printed, x in pixels of two: rounds $4C, Sidewinders $3E, FFARs $4C, Hellfires $5A, flares $5A, chaff $3E. The six values from here to $53D7 come from the DATA in the loader's BASIC."
  },
  {
   "address": 21406,
   "type": "line",
   "text": "Each store's count's row: rounds $C2, Sidewinders, FFARs and Hellfires $B2, flares and chaff $C2."
  },
  {
   "address": 21412,
   "type": "line",
   "text": "The target box's colour by how good the shot would be, read through $5398's index from 12 on: black, dark grey, light grey, white, and $53A8's first byte, white, for the best shot at night."
  },
  {
   "address": 21416,
   "type": "line",
   "text": "Each unit type's attributes, 16 types: bits 0-2 its weapon (0-2 a gun reaching (n+1) \u00d7 $800, 3 on a missile of that kind), bit 4 it sees as far as $800 on its own, bit 6 it has radar."
  },
  {
   "address": 21432,
   "type": "line",
   "text": "The panel lamp for each of the 14 damage bits."
  },
  {
   "address": 21448,
   "type": "line",
   "text": "The lamp colour for each damage bit when it is set: 7, yellow, or 10, light red."
  },
  {
   "address": 21464,
   "type": "line",
   "text": "The stores: rounds for the cannon (60 at the start of this flight). Then $53D9 to $53DD."
  },
  {
   "address": 21465,
   "type": "line",
   "text": "Sidewinders left."
  },
  {
   "address": 21466,
   "type": "line",
   "text": "FFARs left."
  },
  {
   "address": 21467,
   "type": "line",
   "text": "Hellfires left."
  },
  {
   "address": 21468,
   "type": "line",
   "text": "Flares left."
  },
  {
   "address": 21469,
   "type": "line",
   "text": "Chaff left."
  },
  {
   "address": 21470,
   "type": "line",
   "text": "Two bytes the loader's BASIC does not set; nothing reads them."
  },
  {
   "address": 21472,
   "type": "line",
   "text": "The primary target's record: how many of its units must be destroyed (6 here), then up to eleven unit numbers, 0 after the last."
  },
  {
   "address": 21484,
   "type": "line",
   "text": "The secondary target's record, the same (4 here)."
  },
  {
   "address": 21496,
   "type": "line",
   "text": "Three bytes between the records and the Hind's base that nothing sets or reads."
  },
  {
   "address": 21499,
   "type": "line",
   "text": "The Hind's base: the unit it takes off from and goes back to (61 here), from the theatre file's $909C."
  },
  {
   "address": 21500,
   "type": "line",
   "text": "Four bytes after it that nothing reads."
  },
  {
   "address": 21504,
   "type": "line",
   "text": "One ground unit's turn, unit zpa_45. Its record is read (unit_read); a destroyed one (type 0) is skipped. Its type's attributes, zpa_5A, come from $53A8. The differences to the helicopter in x and y, zpa_66-zpa_69 (in quarters), and their sum zpa_6E-zpa_6F are worked out."
  },
  {
   "address": 21653,
   "type": "line",
   "text": "Whether it sees the helicopter: not beyond the height plus half the speed plus zpa_51 (twice that for a radar unit while the radar jammer is on); a unit without radar not beyond its own range ($800 for types with bit 4, half at night); a radar unit already tracking loses it while the jammer or chaff works; not behind a hill (hill_between). Friendly units ($20 in the type byte) never engage."
  },
  {
   "address": 21805,
   "type": "line",
   "text": "If it can, its alert count (bits 3-4 of zpa_57) goes up. At 1 it is put on the radar scope (s_81A2) and marked seen on the map; at 2 a radar unit lights the radar warning (zpa_48); at 3 it fires."
  },
  {
   "address": 21869,
   "type": "line",
   "text": "A gun unit (attributes 0-2) shoots within (its attributes + 1) \u00d7 $800: a hit, damage effect 7 (hit_helicopter), when a random fraction of that beats the distance; a miss puts the count back. A missile unit launches one (s_819F) from where it stands at the helicopter's bearing, of its own type, when fewer than four enemy missiles fly ($81AE), with sound 8. Either way the count starts again (unit_calm)."
  },
  {
   "address": 22062,
   "type": "line",
   "text": "After the last unit of this pass: the threat lamps. With the aft avionics working, lamp $0F lights for a radar missile homing on the helicopter (bit 7 of $81AE) or flashes while a radar unit tracks it (zpa_48), and lamp $10 for an infrared one (bit 6); with them hit, all five lamps $0F-$13 are out and both jammers off."
  },
  {
   "address": 22157,
   "type": "line",
   "text": "What is under the helicopter (s_81CA): over map character $26, a friendly base, with a mission done and no challenge yet ($7043 below 4), the challenge for the password starts (zpa_88 = 1). Then the challenge's own step (challenge)."
  },
  {
   "address": 22223,
   "type": "line",
   "text": "The Hind, unit 5, when it is in the air (x not 0). It flies at the helicopter, or back towards its base, the unit at $53FB, while the helicopter is over a friendly base (or the hill test at the Hind's own point is set)."
  },
  {
   "address": 22311,
   "type": "line",
   "text": "Its heading zpa_52 turns two steps a pass towards the bearing it wants (straight to it when going home). Seeing the helicopter, with no hill between at three points on the way, and pointing nearly at it, it fires: a hit, damage effect 7 (hit_helicopter), when a random fraction of a range set by the style (doubled by day) is beyond the distance."
  },
  {
   "address": 22637,
   "type": "line",
   "text": "It flies 50 units a pass along its heading, at 32 below the helicopter's height (at least 24), and its record is written back."
  },
  {
   "address": 22733,
   "type": "line",
   "text": "Every sixteenth pass: has the helicopter landed and stopped (landed_check)? If the flight has ended (zpa_82 not 0) the Hind is grounded, the units on the radar scope are taken off it, the missiles cleared ($81AC), and the main loop returns."
  },
  {
   "address": 22790,
   "type": "line",
   "text": "Otherwise fuel is burnt: with both engines running the collective times three from each tank, with one half that, with none nothing; a tank burns double when the other is empty, and a leak (damage bits 8 and 9) takes $60 more. Neither goes below 0."
  },
  {
   "address": 22900,
   "type": "line",
   "text": "On a random chance by the style (zpa_4C): a grounded Hind is sent up again from its base ($53FB), if that unit still stands, with the message \"ENEMY HIND HELICOPTER AIRBORNE\" (7); or, once in 256 passes with the Hind up and no mission done, the primary and secondary targets swap (s_7044), with message 6. With the nose optics hit (damage bit 6) the CRT changes display by itself (s_810C). Then round again."
  },
  {
   "address": 22983,
   "type": "line",
   "text": "Starts sound effect zpa_6E (s_8197 with the table at $EC00), the volume full."
  },
  {
   "address": 23004,
   "type": "line",
   "text": "A unit whose alert count is not 0 is taken off the radar scope (s_81A5); a radar unit that had reached 2 stops lighting the warning (zpa_48 down by one). The count is cleared."
  },
  {
   "address": 23038,
   "type": "line",
   "text": "Lights panel lamp zpa_33 in colour zpa_6E (s_81B5). Numbers below 14 are the damage word's bits, put in lamp numbers by the table at $53B8."
  },
  {
   "address": 23058,
   "type": "line",
   "text": "Puts the five weapon lamps $16-$1A out (colour 14)."
  },
  {
   "address": 23077,
   "type": "line",
   "text": "Takes one from store x ($53D8 on: rounds, Sidewinders, FFARs, Hellfires, flares, chaff) and redraws the numbers; A is 1 if there was one, 0 if the store was empty."
  },
  {
   "address": 23091,
   "type": "line",
   "text": "Prints the six stores numbers on the panel, each at its place from the tables at $5398 and $539E."
  },
  {
   "address": 23121,
   "type": "line",
   "text": "Destroys unit zpa_6E. The Hind (5) is taken out of the air and counted in zpa_83. Any other has its bit cleared in the map's page at $E200, its type byte zeroed (the old one kept at $5200) and the map redrawn; a friendly one ($20 in its type byte) brings the message \"CEASE FIRE ... FRIENDLY TROOPS HAVE BEEN HIT\" (8); otherwise the missions are checked (s_7040), and a mission completed brings message 9 or 10."
  },
  {
   "address": 23261,
   "type": "line",
   "text": "The hit chances out of 16, by the attacker's attributes (zpa_5A & 7): 4, 8, always, 8, then always for 4-7."
  },
  {
   "address": 23269,
   "type": "line",
   "text": "The helicopter is hit, by effect zpa_6E. It can miss: a random 0-15 against the table at $5ADD by the attacker's attributes, then the pass counter's low two bits against zpa_4C, the style plus 1 on a mission and 0 in training: in training nothing ever hits, and on a mission a quarter, a half or three quarters of the shots that pass the first test hit, by the style. Otherwise a random bit of the damage word is set (s_8103 for 0-13); an engine hit stops its gauge; a wing halves the missiles, or empties them with the other wing gone too. Every hit shakes the screen and counts in zpa_4D, and more than 7 less zpa_4C stop both engines."
  },
  {
   "address": 23435,
   "type": "line",
   "text": "The sound, the border's flash, and the damage lamps redrawn."
  },
  {
   "address": 23444,
   "type": "line",
   "text": "Lights the 14 damage lamps from the damage word zpa_74-zpa_75: in the colour from $53C8 (yellow or light red) for a set bit, green for a clear one."
  },
  {
   "address": 23481,
   "type": "line",
   "text": "Every sixteenth pass: with both engines off, the rotor below 32, the helicopter on the ground and a landing graded (zpa_86), the flight ends with that grade, zpa_82."
  },
  {
   "address": 23506,
   "type": "line",
   "text": "Twice the differences zpa_66-zpa_69 added to the unit's position, put through the map's hill test (s_81CA): A5 and A6 are not 0 when that point is on a hill. Run three times along the line, it says whether a hill hides the helicopter."
  },
  {
   "address": 23560,
   "type": "line",
   "text": "Shows CRT message zpa_6E (s_78C0)."
  },
  {
   "address": 23568,
   "type": "line",
   "text": "112 bytes between the last routine and the sprite shapes, nibble pairs like screen colours; nothing in the flight reads them."
  },
  {
   "address": 23680,
   "type": "line",
   "text": "Sprite blocks $72-$77: the cannon's tracer, six frames from a tight burst to scattered sparks. Sprite 1 steps through them while the gun fires ($81CD); a missile far off uses them too, by its distance ($957E)."
  },
  {
   "address": 24064,
   "type": "line",
   "text": "Sprite blocks $78-$7B: an FFAR leaving the left wing, four frames, each smaller as it draws away."
  },
  {
   "address": 24320,
   "type": "line",
   "text": "Sprite blocks $7C-$7F: an FFAR leaving the right wing, four frames."
  },
  {
   "address": 24576,
   "type": "line",
   "text": "The window bitmap at $6000, row 0: the strip of fourteen damage lamps along the canopy's top, each a letter in a box, which the lamps' colour RAM lights; then row 1's first four cells, the left canopy pillar. The same picture as the other buffer's."
  },
  {
   "address": 25184,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 1's right four cells and row 2's left four."
  },
  {
   "address": 25504,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 2's right four cells and row 3's left four."
  },
  {
   "address": 25824,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 3's right four cells and row 4's left four."
  },
  {
   "address": 26144,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 4's right four cells and row 5's left four."
  },
  {
   "address": 26464,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 5's right four cells and row 6's left four."
  },
  {
   "address": 26784,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 6's right four cells and row 7's left four."
  },
  {
   "address": 27104,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 7's right four cells and row 8's left four."
  },
  {
   "address": 27424,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 8's right four cells and row 9's left four."
  },
  {
   "address": 27744,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 9's right four cells and row 10's left four."
  },
  {
   "address": 28064,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 10's right four cells and row 11's left four."
  },
  {
   "address": 28384,
   "type": "line",
   "text": "The window bitmap at $6000: the canopy pillars beside the view, row 11's right four cells and row 12's left four."
  },
  {
   "address": 28704,
   "type": "line",
   "text": "The window bitmap at $6000: row 12's right four cells, the bottom of the right canopy pillar."
  },
  {
   "address": 28736,
   "type": "line",
   "text": "The engine's own jump table here: $7040 checks the missions, $7044 swaps them."
  },
  {
   "address": 28739,
   "type": "line",
   "text": "Bits 0 and 1: the primary and the secondary target destroyed; bit 2: the challenge at a base has started."
  },
  {
   "address": 28740,
   "type": "line",
   "text": "$7044: swap the primary and secondary targets (swap_missions)."
  },
  {
   "address": 28743,
   "type": "line",
   "text": "A mission is done when as many of its units as its record's first byte says are destroyed (type byte 0); the record, at $53E0 or $53EC, lists up to eleven. Returns the newly done bits in zpa_A5 and adds them to $7043."
  },
  {
   "address": 28836,
   "type": "line",
   "text": "check_missions's result: 1 for the primary target done, plus 2 for the secondary; the bits new since last time go to zpa_A5 and all of them into mission_bits."
  },
  {
   "address": 28837,
   "type": "line",
   "text": "How many of the target's units are still to be destroyed, counted down from its record's first byte for each one gone."
  },
  {
   "address": 28838,
   "type": "line",
   "text": "Swaps the twelve-byte records of the primary and secondary targets at $53E0 and $53EC."
  },
  {
   "address": 28858,
   "type": "line",
   "text": "Six bytes after the last routine, the tail of sprite block $C2, which no sprite shows."
  },
  {
   "address": 28864,
   "type": "line",
   "text": "Sprite block $C3: every pixel set, a solid square; no pointer in the flight is set to it."
  },
  {
   "address": 28928,
   "type": "line",
   "text": "Sprite blocks $C4-$C7: a Sidewinder or Hellfire leaving the right wing with its smoke trail, four frames, each smaller."
  },
  {
   "address": 29184,
   "type": "line",
   "text": "Sprite blocks $C8-$D1: a missile in flight seen from behind, five sizes from near to far, two frames each that the interrupt swaps every eighth frame so it flickers ($C8 plus twice its distance class)."
  },
  {
   "address": 29824,
   "type": "line",
   "text": "Sprite blocks $D2-$D7: an explosion's six frames, from a fireball to scattered debris, by its timer; the enemy's gun flashes use $D2-$D5."
  },
  {
   "address": 30208,
   "type": "line",
   "text": "Sprite block $D8: the target box, four small corners, window sprite 1 over the locked target."
  },
  {
   "address": 30272,
   "type": "line",
   "text": "Sprite blocks $D9-$DC: the target box with sparks of the hits, which sprite 1 cycles through when the cannon strikes."
  },
  {
   "address": 30528,
   "type": "line",
   "text": "Sprite blocks $DD-$E0: a Sidewinder or Hellfire leaving the left wing, four frames."
  },
  {
   "address": 30912,
   "type": "line",
   "text": "Three entries for the CRT's messages: show one ($78C0), show one by number in x ($78C3), print zpa_12's text ($78C6)."
  },
  {
   "address": 30915,
   "type": "line",
   "text": "$78C3: show message x on the CRT's title line (show_message)."
  },
  {
   "address": 30918,
   "type": "line",
   "text": "$78C6: print the waiting message zpa_12 on the CRT (print_message)."
  },
  {
   "address": 30921,
   "type": "line",
   "text": "The challenge's message, number 3: PASSWORD:, the codeword's letters (copied in from $03BC-$03C4), ENTER COUNTRSIGN and the line the countersign is typed on, in the font's own codes (1 for A); a byte with bit 7 starts a new line."
  },
  {
   "address": 30930,
   "type": "line",
   "text": "The line break before the codeword: $9F, then nine places the challenge fills with the codeword's letters (E6A8)."
  },
  {
   "address": 30931,
   "type": "line",
   "text": "The codeword's nine letters, hyphens ($1E) until the challenge copies them in, then ENTER COUNTRSIGN on two lines."
  },
  {
   "address": 30958,
   "type": "line",
   "text": "The countersign's line: $9E starts it, then nine places for the letters typed, ended by $FF. The challenge's checksum reads it beside the codeword."
  },
  {
   "address": 30969,
   "type": "line",
   "text": "Prints message zpa_12 on the CRT, into both panel bitmaps at $D339 and $F339, each letter five lines of the map font at $C800, from the tables of addresses at $7B04 and $7B26. zpa_12 is then $FF, nothing waiting."
  },
  {
   "address": 31010,
   "type": "line",
   "text": "The low byte of the message's address, patched in from $7B04."
  },
  {
   "address": 31011,
   "type": "line",
   "text": "The high byte of the message's address, from $7B26. Each byte of the message is a character of the map font: 1 for A; the font draws 10 and 24, J and X, as 7 and 8, and has 1 at $2F, 2-4 at $3A-$3C, 5 and 6 at $3E-$3F, 9 at $00, a colon at $1C and an exclamation mark at $2E. With bit 7 set the character starts a new line, 320 bytes further on; $FF ends the message."
  },
  {
   "address": 31059,
   "type": "line",
   "text": "The letter's place in the font, eight bytes to a letter, patched in."
  },
  {
   "address": 31060,
   "type": "line",
   "text": "The font's page, $C8 plus the carry, patched in. Each letter is five bytes of the map font at $C800 plus eight times its code, written into both bitmaps (zpa_FB and zpa_A6), eight bytes to the right of the last."
  },
  {
   "address": 31084,
   "type": "line",
   "text": "Prints message x on the CRT's title line ($D1F8), after blanking it (message 2), coloured white, light red for the enemy's names (11-24) or light green for friendly ones (25 on). While a longer message waits (zpa_12 positive) it does nothing."
  },
  {
   "address": 31085,
   "type": "line",
   "text": "The message's number, kept here while the title line is blanked."
  },
  {
   "address": 31126,
   "type": "line",
   "text": "The colour RAM page for the title line's colour, patched in: $DA, or $06 for the copy at $0600 while the big map is up."
  },
  {
   "address": 31138,
   "type": "line",
   "text": "Prints message x on the title line at $D1F8 and $F1F8. Messages 0 and 1, RADIO MSG and TARGET, go into the second panel bitmap only, at $F1F8: the panel shows each bitmap in turn, so those two blink."
  },
  {
   "address": 31155,
   "type": "line",
   "text": "Message 2: ten spaces, which blank the CRT's title line before another message is printed there."
  },
  {
   "address": 31166,
   "type": "line",
   "text": "Message 1: \"TARGET\", printed on the CRT's title line in one panel bitmap only, so it blinks."
  },
  {
   "address": 31176,
   "type": "line",
   "text": "Message 0: \"RADIO MSG\", printed on the CRT's title line in one panel bitmap only, so it blinks. Letters are the map font's codes, 1 for A; a byte with bit 7 starts a line; $FF ends it."
  },
  {
   "address": 31186,
   "type": "line",
   "text": "Message 4: \"INCORRECT / COUNTRSIGN /   / SEND AGAIN\" (a slash is a new line), shown on the CRT."
  },
  {
   "address": 31217,
   "type": "line",
   "text": "Message 5: \"FALSE / COUNTRSIGN /   /  DESTROY / INTRUDING / HELICOPTER\" (a slash is a new line), shown on the CRT."
  },
  {
   "address": 31263,
   "type": "line",
   "text": "Message 6: \"MISSION /  CHANGE: / SECONDARY /   TARGET /   IS NOW /  PRIMARY!\" (a slash is a new line), shown on the CRT."
  },
  {
   "address": 31314,
   "type": "line",
   "text": "Message 7: \"SURV RADAR /   ALERT: /   / ENEMY HIND / HELICOPTER /  AIRBORNE\" (a slash is a new line), shown on the CRT."
  },
  {
   "address": 31363,
   "type": "line",
   "text": "Message 8: \"CEASE FIRE /   /  FRIENDLY /   TROOPS / HAVE BEEN /    HIT!\" (a slash is a new line), shown on the CRT."
  },
  {
   "address": 31408,
   "type": "line",
   "text": "Message 9: \"CONGRATS! /   /  PRIMARY /   TARGET / DESTROYED\" (a slash is a new line), shown on the CRT."
  },
  {
   "address": 31444,
   "type": "line",
   "text": "Message 10: \"CONGRATS! /   / SECONDARY /   TARGET / DESTROYED\" (a slash is a new line), shown on the CRT."
  },
  {
   "address": 31481,
   "type": "line",
   "text": "Message 11: \"MI-24 HIND\", the name the CRT's title line shows for the Hind, in light red like the other enemy names (11-24)."
  },
  {
   "address": 31492,
   "type": "line",
   "text": "The 33 messages' addresses, low bytes."
  },
  {
   "address": 31525,
   "type": "line",
   "text": "A 34th low byte, $FF, that no message number reaches."
  },
  {
   "address": 31526,
   "type": "line",
   "text": "The 33 messages' addresses, high bytes."
  },
  {
   "address": 31559,
   "type": "line",
   "text": "Message 12: \"PACT INF\", the name the CRT's title line shows for a target whose shape has name byte N, as message N plus 11."
  },
  {
   "address": 31569,
   "type": "line",
   "text": "Messages 13 and 14: \"T-72\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31577,
   "type": "line",
   "text": "Message 15: \"BMP-1\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31585,
   "type": "line",
   "text": "Message 16: \"SA-8\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31593,
   "type": "line",
   "text": "Message 17: \"SA-9\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31601,
   "type": "line",
   "text": "Message 18: \"ZSU-23-4\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31611,
   "type": "line",
   "text": "Message 19: \"S60 57MM\", its zero the letter O, the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31621,
   "type": "line",
   "text": "Messages 20 and 21: \"BUNKER\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31630,
   "type": "line",
   "text": "Message 22: \"PACT BASE\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31640,
   "type": "line",
   "text": "Message 23: \"PACT DEPOT\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31651,
   "type": "line",
   "text": "Message 24: \"PACT HQ\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31660,
   "type": "line",
   "text": "Messages 25 and 26: \"M1 ABRAMS\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31670,
   "type": "line",
   "text": "Message 27: \"M2 BRADLEY\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31681,
   "type": "line",
   "text": "Messages 28 and 29: \"NATO INF\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31691,
   "type": "line",
   "text": "Messages 30, 31 and 32: \"NATO BASE\", the CRT's title line's name for a target of that kind."
  },
  {
   "address": 31744,
   "type": "line",
   "text": "The window's screen, rows 0-12: each cell's two colours in the bitmap (high nibble for one pixel pair, low for another), the canopy frame's greys round the edge and the 3D view's own inside it. The same at the hand-over and in flight."
  },
  {
   "address": 32264,
   "type": "line",
   "text": "The window's screen from row 13 on, under the panel, which the window's bitmap never shows."
  },
  {
   "address": 33024,
   "type": "line",
   "text": "The engine's jump table, the calls the main loop makes. $8100: draw the map (draw_map)."
  },
  {
   "address": 33027,
   "type": "line",
   "text": "$8103: multiply by A, an unsigned fraction of 256 (j_9D49)."
  },
  {
   "address": 33030,
   "type": "line",
   "text": "$8106: draw the 3D view (view_frame)."
  },
  {
   "address": 33033,
   "type": "line",
   "text": "$8109: multiply by the sine of zpa_A8 (j_9D44)."
  },
  {
   "address": 33036,
   "type": "line",
   "text": "$810C: step the CRT on to its next mode (crt_next)."
  },
  {
   "address": 33039,
   "type": "line",
   "text": "$810F: swap the window's buffers (swap_buffers)."
  },
  {
   "address": 33042,
   "type": "line",
   "text": "$8112: change the view, to the map, a picture or back to the cockpit (change_view)."
  },
  {
   "address": 33045,
   "type": "line",
   "text": "$8115: start the engine (engine_on)."
  },
  {
   "address": 33048,
   "type": "line",
   "text": "$8118: stop the engine (engine_off)."
  },
  {
   "address": 33051,
   "type": "line",
   "text": "$811B: draw the dials and the gauges (dials)."
  },
  {
   "address": 33054,
   "type": "line",
   "text": "$811E: draw the attitude indicator (attitude)."
  },
  {
   "address": 33057,
   "type": "line",
   "text": "$8121: print a number in one figure (j_C142); nothing calls it."
  },
  {
   "address": 33060,
   "type": "line",
   "text": "$8124: print a number in two figures (j_C152), for the stores."
  },
  {
   "address": 33063,
   "type": "line",
   "text": "$8127: print a number in three figures (j_C1C8); nothing calls it."
  },
  {
   "address": 33066,
   "type": "line",
   "text": "$812A: print the bearing (print_bearing)."
  },
  {
   "address": 33069,
   "type": "line",
   "text": "The eye's x, low byte, set each pass by the main loop from the helicopter's position: the view is drawn from here."
  },
  {
   "address": 33070,
   "type": "line",
   "text": "The eye's x, high byte; view_squares leaves the eye's place within its square here."
  },
  {
   "address": 33071,
   "type": "line",
   "text": "The eye's y, low byte."
  },
  {
   "address": 33072,
   "type": "line",
   "text": "The eye's y, high byte; view_squares leaves the place within the square here too."
  },
  {
   "address": 33073,
   "type": "line",
   "text": "The eye's height, low byte."
  },
  {
   "address": 33074,
   "type": "line",
   "text": "The eye's height, high byte."
  },
  {
   "address": 33075,
   "type": "line",
   "text": "The view's heading, 0 to 255 for a full turn: the helicopter's, or to the side or behind when the pilot looks round."
  },
  {
   "address": 33076,
   "type": "line",
   "text": "The view's pitch."
  },
  {
   "address": 33077,
   "type": "line",
   "text": "The view's roll."
  },
  {
   "address": 33078,
   "type": "line",
   "text": "The target picker's left limit: an object whose screen x is less is not offered as a target (target_pick). $8196 is the right."
  },
  {
   "address": 33079,
   "type": "line",
   "text": "The airspeed needle's angle: about three quarters of the speed zpa_6C (needle 0, sprite 4)."
  },
  {
   "address": 33080,
   "type": "line",
   "text": "The altimeter needle's angle, from the low byte of $8145 (needle 1, sprite 5)."
  },
  {
   "address": 33081,
   "type": "line",
   "text": "The vertical speed needle's angle, from zpa_3F through the sine table (needle 2, sprite 6)."
  },
  {
   "address": 33082,
   "type": "line",
   "text": "The pitch for the attitude indicator, held between -$14 and $13."
  },
  {
   "address": 33083,
   "type": "line",
   "text": "The roll for the attitude indicator."
  },
  {
   "address": 33084,
   "type": "line",
   "text": "A number to print, three figures at most (j_C1C8); for the heading and the bearing, 0-255 for a turn (print_bearing)."
  },
  {
   "address": 33085,
   "type": "line",
   "text": "The seven bar gauges' values (gauges), the first the fore fuel tank."
  },
  {
   "address": 33086,
   "type": "line",
   "text": "Bar gauge 1: the aft fuel tank."
  },
  {
   "address": 33087,
   "type": "line",
   "text": "Bar gauge 2: engine 1's torque."
  },
  {
   "address": 33088,
   "type": "line",
   "text": "Bar gauge 3: engine 2's torque."
  },
  {
   "address": 33089,
   "type": "line",
   "text": "Bar gauge 4: engine 1, full while it runs; $80 set at the start and on a hit so it drops at once."
  },
  {
   "address": 33090,
   "type": "line",
   "text": "Bar gauge 5: the rotor's speed."
  },
  {
   "address": 33091,
   "type": "line",
   "text": "Bar gauge 6: engine 2, full while it runs."
  },
  {
   "address": 33092,
   "type": "line",
   "text": "The heading, printed as a bearing under the compass and used for the CRT's helicopter mark."
  },
  {
   "address": 33093,
   "type": "line",
   "text": "The height times 1.25, low byte: what the altimeter shows."
  },
  {
   "address": 33094,
   "type": "line",
   "text": "The height times 1.25, high byte, printed in the altimeter's box."
  },
  {
   "address": 33095,
   "type": "line",
   "text": "How near an object must be to be offered as a target, by the height (s_3ECD)."
  },
  {
   "address": 33096,
   "type": "line",
   "text": "A position handed between routines: x, low byte (a missile's launch point, a gun unit's shot, the map cross, the hill test)."
  },
  {
   "address": 33097,
   "type": "line",
   "text": "The handed position's x, high byte."
  },
  {
   "address": 33098,
   "type": "line",
   "text": "The handed position's y, low byte."
  },
  {
   "address": 33099,
   "type": "line",
   "text": "The handed position's y, high byte."
  },
  {
   "address": 33100,
   "type": "line",
   "text": "The handed position's height, low byte."
  },
  {
   "address": 33101,
   "type": "line",
   "text": "The handed position's height, high byte."
  },
  {
   "address": 33102,
   "type": "line",
   "text": "The helicopter's own position, kept for the missiles and the scope: x, low byte."
  },
  {
   "address": 33103,
   "type": "line",
   "text": "The helicopter's x, high byte."
  },
  {
   "address": 33104,
   "type": "line",
   "text": "The helicopter's y, low byte."
  },
  {
   "address": 33105,
   "type": "line",
   "text": "The helicopter's y, high byte."
  },
  {
   "address": 33106,
   "type": "line",
   "text": "The helicopter's height, low byte."
  },
  {
   "address": 33107,
   "type": "line",
   "text": "The helicopter's height, high byte."
  },
  {
   "address": 33108,
   "type": "line",
   "text": "The window's eight sprites, which sprites_copy copies into the interrupt routine each frame: sprite 0's x, the sight at $A0."
  },
  {
   "address": 33109,
   "type": "line",
   "text": "Sprite 1's x: the target's box. Its distance from the middle ($9E) is the aim error."
  },
  {
   "address": 33110,
   "type": "line",
   "text": "Sprites 2-7's x: the missiles in flight and the explosions."
  },
  {
   "address": 33116,
   "type": "line",
   "text": "Sprite 0's y: $55 when the sight is shown, 0 to hide it."
  },
  {
   "address": 33117,
   "type": "line",
   "text": "Sprite 1's y, the target's box."
  },
  {
   "address": 33118,
   "type": "line",
   "text": "Sprites 2-7's y."
  },
  {
   "address": 33124,
   "type": "line",
   "text": "The window sprites' colours: sprite 0's."
  },
  {
   "address": 33125,
   "type": "line",
   "text": "Sprite 1's colour."
  },
  {
   "address": 33126,
   "type": "line",
   "text": "Sprites 2-7's colours."
  },
  {
   "address": 33132,
   "type": "line",
   "text": "The window sprites' shape numbers: sprite 0's, $41 the sight; sprite 1's, $D8 the target's box."
  },
  {
   "address": 33134,
   "type": "line",
   "text": "Sprites 2-7's shapes: a missile's, $C8 plus twice its distance class."
  },
  {
   "address": 33140,
   "type": "line",
   "text": "The window sprites' x high bits."
  },
  {
   "address": 33141,
   "type": "line",
   "text": "The panel's eight sprites: sprite 0's x, the attitude indicator's ladder."
  },
  {
   "address": 33142,
   "type": "line",
   "text": "Panel sprite 1's x: the helicopter's mark on the CRT map, or the cross on the big map."
  },
  {
   "address": 33143,
   "type": "line",
   "text": "Panel sprite 2's x: the slip mark under the compass."
  },
  {
   "address": 33144,
   "type": "line",
   "text": "Panel sprite 3's x: the waypoint's mark under the compass."
  },
  {
   "address": 33145,
   "type": "line",
   "text": "Panel sprites 4-7's x: the four needles, airspeed, altimeter, vertical speed and compass."
  },
  {
   "address": 33148,
   "type": "line",
   "text": "Panel sprite 7's x, the compass needle, also written by the rose (j_BC5C)."
  },
  {
   "address": 33149,
   "type": "line",
   "text": "Panel sprite 0's y."
  },
  {
   "address": 33150,
   "type": "line",
   "text": "Panel sprites 1-3's y."
  },
  {
   "address": 33153,
   "type": "line",
   "text": "Panel sprites 4-7's y."
  },
  {
   "address": 33157,
   "type": "line",
   "text": "The panel sprites' colours."
  },
  {
   "address": 33165,
   "type": "line",
   "text": "The panel sprites' shape numbers: sprite 0's, $B4."
  },
  {
   "address": 33166,
   "type": "line",
   "text": "Panel sprites 1-3's shapes: $40 the CRT's helicopter mark, $B5 the slip mark, $B6 the waypoint mark."
  },
  {
   "address": 33169,
   "type": "line",
   "text": "Panel sprites 4-7's shapes: each needle's, $80-$83 or $84-$87 by the buffer it was drawn in."
  },
  {
   "address": 33173,
   "type": "line",
   "text": "The panel sprites' x high bits."
  },
  {
   "address": 33174,
   "type": "line",
   "text": "The target picker's right limit, $5E."
  },
  {
   "address": 33175,
   "type": "line",
   "text": "Start a sound effect (sound_start); $819A-$819B the effect running."
  },
  {
   "address": 33178,
   "type": "line",
   "text": "The sound effect being played: its list's address, low byte."
  },
  {
   "address": 33179,
   "type": "line",
   "text": "Its high byte; 0 when nothing plays."
  },
  {
   "address": 33180,
   "type": "line",
   "text": "The missiles' calls: $819C move them all (missiles), $819F launch one (launch), $81A2 put a unit on the radar scope (radar_add), $81A5 take one off (radar_remove)."
  },
  {
   "address": 33183,
   "type": "line",
   "text": "$819F: launch a missile (launch)."
  },
  {
   "address": 33186,
   "type": "line",
   "text": "$81A2: put a unit on the radar scope (radar_add)."
  },
  {
   "address": 33189,
   "type": "line",
   "text": "$81A5: take a unit off the radar scope (radar_remove)."
  },
  {
   "address": 33192,
   "type": "line",
   "text": "The chaff's timer as the missiles see it: while it runs, a radar missile may be decoyed."
  },
  {
   "address": 33193,
   "type": "line",
   "text": "The flares' timer as the missiles see it."
  },
  {
   "address": 33194,
   "type": "line",
   "text": "The radar jammer: on when not 0."
  },
  {
   "address": 33195,
   "type": "line",
   "text": "The infrared jammer."
  },
  {
   "address": 33196,
   "type": "line",
   "text": "The six missile slots in use, a bit each."
  },
  {
   "address": 33197,
   "type": "line",
   "text": "How many of the player's missiles are flying."
  },
  {
   "address": 33198,
   "type": "line",
   "text": "The enemy's missiles flying, in bits 0-3; bit 7 set while one homes by radar, bit 6 by infrared (the threat lamps)."
  },
  {
   "address": 33199,
   "type": "line",
   "text": "Draw the radar scope (radar_scope); $81B2 a missile decoyed, $81B3 the helicopter hit, $81B4 the unit the player's missile destroyed."
  },
  {
   "address": 33202,
   "type": "line",
   "text": "Set when a missile is decoyed by chaff or a flare this pass."
  },
  {
   "address": 33203,
   "type": "line",
   "text": "Set when a missile hits the helicopter this pass."
  },
  {
   "address": 33204,
   "type": "line",
   "text": "The unit the player's missile destroyed this pass, 0 for none."
  },
  {
   "address": 33205,
   "type": "line",
   "text": "Light a panel lamp (lamp_set). $81B8-$81BF: the eight bit masks, 1 to 128."
  },
  {
   "address": 33208,
   "type": "line",
   "text": "Eight bit masks, 1 to 128, for the bit of a slot, a sprite or a missile."
  },
  {
   "address": 33210,
   "type": "line",
   "text": "The bit masks from 4: sprite 2's bit, for the missiles' sprites from 2 on."
  },
  {
   "address": 33211,
   "type": "line",
   "text": "The mask 8; a BIT here tests bit 3."
  },
  {
   "address": 33212,
   "type": "line",
   "text": "The masks 16 to 128, which BITs test."
  },
  {
   "address": 33216,
   "type": "line",
   "text": "The map cross's last place, one for each buffer: x for the first."
  },
  {
   "address": 33217,
   "type": "line",
   "text": "The cross's x for the second buffer."
  },
  {
   "address": 33218,
   "type": "line",
   "text": "The cross's y for the first buffer."
  },
  {
   "address": 33219,
   "type": "line",
   "text": "The cross's y for the second buffer."
  },
  {
   "address": 33220,
   "type": "line",
   "text": "The locked target's unit number (target_unit); $81C7-$81C8 the Hind's heading and whether it is drawn."
  },
  {
   "address": 33223,
   "type": "line",
   "text": "The Hind's heading, by which its shape's values are turned (view_frame)."
  },
  {
   "address": 33224,
   "type": "line",
   "text": "1 while the Hind is in the air and drawn, 0 when not."
  },
  {
   "address": 33226,
   "type": "line",
   "text": "The map's hill test at a position (hill_test). $81CD the gun's flash, $81CE the scope's scale, $81CF the screen's shake, $81D0 the enemy's gun flashes."
  },
  {
   "address": 33229,
   "type": "line",
   "text": "The gun's flash: a countdown, sprite 1's frames $72-$77; negative, the box shows the hits ($D9-$DC)."
  },
  {
   "address": 33230,
   "type": "line",
   "text": "The radar scope's scale."
  },
  {
   "address": 33231,
   "type": "line",
   "text": "The screen's shake, a countdown."
  },
  {
   "address": 33232,
   "type": "line",
   "text": "The enemy's gun flash, a countdown (sprite 2). Then, from $81D1, the drawing colours' pixel masks: four for each colour, each pixel place: colour 0 at $81D1, colour 1 at $81D5."
  },
  {
   "address": 33241,
   "type": "line",
   "text": "Colour 2's and colour 3's pixel masks, then colour 4's, the inverse of colour 1's, for rubbing out."
  },
  {
   "address": 33253,
   "type": "line",
   "text": "Colour 5's masks: each pixel place cleared."
  },
  {
   "address": 33257,
   "type": "line",
   "text": "Each pixel place filled, colour 3: for the panel's lines and dots."
  },
  {
   "address": 33261,
   "type": "line",
   "text": "The six missiles' x, low bytes."
  },
  {
   "address": 33267,
   "type": "line",
   "text": "The six missiles' x, high bytes."
  },
  {
   "address": 33273,
   "type": "line",
   "text": "The six missiles' y, low bytes."
  },
  {
   "address": 33279,
   "type": "line",
   "text": "The six missiles' y, high bytes."
  },
  {
   "address": 33285,
   "type": "line",
   "text": "The six missiles' heights, low bytes."
  },
  {
   "address": 33291,
   "type": "line",
   "text": "The six missiles' heights, high bytes."
  },
  {
   "address": 33297,
   "type": "line",
   "text": "The six missiles' kinds: their guidance flags from $AE12, bit 0 once exploding."
  },
  {
   "address": 33303,
   "type": "line",
   "text": "The six missiles' timers: how long each flies, then how long it explodes."
  },
  {
   "address": 33309,
   "type": "line",
   "text": "The locked target's map square."
  },
  {
   "address": 33310,
   "type": "line",
   "text": "The locked target's slot in its square, $FF for the Hind."
  },
  {
   "address": 33311,
   "type": "line",
   "text": "The slot of the object being drawn, $FF for the Hind: the target picker compares it."
  },
  {
   "address": 33312,
   "type": "line",
   "text": "The radar scope's colour for its scale, painted once after a change (scope_colour)."
  },
  {
   "address": 33313,
   "type": "line",
   "text": "Two more ways into the multiplier: by the sine ($8221, j_9D44) and the cosine ($8224, cos_mul) of zpa_A8."
  },
  {
   "address": 33316,
   "type": "line",
   "text": "$8224: multiply by the cosine of zpa_A8 (cos_mul)."
  },
  {
   "address": 33322,
   "type": "line",
   "text": "For each of the five size classes, how big an object is, low byte: added to its distance for the test of the window's sides."
  },
  {
   "address": 33327,
   "type": "line",
   "text": "The size classes' sizes, high byte."
  },
  {
   "address": 33332,
   "type": "line",
   "text": "The size classes' near distances: nearer, an object is drawn with its near shape."
  },
  {
   "address": 33337,
   "type": "line",
   "text": "The size classes' limits behind the eye, negative: an object farther behind is not drawn."
  },
  {
   "address": 33342,
   "type": "line",
   "text": "A colour that overrides each shape's own, 0 for none: 3 for what draw_objects draws after the Hind."
  },
  {
   "address": 33343,
   "type": "line",
   "text": "The window's left and right edges, 0 and $7F, for closing a hill's outline at the side it leaves by."
  },
  {
   "address": 33345,
   "type": "line",
   "text": "Which edge, 0 or 1, the clipper ($A1B7) last moved a hill's line to."
  },
  {
   "address": 33346,
   "type": "line",
   "text": "For each hill drawn this frame, nine at most: its leftmost screen x, $FF to start."
  },
  {
   "address": 33355,
   "type": "line",
   "text": "Each hill's rightmost screen x."
  },
  {
   "address": 33364,
   "type": "line",
   "text": "Each hill's highest screen y."
  },
  {
   "address": 33373,
   "type": "line",
   "text": "Each hill's distance, low byte."
  },
  {
   "address": 33382,
   "type": "line",
   "text": "Each hill's distance, high byte."
  },
  {
   "address": 33391,
   "type": "line",
   "text": "The nine squares in view, nearest last (view_squares): their map numbers."
  },
  {
   "address": 33392,
   "type": "line",
   "text": "The second of the squares in view, the one the eye's place in the view is measured from ($82C9, $82D1): the eye's own square only when the view faces the first eighth of the compass. The Hind and the missiles are drawn from its point $12."
  },
  {
   "address": 33400,
   "type": "line",
   "text": "The terrain of each of the nine squares in view."
  },
  {
   "address": 33409,
   "type": "line",
   "text": "For each eighth of the compass, the order the nine squares are drawn in, farthest first: eight lists of nine."
  },
  {
   "address": 33473,
   "type": "line",
   "text": "The rest of the eighth list, for the view facing north-west, which starts at $82C0 with 6, the square two rows north and two columns west."
  },
  {
   "address": 33481,
   "type": "line",
   "text": "For each eighth of the compass, the x offset of the eye's square from the second square in view ($8270), 16 to a square."
  },
  {
   "address": 33489,
   "type": "line",
   "text": "For each eighth, the y offset of the eye's square from the second square in view."
  },
  {
   "address": 33497,
   "type": "line",
   "text": "For each eighth of the compass, the nine squares in view as steps from the eye's square: one signed byte each, 16 times the row step plus the column step, added to the square's number ($FF one column left, $0F one row on and one column left)."
  },
  {
   "address": 33561,
   "type": "line",
   "text": "The rest of the eighth list, for the view facing north-west, which starts at $8318 with $20, two rows north in the eye's column: the nine squares up to two rows north and two columns west, with the eye's square ($00) at their south-east corner."
  },
  {
   "address": 33569,
   "type": "line",
   "text": "Each eighth's start in the table at $82D9, nine apart."
  },
  {
   "address": 33577,
   "type": "line",
   "text": "The bits of the square's switchable objects, shifted one out for each object drawn (draw_objects)."
  },
  {
   "address": 33578,
   "type": "line",
   "text": "The point of the square the objects are placed from."
  },
  {
   "address": 33579,
   "type": "line",
   "text": "Finds the map squares in view: the eighth of the compass the view faces picks, from $8321 and $82D9, the nine squares ahead around the eye's square, and their contents come from the map at $1A86; the eye's place within its square goes to $812E and $8130. The Hind and the missiles are put among the objects ($1B8E on), at their places relative to the square."
  },
  {
   "address": 33636,
   "type": "line",
   "text": "The eye's map square, patched in: its row ((y + 8) rounded down to 16) plus its column ((x + 8) / 16), on a map of 16 squares by 16. Each of the nine squares around it is that plus an offset from $82D9, starting where the heading's eighth says ($8321); its number goes to $826F and its contents, from the map at $1A86, to $8278. The eye's place is then made relative to its square ($812E, $8130), by the eighth's offsets at $82C9 and $82D1. The Hind (unit 5), when it is on the map, and the six missile slots are copied into the moving objects' table at $1B8D-$1C2A, their low bytes made even, and the Hind's heading to $81C7."
  },
  {
   "address": 33821,
   "type": "line",
   "text": "The eye square's x, patched in: the moving objects' x is made relative to the squares in view."
  },
  {
   "address": 33834,
   "type": "line",
   "text": "The eye square's y, patched in, for the moving objects' y."
  },
  {
   "address": 33846,
   "type": "line",
   "text": "The horizon's ends' offsets by the roll's size, six steps."
  },
  {
   "address": 33852,
   "type": "line",
   "text": "The horizon's height above or below the window's middle by the pitch, 21 steps."
  },
  {
   "address": 33873,
   "type": "line",
   "text": "Draws the 3D view into the hidden bitmap: the horizon from the roll and pitch (horizon), then the objects of the nine squares, the ground's first (from $1DD7) and then the units on them (from $1E3A), the Hind and the missiles, each through draw_objects. On the big map in fast motion only the ground is drawn. The sky is filled down to the first line (fill_sky) between the two passes."
  },
  {
   "address": 34006,
   "type": "line",
   "text": "The roll's size, 0 to 5, patched in: it picks how steeply the horizon slopes ($8436). Its middle is at the pitch's height ($8578, $857C) and the roll's offset ($8569); its two ends go to $8533-$8534 and $8580-$8584, one above and one below. The horizon is drawn in colour 1."
  },
  {
   "address": 34098,
   "type": "line",
   "text": "The horizon's left end, x, kept to draw the ground's edge."
  },
  {
   "address": 34099,
   "type": "line",
   "text": "The horizon's right end, y, low byte."
  },
  {
   "address": 34100,
   "type": "line",
   "text": "The horizon's right end, y, high byte."
  },
  {
   "address": 34101,
   "type": "line",
   "text": "Draws the horizon line across the window, clipped (line_clip), and the ground's edge below it."
  },
  {
   "address": 34153,
   "type": "line",
   "text": "The horizon middle's x, patched in, for drawing it again after the objects."
  },
  {
   "address": 34168,
   "type": "line",
   "text": "The horizon middle's y, low byte, patched in."
  },
  {
   "address": 34172,
   "type": "line",
   "text": "The horizon middle's y, high byte, patched in."
  },
  {
   "address": 34176,
   "type": "line",
   "text": "The y of the horizon's left end, low byte, patched in."
  },
  {
   "address": 34180,
   "type": "line",
   "text": "Its high byte. The left half of the horizon, from its middle 128 pixels to the left, clipped (line_clip), and the ground's edge along the window's top when the line leaves it."
  },
  {
   "address": 34240,
   "type": "line",
   "text": "The heading eighth's first entry in the order of squares ($8281), patched in. The nine squares are drawn from the farthest to the nearest: the ground's objects of each square's kind, from the lists at $1DD7 (how many), $1DF8 and $1E19 (where). Then, unless the big map is up in fast motion, the sky is filled down to them (fill_sky), the horizon drawn again in colour 0 with the line routines set to rub out ($31) and back to draw ($11), and the squares drawn again with the units on them: the units' lists at $1E3A, $1E5B and $1E7C, a bit for each unit from the square's byte at $E200 saying which still stand. Then the Hind, its shape at $1E9F, and the CRT (crt_update), and last the missiles, six objects from $1EA5, a bit each from $81AC."
  },
  {
   "address": 34506,
   "type": "line",
   "text": "Writes the opcode in A into the line routines' plotting instructions: ORA (zp),Y ($11) draws, AND (zp),Y ($31) rubs out. $86D6 does only the five that line uses."
  },
  {
   "address": 34518,
   "type": "line",
   "text": "Writes A into the five plotting instructions of the shallow and level lines, which the horizon is drawn with: ORA (zp),Y ($11) draws, AND (zp),Y ($31) rubs out."
  },
  {
   "address": 34534,
   "type": "line",
   "text": "Draws zpa_BC objects from the list at zpa_AC, six bytes each. Each is placed through the rotated corners at $1400-$1789, skipped when behind the eye or out of the window, its detail chosen by distance ($8234), its points projected (project) and its edges drawn; a hill ($FF) is filled. Each drawn object is offered as a target (target_pick)."
  },
  {
   "address": 34677,
   "type": "line",
   "text": "The object's distance ahead, halved, high byte, patched in."
  },
  {
   "address": 34686,
   "type": "line",
   "text": "Its low byte, the object's centre distance plus its size ($822A, $822F), patched in. An object too far to one side or above is skipped. The distance picks the detail: nearer than $8234 says, the shape at the entry's bytes 4 and 5, else the plainer one at bytes 2 and 3; none, nothing is drawn; $FF, a hill (hill). The first object of each square starts a hill's extent ($8242-$8266). In the ground pass (zpa_0A = 0) the object's extent and distance go to the next slot of $8242-$8266, for behind_hill. Then its points are projected and its edges drawn (project); when a target is being picked it is offered (target_pick) instead. In the ground pass a line is then drawn along the window's top row between zpa_09 and zpa_08, the x range the line clipper noted, and the slot is kept when the object was drawn. The next object's entry is six bytes on."
  },
  {
   "address": 34961,
   "type": "line",
   "text": "A hill: its points projected, its outline drawn and filled; whether the eye is inside it is noted for the crash test."
  },
  {
   "address": 35047,
   "type": "line",
   "text": "Whether the object lies behind a hill drawn already, by the hills' extents in $8242-$8266; if so it is not drawn."
  },
  {
   "address": 35115,
   "type": "line",
   "text": "The x of the hill's projected first point, held to 0 to $7F, patched in."
  },
  {
   "address": 35129,
   "type": "line",
   "text": "Its y, held to 0 to $5F, patched in. The point is checked against each hill drawn so far ($8242-$8266): one that lies behind a hill, farther and inside its extent, is not drawn, and the drawing of the object is abandoned."
  },
  {
   "address": 35146,
   "type": "line",
   "text": "Projects an object's points: for each, the rotated offsets of its corners are summed into eye space ($195E on), and perspective makes screen x and y ($19DC-$1A18). Then its faces: a face is drawn when its points turn the right way round; a hill's faces facing the eye set zpa_05, the eye inside a hill."
  },
  {
   "address": 35166,
   "type": "line",
   "text": "The object's centre in eye space, patched in by draw_objects and by the target view: its sideways offset, low byte. Each of the shape's points is an entry in the rotated tables at $1400-$1789; with the centre added its offsets go to $195E-$19C7, and a point in front of the eye is projected (perspective); the first is checked against the hills (behind_hill)."
  },
  {
   "address": 35174,
   "type": "line",
   "text": "The centre's sideways offset, high byte, patched in."
  },
  {
   "address": 35183,
   "type": "line",
   "text": "The centre's up-down offset, low byte, patched in."
  },
  {
   "address": 35191,
   "type": "line",
   "text": "The centre's up-down offset, high byte, patched in."
  },
  {
   "address": 35200,
   "type": "line",
   "text": "The centre's distance ahead, low byte, patched in."
  },
  {
   "address": 35208,
   "type": "line",
   "text": "The centre's distance ahead, high byte, patched in. Then the shape's faces, as many as its list says: a face with two of its three points behind the eye is hidden; for the rest, the face's angle is turned by the heading and the pitch through the sine table at $C600 and the face is turned towards the eye or away; the verdicts go to $1A7C. When none of an object's faces is turned towards the eye, the eye is inside it: zpa_05 is set, a crash."
  },
  {
   "address": 35407,
   "type": "line",
   "text": "The heading the shape is seen from, patched in: the view's ($8133) for the ground and the units, the Hind's own (zpa_04) for the Hind, the target's in the target view. Then the edges, in colour 2 in the ground pass, else in the shape's own colour; a colour with bit 7 set draws the edges first with the line routines set to rub out, then again in that colour ($8BA2). Each edge is drawn when a face beside it is turned towards the eye: a line between its two projected points, cut where it passes behind the eye (clip_near) and clipped (line_clip), or a single point (dot)."
  },
  {
   "address": 35639,
   "type": "line",
   "text": "Plots a single point at its screen place, when it lies in the window."
  },
  {
   "address": 35653,
   "type": "line",
   "text": "The window's width, patched in: $7F, or $27 for the CRT's target view."
  },
  {
   "address": 35660,
   "type": "line",
   "text": "The window's height, $5F, or $2F for the target view, patched in. A point inside it is plotted (plot). The rest draws one edge between two projected points."
  },
  {
   "address": 35746,
   "type": "line",
   "text": "An RTS, made a NOP while a shape whose colour has bit 7 set is drawn: then the instructions after it run, which put the line routines back to drawing (ORA, set_plot_op), make this an RTS again and draw the edges a second time in the shape's colour ($8BAE) from the start of its list ($8BB0)."
  },
  {
   "address": 35758,
   "type": "line",
   "text": "The shape's colour, patched in."
  },
  {
   "address": 35760,
   "type": "line",
   "text": "The place of its edges in the shape's list, patched in."
  },
  {
   "address": 35764,
   "type": "line",
   "text": "Divides a point's x and height by its distance (divide twice) and turns them by the roll (roll_scale), adding the window's middle: screen x in $19DC-$19F0, y in $1A04-$1A18."
  },
  {
   "address": 35806,
   "type": "line",
   "text": "The point's number, patched in, so that Y holds it again after the divide."
  },
  {
   "address": 35828,
   "type": "line",
   "text": "The point's distance, patched in for the second divide. The sideways offset divided by it, plus the up-down offset divided by it, are turned by the roll (roll_scale) to give the screen's x and y."
  },
  {
   "address": 35845,
   "type": "line",
   "text": "The point's number again, patched in."
  },
  {
   "address": 35875,
   "type": "line",
   "text": "The window's middle x, $40, patched in: the target view moves it to the CRT's."
  },
  {
   "address": 35886,
   "type": "line",
   "text": "The middle x's high byte, patched in."
  },
  {
   "address": 35908,
   "type": "line",
   "text": "The window's middle y, $30, patched in; the target view moves it."
  },
  {
   "address": 35927,
   "type": "line",
   "text": "The middle y's high byte, patched in. The point's screen x and y go to $19DC-$1A18."
  },
  {
   "address": 35932,
   "type": "line",
   "text": "Widens the extent of hill x by a point's x (A) and y (Y)."
  },
  {
   "address": 35958,
   "type": "line",
   "text": "The roll's scale for roll_scale by the roll's size, six steps: the low bytes of the JMP's target."
  },
  {
   "address": 35964,
   "type": "line",
   "text": "The same, high bytes: all $8C."
  },
  {
   "address": 35970,
   "type": "line",
   "text": "Scales a value for the roll; its sign comes from zpa_A7."
  },
  {
   "address": 35990,
   "type": "line",
   "text": "Where the roll's scaling jumps, low byte, patched in from $8C76 by the roll's size: to $8C98 for none, else to one of the sequences of shifts below that multiply by 1/8, 3/16, 1/4, 3/8 or 1/2."
  },
  {
   "address": 35991,
   "type": "line",
   "text": "Where the roll's scaling jumps, high byte, from $8C7C."
  },
  {
   "address": 36060,
   "type": "line",
   "text": "Clips an edge that crosses the plane just ahead of the eye: halves the edge until its end lies in front, nine times, then projects the new end."
  },
  {
   "address": 36105,
   "type": "line",
   "text": "A BPL, made a BMI ($30) for one step when adding the two ends' distances overflowed, so that the halved sum keeps its sign. The edge's end behind the eye is moved halfway towards the other, nine times, each time to whichever half crosses: first the distance, then the sideways offsets."
  },
  {
   "address": 36150,
   "type": "line",
   "text": "The same BPL for the sideways offsets' sum. Then the up-down offsets."
  },
  {
   "address": 36194,
   "type": "line",
   "text": "The same BPL for the up-down offsets' sum."
  },
  {
   "address": 36238,
   "type": "line",
   "text": "Which end of the line the new point replaces, patched in: 0 for (zpa_19, zpa_1B), 4 for (zpa_1D, zpa_1F). A new end still behind the eye is put on the eye's plane; the point is projected (perspective) and copied there."
  },
  {
   "address": 36260,
   "type": "line",
   "text": "Copies one end of an edge, from point x, into the clipper's slots at $19C5-$19DB."
  },
  {
   "address": 36311,
   "type": "line",
   "text": "Builds the points' eye-space offsets, $1400-$1789: each point is a combination of one x value, one y value and one height, numbered for it at $1C37, $1CA8 and $1D19, and its three offsets (sideways at $1400 and $1497, up-down at $152E and $15C5, ahead at $165C and $16F3) are sums of the rotated values rotate_axes made. How many points is patched in at $8DD8; after them, unless $8E6B skips it, come the points that are a fraction of another (the lists at $1D8A on: which point, and how many halvings)."
  },
  {
   "address": 36312,
   "type": "line",
   "text": "How many points to work out, less one, patched in by view_frame: 25 for the moving objects alone, or the count at $1C36 for all of them."
  },
  {
   "address": 36405,
   "type": "line",
   "text": "The carry of the sideways offset's sum, patched in, added to its high byte."
  },
  {
   "address": 36452,
   "type": "line",
   "text": "The carry of the distance's sum, patched in."
  },
  {
   "address": 36459,
   "type": "line",
   "text": "The branch's offset, patched in: 3 skips the points that are fractions of others, 6 makes them. Each of those is the point at $1D8B, shifted right as many times as $1DB1 says, keeping its sign."
  },
  {
   "address": 36609,
   "type": "line",
   "text": "One frame of the 3D view, $8106: the map's cross or the picture's own code (map_cross), the hidden bitmap's window cleared (clear_window), the squares in view found (view_squares). The coordinate values are rotated (rotate_axes) for the view's heading and pitch, and again for the Hind's heading. When the heading and pitch are those of the last frame (zpa_F3, zpa_F4) only the first 26 points are worked out again (rotate_points), the moving objects'; otherwise all of them, as many as $1C36 says, with the fractions. Then the drawing (draw_view)."
  },
  {
   "address": 36755,
   "type": "line",
   "text": "Rotates the coordinate values into eye space by the heading in zpa_04 and the pitch ($8134), with the sine table at $C600: each x value ($1B88, $1BA5) gives three components, sideways ($178A), ahead ($17C4) and up ($17FE), with their high bytes after; each y value ($1BC4, $1BE7) the same three ($1838, $187E, $18C4); each height ($1C0C, $1C21) two, ahead ($190A) and up, which is the height itself ($1934). A value marked by the bit in zpa_BA is a place on the map, and the eye's place ($812D-$8132) is taken from it first. zpa_19 to zpa_1E give each list's last entry and count."
  },
  {
   "address": 37132,
   "type": "line",
   "text": "The VIC's memory settings for the two buffers: $F0 and $F8 for the window (screen at $7C00, bitmap at $4000 or $6000), $B0 and $B8 for the panel (screen at $EC00, bitmap at $C000 or $E000)."
  },
  {
   "address": 37136,
   "type": "line",
   "text": "Starts the engine ($8115): swaps zero page for the engine's (swap_zp), banks the ROMs out ($01 = 5), clears the view and target states. On a C64, where $D030 reads $FF, it moves the second raster interrupt to $94B8 at line $9A. On a C128, where bit 0 of $D030 reads 0, it leaves it at $948F at line $32, which sets the C128's 1 MHz mode; the first interrupt sets 2 MHz, so a C128 runs the engine at twice the speed from line 251 to line 50, outside the picture. Then the raster interrupt is started (irq_on), the VIC set for the cockpit, and the map drawn (draw_map)."
  },
  {
   "address": 37241,
   "type": "line",
   "text": "Stops the engine ($8118): the VIC back to bank 0, the text screen at $0400 and the KERNAL's characters, then s_918E."
  },
  {
   "address": 37262,
   "type": "line",
   "text": "Turns the sprites and the raster interrupt off (irq_off) and swaps zero page back (swap_zp)."
  },
  {
   "address": 37275,
   "type": "line",
   "text": "Swaps $01-$FF with $3F01-$3FFF: the engine's zero page in for the flight, BASIC's and the KERNAL's back after it. G2 sets the flight's variables at $3F00 before it starts, and the debriefing reads them there after."
  },
  {
   "address": 37291,
   "type": "line",
   "text": "Points the RAM vectors at the engine's handlers, the IRQ at $9206 and the NMI and reset at $91EF, and starts the raster interrupt at line $FB."
  },
  {
   "address": 37341,
   "type": "line",
   "text": "Points the KERNAL's NMI vector at an RTI ($FEC1), sets the C128 back to 1 MHz, and stops the VIC's interrupt."
  },
  {
   "address": 37359,
   "type": "line",
   "text": "RESTORE: the key held with it is put in the keyboard buffer with bit 7 set (RUN/STOP becomes $FF, 4 becomes $B4)."
  },
  {
   "address": 37382,
   "type": "line",
   "text": "The raster interrupt at line $FB, below the picture, once a frame. The window's background from zpa_C4; 2 MHz on a C128; the fire button read into zpa_CA, set only when it was let go since the last shot (zpa_C9); the next interrupt at line $9A; the window's buffer shown (from $910C); the sprites for the window set up from the values sprites_copy wrote into this routine; the sound effects (sound_step) and the keyboard (keyboard)."
  },
  {
   "address": 37433,
   "type": "line",
   "text": "The line of the next interrupt: $32 as the file loads, for irq_c128 on a C128; engine_on patches it to $9A on a C64. The window's buffer is shown: the VIC's memory pointer from $910C by zpa_B1, and the same with bit 6 clear patched in at $94D3 for the panel, whose bitmap therefore changes with the window's; bank 1 ($DD00 = $96). The frame count zpa_17 goes up, and when new sprite values wait (zpa_2E) they are copied in (sprites_copy) and the bitmap mode set again."
  },
  {
   "address": 37475,
   "type": "line",
   "text": "The window's sprites' x high bits, patched in from $8174 (sprites_copy)."
  },
  {
   "address": 37479,
   "type": "line",
   "text": "The window's eight sprites' x, the operands of these LDAs, five bytes apart, which sprites_copy writes from $8154-$815B."
  },
  {
   "address": 37519,
   "type": "line",
   "text": "The window's eight sprites' y, from $815C-$8163."
  },
  {
   "address": 37559,
   "type": "line",
   "text": "The window's eight sprites' colours, from $8164-$816B. Then the sound effects (sound_step) and the keyboard (keyboard)."
  },
  {
   "address": 37605,
   "type": "line",
   "text": "With the CRT on the map, the heading strip's sprite (heading_sprite). The gun's flash ($81CD) and the missiles' sprites: an exploding one's frames, a flying one's flicker; every fourth frame the explosions' colours change at random."
  },
  {
   "address": 37722,
   "type": "line",
   "text": "The frame count's low three bits, patched in: once every eight frames, while missile slot 0 is not exploding, the shape of the sprite with that number is toggled between two frames (bit 0 of its pointer at $7FFA)."
  },
  {
   "address": 37772,
   "type": "line",
   "text": "The enemy's gun flashes ($81D0), at random places; the missiles just fired from the wings (zpa_2F, zpa_30) as sprites; the screen's shake ($81CF) by the fine scroll, and the border's flash (zpa_CB). Then the next interrupt, at $94B8 on a C64."
  },
  {
   "address": 37819,
   "type": "line",
   "text": "The enemy gun flash's x, patched in at random every eight frames ($6C to $EB)."
  },
  {
   "address": 37824,
   "type": "line",
   "text": "The enemy gun flash's y, patched in at random ($3A to $79). Sprite 2 shows the flash while $81D0 counts down, its shape stepping through $D2-$D5. Then the missiles just fired from the left and right wings (zpa_2F and zpa_30 count down), each a sprite (its number in zpa_31 or zpa_32) that moves outwards from the middle along the path at $E314 and $E328, its shapes from $E300 plus zpa_C7 or zpa_C8 for the weapon; the shake (the fine scroll at random while $81CF counts down) and the border's flash (a colour from $957A while zpa_CB counts down)."
  },
  {
   "address": 38011,
   "type": "line",
   "text": "The low byte of the next interrupt's address, $B8, patched in by engine_on: $94B8 on a C64; on a C128 it stays $8F, for $948F."
  },
  {
   "address": 38016,
   "type": "line",
   "text": "The next interrupt's high byte, $94."
  },
  {
   "address": 38031,
   "type": "line",
   "text": "The C128's extra interrupt at line $32, the top of the picture: back to 1 MHz, and on to $94B8 at line $9A."
  },
  {
   "address": 38072,
   "type": "line",
   "text": "The raster interrupt at line $9A, where the window ends and the panel starts: the VIC to bank 3, the panel's bitmap and screen, black background, and the panel's eight sprites from the values sprites_copy wrote into this routine. Then back to $9206 at line $FB."
  },
  {
   "address": 38094,
   "type": "line",
   "text": "The panel sprites' X expansion, patched in: 2 (sprite 1 wide) while a missile is shown on the CRT, 0 when the CRT is on the map."
  },
  {
   "address": 38099,
   "type": "line",
   "text": "The panel's VIC memory pointer, patched in by the first interrupt: $B0 or $B8, the panel's bitmap at $C000 or $E000 with the window's buffer."
  },
  {
   "address": 38114,
   "type": "line",
   "text": "The panel sprites' Y expansion, patched in: 0."
  },
  {
   "address": 38119,
   "type": "line",
   "text": "The panel sprites' multicolour bits, patched in: 2 (sprite 1) while a missile is shown on the CRT."
  },
  {
   "address": 38124,
   "type": "line",
   "text": "The panel sprites' x high bits, patched in from $8195 (sprites_copy)."
  },
  {
   "address": 38128,
   "type": "line",
   "text": "The panel's eight sprites' x, the operands of these LDAs, five bytes apart, which sprites_copy writes from $8175-$817C."
  },
  {
   "address": 38134,
   "type": "line",
   "text": "Panel sprite 1's x, patched in: $A0 while a missile is shown on the CRT."
  },
  {
   "address": 38168,
   "type": "line",
   "text": "The panel's eight sprites' y, from $817D-$8184."
  },
  {
   "address": 38174,
   "type": "line",
   "text": "Panel sprite 1's y, patched in: $B8 for the missile on the CRT."
  },
  {
   "address": 38208,
   "type": "line",
   "text": "The panel's eight sprites' colours, from $8185-$818C."
  },
  {
   "address": 38214,
   "type": "line",
   "text": "Panel sprite 1's colour, patched in: 7, yellow, for the missile on the CRT. Then the next interrupt is the one at $9206, line $FB."
  },
  {
   "address": 38265,
   "type": "line",
   "text": "The box's hit frames' counter: sprite 1 cycles $D9-$DC."
  },
  {
   "address": 38266,
   "type": "line",
   "text": "The colours the explosions flicker between, chosen at random every fourth frame."
  },
  {
   "address": 38270,
   "type": "line",
   "text": "A missile sprite's frame by distance, 16 steps, $77 far to $72 near, before the offset in zpa_B4."
  },
  {
   "address": 38286,
   "type": "line",
   "text": "The last frame put in $DFC0 for the CRT's copy of the homing missile."
  },
  {
   "address": 38287,
   "type": "line",
   "text": "Sets missile sprite x's frame from its distance (zpa_F5) through the table at $957E, plus zpa_B4 ($5F for an explosion's frames). In the target view, the locked target's homing missile is also copied to $DFC0 and shown on the CRT as a panel sprite."
  },
  {
   "address": 38415,
   "type": "line",
   "text": "The big map's drawing: the terrain map row's offset, counting down from $D0 to $20 in steps of $10 (s_9681)."
  },
  {
   "address": 38416,
   "type": "line",
   "text": "The big map's drawing: the column, 2 to 13."
  },
  {
   "address": 38417,
   "type": "line",
   "text": "The hill test's pixel row on the map (from map_place); its low three bits pick the row within the character."
  },
  {
   "address": 38418,
   "type": "line",
   "text": "A work byte: twice the terrain square while the big map is drawn; the hill test's row times eight, then its pixel column."
  },
  {
   "address": 38419,
   "type": "line",
   "text": "zpa_18 less one, kept while the big map is drawn: its colours from $E300 are written only when this is 0."
  },
  {
   "address": 38420,
   "type": "line",
   "text": "Changes the view ($8112) to zpa_A5: 1 the big map, 2 and 3 the stores and damage pictures. From one of those, any change goes back to the cockpit. The map: the interrupt moved to $97D8, the colour RAM saved at $0400 (save_colours), bank 3 with the map's screen at $E800 and characters at $C800, and the map drawn."
  },
  {
   "address": 38533,
   "type": "line",
   "text": "Draws the big map: the middle 12 by 12 of the 16 by 16 squares from the terrain at $1A86 (columns 2-13, rows 13 down to 2 from the top), each three characters wide and two high, into screen columns 2-37 and rows 0-23 at $E800 (and the colour from $E300), then the units: each one seen (bit 4 of its type byte) as a character in its square, in the colour of its side and kind. With the big map not up only the screen is written."
  },
  {
   "address": 38858,
   "type": "line",
   "text": "Leaving the big map: back to the cockpit's colours (load_colours) and its interrupt (from $913B)."
  },
  {
   "address": 38872,
   "type": "line",
   "text": "The raster interrupt while the big map is up: the sound effects, the keyboard, and the waypoint's cross blinking."
  },
  {
   "address": 38935,
   "type": "line",
   "text": "Each frame: on the big map, the helicopter's mark (sprite 1, block $40) at the helicopter's place; with a picture up, the picture's own code at $6C00."
  },
  {
   "address": 39003,
   "type": "line",
   "text": "A zero between two routines, never run or read."
  },
  {
   "address": 39004,
   "type": "line",
   "text": "Writes one row of a map square: three characters, their codes from x, and their colours from $E300 when the big map is up."
  },
  {
   "address": 39026,
   "type": "line",
   "text": "The rotor mark's step on the CRT's helicopter, which turns it each frame."
  },
  {
   "address": 39027,
   "type": "line",
   "text": "Builds sprite block $40 at $D000, in the RAM under the I/O: the helicopter's outline from $DF40 for its heading, and over it one of the rotor's four frames from $DF80, stepping with the rotor's speed."
  },
  {
   "address": 39052,
   "type": "line",
   "text": "The outline's place in $DF40, patched in from the heading: eight bytes written down the first column of the sprite's top eight rows."
  },
  {
   "address": 39089,
   "type": "line",
   "text": "The rotor mark's frame, patched in: one of four at $DF80-$DF9F, stepped on as the rotor's speed (zpa_41) adds up at $9872; it is ORed over the strip."
  },
  {
   "address": 39108,
   "type": "line",
   "text": "Clears the 64 bytes of sprite block $40 at $D000."
  },
  {
   "address": 39125,
   "type": "line",
   "text": "The map's hill test, $81CA: the position at $8148-$814B is turned into a map character and a pixel in it (map_place). A5 and A6 are $FF and 0 when that pixel is a hill's colour, 0 and 0 otherwise; A9 holds the character, $26 for a friendly base."
  },
  {
   "address": 39255,
   "type": "line",
   "text": "The hill test's pixel masks, by pixel place."
  },
  {
   "address": 39259,
   "type": "line",
   "text": "The hill test's masks for the hill colour, by pixel place."
  },
  {
   "address": 39263,
   "type": "line",
   "text": "Copies colour RAM to $0400-$07FF."
  },
  {
   "address": 39293,
   "type": "line",
   "text": "Copies $0400-$07FF back to colour RAM."
  },
  {
   "address": 39323,
   "type": "line",
   "text": "The picture's file name, one letter, set from the table after it."
  },
  {
   "address": 39324,
   "type": "line",
   "text": "The pictures' names: \"1\", the stores, and \"2\", the damage."
  },
  {
   "address": 39326,
   "type": "line",
   "text": "Shows picture file \"1\" (the stores) or \"2\" (the damage) from side 2: colour RAM saved, the VIC on the text screen at $6800 with characters at $6000, the sound off, the engine stopped and the KERNAL's zero page back (s_918E); then the KERNAL's SETLFS, SETNAM and LOAD. When the load worked and the file put $D8 at $6C00, its own code there is run; otherwise straight back to the cockpit."
  },
  {
   "address": 39417,
   "type": "line",
   "text": "The load's status (less bit 6, the end of the file) ORed with the first byte at $6C00, patched in: the picture's own code runs only when this is $D8, a CLD, and the status's bit 4, an error, is clear. Then the picture stays until picture_end."
  },
  {
   "address": 39437,
   "type": "line",
   "text": "Back from a picture: the window's first bitmap copied over the second ($4000 to $6000, 16 pages), the colours put back, the cockpit started again from $913B."
  },
  {
   "address": 39477,
   "type": "line",
   "text": "The sound effect's frame count."
  },
  {
   "address": 39478,
   "type": "line",
   "text": "The slide's SID register."
  },
  {
   "address": 39479,
   "type": "line",
   "text": "The slide's step, added each frame; 0 for none."
  },
  {
   "address": 39480,
   "type": "line",
   "text": "The slide's value now."
  },
  {
   "address": 39481,
   "type": "line",
   "text": "The sound effect player, once a frame: the effect's list is read for entries due at this frame's count; each writes a value to a SID register, or starts a slide that adds a step to one register each frame."
  },
  {
   "address": 39596,
   "type": "line",
   "text": "Starts effect zpa_A7 from the list of effects at zpa_A5-zpa_A6."
  },
  {
   "address": 39623,
   "type": "line",
   "text": "The window's bitmap pages, $40 and $60, by buffer."
  },
  {
   "address": 39625,
   "type": "line",
   "text": "The places in the interrupt routine of the panel sprites' register writes."
  },
  {
   "address": 39633,
   "type": "line",
   "text": "$810F: in the cockpit, shows the bitmap just drawn and makes the other the one to draw in (zpa_B1, zpa_BF), and asks the interrupt to take the new sprite values (zpa_2E)."
  },
  {
   "address": 39658,
   "type": "line",
   "text": "Writes the 16 sprites' values from $8154-$8195 into the interrupt routines' LDA instructions, and the panel's pointers to $EFF8. On the cockpit it also handles the CRT's colour after a scale change."
  },
  {
   "address": 39750,
   "type": "line",
   "text": "Paints the radar scope's middle in the panel's screen (rows 21-23, columns 34-38) with the colour in $8220, and its centre cell with $B1, once after the scope's scale changes."
  },
  {
   "address": 39793,
   "type": "line",
   "text": "Clears the window in the hidden bitmap, 12 character rows of 256 bytes from the fifth column."
  },
  {
   "address": 39882,
   "type": "line",
   "text": "Paints the CRT's area (10 by 6 cells) in the panel's screen and colour RAM."
  },
  {
   "address": 39883,
   "type": "line",
   "text": "The CRT frame's screen colour, patched in by crt_next: $57 for the map."
  },
  {
   "address": 39908,
   "type": "line",
   "text": "The CRT frame's colour RAM colour, patched in: $0D for the map."
  },
  {
   "address": 39933,
   "type": "line",
   "text": "Unused: an entry ($8227 jumps here, and nothing calls $8227) that sets $9C1E to 1 and joins lamp_set after its table lookup, with its own place in zpa_A7 and shape in A, to write colour RAM even while the big map is up."
  },
  {
   "address": 39941,
   "type": "line",
   "text": "Lights lamp zpa_A5 in colour zpa_A6: a block of colour RAM from the table at $9C56, its low byte and its shape (the page, the width and the height); while the big map is up, into the copy at $0400."
  },
  {
   "address": 39966,
   "type": "line",
   "text": "1 to write the lamp into colour RAM whatever the view, patched in; lamp_set makes it 0, and then while the big map is up the lamp goes into the copy at $0400."
  },
  {
   "address": 40022,
   "type": "line",
   "text": "The lamps: for each, its colour RAM place (low byte) and its shape (page, width, height); lamp 0 here."
  },
  {
   "address": 40023,
   "type": "line",
   "text": "Each lamp's second byte, read with $9C56's: the page of colour RAM in bits 0-1, the width less one in bits 2-4 (7 means ten) and the height less one in bits 5-7."
  },
  {
   "address": 40078,
   "type": "line",
   "text": "The CRT, each frame. On the target view the locked target is drawn (target_view); with none the CRT goes on to the map. On the map, \"TARGET\" heads it while a target is locked, and the map's cross is drawn (crt_map). A message stays as it is."
  },
  {
   "address": 40141,
   "type": "line",
   "text": "$810C, SPACE: the CRT goes from the target view to the map; from the map to a waiting message, else to the target view when a target is asked for (zpa_FA not negative), else it stays on the map; from a message to the target view or the map, the same way. Each change sets the CRT's colours ($9BCB, $9BE4), painted a frame later (crt_frame)."
  },
  {
   "address": 40252,
   "type": "line",
   "text": "How many frames the CRT's colour change waits."
  },
  {
   "address": 40253,
   "type": "line",
   "text": "Multiplies the signed number in A9-AA by the cosine of zpa_A8 ($9D3D), by its sine ($9D44), or by A ($9D49), an unsigned fraction of 256: the result in A6-A7, with the sign of AA and zpa_A8."
  },
  {
   "address": 40427,
   "type": "line",
   "text": "The low byte's product, patched in and added to the high byte's, with its carry; the result takes the sign of the two numbers'."
  },
  {
   "address": 40454,
   "type": "line",
   "text": "Multiplies zpa_A5 by Y, with x as the high byte of the sum to start: the result in A6-A7."
  },
  {
   "address": 40525,
   "type": "line",
   "text": "Divides A9-AA by zpa_A5 (with zpa_FD as its high byte), by shifting both and taking the reciprocal from $C500; a result too large is clamped to \u00b1$3F."
  },
  {
   "address": 40599,
   "type": "line",
   "text": "Turns the position at $8148-$814B into the map's column (x) and row (Y), three characters to a square, for the cross and the hill test."
  },
  {
   "address": 40684,
   "type": "line",
   "text": "The low bytes of the big map screen's rows at $E800, 25 rows."
  },
  {
   "address": 40709,
   "type": "line",
   "text": "The high bytes of the big map screen's rows."
  },
  {
   "address": 40734,
   "type": "line",
   "text": "Draws the CRT's map: the part of the map around the helicopter, 6 rows of the map's characters copied from the screen at $E800 into the panel bitmap, only when the helicopter has moved to another square."
  },
  {
   "address": 41023,
   "type": "line",
   "text": "Where the CRT's map goes in each panel bitmap, low bytes: $30 and $30."
  },
  {
   "address": 41025,
   "type": "line",
   "text": "The same, high bytes: $F3 and $D3 (the CRT at $F330 in one buffer and $D330 in the other)."
  },
  {
   "address": 41027,
   "type": "line",
   "text": "For each of the four pixel shifts, the bits of a map byte that go into the cell on the left: 00 03 0F 3F."
  },
  {
   "address": 41031,
   "type": "line",
   "text": "For each shift, the bits that go into the cell on the right: FF FC F0 C0."
  },
  {
   "address": 41035,
   "type": "line",
   "text": "Copies one row of map characters into the panel bitmap."
  },
  {
   "address": 41128,
   "type": "line",
   "text": "The map character's place in the map's character set, low byte, patched in: its code times eight."
  },
  {
   "address": 41129,
   "type": "line",
   "text": "Its high byte, $C8 plus the code's top bits. Each of the character's rows is shifted right by the cross's pixels ($A126) and merged into this byte of the CRT's bitmap and the next."
  },
  {
   "address": 41153,
   "type": "line",
   "text": "The bits of the right-hand byte that take the character, patched in: from $A047 by the pixel shift, and 0 at the CRT's last column."
  },
  {
   "address": 41166,
   "type": "line",
   "text": "The bits of the left-hand byte that take the character, patched in: 3 or more from $A043 after the first column, 0 for it."
  },
  {
   "address": 41219,
   "type": "line",
   "text": "The CRT's six character rows, offsets from its top-left cell, low bytes ($140 a row)."
  },
  {
   "address": 41225,
   "type": "line",
   "text": "The CRT's six character rows' offsets, high bytes: 0, 1, 2, 3, 5 and 6."
  },
  {
   "address": 41247,
   "type": "line",
   "text": "The bits shifted out of a map byte that go into the cell on the left."
  },
  {
   "address": 41248,
   "type": "line",
   "text": "The map row's pixel offset within its character (0-7), where the CRT window starts."
  },
  {
   "address": 41249,
   "type": "line",
   "text": "The CRT's character row being drawn, 0 to 5."
  },
  {
   "address": 41250,
   "type": "line",
   "text": "The map byte being copied along the row."
  },
  {
   "address": 41251,
   "type": "line",
   "text": "The first pixel row written in the CRT's character: 0, or 8 less $A120 for a map row's second half."
  },
  {
   "address": 41252,
   "type": "line",
   "text": "The map character's pixel row the copy stops before: 8, or $A120."
  },
  {
   "address": 41253,
   "type": "line",
   "text": "The map character's pixel row the copy starts at: $A120, or 0."
  },
  {
   "address": 41254,
   "type": "line",
   "text": "The pixel shift, the window's left column's low two bits."
  },
  {
   "address": 41255,
   "type": "line",
   "text": "The CRT's place in the panel bitmap being drawn, low byte (from $A03F)."
  },
  {
   "address": 41256,
   "type": "line",
   "text": "The same, high byte (from $A041)."
  },
  {
   "address": 41257,
   "type": "line",
   "text": "The map column at the CRT window's left edge: the helicopter's less 20, held inside the map."
  },
  {
   "address": 41258,
   "type": "line",
   "text": "The map row at the window's top edge: the helicopter's less 24, held inside the map."
  },
  {
   "address": 41259,
   "type": "line",
   "text": "For each hill, the outcode bits the line clipper tests (a_A163)."
  },
  {
   "address": 41272,
   "type": "line",
   "text": "For a line partly hidden: draws only the part outside the hill's extent."
  },
  {
   "address": 41315,
   "type": "line",
   "text": "The line's outcode bits for off the right and off the left, patched in and tested against the entry for this hill at $A12B; a line that passes them widens the x range of the hills (zpa_08, zpa_09)."
  },
  {
   "address": 41333,
   "type": "line",
   "text": "Draws the line zpa_19-zpa_20 in the window, clipped: each end gets its outcode (outcode); a line wholly outside on one side is dropped; one partly outside is cut by halving it until each end lies on an edge (clip_end). Keeps the hills' extents and draws through line."
  },
  {
   "address": 41385,
   "type": "line",
   "text": "The far end's y high byte, kept here while clip_end moves the near end onto the window's edge; when it is not negative the line is drawn. In the ground pass each line drawn widens the hill's extent (extent). A line with both ends outside is halved until its middle lies inside, up to ten times, and each half is then clipped (clip_end); a line wholly outside on one side goes to line_hidden instead."
  },
  {
   "address": 41710,
   "type": "line",
   "text": "Keeps zpa_08 and zpa_09 as the highest and lowest x drawn."
  },
  {
   "address": 41721,
   "type": "line",
   "text": "Widens the x range zpa_08 (highest) and zpa_09 (lowest) by A."
  },
  {
   "address": 41734,
   "type": "line",
   "text": "The outcode of one end (x = 0 or 4): bit 0 off the right, bit 3 off the left, bit 1 below, bit 2 above. The window is 128 by 96 pixels."
  },
  {
   "address": 41757,
   "type": "line",
   "text": "The window's width, $7F, or $27 for the CRT's target view, patched in, for the outcode's right edge."
  },
  {
   "address": 41785,
   "type": "line",
   "text": "The window's height, $5F, or $2F for the target view, patched in, for the outcode's bottom edge."
  },
  {
   "address": 41803,
   "type": "line",
   "text": "Swaps the line's two ends and their outcodes."
  },
  {
   "address": 41827,
   "type": "line",
   "text": "The clipper's window limits: x low, x high and y, patched for the CRT's target view."
  },
  {
   "address": 41830,
   "type": "line",
   "text": "The same limits' second set."
  },
  {
   "address": 41833,
   "type": "line",
   "text": "Moves one end of the line onto the window's edge by halving."
  },
  {
   "address": 41857,
   "type": "line",
   "text": "The height, patched in, to turn the near end's y over when the line crosses the bottom, so that one bisection serves every edge."
  },
  {
   "address": 41870,
   "type": "line",
   "text": "The height again, patched in, to turn the far end's y over."
  },
  {
   "address": 41889,
   "type": "line",
   "text": "The width, patched in, to turn the near end's x over when the line crosses the right edge."
  },
  {
   "address": 41902,
   "type": "line",
   "text": "The width again, patched in, to turn the far end's x over. Then the line is halved, the half that crosses the edge kept each time."
  },
  {
   "address": 41990,
   "type": "line",
   "text": "Where the bisection goes on, low byte, patched in from $A363 by the signs of the ends' y and x: $A408, $A43D or $A45F."
  },
  {
   "address": 41991,
   "type": "line",
   "text": "Its high byte, from $A366. The halving stops when the middle is within three pixels of the edge, which becomes the line's new end."
  },
  {
   "address": 42146,
   "type": "line",
   "text": "The window's height, patched in, to turn the new end's y back."
  },
  {
   "address": 42159,
   "type": "line",
   "text": "The window's width, patched in, to turn the new end's x back."
  },
  {
   "address": 42165,
   "type": "line",
   "text": "The address in the hidden bitmap of pixel (zpa_19, zpa_1B), from the row tables at $C3F0 and $C4B8: in zpa_FB, with the byte in Y and the pixel's place in x."
  },
  {
   "address": 42189,
   "type": "line",
   "text": "The window's place in its bitmap, low byte, patched in: $60, for $4160 or $6160, or $38 for the CRT's target view at $D338 or $F338."
  },
  {
   "address": 42193,
   "type": "line",
   "text": "The bitmap's page, patched in: $41 or $61 for the window in the buffer being drawn, $D3 or $F3 for the CRT."
  },
  {
   "address": 42211,
   "type": "line",
   "text": "Plots one pixel in the colour set by set_colour."
  },
  {
   "address": 42220,
   "type": "line",
   "text": "The colour's masks for one pixel, low byte, patched in by set_colour."
  },
  {
   "address": 42225,
   "type": "line",
   "text": "Draws a line from (zpa_19, zpa_1B) to (zpa_1D, zpa_1F) in the hidden bitmap, a pixel at a time, with separate loops for steep and shallow lines up and down."
  },
  {
   "address": 42360,
   "type": "line",
   "text": "The colour's masks for a shallow line going down, low byte, patched in by set_colour."
  },
  {
   "address": 42362,
   "type": "line",
   "text": "ORA (zp),Y, or AND (zp),Y to rub out, patched in (s_86D6): a shallow line going down is drawn a pixel at a time across, stepping down a row when its error overflows."
  },
  {
   "address": 42372,
   "type": "line",
   "text": "The shallow line's height, the error's step, patched in."
  },
  {
   "address": 42380,
   "type": "line",
   "text": "The shallow line's width, taken off the error when it overflows, patched in."
  },
  {
   "address": 42423,
   "type": "line",
   "text": "The colour's masks for a shallow line going up, patched in."
  },
  {
   "address": 42425,
   "type": "line",
   "text": "ORA or AND for a shallow line going up, patched in."
  },
  {
   "address": 42435,
   "type": "line",
   "text": "The rising shallow line's height, patched in."
  },
  {
   "address": 42443,
   "type": "line",
   "text": "The rising shallow line's width, patched in."
  },
  {
   "address": 42483,
   "type": "line",
   "text": "The colour's masks for a level line, patched in."
  },
  {
   "address": 42485,
   "type": "line",
   "text": "ORA or AND for a level line, patched in: a pixel after another along the row."
  },
  {
   "address": 42559,
   "type": "line",
   "text": "The colour's masks for a steep line going down, patched in."
  },
  {
   "address": 42561,
   "type": "line",
   "text": "ORA or AND for a steep line going down, patched in (set_plot_op): a pixel a row, stepping across when the error overflows."
  },
  {
   "address": 42571,
   "type": "line",
   "text": "The steep line's width, the error's step, patched in."
  },
  {
   "address": 42579,
   "type": "line",
   "text": "The steep line's height, patched in."
  },
  {
   "address": 42621,
   "type": "line",
   "text": "The colour's masks for a steep line going up, patched in."
  },
  {
   "address": 42623,
   "type": "line",
   "text": "ORA or AND for a steep line going up, patched in."
  },
  {
   "address": 42633,
   "type": "line",
   "text": "The rising steep line's width, patched in."
  },
  {
   "address": 42641,
   "type": "line",
   "text": "The rising steep line's height, patched in."
  },
  {
   "address": 42722,
   "type": "line",
   "text": "The first pixel's place in its byte, patched in. A steep line 32 rows long or more steps across by a fraction of 256, its width over its height, divided out first."
  },
  {
   "address": 42735,
   "type": "line",
   "text": "The colour's masks for a long steep line going down, patched in."
  },
  {
   "address": 42737,
   "type": "line",
   "text": "ORA or AND for a long steep line going down, patched in."
  },
  {
   "address": 42744,
   "type": "line",
   "text": "The long steep line's slope, a fraction of 256, patched in."
  },
  {
   "address": 42794,
   "type": "line",
   "text": "The colour's masks for a long steep line going up, patched in."
  },
  {
   "address": 42796,
   "type": "line",
   "text": "ORA or AND for a long steep line going up, patched in."
  },
  {
   "address": 42803,
   "type": "line",
   "text": "The rising long steep line's slope, patched in."
  },
  {
   "address": 42884,
   "type": "line",
   "text": "The first pixel's place in its byte, patched in. A shallow line 32 pixels across or more steps down by its height over its width, divided out first."
  },
  {
   "address": 42897,
   "type": "line",
   "text": "The colour's masks for a long shallow line going down, patched in."
  },
  {
   "address": 42899,
   "type": "line",
   "text": "ORA or AND for a long shallow line going down, patched in."
  },
  {
   "address": 42906,
   "type": "line",
   "text": "The long shallow line's slope, patched in."
  },
  {
   "address": 42957,
   "type": "line",
   "text": "The colour's masks for a long shallow line going up, patched in."
  },
  {
   "address": 42959,
   "type": "line",
   "text": "ORA or AND for a long shallow line going up, patched in."
  },
  {
   "address": 42966,
   "type": "line",
   "text": "The rising long shallow line's slope, patched in."
  },
  {
   "address": 43010,
   "type": "line",
   "text": "Sets the drawing colour in A: the line routines' mask operands are pointed at its four pixel masks, $81D1 plus four times the colour. Colours 0 to 3 draw; 4 and 5 are masks for rubbing out. Nothing is done when it is the colour set already ($A803)."
  },
  {
   "address": 43011,
   "type": "line",
   "text": "The colour set last, patched in: asking for it again does nothing."
  },
  {
   "address": 43052,
   "type": "line",
   "text": "Fills the window from the top down: in each of the 32 columns, every byte is made sky ($FF) until a byte with a drawn pixel is found, which is filled to that pixel."
  },
  {
   "address": 43224,
   "type": "line",
   "text": "The keyboard scan, from the interrupt: with a key down, finds which (the first in the matrix) and, if it is not the one held last time, puts its code from the table at $A926 in the keyboard buffer."
  },
  {
   "address": 43302,
   "type": "line",
   "text": "The key codes in the keyboard matrix's order, 64: mostly PETSCII; the cursor keys $11 and $1D, the function keys $85-$88, left SHIFT $7D, right SHIFT $7C, C= $7E, RUN/STOP $7F."
  },
  {
   "address": 43366,
   "type": "line",
   "text": "The target found while drawing: its shape's address, low byte."
  },
  {
   "address": 43367,
   "type": "line",
   "text": "Its shape's address, high byte."
  },
  {
   "address": 43368,
   "type": "line",
   "text": "Its sideways offset in eye space, low byte."
  },
  {
   "address": 43369,
   "type": "line",
   "text": "Its sideways offset, high byte."
  },
  {
   "address": 43370,
   "type": "line",
   "text": "Its up-down offset, low byte."
  },
  {
   "address": 43371,
   "type": "line",
   "text": "Its up-down offset, high byte."
  },
  {
   "address": 43372,
   "type": "line",
   "text": "Its distance, low byte."
  },
  {
   "address": 43373,
   "type": "line",
   "text": "Its distance, high byte."
  },
  {
   "address": 43374,
   "type": "line",
   "text": "Its screen x."
  },
  {
   "address": 43375,
   "type": "line",
   "text": "Its screen y."
  },
  {
   "address": 43376,
   "type": "line",
   "text": "The next target's square, kept for right SHIFT."
  },
  {
   "address": 43377,
   "type": "line",
   "text": "The next target's slot; $FF none."
  },
  {
   "address": 43378,
   "type": "line",
   "text": "The target's size class."
  },
  {
   "address": 43379,
   "type": "line",
   "text": "The target view's scale by distance, 16 steps."
  },
  {
   "address": 43395,
   "type": "line",
   "text": "Returns."
  },
  {
   "address": 43396,
   "type": "line",
   "text": "Called for each object drawn. While a target is wanted (zpa_FA), an object of a kind that can be one, wholly in the window and nearer than $8147, is noted: the one after the target locked now, so that right SHIFT steps through them. Its place and size are kept for the target view ($A966-$A972)."
  },
  {
   "address": 43622,
   "type": "line",
   "text": "Once a frame: the object noted becomes the locked target ($821D, $821E); with none, there is no target (zpa_FA = $FF)."
  },
  {
   "address": 43655,
   "type": "line",
   "text": "Draws the locked target on the CRT: its box's place over the window (sprite 1), its distance printed, and its shape drawn large into the CRT's part of the panel bitmap, the line routines' limits and base address changed for it and put back after; its name follows (s_78C3)."
  },
  {
   "address": 44114,
   "type": "line",
   "text": "Clears the CRT's area in the panel bitmap being drawn ($AC52), in the one at $C000 ($AC58) or at $E000 ($AC70), to the value in A."
  },
  {
   "address": 44120,
   "type": "line",
   "text": "Clears the CRT's area in the panel bitmap at $C000 (from $D338, under the I/O) to A."
  },
  {
   "address": 44144,
   "type": "line",
   "text": "Clears the CRT's area in the panel bitmap at $E000 (from $F338) to A."
  },
  {
   "address": 44168,
   "type": "line",
   "text": "Eight filler bytes, $EE $DE four times, between two routines; nothing runs or reads them."
  },
  {
   "address": 44176,
   "type": "line",
   "text": "The missiles' own jump table: $AC90 a missile's sprite, $AC93 clear it, $AC96 launch, $AC99 move all, $AC9C the locked target's unit, $AC9F and $ACA2 the radar list, $ACA5 the scope."
  },
  {
   "address": 44179,
   "type": "line",
   "text": "$AC93: hide the missile's sprite (j_ADE9)."
  },
  {
   "address": 44200,
   "type": "line",
   "text": "Launches a missile, if a slot is free (free_slot): from the position at $8148-$814D, on heading zpa_A5, of kind zpa_A6, at target zpa_A7. Its speed, turn, life and guidance come from the tables at $ADF2-$AE19; a Hellfire takes the locked target. A missile at the player picks the sprite for the warning on the panel."
  },
  {
   "address": 44267,
   "type": "line",
   "text": "The missile's turn rate, patched in, so that its lower limit ($B5BA) is the rate's negative. Then its life ($8217), hit distance ($B5DE), target ($B5C6), heading ($B5B4) and speed ($B5CC); an unguided one (bit 3) takes its steps from zpa_A8-zpa_AA. A Sidewinder or an FFAR (bits 3 and 4) is aimed at the locked target (s_B503). A player's missile fired while looking ahead is shown leaving a wing: from the wing that is not damaged (damage bits 10 and 11), FFARs from both at once, the others from each in turn by the stores' count."
  },
  {
   "address": 44371,
   "type": "line",
   "text": "The operand of the BNE above, which the table after it is read from as its entry 0: the wing sprites' shapes by weapon (1 Sidewinder, 2 FFAR, 3 Hellfire), for the left at $AD54-$AD56 and the right at $AD57-$AD59."
  },
  {
   "address": 44372,
   "type": "line",
   "text": "The left wing's launch sprites by weapon: $DD for a Sidewinder, $78 for an FFAR, $DD for a Hellfire (blocks $DD-$E0 and $78-$7B, four frames each)."
  },
  {
   "address": 44374,
   "type": "line",
   "text": "The Hellfire's left wing shape, $DD; the table's entry 3."
  },
  {
   "address": 44375,
   "type": "line",
   "text": "The right wing's: $C4, $7C and $C4 (blocks $C4-$C7 and $7C-$7F)."
  },
  {
   "address": 44378,
   "type": "line",
   "text": "Both wings whole: an FFAR pair leaves from both wings at once, its left sprite in slot 1 or 2; any other missile from the left wing or the right by whether its store's count ($53D8) is odd or even."
  },
  {
   "address": 44417,
   "type": "line",
   "text": "Sets panel sprite Y's pointer and its count."
  },
  {
   "address": 44425,
   "type": "line",
   "text": "Puts the missile's sprite at its place in the window, or hides it."
  },
  {
   "address": 44530,
   "type": "line",
   "text": "The eight missile kinds' speed classes: 0 the Sidewinder, 1 the FFAR, 2 the Hellfire, 3-7 the enemy's."
  },
  {
   "address": 44538,
   "type": "line",
   "text": "The kinds' turn rates: $B5C0 gets it, $B5BA its negative."
  },
  {
   "address": 44546,
   "type": "line",
   "text": "The kinds' lives: how many passes each flies ($8217)."
  },
  {
   "address": 44554,
   "type": "line",
   "text": "The kinds' hit distances ($B5DE)."
  },
  {
   "address": 44562,
   "type": "line",
   "text": "The kinds' guidance: bit 7 the locked target, bit 6 radar, bit 5 infrared, bit 4 the Hind, bit 3 none; bits 1 and 2 ignore the jammers. Sidewinder $10, FFAR $08, Hellfire $80."
  },
  {
   "address": 44570,
   "type": "line",
   "text": "A homing missile's view: a target more than $20 off its heading either way is lost."
  },
  {
   "address": 44571,
   "type": "line",
   "text": "The other edge, $E0."
  },
  {
   "address": 44572,
   "type": "line",
   "text": "Moves the six missiles, once a pass. A homing one steers towards its target: a radar one is lost to the radar jammer (unless its kind ignores it) and decoyed by chaff while it falls, an infrared one likewise by the infrared jammer and flares; a Sidewinder goes for the Hind; a Hellfire for the locked target."
  },
  {
   "address": 44826,
   "type": "line",
   "text": "Turns the missile towards the target by at most its turn rate, from the table of sixteen headings at $B512."
  },
  {
   "address": 44911,
   "type": "line",
   "text": "Its step along the heading from the sine tables at $B522 and $B563, scaled by its speed."
  },
  {
   "address": 45066,
   "type": "line",
   "text": "Its climb or dive towards the target's height, at most the step."
  },
  {
   "address": 45229,
   "type": "line",
   "text": "Moves it; near the target it moves in steps of 127 to test each for a hit."
  },
  {
   "address": 45639,
   "type": "line",
   "text": "A hit: on the helicopter ($81B3), or on chaff or a flare ($81B2), or on a unit, which explodes; the missile is gone when its life runs out or it hits the ground."
  },
  {
   "address": 45809,
   "type": "line",
   "text": "An exploding missile's timer; at the end the unit it hit is destroyed ($81B4) when the missile's guidance flags ($8211, less bit 0) match those $AE12 holds for the missile kind $B5A4 names for the unit's kind; unit 5, the Hind, falls to any missile ($B309)."
  },
  {
   "address": 45869,
   "type": "line",
   "text": "The missile's distance class, for its sprite's size."
  },
  {
   "address": 45912,
   "type": "line",
   "text": "The homing flags into $81AE, and on to the next missile."
  },
  {
   "address": 45938,
   "type": "line",
   "text": "The locked target's unit number in zpa_A5: the Hind (5), a unit found by its identity in $5200 and $5280, or $7F for none."
  },
  {
   "address": 45977,
   "type": "line",
   "text": "Whether the missile is within its hit distance ($B5DE) of the target, in x plus y and in height: A = 1 if so."
  },
  {
   "address": 46014,
   "type": "line",
   "text": "The differences from missile x to target Y: the helicopter, chaff, flares and the Hind (0-5) have fine positions, the units only the high bytes of theirs. Their sizes and which of sixteen directions the target lies in (zpa_08: the signs of x and y, which difference is larger, and whether it is at least twice the other) for steering."
  },
  {
   "address": 46264,
   "type": "line",
   "text": "Halves the step and adds it ($B4B8), or adds it ($B4C0), to the move."
  },
  {
   "address": 46272,
   "type": "line",
   "text": "Adds the step zpa_21-zpa_24 to the move zpa_1D-zpa_20."
  },
  {
   "address": 46299,
   "type": "line",
   "text": "LDA #0 and RTS, a routine nothing in the flight calls."
  },
  {
   "address": 46302,
   "type": "line",
   "text": "Finds a free missile slot, takes it in $81AC and returns it in x and A; negative if all six are in use."
  },
  {
   "address": 46327,
   "type": "line",
   "text": "Frees missile slot x."
  },
  {
   "address": 46339,
   "type": "line",
   "text": "Sets missile x's target to the locked one."
  },
  {
   "address": 46350,
   "type": "line",
   "text": "The distance classes' limits for a missile sprite's size: 1, 2, 4 and 8."
  },
  {
   "address": 46354,
   "type": "line",
   "text": "The heading of each of the sixteen directions target_delta tells apart (zpa_08), $10 apart, for turning towards a target."
  },
  {
   "address": 46370,
   "type": "line",
   "text": "A missile's sideways step for each 64th of a quarter turn between its heading and the view's: a sine, 0 to $FF over 65 entries."
  },
  {
   "address": 46435,
   "type": "line",
   "text": "Its forward step: the cosine, $FF to 0."
  },
  {
   "address": 46500,
   "type": "line",
   "text": "For each unit kind, the missile kind that can destroy it: 1 the FFAR, 2 the Hellfire, 0 the Sidewinder. Any other kind that hits does nothing. No unit in the five theatres has kind 14 or 15, and the Hind, unit 5, skips this table ($B309)."
  },
  {
   "address": 46516,
   "type": "line",
   "text": "The six missiles' headings."
  },
  {
   "address": 46522,
   "type": "line",
   "text": "The six missiles' negative turn limits."
  },
  {
   "address": 46528,
   "type": "line",
   "text": "The six missiles' turn limits."
  },
  {
   "address": 46534,
   "type": "line",
   "text": "The six missiles' targets: a unit number."
  },
  {
   "address": 46540,
   "type": "line",
   "text": "The six missiles' speed classes."
  },
  {
   "address": 46546,
   "type": "line",
   "text": "The six missiles' climb steps, low bytes."
  },
  {
   "address": 46552,
   "type": "line",
   "text": "The six missiles' climb steps, high bytes."
  },
  {
   "address": 46558,
   "type": "line",
   "text": "The six missiles' hit distances."
  },
  {
   "address": 46564,
   "type": "line",
   "text": "The six missiles' distance classes, for their sprites' sizes."
  },
  {
   "address": 46570,
   "type": "line",
   "text": "Puts the helicopter's position into one of the fine-position slots (0 the helicopter, 1 the chaff, 2 the flares), so missiles can home on it."
  },
  {
   "address": 46607,
   "type": "line",
   "text": "Adds unit zpa_A5 to the radar scope's list of ten; zpa_A5 = 1 if there was room."
  },
  {
   "address": 46632,
   "type": "line",
   "text": "Takes unit zpa_A5 off the list; zpa_A5 = 0 if it was on it."
  },
  {
   "address": 46657,
   "type": "line",
   "text": "Draws the radar scope, $81AF: the dots of the last frame in this buffer are rubbed out from the lists at $B886-$B8F1, then the units on the list, the missiles and the Hind are plotted, turned by the heading and scaled by $81CE. A change of scale repaints the scope's colours once."
  },
  {
   "address": 46699,
   "type": "line",
   "text": "The address of a dot to rub out, low byte, patched in from $B8AA."
  },
  {
   "address": 46700,
   "type": "line",
   "text": "Its high byte, from $B886; the byte it changed is put back from $B8CE. Then, at a change of scale ($81CE), the scope's colour is set from $B84E. The helicopter's own place is the scope's middle; the units on the radar's list at $B8F2 are drawn as dots in colour $FF, the six missiles in $AA, and the Hind in $AA or $FF by buffer, so that it flickers between two colours."
  },
  {
   "address": 46874,
   "type": "line",
   "text": "The scope's dot colours by buffer: $AA and $FF."
  },
  {
   "address": 46876,
   "type": "line",
   "text": "Scales a position for the scope."
  },
  {
   "address": 46922,
   "type": "line",
   "text": "Plots one dot on the scope, if it falls inside its circle ($B850, $B86B), remembering the byte it changed."
  },
  {
   "address": 47064,
   "type": "line",
   "text": "The pixel's mask in its byte, patched in from $81E9: the dot is drawn in colour zpa_21, and its address and the byte it changed are kept ($B886, $B8AA, $B8CE) to rub it out next time."
  },
  {
   "address": 47078,
   "type": "line",
   "text": "Turns the scope's dot by the heading."
  },
  {
   "address": 47180,
   "type": "line",
   "text": "The scope's dots counted, one for each buffer."
  },
  {
   "address": 47182,
   "type": "line",
   "text": "The radar scope's colours by its scale ($81CE): $B1 and $01."
  },
  {
   "address": 47184,
   "type": "line",
   "text": "The scope's circle: for each row, its left edge."
  },
  {
   "address": 47211,
   "type": "line",
   "text": "The scope's circle: for each row, its right edge."
  },
  {
   "address": 47238,
   "type": "line",
   "text": "The scope's remembered dots: their bitmap addresses, low bytes, for both buffers."
  },
  {
   "address": 47274,
   "type": "line",
   "text": "The remembered dots' addresses, high bytes."
  },
  {
   "address": 47310,
   "type": "line",
   "text": "The bytes the dots changed, to be put back."
  },
  {
   "address": 47346,
   "type": "line",
   "text": "The units on the radar scope, a list of ten."
  },
  {
   "address": 47356,
   "type": "line",
   "text": "How many dots were drawn last time."
  },
  {
   "address": 47360,
   "type": "line",
   "text": "The instruments' jump table."
  },
  {
   "address": 47366,
   "type": "line",
   "text": "$B906: draw the seven bar gauges (gauges)."
  },
  {
   "address": 47381,
   "type": "line",
   "text": "$B915: print a number on the CRT (print_crt_number)."
  },
  {
   "address": 47387,
   "type": "line",
   "text": "Draws the dials: the heading printed in figures and the height in hundreds, then four needles (airspeed, altimeter, vertical speed and the heading compass), each redrawn only when its value has changed, by a short line in its sprite."
  },
  {
   "address": 47918,
   "type": "line",
   "text": "One needle's line, from the tables at $BB5E-$BBCA."
  },
  {
   "address": 47946,
   "type": "line",
   "text": "The needles' sprite blocks, low bytes: $00, $40, $80, $C0."
  },
  {
   "address": 47950,
   "type": "line",
   "text": "Each needle's sprite x, before the step for its quarter."
  },
  {
   "address": 47954,
   "type": "line",
   "text": "Each needle's sprite y, before the step for its quarter."
  },
  {
   "address": 47958,
   "type": "line",
   "text": "The sprite's x step by the quarter of the turn the needle points into: 0, 0, -22, -22, so the sprite's corner stays at the dial's centre."
  },
  {
   "address": 47962,
   "type": "line",
   "text": "The sprite's y step by quarter: -20, 0, 0, -20."
  },
  {
   "address": 47966,
   "type": "line",
   "text": "The needle's 22 lines, one for each slope: the length in steps, also the divisor of the slope's fraction."
  },
  {
   "address": 47988,
   "type": "line",
   "text": "The lines' starting fraction for a steep line."
  },
  {
   "address": 48010,
   "type": "line",
   "text": "The lines' starting fraction for a shallow line."
  },
  {
   "address": 48032,
   "type": "line",
   "text": "The lines' across step for a steep line, out of the length: 0 for straight up."
  },
  {
   "address": 48053,
   "type": "line",
   "text": "The lines' up step for a shallow line; equal to the length when the line is steep."
  },
  {
   "address": 48075,
   "type": "line",
   "text": "The line (0-21) for each of the 65 angles from 0 to a quarter turn, the last read for a needle pointing at a quarter's start from the far side."
  },
  {
   "address": 48140,
   "type": "line",
   "text": "The four multicolour pixels in a byte, right to left: 03 0C 30 C0."
  },
  {
   "address": 48144,
   "type": "line",
   "text": "Each line's far end for a needle in the third quarter: the pixel in the top two bits, the byte in the sprite in the low six."
  },
  {
   "address": 48166,
   "type": "line",
   "text": "The same for the fourth quarter."
  },
  {
   "address": 48188,
   "type": "line",
   "text": "Each needle's first sprite block, $80-$83."
  },
  {
   "address": 48192,
   "type": "line",
   "text": "Each needle's second sprite block, $84-$87."
  },
  {
   "address": 48196,
   "type": "line",
   "text": "Each needle's bit in the sprites' x high bits (sprites 4-7)."
  },
  {
   "address": 48200,
   "type": "line",
   "text": "The same bits inverted, to clear them. The eight bytes after these four are never read."
  },
  {
   "address": 48212,
   "type": "line",
   "text": "Each needle's buffer page now, $E0 or $E1."
  },
  {
   "address": 48216,
   "type": "line",
   "text": "Each needle's last value, so it is redrawn only on a change."
  },
  {
   "address": 48220,
   "type": "line",
   "text": "The heading compass's rose."
  },
  {
   "address": 48294,
   "type": "line",
   "text": "For the compass needle pointing into the southern half, where its shape starts in $BCAE, by eighth of a turn."
  },
  {
   "address": 48302,
   "type": "line",
   "text": "The compass needle's eight shapes, four bytes (four rows of one sprite byte) each, one for each eighth of a turn."
  },
  {
   "address": 48334,
   "type": "line",
   "text": "Draws the attitude indicator from the pitch and roll ($813A, $813B), only when they have changed: the horizon bar's two ends move a step at a time towards the new ones, each step rubbed out and drawn again in both panel bitmaps."
  },
  {
   "address": 48659,
   "type": "line",
   "text": "The point on the indicator's circle for an angle."
  },
  {
   "address": 48768,
   "type": "line",
   "text": "How far the horizon line turns round the dial for the roll (a quarter of $813B, 0-5)."
  },
  {
   "address": 48774,
   "type": "line",
   "text": "Half the angle between the horizon line's two ends, by half the pitch (0-10): $40, a line through the centre, when level, less as the nose goes up or down."
  },
  {
   "address": 48785,
   "type": "line",
   "text": "The dial's quarter circle: each point's x from the centre, in pixels."
  },
  {
   "address": 48810,
   "type": "line",
   "text": "Each point's y from the centre, in rows."
  },
  {
   "address": 48835,
   "type": "line",
   "text": "The point (0-24) on the quarter circle for each of the 64 angles in a quarter turn."
  },
  {
   "address": 48899,
   "type": "line",
   "text": "Entry 64, point 24: s_BE13 mirrors the second and fourth quarters, $40 less the angle, so an angle at the start of one of them reads this 65th entry."
  },
  {
   "address": 48900,
   "type": "line",
   "text": "Draws a line in both panel bitmaps, in the colour in A."
  },
  {
   "address": 49064,
   "type": "line",
   "text": "INX ($E8) for a line going right, DEX ($CA) going left, patched in: the step to the next pixel."
  },
  {
   "address": 49066,
   "type": "line",
   "text": "The pixel place past the byte's last, patched in: 4 going right, $FF going left."
  },
  {
   "address": 49070,
   "type": "line",
   "text": "The pixel place the next byte starts at, patched in: 0 going right, 3 going left."
  },
  {
   "address": 49074,
   "type": "line",
   "text": "The step to the next byte, patched in: 8 going right, -8 going left. The line is drawn a pixel at a time across, stepping down a row when its error overflows, in both panel bitmaps."
  },
  {
   "address": 49180,
   "type": "line",
   "text": "The horizon line's two ends now, as angles round the dial ($C01C and $C01D), each moving two steps a pass towards $C01E-$C01F."
  },
  {
   "address": 49181,
   "type": "line",
   "text": "The horizon line's second end now."
  },
  {
   "address": 49182,
   "type": "line",
   "text": "The angles the two ends are moving to (with $C01F)."
  },
  {
   "address": 49183,
   "type": "line",
   "text": "The second end's target."
  },
  {
   "address": 49184,
   "type": "line",
   "text": "Each end moved two steps towards the top of the dial (with $C021): the line drawn in colour 3 just above the horizon."
  },
  {
   "address": 49185,
   "type": "line",
   "text": "The second end's point above the horizon."
  },
  {
   "address": 49186,
   "type": "line",
   "text": "Half the pitch, worked on while the ends are found."
  },
  {
   "address": 49187,
   "type": "line",
   "text": "A work byte: the pitch's sign, then each end's angle rounded to an even step."
  },
  {
   "address": 49188,
   "type": "line",
   "text": "A work byte: a quarter of the roll, the line's turn round the dial, then how many ends moved this pass."
  },
  {
   "address": 49189,
   "type": "line",
   "text": "The colour of the line being drawn: $FF or 0."
  },
  {
   "address": 49190,
   "type": "line",
   "text": "The line drawer's count of rows left in the current character."
  },
  {
   "address": 49191,
   "type": "line",
   "text": "The pitch the dial last showed."
  },
  {
   "address": 49192,
   "type": "line",
   "text": "The roll the dial last showed."
  },
  {
   "address": 49193,
   "type": "line",
   "text": "Draws the seven bar gauges from $813D-$8143, each moving one step a frame towards its value (all the way at once when bit 7 is set), in both panel bitmaps."
  },
  {
   "address": 49321,
   "type": "line",
   "text": "The label is a false one: the BIT at $381C hides an LDA #$C0 and names this address by chance. Here the bar's new top moves to the next character row; the row under it is painted colour 3, both panel bitmaps. A value with bit 7 set goes round again until the bar reaches it."
  },
  {
   "address": 49385,
   "type": "line",
   "text": "The seven bars' bottom rows."
  },
  {
   "address": 49392,
   "type": "line",
   "text": "The seven bars' columns."
  },
  {
   "address": 49399,
   "type": "line",
   "text": "The bar pixel masks."
  },
  {
   "address": 49403,
   "type": "line",
   "text": "The seven bars' heights now, moving a step a frame."
  },
  {
   "address": 49410,
   "type": "line",
   "text": "Prints the number in $813C on the CRT, for the target view: into the bitmap being drawn only, on the CRT's background pattern ($55), in one figure when A is 0 and two otherwise. The operands it patches are put back after."
  },
  {
   "address": 49456,
   "type": "line",
   "text": "Prints the number in $813C at column X, row Y in two figures, keeping a leading zero."
  },
  {
   "address": 49474,
   "type": "line",
   "text": "Prints the number in $813C in one figure."
  },
  {
   "address": 49490,
   "type": "line",
   "text": "Prints the number in $813C in two figures, a leading zero left blank."
  },
  {
   "address": 49506,
   "type": "line",
   "text": "Prints the heading in $813C (0 to 255 for a full turn) as a bearing of three figures, 0 to 359 degrees: the quarter from the tables at $C3E7 and $C3EB (0, 90, 180, 270) and the degrees within it from $C3A7."
  },
  {
   "address": 49608,
   "type": "line",
   "text": "Prints the number in $813C in three figures, leading zeros left blank."
  },
  {
   "address": 49613,
   "type": "line",
   "text": "Prints the number in $813C as up to three decimal figures (as many as $C250 says, set by the callers) into both panel bitmaps at column zpa_FD (in pixels of two) and row zpa_FE; X = 0 leaves leading zeros blank. Each figure is five rows of the font at $C344, shifted to its pixel place."
  },
  {
   "address": 49744,
   "type": "line",
   "text": "How many figures to print, less one, patched in by the callers ($C130, $C142, $C152): 2 for three. A zero before the first figure that is not is left blank ($0A, the font's blank) unless leading zeros are kept."
  },
  {
   "address": 49800,
   "type": "line",
   "text": "The figure's place in the font at $C344, low byte, patched in: eight bytes to a figure."
  },
  {
   "address": 49801,
   "type": "line",
   "text": "Its high byte. The figure's five rows are shifted right by the pixel place (zpa_FD) into $C399 and $C39E, its left and right parts."
  },
  {
   "address": 49846,
   "type": "line",
   "text": "$20, patched to 0 for the target view: the second bitmap's address is the first's with this toggled, so the figures go into both panel bitmaps or, for the CRT, only into the one being drawn."
  },
  {
   "address": 49852,
   "type": "line",
   "text": "The same toggle for the right part's second address."
  },
  {
   "address": 49861,
   "type": "line",
   "text": "The mask for the figure's left byte, low byte, patched in: from $C30A, eight bytes for each pixel place."
  },
  {
   "address": 49862,
   "type": "line",
   "text": "The left mask's high byte."
  },
  {
   "address": 49867,
   "type": "line",
   "text": "ORed into the left byte, patched in: 0, or $55 for the CRT's target view."
  },
  {
   "address": 49884,
   "type": "line",
   "text": "The mask for the figure's right byte, low byte, patched in: $1D on from the left's."
  },
  {
   "address": 49885,
   "type": "line",
   "text": "The right mask's high byte."
  },
  {
   "address": 49890,
   "type": "line",
   "text": "ORed into the right byte, 0 or $55 for the CRT. Then on to the next figure, eight bytes to the right."
  },
  {
   "address": 49924,
   "type": "line",
   "text": "Powers of ten, 1, 10 and 100, that the printer takes away to find each figure."
  },
  {
   "address": 49927,
   "type": "line",
   "text": "Three bytes, 5, 5 and 2, that nothing reads."
  },
  {
   "address": 49930,
   "type": "line",
   "text": "The bits a figure leaves alone in its left byte, five rows for each of four pixel shifts eight bytes apart: $03, $C0, $F0, $FC. The printer patches the operand at $C2C5 to the shift's rows."
  },
  {
   "address": 49938,
   "type": "line",
   "text": "Shift 1's rows of the left masks, $C0, where the patched operand pointed when the snapshot was taken."
  },
  {
   "address": 49959,
   "type": "line",
   "text": "The bits a figure leaves alone in its right byte, by shift: $FF, $FF, $3F, $0F (the operand at $C2DC)."
  },
  {
   "address": 49967,
   "type": "line",
   "text": "Shift 1's rows of the right masks."
  },
  {
   "address": 49988,
   "type": "line",
   "text": "The panel's figures: 0 to 9 and a blank (10), each five rows of three pixels, eight bytes apart. The printer patches its LDA at $C287 to the figure's rows."
  },
  {
   "address": 50060,
   "type": "line",
   "text": "Figure 9's rows, where the patched LDA last read."
  },
  {
   "address": 50073,
   "type": "line",
   "text": "The figure being printed, shifted into place: its left byte's five rows."
  },
  {
   "address": 50078,
   "type": "line",
   "text": "Its right byte's five rows."
  },
  {
   "address": 50083,
   "type": "line",
   "text": "Non-zero once a figure other than 0 has been printed, or set to 1 by a caller before any (print_bearing, so that a bearing keeps its leading zeros); while it is 0 a zero is left blank."
  },
  {
   "address": 50084,
   "type": "line",
   "text": "The number's three figures, hundreds first ($C3A4-$C3A6)."
  },
  {
   "address": 50085,
   "type": "line",
   "text": "The tens figure."
  },
  {
   "address": 50086,
   "type": "line",
   "text": "The units figure."
  },
  {
   "address": 50087,
   "type": "line",
   "text": "The degrees for each 64th of a quarter turn: 0 to 89."
  },
  {
   "address": 50151,
   "type": "line",
   "text": "The degrees at the start of each quarter turn, low bytes: 0, 90, 180, 14 (270)."
  },
  {
   "address": 50155,
   "type": "line",
   "text": "The same, high bytes: 0, 0, 0, 1. Its fifth byte is not read."
  },
  {
   "address": 50160,
   "type": "line",
   "text": "The bitmap's 200 pixel rows: each row's address, low byte."
  },
  {
   "address": 50360,
   "type": "line",
   "text": "Each pixel row's address, high byte, less the bitmap's base: 200 entries to $C57F."
  },
  {
   "address": 50432,
   "type": "line",
   "text": "Pixel rows 72 to 199's high bytes; the divider also reads its reciprocals from here, with X from 128 to 255, so they lie at $C580."
  },
  {
   "address": 50496,
   "type": "line",
   "text": "Pixel rows 136 to 199's high bytes."
  },
  {
   "address": 50560,
   "type": "line",
   "text": "The reciprocals: 32768 divided by each number from 128 to 255, less one: $FF down to $7F."
  },
  {
   "address": 50688,
   "type": "line",
   "text": "The sine table: the size of the sine for each of 256 angles, 0 to $FF; a half turn takes 128 entries and the second half repeats the first, the sign being the callers'."
  },
  {
   "address": 50944,
   "type": "line",
   "text": "The arctangent: for each n from 0 to 255, the angle whose tangent is n/64, in 256ths of a turn ($00 to $36)."
  },
  {
   "address": 51200,
   "type": "line",
   "text": "The map's character set, the theatre's own (Western Europe's here), copied from $A800 by the loader before the flight. Characters 0-31: letters and the shapes the CRT also prints figures with."
  },
  {
   "address": 51256,
   "type": "line",
   "text": "Character 7, G, where the CRT's message printer, which patches its address, last read a letter."
  },
  {
   "address": 51320,
   "type": "line",
   "text": "Map font characters 15-31: letters O to Z and the shapes after them."
  },
  {
   "address": 51456,
   "type": "line",
   "text": "Characters 32-57: the unit symbols of the map; $26 is a friendly base."
  },
  {
   "address": 51664,
   "type": "line",
   "text": "Characters 58-255: the terrain, six characters to a terrain, three wide and two high, 33 terrains. The CRT's map and the big map are made of them; the hill test reads their pixels."
  },
  {
   "address": 52224,
   "type": "line",
   "text": "Characters 128-255, the second half of the terrain."
  },
  {
   "address": 53080,
   "type": "line",
   "text": "Character 235, where the CRT's map copy, which patches its address, last read a row."
  },
  {
   "address": 53144,
   "type": "line",
   "text": "Map font characters 243-255, the last terrain characters."
  },
  {
   "address": 53312,
   "type": "line",
   "text": "The panel bitmap at $C000, row 13: the canopy's frame at both ends, the tops of the airspeed dial (columns 6-14), the CRT (15-24) and the altimeter (25-33)."
  },
  {
   "address": 53632,
   "type": "line",
   "text": "The panel bitmap at $C000, row 14: the left frame with a lamp (columns 4-5), the airspeed dial, the CRT's title line (15-24), where RADIO MSG, TARGET and the targets' names are printed, the altimeter and the right frame's lamp box."
  },
  {
   "address": 53952,
   "type": "line",
   "text": "The panel bitmap at $C000, row 15, columns 0-14: the left canopy frame with the letters F and T over the fuel and torque bars, and the airspeed dial's 50 mark."
  },
  {
   "address": 54152,
   "type": "line",
   "text": "The panel bitmap at $C000, row 15, columns 25-39: the altimeter's figures 8 to 2 round its top, and the canopy's right frame with its lamp box."
  },
  {
   "address": 54272,
   "type": "line",
   "text": "The panel bitmap at $C000, row 16, columns 0-14: the fuel bars (yellow) and torque bars (blue), and the airspeed dial with its 200 mark."
  },
  {
   "address": 54472,
   "type": "line",
   "text": "The panel bitmap at $C000, row 16, columns 25-39: the altimeter's 7 and 3, and the lamp box."
  },
  {
   "address": 54592,
   "type": "line",
   "text": "The panel bitmap at $C000, row 17, columns 0-14: the fuel and torque bars, and the airspeed dial's 100 mark."
  },
  {
   "address": 54792,
   "type": "line",
   "text": "The panel bitmap at $C000, row 17, columns 25-39: the altimeter's box for the hundreds (printed by the engine), and the lamp box."
  },
  {
   "address": 54912,
   "type": "line",
   "text": "The panel bitmap at $C000, row 18, columns 0-14: the bars' feet and the airspeed dial's 150 mark."
  },
  {
   "address": 55112,
   "type": "line",
   "text": "The panel bitmap at $C000, row 18, columns 25-39: the altimeter's 6, 5 and 4, and the lamp box's foot."
  },
  {
   "address": 55232,
   "type": "line",
   "text": "The panel bitmap at $C000, row 19, columns 0-14: the heading compass's top, the letter R over the three bars of engine 1, the rotor and engine 2, and the top of the attitude indicator."
  },
  {
   "address": 55296,
   "type": "line",
   "text": "The panel bitmap at $C000, row 19, columns 8-13: the top of the attitude indicator. The lamp routine's ADC #$D8 makes colour RAM addresses that the disassembler names here; the RAM itself is only this picture."
  },
  {
   "address": 55340,
   "type": "line",
   "text": "The panel bitmap at $C000, row 19, the last twelve bytes before the CRT: the attitude indicator's right edge. The LDX at $9D28 reads $D82C as colour RAM, the CRT's frame colour, from the chips."
  },
  {
   "address": 55432,
   "type": "line",
   "text": "The panel bitmap at $C000, row 19, columns 25-39: the top of the vertical speed dial and of the radar scope's circle."
  },
  {
   "address": 55552,
   "type": "line",
   "text": "The panel bitmap at $C000, row 20, columns 0-14: the heading compass, the R bars and the attitude indicator's sky."
  },
  {
   "address": 55752,
   "type": "line",
   "text": "The panel bitmap at $C000, row 20, columns 25-39: the vertical speed dial's upper marks and the radar scope."
  },
  {
   "address": 55808,
   "type": "line",
   "text": "The panel bitmap at $C000, row 20, columns 32-39: the radar scope's upper part. Named by the CRT's colour RAM writes ($9BE7), which reach the chips, not this RAM."
  },
  {
   "address": 55871,
   "type": "line",
   "text": "The panel bitmap at $C000, the last byte of row 20, at the right edge of the radar scope; $DA3F is a colour RAM address to the code that names it."
  },
  {
   "address": 55872,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21: the bottoms of the R bars and the heading compass (columns 0-6), the attitude indicator (7-14), the stores' upper pictures: a Sidewinder, an FFAR and a Hellfire (15-24), the vertical speed dial (25-33) and the radar scope (34-39)."
  },
  {
   "address": 55911,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21, from the last byte of column 4 to column 9: the compass's foot and the attitude indicator's left part; $DA67 is the CRT's colour RAM to the code ($9BE7)."
  },
  {
   "address": 55951,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21, columns 9-14: the attitude indicator; $DA8F is the CRT's colour RAM to the code."
  },
  {
   "address": 55991,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21, columns 14-19: the attitude indicator's right edge and the Sidewinder's picture; $DAB7 is colour RAM to the code."
  },
  {
   "address": 56031,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21, columns 19-24: the FFAR's and the Hellfire's pictures; $DADF is colour RAM to the code."
  },
  {
   "address": 56064,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21, the first seven bytes of column 24, in the Hellfire's picture; $DB00 is colour RAM to the lamps."
  },
  {
   "address": 56071,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21, columns 24-29: the stores' right edge and the vertical speed dial's left part; $DB07 is colour RAM to the code."
  },
  {
   "address": 56111,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21, columns 29-39: the vertical speed dial's right part and the radar scope; $DB2F is colour RAM to the code."
  },
  {
   "address": 56175,
   "type": "line",
   "text": "The panel bitmap at $C000, row 21, the last 17 bytes: the radar scope's right edge."
  },
  {
   "address": 56192,
   "type": "line",
   "text": "The panel bitmap at $C000, row 22: the heading in three figures (columns 0-2) and the bars' feet, the attitude indicator, the counts of Sidewinders, FFARs and Hellfires (15-24), the vertical speed dial and the radar scope."
  },
  {
   "address": 56488,
   "type": "line",
   "text": "The panel bitmap at $C000, row 22, columns 37-39: the radar scope's right edge. The STA at $B66A, which puts back the bytes the scope's dots changed, is patched with each dot's address and last pointed here."
  },
  {
   "address": 56512,
   "type": "line",
   "text": "The panel bitmap at $C000, row 23: the strip that the slip and waypoint marks slide along (columns 0-6), the attitude indicator, the stores' lower pictures: chaff, the cannon and a flare (15-24), the vertical speed dial and the radar scope."
  },
  {
   "address": 56832,
   "type": "line",
   "text": "The panel bitmap at $C000, row 24: a label and the waypoint's bearing in three figures (columns 0-6), the bottom of the attitude indicator, the counts of chaff, rounds and flares (15-24), the vertical speed dial's foot and the radar scope's."
  },
  {
   "address": 57152,
   "type": "line",
   "text": "The helicopter seen from above, for each eighth of a turn of its heading: eight frames of eight rows, one byte each, which make the CRT's helicopter mark (sprite block $40 at $D000)."
  },
  {
   "address": 57216,
   "type": "line",
   "text": "The rotor seen from above, four frames of eight rows (a diagonal, upright, the other diagonal, across), laid over the outline as the rotor turns."
  },
  {
   "address": 57240,
   "type": "line",
   "text": "The rotor's fourth frame, across, where the patched LDA at $98B0 last read."
  },
  {
   "address": 57280,
   "type": "line",
   "text": "Sprite block $7F: the CRT's copy of the locked target's homing missile, written while the target view shows it."
  },
  {
   "address": 57856,
   "type": "line",
   "text": "The map's unit bits: for each of its 256 squares (16 by 16, the edge always 0), a bit for each switchable object still standing. Destroying a unit clears its bit; the view draws only the objects whose bits are set."
  },
  {
   "address": 58112,
   "type": "line",
   "text": "The wing launches' frames: for each of the 20 steps of a missile leaving the wing, the frame to add to the wing's sprite, 3 down to 0. These 60 bytes ($E300-$E33B) lie over the colours of map characters 0-59, which the big map and the hill test read here too."
  },
  {
   "address": 58132,
   "type": "line",
   "text": "The wing launches' x step from the wing, by step: 0 growing to $72."
  },
  {
   "address": 58152,
   "type": "line",
   "text": "The wing launches' y by step: $70 to $8D."
  },
  {
   "address": 58172,
   "type": "line",
   "text": "The map characters' colours by character code, here from 60 to 255, which the big map writes to colour RAM and the hill test reads."
  },
  {
   "address": 58368,
   "type": "line",
   "text": "The rotor's target speed by the engines that run (none, engine 1, engine 2, both), low bytes: 0, $C0, $C0, $80."
  },
  {
   "address": 58372,
   "type": "line",
   "text": "The same, high bytes: 0, 0, 0, 1 (both engines: $180)."
  },
  {
   "address": 58376,
   "type": "line",
   "text": "The joystick's two bits for an axis to a step: both pressed 0, the second pressed +1, the first -1, neither 0."
  },
  {
   "address": 58380,
   "type": "line",
   "text": "Reads the joystick in port 2 into zpa_7A (up -1, down +1) and zpa_84 (left -1, right +1). Both are zeroed unless the high bytes of CIA 2's timers A and B are $7D to $80 apart: the library started them $7F00 apart on side 1, and they keep that while they run."
  },
  {
   "address": 58428,
   "type": "line",
   "text": "Reads unit A's record into zpa_53-zpa_59: its x and y ($5100, $5180, high bytes), its alert byte ($5280), its type byte ($5300) and $5380. Units 0-5 also have fine positions: the low bytes, the height and the heading."
  },
  {
   "address": 58490,
   "type": "line",
   "text": "Writes zpa_53-zpa_59 back as unit A's record."
  },
  {
   "address": 58546,
   "type": "line",
   "text": "The bearing of the vector (A7-A8, A5-A6), 0 to 255 for a full turn: the octant from the signs and which is larger, and the angle within it from the ratio (s_E601) through the table at $E55D."
  },
  {
   "address": 58717,
   "type": "line",
   "text": "The bearing's angles within an octant, 128 entries by the ratio of the smaller difference to the larger: $40 to $80."
  },
  {
   "address": 58781,
   "type": "line",
   "text": "Entries 64 to 127 of the angles."
  },
  {
   "address": 58845,
   "type": "line",
   "text": "Negates the word at A5+x."
  },
  {
   "address": 58859,
   "type": "line",
   "text": "Swaps A5-A6 with A7-A8."
  },
  {
   "address": 58876,
   "type": "line",
   "text": "Shifts A right Y times."
  },
  {
   "address": 58881,
   "type": "line",
   "text": "Divides A7-A8 by A5-A6, signed, into A5-A6."
  },
  {
   "address": 58963,
   "type": "line",
   "text": "Makes the word at A5+x positive, noting the sign."
  },
  {
   "address": 58977,
   "type": "line",
   "text": "The challenge at a friendly base, a step each time zpa_89 runs out. First the CRT shows PASSWORD: with the codeword's letters and asks for the countersign, typed with the letter keys, DEL and RETURN; a checksum of it must match the codeword's in the table at $E741. Right, the challenge is over. Wrong, \"INCORRECT COUNTRSIGN SEND AGAIN\" and a second try; wrong again, \"FALSE COUNTRSIGN DESTROY INTRUDING HELICOPTER\" and every damage bit set."
  },
  {
   "address": 59201,
   "type": "line",
   "text": "The 16 codewords' countersign checksums, one each; the challenge compares the typed countersign's checksum with the entry for the mission's codeword."
  },
  {
   "address": 59217,
   "type": "line",
   "text": "Takes the first key from the keyboard buffer: A = its code, 0 (and Z set) if none."
  },
  {
   "address": 60392,
   "type": "line",
   "text": "The big map screen's last 16 bytes, after its 1,000 cells, which the screen does not show."
  },
  {
   "address": 60408,
   "type": "line",
   "text": "The big map screen's sprite pointers: sprite 0's, $B7, the waypoint's cross, set by draw_map."
  },
  {
   "address": 60409,
   "type": "line",
   "text": "Sprite 1's pointer on the big map: $40, the helicopter's mark."
  },
  {
   "address": 60410,
   "type": "line",
   "text": "Sprites 2-7's pointers on the big map, unused there."
  },
  {
   "address": 60416,
   "type": "line",
   "text": "The sound effects' addresses in this page, low bytes, ten effects. Each effect is a list of three-byte entries: the frame it is due in, a SID register (0-24) and the value written there; a frame with bit 7 set starts a slide instead, its start value (whose low three bits pick the register) then the step added each frame. A 0 ends it."
  },
  {
   "address": 60426,
   "type": "line",
   "text": "Six bytes before the first effect that nothing reads."
  },
  {
   "address": 60432,
   "type": "line",
   "text": "Effect 0: a triangle tone on voice 1 with noise on voice 3, sliding up twice, two seconds. None of the flight's calls asks for it."
  },
  {
   "address": 60469,
   "type": "line",
   "text": "Effect 1, the cannon: a pulse on voice 1, gated for 30 frames."
  },
  {
   "address": 60491,
   "type": "line",
   "text": "Effect 2, chaff, a flare or stores jettisoned: a noise burst of 16 frames."
  },
  {
   "address": 60507,
   "type": "line",
   "text": "Effect 3, a missile's end: noise sliding down for 90 frames."
  },
  {
   "address": 60529,
   "type": "line",
   "text": "Effect 4, a jammer switched: a sawtooth swept up, its step patched to $40 for the radar jammer and $10 for the infrared one ($EC7C)."
  },
  {
   "address": 60540,
   "type": "line",
   "text": "The jammer sound's sweep step, patched by the key that switches the jammer."
  },
  {
   "address": 60545,
   "type": "line",
   "text": "Effect 5, a missile hitting the helicopter: four frames of noise."
  },
  {
   "address": 60561,
   "type": "line",
   "text": "Effect 6, a missile fired: noise rising then falling for two seconds."
  },
  {
   "address": 60572,
   "type": "line",
   "text": "The launch sound's rising step, patched to 1 for a Sidewinder or Hellfire and 9 for an FFAR."
  },
  {
   "address": 60578,
   "type": "line",
   "text": "Inside the launch sound. The BIT at $373D names this address by chance: it hides an LDX #$EC."
  },
  {
   "address": 60589,
   "type": "line",
   "text": "Effect 7, a gun hit, a crash, an explosion or a decoyed missile: a short noise."
  },
  {
   "address": 60605,
   "type": "line",
   "text": "Effect 8, a one-frame triangle blip: an enemy missile fired, or the CRT moved on to a target."
  },
  {
   "address": 60607,
   "type": "line",
   "text": "The blip's pitch, patched: $14 for an enemy launch, $3C for the CRT."
  },
  {
   "address": 60624,
   "type": "line",
   "text": "Effect 9, an engine's starter: effect 0's slides the other way. Its first entry names register $50, past the SID's 25: the SID repeats its registers every 32 bytes, so the write lands in register 16, voice 3's pulse width low byte; effect 0's names register 1."
  },
  {
   "address": 60649,
   "type": "line",
   "text": "23 bytes after the last effect, like the end of effect 0, that nothing reads."
  },
  {
   "address": 60672,
   "type": "line",
   "text": "Sprite block $B4: the attitude indicator's pitch ladder, panel sprite 0."
  },
  {
   "address": 60736,
   "type": "line",
   "text": "Sprite block $B5: the slip mark, a small triangle pointing down, panel sprite 2 on the strip under the heading."
  },
  {
   "address": 60800,
   "type": "line",
   "text": "Sprite block $B6: the waypoint mark, a small triangle pointing up, panel sprite 3."
  },
  {
   "address": 60864,
   "type": "line",
   "text": "Sprite block $B7: a cross, the waypoint's on the big map (sprite 0 there)."
  },
  {
   "address": 60928,
   "type": "line",
   "text": "Eight zero bytes between the sprites and the panel's colours, never read."
  },
  {
   "address": 60936,
   "type": "line",
   "text": "The panel's screen, rows 13 and 14 and the first fifteen cells of row 15: each cell's two colours in the bitmap (high nibble for one pixel pair, low for another). The screen's rows 0-12 hold the sound effects and sprites, as the window covers them."
  },
  {
   "address": 61041,
   "type": "line",
   "text": "The panel's colours: row 15's last fifteen cells and row 16's first fifteen."
  },
  {
   "address": 61081,
   "type": "line",
   "text": "The panel's colours: row 16's last fifteen cells and row 17's first fifteen."
  },
  {
   "address": 61121,
   "type": "line",
   "text": "The panel's colours: row 17's last fifteen cells and row 18's first fifteen."
  },
  {
   "address": 61161,
   "type": "line",
   "text": "The panel's colours: row 18's last fifteen cells and row 19's first fifteen."
  },
  {
   "address": 61201,
   "type": "line",
   "text": "The panel's colours: row 19's last fifteen cells and row 20's first fifteen."
  },
  {
   "address": 61241,
   "type": "line",
   "text": "The panel's colours: row 20's last fifteen cells and row 21's first 34."
  },
  {
   "address": 61290,
   "type": "line",
   "text": "The radar scope's colours, row 21, column 34: scope_colour paints this cell and the four after it, and the same five in rows 22 and 23, when the scale changes."
  },
  {
   "address": 61291,
   "type": "line",
   "text": "The scope's colours, row 21, column 35."
  },
  {
   "address": 61292,
   "type": "line",
   "text": "The scope's colours, row 21, column 36."
  },
  {
   "address": 61293,
   "type": "line",
   "text": "The scope's colours, row 21, column 37."
  },
  {
   "address": 61294,
   "type": "line",
   "text": "The panel's colours from row 21's column 38 to row 22's column 35."
  },
  {
   "address": 61332,
   "type": "line",
   "text": "The radar scope's centre cell, row 22, column 36, which scope_colour sets to $B1; then the panel's colours to row 24's column 19."
  },
  {
   "address": 61396,
   "type": "line",
   "text": "The panel's colours: row 24's last twenty cells."
  },
  {
   "address": 61416,
   "type": "line",
   "text": "The panel screen's 16 bytes after its 1,000 cells, which nothing reads."
  },
  {
   "address": 61432,
   "type": "line",
   "text": "The panel's sprite pointers, written each frame by sprites_copy from $818D: sprite 0's, the ladder."
  },
  {
   "address": 61433,
   "type": "line",
   "text": "Panel sprite 1's pointer: $40, the CRT's helicopter mark, or $7F for the missile on the CRT."
  },
  {
   "address": 61434,
   "type": "line",
   "text": "Panel sprites 2-7's pointers; $C0, the empty block at $F000, hides sprite 2 at the start."
  },
  {
   "address": 61440,
   "type": "line",
   "text": "Sprite block $C0, all zeros: an empty sprite, which hides panel sprite 2. It is also the panel bitmap's row 12, which the screen does not show."
  },
  {
   "address": 61504,
   "type": "line",
   "text": "The panel bitmap at $E000, row 13: the canopy's frame at both ends, the tops of the airspeed dial (columns 6-14), the CRT (15-24) and the altimeter (25-33)."
  },
  {
   "address": 61824,
   "type": "line",
   "text": "The panel bitmap at $E000, row 14: the left frame with a lamp (columns 4-5), the airspeed dial, the CRT's title line (15-24), where RADIO MSG, TARGET and the targets' names are printed, the altimeter and the right frame's lamp box."
  },
  {
   "address": 62144,
   "type": "line",
   "text": "The panel bitmap at $E000, row 15, columns 0-14: the left canopy frame with the letters F and T over the fuel and torque bars, and the airspeed dial's 50 mark."
  },
  {
   "address": 62344,
   "type": "line",
   "text": "The panel bitmap at $E000, row 15, columns 25-39: the altimeter's figures 8 to 2 round its top, and the canopy's right frame with its lamp box."
  },
  {
   "address": 62464,
   "type": "line",
   "text": "The panel bitmap at $E000, row 16, columns 0-14: the fuel bars (yellow) and torque bars (blue), and the airspeed dial with its 200 mark."
  },
  {
   "address": 62664,
   "type": "line",
   "text": "The panel bitmap at $E000, row 16, columns 25-39: the altimeter's 7 and 3, and the lamp box."
  },
  {
   "address": 62784,
   "type": "line",
   "text": "The panel bitmap at $E000, row 17, columns 0-14: the fuel and torque bars, and the airspeed dial's 100 mark."
  },
  {
   "address": 62984,
   "type": "line",
   "text": "The panel bitmap at $E000, row 17, columns 25-39: the altimeter's box for the hundreds (printed by the engine), and the lamp box."
  },
  {
   "address": 63104,
   "type": "line",
   "text": "The panel bitmap at $E000, row 18, columns 0-14: the bars' feet and the airspeed dial's 150 mark."
  },
  {
   "address": 63304,
   "type": "line",
   "text": "The panel bitmap at $E000, row 18, columns 25-39: the altimeter's 6, 5 and 4, and the lamp box's foot."
  },
  {
   "address": 63424,
   "type": "line",
   "text": "The panel bitmap at $E000, row 19, columns 0-14: the heading compass's top, the letter R over the three bars of engine 1, the rotor and engine 2, and the top of the attitude indicator."
  },
  {
   "address": 63624,
   "type": "line",
   "text": "The panel bitmap at $E000, row 19, columns 25-39: the top of the vertical speed dial and of the radar scope's circle."
  },
  {
   "address": 63744,
   "type": "line",
   "text": "The panel bitmap at $E000, row 20, columns 0-14: the heading compass, the R bars and the attitude indicator's sky."
  },
  {
   "address": 63944,
   "type": "line",
   "text": "The panel bitmap at $E000, row 20, columns 25-39: the vertical speed dial's upper marks and the radar scope."
  },
  {
   "address": 64064,
   "type": "line",
   "text": "The panel bitmap at $E000, row 21: the bottoms of the R bars and the heading compass (columns 0-6), the attitude indicator (7-14), the stores' upper pictures: a Sidewinder, an FFAR and a Hellfire (15-24), the vertical speed dial (25-33) and the radar scope (34-39)."
  },
  {
   "address": 64384,
   "type": "line",
   "text": "The panel bitmap at $E000, row 22: the heading in three figures (columns 0-2) and the bars' feet, the attitude indicator, the counts of Sidewinders, FFARs and Hellfires (15-24), the vertical speed dial and the radar scope."
  },
  {
   "address": 64704,
   "type": "line",
   "text": "The panel bitmap at $E000, row 23: the strip that the slip and waypoint marks slide along (columns 0-6), the attitude indicator, the stores' lower pictures: chaff, the cannon and a flare (15-24), the vertical speed dial and the radar scope."
  },
  {
   "address": 65024,
   "type": "line",
   "text": "The panel bitmap at $E000, row 24: a label and the waypoint's bearing in three figures (columns 0-6), the bottom of the attitude indicator, the counts of chaff, rounds and flares (15-24), the vertical speed dial's foot and the radar scope's."
  },
  {
   "address": 65530,
   "type": "line",
   "text": "The processor's vectors in RAM, with the KERNAL banked out: NMI and reset to $91EF, the interrupt to $94B8."
  }
 ]
}