/*>library.c
 *
 * Chuckie Egg
 * BBC version by Doug Anderson. Copyright A & F Software.
 * RISC OS Conversion by Michael Foot.
 * Version 1.03 (09 Feb 2003).
 *
 */

#include <time.h>
#include "r6502lib.h"

extern void m1902(void);
extern void m196C(void);
extern void m1A6E(void);
extern void m1A90(void);
extern void m1AD8(void);
extern void m1B01(void);
extern void m1CC3(void);
extern void m1DEF(void);
extern void m2276(void);
extern void m22FE(void);
extern void m2311(void);
extern void m2324(void);
extern void m23C8(void);
extern void m23ED(void);
extern void m23E0(void);
extern void m25A9(void);
extern void m26DC(void);
extern void m2702(void);
extern void m2715(void);
extern void m2796(void);
extern void m2806(void);
extern void m2BF6(void);
extern void m2C54(void);
extern void m2C6B(void);
extern void m2CBC(void);
extern void m2CCE(void);
extern void m2CDB(void);
extern void m2D3A(void);
extern void m2D7E(void);
extern void m2DB4(void);
extern void m2DC0(void);
extern void m2DA6(void);
extern void m2DFE(void);
extern void m2E2D(void);
extern void m2E92(void);
extern void m2F5A(void);
extern void m3000(void);
extern void m3003(void);
extern void m305C(void);
extern void m32F0(void);

extern FILE * hfile;
extern int initial_lives;
extern int initial_level;

int showscreens;

void m1902(void)
{
m1902:
  LDA_ZEROP(0x73)
  STA_ZEROP(0x81)
  LDY_IMMED(0x00)
  LDA_ZEROP(0x7A)
  STA_ZEROP(0x87)
  LDX_IMMED(0x00)
  LDA_PREIN(0x76)
  STA_ZEROP(0x84)
  LDA_IMMED(0x08)
  STA_ZEROP(0x83)
  LDA_ZEROP(0x7F)
  LDX_ZEROP(0x81)
  BEQ(m1920)
m191C:
  LSR
  DEX
  BNE(m191C)
m1920:
  STA_ZEROP(0x82)
  LDA_IMMED(0x02)
  SEC
  SBC_ZEROP(0x81)
  STA_ZEROP(0x81)
  LDX_IMMED(0x00)
m192B:
  ASL_ZEROP(0x84)
  BCC(m1935)
  LDA_POSTI(0x70)
  EOR_ZEROP(0x82)
  STA_POSTI(0x70)
m1935:
  DEC_ZEROP(0x83)
  BNE(m194B)
  INC_ZEROP(0x76)
  BNE(m193F)
  INC_ZEROP(0x77)
m193F:
  DEC_ZEROP(0x87)
  BEQ(m1961)
  LDA_PREIN(0x76)
  STA_ZEROP(0x84)
  LDA_IMMED(0x08)
  STA_ZEROP(0x83)
m194B:
  LSR_ZEROP(0x82)
  DEC_ZEROP(0x81)
  BNE(m192B)
  TYA
  CLC
  ADC_IMMED(0x08)
  TAY
  LDA_ZEROP(0x7F)
  STA_ZEROP(0x82)
  LDA_IMMED(0x02)
  STA_ZEROP(0x81)
  JMP_ABSOL(m192B)
m1961:
  DEC_ZEROP(0x78)
  BEQ(m196B)
  /*JSR_ABSOL(0x196C,m196C)*/
  m196C();
  JMP_ABSOL(m1902)
m196B:
  /*RTS*/
  return;
}

void m196C(void)
{
  INC_ZEROP(0x72)
  LDA_ZEROP(0x72)
  AND_IMMED(0x07)
  BEQ(m1977)
  INC_ZEROP(0x70)
  /*RTS*/
  return;
m1977:
  STA_ZEROP(0x72)
  CLC
  LDA_ZEROP(0x70)
  ADC_IMMED(0x79)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x71)
  ADC_IMMED(0x02)
  STA_ZEROP(0x71)
  /*RTS*/
}

void m1987(void)
{
  LDA_IMMED(0x00)
  STA_ZEROP(0x71)
  STA_ZEROP(0x74)
  TYA
  EOR_IMMED(0xFF)
  TAY
  AND_IMMED(0xF8)
  STA_ZEROP(0x70)
  ASL
  ROL_ZEROP(0x71)
  ASL
  ROL_ZEROP(0x71)
  CLC
  ADC_ZEROP(0x70)
  STA_ZEROP(0x70)
  LDA_IMMED(0x00)
  ADC_ZEROP(0x71)
  STA_ZEROP(0x71)
  ASL_ZEROP(0x70)
  ROL_ZEROP(0x71)
  ASL_ZEROP(0x70)
  ROL_ZEROP(0x71)
  ASL_ZEROP(0x70)
  ROL_ZEROP(0x71)
  ASL_ZEROP(0x70)
  ROL_ZEROP(0x71)
  TYA
  AND_IMMED(0x07)
  STA_ZEROP(0x72)
  CLC
  ADC_ZEROP(0x70)
  STA_ZEROP(0x70)
  TXA
  AND_IMMED(0x01)
  STA_ZEROP(0x73)
  TXA
  AND_IMMED(0xFE)
  ASL
  ROL_ZEROP(0x74)
  ASL
  ROL_ZEROP(0x74)
  ADC_ZEROP(0x70)
  STA_ZEROP(0x70)
  LDA_ZEROP(0x74)
  ADC_ZEROP(0x71)
  ADC_IMMED(0x30)
  STA_ZEROP(0x71)
  /*RTS*/
}

void m19DB(void)
{
  LDY_IMMED(0x00)
  STY_ZEROP(0x77)
  ASL
  ROL_ZEROP(0x77)
  ASL
  ROL_ZEROP(0x77)
  ADC_IMMED(0x00)
  STA_ZEROP(0x76)
  LDA_ZEROP(0x77)
  ADC_IMMED(0x11)
  STA_ZEROP(0x77)
  LDA_POSTI(0x76)
  STA_ZEROP(0x79)
  CLC
  ADC_IMMED(0x07)
  LSR
  LSR
  LSR
  STA_ZEROP(0x7A)
  INY
  LDA_POSTI(0x76)
  STA_ZEROP(0x78)
  INY
  LDA_POSTI(0x76)
  TAX
  INY
  LDA_POSTI(0x76)
  STX_ZEROP(0x76)
  STA_ZEROP(0x77)
  /*RTS*/
}

void m1A0C(void)
{
  PHA
  TXA
  CLC
  ROL
  ROL
  ROL
  TAX
  TYA
  SEC
  ROL
  SEC
  ROL
  SEC
  ROL
  TAY
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  PLA
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  /*RTS*/
}

void m1A26(void)
{
  STX_ZEROP(0x70)
  STY_ZEROP(0x71)
  LDY_IMMED(0x00)
  LDA_POSTI(0x70)
  STA_ZEROP(0x75)
m1A30:
  INY
  LDA_POSTI(0x70)
  OSWRCH
  CPY_ZEROP(0x75)
  BNE(m1A30)
  /*RTS*/
}

void m1A3B(void)
{
  /*check for 'H' key*/
  LDX_IMMED(0xAB)
  LDY_IMMED(0xFF)
  LDA_IMMED(0x81)
  OSBYTE81
  CPY_IMMED(0x00)
  BEQ(m1A6Ex)
m1A48:
  /*check for 'H' key*/
  LDX_IMMED(0xAB)
  LDY_IMMED(0xFF)
  LDA_IMMED(0x81)
  OSBYTE81
  CPY_IMMED(0x00)
  BEQ(m1A67)
  /*check for 'escape' key*/
  LDX_IMMED(0x8F)
  LDY_IMMED(0xFF)
  LDA_IMMED(0x81)
  OSBYTE81
  CPY_IMMED(0x00)
  BEQ(m1A67)
  LDA_IMMED(0x80)
  STA_ZEROP(0x60)

  /*flush keyboard buffer*/
  regs.r[0] = 0x15;
  regs.r[1] = 0x00; /*keyboard*/
  _kernel_swi(OS_Byte,&regs,&regs);

  /*clear escape condition*/
  timer = clock() + 40;
  while (clock() < timer)
  {
  }

  /*RTS*/
  return;
m1A67:
  /*JSR_ABSOL(0x1A6E,m1A6E)*/
  m1A6E();
  LDA_ZEROP(0x60)
  BEQ(m1A48)
m1A6Ex:
  /*JSR_ABSOL(0x1A6E,m1A6E)*/
  m1A6E();
}

void m1A6E(void)
{
  LDA_IMMED(0x00)
  STA_ZEROP(0x60)
  LDA_IMMED(0x01)
  STA_ZEROP(0x80)
  LDX_ZEROP(0x61)
  /*JSR_ABSOL(0x1A90,m1A90)*/
  m1A90();
  LDX_ZEROP(0x62)
  /*JSR_ABSOL(0x1A90,m1A90)*/
  m1A90();
  LDX_ZEROP(0x63)
  /*JSR_ABSOL(0x1A90,m1A90)*/
  m1A90();
  LDX_ZEROP(0x64)
  /*JSR_ABSOL(0x1A90,m1A90)*/
  m1A90();
  LDX_ZEROP(0x65)
  /*JSR_ABSOL(0x1A90,m1A90)*/
  m1A90();
  /*RTS*/
}

void m1A90(void)
{
  LDY_IMMED(0xFF)
  LDA_IMMED(0x81)
  OSBYTE81
  CPY_IMMED(0x00)
  BEQ(m1AA1)
  LDA_ZEROP(0x60)
  ORA_ZEROP(0x80)
  STA_ZEROP(0x60)
m1AA1:
  ASL_ZEROP(0x80)
  /*RTS*/
}

void m1AA4(void)
{
  LDA_ZEROP(0x66)
  AND_IMMED(0x48)
  ADC_IMMED(0x38)
  ASL
  ASL
  ROL_ZEROP(0x69)
  ROL_ZEROP(0x68)
  ROL_ZEROP(0x67)
  ROL_ZEROP(0x66)
  /*RTS*/
}

void m1AB5(void)
{
m1AB5:
  LDY_IMMED(0x08)
  STY_ZEROP(0x7F)
  LDY_ZEROX(0x28)
  CLC
  ADC_ZEROX(0x28)
  CPX_IMMED(0x03)
  BNE(m1AC4)
  INC_ZEROP(0x3E)
m1AC4:
  CMP_IMMED(0x0A)
  BCC(m1AD6)
  SEC
  SBC_IMMED(0x0A)
  STA_ZEROX(0x28)
  /*JSR_ABSOL(0x1AD8,m1AD8)*/
  m1AD8();
  LDA_IMMED(0x01)
  DEX
  BPL(m1AB5)
  /*RTS*/
  return;

m1AD6:
  STA_ZEROX(0x28)
  m1AD8();
}


void m1AD8(void)
{
  CPX_IMMED(0x02)
  BCS(m1ADD)
  /*RTS*/
  return;

m1ADD:
  STA_ZEROP(0x8C)
  STX_ZEROP(0x8D)
  STY_ZEROP(0x8E)
  LDA_ZEROP(0x3F)
  CLC
m1AE6:
  ADC_IMMED(0x05)
  DEX
  BPL(m1AE6)
  STA_ZEROP(0x8B)
  TAX
  LDA_ZEROP(0x8E)
  LDY_IMMED(0xF7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDA_ZEROP(0x8C)
  LDX_ZEROP(0x8B)
  LDY_IMMED(0xF7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDX_ZEROP(0x8D)
  /*RTS*/
}

void m1B01(void)
{
  PHA
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  PLA
  CLC
  ADC_IMMED(0x1F)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  /*RTS*/
}

void m1B10(void)
{
m1B10:
  LDA_IMMED(0x03)
  LDX_IMMED(0x00)
  LDY_IMMED(0x00)
  OSWORD
  LDA_ZEROP(0x01)
  BNE(m1B23)
  LDA_ZEROP(0x00)
  CMP_IMMED(0x03)
  BCC(m1B10)
m1B23:
  LDA_IMMED(0x00)
  STA_ZEROP(0x00)
  STA_ZEROP(0x01)
  LDA_IMMED(0x04)
  LDX_IMMED(0x00)
  LDY_IMMED(0x00)
  OSWORD
  /*RTS*/
}

void m1B33(void)
{
  /*draw game screen*/
  LDA_IMMED(0x10)
  OSWRCH
  /*JSR_ABSOL(0x1CC3,m1CC3)*/
  m1CC3();
  LDA_ZEROP(0x5C)
  ASL
  TAY
  LDA_ABSYP(0x0CC0)
  STA_ZEROP(0x51)
  INY
  LDA_ABSYP(0x0CC0)
  STA_ZEROP(0x52)
  LDY_IMMED(0x00)
  LDA_POSTI(0x51)
  STA_ZEROP(0x53)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x54)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x55)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x56)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x57)
  LDA_IMMED(0x00)
  TAX
