/*>execute.c
 *
 * Guardian
 * BBC version by S. Evans. Copyright Alligata Software 1984.
 * RISC OS Conversion by Michael Foot.
 * Version 1.03 (09 Feb 2003).
 *
 */

#include "r6502lib.h"

extern void m1300(void);
extern void m1319(void);
extern void m1320(void);
extern void m1390(void);
extern void m145E(void);
extern void m1478(void);
extern void m1495(void);
extern void m14B0(void);
extern void m14F0(void);
extern void m15B7(void);
extern void m169E(void);
extern void m18A8(void);
extern void m18B5(void);
extern void m18EB(void);
extern void m18FD(void);
extern void m1914(void);
extern void m199A(void);
extern void m19A7(void);
extern void m1A9A(void);
extern void m1AB6(void);
extern void m1ACE(void);
extern void m1B17(void);
extern void m1B37(void);
extern void m1C0B(void);
extern void m1F7B(void);
extern void m20A9(void);
extern void m2122(void);
extern void m215A(void);
extern void m2205(void);
extern void m2251(void);
extern void m228A(void);
extern void m22A4(void);
extern void m2300(void);
extern void m2330(void);
extern void m2345(void);
extern void m2369(void);
extern void m23DE(void);
extern void m23F5(void);
extern void m2452(void);
extern void m2497(void);
extern void m2501(void);
extern void m2528(void);
extern void m2597(void);
extern void m267C(void);
extern void m270E(void);
extern void m2727(void);
extern void m2742(void);
extern void m2782(void);
extern void m2849(void);
extern void m285F(void);
extern void m28E3(void);
extern void m2971(void);
extern void m2A17(void);
extern void m2A2B(void);
extern void m2AEB(void);
extern void m2BAB(void);
extern void m2C90(void);
extern void m2CC3(void);
extern void m241D(void);

extern int initial_lives;
extern int initial_smartbombs;

int alien_sound[0x2A] = {
0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10,
0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E, 0x20,
0x22, 0x24, 0x26, 0x28, 0x2B, 0x2E, 0x31, 0x34,
0x37, 0x3A, 0x3D, 0x40, 0x43, 0x46, 0x49, 0x4C,
0x4F, 0x52, 0x55, 0x58, 0x5B, 0x5E, 0x61, 0x64,
0x67, 0x6A
};

int alien_index;

void execute(void)
{
  LDA_IMMED(0x03)
  STA_ABSOL(0x0258) /**FX200,3*/
  LDA_IMMED(0x00)
  STA_ZEROP(0x31)
  LDA_IMMED(0x23)
  STA_ZEROP(0x32)
  /*JMP_INDIR(m0031)*/
  m2300();
}

void m1300(void)
{
  LDA_IMMED(0x00)
  STA_ZEROP(0x71)
  TXA
  ASL
  ASL
  ROL_ZEROP(0x71)
  ASL
  ROL_ZEROP(0x71)
  ADC_ABSYP(0x0700)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_ABSYP(0x0780)
  STA_ZEROP(0x71)
  RTS
}

void m1319(void)
{
  /*check for a key press*/
  LDY_IMMED(0xFF)
  LDA_IMMED(0x81)
  OSBYTE81
}

void m1320(void)
{
  LDY_ABSXP(0x55FF)
  LDA_ABSYP(0x0700)
  STA_ZEROP(0x75)
  AND_IMMED(0xF8)
  STA_ZEROP(0x70)
  LDA_ABSYP(0x0780)
  STA_ZEROP(0x71)
  LDA_ZEROP(0x75)
  AND_IMMED(0x07)
  TAY
  TXA
  CLC
  ADC_IMMED(0x28)
  STA_ABSOL(0x138C) /*!!*/
m133D:
  LDA_ABSXP(0x55FF)
  CMP_ABSXP(0x5600)
  BCS(m1365)
  value1 = memory[0x1346];
  LDA_IMMED(value1)
  STA_POSTI(0x70)
  INY
  value1 = memory[0x134B];
  LDA_IMMED(value1)
  STA_POSTI(0x70)
  INY
  CPY_IMMED(0x08)
  BNE(m137F)
  LDA_ZEROP(0x70)
  CLC
  ADC_IMMED(0x40)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x01)
  STA_ZEROP(0x71)
  LDY_IMMED(0x00)
  JMP_ABSOL(m137F)
m1365:
  DEY
  BPL(m1376)
  LDA_ZEROP(0x70)
  SBC_IMMED(0x40)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  SBC_IMMED(0x01)
  STA_ZEROP(0x71)
  LDY_IMMED(0x07)
m1376:
  value1 = memory[0x1377];
  LDA_IMMED(value1)
  STA_POSTI(0x70)
  DEY
  value1 = memory[0x137C];
  LDA_IMMED(value1)
  STA_POSTI(0x70)
m137F:
  LDA_ZEROP(0x70)
  CLC
  ADC_IMMED(0x08)
  STA_ZEROP(0x70)
  BCC(m138A)
  INC_ZEROP(0x71)
m138A:
  INX
  value1 = memory[0x138C];
  CPX_IMMED(value1)
  BNE(m133D)
  RTS
}

void m1390(void)
{
  LDA_ABSOL(0x0615)
  BEQ(m13A8)
  LDX_ZEROP(0x88)
  LDA_IMMED(0x00)
  STA_ABSOL(0x1346)
  STA_ABSOL(0x134B)
  STA_ABSOL(0x1377)
  STA_ABSOL(0x137C)
  JSR_ABSOL(0x13A8,m1320)
m13A8:
  LDA_ZEROP(0x81)
  LSR
  STA_ZEROP(0x70)
  LDA_IMMED(0x00)
  ROR
  EOR_IMMED(0xFF)
  ADC_ZEROP(0x84)
  STA_ZEROP(0x87)
  LDA_ZEROP(0x80)
  SBC_ZEROP(0x70)
  STA_ZEROP(0x88)
  TAX
  LDA_ABSOL(0x0615)
  BEQ(m13D5)
  LDA_IMMED(0x0A)
  STA_ABSOL(0x1346)
  STA_ABSOL(0x1377)
  LDA_IMMED(0x05)
  STA_ABSOL(0x134B)
  STA_ABSOL(0x137C)
  JSR_ABSOL(0x13D5,m1320)
m13D5:
  LDA_ZEROP(0x8A)
  BEQ(m13DA)
  RTS
m13DA:
  LDX_IMMED(0xFF)
  JSR_ABSOL(0x13DF,m1319)
  BCC(m1422)
  LDA_ABSOL(0x0620)
  BEQ(m13F7)
  LDA_ABSOL(0x0623)
  SEC
  SBC_IMMED(0x08)
  STA_ABSOL(0x0623)
  BCS(m13F4)
  DEC_ABSOL(0x0624)
m13F4:
  JMP_ABSOL(m1405)
m13F7:
  LDA_ABSOL(0x0623)
  CLC
  ADC_IMMED(0x08)
  STA_ABSOL(0x0623)
  BCC(m1405)
  INC_ABSOL(0x0624)
m1405:
  LDA_ABSOL(0x0624)
  CMP_IMMED(0x01)
  BNE(m1414)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0623)
  JMP_ABSOL(m1422)
m1414:
  CMP_IMMED(0xFE)
  BNE(m1422)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0623)
  LDA_IMMED(0xFF)
  STA_ABSOL(0x0624)
m1422:
  LDA_ZEROP(0x84)
  CLC
  ADC_ABSOL(0x0623)
  STA_ZEROP(0x84)
  LDA_ZEROP(0x80)
  ADC_ABSOL(0x0624)
  STA_ZEROP(0x80)
  LDA_ABSOL(0x0623)
  AND_IMMED(0xFE)
  STA_ABSOL(0x0623)
  ORA_ABSOL(0x0624)
  BEQ(m145D)
  LDA_IMMED(0x00)
  STA_ZEROP(0x7E)
  LDX_IMMED(0x02)
  LDA_ABSOL(0x0624)
  BMI(m144D)
  LDX_IMMED(0xFE)
  DEC_ZEROP(0x7E)
m144D:
  TXA
  CLC
  ADC_ABSOL(0x0623)
  STA_ABSOL(0x0623)
  LDA_ABSOL(0x0624)
  ADC_ZEROP(0x7E)
  STA_ABSOL(0x0624)
m145D:
  RTS
}

void m145E(void)
{
  STY_ZEROP(0x74)
  ASL
  ASL
  ASL
  CLC
  ADC_IMMED(0xA0)
  STA_ZEROP(0x7A)
  LDA_IMMED(0x0B)
  STA_ZEROP(0x7B)
  LDY_IMMED(0x07)
m146E:
  LDA_POSTI(0x7A)
  STA_POSTI(0x78)
  DEY
  BPL(m146E)
  LDY_ZEROP(0x74)
  RTS
}

void m1478(void)
{
  LDX_IMMED(0x02)
  LDY_IMMED(0x01)
m147C:
  LDA_ZEROX(0x60)
  LSR
  LSR
  LSR
  LSR
  JSR_ABSOL(0x1485,m1495)
  TXA
  BNE(m148A)
  LDY_IMMED(0x00)
m148A:
  LDA_ZEROX(0x60)
  AND_IMMED(0x0F)
  JSR_ABSOL(0x1491,m1495)
  DEX
  BPL(m147C)
  RTS
}

void m1495(void)
{
  BNE(m149F)
  TYA
  BEQ(m149F)
  LDA_IMMED(0x0A)
  JMP_ABSOL(m14A1)
m149F:
  LDY_IMMED(0x00)
m14A1:
  JSR_ABSOL(0x14A4,m145E)
  LDA_ZEROP(0x78)
  CLC
  ADC_IMMED(0x08)
  STA_ZEROP(0x78)
  BCC(m14AF)
  INC_ZEROP(0x79)
m14AF:
  RTS
}

