<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language _name="Assembly" version="1.0" _section="Sources" 
           mimetypes="text/x-asm">

    <escape-char>\</escape-char>

    <line-comment _name = "Line Comment" style= "Comment">
        <start-regex>;</start-regex>
    </line-comment>

    <block-comment _name = "'%if 0' Comment" style = "Comment">
        <start-regex>^[ \t]*%[ \t]*if[ \t]*0</start-regex>
            <end-regex>[ \t]*%[ \t]*(endif|else)</end-regex>
    </block-comment>

    <string _name = "String" style = "String" end-at-line-end = "TRUE">
        <start-regex>[&quot;\']</start-regex>
        <end-regex>[&quot;\']</end-regex>
    </string>

    <syntax-item _name = "Include/Pragma" style = "Preprocessor">
        <start-regex>^#[ \t]*(include|pragma)</start-regex>
        <end-regex>\n</end-regex>
    </syntax-item>

    <keyword-list _name = "Keywords" style = "Keyword" case-sensitive="TRUE">
        <keyword>aaa</keyword>
        <keyword>aad</keyword>
        <keyword>aam</keyword>
        <keyword>aas</keyword>
        <keyword>adc</keyword>
        <keyword>add</keyword>
        <keyword>and</keyword>
        <keyword>call</keyword>
        <keyword>cbw</keyword>
        <keyword>clc</keyword>
        <keyword>cld</keyword>
        <keyword>cli</keyword>
        <keyword>cmc</keyword>
        <keyword>cmp</keyword>
        <keyword>cmps</keyword>
        <keyword>cmpsb</keyword>
        <keyword>cmpsw</keyword>
        <keyword>cwd</keyword>
        <keyword>daa</keyword>
        <keyword>das</keyword>
        <keyword>dec</keyword>
        <keyword>div</keyword>
        <keyword>esc</keyword>
        <keyword>hlt</keyword>
        <keyword>idiv</keyword>
        <keyword>imul</keyword>
        <keyword>in</keyword>
        <keyword>inc</keyword>
        <keyword>int</keyword>
        <keyword>into</keyword>
        <keyword>iret</keyword>
        <keyword>ja</keyword>
        <keyword>jae</keyword>
        <keyword>jb</keyword>
        <keyword>jbe</keyword>
        <keyword>jc</keyword>
        <keyword>jcxz</keyword>
        <keyword>je</keyword>
        <keyword>jg</keyword>
        <keyword>jge</keyword>
        <keyword>jl</keyword>
        <keyword>jle</keyword>
        <keyword>jmp</keyword>
        <keyword>jna</keyword>
        <keyword>jnae</keyword>
        <keyword>jnb</keyword>
        <keyword>jnbe</keyword>
        <keyword>jnc</keyword>
        <keyword>jne</keyword>
        <keyword>jng</keyword>
        <keyword>jnge</keyword>
        <keyword>jnl</keyword>
        <keyword>jnle</keyword>
        <keyword>jno</keyword>
        <keyword>jnp</keyword>
        <keyword>jns</keyword>
        <keyword>jnz</keyword>
        <keyword>jo</keyword>
        <keyword>jp</keyword>
        <keyword>jpe</keyword>
        <keyword>jpo</keyword>
        <keyword>js</keyword>
        <keyword>jz</keyword>
        <keyword>lahf</keyword>
        <keyword>lds</keyword>
        <keyword>lea</keyword>
        <keyword>les</keyword>
        <keyword>lods</keyword>
        <keyword>lodsb</keyword>
        <keyword>lodsw</keyword>
        <keyword>loop</keyword>
        <keyword>loope</keyword>
        <keyword>loopew</keyword>
        <keyword>loopne</keyword>
        <keyword>loopnew</keyword>
        <keyword>loopnz</keyword>
        <keyword>loopnzw</keyword>
        <keyword>loopw</keyword>
        <keyword>loopz</keyword>
        <keyword>loopzw</keyword>
        <keyword>mov</keyword>
        <keyword>movs</keyword>
        <keyword>movsb</keyword>
        <keyword>movsw</keyword>
        <keyword>mul</keyword>
        <keyword>neg</keyword>
        <keyword>nop</keyword>
        <keyword>not</keyword>
        <keyword>or</keyword>
        <keyword>out</keyword>
        <keyword>pop</keyword>
        <keyword>popf</keyword>
        <keyword>push</keyword>
        <keyword>pushf</keyword>
        <keyword>rcl</keyword>
        <keyword>rcr</keyword>
        <keyword>ret</keyword>
        <keyword>retf</keyword>
        <keyword>retn</keyword>
        <keyword>rol</keyword>
        <keyword>ror</keyword>
        <keyword>sahf</keyword>
        <keyword>sal</keyword>
        <keyword>sar</keyword>
        <keyword>sbb</keyword>
        <keyword>scas</keyword>
        <keyword>scasb</keyword>
        <keyword>scasw</keyword>
        <keyword>shl</keyword>
        <keyword>shr</keyword>
        <keyword>stc</keyword>
        <keyword>std</keyword>
        <keyword>sti</keyword>
        <keyword>stos</keyword>
        <keyword>stosb</keyword>
        <keyword>stosw</keyword>
        <keyword>sub</keyword>
        <keyword>test</keyword>
        <keyword>wait</keyword>
        <keyword>xchg</keyword>
        <keyword>xlat</keyword>
        <keyword>xlatb</keyword>
        <keyword>xor</keyword>
        <keyword>bound</keyword>
        <keyword>enter</keyword>
        <keyword>ins</keyword>
        <keyword>insb</keyword>
        <keyword>insw</keyword>
        <keyword>leave</keyword>
        <keyword>outs</keyword>
        <keyword>outsb</keyword>
        <keyword>outsw</keyword>
        <keyword>popa</keyword>
        <keyword>pusha</keyword>
        <keyword>pushw</keyword>
        <keyword>arpl</keyword>
        <keyword>lar</keyword>
        <keyword>lsl</keyword>
        <keyword>sgdt</keyword>
        <keyword>sidt</keyword>
        <keyword>sldt</keyword>
        <keyword>smsw</keyword>
        <keyword>str</keyword>
        <keyword>verr</keyword>
        <keyword>verw</keyword>
        <keyword>clts</keyword>
        <keyword>lgdt</keyword>
        <keyword>lidt</keyword>
        <keyword>lldt</keyword>
        <keyword>lmsw</keyword>
        <keyword>ltr</keyword>
        <keyword>bsf</keyword>
        <keyword>bsr</keyword>
        <keyword>bt</keyword>
        <keyword>btc</keyword>
        <keyword>btr</keyword>
        <keyword>bts</keyword>
        <keyword>cdq</keyword>
        <keyword>cmpsd</keyword>
        <keyword>cwde</keyword>
        <keyword>insd</keyword>
        <keyword>iretd</keyword>
        <keyword>iretdf</keyword>
        <keyword>iretf</keyword>
        <keyword>jecxz</keyword>
        <keyword>lfs</keyword>
        <keyword>lgs</keyword>
        <keyword>lodsd</keyword>
        <keyword>loopd</keyword>
        <keyword>looped</keyword>
        <keyword>loopned</keyword>
        <keyword>loopnzd</keyword>
        <keyword>loopzd</keyword>
        <keyword>lss</keyword>
        <keyword>movsd</keyword>
        <keyword>movsx</keyword>
        <keyword>movzx</keyword>
        <keyword>outsd</keyword>
        <keyword>popad</keyword>
        <keyword>popfd</keyword>
        <keyword>pushad</keyword>
        <keyword>pushd</keyword>
        <keyword>pushfd</keyword>
        <keyword>scasd</keyword>
        <keyword>seta</keyword>
        <keyword>setae</keyword>
        <keyword>setb</keyword>
        <keyword>setbe</keyword>
        <keyword>setc</keyword>
        <keyword>sete</keyword>
        <keyword>setg</keyword>
        <keyword>setge</keyword>
        <keyword>setl</keyword>
        <keyword>setle</keyword>
        <keyword>setna</keyword>
        <keyword>setnae</keyword>
        <keyword>setnb</keyword>
        <keyword>setnbe</keyword>
        <keyword>setnc</keyword>
        <keyword>setne</keyword>
        <keyword>setng</keyword>
        <keyword>setnge</keyword>
        <keyword>setnl</keyword>
        <keyword>setnle</keyword>
        <keyword>setno</keyword>
        <keyword>setnp</keyword>
        <keyword>setns</keyword>
        <keyword>setnz</keyword>
        <keyword>seto</keyword>
        <keyword>setp</keyword>
        <keyword>setpe</keyword>
        <keyword>setpo</keyword>
        <keyword>sets</keyword>
        <keyword>setz</keyword>
        <keyword>shld</keyword>
        <keyword>shrd</keyword>
        <keyword>stosd</keyword>
        <keyword>bswap</keyword>
        <keyword>cmpxchg</keyword>
        <keyword>invd</keyword>
        <keyword>invlpg</keyword>
        <keyword>wbinvd</keyword>
        <keyword>xadd</keyword>
        <keyword>lock</keyword>
        <keyword>rep</keyword>
        <keyword>repe</keyword>
        <keyword>repne</keyword>
        <keyword>repnz</keyword>
        <keyword>repz</keyword>

         <!-- these are mostly non-MMX/SSE/SSE2 486+ instructions -->
        <keyword>cflush</keyword>
        <keyword>cpuid</keyword>
        <keyword>emms</keyword>
        <keyword>femms</keyword>
        <keyword>cmovo</keyword>
        <keyword>cmovno</keyword>
        <keyword>cmovb</keyword>
        <keyword>cmovc</keyword>
        <keyword>cmovnae</keyword>
        <keyword>cmovae</keyword>
        <keyword>cmovnb</keyword>
        <keyword>cmovnc</keyword>
        <keyword>cmove</keyword>
        <keyword>cmovz</keyword>
        <keyword>cmovne</keyword>
        <keyword>cmovnz</keyword>
        <keyword>cmovbe</keyword>
        <keyword>cmovna</keyword>
        <keyword>cmova</keyword>
        <keyword>cmovnbe</keyword>
        <keyword>cmovs</keyword>
        <keyword>cmovns</keyword>
        <keyword>cmovp</keyword>
        <keyword>cmovpe</keyword>
        <keyword>cmovnp</keyword>
        <keyword>cmovpo</keyword>
        <keyword>cmovl</keyword>
        <keyword>cmovnge</keyword>
        <keyword>cmovge</keyword>
        <keyword>cmovnl</keyword>
        <keyword>cmovle</keyword>
        <keyword>cmovng</keyword>
        <keyword>cmovg</keyword>
        <keyword>cmovnle</keyword>
        <keyword>cmpxchg486</keyword>
        <keyword>cmpxchg8b</keyword>
        <keyword>loadall</keyword>
        <keyword>loadall286</keyword>
        <keyword>ibts</keyword>
        <keyword>icebp</keyword>
        <keyword>int1</keyword>
        <keyword>int3</keyword>
        <keyword>int01</keyword>
        <keyword>int03</keyword>
        <keyword>iretw</keyword>
        <keyword>popaw</keyword>
        <keyword>popfw</keyword>
        <keyword>pushaw</keyword>
        <keyword>pushfw</keyword>
        <keyword>rdmsr</keyword>
        <keyword>rdpmc</keyword>
        <keyword>rdshr</keyword>
        <keyword>rdtsc</keyword>
        <keyword>rsdc</keyword>
        <keyword>rsldt</keyword>
        <keyword>rsm</keyword>
        <keyword>rsts</keyword>
        <keyword>salc</keyword>
        <keyword>smi</keyword>
        <keyword>smint</keyword>
        <keyword>smintold</keyword>
        <keyword>svdc</keyword>
        <keyword>svldt</keyword>
        <keyword>svts</keyword>
        <keyword>syscall</keyword>
        <keyword>sysenter</keyword>
        <keyword>sysexit</keyword>
        <keyword>sysret</keyword>
        <keyword>ud0</keyword>
        <keyword>ud1</keyword>
        <keyword>ud2</keyword>
        <keyword>umov</keyword>
        <keyword>xbts</keyword>
        <keyword>wrmsr</keyword>
        <keyword>wrshr</keyword>

        <!-- fpu instructions, updated for 486+ -->
        <keyword>f2xm1</keyword>
        <keyword>fabs</keyword>
        <keyword>fadd</keyword>
        <keyword>faddp</keyword>
        <keyword>fbld</keyword>
        <keyword>fbstp</keyword>
        <keyword>fchs</keyword>
        <keyword>fclex</keyword>
        <keyword>fcom</keyword>
        <keyword>fcomp</keyword>
        <keyword>fcompp</keyword>
        <keyword>fdecstp</keyword>
        <keyword>fdisi</keyword>
        <keyword>fdiv</keyword>
        <keyword>fdivp</keyword>
        <keyword>fdivr</keyword>
        <keyword>fdivrp</keyword>
        <keyword>feni</keyword>
        <keyword>ffree</keyword>
        <keyword>fiadd</keyword>
        <keyword>ficom</keyword>
        <keyword>ficomp</keyword>
        <keyword>fidiv</keyword>
        <keyword>fidivr</keyword>
        <keyword>fild</keyword>
        <keyword>fimul</keyword>
        <keyword>fincstp</keyword>
        <keyword>finit</keyword>
        <keyword>fist</keyword>
        <keyword>fistp</keyword>
        <keyword>fisub</keyword>
        <keyword>fisubr</keyword>
        <keyword>fld</keyword>
        <keyword>fld1</keyword>
        <keyword>fldcw</keyword>
        <keyword>fldenv</keyword>
        <keyword>fldenvw</keyword>
        <keyword>fldl2e</keyword>
        <keyword>fldl2t</keyword>
        <keyword>fldlg2</keyword>
        <keyword>fldln2</keyword>
        <keyword>fldpi</keyword>
        <keyword>fldz</keyword>
        <keyword>fmul</keyword>
        <keyword>fmulp</keyword>
        <keyword>fnclex</keyword>
        <keyword>fndisi</keyword>
        <keyword>fneni</keyword>
        <keyword>fninit</keyword>
        <keyword>fnop</keyword>
        <keyword>fnsave</keyword>
        <keyword>fnsavew</keyword>
        <keyword>fnstcw</keyword>
        <keyword>fnstenv</keyword>
        <keyword>fnstenvw</keyword>
        <keyword>fnstsw</keyword>
        <keyword>fpatan</keyword>
        <keyword>fprem</keyword>
        <keyword>fptan</keyword>
        <keyword>frndint</keyword>
        <keyword>frstor</keyword>
        <keyword>frstorw</keyword>
        <keyword>fsave</keyword>
        <keyword>fsavew</keyword>
        <keyword>fscale</keyword>
        <keyword>fsqrt</keyword>
        <keyword>fst</keyword>
        <keyword>fstcw</keyword>
        <keyword>fstenv</keyword>
        <keyword>fstenvw</keyword>
        <keyword>fstp</keyword>
        <keyword>fstsw</keyword>
        <keyword>fsub</keyword>
        <keyword>fsubp</keyword>
        <keyword>fsubr</keyword>
        <keyword>fsubrp</keyword>
        <keyword>ftst</keyword>
        <keyword>fwait</keyword>
        <keyword>fxam</keyword>
        <keyword>fxch</keyword>
        <keyword>fxtract</keyword>
        <keyword>fyl2x</keyword>
        <keyword>fyl2xp1</keyword>
        <keyword>fsetpm</keyword>
        <keyword>fcos</keyword>
        <keyword>fldenvd</keyword>
        <keyword>fnsaved</keyword>
        <keyword>fnstenvd</keyword>
        <keyword>fprem1</keyword>
        <keyword>frstord</keyword>
        <keyword>fsaved</keyword>
        <keyword>fsin</keyword>
        <keyword>fsincos</keyword>
        <keyword>fstenvd</keyword>
        <keyword>fucom</keyword>
        <keyword>fucomp</keyword>
        <keyword>fucompp</keyword>
        <keyword>fcomi</keyword>
        <keyword>fcomip</keyword>
        <keyword>ffreep</keyword>
        <keyword>fcmovb</keyword>
        <keyword>fcmove</keyword>
        <keyword>fcmovbe</keyword>
        <keyword>fcmovu</keyword>
        <keyword>fcmovnb</keyword>
        <keyword>fcmovne</keyword>
        <keyword>fcmovnbe</keyword>
        <keyword>fcmovnu</keyword>
        
        <!-- these are MMX, SSE, SSE2 instructions -->
        <keyword>addpd</keyword>
        <keyword>addps</keyword>
        <keyword>addsd</keyword>
        <keyword>addss</keyword>
        <keyword>andpd</keyword>
        <keyword>andps</keyword>
        <keyword>andnpd</keyword>
        <keyword>andnps</keyword>
        <keyword>cmpeqpd</keyword>
        <keyword>cmpltpd</keyword>
        <keyword>cmplepd</keyword>
        <keyword>cmpunordpd</keyword>
        <keyword>cmpnepd</keyword>
        <keyword>cmpnltpd</keyword>
        <keyword>cmpnlepd</keyword>
        <keyword>cmpordpd</keyword>
        <keyword>cmpeqps</keyword>
        <keyword>cmpltps</keyword>
        <keyword>cmpleps</keyword>
        <keyword>cmpunordps</keyword>
        <keyword>cmpneps</keyword>
        <keyword>cmpnltps</keyword>
        <keyword>cmpnleps</keyword>
        <keyword>cmpordps</keyword>
        <keyword>cmpeqsd</keyword>
        <keyword>cmpltsd</keyword>
        <keyword>cmplesd</keyword>
        <keyword>cmpunordsd</keyword>
        <keyword>cmpnesd</keyword>
        <keyword>cmpnltsd</keyword>
        <keyword>cmpnlesd</keyword>
        <keyword>cmpordsd</keyword>
        <keyword>cmpeqss</keyword>
        <keyword>cmpltss</keyword>
        <keyword>cmpless</keyword>
        <keyword>cmpunordss</keyword>
        <keyword>cmpness</keyword>
        <keyword>cmpnltss</keyword>
        <keyword>cmpnless</keyword>
        <keyword>cmpordss</keyword>
        <keyword>comisd</keyword>
        <keyword>comiss</keyword>
        <keyword>cvtdq2pd</keyword>
        <keyword>cvtdq2ps</keyword>
        <keyword>cvtpd2dq</keyword>
        <keyword>cvtpd2pi</keyword>
        <keyword>cvtpd2ps</keyword>
        <keyword>cvtpi2pd</keyword>
        <keyword>cvtpi2ps</keyword>
        <keyword>cvtps2dq</keyword>
        <keyword>cvtps2pd</keyword>
        <keyword>cvtps2pi</keyword>
        <keyword>cvtss2sd</keyword>
        <keyword>cvtss2si</keyword>
        <keyword>cvtsd2si</keyword>
        <keyword>cvtsd2ss</keyword>
        <keyword>cvtsi2sd</keyword>
        <keyword>cvtsi2ss</keyword>
        <keyword>cvttpd2dq</keyword>
        <keyword>cvttpd2pi</keyword>
        <keyword>cvttps2dq</keyword>
        <keyword>cvttps2pi</keyword>
        <keyword>cvttsd2si</keyword>
        <keyword>cvttss2si</keyword>
        <keyword>divpd</keyword>
        <keyword>divps</keyword>
        <keyword>divsd</keyword>
        <keyword>divss</keyword>
        <keyword>fxrstor</keyword>
        <keyword>fxsave</keyword>
        <keyword>ldmxscr</keyword>
        <keyword>lfence</keyword>
        <keyword>mfence</keyword>
        <keyword>maskmovdqu</keyword>
        <keyword>maskmovdq</keyword>
        <keyword>maxpd</keyword>
        <keyword>maxps</keyword>
        <keyword>paxsd</keyword>
        <keyword>maxss</keyword>
        <keyword>minpd</keyword>
        <keyword>minps</keyword>
        <keyword>minsd</keyword>
        <keyword>minss</keyword>
        <keyword>movapd</keyword>
        <keyword>movaps</keyword>
        <keyword>movdq2q</keyword>
        <keyword>movdqa</keyword>
        <keyword>movdqu</keyword>
        <keyword>movhlps</keyword>
        <keyword>movhpd</keyword>
        <keyword>movhps</keyword>
        <keyword>movd</keyword>
        <keyword>movq</keyword>
        <keyword>movlhps</keyword>
        <keyword>movlpd</keyword>
        <keyword>movlps</keyword>
        <keyword>movmskpd</keyword>
        <keyword>movmskps</keyword>
        <keyword>movntdq</keyword>
        <keyword>movnti</keyword>
        <keyword>movntpd</keyword>
        <keyword>movntps</keyword>
        <keyword>movntq</keyword>
        <keyword>movq2dq</keyword>
        <keyword>movsd</keyword>
        <keyword>movss</keyword>
        <keyword>movupd</keyword>
        <keyword>movups</keyword>
        <keyword>mulpd</keyword>
        <keyword>mulps</keyword>
        <keyword>mulsd</keyword>
        <keyword>mulss</keyword>
        <keyword>orpd</keyword>
        <keyword>orps</keyword>
        <keyword>packssdw</keyword>
        <keyword>packsswb</keyword>
        <keyword>packuswb</keyword>
        <keyword>paddb</keyword>
        <keyword>paddsb</keyword>
        <keyword>paddw</keyword>
        <keyword>paddsw</keyword>
        <keyword>paddd</keyword>
        <keyword>paddsiw</keyword>
        <keyword>paddq</keyword>
        <keyword>paddusb</keyword>
        <keyword>paddusw</keyword>
        <keyword>pand</keyword>
        <keyword>pandn</keyword>
        <keyword>pause</keyword>
        <keyword>paveb</keyword>
        <keyword>pavgb</keyword>
        <keyword>pavgw</keyword>
        <keyword>pavgusb</keyword>
        <keyword>pdistib</keyword>
        <keyword>pextrw</keyword>
        <keyword>pcmpeqb</keyword>
        <keyword>pcmpeqw</keyword>
        <keyword>pcmpeqd</keyword>
        <keyword>pcmpgtb</keyword>
        <keyword>pcmpgtw</keyword>
        <keyword>pcmpgtd</keyword>
        <keyword>pf2id</keyword>
        <keyword>pf2iw</keyword>
        <keyword>pfacc</keyword>
        <keyword>pfadd</keyword>
        <keyword>pfcmpeq</keyword>
        <keyword>pfcmpge</keyword>
        <keyword>pfcmpgt</keyword>
        <keyword>pfmax</keyword>
        <keyword>pfmin</keyword>
        <keyword>pfmul</keyword>
        <keyword>pmachriw</keyword>
        <keyword>pmaddwd</keyword>
        <keyword>pmagw</keyword>
        <keyword>pmaxsw</keyword>
        <keyword>pmaxub</keyword>
        <keyword>pminsw</keyword>
        <keyword>pminub</keyword>
        <keyword>pmovmskb</keyword>
        <keyword>pmulhrwc</keyword>
        <keyword>pmulhriw</keyword>
        <keyword>pmulhrwa</keyword>
        <keyword>pmulhuw</keyword>
        <keyword>pmulhw</keyword>
        <keyword>pmullw</keyword>
        <keyword>pmuludq</keyword>
        <keyword>pmvzb</keyword>
        <keyword>pmvnzb</keyword>
        <keyword>pmvlzb</keyword>
        <keyword>pmvgezb</keyword>
        <keyword>pfnacc</keyword>
        <keyword>pfpnacc</keyword>
        <keyword>por</keyword>
        <keyword>prefetch</keyword>
        <keyword>prefetchw</keyword>
        <keyword>prefetchnta</keyword>
        <keyword>prefetcht0</keyword>
        <keyword>prefetcht1</keyword>
        <keyword>prefetcht2</keyword>
        <keyword>pfrcp</keyword>
        <keyword>pfrcpit1</keyword>
        <keyword>pfrcpit2</keyword>
        <keyword>pfrsqit1</keyword>
        <keyword>pfrsqrt</keyword>
        <keyword>pfsub</keyword>
        <keyword>pfsubr</keyword>
        <keyword>pi2fd</keyword>
        <keyword>pf2iw</keyword>
        <keyword>pinsrw</keyword>
        <keyword>psadbw</keyword>
        <keyword>pshufd</keyword>
        <keyword>pshufhw</keyword>
        <keyword>pshuflw</keyword>
        <keyword>pshufw</keyword>
        <keyword>psllw</keyword>
        <keyword>pslld</keyword>
        <keyword>psllq</keyword>
        <keyword>pslldq</keyword>
        <keyword>psraw</keyword>
        <keyword>psrad</keyword>
        <keyword>psrlw</keyword>
        <keyword>psrld</keyword>
        <keyword>psrlq</keyword>
        <keyword>psrldq</keyword>
        <keyword>psubb</keyword>
        <keyword>psubw</keyword>
        <keyword>psubd</keyword>
        <keyword>psubq</keyword>
        <keyword>psubsb</keyword>
        <keyword>psubsw</keyword>
        <keyword>psubusb</keyword>
        <keyword>psubusw</keyword>
        <keyword>psubsiw</keyword>
        <keyword>pswapd</keyword>
        <keyword>punpckhbw</keyword>
        <keyword>punpckhwd</keyword>
        <keyword>punpckhdq</keyword>
        <keyword>punpckhqdq</keyword>
        <keyword>punpcklbw</keyword>
        <keyword>punpcklwd</keyword>
        <keyword>punpckldq</keyword>
        <keyword>punpcklqdq</keyword>
        <keyword>pxor</keyword>
        <keyword>rcpps</keyword>
        <keyword>rcpss</keyword>
        <keyword>rsqrtps</keyword>
        <keyword>rsqrtss</keyword>
        <keyword>sfence</keyword>
        <keyword>shufpd</keyword>
        <keyword>shufps</keyword>
        <keyword>sqrtpd</keyword>
        <keyword>sqrtps</keyword>
        <keyword>sqrtsd</keyword>
        <keyword>sqrtss</keyword>
        <keyword>stmxcsr</keyword>
        <keyword>subpd</keyword>
        <keyword>subps</keyword>
        <keyword>subsd</keyword>
        <keyword>subss</keyword>
        <keyword>ucomisd</keyword>
        <keyword>ucomiss</keyword>
        <keyword>unpckhpd</keyword>
        <keyword>unpckhps</keyword>
        <keyword>unpcklpd</keyword>
        <keyword>unpcklps</keyword>
        <keyword>xorpd</keyword>
        <keyword>xorps</keyword>
    </keyword-list>

    <keyword-list _name = "Types" style = "Data Type" case-sensitive="TRUE">
        <keyword>auto</keyword>
    </keyword-list>

    <string _name = "Character Constant" style = "String" end-at-line-end = "TRUE">
        <start-regex>&apos;</start-regex>
        <end-regex>&apos;</end-regex>
    </string>

    <pattern-item _name = "Decimal" style = "Decimal">
        <regex>\b([1-9][0-9]*|0)([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b</regex>
    </pattern-item>

    <pattern-item _name = "Floating Point Number" style = "Floating Point">
        <regex>\b([0-9]+[Ee][-]?[0-9]+|([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFlL]?</regex>
    </pattern-item>

    <pattern-item _name = "Octal Number" style = "Base-N Integer">
        <regex>\b0[0-7]+([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b</regex>
    </pattern-item>

    <pattern-item _name = "Hex Number" style = "Base-N Integer">
        <regex>\b0[xX][0-9a-fA-F]+([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b</regex>
    </pattern-item>

    <keyword-list _name = "Common Macro" style = "Preprocessor" case-sensitive="TRUE">
        <keyword>__NASM_MAJOR__</keyword>
        <keyword>__NASM_MINOR__</keyword>
        <keyword>__NASM_SUBMINOR__</keyword>
        <keyword>__NASM_PATCHLEVEL__</keyword>
        <keyword>__NASM_VERSION_ID__</keyword>
        <keyword>__NASM_VER__</keyword>
        <keyword>__FILE__</keyword>
        <keyword>__LINE__</keyword>
    </keyword-list>

        

    <keyword-list _name = "MASM keywords" style = "Data Type" case-sensitive="FALSE"
        match-empty-string-at-beginning = "FALSE"
        match-empty-string-at-end = "TRUE">

        <keyword>db</keyword>
        <keyword>dd</keyword>
        <keyword>dw</keyword>
        <keyword>dq</keyword>
        <keyword>dt</keyword>
        <keyword>resb</keyword>
        <keyword>resw</keyword>
        <keyword>resd</keyword>
        <keyword>resq</keyword>
        <keyword>rest</keyword>

        <keyword>incbin</keyword>
        <keyword>times</keyword>
        <keyword>equ</keyword>
        <keyword>org</keyword>

        <keyword>bits</keyword>
        <keyword>use16</keyword>
        <keyword>use32</keyword>
        <keyword>section</keyword>

        <keyword>absolute</keyword>
        <keyword>extern</keyword>
        <keyword>global</keyword>
        <keyword>common</keyword>
        <keyword>cpu</keyword>
        <keyword>byte</keyword>
        <keyword>word</keyword>

        <keyword>struc</keyword>
        <keyword>endstruc</keyword>
        <keyword>istruc</keyword>
        <keyword>iend</keyword>
        <keyword>align</keyword>
        <keyword>alignb</keyword>
    </keyword-list>

    
    <keyword-list _name = "MASM preprocessor things" style = "Preprocessor" case-sensitive="TRUE"
        match-empty-string-at-beginning = "FALSE"
        match-empty-string-at-end = "TRUE"
        beginning-regex = "^.*\.">
        <keyword>186</keyword>
        <keyword>286</keyword>
        <keyword>286c</keyword>
        <keyword>286p</keyword>
        <keyword>287</keyword>
        <keyword>386</keyword>
        <keyword>386c</keyword>
        <keyword>386p</keyword>
        <keyword>387</keyword>
        <keyword>486</keyword>
        <keyword>486p</keyword>
        <keyword>8086</keyword>
        <keyword>8087</keyword>
        <keyword>alpha</keyword>
        <keyword>break</keyword>
        <keyword>code</keyword>
        <keyword>const</keyword>
        <keyword>continue</keyword>
        <keyword>cref</keyword>
        <keyword>data</keyword>
        <keyword>data?</keyword>
        <keyword>dosseg</keyword>
        <keyword>else</keyword>
        <keyword>elseif</keyword>
        <keyword>endif</keyword>
        <keyword>endw</keyword>
        <keyword>err</keyword>
        <keyword>err1</keyword>
        <keyword>err2</keyword>
        <keyword>errb</keyword>
        <keyword>errdef</keyword>
        <keyword>errdif</keyword>
        <keyword>errdifi</keyword>
        <keyword>erre</keyword>
        <keyword>erridn</keyword>
        <keyword>erridni</keyword>
        <keyword>errnb</keyword>
        <keyword>errndef</keyword>
        <keyword>errnz</keyword>
        <keyword>exit</keyword>
        <keyword>fardata</keyword>
        <keyword>fardata?</keyword>
        <keyword>if</keyword>
        <keyword>lall</keyword>
        <keyword>lfcond</keyword>
        <keyword>list</keyword>
        <keyword>listall</keyword>
        <keyword>listif</keyword>
        <keyword>listmacro</keyword>
        <keyword>listmacroall</keyword>
        <keyword></keyword>
        <keyword>model</keyword>
        <keyword>no87</keyword>
        <keyword>nocref</keyword>
        <keyword>nolist</keyword>
        <keyword>nolistif</keyword>
        <keyword>nolistmacro</keyword>
        <keyword>radix</keyword>
        <keyword>repeat</keyword>
        <keyword>sall</keyword>
        <keyword>seq</keyword>
        <keyword>sfcond</keyword>
        <keyword>stack</keyword>
        <keyword>startup</keyword>
        <keyword>tfcond</keyword>
        <keyword>type</keyword>
        <keyword>until</keyword>
        <keyword>untilcxz</keyword>
        <keyword>while</keyword>
        <keyword>xall</keyword>
        <keyword>xcref</keyword>
    </keyword-list>

    <keyword-list _name = "Registers" style = "Data Type" case-sensitive="FALSE"
        match-empty-string-at-beginning = "FALSE"
        match-empty-string-at-end = "TRUE">
        <keyword>dword</keyword>  

        <!-- intel 386 -->
        
        <keyword>eax</keyword>
        <keyword>ebx</keyword>
        <keyword>ecx</keyword>
        <keyword>edx</keyword>        
        <keyword>esi</keyword>
        <keyword>edi</keyword>        
        <keyword>esp</keyword>
        <keyword>ebp</keyword>

        <keyword>ax</keyword>
        <keyword>bx</keyword>
        <keyword>cx</keyword>
        <keyword>dx</keyword>
        <keyword>di</keyword>
        <keyword>si</keyword>
        <keyword>bp</keyword>
        <keyword>sp</keyword>

        <keyword>al</keyword>
        <keyword>ah</keyword>
        <keyword>bh</keyword>
        <keyword>bl</keyword>
        <keyword>ch</keyword>
        <keyword>cl</keyword>
        <keyword>dh</keyword>
        <keyword>dl</keyword>

        <keyword>cs</keyword>
        <keyword>ds</keyword>
        <keyword>ss</keyword>
        <keyword>es</keyword>
        <keyword>fs</keyword>
        <keyword>gs</keyword>
        
        <keyword>cr0</keyword>
        <keyword>cr2</keyword>
        <keyword>cr3</keyword>
        
        <keyword>db0</keyword>
        <keyword>db1</keyword>
        <keyword>db2</keyword>
        <keyword>db3</keyword>
        <keyword>db6</keyword>
        <keyword>db7</keyword>
        
        <keyword>tr6</keyword>
        <keyword>tr7</keyword>
        
        <keyword>st</keyword>
        <keyword>st(0)</keyword>
        <keyword>st(1)</keyword>
        <keyword>st(2)</keyword>
        <keyword>st(3)</keyword>
        <keyword>st(4)</keyword>
        <keyword>st(5)</keyword>
        <keyword>st(6)</keyword>
        <keyword>st(7)</keyword>
        
        <keyword>mm0</keyword>
        <keyword>mm1</keyword>
        <keyword>mm2</keyword>
        <keyword>mm3</keyword>
        <keyword>mm4</keyword>
        <keyword>mm5</keyword>
        <keyword>mm6</keyword>
        <keyword>mm7</keyword>
        
        <keyword>xmm0</keyword>
        <keyword>xmm1</keyword>
        <keyword>xmm2</keyword>
        <keyword>xmm3</keyword>
        <keyword>xmm4</keyword>
        <keyword>xmm5</keyword>
        <keyword>xmm6</keyword>
        <keyword>xmm7</keyword>
    </keyword-list>

    <keyword-list _name = "MASM preprocessor things" style = "Preprocessor" case-sensitive="TRUE"
        match-empty-string-at-beginning = "FALSE"
        match-empty-string-at-end = "TRUE"
        beginning-regex = "^[ \t]*%">
        <keyword>define</keyword>
        <keyword>xdefine</keyword>
        <keyword>undef</keyword>
        <keyword>assign</keyword>
        <keyword>strlen</keyword>
        <keyword>substr</keyword>

        <keyword>if</keyword>
        <keyword>elif</keyword>
        <keyword>else</keyword>
        <keyword>endif</keyword>
        <keyword>ifdef</keyword>

        <keyword>ifctx</keyword>
        <keyword>ifidn</keyword>
        <keyword>ifidni</keyword>

        <keyword>ifid</keyword>
        <keyword>ifnum</keyword>
        <keyword>ifstr</keyword>
        <keyword>ifnstr</keyword>
        <keyword>elifstr</keyword>
        <keyword>elifnstr</keyword>
        <keyword>ifnum</keyword>
        <keyword>ifnnum</keyword>
        <keyword>elifnum</keyword>
        <keyword>elifnnum</keyword>

        <keyword>macro</keyword>
        <keyword>endmacro</keyword>

        <keyword>rep</keyword>
        <keyword>endrep</keyword>


        <keyword>include</keyword>

        <keyword>push</keyword>
        <keyword>pop</keyword>


        <keyword>line</keyword>
        <keyword>!</keyword>

        <keyword>arg</keyword>
        <keyword>stacksize</keyword>
        <keyword>local</keyword>
    </keyword-list>

</language>