m1B67:
  STA_ABSOX(0x0600)
  STA_ABSOX(0x0700)
  DEX
  BNE(m1B67)
  LDA_IMMED(0x0A)
  STA_ZEROP(0x7F)
  LDA_ZEROP(0x53)
  STA_ZEROP(0x8A)
  STY_ZEROP(0x89)
m1B7A:
  LDY_ZEROP(0x89)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x8B)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x8C)
  INY
  LDA_POSTI(0x51)
  SEC
  SBC_ZEROP(0x8C)
  STA_ZEROP(0x8D)
  STY_ZEROP(0x89)
m1B90:
  LDA_IMMED(0x01)
  LDY_ZEROP(0x8B)
  LDX_ZEROP(0x8C)
  /*JSR_ABSOL(0x23E0,m23E0)*/
  m23E0();
  LDX_ZEROP(0x8C)
  /*JSR_ABSOL(0x1A0C,m1A0C)*/
  m1A0C();
  INC_ZEROP(0x8C)
  DEC_ZEROP(0x8D)
  BPL(m1B90)
  DEC_ZEROP(0x8A)
  BNE(m1B7A)
  LDA_IMMED(0x08)
  STA_ZEROP(0x7F)
  LDA_ZEROP(0x54)
  STA_ZEROP(0x8A)
m1BB0:
  LDY_ZEROP(0x89)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x8B)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x8C)
  INY
  LDA_POSTI(0x51)
  SEC
  SBC_ZEROP(0x8C)
  STA_ZEROP(0x8D)
  STY_ZEROP(0x89)
m1BC6:
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  BEQ(m1BDE)
  LDX_IMMED(0x0A)
  STX_ZEROP(0x7F)
  LDX_ZEROP(0x8B)
  /*JSR_ABSOL(0x1A0C,m1A0C)*/
  m1A0C();
  LDA_IMMED(0x01)
  LDX_IMMED(0x08)
  STX_ZEROP(0x7F)
m1BDE:
  ORA_IMMED(0x02)
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  /*JSR_ABSOL(0x23E0,m23E0)*/
  m23E0();
  LDA_IMMED(0x02)
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  /*JSR_ABSOL(0x1A0C,m1A0C)*/
  m1A0C();
  INC_ZEROP(0x8C)
  DEC_ZEROP(0x8D)
  BPL(m1BC6)
  DEC_ZEROP(0x8A)
  BNE(m1BB0)
  LDA_ZEROP(0x55)
  BEQ(m1C0A)
  LDY_ZEROP(0x89)
  INY
  LDA_POSTI(0x51)
  STY_ZEROP(0x89)
  ASL
  ASL
  ASL
  STA_ZEROP(0x58)
m1C0A:
  LDA_IMMED(0x02)
  STA_ZEROP(0x7F)
  LDA_IMMED(0x00)
  STA_ZEROP(0x8A)
  STA_ZEROP(0x39)
  LDA_ZEROP(0x4E)
  STA_ZEROP(0x88)
m1C18:
  LDY_ZEROP(0x89)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x8B)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x8C)
  STY_ZEROP(0x89)
  LDX_ZEROP(0x88)
  LDA_ABSXP(0x0510)
  BNE(m1C47)
  LDA_ZEROP(0x8A)
  ASL
  ASL
  ASL
  ASL
  ADC_IMMED(0x04)
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  /*JSR_ABSOL(0x23E0,m23E0)*/
  m23E0();
  LDA_IMMED(0x03)
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  /*JSR_ABSOL(0x1A0C,m1A0C)*/
  m1A0C();
  INC_ZEROP(0x39)
m1C47:
  INC_ZEROP(0x88)
  INC_ZEROP(0x8A)
  LDA_ZEROP(0x8A)
  CMP_IMMED(0x0C)
  BCC(m1C18)
  LDA_IMMED(0x08)
  STA_ZEROP(0x7F)
  LDA_IMMED(0x00)
  STA_ZEROP(0x8A)
  LDA_ZEROP(0x4E)
  STA_ZEROP(0x88)
m1C5D:
  LDY_ZEROP(0x89)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x8B)
  INY
  LDA_POSTI(0x51)
  STA_ZEROP(0x8C)
  STY_ZEROP(0x89)
  LDX_ZEROP(0x88)
  LDA_ABSXP(0x0520)
  BNE(m1C8A)
  LDA_ZEROP(0x8A)
  ASL
  ASL
  ASL
  ASL
  ADC_IMMED(0x08)
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  /*JSR_ABSOL(0x23E0,m23E0)*/
  m23E0();
  LDA_IMMED(0x04)
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  /*JSR_ABSOL(0x1A0C,m1A0C)*/
  m1A0C();
m1C8A:
  INC_ZEROP(0x88)
  INC_ZEROP(0x8A)
  LDA_ZEROP(0x8A)
  CMP_ZEROP(0x56)
  BCC(m1C5D)
  LDA_IMMED(0x20)
  STA_ZEROP(0x7F)
  LDX_IMMED(0x00)
  LDY_IMMED(0xDC)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDX_IMMED(0x13)
  LDA_ZEROP(0x35)
  BEQ(m1CA6)
  INX
m1CA6:
  TXA
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDY_ZEROP(0x89)
  LDX_IMMED(0x00)
m1CB1:
  INY
  LDA_POSTI(0x51)
  STA_ABSOX(0x040A)
  INY
  LDA_POSTI(0x51)
  STA_ABSOX(0x040F)
  INX
  CPX_IMMED(0x05)
  BCC(m1CB1)
  /*RTS*/
}

void m1CC3(void)
{
  LDA_IMMED(0x08)
  STA_ZEROP(0x7F)
  LDX_IMMED(0x00)
  LDY_IMMED(0xF8)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_IMMED(0x29)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDX_ZEROP(0x5D)
  LDA_IMMED(0x00)
  CLC
m1CDB:
  ADC_IMMED(0x22)
  DEX
  BPL(m1CDB)
  SEC
  SBC_IMMED(0x07)
  TAX
  LDY_IMMED(0xF8)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_IMMED(0x2A)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDX_IMMED(0x00)
  STX_ZEROP(0x88)
m1CF5:
  /*JSR_ABSOL(0x1DEF,m1DEF)*/
  m1DEF();
  INC_ZEROP(0x88)
  LDX_ZEROP(0x88)
  CPX_ZEROP(0x5E)
  BCC(m1CF5)
  LDA_IMMED(0x08)
  STA_ZEROP(0x7F)
  LDX_IMMED(0x00)
  LDY_IMMED(0xE8)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_IMMED(0x2B)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDX_IMMED(0x1B)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_ZEROP(0x5D)
  CLC
  ADC_IMMED(0x20)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDX_IMMED(0x24)
  LDY_IMMED(0xE8)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_IMMED(0x2C)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDA_IMMED(0x00)
  STA_ZEROP(0x8B)
  STA_ZEROP(0x8C)
  LDX_ZEROP(0x50)
  INX
  STX_ZEROP(0x8D)
  LDA_ZEROP(0x8D)
  LDX_IMMED(0x00)
m1D43:
  CMP_IMMED(0x0A)
  BCC(m1D4E)
  SEC
  SBC_IMMED(0x0A)
  INX
  JMP_ABSOL(m1D43)
m1D4E:
  STA_ZEROP(0x8D)
  TXA
  LDX_IMMED(0x00)
m1D53:
  CMP_IMMED(0x0A)
  BCC(m1D5E)
  SEC
  SBC_IMMED(0x0A)
  INX
  JMP_ABSOL(m1D53)
m1D5E:
  STA_ZEROP(0x8C)
  STX_ZEROP(0x8B)
  LDA_ZEROP(0x8B)
  BEQ(m1D6D)
  LDX_IMMED(0x3B)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
m1D6D:
  LDA_ZEROP(0x8C)
  LDX_IMMED(0x40)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDA_ZEROP(0x8D)
  LDX_IMMED(0x45)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDX_IMMED(0x4E)
  LDY_IMMED(0xE8)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_IMMED(0x2D)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDA_ZEROP(0x3A)
  LDX_IMMED(0x66)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDA_ZEROP(0x3B)
  LDX_IMMED(0x6B)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDA_ZEROP(0x3C)
  LDX_IMMED(0x70)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDA_IMMED(0x00)
  LDX_IMMED(0x75)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDX_IMMED(0x7E)
  LDY_IMMED(0xE8)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_IMMED(0x2E)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDA_ZEROP(0x4D)
  LSR
  CMP_IMMED(0x08)
  BCC(m1DCA)
  LDA_IMMED(0x08)
m1DCA:
  EOR_IMMED(0xFF)
  SEC
  ADC_IMMED(0x09)
  STA_ZEROP(0x1D)
  LDX_IMMED(0x91)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDA_IMMED(0x00)
  STA_ZEROP(0x1E)
  LDX_IMMED(0x96)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDA_IMMED(0x00)
  STA_ZEROP(0x1F)
  LDX_IMMED(0x9B)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  /*RTS*/
}

