<?xml version="1.0"?>

<!DOCTYPE MODE SYSTEM "xmode.dtd">

<!--
  ARM32 Assembly mode (as of armasm v6.6)
  contributed by M. Cesar R. Lacruz (mcesar@sec.upm.es)
  v1.0 2017/02/10

  For comments / suggestions / contributions, please contact the
    auhor through the above email address

  Usage of keywords:
    - COMMENT1: line comments  (; ... )
    - DIGIT:    numbers (including single chars between single quotes)
    - KEYWORD1: assembler directives
    - KEYWORD2: reserved words for parameters of assembler directives
    - KEYWORD3: mnemonics
    - KEYWORD4: registers, flags and some parameters for mnemonics
    - FUNCTION: floating point mnemonics
    - LABEL:    labels (including local ones)
    - LITERAL1: strings
    - LITERAL2: immediate operand (#) and immediate 32 bit operand (=)
    - LITERAL3: macro parameters ($)
    - LITERAL4: references to local labels
    - MARKUP:   C preprocessor directives
    - OPERATOR: operators

  As the total number of mnemonics, including all possible condition
    and width suffixes, is huge, heavy usage of SEQ_REGEXP tags was
    choosed to cope with them. Only those not catchable with regexps
    deserve a KEYWORD tag

  FILENAME_GLOB="*.s"

  TODO: include the advanced SIMD instructions
-->

<MODE>
	<PROPS>
		<PROPERTY NAME="lineComment" VALUE=";" />
		<PROPERTY NAME="contextInsensitive" VALUE="TRUE"/>
	</PROPS>

	<RULES HIGHLIGHT_DIGITS="FALSE" IGNORE_CASE="TRUE" NO_WORD_SEP="_">
		<!-- comment -->
		<EOL_SPAN TYPE="COMMENT1">;</EOL_SPAN>

		<!-- label -->
		<SEQ_REGEXP TYPE="LABEL" AT_LINE_START="TRUE" HASH_CHARS="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_">[a-zA-Z_]\w*</SEQ_REGEXP>
		<!-- label inside macro -->
		<SEQ_REGEXP TYPE="LABEL" AT_LINE_START="TRUE" HASH_CHARS="$">\$[a-zA-Z_](\w*\.?\w+)?</SEQ_REGEXP>
		<!-- local label -->
		<SEQ_REGEXP TYPE="LABEL" AT_LINE_START="TRUE" HASH_CHARS="0123456789">[1-9]?\d([a-zA-Z_]\w*)*</SEQ_REGEXP>
		<!-- reference to local label -->
		<SEQ_REGEXP TYPE="LITERAL4" AT_WORD_START="TRUE" HASH_CHAR="%">%(F|B)?(A|T)?[1-9]?\d([a-zA-Z_]\w*)*</SEQ_REGEXP>

		<!-- macro parameters -->
		<SEQ TYPE="NULL">$$</SEQ>  <!-- to escape $$ in linker symbol names -->
		<MARK_FOLLOWING MATCH_TYPE="LITERAL3" TYPE="LITERAL3">$</MARK_FOLLOWING>

		<!-- numbers -->
		<SEQ_REGEXP TYPE="DIGIT" AT_WORD_START="TRUE" HASH_CHARS="023456789&amp;">0f_[\da-fA_F]{8}|0d_[\da-fA_F]{16}|0x[\da-fA-F]+|[2-9]_[0-8]+|&amp;[\da-fA-F]+</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="DIGIT" AT_WORD_START="TRUE" HASH_CHARS="0123456789.">\d*\.?\d+[Ee]\-?\d+</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="DIGIT" AT_WORD_START="TRUE" HASH_CHARS="0123456789.">\d*\.\d+</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="DIGIT" AT_WORD_START="TRUE" HASH_CHARS="0123456789">\d+</SEQ_REGEXP>

		<!-- multi word directives -->
		<SEQ_REGEXP TYPE="KEYWORD1" AT_WORD_START="TRUE" HASH_CHAR="FRAME ">FRAME\s+(ADDRESS|POP|PUSH|REGISTER|RESTORE|SAVE|RETURN\s+ADDRESS|STATE\s+REMEMBER|STATE\s+RESTORE|UNWIND\s+ON|UNWIND\s+OFF)</SEQ_REGEXP>

		<!-- [WEAK] directive parameter -->
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="[">\[WEAK\]</SEQ_REGEXP>

		<!-- Boolean values -->
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="{">\{TRUE\}</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="{">\{FALSE\}</SEQ_REGEXP>

		<!-- numbered registers -->
		<SEQ_REGEXP TYPE="KEYWORD4" AT_WORD_START="TRUE" HASH_CHAR="a">a[1-4]</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD4" AT_WORD_START="TRUE" HASH_CHAR="v">v[1-8]</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD4" AT_WORD_START="TRUE" HASH_CHARS="rpc">[rpc](1[0-5]|\d)</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD4" AT_WORD_START="TRUE" HASH_CHARS="ds">[ds]([1-2]\d|3[0-1]|\d)</SEQ_REGEXP>

		<!-- C preprocessor directives. Just in case... -->
		<SEQ_REGEXP TYPE="MARKUP" AT_WHITESPACE_END="TRUE" HASH_CHAR="#">#(define|include|undef|ifdef|ifndef|if|else|elif|endif|error|line|pragma|warning)</SEQ_REGEXP>

		<!-- chars (they are numbers) -->
		<SPAN TYPE="DIGIT" NO_LINE_BREAK="TRUE">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>

		<!-- strings -->
		<SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>

		<!-- special symbols -->
		<SPAN TYPE="NULL" MATCH_TYPE="OPERATOR" NO_LINE_BREAK="TRUE">
			<BEGIN>||</BEGIN>
			<END>||</END>
		</SPAN>
		<SPAN TYPE="NULL" MATCH_TYPE="OPERATOR" NO_LINE_BREAK="TRUE">
			<BEGIN>|</BEGIN>
			<END>|</END>
		</SPAN>

		<!-- "simple" instructions -->
		<SEQ_REGEXP TYPE="KEYWORD3" AT_WORD_START="TRUE">(BKPT|CPSI[ED]|HLTQ?|HVC|SETEND|TB[BH])\s</SEQ_REGEXP>

		<!-- LDR{cond}{.w} instruction -->
		<SEQ_REGEXP TYPE="KEYWORD3" AT_WORD_START="TRUE">LDR(SB|SH|B|H)?S?(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.W|\.N)\s</SEQ_REGEXP>

		<!-- IT instruction. IT w/o conditions is not caught, so it has entries below -->
		<SEQ_REGEXP TYPE="KEYWORD3" AT_WORD_START="TRUE">IT[TE]{0,3}\s+(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?</SEQ_REGEXP>

		<!-- instructions with {S}{cond} suffixes -->
		<SEQ_REGEXP TYPE="KEYWORD3" AT_WORD_START="TRUE">(AD[CD]|AND|ASR|BIC|EOR|LSL|LSR|ML[AS]|MOV|MUL|MVN|OR[NR]|ROR|RRX|RS[BC]|SBC|SMLAL|[SU]MULL|SUB|UMLAL)S?(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?\s</SEQ_REGEXP>

		<!-- instructions with {cond}{.w} suffixes -->
		<SEQ_REGEXP TYPE="KEYWORD3" AT_WORD_START="TRUE">(ADR|BL?XNS|BL?X?|TTA?T?|UDF)(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.W|\.N)?\s</SEQ_REGEXP>

		<!-- instructions with {.w} suffix -->
		<SEQ_REGEXP TYPE="KEYWORD3" AT_WORD_START="TRUE">(CBN?Z|CRC32C?[BHW]|SETPAN)(\.W|\.N)?\s</SEQ_REGEXP>

		<!-- instruction with {cond} suffix -->
		<SEQ_REGEXP TYPE="KEYWORD3" AT_WORD_START="TRUE">(ADRL|BF[IC]|BXJ|CDP2?|CLZ|CM[PN]|CPY|LDAEX[BHD]?|LDA[BH]?|LDC2?L?|LDM(IA|IB|DA|DB|FD|FA|ED|EA)?|LDR(SB|SH|B|H)?T?|LDRD|LDREX[BHD]?|MCRR?2?|MOV32|MOVT|MRR?C2?|MRS|MSR|NEG|PKH(TB|BT)|PL(DW|D|I)|POP|PUSH|QADD(16|8)?|QASX|QDADD|QDSUB|QSAX|QSUB(16|8)?|RBIT|REV(SH|16)?|RFE(IA|IB|DA|DB)?|SH?ADD(16|8)|SH?ASX|SBFX|[SU]DIV|SEL|SH?SAX|SH?SUB(16|8)|SMC|SMLAL?[BT][BT]|SMLAL?DX?|SMLSL?DX?|SMLAW[BT]|SMML[AS]R?|SMMULR?|SMUADX?|SMUL[BT][BT]|SMULW[BT]|SMUSDX?|SRS(IA|IB|DA|DB|FD|FA|ED|EA)?|[US]SAT|[US]SAT16|STC2?L?|STL[BH]?|STLEX[BHD]?|STM(IA|IB|DA|DB|FD|FA|ED|EA)?|STR(EX)?[BHD]?|STR[BH]?T|SVC|SWPB?|SXTA?B(16)?|SXTA?H|SYS|TEQ|TST|U[QH]?ADD(16|8)|U[QH]?ASX|UBFX|U[QH]?SAX|U[HQ]?SUB(16|8)|UMAAL|USADA?8|UXTA?B16|UXTA?[BH])(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?\s</SEQ_REGEXP>

		<!-- floating point instructions with optional .32 suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">VMOV(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.32)?\s</SEQ_REGEXP>
		<!-- floating point instructions with OPTIONAL .32 or .64 suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">V(LDR|STR)(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.32|\.64)?\s</SEQ_REGEXP>
		<!-- floating point instructions with .F32 or .F64 suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">V(ABS|ADD|CMPE?|DIV|FN?(MA|MS)|LDR|ML[AS]|MOV|MUL|NEG|NML[AS]|NMUL|SEL|SQRT|SUB)(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F32|\.F64)\s</SEQ_REGEXP>
		<!-- floating point instructions with .F32.F64 or .F64.F32 suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">VCVT(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F32\.F64|\.F64\.F32)\s</SEQ_REGEXP>
		<!-- floating point instructions with .F16.F64 or .F64.F16 suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">VCVT[BT](EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F16\.F64|\.F64\.F16)\s</SEQ_REGEXP>
		<!-- floating point instructions with .F32.F16 or .F16.F32 suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">VCVT[BT](EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F32\.F16|\.F16\.F32)\s</SEQ_REGEXP>
		<!-- floating point instructions with .F32.F32 or .F64.F64 suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">VRINT[ZRXANPM](EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.F32\.F32|\.F64\.F64)\s</SEQ_REGEXP>
		<!-- floating point instructions with .F(32|64).[US]32 or .[US]32.F(32|64) suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">VCVTR?(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.[US]32\.F(32|64))\s</SEQ_REGEXP>
		<!-- floating point instructions with or .[US]32.F(32|64) suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">VCVT[ANPM](\.F(32|64)\.[US]32|\.[US]32\.F(32|64))\s</SEQ_REGEXP>
		<!-- floating point instructions with .F(32|64).[US](16|32) or .[US]32.F(32|64) suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">VCVT(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?(\.[US](16|32)\.F(32|64))\s</SEQ_REGEXP>
		<!-- floating point instructions w/o suffix -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">V(LDM(IA|DB|EA|FD)|MOV|MRS|MSR|POP|PUSH|STM(IA|DB|EA|FD))(EQ|NE|CS|HS|CC|LO|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)?\s</SEQ_REGEXP>
		<!-- unconditional floating point intructions -->
		<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE" HASH_CHAR="V">V(JCVT(\.N|\.W)?\.S32\.F64|M(AX|IN)NM\.F(32|64))\s</SEQ_REGEXP>

		<!-- immediate operand -->
		<SEQ TYPE="LITERAL2">#</SEQ>
		<!-- 32-bit immediate for LDR pseudo-instruction -->
		<SEQ TYPE="LITERAL2">=</SEQ>

		<!-- operators -->
		<SEQ TYPE="OPERATOR">(</SEQ>
		<SEQ TYPE="OPERATOR">)</SEQ>
		<SEQ TYPE="OPERATOR">[</SEQ>          <!-- indirection -->
		<SEQ TYPE="OPERATOR">]</SEQ>          <!-- indirection -->
		<SEQ TYPE="OPERATOR">{</SEQ>          <!-- register group -->
		<SEQ TYPE="OPERATOR">}</SEQ>          <!-- register group -->
		<SEQ TYPE="OPERATOR">?</SEQ>          <!-- # of bytes -->
		<SEQ TYPE="OPERATOR">+</SEQ>
		<SEQ TYPE="OPERATOR">-</SEQ>
		<SEQ TYPE="OPERATOR">*</SEQ>
		<SEQ TYPE="OPERATOR">/</SEQ>
		<SEQ TYPE="OPERATOR">:MOD:</SEQ>
		<SEQ TYPE="OPERATOR">%</SEQ>          <!-- alias for :MOD: & reference -->
		<SEQ TYPE="OPERATOR">:BASE:</SEQ>
		<SEQ TYPE="OPERATOR">:CC_ENCODING:</SEQ>
		<SEQ TYPE="OPERATOR">:DEF:</SEQ>
		<SEQ TYPE="OPERATOR">:INDEX:</SEQ>
		<SEQ TYPE="OPERATOR">:LEN:</SEQ>
		<SEQ TYPE="OPERATOR">:LNOT:</SEQ>
		<SEQ TYPE="OPERATOR">:NOT:</SEQ>
		<SEQ TYPE="OPERATOR">:RCONST:</SEQ>
		<SEQ TYPE="OPERATOR">:CC:</SEQ>
		<SEQ TYPE="OPERATOR">:LEFT:</SEQ>
		<SEQ TYPE="OPERATOR">:RIGHT:</SEQ>
		<SEQ TYPE="OPERATOR">:ROL:</SEQ>
		<SEQ TYPE="OPERATOR">:ROR:</SEQ>
		<SEQ TYPE="OPERATOR">:SHL:</SEQ>
		<SEQ TYPE="OPERATOR">:SHR:</SEQ>
		<SEQ TYPE="OPERATOR">&gt;&gt;</SEQ>   <!-- alias for :SHL: -->
		<SEQ TYPE="OPERATOR">&lt;&lt;</SEQ>   <!-- alias for :SHR: -->
		<SEQ TYPE="OPERATOR">:AND:</SEQ>
		<SEQ TYPE="OPERATOR">:EOR:</SEQ>
		<SEQ TYPE="OPERATOR">:OR:</SEQ>
		<SEQ TYPE="OPERATOR">^</SEQ>          <!-- alias for :EOR: and in LDM/STM... -->
		<SEQ TYPE="OPERATOR">&amp;</SEQ>      <!-- alias for :AND: -->
		<!-- better as literal (LDR R0, =0x012345678)
		<SEQ TYPE="OPERATOR">=</SEQ>
		-->
		<SEQ TYPE="OPERATOR">==</SEQ>         <!-- alias for = -->
		<SEQ TYPE="OPERATOR">&gt;</SEQ>
		<SEQ TYPE="OPERATOR">&gt;=</SEQ>
		<SEQ TYPE="OPERATOR">&lt;</SEQ>
		<SEQ TYPE="OPERATOR">&lt;=:</SEQ>
		<SEQ TYPE="OPERATOR">/=</SEQ>
		<SEQ TYPE="OPERATOR">&lt;&gt;</SEQ>   <!-- alias for /= -->
		<SEQ TYPE="OPERATOR">!=</SEQ>         <!-- alias for /= -->
		<SEQ TYPE="OPERATOR">:LAND:</SEQ>
		<SEQ TYPE="OPERATOR">:LEOR:</SEQ>
		<SEQ TYPE="OPERATOR">:LOR:</SEQ>
		<SEQ TYPE="OPERATOR">&amp;&amp;</SEQ> <!-- alias for :LAND: -->
		<!-- the span caughts it previously -->
		<SEQ TYPE="OPERATOR">||</SEQ>         <!-- alias for :LOR: -->
		<SEQ TYPE="OPERATOR">!</SEQ>          <!-- for LDM/STM... -->

		<KEYWORDS>
			<!-- directives -->
			<KEYWORD1>ALIAS</KEYWORD1>
			<KEYWORD1>ALIGN</KEYWORD1>
			<KEYWORD1>AREA</KEYWORD1>
			<KEYWORD2>ASSOC</KEYWORD2>
			<KEYWORD2>CODE</KEYWORD2>
			<KEYWORD2>CODEALIGN</KEYWORD2>
			<KEYWORD2>COMDEF</KEYWORD2>
			<KEYWORD2>COMGROUP</KEYWORD2>
			<KEYWORD2>EXECONLY</KEYWORD2>
			<KEYWORD2>FINI_ARRAY</KEYWORD2>
			<KEYWORD2>GROUP</KEYWORD2>
			<KEYWORD2>INIT_ARRAY</KEYWORD2>
			<KEYWORD2>LINKORDER</KEYWORD2>
			<KEYWORD2>MERGE</KEYWORD2>
			<KEYWORD2>NOALLOC</KEYWORD2>
			<KEYWORD2>NOINIT</KEYWORD2>
			<KEYWORD2>PREINIT_ARRAY</KEYWORD2>
			<KEYWORD2>READONLY</KEYWORD2>
			<KEYWORD2>READWRITE</KEYWORD2>
			<KEYWORD2>SECFLAGS</KEYWORD2>
			<KEYWORD2>SECTYPE</KEYWORD2>
			<KEYWORD2>STRINGS</KEYWORD2>
			<KEYWORD2>ZEROALIGN</KEYWORD2>
			<KEYWORD1>ARM</KEYWORD1>
			<KEYWORD1>CODE32</KEYWORD1>
			<KEYWORD1>ASSERT</KEYWORD1>
			<KEYWORD1>ATTR</KEYWORD1>
			<KEYWORD2>FILESCOPE</KEYWORD2>
			<KEYWORD2>SCOPE</KEYWORD2>
			<KEYWORD2>SETVALUE</KEYWORD2>
			<KEYWORD2>SETSTRING</KEYWORD2>
			<KEYWORD2>SETCOMPATWITHVALUE</KEYWORD2>
			<KEYWORD2>SETCOMPATWITHSTRING</KEYWORD2>
			<KEYWORD1>CN</KEYWORD1>
			<KEYWORD1>CODE16</KEYWORD1>
			<KEYWORD1>COMMON</KEYWORD1>
			<KEYWORD2>DYNAMIC</KEYWORD2>
			<KEYWORD2>PROTECTED</KEYWORD2>
			<KEYWORD2>HIDDEN</KEYWORD2>
			<KEYWORD2>INTERNAL</KEYWORD2>
			<KEYWORD1>CP</KEYWORD1>
			<KEYWORD1>DCB</KEYWORD1>
			<KEYWORD1>DCD</KEYWORD1>
			<KEYWORD1>DCDU</KEYWORD1>
			<KEYWORD1>DCDO</KEYWORD1>
			<KEYWORD1>DCFD</KEYWORD1>
			<KEYWORD1>DCFDU</KEYWORD1>
			<KEYWORD1>DCFS</KEYWORD1>
			<KEYWORD1>DCFSU</KEYWORD1>
			<KEYWORD1>DCI</KEYWORD1>
			<KEYWORD1>DCI.W</KEYWORD1>
			<KEYWORD1>DCQ</KEYWORD1>
			<KEYWORD1>DCQU</KEYWORD1>
			<KEYWORD1>DCW</KEYWORD1>
			<KEYWORD1>DCWU</KEYWORD1>
			<KEYWORD1>END</KEYWORD1>
			<KEYWORD1>ENDFUNC</KEYWORD1>
			<KEYWORD1>ENDP</KEYWORD1>
			<KEYWORD1>ENTRY</KEYWORD1>
			<KEYWORD1>EQU</KEYWORD1>
			<KEYWORD2>ARM</KEYWORD2>
			<KEYWORD2>CODE32</KEYWORD2>
			<KEYWORD2>DATA</KEYWORD2>
			<KEYWORD1>EXPORT</KEYWORD1>
			<KEYWORD1>GLOBAL</KEYWORD1>
			<KEYWORD2>ELFTYPE</KEYWORD2>
			<KEYWORD1>EXPORTAS</KEYWORD1>
			<KEYWORD1>FIELD</KEYWORD1>
			<KEYWORD1>FUNCTION</KEYWORD1>
			<KEYWORD1>PROC</KEYWORD1>
			<KEYWORD1>GBLA</KEYWORD1>
			<KEYWORD1>GBLL</KEYWORD1>
			<KEYWORD1>GBLS</KEYWORD1>
			<KEYWORD1>GET</KEYWORD1>
			<KEYWORD1>INCLUDE</KEYWORD1>
			<KEYWORD1>IF</KEYWORD1>
			<KEYWORD1>ELSE</KEYWORD1>
			<KEYWORD1>ENDIF</KEYWORD1>
			<KEYWORD1>ELIF</KEYWORD1>
			<KEYWORD1>IMPORT</KEYWORD1>
			<KEYWORD1>EXTERN</KEYWORD1>
			<KEYWORD1>INCBIN</KEYWORD1>
			<KEYWORD1>INFO</KEYWORD1>
			<KEYWORD1>KEEP</KEYWORD1>
			<KEYWORD1>LCLA</KEYWORD1>
			<KEYWORD1>LCLL</KEYWORD1>
			<KEYWORD1>LCLS</KEYWORD1>
			<KEYWORD1>LTORG</KEYWORD1>
			<KEYWORD1>MACRO</KEYWORD1>
			<KEYWORD1>MEND</KEYWORD1>
			<KEYWORD1>MAP</KEYWORD1>
			<KEYWORD1>MEXIT</KEYWORD1>
			<KEYWORD1>NOFP</KEYWORD1>
			<KEYWORD1>OPT</KEYWORD1>
			<KEYWORD1>QN</KEYWORD1>
			<KEYWORD1>DN</KEYWORD1>
			<KEYWORD1>SN</KEYWORD1>
			<KEYWORD1>RELOC</KEYWORD1>
			<KEYWORD1>REQUIRE</KEYWORD1>
			<KEYWORD1>REQUIRE8</KEYWORD1>
			<KEYWORD1>PRESERVE8</KEYWORD1>
			<KEYWORD1>RLIST</KEYWORD1>
			<KEYWORD1>RN</KEYWORD1>
			<KEYWORD1>ROUT</KEYWORD1>
			<KEYWORD1>SETA</KEYWORD1>
			<KEYWORD1>SETL</KEYWORD1>
			<KEYWORD1>SETS</KEYWORD1>
			<KEYWORD1>SPACE</KEYWORD1>
			<KEYWORD1>FILL</KEYWORD1>
			<KEYWORD1>THUMB</KEYWORD1>
			<KEYWORD1>TTL</KEYWORD1>
			<KEYWORD1>SUBT</KEYWORD1>
			<KEYWORD1>WHILE</KEYWORD1>
			<KEYWORD1>WEND</KEYWORD1>
			<KEYWORD1>WN</KEYWORD1>

			<!-- non-numbered registers -->
			<KEYWORD4>sb</KEYWORD4>
			<KEYWORD4>ip</KEYWORD4>
			<KEYWORD4>sp</KEYWORD4>
			<KEYWORD4>lr</KEYWORD4>
			<KEYWORD4>pc</KEYWORD4>
			<KEYWORD4>APSR</KEYWORD4>
			<KEYWORD4>CPSR</KEYWORD4>
			<KEYWORD4>SPSR</KEYWORD4>
			<KEYWORD4>IPSR</KEYWORD4>
			<KEYWORD4>EPSR</KEYWORD4>
			<KEYWORD4>IEPSR</KEYWORD4>
			<KEYWORD4>IAPSR</KEYWORD4>
			<KEYWORD4>EAPSR</KEYWORD4>
			<KEYWORD4>MSP</KEYWORD4>
			<KEYWORD4>PSP</KEYWORD4>
			<KEYWORD4>XPSR</KEYWORD4>
			<KEYWORD4>PRIMASK</KEYWORD4>
			<KEYWORD4>BASEPRI</KEYWORD4>
			<KEYWORD4>BASEPRI_MAX</KEYWORD4>
			<KEYWORD4>FAULTMASK</KEYWORD4>
			<KEYWORD4>CONTROL</KEYWORD4>

			<!-- flags for the MSR instruction -->
			<KEYWORD4>n</KEYWORD4>
			<KEYWORD4>z</KEYWORD4>
			<KEYWORD4>c</KEYWORD4>
			<KEYWORD4>v</KEYWORD4>
			<KEYWORD4>q</KEYWORD4>
			<KEYWORD4>g</KEYWORD4>

			<!-- specifier for the SETEND instruction -->
			<KEYWORD4>BE</KEYWORD4>
			<KEYWORD4>LE</KEYWORD4>

			<!-- options for the DMB/DSB/ISB instructions -->
			<KEYWORD4>ISHLD</KEYWORD4>
			<KEYWORD4>ISHST</KEYWORD4>
			<KEYWORD4>ISH</KEYWORD4>
			<KEYWORD4>NSHLD</KEYWORD4>
			<KEYWORD4>NSHST</KEYWORD4>
			<KEYWORD4>NSH</KEYWORD4>
			<KEYWORD4>OSHLD</KEYWORD4>
			<KEYWORD4>OSHST</KEYWORD4>
			<KEYWORD4>OSH</KEYWORD4>
			<KEYWORD4>SH</KEYWORD4>
			<KEYWORD4>SY</KEYWORD4>
			<KEYWORD4>LD</KEYWORD4>
			<KEYWORD4>ST</KEYWORD4>

			<!-- instruction that can have no parameters, so that SEQ & -->
			<!-- SEQ_REGEXP can miss them if followed by \n -->
			<KEYWORD3>CLREXEQ</KEYWORD3>
			<KEYWORD3>CLREXNE</KEYWORD3>
			<KEYWORD3>CLREXCS</KEYWORD3>
			<KEYWORD3>CLREXHS</KEYWORD3>
			<KEYWORD3>CLREXCC</KEYWORD3>
			<KEYWORD3>CLREXLO</KEYWORD3>
			<KEYWORD3>CLREXMI</KEYWORD3>
			<KEYWORD3>CLREXPL</KEYWORD3>
			<KEYWORD3>CLREXVS</KEYWORD3>
			<KEYWORD3>CLREXVC</KEYWORD3>
			<KEYWORD3>CLREXHI</KEYWORD3>
			<KEYWORD3>CLREXLS</KEYWORD3>
			<KEYWORD3>CLREXGE</KEYWORD3>
			<KEYWORD3>CLREXLT</KEYWORD3>
			<KEYWORD3>CLREXGT</KEYWORD3>
			<KEYWORD3>CLREXLE</KEYWORD3>
			<KEYWORD3>CLREXAL</KEYWORD3>
			<KEYWORD3>CLREX</KEYWORD3>
			<KEYWORD3>DBGEQ</KEYWORD3>
			<KEYWORD3>DBGNE</KEYWORD3>
			<KEYWORD3>DBGCS</KEYWORD3>
			<KEYWORD3>DBGHS</KEYWORD3>
			<KEYWORD3>DBGCC</KEYWORD3>
			<KEYWORD3>DBGLO</KEYWORD3>
			<KEYWORD3>DBGMI</KEYWORD3>
			<KEYWORD3>DBGPL</KEYWORD3>
			<KEYWORD3>DBGVS</KEYWORD3>
			<KEYWORD3>DBGVC</KEYWORD3>
			<KEYWORD3>DBGHI</KEYWORD3>
			<KEYWORD3>DBGLS</KEYWORD3>
			<KEYWORD3>DBGGE</KEYWORD3>
			<KEYWORD3>DBGLT</KEYWORD3>
			<KEYWORD3>DBGGT</KEYWORD3>
			<KEYWORD3>DBGLE</KEYWORD3>
			<KEYWORD3>DBGAL</KEYWORD3>
			<KEYWORD3>DBG</KEYWORD3>
			<KEYWORD3>DMBEQ</KEYWORD3>
			<KEYWORD3>DMBNE</KEYWORD3>
			<KEYWORD3>DMBCS</KEYWORD3>
			<KEYWORD3>DMBHS</KEYWORD3>
			<KEYWORD3>DMBCC</KEYWORD3>
			<KEYWORD3>DMBLO</KEYWORD3>
			<KEYWORD3>DMBMI</KEYWORD3>
			<KEYWORD3>DMBPL</KEYWORD3>
			<KEYWORD3>DMBVS</KEYWORD3>
			<KEYWORD3>DMBVC</KEYWORD3>
			<KEYWORD3>DMBHI</KEYWORD3>
			<KEYWORD3>DMBLS</KEYWORD3>
			<KEYWORD3>DMBGE</KEYWORD3>
			<KEYWORD3>DMBLT</KEYWORD3>
			<KEYWORD3>DMBGT</KEYWORD3>
			<KEYWORD3>DMBLE</KEYWORD3>
			<KEYWORD3>DMBAL</KEYWORD3>
			<KEYWORD3>DMB</KEYWORD3>
			<KEYWORD3>DSBEQ</KEYWORD3>
			<KEYWORD3>DSBNE</KEYWORD3>
			<KEYWORD3>DSBCS</KEYWORD3>
			<KEYWORD3>DSBHS</KEYWORD3>
			<KEYWORD3>DSBCC</KEYWORD3>
			<KEYWORD3>DSBLO</KEYWORD3>
			<KEYWORD3>DSBMI</KEYWORD3>
			<KEYWORD3>DSBPL</KEYWORD3>
			<KEYWORD3>DSBVS</KEYWORD3>
			<KEYWORD3>DSBVC</KEYWORD3>
			<KEYWORD3>DSBHI</KEYWORD3>
			<KEYWORD3>DSBLS</KEYWORD3>
			<KEYWORD3>DSBGE</KEYWORD3>
			<KEYWORD3>DSBLT</KEYWORD3>
			<KEYWORD3>DSBGT</KEYWORD3>
			<KEYWORD3>DSBLE</KEYWORD3>
			<KEYWORD3>DSBAL</KEYWORD3>
			<KEYWORD3>DSB</KEYWORD3>
			<KEYWORD3>ERETEQ</KEYWORD3>
			<KEYWORD3>ERETNE</KEYWORD3>
			<KEYWORD3>ERETCS</KEYWORD3>
			<KEYWORD3>ERETHS</KEYWORD3>
			<KEYWORD3>ERETCC</KEYWORD3>
			<KEYWORD3>ERETLO</KEYWORD3>
			<KEYWORD3>ERETMI</KEYWORD3>
			<KEYWORD3>ERETPL</KEYWORD3>
			<KEYWORD3>ERETVS</KEYWORD3>
			<KEYWORD3>ERETVC</KEYWORD3>
			<KEYWORD3>ERETHI</KEYWORD3>
			<KEYWORD3>ERETLS</KEYWORD3>
			<KEYWORD3>ERETGE</KEYWORD3>
			<KEYWORD3>ERETLT</KEYWORD3>
			<KEYWORD3>ERETGT</KEYWORD3>
			<KEYWORD3>ERETLE</KEYWORD3>
			<KEYWORD3>ERETAL</KEYWORD3>
			<KEYWORD3>ERET</KEYWORD3>
			<KEYWORD3>ISBEQ</KEYWORD3>
			<KEYWORD3>ISBNE</KEYWORD3>
			<KEYWORD3>ISBCS</KEYWORD3>
			<KEYWORD3>ISBHS</KEYWORD3>
			<KEYWORD3>ISBCC</KEYWORD3>
			<KEYWORD3>ISBLO</KEYWORD3>
			<KEYWORD3>ISBMI</KEYWORD3>
			<KEYWORD3>ISBPL</KEYWORD3>
			<KEYWORD3>ISBVS</KEYWORD3>
			<KEYWORD3>ISBVC</KEYWORD3>
			<KEYWORD3>ISBHI</KEYWORD3>
			<KEYWORD3>ISBLS</KEYWORD3>
			<KEYWORD3>ISBGE</KEYWORD3>
			<KEYWORD3>ISBLT</KEYWORD3>
			<KEYWORD3>ISBGT</KEYWORD3>
			<KEYWORD3>ISBLE</KEYWORD3>
			<KEYWORD3>ISBAL</KEYWORD3>
			<KEYWORD3>ISB</KEYWORD3>
			<KEYWORD3>NOPEQ</KEYWORD3>
			<KEYWORD3>NOPNE</KEYWORD3>
			<KEYWORD3>NOPCS</KEYWORD3>
			<KEYWORD3>NOPHS</KEYWORD3>
			<KEYWORD3>NOPCC</KEYWORD3>
			<KEYWORD3>NOPLO</KEYWORD3>
			<KEYWORD3>NOPMI</KEYWORD3>
			<KEYWORD3>NOPPL</KEYWORD3>
			<KEYWORD3>NOPVS</KEYWORD3>
			<KEYWORD3>NOPVC</KEYWORD3>
			<KEYWORD3>NOPHI</KEYWORD3>
			<KEYWORD3>NOPLS</KEYWORD3>
			<KEYWORD3>NOPGE</KEYWORD3>
			<KEYWORD3>NOPLT</KEYWORD3>
			<KEYWORD3>NOPGT</KEYWORD3>
			<KEYWORD3>NOPLE</KEYWORD3>
			<KEYWORD3>NOPAL</KEYWORD3>
			<KEYWORD3>NOP</KEYWORD3>
			<KEYWORD3>SEVEQ</KEYWORD3>
			<KEYWORD3>SEVNE</KEYWORD3>
			<KEYWORD3>SEVCS</KEYWORD3>
			<KEYWORD3>SEVHS</KEYWORD3>
			<KEYWORD3>SEVCC</KEYWORD3>
			<KEYWORD3>SEVLO</KEYWORD3>
			<KEYWORD3>SEVMI</KEYWORD3>
			<KEYWORD3>SEVPL</KEYWORD3>
			<KEYWORD3>SEVVS</KEYWORD3>
			<KEYWORD3>SEVVC</KEYWORD3>
			<KEYWORD3>SEVHI</KEYWORD3>
			<KEYWORD3>SEVLS</KEYWORD3>
			<KEYWORD3>SEVGE</KEYWORD3>
			<KEYWORD3>SEVLT</KEYWORD3>
			<KEYWORD3>SEVGT</KEYWORD3>
			<KEYWORD3>SEVLE</KEYWORD3>
			<KEYWORD3>SEVAL</KEYWORD3>
			<KEYWORD3>SEV</KEYWORD3>
			<KEYWORD3>SEVLEQ</KEYWORD3>
			<KEYWORD3>SEVLNE</KEYWORD3>
			<KEYWORD3>SEVLCS</KEYWORD3>
			<KEYWORD3>SEVLHS</KEYWORD3>
			<KEYWORD3>SEVLCC</KEYWORD3>
			<KEYWORD3>SEVLLO</KEYWORD3>
			<KEYWORD3>SEVLMI</KEYWORD3>
			<KEYWORD3>SEVLPL</KEYWORD3>
			<KEYWORD3>SEVLVS</KEYWORD3>
			<KEYWORD3>SEVLVC</KEYWORD3>
			<KEYWORD3>SEVLHI</KEYWORD3>
			<KEYWORD3>SEVLLS</KEYWORD3>
			<KEYWORD3>SEVLGE</KEYWORD3>
			<KEYWORD3>SEVLLT</KEYWORD3>
			<KEYWORD3>SEVLGT</KEYWORD3>
			<KEYWORD3>SEVLLE</KEYWORD3>
			<KEYWORD3>SEVLAL</KEYWORD3>
			<KEYWORD3>SEVL</KEYWORD3>
			<KEYWORD3>WFEEQ</KEYWORD3>
			<KEYWORD3>WFENE</KEYWORD3>
			<KEYWORD3>WFECS</KEYWORD3>
			<KEYWORD3>WFEHS</KEYWORD3>
			<KEYWORD3>WFECC</KEYWORD3>
			<KEYWORD3>WFELO</KEYWORD3>
			<KEYWORD3>WFEMI</KEYWORD3>
			<KEYWORD3>WFEPL</KEYWORD3>
			<KEYWORD3>WFEVS</KEYWORD3>
			<KEYWORD3>WFEVC</KEYWORD3>
			<KEYWORD3>WFEHI</KEYWORD3>
			<KEYWORD3>WFELS</KEYWORD3>
			<KEYWORD3>WFEGE</KEYWORD3>
			<KEYWORD3>WFELT</KEYWORD3>
			<KEYWORD3>WFEGT</KEYWORD3>
			<KEYWORD3>WFELE</KEYWORD3>
			<KEYWORD3>WFEAL</KEYWORD3>
			<KEYWORD3>WFE</KEYWORD3>
			<KEYWORD3>WFIEQ</KEYWORD3>
			<KEYWORD3>WFINE</KEYWORD3>
			<KEYWORD3>WFICS</KEYWORD3>
			<KEYWORD3>WFIHS</KEYWORD3>
			<KEYWORD3>WFICC</KEYWORD3>
			<KEYWORD3>WFILO</KEYWORD3>
			<KEYWORD3>WFIMI</KEYWORD3>
			<KEYWORD3>WFIPL</KEYWORD3>
			<KEYWORD3>WFIVS</KEYWORD3>
			<KEYWORD3>WFIVC</KEYWORD3>
			<KEYWORD3>WFIHI</KEYWORD3>
			<KEYWORD3>WFILS</KEYWORD3>
			<KEYWORD3>WFIGE</KEYWORD3>
			<KEYWORD3>WFILT</KEYWORD3>
			<KEYWORD3>WFIGT</KEYWORD3>
			<KEYWORD3>WFILE</KEYWORD3>
			<KEYWORD3>WFIAL</KEYWORD3>
			<KEYWORD3>WFI</KEYWORD3>
			<KEYWORD3>YIELDEQ</KEYWORD3>
			<KEYWORD3>YIELDNE</KEYWORD3>
			<KEYWORD3>YIELDCS</KEYWORD3>
			<KEYWORD3>YIELDHS</KEYWORD3>
			<KEYWORD3>YIELDCC</KEYWORD3>
			<KEYWORD3>YIELDLO</KEYWORD3>
			<KEYWORD3>YIELDMI</KEYWORD3>
			<KEYWORD3>YIELDPL</KEYWORD3>
			<KEYWORD3>YIELDVS</KEYWORD3>
			<KEYWORD3>YIELDVC</KEYWORD3>
			<KEYWORD3>YIELDHI</KEYWORD3>
			<KEYWORD3>YIELDLS</KEYWORD3>
			<KEYWORD3>YIELDGE</KEYWORD3>
			<KEYWORD3>YIELDLT</KEYWORD3>
			<KEYWORD3>YIELDGT</KEYWORD3>
			<KEYWORD3>YIELDLE</KEYWORD3>
			<KEYWORD3>YIELDAL</KEYWORD3>
			<KEYWORD3>YIELD</KEYWORD3>
			<KEYWORD3>DCPS1</KEYWORD3>
			<KEYWORD3>DCPS2</KEYWORD3>
			<KEYWORD3>DCPS3</KEYWORD3>
			<KEYWORD3>SG</KEYWORD3>
			<KEYWORD3>ESBEQ.W</KEYWORD3>
			<KEYWORD3>ESBNE.W</KEYWORD3>
			<KEYWORD3>ESBCS.W</KEYWORD3>
			<KEYWORD3>ESBHS.W</KEYWORD3>
			<KEYWORD3>ESBCC.W</KEYWORD3>
			<KEYWORD3>ESBLO.W</KEYWORD3>
			<KEYWORD3>ESBMI.W</KEYWORD3>
			<KEYWORD3>ESBPL.W</KEYWORD3>
			<KEYWORD3>ESBVS.W</KEYWORD3>
			<KEYWORD3>ESBVC.W</KEYWORD3>
			<KEYWORD3>ESBHI.W</KEYWORD3>
			<KEYWORD3>ESBLS.W</KEYWORD3>
			<KEYWORD3>ESBGE.W</KEYWORD3>
			<KEYWORD3>ESBLT.W</KEYWORD3>
			<KEYWORD3>ESBGT.W</KEYWORD3>
			<KEYWORD3>ESBLE.W</KEYWORD3>
			<KEYWORD3>ESBAL.W</KEYWORD3>
			<KEYWORD3>ESB.W</KEYWORD3>
			<KEYWORD3>UNDEQ.W</KEYWORD3>
			<KEYWORD3>UNDNE.W</KEYWORD3>
			<KEYWORD3>UNDCS.W</KEYWORD3>
			<KEYWORD3>UNDHS.W</KEYWORD3>
			<KEYWORD3>UNDCC.W</KEYWORD3>
			<KEYWORD3>UNDLO.W</KEYWORD3>
			<KEYWORD3>UNDMI.W</KEYWORD3>
			<KEYWORD3>UNDPL.W</KEYWORD3>
			<KEYWORD3>UNDVS.W</KEYWORD3>
			<KEYWORD3>UNDVC.W</KEYWORD3>
			<KEYWORD3>UNDHI.W</KEYWORD3>
			<KEYWORD3>UNDLS.W</KEYWORD3>
			<KEYWORD3>UNDGE.W</KEYWORD3>
			<KEYWORD3>UNDLT.W</KEYWORD3>
			<KEYWORD3>UNDGT.W</KEYWORD3>
			<KEYWORD3>UNDLE.W</KEYWORD3>
			<KEYWORD3>UNDAL.W</KEYWORD3>
			<KEYWORD3>UND.W</KEYWORD3>
			<KEYWORD3>ESBEQ.N</KEYWORD3>
			<KEYWORD3>ESBNE.N</KEYWORD3>
			<KEYWORD3>ESBCS.N</KEYWORD3>
			<KEYWORD3>ESBHS.N</KEYWORD3>
			<KEYWORD3>ESBCC.N</KEYWORD3>
			<KEYWORD3>ESBLO.N</KEYWORD3>
			<KEYWORD3>ESBMI.N</KEYWORD3>
			<KEYWORD3>ESBPL.N</KEYWORD3>
			<KEYWORD3>ESBVS.N</KEYWORD3>
			<KEYWORD3>ESBVC.N</KEYWORD3>
			<KEYWORD3>ESBHI.N</KEYWORD3>
			<KEYWORD3>ESBLS.N</KEYWORD3>
			<KEYWORD3>ESBGE.N</KEYWORD3>
			<KEYWORD3>ESBLT.N</KEYWORD3>
			<KEYWORD3>ESBGT.N</KEYWORD3>
			<KEYWORD3>ESBLE.N</KEYWORD3>
			<KEYWORD3>ESBAL.N</KEYWORD3>
			<KEYWORD3>ESB.N</KEYWORD3>
			<KEYWORD3>UNDEQ.N</KEYWORD3>
			<KEYWORD3>UNDNE.N</KEYWORD3>
			<KEYWORD3>UNDCS.N</KEYWORD3>
			<KEYWORD3>UNDHS.N</KEYWORD3>
			<KEYWORD3>UNDCC.N</KEYWORD3>
			<KEYWORD3>UNDLO.N</KEYWORD3>
			<KEYWORD3>UNDMI.N</KEYWORD3>
			<KEYWORD3>UNDPL.N</KEYWORD3>
			<KEYWORD3>UNDVS.N</KEYWORD3>
			<KEYWORD3>UNDVC.N</KEYWORD3>
			<KEYWORD3>UNDHI.N</KEYWORD3>
			<KEYWORD3>UNDLS.N</KEYWORD3>
			<KEYWORD3>UNDGE.N</KEYWORD3>
			<KEYWORD3>UNDLT.N</KEYWORD3>
			<KEYWORD3>UNDGT.N</KEYWORD3>
			<KEYWORD3>UNDLE.N</KEYWORD3>
			<KEYWORD3>UNDAL.N</KEYWORD3>
			<KEYWORD3>UND.N</KEYWORD3>
			<KEYWORD3>ESBEQ</KEYWORD3>
			<KEYWORD3>ESBNE</KEYWORD3>
			<KEYWORD3>ESBCS</KEYWORD3>
			<KEYWORD3>ESBHS</KEYWORD3>
			<KEYWORD3>ESBCC</KEYWORD3>
			<KEYWORD3>ESBLO</KEYWORD3>
			<KEYWORD3>ESBMI</KEYWORD3>
			<KEYWORD3>ESBPL</KEYWORD3>
			<KEYWORD3>ESBVS</KEYWORD3>
			<KEYWORD3>ESBVC</KEYWORD3>
			<KEYWORD3>ESBHI</KEYWORD3>
			<KEYWORD3>ESBLS</KEYWORD3>
			<KEYWORD3>ESBGE</KEYWORD3>
			<KEYWORD3>ESBLT</KEYWORD3>
			<KEYWORD3>ESBGT</KEYWORD3>
			<KEYWORD3>ESBLE</KEYWORD3>
			<KEYWORD3>ESBAL</KEYWORD3>
			<KEYWORD3>ESB</KEYWORD3>
			<KEYWORD3>UNDEQ</KEYWORD3>
			<KEYWORD3>UNDNE</KEYWORD3>
			<KEYWORD3>UNDCS</KEYWORD3>
			<KEYWORD3>UNDHS</KEYWORD3>
			<KEYWORD3>UNDCC</KEYWORD3>
			<KEYWORD3>UNDLO</KEYWORD3>
			<KEYWORD3>UNDMI</KEYWORD3>
			<KEYWORD3>UNDPL</KEYWORD3>
			<KEYWORD3>UNDVS</KEYWORD3>
			<KEYWORD3>UNDVC</KEYWORD3>
			<KEYWORD3>UNDHI</KEYWORD3>
			<KEYWORD3>UNDLS</KEYWORD3>
			<KEYWORD3>UNDGE</KEYWORD3>
			<KEYWORD3>UNDLT</KEYWORD3>
			<KEYWORD3>UNDGT</KEYWORD3>
			<KEYWORD3>UNDLE</KEYWORD3>
			<KEYWORD3>UNDAL</KEYWORD3>
			<KEYWORD3>UND</KEYWORD3>
			<KEYWORD3>ITTTT</KEYWORD3>
			<KEYWORD3>ITTTE</KEYWORD3>
			<KEYWORD3>ITTET</KEYWORD3>
			<KEYWORD3>ITTEE</KEYWORD3>
			<KEYWORD3>ITETT</KEYWORD3>
			<KEYWORD3>ITETE</KEYWORD3>
			<KEYWORD3>ITEET</KEYWORD3>
			<KEYWORD3>ITEEE</KEYWORD3>
			<KEYWORD3>ITTT</KEYWORD3>
			<KEYWORD3>ITTE</KEYWORD3>
			<KEYWORD3>ITET</KEYWORD3>
			<KEYWORD3>ITEE</KEYWORD3>
			<KEYWORD3>ITT</KEYWORD3>
			<KEYWORD3>ITE</KEYWORD3>
			<KEYWORD3>IT</KEYWORD3>
		</KEYWORDS>
	</RULES>
</MODE>