void m14B0(void)
{
  STX_ZEROP(0x7F)
  SED
  CLC
  ADC_ZEROP(0x60)
  STA_ZEROP(0x60)
  LDA_ZEROP(0x61)
  ADC_ZEROP(0x63)
  STA_ZEROP(0x61)
  LDA_ZEROP(0x62)
  ADC_IMMED(0x00)
  STA_ZEROP(0x62)
  CLD
  CMP_ZEROP(0x64)
  BNE(m14E2)
  SED
  LDA_ZEROP(0x64)
  CLC
  ADC_IMMED(0x01)
  STA_ZEROP(0x64)
  CLD
  INC_ZEROP(0x65)
  INC_ZEROP(0x66)
  JSR_ABSOL(0x14D9,m2251)
  LDX_IMMED(0x04)
  LDY_IMMED(0x00)
  LDA_IMMED(0x32)
  JSR_ABSOL(0x14E2,m22A4)
m14E2:
  LDA_IMMED(0x88)
  STA_ZEROP(0x78)
  LDA_IMMED(0x5A)
  STA_ZEROP(0x79)
  JSR_ABSOL(0x14ED,m1478)
  LDX_ZEROP(0x7F)
  RTS
}

void m14F0(void)
{
  EOR_IMMED(0x07)
  STA_ZEROP(0x8E)
  LDA_IMMED(0x00)
  STA_ZEROP(0x8D)
  TAY
  LDX_IMMED(0x8D)
  LDA_IMMED(0x0C)
  OSWORD
}

void m15B7(void)
{
  LDA_ABSOL(0x0625)
  TAX
  CLC
  ADC_IMMED(0x08)
  STA_ZEROP(0x7E)
  AND_IMMED(0x1F)
  STA_ABSOL(0x0625)
m15C5:
  LDA_ABSXP(0x0F80)
  BMI(m15D9)
  STA_ZEROP(0x71)
  LDA_ABSXP(0x0F60)
  STA_ZEROP(0x70)
  LDA_IMMED(0x00)
  TAY
  STA_POSTI(0x70)
  INY
  STA_POSTI(0x70)
m15D9:
  LDA_IMMED(0x00)
  STA_ZEROP(0x71)
  LDA_ABSXP(0x0EE0)
  BMI(m162D)
  LDA_ABSXP(0x0E40)
  SEC
  SBC_IMMED(0x17)
  LSR
  LSR
  TAY
  LDA_ABSXP(0x0E80)
  SEC
  SBC_ZEROP(0x88)
  CLC
  ADC_IMMED(0x64)
  LSR
  LSR
  LSR
  PHP
  CLC
  ADC_IMMED(0x08)
  ASL
  ASL
  ROL_ZEROP(0x71)
  ASL
  ROL_ZEROP(0x71)
  ADC_ABSYP(0x0700)
  STA_ZEROP(0x70)
  STA_ABSOX(0x0F60)
  LDA_ZEROP(0x71)
  ADC_ABSYP(0x0780)
  STA_ZEROP(0x71)
  STA_ABSOX(0x0F80)
  PLP
  BCC(m1638)
  LDY_ABSXP(0x0EA0)
  CPY_IMMED(0x07)
  BCS(m164D)
  LDA_ABSYP(0x0678)
  PHA
  LDA_ABSYP(0x0638)
m1625:
  LDY_IMMED(0x00)
  STA_POSTI(0x70)
  INY
  PLA
  STA_POSTI(0x70)
m162D:
  INX
  CPX_ZEROP(0x7E)
  BNE(m15C5)
  LDA_ABSOL(0x0625)
  BEQ(m1655)
  RTS
m1638:
  LDY_ABSXP(0x0EA0)
  CPY_IMMED(0x07)
  BCS(m164D)
  LDA_ABSYP(0x0678)
  ASL
  ASL
  PHA
  LDA_ABSYP(0x0638)
  ASL
  ASL
  JMP_ABSOL(m1625)
m164D:
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0F80)
  JMP_ABSOL(m162D)
m1655:
  LDA_ABSOL(0x062C)
  STA_ZEROP(0x70)
  LDA_ABSOL(0x062D)
  STA_ZEROP(0x71)
  LDA_IMMED(0x00)
  TAY
  STA_POSTI(0x70)
  INY
  STA_POSTI(0x70)
  LDA_ZEROP(0x82)
  SEC
  SBC_IMMED(0x17)
  LSR
  LSR
  TAY
  LDA_ZEROP(0x81)
  LSR
  STA_ZEROP(0x72)
  AND_IMMED(0xF8)
  CLC
  ADC_ABSYP(0x0700)
  ADC_IMMED(0xA8)
  STA_ZEROP(0x70)
  STA_ABSOL(0x062C)
  LDA_IMMED(0x00)
  ADC_ABSYP(0x0780)
  STA_ZEROP(0x71)
  STA_ABSOL(0x062D)
  LDY_IMMED(0x33)
  LDA_ZEROP(0x72)
  AND_IMMED(0x04)
  BNE(m1695)
  LDY_IMMED(0x66)
m1695:
  TYA
  LDY_IMMED(0x00)
  STA_POSTI(0x70)
  INY
  STA_POSTI(0x70)
  RTS
}

void m169E(void)
{
  STA_ZEROP(0x72)
  TXA
  AND_IMMED(0x01)
  ORA_ZEROP(0x72)
  STA_ZEROP(0x72)
  LDA_IMMED(0x00)
  STA_ZEROP(0x71)
  TXA
  AND_IMMED(0xFE)
  ASL
  ROL_ZEROP(0x71)
  ASL
  ROL_ZEROP(0x71)
  ADC_ABSYP(0x0700)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_ABSYP(0x0780)
  STA_ZEROP(0x71)
  LDA_ZEROP(0x72)
  ASL
  ASL
  TAX
  LDA_ABSXP(0x0680)
  STA_ZEROP(0x72)
  LDA_ABSXP(0x0681)
  STA_ZEROP(0x73)
  LDA_ABSXP(0x0682)
  STA_ZEROP(0x74)
  LDA_ABSXP(0x0683)
  STA_ZEROP(0x75)
  LDA_ZEROP(0x70)
  AND_IMMED(0x07)
  EOR_IMMED(0x07)
  TAY
  STY_ZEROP(0x76)
  LDA_ZEROP(0x74)
  CLC
  SBC_ZEROP(0x76)
  BPL(m16F8)
  LDY_ZEROP(0x74)
  DEY
  STY_ZEROP(0x76)
  LDX_IMMED(0x00)
  STX_ZEROP(0x7A)
  DEX
  STX_ZEROP(0x77)
  JMP_ABSOL(m1706)
m16F8:
  TAX
  AND_IMMED(0x07)
  SEC
  SBC_IMMED(0x01)
  STA_ZEROP(0x77)
  TXA
  LSR
  LSR
  LSR
  STA_ZEROP(0x7A)
m1706:
  LDA_ZEROP(0x70)
  STA_ZEROP(0x78)
  LDA_ZEROP(0x71)
  STA_ZEROP(0x79)
  LDA_ZEROP(0x7B)
  BEQ(m1715)
  /*JMP_ABSOL(m17AF)*/

/*m17AF:*/
  BPL(m17B4)
  JMP_ABSOL(m1840)
m17B4:
  LDY_ZEROP(0x76)
  LDA_IMMED(0x00)
m17B8:
  STA_POSTI(0x70)
  DEY
  BPL(m17B8)
  LDA_ZEROP(0x72)
  SEC
  ADC_ZEROP(0x76)
  STA_ZEROP(0x72)
  BCC(m17C8)
  INC_ZEROP(0x73)
m17C8:
  LDA_ZEROP(0x70)
  AND_IMMED(0xF8)
  CLC
  ADC_IMMED(0x40)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x01)
  STA_ZEROP(0x71)
  LDX_ZEROP(0x7A)
  BEQ(m1811)
m17DB:
  LDY_IMMED(0x07)
  LDA_IMMED(0x00)
  STA_POSTI(0x70)
  DEY
  STA_POSTI(0x70)
  DEY
  STA_POSTI(0x70)
  DEY
  STA_POSTI(0x70)
  DEY
  STA_POSTI(0x70)
  DEY
  STA_POSTI(0x70)
  DEY
  STA_POSTI(0x70)
  DEY
  STA_POSTI(0x70)
  LDA_ZEROP(0x72)
  CLC
  ADC_IMMED(0x08)
  STA_ZEROP(0x72)
  BCC(m1801)
  INC_ZEROP(0x73)
m1801:
  LDA_ZEROP(0x70)
  CLC
  ADC_IMMED(0x40)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x01)
  STA_ZEROP(0x71)
  DEX
  BNE(m17DB)
m1811:
  LDY_ZEROP(0x77)
  BMI(m1827)
  LDA_IMMED(0x00)
m1817:
  STA_POSTI(0x70)
  DEY
  BPL(m1817)
  LDA_ZEROP(0x72)
  SEC
  ADC_ZEROP(0x77)
  STA_ZEROP(0x72)
  BCC(m1827)
  INC_ZEROP(0x73)
m1827:
  LDA_ZEROP(0x78)
  CLC
  ADC_IMMED(0x08)
  STA_ZEROP(0x78)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x79)
  ADC_IMMED(0x00)
  STA_ZEROP(0x79)
  STA_ZEROP(0x71)
  DEC_ZEROP(0x75)
  BEQ(m183F)
  JMP_ABSOL(m17B4)
m183F:
  RTS
m1840:
  LDX_IMMED(0x00)
  STX_ZEROP(0x89)
m1844:
  LDY_ZEROP(0x76)
m1846:
  LDA_POSTI(0x72)
  EOR_POSTI(0x70)
  BEQ(m1851)
  LDA_POSTI(0x70)
  STA_ZEROP(0x89)
  TXA
m1851:
  STA_POSTI(0x70)
  DEY
  BPL(m1846)
  LDA_ZEROP(0x72)
  SEC
  ADC_ZEROP(0x76)
  STA_ZEROP(0x72)
  BCC(m1861)
  INC_ZEROP(0x73)
m1861:
  LDA_ZEROP(0x70)
  AND_IMMED(0xF8)
  CLC
  ADC_IMMED(0x40)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x01)
  STA_ZEROP(0x71)
  LDY_ZEROP(0x77)
  BMI(m188F)