void m1DEF(void)
{
  LDA_IMMED(0x00)
  CLC
m1DF2:
  ADC_IMMED(0x22)
  DEX
  BPL(m1DF2)
  SEC
  SBC_IMMED(0x07)
  STA_ZEROP(0x8B)
  LDA_IMMED(0x08)
  STA_ZEROP(0x7F)
  LDA_ZEROP(0x88)
  ASL
  ASL
  ASL
  ASL
  ASL
  ASL
  TAX
  INX
  INX
  STX_ZEROP(0x8D)
  LDX_ZEROP(0x8B)
  INX
  STX_ZEROP(0x8C)
  LDA_IMMED(0x06)
  STA_ZEROP(0x8E)
m1E16:
  LDX_ZEROP(0x8D)
  LDA_ABSXP(0x0500)
  LDX_ZEROP(0x8C)
  LDY_IMMED(0xF7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  LDA_ZEROP(0x8C)
  CLC
  ADC_IMMED(0x05)
  STA_ZEROP(0x8C)
  INC_ZEROP(0x8D)
  DEC_ZEROP(0x8E)
  BNE(m1E16)
  LDA_IMMED(0x20)
  STA_ZEROP(0x7F)
  LDX_ZEROP(0x88)
  LDA_ZEROX(0x20)
  BEQ(m1E62)
  CMP_IMMED(0x08)
  BCC(m1E3F)
  LDA_IMMED(0x08)
m1E3F:
  STA_ZEROP(0x8E)
  LDA_ZEROP(0x8B)
  STA_ZEROP(0x8C)
m1E45:
  LDX_ZEROP(0x8C)
  LDY_IMMED(0xEE)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_IMMED(0x2F)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  DEC_ZEROP(0x8E)
  BEQ(m1E62)
  LDA_ZEROP(0x8C)
  CLC
  ADC_IMMED(0x04)
  STA_ZEROP(0x8C)
  JMP_ABSOL(m1E45)
m1E62:
  /*RTS*/
  return;
}

void m1E63(void)
{
  LDA_IMMED(0x00)
  STA_ZEROP(0x46)
  STA_ZEROP(0x47)
  LDA_ZEROP(0x60)
  LSR
  BCC(m1E70)
  INC_ZEROP(0x46)
m1E70:
  LSR
  BCC(m1E75)
  DEC_ZEROP(0x46)
m1E75:
  LSR
  BCC(m1E7A)
  DEC_ZEROP(0x47)
m1E7A:
  LSR
  BCC(m1E7F)
  INC_ZEROP(0x47)
m1E7F:
  ASL_ZEROP(0x47)
  LDA_ZEROP(0x49)
  BEQ(m1E9B)
  CMP_IMMED(0x02)
  BNE(m1E8C)
  JMP_ABSOL(m1F81)
m1E8C:
  BCS(m1E91)
  JMP_ABSOL(m1F22)
m1E91:
  CMP_IMMED(0x03)
  BNE(m1E98)
  JMP_ABSOL(m20E3)
m1E98:
  JMP_ABSOL(m213E)
m1E9B:
  LDA_ZEROP(0x60)
  AND_IMMED(0x10)
  BEQ(m1EA4)
  JMP_ABSOL(m20D0)
m1EA4:
  LDA_ZEROP(0x47)
  BEQ(m1ED8)
  LDX_ZEROP(0x44)
  CPX_IMMED(0x03)
  BNE(m1ED8)
  LDA_ZEROP(0x47)
  BMI(m1EC1)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  INY
  INY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BEQ(m1ED8)
  BNE(m1ECD)
m1EC1:
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BEQ(m1ED8)
m1ECD:
  LDA_IMMED(0x00)
  STA_ZEROP(0x46)
  LDA_IMMED(0x01)
  STA_ZEROP(0x49)
  JMP_ABSOL(m1F19)
m1ED8:
  LDA_IMMED(0x00)
  STA_ZEROP(0x47)
  LDA_ZEROP(0x44)
  CLC
  ADC_ZEROP(0x46)
  LDX_ZEROP(0x42)
  CMP_IMMED(0x00)
  BPL(m1EE8)
  DEX
m1EE8:
  CMP_IMMED(0x08)
  BMI(m1EED)
  INX
m1EED:
  LDY_ZEROP(0x43)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BNE(m1F10)
  TAY
  LDX_IMMED(0xFF)
  LDA_ZEROP(0x46)
  CLC
  ADC_ZEROP(0x44)
  AND_IMMED(0x07)
  CMP_IMMED(0x04)
  BCS(m1F08)
  LDX_IMMED(0x01)
  INY
m1F08:
  STX_ZEROP(0x4B)
  STY_ZEROP(0x4A)
  LDA_IMMED(0x03)
  STA_ZEROP(0x49)
m1F10:
  /*JSR_ABSOL(0x2276,m2276)*/
  m2276();
  BCC(m1F19)
  LDA_IMMED(0x00)
  STA_ZEROP(0x46)
m1F19:
  LDA_ZEROP(0x46)
  BEQ(m1F1F)
  STA_ZEROP(0x4C)
m1F1F:
  JMP_ABSOL(m217B)
m1F22:
  LDA_ZEROP(0x60)
  AND_IMMED(0x10)
  BEQ(m1F2B)
  JMP_ABSOL(m20D0)
m1F2B:
  LDA_ZEROP(0x46)
  BEQ(m1F4A)
  LDX_ZEROP(0x45)
  BNE(m1F4A)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BEQ(m1F4A)
  LDA_IMMED(0x00)
  STA_ZEROP(0x47)
  LDA_IMMED(0x00)
  STA_ZEROP(0x49)
  JMP_ABSOL(m1F7A)
m1F4A:
  LDA_IMMED(0x00)
  STA_ZEROP(0x46)
  LDA_ZEROP(0x47)
  BEQ(m1F7A)
  LDA_ZEROP(0x45)
  BNE(m1F7A)
  LDA_ZEROP(0x47)
  BMI(m1F6C)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  INY
  INY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BNE(m1F7A)
  STA_ZEROP(0x47)
  JMP_ABSOL(m1F7A)
m1F6C:
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BNE(m1F7A)
  STA_ZEROP(0x47)
m1F7A:
  LDA_IMMED(0x00)
  STA_ZEROP(0x4C)
  JMP_ABSOL(m217B)
m1F81:
  LDA_ZEROP(0x4B)
  STA_ZEROP(0x46)
  LDA_ZEROP(0x47)
  STA_ZEROP(0x89)
  LDA_ZEROP(0x4A)
  LSR
  LSR
  CMP_IMMED(0x06)
  BCC(m1F93)
  LDA_IMMED(0x06)
m1F93:
  EOR_IMMED(0xFF)
  SEC
  ADC_IMMED(0x02)
  STA_ZEROP(0x47)
  INC_ZEROP(0x4A)
  LDA_ZEROP(0x41)
  CMP_IMMED(0xDC)
  BCC(m1FAD)
  LDA_IMMED(0xFF)
  STA_ZEROP(0x47)
  LDA_IMMED(0x0C)
  STA_ZEROP(0x4A)
  JMP_ABSOL(m2062)
m1FAD:
  LDA_ZEROP(0x44)
  CLC
  ADC_ZEROP(0x46)
  CMP_IMMED(0x03)
  BNE(m2016)
  LDA_ZEROP(0x89)
  BEQ(m2016)
  BMI(m1FED)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  INY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BNE(m1FDB)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  INY
  LDA_ZEROP(0x45)
  CMP_IMMED(0x04)
  BCC(m1FD4)
  INY
m1FD4:
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BEQ(m2016)
m1FDB:
  LDA_IMMED(0x01)
  STA_ZEROP(0x49)
  LDA_ZEROP(0x45)
  CLC
  ADC_ZEROP(0x47)
  AND_IMMED(0x01)
  BEQ(m1FEA)
  INC_ZEROP(0x47)
m1FEA:
  JMP_ABSOL(m20CD)
m1FED:
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BEQ(m2016)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  INY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BEQ(m2016)
  LDA_IMMED(0x01)
  STA_ZEROP(0x49)
  LDA_ZEROP(0x45)
  CLC
  ADC_ZEROP(0x47)
  AND_IMMED(0x01)
  BEQ(m2013)
  DEC_ZEROP(0x47)
m2013:
  JMP_ABSOL(m20CD)
m2016:
  LDA_ZEROP(0x47)
  CLC
  ADC_ZEROP(0x45)
  BEQ(m2039)
  BPL(m204C)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BEQ(m2062)
  LDA_IMMED(0x00)
  STA_ZEROP(0x49)
  LDA_IMMED(0x00)
  SEC
  SBC_ZEROP(0x45)
  STA_ZEROP(0x47)
  JMP_ABSOL(m2062)
m2039:
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BEQ(m2062)
  LDA_IMMED(0x00)
  STA_ZEROP(0x49)
  JMP_ABSOL(m2062)
m204C:
  CMP_IMMED(0x08)
  BNE(m2062)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BEQ(m2062)
  LDA_IMMED(0x00)
  STA_ZEROP(0x49)
  JMP_ABSOL(m2062)
m2062:
  LDA_ZEROP(0x55)
  BEQ(m20BF)
  LDA_ZEROP(0x58)
  SEC
  SBC_IMMED(0x01)
  CMP_ZEROP(0x40)
  BCS(m20BF)
  ADC_IMMED(0x0A)
  CMP_ZEROP(0x40)
  BCC(m20BF)
  LDA_ZEROP(0x41)
  SEC
  SBC_IMMED(0x11)
  STA_ZEROP(0x8B)
  SBC_IMMED(0x02)
  CLC
  ADC_ZEROP(0x47)
  STA_ZEROP(0x8C)
  LDA_ZEROP(0x59)
  CMP_ZEROP(0x8B)
  BEQ(m208F)
  BCS(m2099)
  CMP_ZEROP(0x8C)
  BCC(m2099)
m208F:
  LDX_ZEROP(0x5B)
  BNE(m2096)
  CLC
  ADC_IMMED(0x01)
m2096:
  JMP_ABSOL(m20AC)
m2099:
  LDA_ZEROP(0x5A)
  CMP_ZEROP(0x8B)
  BEQ(m20A5)
  BCS(m20BF)
  CMP_ZEROP(0x8C)
  BCC(m20BF)
m20A5:
  LDX_ZEROP(0x5B)
  BEQ(m20AC)
  CLC
  ADC_IMMED(0x01)
m20AC:
  SEC
  SBC_ZEROP(0x8B)
  CLC
  ADC_IMMED(0x01)
  STA_ZEROP(0x47)
  LDA_IMMED(0x00)
  STA_ZEROP(0x4A)
  LDA_IMMED(0x04)
  STA_ZEROP(0x49)
  JMP_ABSOL(m20CD)
m20BF:
  /*JSR_ABSOL(0x2276,m2276)*/
  m2276();
  BCC(m20CD)
  LDA_IMMED(0x00)
  SEC
  SBC_ZEROP(0x46)
  STA_ZEROP(0x46)
  STA_ZEROP(0x4B)
m20CD:
  JMP_ABSOL(m217B)
m20D0:
  LDA_IMMED(0x00)
  STA_ZEROP(0x4A)
  LDA_IMMED(0x02)
  STA_ZEROP(0x49)
  LDA_ZEROP(0x46)
  STA_ZEROP(0x4B)
  BEQ(m20E0)
  STA_ZEROP(0x4C)
m20E0:
  JMP_ABSOL(m1F81)
m20E3:
  INC_ZEROP(0x4A)
  LDA_ZEROP(0x4A)
  CMP_IMMED(0x04)
  BCS(m20F6)
  LDA_ZEROP(0x4B)
  STA_ZEROP(0x46)
  LDA_IMMED(0xFF)
  STA_ZEROP(0x47)
  JMP_ABSOL(m2108)
m20F6:
  LDA_IMMED(0x00)
  STA_ZEROP(0x46)
  LDA_ZEROP(0x4A)
  LSR
  LSR
  CMP_IMMED(0x04)
  BCC(m2104)
  LDA_IMMED(0x03)
m2104:
  EOR_IMMED(0xFF)
  STA_ZEROP(0x47)
m2108:
  LDA_ZEROP(0x47)
  CLC
  ADC_ZEROP(0x45)
  BEQ(m212B)
  BPL(m213B)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BEQ(m213B)
  LDA_IMMED(0x00)
  STA_ZEROP(0x49)
  LDA_IMMED(0x00)
  SEC
  SBC_ZEROP(0x45)
  STA_ZEROP(0x47)
  JMP_ABSOL(m213B)
m212B:
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BEQ(m213B)
  LDA_IMMED(0x00)
  STA_ZEROP(0x49)
m213B:
  JMP_ABSOL(m217B)
m213E:
  LDA_ZEROP(0x60)
  AND_IMMED(0x10)
  BEQ(m2147)
  JMP_ABSOL(m20D0)
m2147:
  LDA_ZEROP(0x58)
  SEC
  SBC_IMMED(0x01)
  CMP_ZEROP(0x40)
  BCS(m2156)
  ADC_IMMED(0x0A)
  CMP_ZEROP(0x40)
  BCS(m2160)
m2156:
  LDA_IMMED(0x00)
  STA_ZEROP(0x4A)
  STA_ZEROP(0x4B)
  LDA_IMMED(0x03)
  STA_ZEROP(0x49)
m2160:
  LDA_IMMED(0x01)
  STA_ZEROP(0x47)
  LDA_ZEROP(0x46)
  BEQ(m216A)
  STA_ZEROP(0x4C)
m216A:
  /*JSR_ABSOL(0x2276,m2276)*/
  m2276();
  BCC(m2173)
  LDA_IMMED(0x00)
  STA_ZEROP(0x46)
m2173:
  LDA_ZEROP(0x41)
  CMP_IMMED(0xDC)
  BCC(m217B)
  INC_ZEROP(0x4F)
m217B:
  LDA_ZEROP(0x48)
  /*JSR_ABSOL(0x2324,m2324)*/
  m2324();
  LDA_ZEROP(0x40)
  CLC
  ADC_ZEROP(0x46)
  STA_ZEROP(0x40)
  LDA_ZEROP(0x44)
  CLC
  ADC_ZEROP(0x46)
  BPL(m2190)
  DEC_ZEROP(0x42)
m2190:
  CMP_IMMED(0x08)
  BMI(m2196)
  INC_ZEROP(0x42)
m2196:
  AND_IMMED(0x07)
  STA_ZEROP(0x44)
  LDA_ZEROP(0x41)
  CLC
  ADC_ZEROP(0x47)
  STA_ZEROP(0x41)
  LDA_ZEROP(0x45)
  CLC
  ADC_ZEROP(0x47)
  BPL(m21AA)
  DEC_ZEROP(0x43)
m21AA:
  CMP_IMMED(0x08)
  BMI(m21B0)
  INC_ZEROP(0x43)
m21B0:
  AND_IMMED(0x07)
  STA_ZEROP(0x45)
  LDX_IMMED(0x06)
  LDA_ZEROP(0x4C)
  BEQ(m21C6)
  BPL(m21BE)
  LDX_IMMED(0x09)
m21BE:
  STX_ZEROP(0x88)
  LDA_ZEROP(0x44)
  LSR
  JMP_ABSOL(m21CD)
m21C6:
  LDA_IMMED(0x0C)
  STA_ZEROP(0x88)
  LDA_ZEROP(0x45)
  LSR
m21CD:
  LDX_IMMED(0x02)
  STX_ZEROP(0x89)
  BIT_ZEROP(0x89)
  BEQ(m21D8)
  AND_IMMED(0x01)
  ASL
m21D8:
  LDX_ZEROP(0x49)
  CPX_IMMED(0x01)
  BNE(m21E7)
  LDX_ZEROP(0x47)
  BNE(m21ED)
  LDA_IMMED(0x00)
  JMP_ABSOL(m21ED)
m21E7:
  LDX_ZEROP(0x46)
  BNE(m21ED)
  LDA_IMMED(0x00)
m21ED:
  CLC
  ADC_ZEROP(0x88)
  STA_ZEROP(0x48)
  /*JSR_ABSOL(0x2324,m2324)*/
  m2324();
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x43)
  LDA_ZEROP(0x45)
  CMP_IMMED(0x04)
  BCC(m2200)
  INY
m2200:
  STY_ZEROP(0x89)
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  STA_ZEROP(0x88)
  AND_IMMED(0x0C)
  BEQ(m2275)
  AND_IMMED(0x08)
  BNE(m2248)
  DEC_ZEROP(0x39)
  LDA_IMMED(0x06)
  STA_ABSOL(0x0CAC)
  LDX_IMMED(0xA8)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  LDA_ZEROP(0x88)
  LSR
  LSR
  LSR
  LSR
  CLC
  ADC_ZEROP(0x4E)
  TAX
  DEC_ABSOX(0x0510)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x89)
  /*JSR_ABSOL(0x22FE,m22FE)*/
  m22FE();
  LDA_ZEROP(0x50)
  LSR
  LSR
  CLC
  ADC_IMMED(0x01)
  CMP_IMMED(0x0A)
  BCC(m2240)
  LDA_IMMED(0x0A)
