if (! this.sh_languages) {
  this.sh_languages = {};
}
sh_languages['asm'] = [
  [
    [
      /\b(?:include|include_once|require|require_once)\b/g,
      'sh_preproc',
      -1
    ],
    [
      /\/\//g,
      'sh_comment',
      1
    ],
    [
      /(?:\;[#]?|@|%)[A-Za-z0-9_]+\b/g,
      'sh_comment',
      -1
    ],
    [
      /\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,
      'sh_number',
      -1
    ],
    [
      /(?:\$[#]?|@|%)[A-Za-z0-9_]+\b/g,
      'sh_number',
      -1
    ],

    [
      /"/g,
      'sh_string',
      2
    ],
    [
      /'/g,
      'sh_string',
      3
    ],
    [
      /\b(?:abcd|add|adda|addi|addq|addx|and|andi|asl|asr|bchg|bclr|bset|btst|bra|bsr|chk|clr|cmp|cmpa|cmpi|cmpm|dc|divs|divu|eor|eori|exg|ext|illegal|jmp|jsr|lea|link|lsl|lsr|move|movea|movem|moveq|muls|mulu|nbcd|neg|negx|nop|not|or|ori|pea|rol|ror|roxl|roxr|rtd|rts|sbcd|sub|suba|subi|subq|subx|swap|tas|trap|trapv|tst|unlk)\b/g,
      'sh_keyword1',
      -1
    ],
    [
      /\b(?:bhi|bls|bcc|bcs|bne|beq|bvc|bpl|bmi|bge|blt|bgt|ble|dbt|dbf|dbhi|dbls|dbcc|dbcs|dbne|dbeq|dbvc|dbpl|dbmi|dbge|dblt|dbgt|dble|st|sf|shi|sls|scc|scs|sne|seq|svc|spl|smi|sge|slt|sgt|sle)\b/g,
      'sh_keyword2',
      -1
    ],
    [
      /\b(?:d0|d1|d2|d3|d4|d5|d6|d7|a0|a1|a2|a3|a4|a5|a6|a7)\b/g,
      'sh_keyword3',
      -1
    ],
    [
      /\b(?:#|.b|.w|.l|.s)\b/g,
      'sh_keyword4',
      -1
    ],
    [
      /\/\/\//g,
      'sh_comment',
      4
    ],
    [
      /\/\//g,
      'sh_comment',
      1
    ],
    [
      /\/\*\*/g,
      'sh_comment',
      9
    ],
    [
      /\/\*/g,
      'sh_comment',
      10
    ],
    [
      /<\?php|~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g,
      'sh_symbol',
      -1
    ],
    [
      /\{|\}/g,
      'sh_cbracket',
      -1
    ],
    [
      /(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \t]*\()/g,
      'sh_function',
      -1
    ]
  ],
  [
    [
      /$/g,
      null,
      -2
    ]
  ],
  [
    [
      /\\(?:\\|")/g,
      null,
      -1
    ],
    [
      /"/g,
      'sh_string',
      -2
    ]
  ],
  [
    [
      /\\(?:\\|')/g,
      null,
      -1
    ],
    [
      /'/g,
      'sh_string',
      -2
    ]
  ],
  [
    [
      /$/g,
      null,
      -2
    ],
    [
      /(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
      'sh_url',
      -1
    ],
    [
      /<\?xml/g,
      'sh_preproc',
      5,
      1
    ],
    [
      /<!DOCTYPE/g,
      'sh_preproc',
      6,
      1
    ],
    [
      /<!--/g,
      'sh_comment',
      7
    ],
    [
      /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
      'sh_keyword',
      -1
    ],
    [
      /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
      'sh_keyword',
      8,
      1
    ],
    [
      /&(?:[A-Za-z0-9]+);/g,
      'sh_preproc',
      -1
    ],
    [
      /<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,
      'sh_keyword',
      -1
    ],
    [
      /<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,
      'sh_keyword',
      8,
      1
    ],
    [
      /@[A-Za-z]+/g,
      'sh_type',
      -1
    ],
    [
      /(?:TODO|FIXME|BUG)(?:[:]?)/g,
      'sh_todo',
      -1
    ]
  ],
  [
    [
      /\?>/g,
      'sh_preproc',
      -2
    ],
    [
      /([^=" \t>]+)([ \t]*)(=?)/g,
      ['sh_type', 'sh_normal', 'sh_symbol'],
      -1
    ],
    [
      /"/g,
      'sh_string',
      2
    ]
  ],
  [
    [
      />/g,
      'sh_preproc',
      -2
    ],
    [
      /([^=" \t>]+)([ \t]*)(=?)/g,
      ['sh_type', 'sh_normal', 'sh_symbol'],
      -1
    ],
    [
      /"/g,
      'sh_string',
      2
    ]
  ],
  [
    [
      /-->/g,
      'sh_comment',
      -2
    ],
    [
      /<!--/g,
      'sh_comment',
      7
    ]
  ],
  [
    [
      /(?:\/)?>/g,
      'sh_keyword',
      -2
    ],
    [
      /([^=" \t>]+)([ \t]*)(=?)/g,
      ['sh_type', 'sh_normal', 'sh_symbol'],
      -1
    ],
    [
      /"/g,
      'sh_string',
      2
    ]
  ],
  [
    [
      /\*\//g,
      'sh_comment',
      -2
    ],
    [
      /(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
      'sh_url',
      -1
    ],
    [
      /<\?xml/g,
      'sh_preproc',
      5,
      1
    ],
    [
      /<!DOCTYPE/g,
      'sh_preproc',
      6,
      1
    ],
    [
      /<!--/g,
      'sh_comment',
      7
    ],
    [
      /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,
      'sh_keyword',
      -1
    ],
    [
      /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,
      'sh_keyword',
      8,
      1
    ],
    [
      /&(?:[A-Za-z0-9]+);/g,
      'sh_preproc',
      -1
    ],
    [
      /<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,
      'sh_keyword',
      -1
    ],
    [
      /<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,
      'sh_keyword',
      8,
      1
    ],
    [
      /@[A-Za-z]+/g,
      'sh_type',
      -1
    ],
    [
      /(?:TODO|FIXME|BUG)(?:[:]?)/g,
      'sh_todo',
      -1
    ]
  ],
  [
    [
      /\*\//g,
      'sh_comment',
      -2
    ],
    [
      /(?:<?)[A-Za-z0-9_\.\/\-_~]+@[A-Za-z0-9_\.\/\-_~]+(?:>?)|(?:<?)[A-Za-z0-9_]+:\/\/[A-Za-z0-9_\.\/\-_~]+(?:>?)/g,
      'sh_url',
      -1
    ],
    [
      /(?:TODO|FIXME|BUG)(?:[:]?)/g,
      'sh_todo',
      -1
    ]
  ]
];