m1874:
  LDA_POSTI(0x72)
  EOR_POSTI(0x70)
  BEQ(m187F)
  LDA_POSTI(0x70)
  STA_ZEROP(0x89)
  TXA
m187F:
  STA_POSTI(0x70)
  DEY
  BPL(m1874)
  LDA_ZEROP(0x72)
  SEC
  ADC_ZEROP(0x77)
  STA_ZEROP(0x72)
  BCC(m188F)
  INC_ZEROP(0x73)
m188F:
  LDA_ZEROP(0x78)
  CLC
  ADC_IMMED(0x08)
  STA_ZEROP(0x78)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x79)
  ADC_IMMED(0x00)
  STA_ZEROP(0x79)
  STA_ZEROP(0x71)
  DEC_ZEROP(0x75)
  BEQ(m18A7)
  JMP_ABSOL(m1844)
m18A7:
  RTS

m1715:
  LDY_ZEROP(0x76)
m1717:
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  BPL(m1717)
  LDA_ZEROP(0x72)
  SEC
  ADC_ZEROP(0x76)
  STA_ZEROP(0x72)
  BCC(m1729)
  INC_ZEROP(0x73)
m1729:
  LDA_ZEROP(0x70)
  AND_IMMED(0xF8)
  CLC
  ADC_IMMED(0x40)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x01)
  STA_ZEROP(0x71)
  LDX_ZEROP(0x7A)
  BEQ(m1780)
m173C:
  LDY_IMMED(0x07)
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  LDA_ZEROP(0x72)
  CLC
  ADC_IMMED(0x08)
  STA_ZEROP(0x72)
  BCC(m1770)
  INC_ZEROP(0x73)
m1770:
  LDA_ZEROP(0x70)
  CLC
  ADC_IMMED(0x40)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x01)
  STA_ZEROP(0x71)
  DEX
  BNE(m173C)
m1780:
  LDY_ZEROP(0x77)
  BMI(m1796)
m1784:
  LDA_POSTI(0x72)
  STA_POSTI(0x70)
  DEY
  BPL(m1784)
  LDA_ZEROP(0x72)
  SEC
  ADC_ZEROP(0x77)
  STA_ZEROP(0x72)
  BCC(m1796)
  INC_ZEROP(0x73)
m1796:
  LDA_ZEROP(0x78)
  CLC
  ADC_IMMED(0x08)
  STA_ZEROP(0x78)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x79)
  ADC_IMMED(0x00)
  STA_ZEROP(0x79)
  STA_ZEROP(0x71)
  DEC_ZEROP(0x75)
  BEQ(m17AE)
  JMP_ABSOL(m1715)
m17AE:
  RTS
}

void m18A8(void)
{
  /*wait for vertical sync*/
  LDA_ZEROP(0x85)
/*m18AA:*/
  /*WAIT_FOR_VERTICAL_SYNC*/
  while (clock() < video_timer)
  {
  }
  video_timer = clock() + TIME_50HZ;

  /*wait for vertical sync*/
  do
  {
    regs.r[0] = 0xB0;
    regs.r[1] = 0;
    regs.r[2] = 0xFF;
    _kernel_swi(OS_Byte,&regs,&regs);
  }
  while (regs.r[1] == r6502_a);
  /*CMP_ABSOL(0x0240)
  BEQ(m18AA)*/
  memory[0x0240] = (regs.r[1] & 0xFF);
  LDA_ABSOL(0x0240)
  STA_ZEROP(0x85)
  RTS
}

void m18B5(void)
{
  LDA_ZEROP(0x6B)
  STA_ZEROP(0x6D)
  LDA_ZEROP(0x6A)
  STA_ZEROP(0x6C)
  ASL
  ROL_ZEROP(0x6B)
  ASL
  ROL_ZEROP(0x6B)
  ASL
  ROL_ZEROP(0x6B)
  ASL
  ROL_ZEROP(0x6B)
  STA_ZEROP(0x6E)
  LDA_ZEROP(0x6B)
  STA_ZEROP(0x6F)
  LDA_ZEROP(0x6E)
  ASL
  ROL_ZEROP(0x6B)
  SEC
  SBC_ZEROP(0x6C)
  BCS(m18DB)
  DEC_ZEROP(0x6F)
m18DB:
  CLC
  ADC_ZEROP(0x6E)
  STA_ZEROP(0x6A)
  LDA_ZEROP(0x6B)
  SEC
  SBC_ZEROP(0x6D)
  CLC
  ADC_ZEROP(0x6F)
  STA_ZEROP(0x6B)
  RTS
}

void m18EB(void)
{
  PHA
  TXA
  AND_IMMED(0x01)
  BNE(m18F6)
  PLA
  STA_ABSOX(0x0EC0)
  RTS
m18F6:
  PLA
  EOR_IMMED(0xFF)
  STA_ABSOX(0x0EC0)
  RTS
}

void m18FD(void)
{
  JSR_ABSOL(0x1900,m18B5)
  AND_IMMED(0x7F)
  CMP_IMMED(0x1E)
  BCS(m1908)
  ADC_IMMED(0x1E)
m1908:
  STA_ABSOX(0x0E40)
  STA_ABSOX(0x0F40)
  LDA_IMMED(0x28)
  STA_ABSOX(0x0FA0)
  RTS
}

void m1914(void)
{
  LDA_ABSOL(0x0615)
  BEQ(m194C)
  LDA_IMMED(0x28)
  STA_ABSOX(0x0E40)
  STA_ABSOX(0x0F40)
  JSR_ABSOL(0x1924,m18B5)
  STA_ABSOX(0x0E80)
  AND_IMMED(0x0F)
  CLC
  ADC_IMMED(0x10)
  STA_ABSOX(0x0F20)
  LDA_ABSOL(0x0610)
  JSR_ABSOL(0x1935,m18EB)
  LDA_IMMED(0x8A)
  STA_ABSOX(0x0EE0)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0FC0)
  LDA_IMMED(0x28)
  STA_ABSOX(0x0FA0)
  LDA_IMMED(0x03)
  STA_ABSOX(0x0EA0)
  /*JMP_ABSOL(m199A)*/
  m199A();
  return;
m194C:
  LDA_IMMED(0x9A)
  STA_ABSOX(0x0EE0)
  LDA_IMMED(0x05)
  STA_ABSOX(0x0EA0)
  JSR_ABSOL(0x1959,m18B5)
  AND_IMMED(0x7F)
  ADC_ZEROP(0x88)
  ADC_IMMED(0x50)
  STA_ABSOX(0x0E80)
  AND_IMMED(0x3F)
  ADC_IMMED(0x28)
  STA_ABSOX(0x0E40)
  STA_ABSOX(0x0F40)
  LDA_IMMED(0x28)
  STA_ABSOX(0x0FA0)
  /*JMP_ABSOL(m199A)*/
  m199A();
}

void m1974(void)
{
  regs.r[0] = 0xB0;
  regs.r[1] = 0;
  regs.r[2] = 0xFF;
  _kernel_swi(OS_Byte,&regs,&regs);
  memory[0x0240] = (regs.r[1] & 0xFF);
  LDA_ABSOL(0x0240)
  AND_IMMED(0x3F)
  ADC_IMMED(0x1E)
  STA_ABSOX(0x0E40)
  STA_ABSOX(0x0F40)
  JSR_ABSOL(0x1984,m18B5)
  AND_IMMED(0x1F)
  ADC_ZEROP(0x88)
  STA_ABSOX(0x0E80)
  LDA_IMMED(0x28)
  STA_ABSOX(0x0FA0)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0EA0)
  LDA_IMMED(0x90)
  STA_ABSOX(0x0EE0)
  m199A();
}

void m199A(void)
{
  int value;
  /*alien entry sound*/
  STY_ZEROP(0x56)
  STX_ZEROP(0x57)
  LDA_IMMED(0x10)
  LDX_IMMED(0x02)
  LDY_IMMED(0x00)
  value = alien_sound[alien_index];
  r6502_y = (value & 0xFF);
  /*memory[0x5D] = ((value & 0xFF00) >> 8);*/

  /*JMP_ABSOL(m22A4)*/
  m22A4();

  if (alien_index >= 0x28)
    alien_index = 0x00;
  else
    alien_index = alien_index + 0x04;

  value = clock() + 0x01;
  while (clock() < value)
  {
  }
}

void m19A7(void)
{
  LDX_IMMED(0x1F)
m19A9:
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0E00)
  STA_ABSOX(0x0F40)
  STA_ABSOX(0x0F80)
  STA_ABSOX(0x0EE0)
  DEX
  BPL(m19A9)
  LDX_IMMED(0x1F)
  LDY_ABSOL(0x0615)
  BEQ(m19E7)
m19C1:
  LDA_IMMED(0x7C)
  STA_ABSOX(0x0E40)
  STA_ABSOX(0x0F40)
  JSR_ABSOL(0x19CC,m18B5)
  STA_ABSOX(0x0E80)
  LDA_IMMED(0x06)
  STA_ABSOX(0x0EA0)
  LDA_IMMED(0x05)
  JSR_ABSOL(0x19D9,m18EB)
  LDA_IMMED(0x14)
  STA_ABSOX(0x0EE0)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0FC0)
  DEX
  DEY
  BNE(m19C1)
m19E7:
  LDY_ZEROP(0x70)
  BEQ(m19F2)
  alien_index = 0x00;
m19EB:
  JSR_ABSOL(0x19EE,m1914)
  DEX
  DEY
  BNE(m19EB)
m19F2:
  LDY_ZEROP(0x71)
  BEQ(m1A11)
m19F6:
  LDA_IMMED(0x9A)
  STA_ABSOX(0x0EE0)
  JSR_ABSOL(0x19FE,m18B5)
  AND_IMMED(0x7F)
  ADC_IMMED(0x50)
  STA_ABSOX(0x0E80)
  JSR_ABSOL(0x1A08,m18FD)
  LDA_IMMED(0x05)
  STA_ABSOX(0x0EA0)
  DEX
  DEY
  BNE(m19F6)