m2240:
  LDX_IMMED(0x05)
  /*JSR_ABSOL(0x1AB5,m1AB5)*/
  m1AB5();
  JMP_ABSOL(m2275)
m2248:
  LDA_IMMED(0x05)
  STA_ABSOL(0x0CAC)
  LDX_IMMED(0xA8)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  LDA_ZEROP(0x88)
  LSR
  LSR
  LSR
  LSR
  CLC
  ADC_ZEROP(0x4E)
  TAX
  DEC_ABSOX(0x0520)
  LDX_ZEROP(0x42)
  LDY_ZEROP(0x89)
  /*JSR_ABSOL(0x2311,m2311)*/
  m2311();
  LDA_IMMED(0x05)
  LDX_IMMED(0x06)
  /*JSR_ABSOL(0x1AB5,m1AB5)*/
  m1AB5();
  LDA_IMMED(0x14)
  STA_ZEROP(0x1C)
m2275:
  /*RTS*/
  return;
}

void m2276(void)
{
  LDA_ZEROP(0x46)
  BMI(m227E)
  BNE(m22BD)
  CLC
  /*RTS*/
  return;
m227E:
  LDA_ZEROP(0x40)
  CMP_IMMED(0x01)
  BCC(m22FC)
  LDA_ZEROP(0x44)
  CMP_IMMED(0x02)
  BCS(m22FA)
  LDA_ZEROP(0x47)
  CMP_IMMED(0x02)
  BEQ(m22FA)
  LDX_ZEROP(0x42)
  DEX
  LDY_ZEROP(0x43)
  LDA_ZEROP(0x45)
  CLC
  ADC_ZEROP(0x47)
  CMP_IMMED(0x08)
  BCC(m22A5)
  BPL(m22A4)
  DEY
  JMP_ABSOL(m22A5)
m22A4:
  INY
m22A5:
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  CMP_IMMED(0x01)
  BEQ(m22FC)
  LDA_ZEROP(0x47)
  BPL(m22FA)
  LDX_ZEROP(0x42)
  DEX
  INY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  CMP_IMMED(0x01)
  BEQ(m22FC)
  BNE(m22FA)
m22BD:
  LDA_ZEROP(0x40)
  CMP_IMMED(0x98)
  BCS(m22FC)
  LDA_ZEROP(0x44)
  CMP_IMMED(0x05)
  BCC(m22FA)
  LDA_ZEROP(0x47)
  CMP_IMMED(0x02)
  BEQ(m22FA)
  LDX_ZEROP(0x42)
  INX
  LDY_ZEROP(0x43)
  LDA_ZEROP(0x45)
  CLC
  ADC_ZEROP(0x47)
  CMP_IMMED(0x08)
  BCC(m22E4)
  BPL(m22E3)
  DEY
  JMP_ABSOL(m22E4)
m22E3:
  INY
m22E4:
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  CMP_IMMED(0x01)
  BEQ(m22FC)
  LDA_ZEROP(0x47)
  BPL(m22FA)
  LDX_ZEROP(0x42)
  INX
  INY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  CMP_IMMED(0x01)
  BEQ(m22FC)
m22FA:
  CLC
  /*RTS*/
  return;
m22FC:
  SEC
  /*RTS*/
}

void m22FE(void)
{
  TXA
  PHA
  LDA_IMMED(0x00)
  /*JSR_ABSOL(0x23E0,m23E0)*/
  m23E0();
  LDA_IMMED(0x02)
  STA_ZEROP(0x7F)
  PLA
  TAX
  LDA_IMMED(0x03)
  /*JSR_ABSOL(0x1A0C,m1A0C)*/
  m1A0C();
  /*RTS*/
}

void m2311(void)
{
  TXA
  PHA
  LDA_IMMED(0x00)
  /*JSR_ABSOL(0x23E0,m23E0)*/
  m23E0();
  LDA_IMMED(0x08)
  STA_ZEROP(0x7F)
  PLA
  TAX
  LDA_IMMED(0x04)
  /*JSR_ABSOL(0x1A0C,m1A0C)*/
  m1A0C();
  /*RTS*/
}

void m2324(void)
{
  LDX_IMMED(0x20)
  STX_ZEROP(0x7F)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  LDX_ZEROP(0x40)
  LDY_ZEROP(0x41)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  /*RTS*/
}

void m2336(void)
{
  LDX_IMMED(0x20)
  STX_ZEROP(0x7F)
  CLC
  ADC_IMMED(0x0F)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  LDX_ZEROP(0x30)
  LDY_ZEROP(0x31)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  /*RTS*/
}

void m234B(void)
{
  LDX_IMMED(0x80)
  STX_ZEROP(0x7F)
  LDX_ZEROP(0x88)
  LDA_ABSXP(0x0419)
  CLC
  ADC_IMMED(0x15)
  PHA
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  LDX_ZEROP(0x88)
  LDA_ABSXP(0x0400)
  LDY_ABSXP(0x0405)
  TAX
  PLA
  CMP_IMMED(0x1D)
  BCC(m236D)
  TXA
  SBC_IMMED(0x08)
  TAX
m236D:
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  /*RTS*/
}

void m2374(void)
{
  LDA_ZEROP(0x55)
  BEQ(m23C7)
  LDY_ZEROP(0x59)
  LDA_ZEROP(0x5B)
  BEQ(m2380)
  LDY_ZEROP(0x5A)
m2380:
  STY_ZEROP(0x89)
  LDA_IMMED(0x02)
  STA_ZEROP(0x7F)
  LDA_IMMED(0x05)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  LDX_ZEROP(0x58)
  LDY_ZEROP(0x89)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  INC_ZEROP(0x89)
  INC_ZEROP(0x89)
  LDA_ZEROP(0x89)
  CMP_IMMED(0xE0)
  BNE(m23A3)
  LDA_IMMED(0x06)
  STA_ZEROP(0x89)
m23A3:
  LDA_IMMED(0x05)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  LDX_ZEROP(0x58)
  LDY_ZEROP(0x89)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDA_ZEROP(0x5B)
  BEQ(m23BD)
  LDA_ZEROP(0x89)
  STA_ZEROP(0x5A)
  JMP_ABSOL(m23C1)
m23BD:
  LDA_ZEROP(0x89)
  STA_ZEROP(0x59)
m23C1:
  LDA_ZEROP(0x5B)
  EOR_IMMED(0xFF)
  STA_ZEROP(0x5B)
m23C7:
  /*RTS*/
   return;
}

void m23C8(void)
{
  CPY_IMMED(0x19)
  BCS(m23DD)
  CPX_IMMED(0x14)
  BCS(m23DD)
  /*JSR_ABSOL(0x23ED,m23ED)*/
  m23ED();
  BCS(m23D9)
  LDA_ABSXP(0x0600)
  /*RTS*/
  return;
m23D9:
  LDA_ABSXP(0x0700)
  /*RTS*/
  return;
m23DD:
  LDA_IMMED(0x00)
  /*RTS*/
}

void m23E0(void)
{
  /*JSR_ABSOL(0x23ED,m23ED)*/
  m23ED();
  BCS(m23E9)
  STA_ABSOX(0x0600)
  /*RTS*/
  return;
m23E9:
  STA_ABSOX(0x0700)
  /*RTS*/
}

void m23ED(void)
{
  PHA
  STY_ZEROP(0x8E)
  TYA
  ASL
  ASL
  ADC_ZEROP(0x8E)
  ASL
  ASL
  PHP
  CLC
  STA_ZEROP(0x8E)
  TXA
  ADC_ZEROP(0x8E)
  TAX
  BCS(m2404)
  PLP
  PLA
  /*RTS*/
  return;
m2404:
  PLA
  PLA
  /*RTS*/
}

void m2407(void)
{
  INC_ZEROP(0x38)
  LDA_ZEROP(0x38)
  CMP_IMMED(0x08)
  BNE(m2416)
  LDA_IMMED(0x00)
  STA_ZEROP(0x38)
  JMP_ABSOL(m2420)
m2416:
  CMP_IMMED(0x04)
  BNE(m241D)
  JMP_ABSOL(m269D)
m241D:
  JMP_ABSOL(m24B5)
m2420:
  LDA_ZEROP(0x34)
  AND_IMMED(0x02)
  STA_ZEROP(0x8B)
  LDA_ZEROP(0x35)
  BEQ(m2494)
  LDA_ZEROP(0x30)
  CLC
  ADC_IMMED(0x04)
  CMP_ZEROP(0x40)
  BCS(m2444)
  INC_ZEROP(0x32)
  LDA_ZEROP(0x32)
  CMP_IMMED(0x06)
  BMI(m243D)
  DEC_ZEROP(0x32)
m243D:
  LDA_IMMED(0x00)
  STA_ZEROP(0x8B)
  JMP_ABSOL(m2452)
m2444:
  DEC_ZEROP(0x32)
  LDA_ZEROP(0x32)
  CMP_IMMED(0xFB)
  BPL(m244E)
  INC_ZEROP(0x32)
m244E:
  LDA_IMMED(0x02)
  STA_ZEROP(0x8B)
m2452:
  LDA_ZEROP(0x41)
  CLC
  ADC_IMMED(0x04)
  CMP_ZEROP(0x31)
  BCC(m2468)
  INC_ZEROP(0x33)
  LDA_ZEROP(0x33)
  CMP_IMMED(0x06)
  BMI(m2465)
  DEC_ZEROP(0x33)
m2465:
  JMP_ABSOL(m2472)
m2468:
  DEC_ZEROP(0x33)
  LDA_ZEROP(0x33)
  CMP_IMMED(0xFB)
  BPL(m2472)
  INC_ZEROP(0x33)
m2472:
  LDA_ZEROP(0x31)
  CLC
  ADC_ZEROP(0x33)
  CMP_IMMED(0x28)
  BCS(m2483)
  LDA_ZEROP(0x33)
  EOR_IMMED(0xFF)
  STA_ZEROP(0x33)
  INC_ZEROP(0x33)
m2483:
  LDA_ZEROP(0x30)
  CLC
  ADC_ZEROP(0x32)
  CMP_IMMED(0x90)
  BCC(m2494)
  LDA_ZEROP(0x32)
  EOR_IMMED(0xFF)
  STA_ZEROP(0x32)
  INC_ZEROP(0x32)
m2494:
  LDA_ZEROP(0x34)
  /*JSR_ABSOL(0x2336,m2336)*/
  m2336();
  LDA_ZEROP(0x30)
  CLC
  ADC_ZEROP(0x32)
  STA_ZEROP(0x30)
  LDA_ZEROP(0x31)
  CLC
  ADC_ZEROP(0x33)
  STA_ZEROP(0x31)
  LDA_ZEROP(0x34)
  AND_IMMED(0x01)
  EOR_IMMED(0x01)
  ORA_ZEROP(0x8B)
  STA_ZEROP(0x34)
  /*JSR_ABSOL(0x2336,m2336)*/
  m2336();
  /*RTS*/
  return;
m24B5:
  DEC_ZEROP(0x36)
  LDX_ZEROP(0x36)
  BPL(m24BF)
  LDX_ZEROP(0x37)
  STX_ZEROP(0x36)
m24BF:
  CPX_ZEROP(0x57)
  BCC(m24C4)
  /*RTS*/
  return;
m24C4:
  STX_ZEROP(0x88)
  LDA_ABSXP(0x0414)
  CMP_IMMED(0x01)
  BNE(m24D0)
  JMP_ABSOL(m25EF)
m24D0:
  BCC(m24D5)
  JMP_ABSOL(m25B6)
m24D5:
  LDA_ABSXP(0x040A)
  STA_ZEROP(0x8B)
  LDA_ABSXP(0x040F)
  STA_ZEROP(0x8C)
  LDA_IMMED(0x00)
  STA_ZEROP(0x8D)
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  DEX
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BEQ(m24F2)
  STA_ZEROP(0x8D)
m24F2:
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  INX
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x01)
  BEQ(m2505)
  LDA_IMMED(0x02)
  ORA_ZEROP(0x8D)
  STA_ZEROP(0x8D)
m2505:
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  DEY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BEQ(m2517)
  LDA_IMMED(0x08)
  ORA_ZEROP(0x8D)
  STA_ZEROP(0x8D)
m2517:
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  INY
  INY
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  AND_IMMED(0x02)
  BEQ(m252A)
  LDA_IMMED(0x04)
  ORA_ZEROP(0x8D)
  STA_ZEROP(0x8D)
m252A:
  /*JSR_ABSOL(0x25A9,m25A9)*/
  m25A9();
  CPX_IMMED(0x01)
  BNE(m253B)
  LDA_ZEROP(0x8D)
  LDX_ZEROP(0x88)
  STA_ABSOX(0x041E)
  JMP_ABSOL(m257B)
m253B:
  LDX_ZEROP(0x88)
  LDA_ABSXP(0x041E)
  CMP_IMMED(0x04)
  BCS(m2549)
  EOR_IMMED(0xFC)
  JMP_ABSOL(m254B)
m2549:
  EOR_IMMED(0xF3)
m254B:
  AND_ZEROP(0x8D)
  STA_ZEROP(0x8D)
  /*JSR_ABSOL(0x25A9,m25A9)*/
  m25A9();
  CPX_IMMED(0x01)
  BNE(m2560)
  LDX_ZEROP(0x88)
  LDA_ZEROP(0x8D)
  STA_ABSOX(0x041E)
  JMP_ABSOL(m257B)
m2560:
  LDA_ZEROP(0x8D)
  STA_ZEROP(0x8E)
m2564:
  /*JSR_ABSOL(0x1AA4,m1AA4)*/
  m1AA4();
  LDA_ZEROP(0x66)
  AND_ZEROP(0x8E)
  STA_ZEROP(0x8D)
  /*JSR_ABSOL(0x25A9,m25A9)*/
  m25A9();
  CPX_IMMED(0x01)
  BNE(m2564)
  LDX_ZEROP(0x88)
  LDA_ZEROP(0x8D)
  STA_ABSOX(0x041E)
m257B:
  LDX_ZEROP(0x88)
  LDA_ABSXP(0x041E)
  AND_IMMED(0x03)
  BEQ(m25EF)
  AND_IMMED(0x01)
  BEQ(m2593)
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  DEX
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  JMP_ABSOL(m259B)
m2593:
  LDX_ZEROP(0x8B)
  LDY_ZEROP(0x8C)
  INX
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
m259B:
  AND_IMMED(0x08)
  BEQ(m25EF)
  LDX_ZEROP(0x88)
  LDA_IMMED(0x02)
  STA_ABSOX(0x0414)
  JMP_ABSOL(m25EF)
m25B6:
  CMP_IMMED(0x04)
  BNE(m25EF)
  LDA_ABSXP(0x041E)
  LDY_ABSXP(0x040A)
  STY_ZEROP(0x8B)
  LDY_ABSXP(0x040F)
  STY_ZEROP(0x8C)
  LDX_ZEROP(0x8B)
  DEX
  AND_IMMED(0x01)
  BNE(m25D0)
  INX
  INX
m25D0:
  STX_ZEROP(0x8D)
  /*JSR_ABSOL(0x23C8,m23C8)*/
  m23C8();
  STA_ZEROP(0x89)
  AND_IMMED(0x08)
  BEQ(m25EF)
  LDA_ZEROP(0x89)
  LSR
  LSR
  LSR
  LSR
  CLC
  ADC_ZEROP(0x4E)
  TAX
  DEC_ABSOX(0x0520)
  LDX_ZEROP(0x8D)
  LDY_ZEROP(0x8C)
  /*JSR_ABSOL(0x2311,m2311)*/
  m2311();
m25EF:
  /*JSR_ABSOL(0x234B,m234B)*/
  m234B();
  LDX_ZEROP(0x88)
  LDA_ABSXP(0x0414)
  CMP_IMMED(0x02)
  BCS(m2675)
  LDA_ABSXP(0x041E)
  LSR
  BCS(m2633)
  LSR
  BCS(m2649)
  LSR
  BCS(m261D)
  LDA_ABSXP(0x0405)
  SEC
  SBC_IMMED(0x04)
  STA_ABSOX(0x0405)
  LDA_ABSXP(0x0414)
  BEQ(m2618)
  DEC_ABSOX(0x040F)
m2618:
  LDA_IMMED(0x04)
  JMP_ABSOL(m265F)
m261D:
  LDA_ABSXP(0x0405)
  CLC
  ADC_IMMED(0x04)
  STA_ABSOX(0x0405)
  LDA_ABSXP(0x0414)
  BEQ(m262E)
  INC_ABSOX(0x040F)
m262E:
  LDA_IMMED(0x04)
  JMP_ABSOL(m265F)
m2633:
  LDA_ABSXP(0x0400)
  SEC
  SBC_IMMED(0x04)
  STA_ABSOX(0x0400)
  LDA_ABSXP(0x0414)
  BEQ(m2644)
  DEC_ABSOX(0x040A)
m2644:
  LDA_IMMED(0x02)
  JMP_ABSOL(m265F)
m2649:
  LDA_ABSXP(0x0400)
  CLC
  ADC_IMMED(0x04)
  STA_ABSOX(0x0400)
  LDA_ABSXP(0x0414)
  BEQ(m265A)
  INC_ABSOX(0x040A)
m265A:
  LDA_IMMED(0x00)
  JMP_ABSOL(m265F)
m265F:
  STA_ABSOX(0x0419)
  LDA_ABSXP(0x0414)
  EOR_IMMED(0x01)
  STA_ABSOX(0x0414)
  CLC
  ADC_ABSXP(0x0419)
  STA_ABSOX(0x0419)
  /*JSR_ABSOL(0x234B,m234B)*/
  m234B();
  /*RTS*/
  return;
m2675:
  LDA_ABSXP(0x0414)
  ASL
  AND_IMMED(0x1F)
  STA_ABSOX(0x0414)
  BEQ(m2682)
  LDA_IMMED(0x06)
m2682:
  LDY_ABSXP(0x041E)
  CPY_IMMED(0x01)
  BNE(m268C)
  CLC
  ADC_IMMED(0x02)
m268C:
  LDY_ABSXP(0x0414)
  CPY_IMMED(0x08)
  BNE(m2696)
  CLC
  ADC_IMMED(0x01)
m2696:
  STA_ABSOX(0x0419)
  /*JSR_ABSOL(0x234B,m234B)*/
  m234B();
  /*RTS*/
  return;
m269D:
  LDA_IMMED(0x08)
  STA_ZEROP(0x7F)
  LDA_ZEROP(0x1C)
  BEQ(m26A8)
  DEC_ZEROP(0x1C)
  /*RTS*/
  return;
m26A8:
  LDX_IMMED(0x02)
  STX_ZEROP(0x88)
m26AC:
  /*JSR_ABSOL(0x2702,m2702)*/
  m2702();
  LDX_ZEROP(0x88)
  DEC_ZEROX(0x1D)
  PHP
  BPL(m26BA)
  LDA_IMMED(0x09)
  STA_ZEROX(0x1D)
m26BA:
  /*JSR_ABSOL(0x2702,m2702)*/
  m2702();
  DEC_ZEROP(0x88)
  PLP
  BMI(m26AC)
  CLC
  LDA_ZEROP(0x1D)
  ADC_ZEROP(0x1E)
  ADC_ZEROP(0x1F)
  BNE(m26CE)
  INC_ZEROP(0x4F)
  /*RTS*/
  return;
m26CE:
  LDA_ZEROP(0x1F)
  BEQ(m26D7)
  CMP_IMMED(0x05)
  BEQ(m26D7)
  /*RTS*/
  return;
m26D7:
  LDA_ZEROP(0x3D)
  BEQ(m26DCx)
  /*RTS*/
  return;
m26DCx:
  /*JSR_ABSOL(0x26DC,m26DC)*/
  m26DC();
}

void m25A9(void)
{
  LDX_IMMED(0x00)
  LDA_ZEROP(0x8D)
m25AD:
  LSR
  BCC(m25B1)
  INX
m25B1:
  CMP_IMMED(0x00)
  BNE(m25AD)
  /*RTS*/
}

void m26DC(void)
{
  LDX_IMMED(0x02)
  STX_ZEROP(0x88)
m26E0:
  /*JSR_ABSOL(0x2715,m2715)*/
  m2715();
  LDX_ZEROP(0x88)
  DEC_ZEROX(0x3A)
  PHP
  BPL(m26EE)
  LDA_IMMED(0x09)
  STA_ZEROX(0x3A)
m26EE:
  /*JSR_ABSOL(0x2715,m2715)*/
  m2715();
  DEC_ZEROP(0x88)
  PLP
  BMI(m26E0)
  CLC
  LDA_ZEROP(0x3A)
  ADC_ZEROP(0x3B)
  ADC_ZEROP(0x3C)
  BNE(m2701)
  INC_ZEROP(0x3D)
m2701:
  /*RTS*/
  return;
}

void m2702(void)
{
  LDA_ZEROP(0x88)
  TAY
  ASL
  ASL
  ADC_ZEROP(0x88)
  ADC_IMMED(0x91)
  TAX
  LDA_ABSYP(0x001D)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  /*RTS*/
}

void m2715(void)
{
  LDA_ZEROP(0x88)
  TAY
  ASL
  ASL
  ADC_ZEROP(0x88)
  ADC_IMMED(0x66)
  TAX
  LDA_ABSYP(0x003A)
  LDY_IMMED(0xE7)
  /*JSR_ABSOL(0x1B01,m1B01)*/
  m1B01();
  /*RTS*/
}

void m2728(void)
{
  LDA_ZEROP(0x57)
  BEQ(m2758)
  LDA_IMMED(0x00)
  STA_ZEROP(0x8A)
m2730:
  LDX_ZEROP(0x8A)
  LDA_ABSXP(0x0400)
  SEC
  SBC_ZEROP(0x40)
  CLC
  ADC_IMMED(0x05)
  CMP_IMMED(0x0B)
  BCS(m2750)
  LDA_ABSXP(0x0405)
  SEC
  SBC_IMMED(0x01)
  SBC_ZEROP(0x41)
  CLC
  ADC_IMMED(0x0E)
  CMP_IMMED(0x1D)
  BCS(m2750)
  INC_ZEROP(0x4F)
m2750:
  INC_ZEROP(0x8A)
  LDA_ZEROP(0x8A)
  CMP_ZEROP(0x57)
  BCC(m2730)
m2758:
  LDA_ZEROP(0x35)
  BEQ(m277B)
  LDA_ZEROP(0x30)
  CLC
  ADC_IMMED(0x04)
  SEC
  SBC_ZEROP(0x40)
  CLC
  ADC_IMMED(0x05)
  CMP_IMMED(0x0B)
  BCS(m277B)
  LDA_ZEROP(0x31)
  SEC
  SBC_IMMED(0x05)
  SBC_ZEROP(0x41)
  CLC
  ADC_IMMED(0x0E)
  CMP_IMMED(0x1D)
  BCS(m277B)
  INC_ZEROP(0x4F)
m277B:
  /*RTS*/
  return;
}

void m277C(void)
{
  LDA_IMMED(0x00)
  STA_ZEROP(0x77)
  DEX
  TXA
  ASL
  ASL
  ASL
  ROL_ZEROP(0x77)
  ASL
  ROL_ZEROP(0x77)
  CLC
  ADC_IMMED(0x30)
  STA_ZEROP(0x76)
  LDA_ZEROP(0x77)
  ADC_IMMED(0x04)
  STA_ZEROP(0x77)
  /*RTS*/
}

void m2796(void)
{
  LDA_IMMED(0x0A)
  STA_ZEROP(0x8A)
m279A:
  LDX_ZEROP(0x8A)
  /*JSR_ABSOL(0x277C,m277C)*/
  m277C();
  LDY_IMMED(0x0F)
  LDA_IMMED(0x20)
m27A3:
  STA_POSTI(0x76)
  DEY
  CPY_IMMED(0x0A)
  BNE(m27A3)
  LDA_IMMED(0x46)
  STA_POSTI(0x76)
  DEY
  LDA_IMMED(0x26)
  STA_POSTI(0x76)
  DEY
  LDA_IMMED(0x41)
  STA_POSTI(0x76)
  DEY
  LDA_IMMED(0x00)
m27BB:
  STA_POSTI(0x76)
  DEY
  BPL(m27BB)
  LDA_IMMED(0x01)
  LDY_IMMED(0x04)
  STA_POSTI(0x76)
  DEC_ZEROP(0x8A)
  BNE(m279A)
  /*RTS*/
}

void m27CB(void)
{
  LDA_IMMED(0x01)
  STA_ZEROP(0x8A)
m27CF:
  LDX_ZEROP(0x8A)
  /*JSR_ABSOL(0x277C,m277C)*/
  m277C();
  LDY_IMMED(0x00)
m27D6:
  LDA_POSTI(0x76)
  CMP_ABSYP(0x0028)
  BMI(m27ED)
  BNE(m27E4)
  INY
  CPY_IMMED(0x08)
  BNE(m27D6)
m27E4:
  INC_ZEROP(0x8A)
  LDA_ZEROP(0x8A)
  CMP_IMMED(0x0B)
  BCC(m27CF)
  /*RTS*/
  return;
m27ED:
  /*JSR_ABSOL(0x2806,m2806)*/
  m2806();
  LDY_IMMED(0x07)
m27F2:
  LDA_ABSYP(0x0028)
  STA_POSTI(0x76)
  DEY
  BPL(m27F2)
  LDY_IMMED(0x0F)
  LDA_IMMED(0x20)
m27FE:
  STA_POSTI(0x76)
  DEY
  CPY_IMMED(0x07)
  BNE(m27FE)
  /*RTS*/
}