m1A11:
  LDY_ZEROP(0x72)
  BEQ(m1A36)
m1A15:
  JSR_ABSOL(0x1A18,m18FD)
  LDA_IMMED(0x96)
  STA_ABSOX(0x0EE0)
  LDA_IMMED(0x01)
  STA_ABSOX(0x0EA0)
  JSR_ABSOL(0x1A25,m18B5)
  AND_IMMED(0x1F)
  ADC_IMMED(0x80)
  STA_ABSOX(0x0E80)
  LDA_ABSOL(0x0617)
  JSR_ABSOL(0x1A32,m18EB)
  DEX
  DEY
  BNE(m1A15)
m1A36:
  LDY_ZEROP(0x73)
  BEQ(m1A55)
m1A3A:
  JSR_ABSOL(0x1A3D,m18FD)
  JSR_ABSOL(0x1A40,m18B5)
  AND_IMMED(0x0F)
  SBC_IMMED(0x64)
  STA_ABSOX(0x0E80)
  LDA_IMMED(0x04)
  STA_ABSOX(0x0EA0)
  LDA_IMMED(0x92)
  STA_ABSOX(0x0EE0)
  DEX
  DEY
  BNE(m1A3A)
m1A55:
  LDY_ZEROP(0x74)
  BEQ(m1A89)
m1A59:
  JSR_ABSOL(0x1A5C,m18FD)
  JSR_ABSOL(0x1A5F,m18B5)
  AND_IMMED(0x3F)
  STA_ABSOX(0x0E80)
  LDA_IMMED(0x02)
  STA_ABSOX(0x0EA0)
  LDA_IMMED(0x98)
  STA_ABSOX(0x0EE0)
  JSR_ABSOL(0x1A71,m18B5)
  AND_IMMED(0x07)
  ADC_IMMED(0x08)
  JSR_ABSOL(0x1A78,m18EB)
  STA_ABSOX(0x0F00)
  JSR_ABSOL(0x1A7E,m18B5)
  AND_IMMED(0x07)
  ADC_IMMED(0x08)
  JSR_ABSOL(0x1A85,m18EB)
  DEX
  DEY
  BNE(m1A59)
m1A89:
  LDA_IMMED(0x00)
  CLC
  ADC_ZEROP(0x70)
  ADC_ZEROP(0x71)
  ADC_ZEROP(0x72)
  ADC_ZEROP(0x73)
  ADC_ZEROP(0x74)
  STA_ABSOL(0x0616)
  RTS
}

void m1A9A(void)
{
  STX_ZEROP(0x57)
  LDX_IMMED(0x03)
  LDY_IMMED(0x0A)
  LDA_IMMED(0x07)
  JSR_ABSOL(0x1AA5,m22A4)
  LDA_IMMED(0x07)
  STA_ZEROP(0x70)
  LDA_IMMED(0x1C)
  STA_ZEROP(0x71)
  LDA_IMMED(0x02)
  STA_ZEROP(0x63)
  LDA_IMMED(0x50)
  /*JMP_ABSOL(m1ACE)*/
  m1ACE();
}

void m1AB6(void)
{
  STX_ZEROP(0x57)
  TAY
  LDX_IMMED(0x03)
  LDA_IMMED(0x07)
  JSR_ABSOL(0x1AC0,m22A4)
  LDA_IMMED(0x08)
  STA_ZEROP(0x70)
  LDA_IMMED(0x04)
  STA_ZEROP(0x71)
  LDA_IMMED(0x05)
  STA_ZEROP(0x63)
  LDA_IMMED(0x00)
  m1ACE();
}

void m1ACE(void)
{
  JSR_ABSOL(0x1AD1,m14B0)
  LDY_IMMED(0x1F)
m1AD3:
  LDA_ABSYP(0x0F40)
  BMI(m1ADC)
  DEY
  BPL(m1AD3)
  RTS
m1ADC:
  LDA_ZEROP(0x70)
  STA_ABSOY(0x0EA0)
  LDA_ZEROP(0x71)
  STA_ABSOY(0x0EE0)
  TXA
  SBC_IMMED(0x0C)
  EOR_IMMED(0xFF)
  ADC_ABSXP(0x0E40)
  CMP_IMMED(0x1D)
  BCS(m1AF4)
  LDA_IMMED(0x1D)
m1AF4:
  STA_ABSOY(0x0E40)
  STA_ABSOY(0x0F40)
  LDA_ABSXP(0x0E80)
  STA_ABSOY(0x0E80)
  LDA_IMMED(0x0A)
  STA_ABSOY(0x0EC0)
  LDA_ABSOL(0x0623)
  STA_ABSOY(0x0F00)
  LDA_ABSOL(0x0624)
  STA_ABSOY(0x0F20)
  LDA_IMMED(0x64)
  STA_ABSOY(0x0FC0)
  RTS
}

void m1B17(void)
{
  LDX_IMMED(0x3F)
m1B19:
  LDA_ZEROP(0x81)
  ADC_IMMED(0x02)
  STA_ABSOX(0x0EC0)
  LDA_ZEROP(0x82)
  ADC_IMMED(0x01)
  STA_ABSOX(0x0F40)
  JSR_ABSOL(0x1B2A,m18B5)
  STA_ABSOX(0x0E00)
  JSR_ABSOL(0x1B30,m18B5)
  STA_ABSOX(0x0E40)
  DEX
  BPL(m1B19)
  RTS
}

void m1B37(void)
{
  LDX_IMMED(0x28)
m1B39:
  STX_ZEROP(0x72)
  LDY_ABSXP(0x0F40)
  BMI(m1BA4)
  LDA_ABSXP(0x0EC0)
  LSR
  TAX
  JSR_ABSOL(0x1B48,m1300)
  LDA_IMMED(0x00)
  TAY
  STA_POSTI(0x70)
  INY
  STA_POSTI(0x70)
  STA_ZEROP(0x7E)
  LDX_ZEROP(0x72)
  LDA_ABSXP(0x0E40)
  BPL(m1B5B)
  DEC_ZEROP(0x7E)
m1B5B:
  ASL
  ROL_ZEROP(0x7E)
  ADC_ABSXP(0x0F00)
  STA_ABSOX(0x0F00)
  LDA_ZEROP(0x7E)
  ADC_ABSXP(0x0F40)
  BMI(m1BAA)
  CMP_IMMED(0x1D)
  BCC(m1BAA)
  STA_ABSOX(0x0F40)
  TAY
  LDA_IMMED(0x00)
  STA_ZEROP(0x7E)
  LDA_ABSXP(0x0E00)
  BPL(m1B7E)
  DEC_ZEROP(0x7E)
m1B7E:
  ADC_ABSXP(0x0E80)
  STA_ABSOX(0x0E80)
  LDA_ZEROP(0x7E)
  ADC_ABSXP(0x0EC0)
  BMI(m1BAA)
  CMP_IMMED(0x50)
  BCS(m1BAA)
  STA_ABSOX(0x0EC0)
  LSR
  TAX
  PHP
  JSR_ABSOL(0x1B98,m1300)
  LDY_IMMED(0x22)
  PLP
  BCS(m1B9F)
  LDY_IMMED(0x88)
m1B9F:
  TYA
  LDY_IMMED(0x00)
  STA_POSTI(0x70)
m1BA4:
  LDX_ZEROP(0x72)
  DEX
  BPL(m1B39)
  RTS
m1BAA:
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0F40)
  JMP_ABSOL(m1BA4)
}

void m1C0B(void)
{
  LDX_IMMED(0x1F)
m1C0D:
  LDY_ABSXP(0x0F40)
  BMI(m1BB2)
  LDA_ABSXP(0x0EE0)
  BMI(m1BD4)
  LDA_IMMED(0x00)
  STA_ZEROP(0x70)
  LDA_ABSXP(0x0EC0)
  BPL(m1C22)
  DEC_ZEROP(0x70)
m1C22:
  ASL
  ROL_ZEROP(0x70)
  CLC
  ADC_ABSXP(0x0E60)
  STA_ABSOX(0x0E60)
  LDA_ABSXP(0x0E80)
  ADC_ZEROP(0x70)
  STA_ABSOX(0x0E80)
  LDY_ABSXP(0x0EA0)
  LDA_ABSYP(0x11D0)
  STA_ABSOL(0x1C44)
  LDA_ABSYP(0x11E0)
  STA_ABSOL(0x1C45)
  /*JMP_ABSOL(m0000)*/
  address = (memory[0x1C45] << 8) | memory[0x1C44];
  switch (address)
  {
    case 0x1C4A:
      goto m1C4A;
      break;
    case 0x1CDA:
      goto m1CDA;
      break;
    case 0x1D0D:
      goto m1D0D;
      break;
    case 0x1D44:
      goto m1D44;
      break;
    case 0x1E39:
      goto m1E39;
      break;
    case 0x1E91:
      goto m1E91;
      break;
    case 0x1EE1:
      goto m1EE1;
      break;
    case 0x1F29:
      goto m1F29;
      break;
    case 0x1F63:
      goto m1F63;
      break;
  }
  RTS

m1BB2:
  LDA_ABSOL(0x061A)
  BEQ(m1BC3)
  DEC_ABSOL(0x061A)
  INC_ABSOL(0x0616)
  JSR_ABSOL(0x1BC0,m1914)
  JMP_ABSOL(m1BD1)
m1BC3:
  LDA_ABSOL(0x061D)
  BNE(m1BD1)
  JSR_ABSOL(0x1BCB,m1974)
  LDA_ABSOL(0x061E)
  STA_ABSOL(0x061D)
m1BD1:
  JMP_ABSOL(m1C46)

m1BD4:
  LDA_ABSXP(0x0FA0)
  BMI(m1BF6)
  BEQ(m1BE1)
  DEC_ABSOX(0x0FA0)
  JMP_ABSOL(m1C46)
m1BE1:
  LDA_ABSXP(0x0EE0)
  AND_IMMED(0x7F)
  STA_ABSOX(0x0EE0)
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0E00)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0FC0)
  JMP_ABSOL(m1C46)
m1BF6:
  CLC
  ADC_IMMED(0x01)
  CMP_IMMED(0xD0)
  BEQ(m1C03)
  STA_ABSOX(0x0FA0)
  JMP_ABSOL(m1C46)
m1C03:
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0F40)
  /*JMP_ABSOL(m1C46)*/
m1C46:
  DEX
  BPL(m1C0D)
  RTS

m1C4A:
  alien_index = 0x00;
  LDY_ABSXP(0x0E80)
  LDA_ABSXP(0x0FC0)
  BEQ(m1C57)
  BPL(m1C70)
  JMP_ABSOL(m1CAC)
m1C57:
  LDA_ABSYP(0x55FF)
  CLC
  ADC_IMMED(0x02)
m1C5D:
  CMP_ABSXP(0x0E40)
  BEQ(m1C6D)
  BCS(m1C6A)
  DEC_ABSOX(0x0E40)
  JMP_ABSOL(m1C6D)
m1C6A:
  INC_ABSOX(0x0E40)
m1C6D:
  JMP_ABSOL(m1C46)
m1C70:
  LDA_ABSXP(0x0F00)
  CLC
  ADC_IMMED(0x01)
  BMI(m1C7B)
  STA_ABSOX(0x0F00)
m1C7B:
  CMP_IMMED(0x05)
  BCC(m1CA1)
  LDA_ABSYP(0x55FF)
  CLC
  ADC_IMMED(0x02)
  CMP_ABSXP(0x0E40)
  BCS(m1CA1)
  LDA_ABSXP(0x0F00)
  CMP_IMMED(0x46)
  BCS(m1CA4)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0FC0)
  LDA_IMMED(0xFB)
  STA_ABSOX(0x0EC0)
  JSR_ABSOL(0x1C9E,m1A9A)
  JMP_ABSOL(m1C46)
m1CA1:
  JMP_ABSOL(m1D0D)
m1CA4:
  TXA
  TAY
  JSR_ABSOL(0x1CA9,m215A)
  JMP_ABSOL(m1C46)
m1CAC:
  LDA_ZEROP(0x84)
  CLC
  ADC_IMMED(0x80)
  STA_ABSOX(0x0E60)
  LDA_ZEROP(0x80)
  ADC_IMMED(0x01)
  STA_ABSOX(0x0E80)
  LDA_ZEROP(0x82)
  CLC
  ADC_IMMED(0x05)
  STA_ABSOX(0x0E40)
  CMP_ABSYP(0x55FF)
  BCC(m1C6D)
  LDA_IMMED(0x32)
  JSR_ABSOL(0x1CCD,m1AB6)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0FC0)
  LDA_IMMED(0x05)
  JSR_ABSOL(0x1CD7,m18EB)
  JMP_ABSOL(m1C6D)

m1CDA:
  LDY_ZEROP(0x8C)
  LDA_ABSYP(0x5700)
  INY
  STY_ZEROP(0x8C)
  AND_IMMED(0x3F)
  BNE(m1CF2)
  LDA_IMMED(0x80)
  LDY_ABSXP(0x0FA0)
  BPL(m1CEF)
  LDA_IMMED(0x7E)
m1CEF:
  STA_ABSOX(0x0FA0)
m1CF2:
  LDA_ABSXP(0x0F00)
  AND_IMMED(0xFE)
  CMP_ABSXP(0x0FA0)
  BEQ(m1D0D)
  LDY_ABSXP(0x0FA0)
  BPL(m1D07)
  SEC
  SBC_IMMED(0x02)
  JMP_ABSOL(m1D0A)
m1D07:
  CLC
  ADC_IMMED(0x02)
m1D0A:
  STA_ABSOX(0x0F00)

m1D0D:
  LDA_IMMED(0x00)
  STA_ZEROP(0x70)
  LDA_ABSXP(0x0F00)
  BPL(m1D18)
  DEC_ZEROP(0x70)
m1D18:
  ASL
  ROL_ZEROP(0x70)
  CLC
  ADC_ABSXP(0x0E20)
  STA_ABSOX(0x0E20)
  LDA_ABSXP(0x0E40)
  ADC_ZEROP(0x70)
  BPL(m1D2E)
  LDA_IMMED(0x1C)
  JMP_ABSOL(m1D34)
m1D2E:
  CMP_IMMED(0x1C)
  BCS(m1D34)
  LDA_IMMED(0x7F)
m1D34:
  STA_ABSOX(0x0E40)
  /*JMP_ABSOL(m1C46)*/
/*m1C46:*/
  /*copied*/
  DEX
  BPL(m1C0D)
  RTS

m1D3A:
  INY
  TYA
  AND_IMMED(0x1F)
  STA_ABSOX(0x0F20)
  JMP_ABSOL(m1D7A)
m1D44:
  LDA_IMMED(0xFF)
  STA_ZEROP(0x70)
  LDY_ABSXP(0x0F20)
  LDA_ABSYP(0x0EE0)
  CMP_IMMED(0x14)
  BNE(m1D59)
  LDA_ABSYP(0x0FC0)
  BNE(m1D59)
  STA_ZEROP(0x70)
m1D59:
  LDA_ABSXP(0x0FC0)
  BEQ(m1D63)
  BMI(m1D9B)
  JMP_ABSOL(m1DD3)
m1D63:
  LDA_ZEROP(0x70)
  BNE(m1D3A)
  LDA_ABSYP(0x0E80)
  CMP_ABSXP(0x0E80)
  BNE(m1D7A)
  DEC_ABSOX(0x0FC0)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0EC0)
  STA_ABSOY(0x0EC0)
m1D7A:
  LDA_ZEROP(0x83)
  AND_IMMED(0x07)
  BNE(m1D8F)
  LDA_ABSXP(0x0EE0)
  CLC
  ADC_IMMED(0x02)
  CMP_IMMED(0x10)
  BNE(m1D8C)
  LDA_IMMED(0x0A)
m1D8C:
  STA_ABSOX(0x0EE0)
m1D8F:
  LDY_ABSXP(0x0E80)
  LDA_ABSYP(0x55FF)
  SEC
  SBC_IMMED(0x0D)
  JMP_ABSOL(m1C5D)
m1D9B:
  LDA_ZEROP(0x70)
  BPL(m1DAD)
m1D9F:
  LDA_IMMED(0x00)
  STA_ABSOX(0x0FC0)
  LDA_ABSOL(0x0610)
  STA_ABSOX(0x0EC0)
  JMP_ABSOL(m1C46)
m1DAD:
  LDA_ABSXP(0x0E40)
  CLC
  ADC_IMMED(0x05)
  CMP_ABSYP(0x0E40)
  BCC(m1DC1)
  STA_ABSOX(0x0FC0)
  STA_ABSOY(0x0FC0)
  JMP_ABSOL(m1C46)
m1DC1:
  LDA_ABSXP(0x0E20)
  CLC
  ADC_ABSOL(0x0612)
  STA_ABSOX(0x0E20)
  BCC(m1DD0)
  INC_ABSOX(0x0E40)
m1DD0:
  JMP_ABSOL(m1C46)
m1DD3:
  LDA_ABSXP(0x0E20)
  SEC
  SBC_ABSOL(0x0612)
  STA_ABSOX(0x0E20)
  LDA_ABSXP(0x0E40)
  SBC_IMMED(0x00)
  STA_ABSOX(0x0E40)
  CMP_IMMED(0x1D)
  BCS(m1E18)
  LDA_ABSYP(0x0EE0)
  CMP_IMMED(0x14)
  BNE(m1D9F)
  JSR_ABSOL(0x1DF3,m215A)
  LDA_IMMED(0x05)
  STA_ABSOX(0x0EA0)
  LDA_ABSXP(0x0E00)
  STA_ZEROP(0x70)
  BMI(m1E10)
  STX_ZEROP(0x57)
  LDA_ABSXP(0x0EE0)
  LDY_ABSXP(0x0F40)
  STY_ZEROP(0x7B)
  LDX_ZEROP(0x70)
  JSR_ABSOL(0x1E0E,m169E)
  LDX_ZEROP(0x57)
m1E10:
  LDA_IMMED(0x1A)
  STA_ABSOX(0x0EE0)
  JMP_ABSOL(m1C46)
m1E18:
  LDA_ABSXP(0x0E40)
  CLC
  ADC_IMMED(0x05)
  STA_ABSOY(0x0E40)
  LDA_ABSXP(0x0E60)
  ADC_IMMED(0x80)
  STA_ABSOY(0x0E60)
  LDA_ABSXP(0x0E80)
  ADC_IMMED(0x00)
  STA_ABSOY(0x0E80)
  LDA_IMMED(0x00)
  STA_ABSOY(0x0F00)
  JMP_ABSOL(m1C46)

m1E39:
  LDY_ZEROP(0x8C)
  LDA_ABSYP(0x5700)
  INY
  STY_ZEROP(0x8C)
  AND_IMMED(0x03)
  ADC_ABSXP(0x0E80)
  SEC
  SBC_ZEROP(0x80)
  CMP_IMMED(0x19)
  BCC(m1E61)
  CMP_IMMED(0xE6)
  BCS(m1E61)
  BPL(m1E59)
  LDA_ABSOL(0x0613)
  JMP_ABSOL(m1E5E)
m1E59:
  LDA_ABSOL(0x0613)
  EOR_IMMED(0xFF)
m1E5E:
  STA_ABSOX(0x0EC0)
m1E61:
  LDA_ABSYP(0x5700)
  AND_IMMED(0x1F)
  SBC_IMMED(0x0F)
  ADC_ABSXP(0x0E40)
  CMP_ZEROP(0x82)
  BCC(m1E80)
  LDA_ABSXP(0x0F00)
  SBC_IMMED(0x04)
  AND_IMMED(0xFC)
  CMP_IMMED(0x80)
  BEQ(m1E7D)
  STA_ABSOX(0x0F00)
m1E7D:
  JMP_ABSOL(m1D0D)
m1E80:
  LDA_ABSXP(0x0F00)
  ADC_IMMED(0x04)
  AND_IMMED(0xFC)
  CMP_IMMED(0x7C)
  BEQ(m1E7D)
  STA_ABSOX(0x0F00)
  JMP_ABSOL(m1D0D)