void m2806(void)
{
  LDA_IMMED(0x09)
  STA_ZEROP(0x8B)
m280A:
  LDX_ZEROP(0x8B)
  CPX_ZEROP(0x8A)
  BCC(m2832)
  /*JSR_ABSOL(0x277C,m277C)*/
  m277C();
  LDY_IMMED(0x0F)
m2815:
  LDA_POSTI(0x76)
  STA_ABSOY(0x0030)
  DEY
  BPL(m2815)
  LDX_ZEROP(0x8B)
  INX
  /*JSR_ABSOL(0x277C,m277C)*/
  m277C();
  LDY_IMMED(0x0F)
m2825:
  LDA_ABSYP(0x0030)
  STA_POSTI(0x76)
  DEY
  BPL(m2825)
  DEC_ZEROP(0x8B)
  JMP_ABSOL(m280A)
m2832:
  LDX_ZEROP(0x8A)
  /*JSR_ABSOL(0x277C,m277C)*/
  m277C();
  /*RTS*/
}

void m2838(void)
{
  /*show high scores*/
  LDA_IMMED(0x01)
  STA_ZEROP(0x8A)
  /*high scores*/
  LDX_IMMED(0x3F)
  LDY_IMMED(0x29)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_IMMED(0xC0)
  STA_ABSOL(0x295C)
  LDA_IMMED(0x02)
  STA_ABSOL(0x295D)
m284D:
  /*plot*/
  LDX_IMMED(0x57)
  LDY_IMMED(0x29)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_IMMED(0x20)
  LDX_ZEROP(0x8A)
  STX_ZEROP(0x8B)
  CPX_IMMED(0x0A)
  BNE(m2864)
  LDA_IMMED(0x31)
  LDX_IMMED(0x00)
  STX_ZEROP(0x8B)
m2864:
  OSWRCH
  LDA_ZEROP(0x8B)
  CLC
  ADC_IMMED(0x30)
  OSWRCH
  LDX_ZEROP(0x8A)
  /*JSR_ABSOL(0x277C,m277C)*/
  m277C();
  LDY_IMMED(0x00)
  STY_ZEROP(0x8B)
m2878:
  LDA_POSTI(0x76)
  BNE(m2885)
  LDX_ZEROP(0x8B)
  BNE(m2885)
  LDA_IMMED(0x20)
  JMP_ABSOL(m288A)
m2885:
  CLC
  ADC_IMMED(0x30)
  INC_ZEROP(0x8B)
m288A:
  OSWRCH
  INY
  CPY_IMMED(0x08)
  BCC(m2878)
  LDA_IMMED(0x20)
  OSWRCH
m2897:
  LDA_POSTI(0x76)
  OSWRCH
  INY
  CPY_IMMED(0x10)
  BCC(m2897)
  INC_ZEROP(0x8A)
  LDA_ZEROP(0x8A)
  CMP_IMMED(0x0B)
  BEQ(m28BD)
  LDA_ABSOL(0x295C)
  SEC
  SBC_IMMED(0x30)
  STA_ABSOL(0x295C)
  LDA_ABSOL(0x295D)
  SBC_IMMED(0x00)
  STA_ABSOL(0x295D)
  JMP_ABSOL(m284D)
m28BD:
  /*RTS*/
  return;
}

void m28BE(void)
{
  /*get name for high score table*/
  /*JSR_ABSOL(0x27CB,m27CB)*/
  m27CB();
  LDA_ZEROP(0x8A)
  CMP_IMMED(0x0B)
  BNE(m28C8)
  /*RTS*/
  return;
m28C8:
  STA_ZEROP(0x88)
  LDA_IMMED(0xC0)
  STA_ABSOL(0x2966)
  LDA_IMMED(0x02)
  STA_ABSOL(0x2967)
  LDA_ZEROP(0x88)
  SEC
  SBC_IMMED(0x01)
  BEQ(m28F0)
  TAX
m28DC:
  LDA_ABSOL(0x2966)
  SEC
  SBC_IMMED(0x30)
  STA_ABSOL(0x2966)
  LDA_ABSOL(0x2967)
  SBC_IMMED(0x00)
  STA_ABSOL(0x2967)
  DEX
  BNE(m28DC)
m28F0:
  LDX_IMMED(0x69)
  LDY_IMMED(0x29)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_ZEROP(0x5D)
  CLC
  ADC_IMMED(0x31)
  OSWRCH
  /*JSR_ABSOL(0x2838,m2838)*/
  m2838();
  LDX_IMMED(0x5E)
  LDY_IMMED(0x29)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_IMMED(0x04)
  LDX_IMMED(0x01)
  OSBYTE
  LDA_IMMED(0x0F)
  LDX_IMMED(0x01)
  OSBYTE
  LDA_IMMED(0xE5)
  LDX_IMMED(0x01)
  LDY_IMMED(0x00)
  OSBYTE
  /*read line*/
  LDX_IMMED(0x9D)
  LDY_IMMED(0x29)
  LDA_IMMED(0x00)
  OSWORD
  LDX_ZEROP(0x88)
  /*JSR_ABSOL(0x277C,m277C)*/
  m277C();
  LDY_IMMED(0x08)
m2930:
  /*&29A2*/
  LDA_ABSYP(0x299A)
  CMP_IMMED(0x0D)
  BEQ(m293E)
  STA_POSTI(0x76)
  INY
  CPY_IMMED(0x10)
  BCC(m2930)
m293E:
  /*RTS*/
  return;
}

void m2ACD(void)
{
  LDA_IMMED(0xC8)
  LDX_IMMED(0x02)
  LDY_IMMED(0x00)
  OSBYTE
  LDX_IMMED(0x00)
m2AD8:
  LDA_ABSXP(0x3000)
  STA_ABSOX(0x0900)
  LDA_ABSXP(0x3100)
  STA_ABSOX(0x0A00)
  LDA_ABSXP(0x3200)
  STA_ABSOX(0x0B00)
  LDA_ABSXP(0x3300)
  STA_ABSOX(0x0C00)
  LDA_ABSXP(0x3400)
  STA_ABSOX(0x0D00)
  LDA_ABSXP(0x3500)
  STA_ABSOX(0x0E00)
  LDA_ABSXP(0x3600)
  STA_ABSOX(0x0F00)
  LDA_ABSXP(0x3700)
  STA_ABSOX(0x1000)
  DEX
  BNE(m2AD8)
  LDA_IMMED(0x16)
  OSWRCH
  LDA_IMMED(0x02)
  OSWRCH
  WAIT_FOR_VERTICAL_SYNC
  bbc_video_mode = 0x02;
  bbc_video_addr = 0x3000;
  getscreenaddress();
  LDA_IMMED(0x05)
  OSWRCH
  LDA_IMMED(0x05)
  OSWRCH
  /*set up default keys*/
  LDA_IMMED(0x9D)
  STA_ZEROP(0x65)
  LDA_IMMED(0xBE)
  STA_ZEROP(0x64)
  LDA_IMMED(0x9E)
  STA_ZEROP(0x63)
  LDA_IMMED(0x99)
  STA_ZEROP(0x62)
  LDA_IMMED(0x98)
  STA_ZEROP(0x61)
  #ifndef __ORIGINAL__
    hfile = fopen("<ChuckieEgg$Dir>.Keys","rb");
    if (hfile != NULL)
    {
      fread(memory+0x0061,1,0x05,hfile);
      fclose(hfile);
    }
  #endif
  /*JSR_ABSOL(0x2796,m2796)*/
  m2796();
  LDX_IMMED(0xC7)
  LDY_IMMED(0x2F)
  LDA_IMMED(0x08)
  OSWORD
  LDX_IMMED(0xD5)
  LDY_IMMED(0x2F)
  LDA_IMMED(0x08)
  OSWORD
  LDX_IMMED(0xE3)
  LDY_IMMED(0x2F)
  LDA_IMMED(0x08)
  OSWORD
  LDX_IMMED(0x0F)
  STX_ZEROP(0x88)
m2B55:
  LDX_ZEROP(0x88)
  STX_ABSOL(0x2B6E)
  LDA_ABSXP(0x2B73)
  STA_ABSOL(0x2B6F)
  LDX_IMMED(0x6C)
  LDY_IMMED(0x2B)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  DEC_ZEROP(0x88)
  BPL(m2B55)
  /*RTS*/
}

void m2DFE(void)
{
  LDA_ZEROP(0x5D)
  ASL
  ASL
  ASL
  ASL
  ASL
  ASL
  TAX
  LDA_ZEROP(0x50)
  CLC
  ADC_IMMED(0x01)
  CMP_IMMED(0x0A)
  BCC(m2E12)
  LDA_IMMED(0x09)
m2E12:
  STA_ABSOX(0x0508)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0509)
  STA_ABSOX(0x050A)
  STA_ABSOX(0x050B)
  LDY_IMMED(0x10)
m2E22:
  STA_ABSOX(0x0510)
  STA_ABSOX(0x0520)
  INX
  DEY
  BNE(m2E22)
  /*RTS*/
}

void m2BF6(void)
{
  /*number of players*/
  LDX_IMMED(0x03)
m2BF8:
  /*set up level*/
  LDA_IMMED(initial_level)
  STA_ZEROX(0x24)
  /*set up lives*/
  LDA_IMMED(initial_lives)
  STA_ZEROX(0x20)
  DEX
  BPL(m2BF8)
  LDX_IMMED(0x03)
  STX_ZEROP(0x88)
m2C07:
  TXA
  ASL
  ASL
  ASL
  ASL
  ASL
  ASL
  TAX
  LDY_IMMED(0x07)
  LDA_IMMED(0x00)
m2C13:
  STA_ABSOX(0x0500)
  INX
  DEY
  BPL(m2C13)
  DEC_ZEROP(0x88)
  LDX_ZEROP(0x88)
  BPL(m2C07)
  LDA_IMMED(0x00)
  STA_ZEROP(0x50)
  LDA_IMMED(0x04)
  STA_ZEROP(0x5D)
m2C28:
  DEC_ZEROP(0x5D)
  /*JSR_ABSOL(0x2DFE,m2DFE)*/
  m2DFE();
  LDA_ZEROP(0x5D)
  BNE(m2C28)
  /*JSR_ABSOL(0x2E2D,m2E2D)*/
  m2E2D();
  LDA_IMMED(0x1A)
  OSWRCH
  /*RTS*/
}

void m2C54(void)
{
  /*delay loop*/
  STA_ZEROP(0x8A)
m2C56:
  LDY_IMMED(0x00)
  LDX_IMMED(0x00)
/*m2C5A:*/
  /*DEX*/ /*2 cycles*/
  /*BNE(m2C5A)*/ /*3 cycles*/
  /*DEY*/ /*2 cycles*/
  /*BNE(m2C5A)*/ /*3 cycles*/
  /*slow down*/
  timer = clock() + 20;
  while (clock() < timer)
  {
  }
  DEC_ZEROP(0x8A)
  BNE(m2C56)
  /*RTS*/
}

void m2C65(void)
{
  /*title screens*/
  /*TSX*/
  showscreens = TRUE;
  STX_ZEROP(0x1B)
  /*JSR_ABSOL(0x2C6B,m2CCE)*/
  m2CCE();
  /*JSR_ABSOL(0x2C6B,m2C6B)*/
  m2C6B();
}

void m2C6B(void)
{
  /*flips through the title screens*/
/*m2C6B:*/
  do
  {
  LDA_IMMED(0x10)
  OSWRCH
  /*JSR_ABSOL(0x2CDB,m2CDB)*/
  m2CDB();
  /*JSR_ABSOL(0x2838,m2838)*/
  m2838();
  /*JSR_ABSOL(0x2D3A,m2D3A)*/
  m2D3A();
  LDA_IMMED(0x1E)
  STA_ZEROP(0x8A)
m2C7D:
  /*JSR_ABSOL(0x2DA6,m2DA6)*/
  m2DA6(); /*delay*/
  if (!showscreens)
    return;
  DEC_ZEROP(0x8A)
  BNE(m2C7D)
  /*JSR_ABSOL(0x2CBC,m2CBC)*/
  m2CBC();
  LDA_IMMED(0x14)
  STA_ZEROP(0x8A)
m2C8B:
  /*JSR_ABSOL(0x2DA6,m2DA6)*/
  m2DA6(); /*delay*/
  if (!showscreens)
    return;
  DEC_ZEROP(0x8A)
  BNE(m2C8B)
  LDA_IMMED(0x10)
  OSWRCH
  /*JSR_ABSOL(0x2CDB,m2CDB)*/
  m2CDB();
  /*JSR_ABSOL(0x3000,m3000)*/
  m3000();
  /*JSR_ABSOL(0x2D3A,m2D3A)*/
  m2D3A();
  LDA_IMMED(0x1E)
  STA_ZEROP(0x8A)
m2CA4:
  /*JSR_ABSOL(0x2DA6,m2DA6)*/
  m2DA6(); /*delay*/
  if (!showscreens)
    return;
  DEC_ZEROP(0x8A)
  BNE(m2CA4)
  /*JSR_ABSOL(0x2CBC,m2CBC)*/
  m2CBC();
  LDA_IMMED(0x14)
  STA_ZEROP(0x8A)
m2CB2:
  /*JSR_ABSOL(0x2DA6,m2DA6)*/
  m2DA6(); /*delay*/
  if (!showscreens)
    return;
  DEC_ZEROP(0x8A)
  BNE(m2CB2)
  /*JMP_ABSOL(m2C6B)*/
  /*JSR_ABSOL(0x2CB9,m2DA6)*/
  /*m2DA6();*/
  /*JMP_ABSOL(m2C6B)*/
  }
  while (showscreens);
}