m1E91:
  LDY_ZEROP(0x8C)
  LDA_ABSYP(0x5700)
  INY
  STY_ZEROP(0x8C)
  AND_IMMED(0x0F)
  ADC_ABSOL(0x0614)
  STA_ZEROP(0x70)
  LDA_ABSXP(0x0E80)
  CMP_ZEROP(0x80)
  BPL(m1EAC)
  LDA_ZEROP(0x70)
  JMP_ABSOL(m1EB0)
m1EAC:
  LDA_ZEROP(0x70)
  EOR_IMMED(0xFF)
m1EB0:
  STA_ABSOX(0x0EC0)
  LDA_ABSYP(0x5700)
  AND_IMMED(0x01)
  ASL
  SBC_IMMED(0x00)
  CLC
  ADC_ABSXP(0x0E40)
  STA_ABSOX(0x0E40)
  LDY_ABSXP(0x0E00)
  BMI(m1EDC)
  CMP_ZEROP(0x82)
  BCS(m1ED1)
  LDA_ABSOL(0x0614)
  JMP_ABSOL(m1ED6)
m1ED1:
  LDA_ABSOL(0x0614)
  EOR_IMMED(0xFF)
m1ED6:
  STA_ABSOX(0x0F00)
  JMP_ABSOL(m1D0D)
m1EDC:
  LDA_IMMED(0x00)
  JMP_ABSOL(m1ED6)

m1EE1:
  LDY_ZEROP(0x8C)
  LDA_ABSYP(0x5700)
  INY
  STY_ZEROP(0x8C)
  AND_IMMED(0x0F)
  BNE(m1F14)
  LDY_IMMED(0x69)
  LDA_ABSXP(0x0E40)
  CMP_ZEROP(0x82)
  BCC(m1EF8)
  LDY_IMMED(0x96)
m1EF8:
  TYA
  STA_ABSOX(0x0F00)
  LDA_ABSXP(0x0E80)
  CMP_ZEROP(0x80)
  PHP
  LDY_ZEROP(0x8C)
  LDA_ABSYP(0x5700)
  AND_IMMED(0x1F)
  ADC_ABSOL(0x061C)
  PLP
  BCC(m1F11)
  EOR_IMMED(0xFF)
m1F11:
  STA_ABSOX(0x0EC0)
m1F14:
  LDA_ABSXP(0x0E60)
  ADC_ABSOL(0x0623)
  STA_ABSOX(0x0E60)
  LDA_ABSXP(0x0E80)
  ADC_ABSOL(0x0624)
  STA_ABSOX(0x0E80)
  JMP_ABSOL(m1D0D)

m1F29:
  DEC_ABSOX(0x0FC0)
  BEQ(m1F43)
  LDA_ABSXP(0x0E60)
  ADC_ABSXP(0x0F00)
  STA_ABSOX(0x0E60)
  LDA_ABSXP(0x0E80)
  ADC_ABSXP(0x0F20)
  STA_ABSOX(0x0E80)
  JMP_ABSOL(m1C46)
m1F43:
  LDY_ABSXP(0x0F40)
  STY_ZEROP(0x7B)
  STX_ZEROP(0x7E)
  LDA_ABSXP(0x0E00)
  STA_ZEROP(0x70)
  BMI(m1F59)
  LDA_ABSXP(0x0EE0)
  LDX_ZEROP(0x70)
  JSR_ABSOL(0x1F59,m169E)
m1F59:
  LDX_ZEROP(0x7E)
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0F40)
  JMP_ABSOL(m1C46)
m1F63:
  LDA_ZEROP(0x83)
  AND_IMMED(0x03)
  BNE(m1F29)
  LDA_ABSXP(0x0EE0)
  CLC
  ADC_IMMED(0x02)
  CMP_IMMED(0x0A)
  BNE(m1F75)
  LDA_IMMED(0x04)
m1F75:
  STA_ABSOX(0x0EE0)
  JMP_ABSOL(m1F29)
}

void m1F7B(void)
{
  JSR_ABSOL(0x1F7E,m18B5)
  LDY_ZEROP(0x85)
  STA_ABSOY(0x5700)
  AND_IMMED(0x7F)
  CMP_IMMED(0x30)
  BCS(m1F9E)
  AND_IMMED(0x1F)
  TAX
  LDA_ABSXP(0x0F40)
  BMI(m1F9E)
  LDA_ABSXP(0x0E00)
  BMI(m1F9E)
  LDA_ABSXP(0x0EE0)
  BMI(m1F9E)
  JMP_ABSOL(m1FA0)
m1F9E:
  LDX_IMMED(0xFF)
m1FA0:
  STX_ZEROP(0x86)
  LDX_IMMED(0x00)
m1FA4:
  LDA_ABSXP(0x0D00)
  STA_ZEROP(0x70)
  LDA_ABSXP(0x0D01)
  BPL(m1FB1)
  JMP_ABSOL(m203A)
m1FB1:
  STA_ZEROP(0x71)
  LDY_IMMED(0x00)
  TYA
  STA_POSTI(0x70)
  INY
  STA_POSTI(0x70)
m1FBB:
  LDA_ABSXP(0x0D04)
  CLC
  ADC_ABSXP(0x0D08)
  STA_ABSOX(0x0D04)
  LDA_ABSXP(0x0D05)
  ADC_ABSXP(0x0D09)
  STA_ABSOX(0x0D05)
  BMI(m202C)
  CMP_IMMED(0x1C)
  BCC(m202C)
  TAY
  LDA_ABSXP(0x0D02)
  CLC
  ADC_ABSXP(0x0D06)
  STA_ABSOX(0x0D02)
  LDA_ABSXP(0x0D03)
  ADC_ABSXP(0x0D07)
  STA_ABSOX(0x0D03)
  DEC_ABSOX(0x0D0A)
  BEQ(m202C)
  LDA_ABSXP(0x0D02)
  SBC_ZEROP(0x87)
  STA_ZEROP(0x72)
  LDA_ABSXP(0x0D03)
  SBC_ZEROP(0x88)
  CMP_IMMED(0x28)
  BCS(m202C)
  STX_ZEROP(0x7F)
  TAX
  JSR_ABSOL(0x2003,m1300)
  LDY_IMMED(0x88)
  LDA_ZEROP(0x72)
  BPL(m200B)
  LDY_IMMED(0x22)
m200B:
  TYA
  LDY_IMMED(0x00)
  STA_POSTI(0x70)
  INY
  STA_POSTI(0x70)
  LDX_ZEROP(0x7F)
  LDA_ZEROP(0x70)
  STA_ABSOX(0x0D00)
  LDA_ZEROP(0x71)
  STA_ABSOX(0x0D01)
m201F:
  TXA
  CLC
  ADC_IMMED(0x0B)
  TAX
  CMP_IMMED(0x37)
  BCS(m202B)
  JMP_ABSOL(m1FA4)
m202B:
  RTS
m202C:
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0D01)
  STA_ABSOX(0x0D0A)
  JMP_ABSOL(m201F)
m2037:
  JMP_ABSOL(m201F)
m203A:
  LDY_ZEROP(0x86)
  BMI(m2037)
  LDA_ABSYP(0x0E40)
  STA_ABSOX(0x0D05)
  LDA_ABSYP(0x0E80)
  STA_ABSOX(0x0D03)
  LDA_ABSYP(0x0EA0)
  CMP_IMMED(0x06)
  BCS(m2037)
  CMP_IMMED(0x01)
  BNE(m206A)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0D06)
  STA_ABSOX(0x0D08)
  STA_ABSOX(0x0D07)
  STA_ABSOX(0x0D09)
m2063:
  LDA_IMMED(0xFF)
  STA_ZEROP(0x86)
  JMP_ABSOL(m1FBB)
m206A:
  CMP_IMMED(0x02)
  BEQ(m2037)
  CMP_IMMED(0x04)
  BNE(m2096)
  LDA_ABSYP(0x0EC0)
  PHP
  LDA_ABSYP(0x0E80)
  CMP_ZEROP(0x80)
  BCC(m2083)
  PLP
  BPL(m2037)
  JMP_ABSOL(m2086)
m2083:
  PLP
  BMI(m2037)
m2086:
  STY_ZEROP(0x56)
  STX_ZEROP(0x57)
  LDA_IMMED(0x0E)
  LDX_IMMED(0x03)
  LDY_IMMED(0x96)
  JSR_ABSOL(0x2093,m22A4)
  JMP_ABSOL(m20A3)
m2096:
  STY_ZEROP(0x56)
  STX_ZEROP(0x57)
  LDA_IMMED(0x01)
  LDX_IMMED(0x04)
  LDY_IMMED(0x5A)
  JSR_ABSOL(0x20A3,m22A4)
m20A3:
  JSR_ABSOL(0x20A6,m20A9)
  JMP_ABSOL(m2063)
}

void m20A9(void)
{
  LDA_IMMED(0x00)
  STA_ZEROP(0x70)
  STA_ZEROP(0x71)
  LDA_ZEROP(0x80)
  SEC
  SBC_ABSYP(0x0E80)
  BCS(m20BE)
  DEC_ZEROP(0x70)
  EOR_IMMED(0xFF)
  CLC
  ADC_IMMED(0x01)
m20BE:
  ASL
  TAY
  LDA_ZEROP(0x82)
  SEC
  SBC_ABSXP(0x0D05)
  BCS(m20CF)
  DEC_ZEROP(0x71)
  EOR_IMMED(0xFF)
  CLC
  ADC_IMMED(0x01)
m20CF:
  STY_ZEROP(0x72)
  CMP_ZEROP(0x72)
  BCS(m20E6)
  STA_ZEROP(0x72)
  STY_ZEROP(0x73)
  LDA_ABSOL(0x0618)
  STA_ZEROP(0x74)
  JSR_ABSOL(0x20E1,m2122)
  STA_ZEROP(0x75)
  JMP_ABSOL(m20F2)
m20E6:
  STA_ZEROP(0x73)
  LDA_ABSOL(0x0618)
  STA_ZEROP(0x75)
  JSR_ABSOL(0x20F0,m2122)
  STA_ZEROP(0x74)
m20F2:
  LDA_ZEROP(0x74)
  BIT_ZEROP(0x70)
  BPL(m20FD)
  EOR_IMMED(0xFF)
  CLC
  ADC_IMMED(0x01)
m20FD:
  ADC_ABSOL(0x0623)
  STA_ABSOX(0x0D06)
  LDA_ABSOL(0x0624)
  ADC_ZEROP(0x70)
  STA_ABSOX(0x0D07)
  LDA_ZEROP(0x75)
  BIT_ZEROP(0x71)
  BPL(m2116)
  EOR_IMMED(0xFF)
  CLC
  ADC_IMMED(0x01)
m2116:
  ASL
  ROL_ZEROP(0x71)
  STA_ABSOX(0x0D08)
  LDA_ZEROP(0x71)
  STA_ABSOX(0x0D09)
  RTS
}