void m2CBC(void)
{
  /*JSR_ABSOL(0x2CBC,m1AA4)*/
  m1AA4();
  LDA_ZEROP(0x66)
  AND_IMMED(0x07)
  STA_ZEROP(0x50)
  STA_ZEROP(0x5C)
  /*JSR_ABSOL(0x1B33,m1B33)*/
  m1B33();
  /*JSR_ABSOL(0x2E92,m2E92)*/
  m2E92();
  /*RTS*/
}

void m2CCE(void)
{
  LDA_IMMED(0x04)
  STA_ZEROP(0x5E)
  STA_ZEROP(0x5F)
  /*JSR_ABSOL(0x2BF6,m2BF6)*/
  m2BF6();
  /*JSR_ABSOL(0x2DC0,m2DC0)*/
  m2DC0();
  /*RTS*/
}

void m2CDB(void)
{
  LDA_IMMED(0x02)
  STA_ZEROP(0x7F)
  LDA_IMMED(0x30)
  LDX_IMMED(0x02)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x31)
  LDX_IMMED(0x11)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x32)
  LDX_IMMED(0x20)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x30)
  LDX_IMMED(0x2F)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x33)
  LDX_IMMED(0x3E)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x34)
  LDX_IMMED(0x4D)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x35)
  LDX_IMMED(0x5C)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x35)
  LDX_IMMED(0x72)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x36)
  LDX_IMMED(0x81)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  LDA_IMMED(0x36)
  LDX_IMMED(0x90)
  LDY_IMMED(0xF0)
  /*JSR_ABSOL(0x2DB4,m2DB4)*/
  m2DB4();
  /*RTS*/
}

void m2D3A(void)
{
  LDX_IMMED(0x42)
  LDY_IMMED(0x2D)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  /*RTS*/
}

void m2D7E(void)
{
  /*check for key presses*/
  /*scan for 's' key*/
  LDA_IMMED(0x81)
  LDX_IMMED(0xAE)
  LDY_IMMED(0xFF)
  OSBYTE81
  CPY_IMMED(0x00)
  BEQ(m2D8F)
  LDX_ZEROP(0x1B)
  /*TXS*/
  showscreens = FALSE;
  /*RTS*/
  return;
m2D8F:
  /*scan for 'k' key*/
  LDA_IMMED(0x81)
  LDX_IMMED(0xB9)
  LDY_IMMED(0xFF)
  OSBYTE81
  CPY_IMMED(0x00)
  BNE(m2D9D)

  /*scan for 'escape' key*/
  regs.r[0] = 0x81;
  regs.r[1] = 0x8F;
  regs.r[2] = 0xFF;
  _kernel_swi(OS_Byte,&regs,&regs);
  if (regs.r[1] == 0xFF)
  {
    showscreens = FALSE;
    quit = TRUE;
    return;
  }

  /*RTS*/
  return;
m2D9D:
  /*k has been pressed*/
  LDX_ZEROP(0x1B)
  /*TXS*/
  showscreens = FALSE;
  /*JSR_ABSOL(0x0903,m0903)*/
  /*JSR_ABSOL(0x2DA3,m3003)*/
  m3003();
  /*JMP_ABSOL(m2C6B)*/
  /*JSR_ABSOL(0x2DA6,m2C6B)*/
  /*m2C6B();*/
  showscreens = TRUE;
  return;
}

void m2DC0(void)
{
  LDA_ZEROP(0x50)
  AND_IMMED(0x07)
  STA_ZEROP(0x5C)
  LDA_ZEROP(0x50)
  LSR
  LSR
  LSR
  STA_ZEROP(0x4D)
  LDA_IMMED(0x00)
  STA_ZEROP(0x35)
  LDA_ZEROP(0x4D)
  BEQ(m2DD7)
  INC_ZEROP(0x35)
m2DD7:
  LDA_IMMED(0x00)
  STA_ZEROP(0x38)
  LDA_IMMED(0x00)
  STA_ZEROP(0x36)
  LDA_IMMED(0x08)
  LDX_ZEROP(0x4D)
  CPX_IMMED(0x04)
  BCC(m2DE9)
  LDA_IMMED(0x05)
m2DE9:
  STA_ZEROP(0x37)
  LDA_IMMED(0x00)
  STA_ZEROP(0x3E)
  STA_ZEROP(0x4F)
  STA_ZEROP(0x1C)
  LDA_IMMED(0x76)
  STA_ZEROP(0x66)
  STA_ZEROP(0x67)
  STA_ZEROP(0x68)
  STA_ZEROP(0x69)
  /*RTS*/
}

void m2DA6(void)
{
  /*delay timer*/
  /*JSR_ABSOL(0x2DA9,m2D7E)*/
  m2D7E();
  if (showscreens)
  {
    LDX_IMMED(0x00)
    LDY_IMMED(0x00)
/*m2DAD:*/
    /*DEX*/ /*2 cycles*/
    /*BNE(m2DAD)*/ /*3 cycles*/
    /*DEY*/ /*2 cycles*/
    /*BNE(m2DAD)*/ /*3 cycles*/
    timer = clock() + 20;
    /*slow down*/
    while (clock() < timer)
    {
    }
  }
  /*RTS*/
}

void m2DB4(void)
{
  PHA
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  PLA
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  /*RTS*/
}

void m2E2D(void)
{
  LDX_ZEROP(0x5D)
  LDA_ZEROX(0x24)
  STA_ZEROP(0x50)
  TXA
  ASL
  ASL
  ASL
  ASL
  ASL
  ASL
  STA_ZEROP(0x4E)
  TAX
  LDY_IMMED(0x00)
m2E3F:
  LDA_ABSXP(0x0500)
  STA_ABSOY(0x0028)
  INX
  INY
  CPY_IMMED(0x08)
  BCC(m2E3F)
  LDX_ZEROP(0x4E)
  LDY_IMMED(0x00)
m2E4F:
  LDA_ABSXP(0x0508)
  STA_ABSOY(0x003A)
  INX
  INY
  CPY_IMMED(0x04)
  BCC(m2E4F)
  LDX_ZEROP(0x5D)
  LDA_IMMED(0x00)
  CLC
m2E60:
  ADC_IMMED(0x22)
  DEX
  BPL(m2E60)
  SEC
  SBC_IMMED(0x15)
  STA_ZEROP(0x3F)
  /*RTS*/
}

void m2E6B(void)
{
  LDX_ZEROP(0x5D)
  LDA_ZEROP(0x50)
  STA_ZEROX(0x24)
  LDX_ZEROP(0x4E)
  LDY_IMMED(0x00)
m2E75:
  LDA_ABSYP(0x0028)
  STA_ABSOX(0x0500)
  INX
  INY
  CPY_IMMED(0x08)
  BCC(m2E75)
  LDX_ZEROP(0x4E)
  LDY_IMMED(0x00)
m2E85:
  LDA_ABSYP(0x003A)
  STA_ABSOX(0x0508)
  INX
  INY
  CPY_IMMED(0x04)
  BCC(m2E85)
  /*RTS*/
}

void m2E92(void)
{
  LDA_ZEROP(0x55)
  BEQ(m2EC4)
  LDA_IMMED(0x08)
  STA_ZEROP(0x59)
  LDA_IMMED(0x5A)
  STA_ZEROP(0x5A)
  LDA_IMMED(0x00)
  STA_ZEROP(0x5B)
  LDA_IMMED(0x02)
  STA_ZEROP(0x7F)
  LDA_IMMED(0x05)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  LDX_ZEROP(0x58)
  LDY_ZEROP(0x59)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  LDA_IMMED(0x05)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  LDX_ZEROP(0x58)
  LDY_ZEROP(0x5A)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
m2EC4:
  LDA_IMMED(0x04)
  STA_ZEROP(0x30)
  LDA_IMMED(0xCC)
  STA_ZEROP(0x31)
  LDA_IMMED(0x00)
  STA_ZEROP(0x32)
  STA_ZEROP(0x33)
  STA_ZEROP(0x34)
  /*JSR_ABSOL(0x2336,m2336)*/
  m2336();
  LDX_IMMED(0xFF)
  STX_ZEROP(0x88)
  LDA_ZEROP(0x4D)
  CMP_IMMED(0x01)
  BNE(m2EE5)
  LDX_IMMED(0x00)
  STX_ZEROP(0x57)
m2EE5:
  CMP_IMMED(0x03)
  BCC(m2EED)
  LDX_IMMED(0x05)
  STX_ZEROP(0x57)
m2EED:
  INC_ZEROP(0x88)
  LDX_ZEROP(0x88)
  CPX_ZEROP(0x57)
  BCS(m2F1D)
  LDA_ABSXP(0x040A)
  ASL
  ASL
  ASL
  STA_ABSOX(0x0400)
  LDA_ABSXP(0x040F)
  ASL
  ASL
  ASL
  CLC
  ADC_IMMED(0x14)
  STA_ABSOX(0x0405)
  LDA_IMMED(0x00)
  STA_ABSOX(0x0414)
  STA_ABSOX(0x0419)
  LDA_IMMED(0x02)
  STA_ABSOX(0x041E)
  /*JSR_ABSOL(0x234B,m234B)*/
  m234B();
  JMP_ABSOL(m2EED)
m2F1D:
  LDA_IMMED(0x03)
  /*JSR_ABSOL(0x2C54,m2C54)*/
  m2C54();
  LDA_IMMED(0x3C)
  STA_ZEROP(0x40)
  LDA_IMMED(0x20)
  STA_ZEROP(0x41)
  LDA_IMMED(0x06)
  STA_ZEROP(0x48)
  /*JSR_ABSOL(0x2324,m2324)*/
  m2324();
  LDA_IMMED(0x07)
  STA_ZEROP(0x42)
  STA_ZEROP(0x44)
  LDA_IMMED(0x02)
  STA_ZEROP(0x43)
  LDA_IMMED(0x00)
  STA_ZEROP(0x45)
  STA_ZEROP(0x49)
  LDA_IMMED(0x01)
  STA_ZEROP(0x4C)
  /*JSR_ABSOL(0x2F5A,m2F5A)*/
  m2F5A();
  /*RTS*/
}

void m2F49(void)
{
  LDA_ZEROP(0x3E)
  BNE(m2F4E)
  /*RTS*/
  return;
m2F4E:
  LDA_IMMED(0x00)
  STA_ZEROP(0x3E)
  /*JSR_ABSOL(0x2F5A,m2F5A)*/
  m2F5A();
  LDX_ZEROP(0x5D)
  INC_ZEROX(0x20)
  /*RTS*/
}

void m2F5A(void)
{
  LDA_IMMED(0x20)
  STA_ZEROP(0x7F)
  LDX_ZEROP(0x5D)
  LDA_ZEROX(0x20)
  CMP_IMMED(0x09)
  BCC(m2F67)
  /*RTS*/
  return;
m2F67:
  ASL
  ASL
  ADC_ZEROP(0x3F)
  ADC_IMMED(0x0A)
  TAX
  LDY_IMMED(0xEE)
  /*JSR_ABSOL(0x1987,m1987)*/
  m1987();
  LDA_IMMED(0x2F)
  /*JSR_ABSOL(0x19DB,m19DB)*/
  m19DB();
  /*JSR_ABSOL(0x1902,m1902)*/
  m1902();
  /*RTS*/
}

void m2F7C(void)
{
  /*play death tune*/
  int duration;

  STX_ZEROP(0x76)
  STY_ZEROP(0x77)
  LDY_IMMED(0x00)
  STY_ZEROP(0x89)
  LDA_POSTI(0x76)
  STA_ZEROP(0x8A)
m2F88:
  LDY_ZEROP(0x89)
  INY
  LDA_POSTI(0x76)
  STA_ABSOL(0x0CA4)
  INY
  LDA_POSTI(0x76)
  STA_ABSOL(0x0CA6)
  STY_ZEROP(0x89)
  /*make the notes play longer*/
  duration = ((memory[0x0CA7] << 8) | memory[0x0CA6]) << 1;
  memory[0x0CA7] = ((duration & 0xFF00) >> 8);
  memory[0x0CA6] = (duration & 0x00FF);
  LDX_IMMED(0xA0)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  timer = clock() + (duration << 1);
  while (clock() < timer)
  {
  }

  DEC_ZEROP(0x8A)
  BNE(m2F88)
  /*RTS*/
}

void m3000(void)
{
  /*displays the keys*/
  /*JMP_ABSOL(m3298)
m3298:*/
  LDX_IMMED(0xF8)
  LDY_IMMED(0x0B)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_IMMED(0xAC)
  LDX_IMMED(0x00)
  LDY_IMMED(0xFF)
  OSBYTEAC
  STX_ZEROP(0x76)
  STY_ZEROP(0x77)
  LDX_IMMED(0xDC)
  LDY_IMMED(0x0A)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_ZEROP(0x64)
  /*JSR_ABSOL(0x32F0,m32F0)*/
  m32F0();
  LDX_IMMED(0xE9)
  LDY_IMMED(0x0A)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_ZEROP(0x63)
  /*JSR_ABSOL(0x32F0,m32F0)*/
  m32F0();
  LDX_IMMED(0xF8)
  LDY_IMMED(0x0A)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_ZEROP(0x62)
  /*JSR_ABSOL(0x32F0,m32F0)*/
  m32F0();
  LDX_IMMED(0x07)
  LDY_IMMED(0x0B)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_ZEROP(0x61)
  /*JSR_ABSOL(0x32F0,m32F0)*/
  m32F0();
  LDX_IMMED(0x17)
  LDY_IMMED(0x0B)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  LDA_ZEROP(0x65)
  /*JSR_ABSOL(0x32F0,m32F0)*/
  m32F0();
  LDX_IMMED(0x09)
  LDY_IMMED(0x0C)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  /*RTS*/
}

void m3003(void)
{
  /*key selection*/
  /*wait for key press to be flushed*/
  timer = clock() + 20;
  while (clock() < timer)
  {
  }
  LDX_IMMED(0xB2)
  LDY_IMMED(0x0A)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  /*read address of keyboard translation table*/
  LDA_IMMED(0xAC)
  LDX_IMMED(0x00)
  LDY_IMMED(0xFF)
  OSBYTEAC
  STX_ZEROP(0x76)
  STY_ZEROP(0x77)
  LDA_IMMED(0x00)
  STA_ZEROP(0x60) /*key sequence number*/
  LDA_IMMED(0x54)
  STA_ZEROP(0x28)
  LDX_IMMED(0xDC)
  LDY_IMMED(0x0A)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  /*JSR_ABSOL(0x095C,m095C)*/
  /*JSR_ABSOL(0x3028,m305C)*/
  m305C();
  STA_ZEROP(0x64)
  LDX_IMMED(0xE9)
  LDY_IMMED(0x0A)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  /*JSR_ABSOL(0x095C,m095C)*/
  /*JSR_ABSOL(0x3035,m305C)*/
  m305C();
  STA_ZEROP(0x63)
  LDX_IMMED(0xF8)
  LDY_IMMED(0x0A)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  /*JSR_ABSOL(0x095C,m095C)*/
  /*JSR_ABSOL(0x3041,m305C)*/
  m305C();
  STA_ZEROP(0x62)
  LDX_IMMED(0x07)
  LDY_IMMED(0x0B)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  /*JSR_ABSOL(0x095C,m095C)*/
  /*JSR_ABSOL(0x305A,m305C)*/
  m305C();
  STA_ZEROP(0x61)
  LDX_IMMED(0x17)
  LDY_IMMED(0x0B)
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
  /*JSR_ABSOL(0x095C,m095C)*/
  /*JSR_ABSOL(0x3059,m305C)*/
  m305C();
  STA_ZEROP(0x65)
  /*RTS*/
}

void m305C(void)
{
m305C:
  LDA_IMMED(0x79)
  LDX_IMMED(0x80)
  OSBYTE
  TXA
  BPL(m306B)
  LDX_IMMED(0x00)
  JMP_ABSOL(m3083)
m306B:
  LDA_IMMED(0x79)
  LDX_IMMED(0x81)
  OSBYTE
  TXA
  BPL(m307A)
  LDX_IMMED(0x01)
  JMP_ABSOL(m3083)
m307A:
  LDA_IMMED(0x7A)
  OSBYTE7A
  CPX_IMMED(0xFF)
  BEQ(m305C)
m3083:
  /*store key press*/
  STX_ZEROP(0x88)
  TXA
  EOR_IMMED(0xFF)
  STA_ZEROP(0x89)
  LDY_ZEROP(0x60)
  TXA
  AND_IMMED(0x0F)
  STA_ZEROP(0x8B)
  TXA
  AND_IMMED(0xF0)
  STA_ZEROP(0x8C)
  LDA_IMMED(0x00)
  STA_ZEROP(0x8D)
  STA_ZEROP(0x8E)
m309C:
  TXA
  CMP_ABSYP(0x0028)
  BEQ(m305C)
  LDA_ABSYP(0x0028)
  AND_IMMED(0x0F)
  CMP_ZEROP(0x8B)
  BNE(m30AD)
  INC_ZEROP(0x8D)
m30AD:
  LDA_ABSYP(0x0028)
  AND_IMMED(0xF0)
  CMP_ZEROP(0x8C)
  BNE(m30B8)
  INC_ZEROP(0x8E)
m30B8:
  DEY
  BPL(m309C)
  LDA_ZEROP(0x8D)
  BEQ(m30D4)
  LDA_ZEROP(0x8E)
  BEQ(m30D4)
  LDA_IMMED(0xD6)
  LDX_IMMED(0x01)
  LDY_IMMED(0x00)
  OSBYTE
  LDA_IMMED(0x07)
  OSWRCH
  JMP_ABSOL(m305C)
m30D4:
  INC_ZEROP(0x60)
  LDY_ZEROP(0x60)
  TXA
  STA_ABSOY(0x0028)
  CPX_IMMED(0x02)
  BCS(m30F2)
  CPX_IMMED(0x00)
  BNE(m30EB)
  LDX_IMMED(0x8A)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m30EB:
  LDX_IMMED(0x90)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m30F2:
  LDY_ZEROP(0x88)
  LDA_POSTI(0x76) /*address of keyboard translation table + r6502_y*/
  CMP_IMMED(0x21)
  BCC(m3110)
  CMP_IMMED(0x7F)
  BCS(m3110)
  PHA
  LDA_IMMED(0x27)
  OSWRCH
  PLA
  OSWRCH
  LDA_IMMED(0x27)
  OSWRCH
  JMP_ABSOL(m31AF)
m3110:
  CMP_IMMED(0x00)
  BNE(m311B)
  LDX_IMMED(0x26)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m311B:
  CMP_IMMED(0x01)
  BNE(m3126)
  LDX_IMMED(0x2A)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3126:
  CMP_IMMED(0x02)
  BNE(m3131)
  LDX_IMMED(0x34)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3131:
  CMP_IMMED(0x1B)
  BNE(m313C)
  LDX_IMMED(0x3F)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m313C:
  CMP_IMMED(0x20)
  BNE(m3147)
  LDX_IMMED(0x46)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3147:
  CMP_IMMED(0x7F)
  BNE(m3152)
  LDX_IMMED(0x4C)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3152:
  CMP_IMMED(0x0D)
  BNE(m315D)
  LDX_IMMED(0x53)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m315D:
  CMP_IMMED(0x8B)
  BNE(m3168)
  LDX_IMMED(0x5A)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3168:
  CMP_IMMED(0x8C)
  BNE(m3173)
  LDX_IMMED(0x5F)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3173:
  CMP_IMMED(0x8D)
  BNE(m317E)
  LDX_IMMED(0x6A)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m317E:
  CMP_IMMED(0x8E)
  BNE(m3189)
  LDX_IMMED(0x76)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3189:
  CMP_IMMED(0x8F)
  BNE(m3194)
  LDX_IMMED(0x81)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3194:
  CMP_IMMED(0x80)
  BCC(m31AF)
  CMP_IMMED(0x8A)
  BCS(m31AF)
  PHA
  LDA_IMMED(0x66)
  OSWRCH
  PLA
  SEC
  SBC_IMMED(0x50)
  OSWRCH
  JMP_ABSOL(m31AF)
m31AC:
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
m31AF:
  LDA_ZEROP(0x89)
  /*RTS*/
}

void m32F0(void)
{
  EOR_IMMED(0xFF)
  TAX
  STA_ZEROP(0x88)
  /*JMP_ABSOL(m30DC)
m30DC:*/
  CPX_IMMED(0x02)
  BCS(m30F2)
  CPX_IMMED(0x00)
  BNE(m30EB)
  LDX_IMMED(0x8A)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m30EB:
  LDX_IMMED(0x90)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m30F2:
  LDY_ZEROP(0x88)
  LDA_POSTI(0x76)
  CMP_IMMED(0x21)
  BCC(m3110)
  CMP_IMMED(0x7F)
  BCS(m3110)
  PHA
  LDA_IMMED(0x27)
  OSWRCH
  PLA
  OSWRCH
  LDA_IMMED(0x27)
  OSWRCH
  JMP_ABSOL(m31AF)
m3110:
  CMP_IMMED(0x00)
  BNE(m311B)
  LDX_IMMED(0x26)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m311B:
  CMP_IMMED(0x01)
  BNE(m3126)
  LDX_IMMED(0x2A)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3126:
  CMP_IMMED(0x02)
  BNE(m3131)
  LDX_IMMED(0x34)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3131:
  CMP_IMMED(0x1B)
  BNE(m313C)
  LDX_IMMED(0x3F)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m313C:
  CMP_IMMED(0x20)
  BNE(m3147)
  LDX_IMMED(0x46)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3147:
  CMP_IMMED(0x7F)
  BNE(m3152)
  LDX_IMMED(0x4C)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3152:
  CMP_IMMED(0x0D)
  BNE(m315D)
  LDX_IMMED(0x53)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m315D:
  CMP_IMMED(0x8B)
  BNE(m3168)
  LDX_IMMED(0x5A)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3168:
  CMP_IMMED(0x8C)
  BNE(m3173)
  LDX_IMMED(0x5F)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3173:
  CMP_IMMED(0x8D)
  BNE(m317E)
  LDX_IMMED(0x6A)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m317E:
  CMP_IMMED(0x8E)
  BNE(m3189)
  LDX_IMMED(0x76)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3189:
  CMP_IMMED(0x8F)
  BNE(m3194)
  LDX_IMMED(0x81)
  LDY_IMMED(0x0B)
  JMP_ABSOL(m31AC)
m3194:
  CMP_IMMED(0x80)
  BCC(m31AF)
  CMP_IMMED(0x8A)
  BCS(m31AF)
  PHA
  LDA_IMMED(0x66)
  OSWRCH
  PLA
  SEC
  SBC_IMMED(0x50)
  OSWRCH
  JMP_ABSOL(m31AF)
m31AC:
  /*JSR_ABSOL(0x1A26,m1A26)*/
  m1A26();
m31AF:
  LDA_ZEROP(0x89)
  /*RTS*/
  return;
}

void m3338(void)
{
  LDA_ZEROP(0x46)
  ORA_ZEROP(0x47)
  BNE(m333F)
  /*RTS*/
  return;
m333F:
  LDA_ZEROP(0x38)
  AND_IMMED(0x01)
  BEQ(m3346)
  /*RTS*/
  return;
m3346:
  LDA_ZEROP(0x49)
  BNE(m334F)
  LDA_IMMED(0x64)
  JMP_ABSOL(m338B)
m334F:
  CMP_IMMED(0x01)
  BNE(m3358)
  LDA_IMMED(0x96)
  JMP_ABSOL(m338B)
m3358:
  CMP_IMMED(0x02)
  BNE(m3376)
  LDA_ZEROP(0x4A)
  CMP_IMMED(0x0B)
  BCC(m336C)
  LDA_IMMED(0xBE)
  SEC
  SBC_ZEROP(0x4A)
  SBC_ZEROP(0x4A)
  JMP_ABSOL(m338B)
m336C:
  LDA_IMMED(0x96)
  CLC
  ADC_ZEROP(0x4A)
  ADC_ZEROP(0x4A)
  JMP_ABSOL(m338B)
m3376:
  CMP_IMMED(0x03)
  BNE(m3384)
  LDA_IMMED(0x6E)
  SEC
  SBC_ZEROP(0x4A)
  SBC_ZEROP(0x4A)
  JMP_ABSOL(m338B)
m3384:
  LDA_ZEROP(0x46)
  BNE(m3389)
  /*RTS*/
  return;
m3389:
  LDA_IMMED(0x64)
m338B:
  STA_ABSOL(0x0C9C)
  LDX_IMMED(0x98)
  LDY_IMMED(0x0C)
  LDA_IMMED(0x07)
  OSWORD
  /*RTS*/
}