void m2122(void)
{
  LDA_ZEROP(0x72)
  LDY_IMMED(0x08)
  SEC
  SBC_ZEROP(0x73)
m2129:
  PHP
  ROL_ZEROP(0x72)
  ASL
  PLP
  BCC(m2135)
  SBC_ZEROP(0x73)
  JMP_ABSOL(m2137)
m2135:
  ADC_ZEROP(0x73)
m2137:
  DEY
  BNE(m2129)
  BCS(m213F)
  ADC_ZEROP(0x73)
  CLC
m213F:
  ROL_ZEROP(0x72)
  LDA_ABSOL(0x0618)
  STA_ZEROP(0x73)
  LDA_IMMED(0x00)
  STA_ZEROP(0x76)
  LDY_IMMED(0x08)
m214C:
  LSR_ZEROP(0x73)
  BCC(m2153)
  CLC
  ADC_ZEROP(0x72)
m2153:
  ROR
  ROR_ZEROP(0x76)
  DEY
  BNE(m214C)
  RTS
}

void m215A(void)
{
  LDA_ABSYP(0x0EA0)
  BEQ(m2178)
  CMP_IMMED(0x06)
  BCS(m2169)
  DEC_ABSOL(0x0616)
  JMP_ABSOL(m2174)
m2169:
  BNE(m2174)
  DEC_ABSOL(0x0615)
  BNE(m2174)
  LDA_IMMED(0x32)
  STA_ZEROP(0x8B)
m2174:
  CMP_IMMED(0x02)
  BEQ(m2198)
m2178:
  LDA_IMMED(0x80)
  STA_ABSOY(0x0FC0)
  STA_ABSOY(0x0FA0)
  LDA_ABSYP(0x0EE0)
  ORA_IMMED(0x80)
  STA_ABSOY(0x0EE0)
  LDA_ABSYP(0x0EA0)
  TAY
  LDA_ABSYP(0x11F8)
  STA_ZEROP(0x63)
  LDA_ABSYP(0x11F0)
  /*JMP_ABSOL(m14B0)*/
  m14B0();
  return;
m2198:
  regs.r[0] = 0xB0;
  regs.r[1] = 0;
  regs.r[2] = 0xFF;
  _kernel_swi(OS_Byte,&regs,&regs);
  memory[0x0240] = (regs.r[1] & 0xFF);
  LDA_ABSOL(0x0240)
  AND_IMMED(0x03)
  ADC_IMMED(0x04)
  STA_ZEROP(0x79)
  STX_ZEROP(0x7A)
  LDX_IMMED(0x1F)
m21A5:
  LDA_ABSXP(0x0F40)
  BMI(m21B2)
m21AA:
  DEX
  BPL(m21A5)
m21AD:
  LDX_ZEROP(0x7A)
  JMP_ABSOL(m2178)
m21B2:
  LDA_ABSYP(0x0E40)
  STA_ABSOX(0x0E40)
  STA_ABSOX(0x0F40)
  LDA_ABSYP(0x0E80)
  STA_ABSOX(0x0E80)
  LDA_IMMED(0x04)
  STA_ABSOX(0x0EA0)
  LDA_IMMED(0x12)
  STA_ABSOX(0x0EE0)
  TXA
  AND_IMMED(0x01)
  PHP
  LDA_ABSOL(0x0613)
  LSR
  PLP
  BNE(m21D8)
  EOR_IMMED(0xFF)
m21D8:
  STA_ABSOX(0x0EC0)
  INC_ABSOL(0x0616)
  DEC_ZEROP(0x79)
  BNE(m21AA)
  JMP_ABSOL(m21AD)
}

void m2205(void)
{
  LDA_ZEROP(0x8B)
  BNE(m220C)
  /*JMP_ABSOL(m1390)*/
  m1390();
  return;
m220C:
  CMP_IMMED(0x32)
  BNE(m2240)
  LDX_IMMED(0x1F)
m2212:
  LDA_ABSXP(0x0EA0)
  CMP_IMMED(0x03)
  BNE(m222A)
  LDA_IMMED(0x05)
  STA_ABSOX(0x0EA0)
  LDA_ABSXP(0x0EE0)
  BPL(m21E5)
  AND_IMMED(0x80)
  ORA_IMMED(0x1A)
  STA_ABSOX(0x0EE0)
m222A:
  DEX
  BPL(m2212)
  LDX_ZEROP(0x88)
  LDA_IMMED(0x00)
  STA_ABSOL(0x1346)
  STA_ABSOL(0x134B)
  STA_ABSOL(0x1377)
  STA_ABSOL(0x137C)
  JSR_ABSOL(0x2240,m1320)
m2240:
  AND_IMMED(0x07)
  JSR_ABSOL(0x2245,m14F0)
  DEC_ZEROP(0x8B)
  BNE(m224E)
  LDA_IMMED(0x07)
  JSR_ABSOL(0x224E,m14F0)
m224E:
  /*JMP_ABSOL(m1390)*/
  m1390();
  return;

m21E5:
  LDA_ABSXP(0x0E00)
  STA_ZEROP(0x70)
  BMI(m21FD)
  STX_ZEROP(0x7E)
  LDA_ABSXP(0x0EE0)
  LDY_ABSXP(0x0F40)
  STY_ZEROP(0x7B)
  LDX_ZEROP(0x70)
  JSR_ABSOL(0x21FB,m169E)
  LDX_ZEROP(0x7E)
m21FD:
  LDA_IMMED(0x1A)
  STA_ABSOX(0x0EE0)
  JMP_ABSOL(m222A)
}

void m2251(void)
{
  LDA_IMMED(0x00)
  STA_ZEROP(0x63)
  TAX
m2256:
  LDA_ZEROP(0x63)
  CMP_ZEROP(0x66)
  BCC(m226A)
  LDA_IMMED(0x00)
  LDY_IMMED(0x10)
m2260:
  STA_ABSOX(0x5940)
  INX
  DEY
  BNE(m2260)
  JMP_ABSOL(m2282)
m226A:
  LDY_IMMED(0x00)
m226C:
  LDA_ABSYP(0x11B0)
  STA_ABSOX(0x5940)
  INX
  INY
  CPY_IMMED(0x05)
  BNE(m227B)
  INX
  INX
  INX
m227B:
  CPY_IMMED(0x0A)
  BNE(m226C)
  INX
  INX
  INX
m2282:
  INC_ZEROP(0x63)
  LDA_ZEROP(0x63)
  CMP_IMMED(0x04)
  BNE(m2256)
  m228A();
}

void m228A(void)
{
  LDX_IMMED(0x00)
  LDY_IMMED(0x38)
m228E:
  CPX_ZEROP(0x65)
  BCC(m2297)
  LDA_IMMED(0x00)
  JMP_ABSOL(m2299)
m2297:
  LDA_IMMED(0x46)
m2299:
  STA_ABSOY(0x5A80)
  INY
  INY
  INX
  CPX_IMMED(0x04)
  BNE(m228E)
  RTS
}

void m22A4(void)
{
  STA_ZEROP(0x5E)
  STX_ZEROP(0x5A)
  STY_ZEROP(0x5C)
  LDX_IMMED(0x58)
  LDY_IMMED(0x00)
  LDA_IMMED(0x07)
  OSWORD
  LDX_ZEROP(0x57)
  LDY_ZEROP(0x56)
  RTS
}

void m2300(void)
{
  LDA_IMMED(0x06)
  STA_ABSOL(0x2337)
  LDA_IMMED(0x2D)
  STA_ABSOL(0x2334)
  LDY_IMMED(0x02)
  JSR_ABSOL(0x230F,m2330)
  LDA_IMMED(0x09)
  STA_ABSOL(0x2337)
  LDA_IMMED(0x30)
  STA_ABSOL(0x2334)
  LDY_IMMED(0x03)
  JSR_ABSOL(0x231E,m2330)
  LDA_IMMED(0x53)
  STA_ABSOL(0x2337)
  LDA_IMMED(0x33)
  STA_ABSOL(0x2334)
  LDY_IMMED(0x05)
  JSR_ABSOL(0x232D,m2330)
  /*JMP_ABSOL(m270E)*/
  m270E();
}

void m2330(void)
{
  int value;
m2330:
  LDX_IMMED(0x00)
m2332:
  value = (memory[0x2334] << 8);
  LDA_ABSXP(value);
  value = (memory[0x2337] << 8);
  STA_ABSOX(value);
  DEX
  BNE(m2332)
  INC_ABSOL(0x2334)
  INC_ABSOL(0x2337)
  DEY
  BNE(m2330)
  RTS
}

void m2345(void)
{
  LDA_IMMED(0x00)
  LDX_IMMED(0x05)
m2349:
  STA_ZEROX(0x8A)
  DEX
  BNE(m2349)
  LDY_IMMED(0x1F)
m2350:
  LDA_ABSYP(0x0EE0)
  BMI(m2365)
  LDA_ABSYP(0x0F40)
  BMI(m2365)
  LDX_ABSYP(0x0EA0)
  BEQ(m2365)
  CPX_IMMED(0x06)
  BCS(m2365)
  INC_ZEROX(0x8A)
m2365:
  DEY
  BPL(m2350)
  RTS
}

void m2369(void)
{
  LDA_ZEROP(0x8B)
  STA_ZEROP(0x72)
  LDA_ZEROP(0x8C)
  STA_ZEROP(0x74)
  LDA_ZEROP(0x8D)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x8E)
  STA_ZEROP(0x73)
  LDA_ZEROP(0x8F)
  STA_ZEROP(0x71)
  LDA_ABSOL(0x061D)
  CMP_IMMED(0x0C)
  BCS(m2386)
  LDA_IMMED(0x0C)
m2386:
  STA_ABSOL(0x061D)
  /*JMP_ABSOL(m19A7)*/
  m19A7();
}

void m238C(void)
{
  /*lives*/
  LDA_IMMED(initial_lives)
  STA_ZEROP(0x66)
  /*smart bombs*/
  LDA_IMMED(initial_smartbombs)
  STA_ZEROP(0x65)
  LDA_IMMED(0x01)
  STA_ZEROP(0x64)
  LDA_IMMED(0x00)
  STA_ZEROP(0x60)
  STA_ZEROP(0x61)
  STA_ZEROP(0x62)
  STA_ABSOL(0x062E)

  regs.r[0] = 0xB0;
  regs.r[1] = 0;
  regs.r[2] = 0xFF;
  _kernel_swi(OS_Byte,&regs,&regs);
  memory[0x0240] = (regs.r[1] & 0xFF);

  LDA_ABSOL(0x0240)
  ORA_IMMED(0x01)
  STA_ZEROP(0x6A)
  LDA_IMMED(0x01)
  STA_ABSOL(0x0628)
  STA_ABSOL(0x550D)
  STA_ABSOL(0x5528)
  LDA_IMMED(0x0C)
  STA_ABSOL(0x550C)
  LDA_IMMED(0x04)
  STA_ABSOL(0x0629)
  LDA_IMMED(0x58)
  STA_ABSOL(0x062D)
  LDA_IMMED(0xA4)
  STA_ABSOL(0x062C)
  LDX_IMMED(0x0E)
m23CB:
  LDA_ABSXP(0x55F0)
  STA_ABSOX(0x0610)
  DEX
  BPL(m23CB)
  JSR_ABSOL(0x23D7,m2727)
  JSR_ABSOL(0x23DA,m2C90)
  JSR_ABSOL(0x23DD,m2CC3)
  RTS
}

void m23DE(void)
{
  LDA_IMMED(0x3C)
  STA_ZEROP(0x8A)
  LDA_IMMED(0x00)
  STA_ABSOL(0x0626)
  STA_ZEROP(0x8B)
  STY_ZEROP(0x56)
  STX_ZEROP(0x57)
  JSR_ABSOL(0x23F0,m14F0)
  LDY_ZEROP(0x56)
  LDX_ZEROP(0x57)
  RTS
}

void m23F5(void)
{
  CPY_IMMED(0x06)
  BNE(m2412)
  LDA_ABSXP(0x0FC0)
  BEQ(m240F)
  BMI(m240F)
  LDA_ABSXP(0x0F00)
  CMP_IMMED(0x02)
  BCC(m240F)
  LDA_IMMED(0x80)
  STA_ABSOX(0x0FC0)
  JSR_ABSOL(0x240F,m1AB6)
m240F:
  /*JMP_ABSOL(m2497)*/
  m2497();
  return;
m2412:
  JSR_ABSOL(0x2415,m23DE)
  LDY_ZEROP(0x7E)
  JSR_ABSOL(0x241A,m215A)
  /*JMP_ABSOL(m2497)*/
  m2497();
}

void m241D(void)
{
  LDX_ZEROP(0x7E)
  LDY_ABSXP(0x0EA0)
  CPY_IMMED(0x07)
  BCS(m2497b)
  LDA_ZEROP(0x82)
  ADC_IMMED(0x04)
  CMP_ABSXP(0x0F40)
  BCC(m2497b)
  LDA_ABSXP(0x0F40)
  ADC_ABSYP(0x11C0)
  CMP_ZEROP(0x82)
  BCC(m2497b)
  LDA_ZEROP(0x81)
  ADC_IMMED(0x05)
  CMP_ABSXP(0x0E00)
  BCC(m2497b)
  LDA_ABSXP(0x0E00)
  ADC_ABSYP(0x062F)
  ADC_ABSYP(0x062F)
  CMP_ZEROP(0x81)
  BCC(m2497b)
  /*JMP_ABSOL(m23F5)*/
  m23F5();
  return;
m2497b:
  m2497();
}

void m2452(void)
{
  LDA_ZEROP(0x8A)
  BEQ(m245A)
  LDA_IMMED(0x00)
  STA_ZEROP(0x89)
m245A:
  LDA_ZEROP(0x89)
  CMP_IMMED(0x22)
  BEQ(m2467)
  CMP_IMMED(0x88)
  BEQ(m2467)
  JMP_ABSOL(m246E)
m2467:
  JSR_ABSOL(0x246A,m23DE)
  LDA_IMMED(0x00)
  STA_ZEROP(0x89)
m246E:
  LDX_IMMED(0x00)
m2470:
  STX_ZEROP(0x7E)
  LDY_ABSXP(0x0F40)
  BMI(m24C2)
  LDA_ABSXP(0x0E00)
  BMI(m2499)
  STA_ZEROP(0x70)
  STY_ZEROP(0x7B)
  LDA_ABSXP(0x0EE0)
  BPL(m248B)
  JSR_ABSOL(0x2488,m2501)
  JMP_ABSOL(m2497)
m248B:
  LDX_ZEROP(0x70)
  JSR_ABSOL(0x2490,m169E)
  LDA_ZEROP(0x89)
  BEQ(m2497)
  JSR_ABSOL(0x2497,m241D)
m2497:
  LDX_ZEROP(0x7E)
m2499:
  LDY_ABSXP(0x0EA0)
  LDA_ABSXP(0x0E60)
  SEC
  SBC_ZEROP(0x87)
  PHP
  ASL
  LDA_IMMED(0x00)
  STA_ZEROP(0x7B)
  ROL
  STA_ZEROP(0x70)
  LDA_ABSXP(0x0E80)
  PLP
  SBC_ZEROP(0x88)
  BMI(m24BD)
  STA_ZEROP(0x71)
  CLC
  ADC_ABSYP(0x062F)
  CMP_IMMED(0x29)
  BCC(m24CA)
m24BD:
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0E00)
m24C2:
  LDX_ZEROP(0x7E)
  INX
  CPX_IMMED(0x20)
  BNE(m2470)
  RTS
m24CA:
  LDA_ZEROP(0x71)
  ASL
  ORA_ZEROP(0x70)
  STA_ABSOX(0x0E00)
  STA_ZEROP(0x70)
  LDA_ABSXP(0x0E40)
  STA_ABSOX(0x0F40)
  TAY
  LDA_ABSXP(0x0EE0)
  BPL(m24E6)
  JSR_ABSOL(0x24E3,m2528)
  JMP_ABSOL(m24C2)
m24E6:
  LDX_ZEROP(0x70)
  JSR_ABSOL(0x24EB,m169E)
  LDX_ZEROP(0x7E)
  LDA_ABSOL(0x0627)
  BEQ(m24C2)
  LDA_ABSXP(0x0EA0)
  CMP_IMMED(0x06)
  BCS(m24C2)
  LDY_ZEROP(0x7E)
  JSR_ABSOL(0x24FE,m215A)
  JMP_ABSOL(m24C2)
}

void m2497(void)
{
m2497a:
  LDX_ZEROP(0x7E)
m2499a:
  LDY_ABSXP(0x0EA0)
  LDA_ABSXP(0x0E60)
  SEC
  SBC_ZEROP(0x87)
  PHP
  ASL
  LDA_IMMED(0x00)
  STA_ZEROP(0x7B)
  ROL
  STA_ZEROP(0x70)
  LDA_ABSXP(0x0E80)
  PLP
  SBC_ZEROP(0x88)
  BMI(m24BDa)
  STA_ZEROP(0x71)
  CLC
  ADC_ABSYP(0x062F)
  CMP_IMMED(0x29)
  BCC(m24CAa)
m24BDa:
  LDA_IMMED(0xFF)
  STA_ABSOX(0x0E00)
m24C2a:
  LDX_ZEROP(0x7E)
  INX
  CPX_IMMED(0x20)
  BNE(m2470a)
  RTS
m24CAa:
  LDA_ZEROP(0x71)
  ASL
  ORA_ZEROP(0x70)
  STA_ABSOX(0x0E00)
  STA_ZEROP(0x70)
  LDA_ABSXP(0x0E40)
  STA_ABSOX(0x0F40)
  TAY
  LDA_ABSXP(0x0EE0)
  BPL(m24E6a)
  JSR_ABSOL(0x24E3,m2528)
  JMP_ABSOL(m24C2a)
m24E6a:
  LDX_ZEROP(0x70)
  JSR_ABSOL(0x24EB,m169E)
  LDX_ZEROP(0x7E)
  LDA_ABSOL(0x0627)
  BEQ(m24C2a)
  LDA_ABSXP(0x0EA0)
  CMP_IMMED(0x06)
  BCS(m24C2a)
  LDY_ZEROP(0x7E)
  JSR_ABSOL(0x24FE,m215A)
  JMP_ABSOL(m24C2a)

m2470a:
  STX_ZEROP(0x7E)
  LDY_ABSXP(0x0F40)
  BMI(m24C2a)
  LDA_ABSXP(0x0E00)
  BMI(m2499a)
  STA_ZEROP(0x70)
  STY_ZEROP(0x7B)
  LDA_ABSXP(0x0EE0)
  BPL(m248Ba)
  JSR_ABSOL(0x2488,m2501)
  JMP_ABSOL(m2497a)
m248Ba:
  LDX_ZEROP(0x70)
  JSR_ABSOL(0x2490,m169E)
  LDA_ZEROP(0x89)
  BEQ(m2497a)
  JSR_ABSOL(0x2497,m241D)
  goto m2497a;
}
