From 6fe38d2d9de84b12053bd27dc7dff066be993ba9 Mon Sep 17 00:00:00 2001 From: "Terry A. Davis" Date: Wed, 30 Mar 2016 03:00:26 +0200 Subject: [PATCH] TempleOSCDV4.05.ISO --- 0000Boot/0000Kernel.BIN.C | Bin 182496 -> 183696 bytes Adam/ADbg.CPP | 7 + Adam/ADefine.CPP | 4 +- Adam/DolDoc/DocFind.CPP | 15 +- Adam/DolDoc/DocForm.CPP | 26 +- Adam/DolDoc/DocGr.CPP | 20 +- Adam/DolDoc/DocInit.CPP | 10 +- Adam/DolDoc/DocPlain.CPP | 8 +- Adam/DolDoc/DocPutS.CPP | 5 +- Adam/DolDoc/DocRecalc.CPP | 32 +- Adam/DolDoc/DocWidgetWiz.CPP | 169 +- Adam/Gr/GrBitMap.CPP | 14 +- Adam/Gr/GrGlbls.CPP | 3 +- Adam/Gr/GrPrimatives.CPP | 2 +- Adam/Gr/GrScreen.CPP | 8 +- Adam/Gr/SpriteCode.CPP | 52 +- Adam/Menu.CPP | 8 +- Adam/Opt/Utils/Find.CPP | 6 +- Apps/Budget/BgtEntry.CPP | 8 +- Apps/Budget/Budget.CPP | 6 +- Apps/GrModels/BallGen.CPP | 2 +- Apps/GrModels/ManGen.CPP | 56 +- Compiler/Asm.CPP | 76 +- Compiler/AsmInit.CPP | 113 +- Compiler/AsmLib.CPP | 8 +- Compiler/AsmResolve.CPP | 13 +- Compiler/BackA.CPP | 557 ++- Compiler/BackB.CPP | 479 +-- Compiler/BackC.CPP | 632 ++-- Compiler/BackFA.CPP | 281 +- Compiler/BackFB.CPP | 378 +- Compiler/BackLib.CPP | 224 +- Compiler/CExcept.CPP | 44 +- Compiler/CInit.CPP | 53 +- Compiler/CMain.CPP | 19 +- Compiler/CMisc.CPP | 16 +- Compiler/Compiler.BIN | Bin 198275 -> 191724 bytes Compiler/Compiler.MAP | 546 +-- Compiler/CompilerB.HPP | 2 +- Compiler/Lex.CPP | 7 +- Compiler/OpCodes.TXT | 568 ++- Compiler/OptLib.CPP | 19 +- Compiler/OptPass012.CPP | 20 +- Compiler/OptPass3.CPP | 62 +- Compiler/OptPass4.CPP | 201 +- Compiler/OptPass5.CPP | 38 +- Compiler/OptPass6.CPP | 136 +- Compiler/OptPass789A.CPP | 265 +- Compiler/PrsExp.CPP | 66 +- Compiler/PrsStmt.CPP | 100 +- Compiler/PrsVar.CPP | 34 +- Compiler/UAsm.CPP | 50 +- Demo/AcctExample/HomeLocalize.CPP | 2 +- Demo/AcctExample/PersonalNotes.TXT | 15 +- Demo/AcctExample/Registry.CPP | 10 +- Demo/AcctExample/TOSDistro.CPP | 12 +- Demo/AcctExample/TOSHolySpirit.CPP | 28 +- Demo/AcctExample/TOSMisc.CPP | 2 +- Demo/AcctExample/TOSToHtml.CPP | 4 +- Demo/Asm/AsmAndC1.CPP | 2 +- Demo/Asm/AsmAndC2.CPP | 4 +- Demo/Asm/AsmHelloWorld.CPP | 2 +- Demo/Asm/BuzzFizz.CPP | 4 +- Demo/Asm/MulByHand.CPP | 2 +- Demo/Asm/PutDec.CPP | 2 +- Demo/Directives.CPP | 4 +- Demo/DolDoc/ClickCallBack.CPP | 13 +- Demo/DolDoc/Form.CPP | 17 +- Demo/ExtendedChars.CPP | 4 +- Demo/Games/BomberGolf.CPP | Bin 18701 -> 18706 bytes Demo/Games/CharDemo.CPP | 191 + Demo/Games/EagleDive.CPP | 23 +- .../{CharGraphics.CPP => CharAnimation.CPP} | 12 +- Demo/Graphics/FontEd.CPP | 3 +- Demo/Graphics/SunMoon.CPP | 2 +- Demo/Lectures/FixedPoint.CPP | 10 +- Demo/Lectures/FixedPointAdvanced.CPP | 4 +- Demo/Lectures/MiniCompiler.CPP | 6 +- Demo/Lectures/Optimization.CPP | 8 +- Demo/MultiCore/Lock.CPP | 4 +- Demo/SortFileExample/SortedF64.DAT | 2 +- Demo/SortFileExample/SortedF64.TXT | 20 +- Demo/SortFileExample/UnsortedF64.DAT | 2 +- Demo/SortFileExample/UnsortedF64.TXT | 20 +- Demo/SubIntAccess.CPP | 2 +- Demo/TimeIns.CPP | 4 +- Demo/ToHtmlToTXTExample/ToHtml.CPP | 2 +- Demo/WebLogExample/WebLogRep.CPP | 1 + Demo/WebLogExample/access_150211.LOG | 2 +- Doc/Asm.TXT | 6 +- Doc/ChangeLog.TXT | 35 +- Doc/CutCorners.TXT | 2 +- Doc/Date.TXT | 2 +- Doc/DbgOverview.TXT | 2 +- Doc/Demands.TXT | 12 +- Doc/DemoIndex.TXT | 3 +- Doc/DolDocOverview.TXT | 32 +- Doc/FAQ.TXT | 6 +- Doc/Features.TXT | 2 +- Doc/FileUtils.TXT | 2 +- Doc/Glossary.TXT | 12 +- Doc/GuideLines.TXT | 2 +- Doc/HelloWorld.TXT | 2 +- Doc/HolyC.TXT | 8 +- Doc/MemOverview.TXT | 2 +- Doc/MultiCore.TXT | 2 +- Doc/Quirks.TXT | 2 +- Doc/TimeCycles.TXT | 2 +- Doc/Transform.TXT | 2 +- Kernel/KExcept.CPP | 2 +- Kernel/KMathB.CPP | 12 +- Kernel/Kernel.MAP | 3295 +++++++++-------- Kernel/KernelA.HPP | 235 +- Kernel/KernelB.HPP | 8 +- Kernel/KernelC.HPP | 1 + Kernel/Mem/MAllocFree.CPP | 2 +- Misc/OSTestSuite.CPP | 20 +- StartOS.CPP | 2 +- 118 files changed, 4559 insertions(+), 5069 deletions(-) create mode 100644 Demo/Games/CharDemo.CPP rename Demo/Graphics/{CharGraphics.CPP => CharAnimation.CPP} (61%) diff --git a/0000Boot/0000Kernel.BIN.C b/0000Boot/0000Kernel.BIN.C index 9dc1f6cb103671445353e9ec1fb505ac767181f3..085f35c9beb6f5c1ba4c1196812b5d632380f76b 100644 GIT binary patch delta 86104 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 *)++; + } else + DocPrint(doc,"%08X ",*ptr(U64 *)++); + break; case RT_F64: if (dynamic) { doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=F64,A=\"%%16g\"$$ "); diff --git a/Adam/ADefine.CPP b/Adam/ADefine.CPP index b70a1cd..9f32160 100644 --- a/Adam/ADefine.CPP +++ b/Adam/ADefine.CPP @@ -11,8 +11,8 @@ U0 LoadDocDefines() //This is cut and replaced when I generate a distro. //See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$. $TR-C,"LineRep"$ - $ID,4$DefinePrint("DD_TEMPLEOS_LOC","119,708"); -DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,702"); + $ID,4$DefinePrint("DD_TEMPLEOS_LOC","119,248"); +DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","79,899"); $ID,-4$ DefinePrint("DD_KERNEL","%08X",bfh); bfh(I64)+=bfh->file_size-1; diff --git a/Adam/DolDoc/DocFind.CPP b/Adam/DolDoc/DocFind.CPP index d65fd97..1e1138f 100644 --- a/Adam/DolDoc/DocFind.CPP +++ b/Adam/DolDoc/DocFind.CPP @@ -385,7 +385,7 @@ I64 EdFindReplace(CDoc *doc) Bool found,unlock; I64 cmd,i,j,plen,rlen,dlen,result=-1,sf_flags; U8 *src,*dst,*dst2; - CDocEntry *doc_ce=doc->cur_entry,*doc_e; + CDocEntry *doc_ce,*doc_e,*doc_marker=NULL; if (doc->find_replace->pmt) cmd=RSAC_REPLACE; else @@ -448,10 +448,8 @@ I64 EdFindReplace(CDoc *doc) goto fr_unlock_done; } - if (doc->find_replace->local_var) { + if (doc->find_replace->local_var) EdSelectFun(doc); - doc_ce=doc->cur_entry; - } if (!doc->find_replace->replace && !doc->find_replace->local_var) { EdFindNext(doc); @@ -462,14 +460,15 @@ I64 EdFindReplace(CDoc *doc) goto fr_unlock_done; rlen=StrLen(doc->find_replace->replace_text); if (doc->root.next!=doc) { - doc_e=doc_ce; + doc_e=doc_marker=DocSplitTag(doc,doc->cur_entry,doc->cur_col, + doc->cur_entry->x+doc->cur_col,doc->cur_entry->y,DOCT_MARKER); do { if (doc_e==doc) { if (doc->find_replace->scan_fwd) doc_e=doc_e->next; else doc_e=doc_e->last; - if (doc_e==doc_ce) + if (doc_e==doc_marker) break; } if (doc_e->type_u8==DOCT_TEXT && @@ -527,9 +526,11 @@ I64 EdFindReplace(CDoc *doc) doc_e=doc_e->next; else doc_e=doc_e->last; - } while (doc_e!=doc_ce); + } while (doc_e!=doc_marker); } fr_unlock_done: + if (doc_marker) + DocEntryDel(doc,doc_marker); DocRemSoftNewLines(doc,NULL); DocRecalc(doc); DocCenter(doc); diff --git a/Adam/DolDoc/DocForm.CPP b/Adam/DolDoc/DocForm.CPP index 1e6302a..801bf9f 100644 --- a/Adam/DolDoc/DocForm.CPP +++ b/Adam/DolDoc/DocForm.CPP @@ -213,7 +213,7 @@ public Bool DocForm(U8 *_d,U8 *class_name=lastclass, CMemberLst *ml; CDocEntry *doc_e; U8 *fmtstr; - CHashClass *tempc; + CHashClass *tempc,*tempc2; CDoc *doc; Bool result=FALSE; I64 old_border_src=Fs->border_src,has_action; @@ -227,8 +227,28 @@ public Bool DocForm(U8 *_d,U8 *class_name=lastclass, doc->flags|=DOCF_MIN_SIZE; ml=tempc->member_lst_and_root; while (ml) { - if (fmtstr=MemberMetaData("fmtstr",ml)) { - doc_e=DocPrint(doc,"%s",fmtstr); + if ((fmtstr=MemberMetaData("fmtstr",ml)) && + (doc_e=DocPrint(doc,"%s",fmtstr))) { + tempc2=ml->member_class; + if ((doc_e->type_u8==DOCT_DATA || doc_e->type_u8==DOCT_LST || + doc_e->type_u8==DOCT_CHECK_BOX) && !tempc2->ptr_stars_cnt) { + tempc2=OptClassFwd(tempc2); + tempc2-=tempc2->ptr_stars_cnt; + if (tempc2->type & HTT_INTERNAL_TYPE) { + if (ml->dim.next) { //Array + if (tempc2->raw_type==RT_U8 && + LBtr(&doc_e->de_flags,&DOCEf_DFT_LEN)) { + doc_e->len=ml->dim.total_cnt; + if (doc_e->de_flags&DOCEF_HAS_TERMINATOR) + doc_e->len--; + Free(doc_e->tag); //See $LK,"DataTagWidth",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$ + doc_e->tag=MAlloc(doc_e->len+doc_e->min_col+2, + doc->mem_task); //+2 because "_\0" + } + } else if (LBtr(&doc_e->de_flags,DOCEf_DFT_RAW_TYPE)) + doc_e->raw_type=tempc2->raw_type; + } + } if (doc_e->de_flags&DOCEF_REMALLOC_DATA) { doc_e->user_data=_d+ml->offset; doc_e->data=*doc_e->user_data(U8 **); diff --git a/Adam/DolDoc/DocGr.CPP b/Adam/DolDoc/DocGr.CPP index 3710ae6..01902c6 100644 --- a/Adam/DolDoc/DocGr.CPP +++ b/Adam/DolDoc/DocGr.CPP @@ -53,16 +53,16 @@ public I64 PopUpColorLighting(U8 *header=NULL) class CTransformForm { - F64 x_scale fmtstr "$$DA-TRM,RT=F64,A=\"X Scale :%12.6f\"$$\n"; - F64 y_scale fmtstr "$$DA-TRM,RT=F64,A=\"Y Scale :%12.6f\"$$\n"; - F64 z_scale fmtstr "$$DA-TRM,RT=F64,A=\"Z Scale :%12.6f\"$$\n"; - F64 é_z fmtstr - "\nAngles are in degrees\n$$DA-TRM,RT=F64,A=\"Z-Axis :%12.6f\"$$\n"; - F64 é_y fmtstr "$$DA-TRM,RT=F64,A=\"Y-Axis :%12.6f\"$$\n"; - F64 é_x fmtstr "$$DA-TRM,RT=F64,A=\"X-Axis :%12.6f\"$$\n"; - F64 x_offset fmtstr "\n$$DA-TRM,RT=F64,A=\"X Offset:%12.6f\"$$\n"; - F64 y_offset fmtstr "$$DA-TRM,RT=F64,A=\"Y Offset:%12.6f\"$$\n"; - F64 z_offset fmtstr "$$DA-TRM,RT=F64,A=\"Z Offset:%12.6f\"$$\n"; + F64 x_scale fmtstr "$$DA-TRM,A=\"X Scale :%12.6f\"$$\n"; + F64 y_scale fmtstr "$$DA-TRM,A=\"Y Scale :%12.6f\"$$\n"; + F64 z_scale fmtstr "$$DA-TRM,A=\"Z Scale :%12.6f\"$$\n"; + F64 é_z fmtstr "\nAngles are in degrees\n" + "$$DA-TRM,A=\"Z-Axis :%12.6f\"$$\n"; + F64 é_y fmtstr "$$DA-TRM,A=\"Y-Axis :%12.6f\"$$\n"; + F64 é_x fmtstr "$$DA-TRM,A=\"X-Axis :%12.6f\"$$\n"; + F64 x_offset fmtstr "\n$$DA-TRM,A=\"X Offset:%12.6f\"$$\n"; + F64 y_offset fmtstr "$$DA-TRM,A=\"Y Offset:%12.6f\"$$\n"; + F64 z_offset fmtstr "$$DA-TRM,A=\"Z Offset:%12.6f\"$$\n"; }; Bool PopUpTransform(I64 *r) diff --git a/Adam/DolDoc/DocInit.CPP b/Adam/DolDoc/DocInit.CPP index d6936fe..bc3ce55 100644 --- a/Adam/DolDoc/DocInit.CPP +++ b/Adam/DolDoc/DocInit.CPP @@ -7,7 +7,7 @@ U0 DocInit() CHashGeneric *temph; DefineLstLoad("ST_DOC_CMDS", - "TX\0CR\0SR\0CU\0TB\0CL\0PB\0PL\0LM\0RM\0HD\0FO\0ID\0FG\0" + "TX\0CR\0SR\0CU\0MK\0TB\0CL\0PB\0PL\0LM\0RM\0HD\0FO\0ID\0FG\0" "BG\0FD\0BD\0PT\0WW\0UL\0IV\0BK\0SX\0SY\0CM\0AN\0LK\0BT\0" "DA\0CB\0LS\0MA\0MU\0HX\0TR\0SP\0IB\0IS\0SO\0HL\0HC\0ER\0"); DefineLstLoad("ST_DOC_FLAGS", @@ -15,7 +15,7 @@ U0 DocInit() "LC\0LA\0RC\0RA\0LX\0CX\0RX\0TY\0CY\0BY\0" "HL\0WW\0BK\0IV\0SEL\0UL\0" "TC\0PRY\0MRX\0WR\0L\0X\0Q\0FST\0B\0S\0BD\0C\0CA\0RD\0UD\0P\0M\0" - "TRM\0Z\0H\0TR\0LS\0SK\0PU\0SIF\0FS\0NC\0DD\0"); + "TRM\0Z\0H\0TR\0LS\0SK\0PU\0SIF\0FS\0NC\0DD\0DL\0DRT\0"); DefineLstLoad("ST_LINK_TYPES", "FI\0FA\0FF\0FL\0MN\0PI\0PF\0PL\0BF\0DN\0HI\0AD\0AI\0AA\0AF\0AL\0"); @@ -26,9 +26,9 @@ U0 DocInit() MemSet(doldoc.dft_de_flags, 0,sizeof(doldoc.dft_de_flags)); MemSet(doldoc.dft_type_flags, 0,sizeof(doldoc.dft_type_flags)); - cc=CmpCtrlNew("TX+T;DA+P+TRM+T;CM+LE+RE;AN+T;LK+L+UL+T;MA+X+UL+T;MU+X+UL+T;" - "BT+X+B+T;CB+CA+P+T;LS+LS+P+T;HX+P+Z;TR+TR+C+CA+UL+T;SP+T;IB+T;IS+T;" - "SO+T;HC+T;",CCF_DONT_FREE_BUF); + cc=CmpCtrlNew("TX+T;DA+P+TRM+T+DL+DRT;CM+LE+RE;AN+T;LK+L+UL+T;MA+X+UL+T;" + "MU+X+UL+T;BT+X+B+T;CB+CA+P+T+DRT;LS+LS+P+T+DRT;HX+P+Z;TR+TR+C+CA+UL+T;" + "SP+T;IB+T;IS+T;SO+T;HC+T;",CCF_DONT_FREE_BUF); cc->htc.hash_table_lst=NULL; Lex(cc); while (cc->token==TK_IDENT) { diff --git a/Adam/DolDoc/DocPlain.CPP b/Adam/DolDoc/DocPlain.CPP index 826a5b0..8e083cb 100644 --- a/Adam/DolDoc/DocPlain.CPP +++ b/Adam/DolDoc/DocPlain.CPP @@ -338,9 +338,10 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st) } break; case DOCEf_LEN: - if (cc->token) + if (cc->token) { doc_e->len=LexExpression(cc); - else + doc_e->de_flags&=~DOCEF_DFT_LEN; + } else goto pd_err; break; case DOCEf_AUX_STR: @@ -349,7 +350,7 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st) doc_e->aux_str=StrNew(st2,doc->mem_task); Free(st2); //$AN,"Anchor",A="DataTagWidth"$ - if (i==DOCT_DATA) { + if (i==DOCT_DATA) { //See $LK,"DocForm",A="MN:DocForm"$() if (ptr=StrMatch(":",doc_e->aux_str)) doc_e->min_col=ptr-doc_e->aux_str+1; doc_e->tag=MAlloc(doc_e->len+doc_e->min_col+2, @@ -430,6 +431,7 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st) if (j<0) goto pd_err; doc_e->raw_type=j; + doc_e->de_flags&=~DOCEF_DFT_RAW_TYPE; Lex(cc); } else goto pd_err; diff --git a/Adam/DolDoc/DocPutS.CPP b/Adam/DolDoc/DocPutS.CPP index fcaf794..19beace 100644 --- a/Adam/DolDoc/DocPutS.CPP +++ b/Adam/DolDoc/DocPutS.CPP @@ -2,8 +2,8 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st) {//Don't use this. Use $LK-UL,"DocPrint",A="MN:DocPrint"$(). -//Does not handle partial Doc entries - //Returns last newly created dollar-sign CDocEntry. +//Does not handle partial Doc entries. + //Returns last newly created dollar-sign CDocEntry or NULL. U8 *ptr=st,*ptr2,*st2,*ptr3,*ptr4,*src, *char_bitmap; Bool unlock; @@ -157,6 +157,7 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st) public CDocEntry *DocPrint(CDoc *doc=NULL,U8 *fmt,...) {//You must not print partial doc cmds. +//Returns last newly created dollar-sign CDocEntry or NULL. U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); CDocEntry *result=DocPutS(doc,buf); Free(buf); diff --git a/Adam/DolDoc/DocRecalc.CPP b/Adam/DolDoc/DocRecalc.CPP index bfdbb0f..1b8a9b4 100644 --- a/Adam/DolDoc/DocRecalc.CPP +++ b/Adam/DolDoc/DocRecalc.CPP @@ -129,20 +129,26 @@ U0 DocRecalcXY(CDoc *doc,CDocEntry *doc_e, } CDocEntry *DocSplitTag(CDoc *doc,CDocEntry *doc_e,I64 i,I64 x,I64 y,I64 type_u8) -{//Split tag at i, insert DOCT_SOFT_NEW_LINE or DOCT_CURSOR +{//Split tag at i, insert DOCT_SOFT_NEW_LINE, DOCT_MARKER or DOCT_CURSOR U8 *ptr; - CDocEntry *doc_e2=MAllocIdentical(doc_e,doc->mem_task); - doc_e2->tag=StrNew(doc_e->tag+i,doc->mem_task); - doc_e2->de_flags=doc_e->de_flags&~DOCEG_HAS_ALLOC|DOCEF_TAG; - QueIns(doc_e2,doc_e); - if (doc->cur_entry==doc_e && doc->cur_col>=i) { - doc->cur_entry=doc_e2; - doc->cur_col=doc->cur_col-i; - } - doc_e->tag[i]=0; - ptr=StrNew(doc_e->tag,doc->mem_task); - Free(doc_e->tag); - doc_e->tag=ptr; + CDocEntry *doc_e2; + if (doc_e->type_u8==DOCT_TEXT && i) { + if (itag)) { + doc_e2=MAllocIdentical(doc_e,doc->mem_task); + doc_e2->tag=StrNew(doc_e->tag+i,doc->mem_task); + doc_e2->de_flags=doc_e->de_flags&~DOCEG_HAS_ALLOC|DOCEF_TAG; + QueIns(doc_e2,doc_e); + if (doc->cur_entry==doc_e && doc->cur_col>=i) { + doc->cur_entry=doc_e2; + doc->cur_col=doc->cur_col-i; + } + doc_e->tag[i]=0; + ptr=StrNew(doc_e->tag,doc->mem_task); + Free(doc_e->tag); + doc_e->tag=ptr; + } + } else + doc_e=doc_e->last; doc_e2=DocEntryNewBase(doc,type_u8|doc_e->type & 0xFFFFFF00, doc_e->de_flags&~DOCEG_HAS_ARG,x,y,doc_e->page_line_num); MemCpy(&doc_e2->settings,&doc_e->settings,sizeof(CDocSettings)); diff --git a/Adam/DolDoc/DocWidgetWiz.CPP b/Adam/DolDoc/DocWidgetWiz.CPP index 0300bb9..2db6b8d 100644 --- a/Adam/DolDoc/DocWidgetWiz.CPP +++ b/Adam/DolDoc/DocWidgetWiz.CPP @@ -31,12 +31,12 @@ I64 PopUpLinkType(Bool include_anchor) class CEdFileLink { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + file[512] fmtstr "$$DA-P,A=\"File :%s\"$$\n"; I64 book; U8 aux[512]; I64 num; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -44,12 +44,12 @@ class CEdFileLink class CEdFileAnchorLink { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + file[512] fmtstr "$$DA-P,A=\"File :%s\"$$\n"; I64 book; - U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Anchor Label :%s\"$$\n"; + U8 aux[512] fmtstr "$$DA-P,A=\"Anchor Label :%s\"$$\n"; I64 num; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -57,12 +57,12 @@ class CEdFileAnchorLink class CEdFileFindLink { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + file[512] fmtstr "$$DA-P,A=\"File :%s\"$$\n"; I64 book; - U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Str :%s\"$$\n"; + U8 aux[512] fmtstr "$$DA-P,A=\"Str :%s\"$$\n"; I64 num fmtstr "$$DA-TRM,A=\"Occurrence Num:%04d\"$$\n"; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -70,12 +70,12 @@ class CEdFileFindLink class CEdFileLineLink { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + file[512] fmtstr "$$DA-P,A=\"File :%s\"$$\n"; I64 book; U8 aux[512]; I64 num fmtstr "$$DA-TRM,A=\"Line Num :%04d\"$$\n"; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -83,12 +83,12 @@ class CEdFileLineLink class CEdManPageLink { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", file[512]; I64 book; - U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Label :%s\"$$\n"; + U8 aux[512] fmtstr "$$DA-P,A=\"Label :%s\"$$\n"; I64 num; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -96,12 +96,12 @@ class CEdManPageLink class CEdAddrLink { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", file[512]; I64 book; - U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Addr Exp :%s\"$$\n"; + U8 aux[512] fmtstr "$$DA-P,A=\"Addr Exp :%s\"$$\n"; I64 num fmtstr "$$DA-TRM,A=\"Bin Size :%04d\"$$\n"; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -109,12 +109,12 @@ class CEdAddrLink class CEdPlaceAnchor { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", file[512]; I64 book; - U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Anchor Label :%s\"$$\n"; + U8 aux[512] fmtstr "$$DA-P,A=\"Anchor Label :%s\"$$\n"; I64 num; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up, quote fmtstr "$$CB,\"Quote\"$$\n", hide fmtstr "$$CB,\"Hide\"$$\n"; @@ -122,13 +122,13 @@ class CEdPlaceAnchor class CEdBibleLink { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", file[512]; I64 book fmtstr "$$LS,D=\"ST_BIBLE_BOOKS\"$$\n"; - U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Chapter Verse :%s\"$$\n"; + U8 aux[512] fmtstr "$$DA-P,A=\"Chapter Verse :%s\"$$\n"; I64 num; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -136,12 +136,12 @@ class CEdBibleLink class CEdDefLink { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", file[512]; I64 book; - U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Word :%s\"$$\n"; + U8 aux[512] fmtstr "$$DA-P,A=\"Word :%s\"$$\n"; I64 num fmtstr "$$DA-TRM,A=\"Def Num :%4d\"$$\n"; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -149,12 +149,12 @@ class CEdDefLink class CEdProject { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + file[512] fmtstr "$$DA-P,A=\"File :%s\"$$\n"; I64 book; U8 aux[512]; I64 num; - U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n", hide; @@ -433,13 +433,13 @@ U0 EdInsColor() class CEdPageSetting1 { - U8 val[512] fmtstr "$$DA-P,LEN=511,A=\"Setting Val:%s\"$$\n"; + U8 val[512] fmtstr "$$DA-P,A=\"Setting Val:%s\"$$\n"; Bool winrel; }; class CEdPageSetting2 { - U8 val[512] fmtstr "$$DA-P,LEN=511,A=\"Setting Val:%s\"$$\n"; + U8 val[512] fmtstr "$$DA-P,A=\"Setting Val:%s\"$$\n"; Bool winrel fmtstr "$$CB,\"Win Relative\"$$\n"; }; @@ -507,7 +507,7 @@ I64 PopUpWidgetType() class CEdText { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n"; Bool left_x fmtstr "$$CB,\"Left X\"$$\n", center_x fmtstr "$$CB,\"Center X\"$$\n", right_x fmtstr "$$CB,\"Right X\"$$\n", @@ -517,16 +517,11 @@ class CEdText underline fmtstr "$$CB,\"Underline\"$$\n", tree fmtstr "$$CB,\"Tree\"$$\n", collapsed fmtstr "$$CB,\"Collapsed\"$$\n"; - U8 scroll_x [512] - fmtstr "$$DA-P,LEN=511,A=\"Scroll X Length Expression:%s\"$$\n", - shift_x [512] - fmtstr "$$DA-P,LEN=511,A=\"X Offset Expression :%s\"$$\n", - shift_y [512] - fmtstr "$$DA-P,LEN=511,A=\"Y Offset Expression :%s\"$$\n", - define_str[512] - fmtstr "$$DA-P,LEN=511,A=\"Define Str :%s\"$$\n", - html_link[512] - fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n"; + U8 scroll_x [512] fmtstr "$$DA-P,A=\"Scroll X Length Expression:%s\"$$\n", + shift_x [512] fmtstr "$$DA-P,A=\"X Offset Expression :%s\"$$\n", + shift_y [512] fmtstr "$$DA-P,A=\"Y Offset Expression :%s\"$$\n", + define_str[512] fmtstr "$$DA-P,A=\"Define Str :%s\"$$\n", + html_link[512] fmtstr "$$DA-P,A=\"Html Link :%s\"$$\n"; }; U0 EdInsText() @@ -570,8 +565,8 @@ U0 EdInsText() class CEdSong { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - song[512] fmtstr "$$DA-P,LEN=511,A=\"Song :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + song[512] fmtstr "$$DA-P,A=\"Song :%s\"$$\n"; }; U0 EdInsSong() @@ -584,7 +579,7 @@ U0 EdInsSong() class CEdHtmlCode { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Html Code:%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Html Code:%s\"$$\n"; }; U0 EdInsHtml() @@ -597,12 +592,9 @@ U0 EdInsHtml() class CEdMacroMenu { - U8 tag[512] - fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - left_macro[512] - fmtstr "$$DA-P,LEN=511,A=\"Left Click Macro :%s\"$$\n", - left_exp[512] - fmtstr "$$DA-P,LEN=511,A=\"Left Click Expression :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + left_macro[512] fmtstr "$$DA-P,A=\"Left Click Macro :%s\"$$\n", + left_exp[512] fmtstr "$$DA-P,A=\"Left Click Expression :%s\"$$\n"; Bool popup fmtstr "$$CB,\"PopUp\"$$\n", left_is_auto fmtstr "$$CB,\"Left is AutoStr\"$$\n", left_x fmtstr "$$CB,\"Left X \"$$\n", @@ -613,12 +605,9 @@ class CEdMacroMenu invert fmtstr "$$CB,\"Invert\"$$\n", underline fmtstr "$$CB,\"Underline\"$$\n", escape fmtstr "$$CB,\"Escape\"$$\n"; - U8 scroll_x[512] - fmtstr "$$DA-P,LEN=511,A=\"Scroll X Length Expression:%s\"$$\n", - shift_x[512] - fmtstr "$$DA-P,LEN=511,A=\"X Offset Expression :%s\"$$\n", - shift_y[512] - fmtstr "$$DA-P,LEN=511,A=\"Y Offset Expression :%s\"$$\n"; + U8 scroll_x[512] fmtstr "$$DA-P,A=\"Scroll X Length Expression:%s\"$$\n", + shift_x[512] fmtstr "$$DA-P,A=\"X Offset Expression :%s\"$$\n", + shift_y[512] fmtstr "$$DA-P,A=\"Y Offset Expression :%s\"$$\n"; }; U0 EdInsMacroMenu(Bool is_macro) @@ -633,10 +622,10 @@ U0 EdInsMacroMenu(Bool is_macro) if (e->left_x ) CatPrint(buf,"+LX"); if (e->center_x) CatPrint(buf,"+CX"); if (e->right_x ) CatPrint(buf,"+RX"); - if (e->margin_rel) CatPrint(buf,"+MRX"); + if (e->margin_rel) CatPrint(buf,"+MRX"); if (e->blink) CatPrint(buf,"+BK"); if (e->invert) CatPrint(buf,"+IV"); - if (!e->underline) CatPrint(buf,"-UL"); + if (!e->underline) CatPrint(buf,"-UL"); if (!e->escape) CatPrint(buf,"-X"); if (e->left_is_auto) CatPrint(buf,"+LA"); if (*e->tag || is_macro) { @@ -673,17 +662,16 @@ U0 EdInsMacroMenu(Bool is_macro) class CEdButton { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n"; Bool popup fmtstr "$$CB,\"PopUp\"$$\n", left_x fmtstr "$$CB,\"Left X \"$$\n", center_x fmtstr "$$CB,\"Center X \"$$\n", right_x fmtstr "$$CB,\"Right X \"$$\n", margin_rel fmtstr "$$CB,\"Margin Rel X\"$$\n", escape fmtstr "$$CB,\"Escape\"$$\n"; - U8 left_macro[512] fmtstr "$$DA-P,LEN=511,A=\"Left Click Macro:%s\"$$\n"; + U8 left_macro[512] fmtstr "$$DA-P,A=\"Left Click Macro:%s\"$$\n"; Bool left_is_auto fmtstr "$$CB,\"Left is AutoStr\"$$\n"; - U8 left_exp[512] fmtstr "$$DA-P,LEN=511," - "A=\"Left Click Expression:%s\"$$\n"; + U8 left_exp[512] fmtstr "$$DA-P,A=\"Left Click Expression:%s\"$$\n"; Bool quote fmtstr "$$CB,\"Quote\"$$\n"; }; @@ -734,8 +722,8 @@ U0 EdInsButton() class CEdCursorMovement { - U8 left_exp[512] fmtstr "$$DA-P,LEN=511,A=\"X Expression (LE):%s\"$$\n", - right_exp[512] fmtstr "$$DA-P,LEN=511,A=\"Y Expression (RE):%s\"$$\n"; + U8 left_exp[512] fmtstr "$$DA-P,A=\"X Expression (LE):%s\"$$\n", + right_exp[512] fmtstr "$$DA-P,A=\"Y Expression (RE):%s\"$$\n"; Bool left_x fmtstr "$$CB,\"Left X \"$$\n", center_x fmtstr "$$CB,\"Center X \"$$\n", right_x fmtstr "$$CB,\"Right X \"$$\n", @@ -753,14 +741,14 @@ U0 EdInsCursorMovement() CEdCursorMovement *e=CAlloc(sizeof(CEdCursorMovement)); if (DocForm(e,,,,ctrl_L_footer)) { *buf=0; - if (e->left_x ) CatPrint(buf,"+LX"); - if (e->center_x) CatPrint(buf,"+CX"); - if (e->right_x ) CatPrint(buf,"+RX"); - if (e->margin_rel) CatPrint(buf,"+MRX"); - if (e->top_y ) CatPrint(buf,"+TY"); - if (e->center_y) CatPrint(buf,"+CY"); - if (e->bottom_y) CatPrint(buf,"+BY"); - if (e->page_rel) CatPrint(buf,"+PRY"); + if (e->left_x ) CatPrint(buf,"+LX"); + if (e->center_x) CatPrint(buf,"+CX"); + if (e->right_x ) CatPrint(buf,"+RX"); + if (e->margin_rel) CatPrint(buf,"+MRX"); + if (e->top_y ) CatPrint(buf,"+TY"); + if (e->center_y) CatPrint(buf,"+CY"); + if (e->bottom_y) CatPrint(buf,"+BY"); + if (e->page_rel) CatPrint(buf,"+PRY"); if (!*e->left_exp) CatPrint(buf,"-LE"); if (!*e->right_exp) CatPrint(buf,"-RE"); if (e->quote) @@ -779,7 +767,7 @@ U0 EdInsCursorMovement() class CEdDataNum { - U8 fmt_str[512] fmtstr "$$DA-P,LEN=511,A=\"Format Str:%s\"$$\n"; + U8 fmt_str[512] fmtstr "$$DA-P,A=\"Format Str:%s\"$$\n"; I64 len; Bool term fmtstr "$$CB,\"Form Field Terminator\"$$\n", remalloc, @@ -789,7 +777,7 @@ class CEdDataNum class CEdDataStr { - U8 fmt_str[512] fmtstr "$$DA-P,LEN=511,A=\"Format Str:%s\"$$\n"; + U8 fmt_str[512] fmtstr "$$DA-P,A=\"Format Str:%s\"$$\n"; I64 len fmtstr "$$DA,A=\"Length:%d\"$$\n"; Bool term fmtstr "$$CB,\"Zero Terminator\"$$\n", remalloc fmtstr "$$CB,\"Remalloc for Unlimited Length\"$$\n", @@ -845,7 +833,7 @@ U0 EdInsData() class CEdCheckBox { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n"; Bool refresh fmtstr "$$CB,\"Refresh Data\"$$\n"; I64 type fmtstr "$$LS,D=\"ST_INT_SIZE_TYPES\"$$\n"; }; @@ -872,8 +860,8 @@ U0 EdInsCheckBox() class CEdLst { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Dft Select :%s\"$$\n", - define_str[512] fmtstr "$$DA-P,LEN=511,A=\"Define Str :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Dft Select :%s\"$$\n", + define_str[512] fmtstr "$$DA-P,A=\"Define Str :%s\"$$\n"; Bool refresh fmtstr "$$CB,\"Refresh Data\"$$\n"; I64 type fmtstr "$$LS,D=\"ST_INT_SIZE_TYPES\"$$\n"; }; @@ -932,12 +920,11 @@ U0 EdInsHexEd() class CEdBin { - U8 tag[512] fmtstr "$$DA-P,LEN=511," - "A=\"Tag Text :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n"; I64 bin_num fmtstr "$$DA,A=\"Bin Num:%d\"$$\n"; - U8 bin_ptr_link_file[512] fmtstr "$$DA-P,LEN=511,A=\"File:%s\"$$\n"; + U8 bin_ptr_link_file[512] fmtstr "$$DA-P,A=\"File:%s\"$$\n"; I64 bin_ptr_link_bin_num fmtstr "$$DA,A=\"File Bin Num:%d\"$$\n"; - U8 bin_ptr_link_tag[512] fmtstr "$$DA-P,LEN=511,A=\"File Bin Tag:%s\"$$\n"; + U8 bin_ptr_link_tag[512] fmtstr "$$DA-P,A=\"File Bin Tag:%s\"$$\n"; }; U0 EdInsBin(I64 bin_num,I64 type) @@ -970,7 +957,7 @@ U0 EdInsBin(I64 bin_num,I64 type) class CEdTree { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n"; I64 indent fmtstr "$$DA,A=\"Indention:%d\"$$\n"; Bool collapsed fmtstr "$$CB,\"Collapsed\"$$\n"; }; @@ -1055,7 +1042,7 @@ U0 EdInsWidgetWiz() #define EST_SPRITE_PTR 1 #define EST_DUP_SPRITE 2 #define EST_SPRITE_SIZE 3 -#define EST_SPRITE_MACRO 4 +#define EST_SPRITE_MACRO 4 #define EST_SPRITE_MENU 5 #define EST_SPRITE_LINK 6 @@ -1087,8 +1074,8 @@ I64 PopUpSpriteType() class CEdMacroSprite { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - exp[512] fmtstr "$$DA-P,LEN=511,A=\"Macro :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + exp[512] fmtstr "$$DA-P,A=\"Macro :%s\"$$\n"; Bool escape fmtstr "$$CB,\"Escape\"$$\n", popup fmtstr "$$CB,\"PopUp\"$$\n", is_auto fmtstr "$$CB,\"AutoStr\"$$\n"; @@ -1096,8 +1083,8 @@ class CEdMacroSprite class CEdMenuSprite { - U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n", - exp[512] fmtstr "$$DA-P,LEN=511,A=\"Expression :%s\"$$\n"; + U8 tag[512] fmtstr "$$DA-P,A=\"Tag Text :%s\"$$\n", + exp[512] fmtstr "$$DA-P,A=\"Expression :%s\"$$\n"; Bool escape fmtstr "$$CB,\"Escape\"$$\n", popup, is_auto; diff --git a/Adam/Gr/GrBitMap.CPP b/Adam/Gr/GrBitMap.CPP index efaeb7d..c76df4f 100644 --- a/Adam/Gr/GrBitMap.CPP +++ b/Adam/Gr/GrBitMap.CPP @@ -9,7 +9,7 @@ public Bool GrPlot0(CDC *dc=gr.dc,I64 x,I64 y) if (dc->flags & DCF_LOCATE_NEAREST) { dist=DistSqrI64(x,y,dc->cur_x,dc->cur_y); - if (distnearest_dist) { + if (dist<=dc->nearest_dist) { dc->nearest_dist=dist; dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num; } @@ -102,7 +102,7 @@ public I64 GrBlot(CDC *dc=gr.dc,I64 x,I64 y,CDC *img) } if (dc->flags & DCF_LOCATE_NEAREST) { dist=DistSqrI64(x+img->width>>1,y+img->height>>1,dc->cur_x,dc->cur_y); - if (distnearest_dist) { + if (dist<=dc->nearest_dist) { dc->nearest_dist=dist; dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num; } @@ -669,7 +669,7 @@ public I64 GrPutChar(CDC *dc=gr.dc,I64 x,I64 y,U8 ch) } if (dc->flags & DCF_LOCATE_NEAREST) { dist=DistSqrI64(x+w2>>1,y+h2>>1,dc->cur_x,dc->cur_y); - if (distnearest_dist) { + if (dist<=dc->nearest_dist) { dc->nearest_dist=dist; dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num; } @@ -961,7 +961,7 @@ public I64 GrRect(CDC *dc=gr.dc,I64 x,I64 y,I64 w,I64 h) dist=0; else dist=DistSqrI64(x+w>>1,y+h>>1,dc->cur_x,dc->cur_y); - if (distnearest_dist) { + if (dist<=dc->nearest_dist) { dc->nearest_dist=dist; dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num; } @@ -1515,7 +1515,7 @@ I64 GrRayLen(CDC *dc,I64 *x1,I64 y,I64 z=0,I32 *db=NULL) !not_color && c==dc->color2) && plot) { if (dc->flags & DCF_LOCATE_NEAREST) { dist=DistSqrI64(x3,y3,dc->cur_x,dc->cur_y); - if (distnearest_dist) { + if (dist<=dc->nearest_dist) { dc->nearest_dist=dist; dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num; } @@ -1592,7 +1592,7 @@ I64 GrRayLen(CDC *dc,I64 *x1,I64 y,I64 z=0,I32 *db=NULL) !not_color && c==dc->color2) && plot) { if (dc->flags & DCF_LOCATE_NEAREST) { dist=DistSqrI64(x3,y3,dc->cur_x,dc->cur_y); - if (distnearest_dist) { + if (dist<=dc->nearest_dist) { dc->nearest_dist=dist; dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num; } @@ -1721,7 +1721,7 @@ public I64 GrHLine(CDC *dc=gr.dc,I64 x1,I64 x2,I64 y,I64 z1=0,I64 z2=0) else dist=SqrI64(dc->cur_x-x2); dist+=SqrI64(y-dc->cur_y); - if (distnearest_dist) { + if (dist<=dc->nearest_dist) { dc->nearest_dist=dist; dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num; } diff --git a/Adam/Gr/GrGlbls.CPP b/Adam/Gr/GrGlbls.CPP index 2f3205b..9d8ce8b 100644 --- a/Adam/Gr/GrGlbls.CPP +++ b/Adam/Gr/GrGlbls.CPP @@ -36,7 +36,8 @@ public class CGrGlbls I64 screen_zoom,sx,sy; //When zoomed, this keeps the mouse centered. - Bool continuous_scroll; + Bool continuous_scroll, + hide_row,hide_col; } gr; //See $LK,"RLf_VGA",A="FF:::/Kernel/KStart.CPP,RLf_VGA"$ diff --git a/Adam/Gr/GrPrimatives.CPP b/Adam/Gr/GrPrimatives.CPP index 9ce3adc..544bdef 100644 --- a/Adam/Gr/GrPrimatives.CPP +++ b/Adam/Gr/GrPrimatives.CPP @@ -384,7 +384,7 @@ public Bool GrPlot3(CDC *dc=gr.dc,I64 x,I64 y,I64 z) } if (dc->flags & DCF_LOCATE_NEAREST) { dist=DistSqrI64(x,y,dc->cur_x,dc->cur_y); - if (distnearest_dist) { + if (dist<=dc->nearest_dist) { dc->nearest_dist=dist; dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num; } diff --git a/Adam/Gr/GrScreen.CPP b/Adam/Gr/GrScreen.CPP index fd5612c..eedd922 100644 --- a/Adam/Gr/GrScreen.CPP +++ b/Adam/Gr/GrScreen.CPP @@ -172,7 +172,7 @@ U0 GrUpdateTextBG() Bool blink_flag=Blink; U8 *dst2=dst; - if (gr.pan_text_x) { + if (gr.pan_text_x||gr.hide_col) { gr.pan_text_x=ClampI64(gr.pan_text_x,-7,7); j=AbsI64(gr.pan_text_x)/FONT_WIDTH+1; num_cols-=j; @@ -197,7 +197,7 @@ U0 GrUpdateTextBG() } dst=dst2; - if (gr.pan_text_y) { + if (gr.pan_text_y||gr.hide_row) { gr.pan_text_y=ClampI64(gr.pan_text_y,-7,7); j=AbsI64(gr.pan_text_y)/FONT_HEIGHT+1; num_rows-=j; @@ -261,7 +261,7 @@ U0 GrUpdateTextFG() U8 *dst_start=gr.dc2->body,*dst_end=dst_start+w1*gr.dc2->height-7*w1-8; Bool blink_flag=Blink; - if (gr.pan_text_x) { + if (gr.pan_text_x||gr.hide_col) { gr.pan_text_x=ClampI64(gr.pan_text_x,-7,7); j=AbsI64(gr.pan_text_x)/FONT_WIDTH+1; num_cols-=j; @@ -273,7 +273,7 @@ U0 GrUpdateTextFG() w2+=j*FONT_WIDTH; } - if (gr.pan_text_y) { + if (gr.pan_text_y||gr.hide_row) { gr.pan_text_y=ClampI64(gr.pan_text_y,-7,7); j=AbsI64(gr.pan_text_y)/FONT_HEIGHT+1; num_rows-=j; diff --git a/Adam/Gr/SpriteCode.CPP b/Adam/Gr/SpriteCode.CPP index 0071f38..d4e1c24 100644 --- a/Adam/Gr/SpriteCode.CPP +++ b/Adam/Gr/SpriteCode.CPP @@ -238,7 +238,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) g.type=type; LexD2I32(cc,&g.pp.x1); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , LexD2I32(cc,&g.pp.x2); break; @@ -247,7 +247,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) Lex(cc); //Skip { LexD2I32(cc,&g.pp.x1); if (cc->token!=':') - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); Lex(cc); //Skip : LexD2I32(cc,&g.pp.x2); g.ppa.x2+=g.pp.x1; @@ -289,7 +289,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) g.type=SPT_CIRCLE; LexD2I32(cc,&g.pr.x1); if (cc->token!=':') - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); Lex(cc); //Skip : g.pr.radius=LexExpressionI64(cc); break; @@ -297,17 +297,17 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) Lex(cc); //Skip { g.pwhas.sides=LexExpressionI64(cc); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); case SPT_ELLIPSE: Lex(cc); //Skip { g.type=type; LexD2I32(cc,&g.pwha.x1); if (cc->token!=':') - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); Lex(cc); //Skip : LexD2I32(cc,&g.pwha.width); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , g.pwha.angle=ã/180*LexExpressionF64(cc); break; @@ -323,11 +323,11 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) g.type=type; LexD2I32(cc,&g.ps.x1); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); if (Lex(cc)==TK_STR) //Skip , st=LexExtStr(cc); else - LexExcept(cc,"expecting string at "); + LexExcept(cc,"Expecting string at "); size=SpriteElemQuedBaseSize(type); i=StrLen(st)+1; result=MAlloc(size+i); @@ -348,7 +348,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) Lex(cc); //Skip , } if (g.nu.num<2) - LexExcept(cc,"expecting point at "); + LexExcept(cc,"Expecting point at "); size=SpriteElemQuedBaseSize(SPT_POLYLINE); result=MAlloc(size+g.nu.num*sizeof(CD2I32)); MemCpy(result,&g,size); @@ -377,7 +377,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) Lex(cc); //Skip , } if (g.nu.num<2) - LexExcept(cc,"expecting point at "); + LexExcept(cc,"Expecting point at "); size=SpriteElemQuedBaseSize(type); result=MAlloc(size+g.nu.num*sizeof(CD3I32)); if (LexExpressionI64(cc)) { @@ -406,11 +406,11 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) Lex(cc); //Skip { LexD2I32(cc,&g.npu.x); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); tempv=QueVectU8New; while (TRUE) { if (!(i=LexGetChar(cc))) - LexExcept(cc,"expecting '}' at "); + LexExcept(cc,"Expecting '}' at "); if (i=='}') break; if ('0'<=i<='7') @@ -431,16 +431,16 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) Lex(cc); //Skip { LexD2I32(cc,&g.pwhu.x1); if (cc->token!=':') - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); Lex(cc); //Skip : LexD2I32(cc,&g.pwhu.width); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); tempv=QueVectU8New; num1=0; while (TRUE) { if (!(i=ToUpper(LexGetChar(cc)))) - LexExcept(cc,"expecting '}' at "); + LexExcept(cc,"Expecting '}' at "); if (i=='}') break; if ('0'<=i<='9') @@ -469,16 +469,16 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) if (LexExpressionI64(cc)) { g.type=SPT_SHIFTABLE_MESH; if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , LexD3I32(cc,&g.pmu.x); if (cc->token!=':') - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); Lex(cc); //Skip : } else { g.type=SPT_MESH; if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , } num1=0; @@ -492,7 +492,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) Lex(cc); //Skip , } if (cc->token!=':') - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); Lex(cc); //Skip : num2=0; QueInit(&roott); @@ -503,19 +503,19 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) Free(st); Lex(cc); //Skip color if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , tempt->nums[0]=LexExpressionI64(cc); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , tempt->nums[1]=LexExpressionI64(cc); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , tempt->nums[2]=LexExpressionI64(cc); if (cc->token!=')') - LexExcept(cc,"expecting ')' at "); + LexExcept(cc,"Expecting ')' at "); Lex(cc); //Skip ) QueIns(tempt,roott.last); num2++; @@ -553,9 +553,9 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) break; } if (cc->token!='}') - LexExcept(cc,"expecting '}' at "); + LexExcept(cc,"Expecting '}' at "); if (Lex(cc)!=';') - LexExcept(cc,"expecting ';' at "); + LexExcept(cc,"Expecting ';' at "); return result; } @@ -580,7 +580,7 @@ public U8 *Code2Sprite(CDoc *doc,I64 *_size=NULL) if (Lex(cc)=='{') //Skip ident QueIns(Code2SpriteElem(cc,i),root.last); } else if (cc->token) - LexExcept(cc,"expecting sprite element type name at "); + LexExcept(cc,"Expecting sprite element type name at "); } while (cc->token); okay=TRUE; } catch { diff --git a/Adam/Menu.CPP b/Adam/Menu.CPP index 3117a41..44f5610 100644 --- a/Adam/Menu.CPP +++ b/Adam/Menu.CPP @@ -62,9 +62,9 @@ CMenuEntry *MenuNewSub(CCmpCtrl *cc,CTask *task) if (cc->token!=',' && cc->token!=')') tempme->a2=LexExpressionI64(cc); if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); if (Lex(cc)!=';') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); Lex(cc); //Skip ; } else if (cc->token=='{') { Lex(cc); //Skip { @@ -73,11 +73,11 @@ CMenuEntry *MenuNewSub(CCmpCtrl *cc,CTask *task) while (tempse && cc->token!='}') tempse=tempse->next=MenuNewSub(cc,task); if (cc->token!='}') - LexExcept(cc,"missing '}' at "); + LexExcept(cc,"Missing '}' at "); else Lex(cc); //Skip } } else - LexExcept(cc,"expecting '{' at "); + LexExcept(cc,"Expecting '{' at "); } return tempme; } diff --git a/Adam/Opt/Utils/Find.CPP b/Adam/Opt/Utils/Find.CPP index cf65d19..f1200b1 100644 --- a/Adam/Opt/Utils/Find.CPP +++ b/Adam/Opt/Utils/Find.CPP @@ -197,14 +197,14 @@ public I64 FileOcc(U8 *needle_str, class CFind { - U8 find_text[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1," + U8 find_text[STR_LEN] fmtstr "$$DA-P," "A=\"FIND :%s\"$$\n"; - U8 replace_text[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1," + U8 replace_text[STR_LEN] fmtstr "$$DA-P," "A=\"REPLACE :%s\"$$\n"; Bool replace fmtstr "$$CB,\"REPLACE\"$$\n"; Bool match_case fmtstr "$$CB,\"MATCH CASE\"$$\n"; Bool whole_labels fmtstr "$$CB,\"WHOLE LABELS\"$$\n"; - U8 filemask[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"FILE MASK :%s\"$$\n"; + U8 filemask[STR_LEN] fmtstr "$$DA-P,A=\"FILE MASK :%s\"$$\n"; Bool recurse fmtstr "$$CB,\"RECURSE\"$$\n"; }; diff --git a/Apps/Budget/BgtEntry.CPP b/Apps/Budget/BgtEntry.CPP index eaf6981..c1b5d8c 100644 --- a/Apps/Budget/BgtEntry.CPP +++ b/Apps/Budget/BgtEntry.CPP @@ -23,11 +23,11 @@ U0 BgtIns(CBgtEntry *tempb) class CBgtEntryForm { - U8 date[512] fmtstr "$$DA-P,LEN=511,A=\"Date :%s\"$$\n"; + U8 date[512] fmtstr "$$DA-P,A=\"Date :%s\"$$\n"; F64 amount fmtstr "Amount $$$$$$DA,A=\"%6.2f\"$$\n"; - U8 credit[512] fmtstr "$$DA-P,LEN=511,A=\"Credit Acct:%s\"$$\n"; - U8 debit [512] fmtstr "$$DA-P,LEN=511,A=\"Debit Acct:%s\"$$\n"; - U8 desc [512] fmtstr "$$DA-P,LEN=511,A=\"Desc :%s\"$$\n"; + U8 credit[512] fmtstr "$$DA-P,A=\"Credit Acct:%s\"$$\n"; + U8 debit [512] fmtstr "$$DA-P,A=\"Debit Acct:%s\"$$\n"; + U8 desc [512] fmtstr "$$DA-P,A=\"Desc :%s\"$$\n"; }; CBgtEntry *BgtEntryPmt(CBgtEntry *dft=NULL) diff --git a/Apps/Budget/Budget.CPP b/Apps/Budget/Budget.CPP index 5ad24a6..33f7d70 100644 --- a/Apps/Budget/Budget.CPP +++ b/Apps/Budget/Budget.CPP @@ -42,10 +42,10 @@ class CBgtTemplate CBgtTemplate *next,*last; U0 start; - U16 type fmtstr "$$LS,RT=U16,D=\"ST_BGT_TEMPLATE_TYPES\"$$\n"; + U16 type fmtstr "$$LS,D=\"ST_BGT_TEMPLATE_TYPES\"$$\n"; U16 flags; - U8 start_date[16] fmtstr "$$DA-P,LEN=15,A=\"Start Date:%s\"$$\n"; - U8 end_date[16] fmtstr "$$DA-P,LEN=15,A=\"End Date :%s\"$$\n"; + U8 start_date[16] fmtstr "$$DA-P,A=\"Start Date:%s\"$$\n"; + U8 end_date[16] fmtstr "$$DA-P,A=\"End Date :%s\"$$\n"; F64 period fmtstr "$$DA,A=\"Period :%6.2f\"$$\n"; U0 end; diff --git a/Apps/GrModels/BallGen.CPP b/Apps/GrModels/BallGen.CPP index 16ccc28..51288ee 100644 --- a/Apps/GrModels/BallGen.CPP +++ b/Apps/GrModels/BallGen.CPP @@ -13,7 +13,7 @@ class Ball class BallDefineStruct { - F64 radius fmtstr "$$DA-TRM,RT=F64,A=\"Radius :%8.3f\"$$\n"; + F64 radius fmtstr "$$DA-TRM,A=\"Radius :%8.3f\"$$\n"; I64 n_longitude fmtstr "$$DA-TRM,A=\"Longitude Faces:%5d\"$$\n"; I64 n_lattitude fmtstr "$$DA-TRM,A=\"Lattitude Rings:%5d\"$$\n"; }; diff --git a/Apps/GrModels/ManGen.CPP b/Apps/GrModels/ManGen.CPP index 17075a1..7dac487 100644 --- a/Apps/GrModels/ManGen.CPP +++ b/Apps/GrModels/ManGen.CPP @@ -14,66 +14,66 @@ class Man class ManDefineStruct { F64 head_rad fmtstr - "$$DA-TRM,RT=F64,A=\"Head Radius :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Head Radius :%8.3f\"$$\n"; F64 torso_len fmtstr - "$$DA-TRM,RT=F64,A=\"Torso Length :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Torso Length :%8.3f\"$$\n"; F64 arm_len fmtstr - "$$DA-TRM,RT=F64,A=\"Arm Length :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Arm Length :%8.3f\"$$\n"; F64 hand_len fmtstr - "$$DA-TRM,RT=F64,A=\"Hand Length :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Hand Length :%8.3f\"$$\n"; F64 leg_len fmtstr - "$$DA-TRM,RT=F64,A=\"Leg Length :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Leg Length :%8.3f\"$$\n"; F64 foot_len fmtstr - "$$DA-TRM,RT=F64,A=\"Foot Length :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Foot Length :%8.3f\"$$\n"; F64 torso_width fmtstr - "$$DA-TRM,RT=F64,A=\"Torso Width :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Torso Width :%8.3f\"$$\n"; F64 torso_depth fmtstr - "$$DA-TRM,RT=F64,A=\"Torso Depth :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Torso Depth :%8.3f\"$$\n"; F64 arm_rad fmtstr - "$$DA-TRM,RT=F64,A=\"Arm Radius :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Arm Radius :%8.3f\"$$\n"; F64 hand_rad fmtstr - "$$DA-TRM,RT=F64,A=\"Hand Radius :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Hand Radius :%8.3f\"$$\n"; F64 leg_rad fmtstr - "$$DA-TRM,RT=F64,A=\"Leg Radius :%8.3f\"$$\n"; + "$$DA-TRM,A=\"Leg Radius :%8.3f\"$$\n"; F64 foot_rad fmtstr - "$$DA-TRM,RT=F64,A=\"Foot Radius :%8.3f\"$$\n\n"; + "$$DA-TRM,A=\"Foot Radius :%8.3f\"$$\n\n"; F64 r_shoulder_a1 fmtstr - "$$DA-TRM,RT=F64,A=\"R.Shoulder Front/Back Angle:%8.3f\"$$\n"; + "$$DA-TRM,A=\"R.Shoulder Front/Back Angle:%8.3f\"$$\n"; F64 l_shoulder_a1 fmtstr - "$$DA-TRM,RT=F64,A=\"L.Shoulder Front/Back Angle:%8.3f\"$$\n"; + "$$DA-TRM,A=\"L.Shoulder Front/Back Angle:%8.3f\"$$\n"; F64 r_hip_a1 fmtstr - "$$DA-TRM,RT=F64,A=\"R.Hip Front/Back Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"R.Hip Front/Back Angle :%8.3f\"$$\n"; F64 l_hip_a1 fmtstr - "$$DA-TRM,RT=F64,A=\"L.Hip Front/Back Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"L.Hip Front/Back Angle :%8.3f\"$$\n"; F64 r_shoulder_a2 fmtstr - "$$DA-TRM,RT=F64,A=\"R.Shoulder Side Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"R.Shoulder Side Angle :%8.3f\"$$\n"; F64 l_shoulder_a2 fmtstr - "$$DA-TRM,RT=F64,A=\"L.Shoulder Side Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"L.Shoulder Side Angle :%8.3f\"$$\n"; F64 r_hip_a2 fmtstr - "$$DA-TRM,RT=F64,A=\"R.Hip Side Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"R.Hip Side Angle :%8.3f\"$$\n"; F64 l_hip_a2 fmtstr - "$$DA-TRM,RT=F64,A=\"L.Hip Side Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"L.Hip Side Angle :%8.3f\"$$\n"; F64 r_elbow_a fmtstr - "$$DA-TRM,RT=F64,A=\"R.Elbow Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"R.Elbow Angle :%8.3f\"$$\n"; F64 l_elbow_a fmtstr - "$$DA-TRM,RT=F64,A=\"L.Elbow Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"L.Elbow Angle :%8.3f\"$$\n"; F64 r_knee_a fmtstr - "$$DA-TRM,RT=F64,A=\"R.Knee Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"R.Knee Angle :%8.3f\"$$\n"; F64 l_knee_a fmtstr - "$$DA-TRM,RT=F64,A=\"L.Knee Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"L.Knee Angle :%8.3f\"$$\n"; F64 r_wrist_a fmtstr - "$$DA-TRM,RT=F64,A=\"R.Wrist Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"R.Wrist Angle :%8.3f\"$$\n"; F64 l_wrist_a fmtstr - "$$DA-TRM,RT=F64,A=\"L.Wrist Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"L.Wrist Angle :%8.3f\"$$\n"; F64 r_ankle_a fmtstr - "$$DA-TRM,RT=F64,A=\"R.Ankle Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"R.Ankle Angle :%8.3f\"$$\n"; F64 l_ankle_a fmtstr - "$$DA-TRM,RT=F64,A=\"L.Ankle Angle :%8.3f\"$$\n"; + "$$DA-TRM,A=\"L.Ankle Angle :%8.3f\"$$\n"; }; diff --git a/Compiler/Asm.CPP b/Compiler/Asm.CPP index b9e50c3..cdfa574 100644 --- a/Compiler/Asm.CPP +++ b/Compiler/Asm.CPP @@ -1,7 +1,7 @@ Bool PrsAsmImm(CCmpCtrl *cc,CAsmArg *arg) { if (arg->imm_or_off_present) - LexExcept(cc,"already one immediate at "); + LexExcept(cc,"Already one immediate at "); arg->imm_or_off_present=TRUE; arg->num.local_asm_undef_hash=NULL; arg->num.glbl_asm_undef_hash=NULL; @@ -146,8 +146,8 @@ pa_asm_direct_imm: goto pa_asm_indirect_imm; } else if (cc->token=='*') { Lex(cc); - if (cc->token!=TK_INTEGER) - LexExcept(cc,"expecting scale factor at "); + if (cc->token!=TK_INT) + LexExcept(cc,"Expecting scale factor at "); arg->scale=cc->cur_i64; Lex(cc); //skip scale if (arg->reg2!=REG_NONE) @@ -161,7 +161,7 @@ pa_asm_indirect_imm: } } if (cc->token!=']') - LexExcept(cc,"missing ']' at "); + LexExcept(cc,"Missing ']' at "); Lex(cc); //skip ] return; } else @@ -276,7 +276,7 @@ Bool AsmStoreNum(CCmpCtrl *cc,CAsmNum2 *num2,I64 cnt,Bool U8_avail) num2->num.glbl_asm_undef_hash,cc->lex_include_stk->line_num, U8_avail); else if (!num2->imm_flag && !(MIN_I8<=num2->num.i<=MAX_I8)) - LexExcept(cc,"branch out of range at "); + LexExcept(cc,"Branch out of range at "); if (num2->imm_flag) { if (num2->num.abs_cnts.abs_addres&1) { tempa=CAlloc(sizeof(CAOTAbsAddr)); @@ -303,7 +303,7 @@ Bool AsmStoreNum(CCmpCtrl *cc,CAsmNum2 *num2,I64 cnt,Bool U8_avail) num2->num.glbl_asm_undef_hash,cc->lex_include_stk->line_num, U8_avail); else if (!num2->imm_flag && !(MIN_I16<=num2->num.i<=MAX_I16)) - LexExcept(cc,"branch out of range at "); + LexExcept(cc,"Branch out of range at "); if (num2->imm_flag) { if (num2->num.abs_cnts.abs_addres&1) { tempa=CAlloc(sizeof(CAOTAbsAddr)); @@ -330,7 +330,7 @@ Bool AsmStoreNum(CCmpCtrl *cc,CAsmNum2 *num2,I64 cnt,Bool U8_avail) num2->num.glbl_asm_undef_hash,cc->lex_include_stk->line_num, U8_avail); else if (!num2->imm_flag && !(MIN_I32<=num2->num.i<=MAX_I32)) - LexExcept(cc,"branch out of range at "); + LexExcept(cc,"Branch out of range at "); if (num2->imm_flag) { if (num2->num.abs_cnts.abs_addres&1) { tempa=CAlloc(sizeof(CAOTAbsAddr)); @@ -387,13 +387,13 @@ Bool AsmStoreNum(CCmpCtrl *cc,CAsmNum2 *num2,I64 cnt,Bool U8_avail) U8 asm_seg_prefixes[6]={0x26,0x2E,0x36,0x3E,0x64,0x65}; -Bool PrsAsmInstruction(CCmpCtrl *cc,CHashOpcode *tempo,I64 argcnt) +Bool PrsAsmInst(CCmpCtrl *cc,CHashOpcode *tempo,I64 argcnt) { CAOTCtrl *aotc=cc->aotc; I64 i,j,a1,a2,om,seg,arg1mask,arg2mask; CAsmArg *tempa1,*tempa2; Bool ModrM_complete,U8_avail=FALSE,found_second_possible=FALSE; - CInstruction *tempi; + CInst *tempi; CAsmIns cur,best; best.U8_cnt=255; @@ -406,12 +406,12 @@ Bool PrsAsmInstruction(CCmpCtrl *cc,CHashOpcode *tempo,I64 argcnt) arg2mask=AsmMakeArgMask(cc,&aotc->arg2); else arg2mask=1; - for (i=0;iinstruction_entry_cnt;i++) { + for (i=0;iinst_entry_cnt;i++) { tempi=&tempo->ins[i]; if (tempi->arg1==ARGT_REL8 || tempi->arg2==ARGT_REL8) U8_avail=TRUE; if (Bt(&arg1mask,tempi->arg1) && Bt(&arg2mask,tempi->arg2) && - (!(tempi->flags&IEF_NOT_IN_64_BIT) || aotc->seg_size!=64)) { + (!(tempi->flags&IEF_NOT_IN_64_BIT) || aotc->seg_size!=64)) { MemSet(&cur,0,sizeof(CAsmIns)); cur.tempi=tempi; ModrM_complete=FALSE; @@ -559,8 +559,7 @@ Bool PrsAsmInstruction(CCmpCtrl *cc,CHashOpcode *tempo,I64 argcnt) } } } - } else if (ARGT_REL8<=a1<=ARGT_REL32 || - ARGT_IMM8<=a1<=ARGT_IMM64 || + } else if (ARGT_REL8<=a1<=ARGT_REL32 || ARGT_IMM8<=a1<=ARGT_IMM64 || ARGT_UIMM8<=a1<=ARGT_UIMM64) { if (a1==ARGT_IMM64 || a2==ARGT_UIMM64) cur.REX|=8; @@ -596,12 +595,11 @@ Bool PrsAsmInstruction(CCmpCtrl *cc,CHashOpcode *tempo,I64 argcnt) cur.last_opcode_U8|=tempa2->fstk; } } - if (a1==ARGT_RM64 || a2==ARGT_RM64 || - a1==ARGT_M64 || a2==ARGT_M64 || + if (a1==ARGT_RM64 || a2==ARGT_RM64 || a1==ARGT_M64 || a2==ARGT_M64 || a1==ARGT_R64 || a2==ARGT_R64) cur.REX|=8; if (ARGT_RM8<=a1<=ARGT_RM64 || ARGT_RM8<=a2<=ARGT_RM64 || - ARGT_M8 <=a1<=ARGT_M64 || ARGT_M8 <=a2<=ARGT_M64) { + ARGT_M8<=a1<=ARGT_M64 || ARGT_M8<=a2<=ARGT_M64) { if (aotc->seg_size==16) cur.has_addr_prefix=TRUE; cur.has_ModrM=TRUE; @@ -801,11 +799,11 @@ Bool PrsAsmInstruction(CCmpCtrl *cc,CHashOpcode *tempo,I64 argcnt) if (!AsmStoreNum(cc,&best.imm,1,U8_avail)) return FALSE; } - if (tempi->flags&IEF_ENDING_ZERO) //ENTER instruction + if (tempi->flags&IEF_ENDING_ZERO) //ENTER inst AOTStoreCodeU8(cc,0); return TRUE; } - LexExcept(cc,"invalid instruction at "); + LexExcept(cc,"Invalid inst at "); } U0 PrsAsmDefine(CCmpCtrl *cc,I64 U8_cnt) @@ -853,11 +851,11 @@ U0 PrsAsmDefine(CCmpCtrl *cc,I64 U8_cnt) cc->hash_entry->user_data0==AKW_DUP) { is_dup=TRUE; if (Lex(cc)!='(') - LexExcept(cc,"expecting '(' at "); + LexExcept(cc,"Expecting '(' at "); Lex(cc); //skip ( dup_val=AsmLexExpression(cc); if (cc->token!=')') - LexExcept(cc,"expecting ')' at "); + LexExcept(cc,"Expecting ')' at "); Lex(cc); //SKIP ) } } @@ -866,7 +864,7 @@ U0 PrsAsmDefine(CCmpCtrl *cc,I64 U8_cnt) num2.num.abs_cnts=cc->abs_cnts; if (is_dup) { if (num2.num.local_asm_undef_hash || num2.num.glbl_asm_undef_hash) - LexExcept(cc,"undefined DUP cnt at "); + LexExcept(cc,"Undefined DUP cnt at "); num2.num.i=dup_val; AsmStoreNum(cc,&num2,i,FALSE); } else { @@ -878,7 +876,7 @@ U0 PrsAsmDefine(CCmpCtrl *cc,I64 U8_cnt) Lex(cc); } if (cc->token!=';') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); Lex(cc); } @@ -887,14 +885,14 @@ U0 PrsBinFile(CCmpCtrl *cc) I64 i,size; U8 *buf,*st; if (cc->token!=TK_STR) - LexExcept(cc,"expecting string at "); + LexExcept(cc,"Expecting string at "); st=DftExt(cc->cur_str,"BIN"); buf=FileRead(st,&size); Free(st); for (i=0;iflags|=CCF_ASM_EXPRESSIONS; if (!(cmp_flags&CMPF_ONE_ASM_INS)) { if (cc->token!='{') - LexExcept(cc,"expecting '{' at "); + LexExcept(cc,"Expecting '{' at "); Lex(cc); } while (cc->token && cc->token!='}') { @@ -925,7 +923,7 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) case AKW_IMPORT: while (cc->token && cc->token!=';') { if (cc->token!=TK_IDENT) - LexExcept(cc,"expecting identifier at "); + LexExcept(cc,"Expecting identifier at "); else { tempex=NULL; tempex=CAlloc(sizeof(CHashExport)); @@ -939,7 +937,7 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) } } if (cc->token!=';') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); Lex(cc); //skip ';'; break; case AKW_MODULE_ORG: @@ -963,7 +961,7 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) if (j>aotc->max_align_bits) aotc->max_align_bits=j; i=CeilU64(aotc->ip,i); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); k=AsmLexExpression(cc); for (j=aotc->ip;jseg_size=64; break; default: - LexExcept(cc,"syntax error at "); + LexExcept(cc,"Syntax error at "); } } else if (cc->hash_entry->type & HTT_OPCODE) { tempo=cc->hash_entry; @@ -1015,7 +1013,7 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) if (tempo->ins[0].arg2) { argcnt++; if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); else { Lex(cc); //skip ',' if (ARGT_REL8<=tempo->ins[0].arg2<=ARGT_REL32) @@ -1025,13 +1023,13 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) } } } - PrsAsmInstruction(cc,tempo,argcnt); + PrsAsmInst(cc,tempo,argcnt); } else if (cc->hash_entry->type & HTT_EXPORT_SYS_SYM) { if (Btr(&cc->hash_entry->type,HTf_UNRESOLVED)) { if (cc->hash_entry->type & HTF_LOCAL) { cc->hash_entry(CHashExport *)->val=aotc->ip; if (Lex(cc)!=':') - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); Lex(cc); } else { if (cc->hash_entry->type & HTF_IMPORT) @@ -1040,7 +1038,7 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) next_last_label=cc->hash_entry->str; Lex(cc); //Skip cur_str if (cc->token!=':' && cc->token!=TK_DBL_COLON) - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); if (cc->token==TK_DBL_COLON) { cc->hash_entry->type|=HTF_EXPORT; HashSrcFileSet(cc,cc->hash_entry); @@ -1053,12 +1051,12 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) } else if (cc->hash_entry(CHashExport *)->val==aotc->ip) { Lex(cc); //Skip cur_str if (cc->token!=':' && cc->token!=TK_DBL_COLON) - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); Lex(cc); } else - LexExcept(cc,"redefinition at "); + LexExcept(cc,"Redefinition at "); } else - LexExcept(cc,"syntax error at "); + LexExcept(cc,"Syntax error at "); } else if (cc->token==TK_IDENT) { tempex=CAlloc(sizeof(CHashExport)); tempex->str=cc->cur_str; @@ -1067,11 +1065,11 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) tempex->val=aotc->ip; Lex(cc); //Skip cur_str if (cc->token!=':' && cc->token!=TK_DBL_COLON) - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); else { if (*tempex->str=='@' && tempex->str[1]=='@') { if (cc->token==TK_DBL_COLON) - LexExcept(cc,"no local glbl exports at "); + LexExcept(cc,"No local glbl exports at "); HashAdd(tempex,cc->htc.local_hash_table); } else HashAdd(tempex,cc->htc.glbl_hash_table); @@ -1099,7 +1097,7 @@ U0 PrsAsmBlk(CCmpCtrl *cc,I64 cmp_flags) } else if (cc->token==';') Lex(cc); else - LexExcept(cc,"syntax error at "); + LexExcept(cc,"Syntax error at "); if (cmp_flags&CMPF_ONE_ASM_INS && (cc->token!=TK_IDENT || !(tempo=cc->hash_entry) || !(tempo->type&(HTT_OPCODE|HTT_ASM_KEYWORD)))) diff --git a/Compiler/AsmInit.CPP b/Compiler/AsmInit.CPP index 08c3323..073fd30 100644 --- a/Compiler/AsmInit.CPP +++ b/Compiler/AsmInit.CPP @@ -1,4 +1,4 @@ -U0 AsmPrsInsFlags(CCmpCtrl *cc,CInstruction *tempi) +U0 AsmPrsInsFlags(CCmpCtrl *cc,CInst *tempi) { I64 i; while (TRUE) { @@ -9,7 +9,7 @@ U0 AsmPrsInsFlags(CCmpCtrl *cc,CInstruction *tempi) break; } else return; - case TK_INTEGER: + case TK_INT: if (cc->cur_i64==16) tempi->flags|=IEF_OP_SIZE16; else if (cc->cur_i64==32) @@ -20,7 +20,7 @@ U0 AsmPrsInsFlags(CCmpCtrl *cc,CInstruction *tempi) case '+': tempi->flags|=IEF_PLUS_OPCODE; case '/': - if (Lex(cc)==TK_INTEGER && cc->cur_i64<8) + if (Lex(cc)==TK_INT && cc->cur_i64<8) tempi->slash_val=cc->cur_i64; else if (cc->token==TK_IDENT) { if (!StrCmp(cc->cur_str,"R")) @@ -49,13 +49,13 @@ U0 AsmPrsInsFlags(CCmpCtrl *cc,CInstruction *tempi) U0 AsmHashLoad() {//See $LK,"::/Compiler/OpCodes.TXT"$. - I64 i,j,size,size1; + I64 i,j,size,size_max; CInternalType *tempit; CCmpCtrl *cc; CHashGeneric *temph; CHashReg *tempr; - CHashOpcode *tempo,*tempo1; - CInstruction *tempi; + CHashOpcode *tempo,*tempo2,*tempo_max; + CInst *tempi; CHashClass *tempc; cmp.size_arg_mask[0]=0x3FF0FFFFFE; @@ -65,42 +65,57 @@ U0 AsmHashLoad() cmp.size_arg_mask[8]=0x0880888880; cmp.asm_hash=HashTableNew(1024); - size1=offset(CHashOpcode.ins)+sizeof(CInstruction)<<5; - tempo=MAlloc(size1); + size_max=offset(CHashOpcode.ins)+sizeof(CInst)<<5; + tempo_max=MAlloc(size_max); cc=CmpCtrlNew(FileRead("OpCodes.TXT"),,"OpCodes.TXT.Z"); cc->htc.hash_table_lst=NULL; Lex(cc); while (cc->token) { if (cc->token!=TK_IDENT) - LexExcept(cc,"expecting identifier at "); + LexExcept(cc,"Expecting identifier at "); i=LstMatch(cc->cur_str,"R8\0R16\0R32\0R64\0SEG\0FSTK\0" "MM\0XMM\0OPCODE\0KEYWORD\0ASM_KEYWORD\0"); if (i<0) LexExcept(cc,"Unknown Stmt"); Lex(cc); //skip keyword if (cc->token!=TK_IDENT) - LexExcept(cc,"expecting identifier at "); + LexExcept(cc,"Expecting identifier at "); switch (i) { - case 8: //OPCODE - MemSet(tempo,0,size1); - tempo->type=HTT_OPCODE; - tempo->instruction_entry_cnt=0; - tempo->str=cc->cur_str; + case REGT_R8...REGT_XMM: + tempr=CAlloc(sizeof(CHashReg)); + tempr->str=cc->cur_str; + cc->cur_str=NULL; + Lex(cc); //skip keyword name + if (cc->token!=TK_INT) + LexExcept(cc,"Expecting int at "); + tempr->type=HTT_REG; + tempr->reg_type=i; + tempr->reg_num=cc->cur_i64; + HashAdd(tempr,cmp.asm_hash); + Lex(cc); //Skip INT + break; + case: //OPCODE + if (cc->token!=TK_IDENT) + LexExcept(cc,"Expecting opcode at "); + MemSet(tempo_max,0,size_max); + tempo_max->type=HTT_OPCODE; + tempo_max->inst_entry_cnt=0; + tempo_max->str=cc->cur_str; cc->cur_str=0; Lex(cc); //Skip OPCODE - while (cc->token && cc->token!=';') { - tempi=&tempo->ins[tempo->instruction_entry_cnt]; - tempi->ins_entry_num=tempo->instruction_entry_cnt++; + while (cc->token && cc->token!=';' && cc->token!=':') { + tempi=&tempo_max->ins[tempo_max->inst_entry_cnt]; + tempi->ins_entry_num=tempo_max->inst_entry_cnt++; tempi->slash_val=SV_NONE; //Not zero!! - while (cc->token==TK_INTEGER) { + while (cc->token==TK_INT) { tempi->opcode[tempi->opcode_cnt++]=cc->cur_i64; Lex(cc); } if (cc->token==',') Lex(cc); else if (cc->token!=';') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); AsmPrsInsFlags(cc,tempi); @@ -136,24 +151,34 @@ U0 AsmHashLoad() } } } - size=offset(CHashOpcode.ins)+ - sizeof(CInstruction)*tempo->instruction_entry_cnt; - - tempo1=MAlloc(size); - MemCpy(tempo1,tempo,size); - tempo1->use_cnt=0; - if (HashFind(tempo1->str,cmp.asm_hash,HTT_OPCODE)) + size=offset(CHashOpcode.ins)+sizeof(CInst)*tempo_max->inst_entry_cnt; + tempo=MAlloc(size); + MemCpy(tempo,tempo_max,size); + tempo->use_cnt=0; + if (HashFind(tempo->str,cmp.asm_hash,HTT_OPCODE)) LexExcept(cc,"Duplicate OPCODE entry "); - HashAdd(tempo1,cmp.asm_hash); + HashAdd(tempo,cmp.asm_hash); + //Parse aliases. + if (cc->token==':') { + while (Lex(cc)==TK_IDENT) { + tempo2=MAllocIdentical(tempo); + tempo2->str=cc->cur_str; + cc->cur_str=0; + tempo2->oc_flags|=OCF_ALIAS; + if (HashFind(tempo2->str,cmp.asm_hash,HTT_OPCODE)) + LexExcept(cc,"Duplicate OPCODE ALIAS entry "); + HashAdd(tempo2,cmp.asm_hash); + } + } break; - case 9: //KEYWORD - case 10: //ASM_KEYWORD + case: //KEYWORD + case: //ASM_KEYWORD temph=CAlloc(sizeof(CHashGeneric)); temph->str=cc->cur_str; cc->cur_str=NULL; Lex(cc); //skip keyword name - if (cc->token!=TK_INTEGER) - LexExcept(cc,"expecting integer at "); + if (cc->token!=TK_INT) + LexExcept(cc,"Expecting int at "); temph->user_data0=cc->cur_i64; if (i==9) temph->type=HTT_KEYWORD; @@ -162,32 +187,12 @@ U0 AsmHashLoad() HashAdd(temph,cmp.asm_hash); Lex(cc); //Skip INT break; - case REGT_R8: - case REGT_R16: - case REGT_R32: - case REGT_R64: - case REGT_SEG: - case REGT_FSTK: - case REGT_MM: - case REGT_XMM: - tempr=CAlloc(sizeof(CHashReg)); - tempr->str=cc->cur_str; - cc->cur_str=NULL; - Lex(cc); //skip keyword name - if (cc->token!=TK_INTEGER) - LexExcept(cc,"expecting integer at "); - tempr->type=HTT_REG; - tempr->reg_type=i; - tempr->reg_num=cc->cur_i64; - HashAdd(tempr,cmp.asm_hash); - Lex(cc); //Skip INT - break; } if (cc->token!=';') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); Lex(cc); //Skip ';' } - Free(tempo); + Free(tempo_max); CmpCtrlDel(cc); for (i=0;iaotc; - I64 i=aotc->ip>>AOT_BIN_BLK_BITS, - j=(aotc->ip+sizeof(U32))>>AOT_BIN_BLK_BITS; + I64 i=aotc->ip>>AOT_BIN_BLK_BITS,j=(aotc->ip+sizeof(U32))>>AOT_BIN_BLK_BITS; U32 *_d; CAOTBinBlk *tempbin; if (i!=j) @@ -69,8 +68,7 @@ U0 AOTStoreCodeU32(CCmpCtrl *cc,U32 d) U0 AOTStoreCodeU64(CCmpCtrl *cc,U64 q) { CAOTCtrl *aotc=cc->aotc; - I64 i=aotc->ip>>AOT_BIN_BLK_BITS, - j=(aotc->ip+sizeof(I64))>>AOT_BIN_BLK_BITS, + I64 i=aotc->ip>>AOT_BIN_BLK_BITS,j=(aotc->ip+sizeof(I64))>>AOT_BIN_BLK_BITS, *_q; CAOTBinBlk *tempbin; if (i!=j) @@ -139,7 +137,7 @@ I64 AsmLexExpression(CCmpCtrl *cc) if (cc->abs_cnts.externs) LexExcept(cc,"Extern Not Allowed at "); if (cc->flags & CCF_UNRESOLVED) - LexExcept(cc,"undefined sym at "); + LexExcept(cc,"Undefined sym at "); result=Call(machine_code); Free(machine_code); } diff --git a/Compiler/AsmResolve.CPP b/Compiler/AsmResolve.CPP index 3cb2e95..019360f 100644 --- a/Compiler/AsmResolve.CPP +++ b/Compiler/AsmResolve.CPP @@ -16,11 +16,11 @@ U0 AsmResolve(CCmpCtrl *cc,CAsmUnresolvedRef *tempu,U8 *label,Bool undefined) } tempauh=tempauh->next; //Technically, more than one won't work. } - } else if (!(tempu->type&1)) {//Rel? + } else if (!(tempu->type&IEF_IMM_NOT_REL)) { r-=tempu->rel_ip; if (tempu->type==IET_REL_I8 && !(MIN_I8<=r<=MAX_I8) || tempu->type==IET_REL_I16 && !(MIN_I16<=r<=MAX_I16)) { - PrintErr("branch out of range at line:%04d %s\n", + PrintErr("Branch out of range at line:%04d %s\n", tempu->line_num,label); LexExcept(cc); } @@ -53,7 +53,7 @@ U0 AOTLocalsResolve(CCmpCtrl *cc) tempauh=tempu->asm_undef_hash; while (tempauh) { if (tempauh->hash->type & HTF_UNRESOLVED) { - PrintErr("undefined sym at line:%04d %s %s\n", + PrintErr("Undefined sym at line:%04d %s %s\n", tempu->line_num,aotc->last_label,tempauh->hash->str); LexExcept(cc); } @@ -94,8 +94,7 @@ U0 AOTGlblsResolve(CCmpCtrl *cc,CAOT *tempaot) while (tempauh) { if (tempauh->hash->type & HTF_UNRESOLVED) { tempex=tempauh->hash; - if (tempex->type & HTT_EXPORT_SYS_SYM && - tempex->type & HTF_UNRESOLVED && + if (tempex->type & HTT_EXPORT_SYS_SYM&& tempex->type & HTF_UNRESOLVED && !(tempex->type & HTF_IMPORT) && (tempf=HashFind(tempex->str,cc->htc.hash_table_lst,HTT_FUN)) && !Bt(&tempf->flags,Cf_EXTERN)) { @@ -108,7 +107,7 @@ U0 AOTGlblsResolve(CCmpCtrl *cc,CAOT *tempaot) tempex->type|=HTF_GOTO_LABEL; tempex->use_cnt++; } else { - PrintErr("undefined sym at line:%04d %s\n", + PrintErr("Undefined sym at line:%04d %s\n", tempu->line_num,tempex->str); LexExcept(cc); } @@ -150,7 +149,7 @@ U0 AOTGlblsResolve(CCmpCtrl *cc,CAOT *tempaot) } } else if (tempex->type & (HTF_EXPORT|HTF_RESOLVE)) { if (tempex->type & HTF_UNRESOLVED) { - PrintErr("undefined sym at %s\n",tempex->str); + PrintErr("Undefined sym at %s\n",tempex->str); LexExcept(cc); } if (tempex->type & HTF_RESOLVE) { diff --git a/Compiler/BackA.CPP b/Compiler/BackA.CPP index 877f0fc..63a391c 100644 --- a/Compiler/BackA.CPP +++ b/Compiler/BackA.CPP @@ -1,5 +1,5 @@ -U0 ICAddEct(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, - I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3,I64 op,I64 ip) +U0 ICAddEct(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1, + CICType t2,I64 r2,I64 d2,CICType t3,I64 r3,I64 d3,I64 op,I64 ip) { I64 i,temp,result_reg=REG_RAX; Bool swap=FALSE; @@ -9,11 +9,10 @@ U0 ICAddEct(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, SwapI64(&r2,&r3); SwapI64(&d2,&d3); } - if (t2&RT_MASK>=RT_I64 && r2!=result_reg && - TY_REG<=t2&TY_MASK<=TY_RIP_DISP32) { - if (t1&TY_MASK==TY_REG && !(r2==r1 && TY_REG<=t2&TY_MASK<=TY_SIB)) + if (t2.raw_type>=RT_I64 && r2!=result_reg && t2&MDG_REG_DISP_SIB_RIP) { + if (t1&MDF_REG && !(r2==r1 && t2&MDG_REG_DISP_SIB)) result_reg=r1; - ICMov(tempi,TY_REG+RT_I64,result_reg,0,t3,r3,d3,ip); + ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t3,r3,d3,ip); i=ICModr1(result_reg,t2,r2,d2); if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); @@ -21,26 +20,26 @@ U0 ICAddEct(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, ICU16(tempi,i.u8[2]<<8+op); ICModr2(tempi,i,d2,ip+4); } else { - if (t2&TY_MASK==TY_REG) + if (t2&MDF_REG) temp=r2; else temp=REG_RCX; - if (t1&TY_MASK==TY_REG) + if (t1&MDF_REG) result_reg=r1; if (temp==result_reg) result_reg=REG_RDX; - if (swap ^^ tempi->ic_flags & ICF_A1_FIRST) { - if (r3==temp && TY_REG<=t3&TY_MASK<=TY_SIB) + if (swap) { + if (r3==temp && t3&MDG_REG_DISP_SIB) temp=REG_RCX; - ICMov(tempi,TY_REG+RT_I64,temp,0,t2,r2,d2,ip); - ICMov(tempi,TY_REG+RT_I64,result_reg,0,t3,r3,d3,ip); + ICMov(tempi,MDF_REG+RT_I64,temp,0,t2,r2,d2,ip); + ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t3,r3,d3,ip); } else { - if (r2==result_reg && TY_REG<=t2&TY_MASK<=TY_SIB) + if (r2==result_reg && t2&MDG_REG_DISP_SIB) result_reg=REG_RDX; - ICMov(tempi,TY_REG+RT_I64,result_reg,0,t3,r3,d3,ip); - ICMov(tempi,TY_REG+RT_I64,temp,0,t2,r2,d2,ip); + ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t3,r3,d3,ip); + ICMov(tempi,MDF_REG+RT_I64,temp,0,t2,r2,d2,ip); } i=0x48; if (result_reg>7) @@ -51,19 +50,19 @@ U0 ICAddEct(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, ICU8(tempi,OC_LOCK_PREFIX); ICU24(tempi,0xC00000+i+(temp&7)<<16+(result_reg&7)<<19+op<<8); } - ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,result_reg,0,ip); } -U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, - I64 t2,I64 r2,I64 d2,I64 d,I64 op,I64 ip) +U0 ICAddSubEctImm(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1, + CICType t2,I64 r2,I64 d2,I64 d,I64 op,I64 ip) { I64 i,r; if (op.u8[0]==0x2B) { op=0x0003; d=-d; } - if (t1&TY_MASK==TY_REG) { - if (t2&TY_MASK!=TY_REG) { + if (t1&MDF_REG) { + if (!(t2&MDF_REG)) { ICMov(tempi,t1,r1,d1,t2,r2,d2,ip); t2=t1; r2=r1; @@ -95,18 +94,18 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, } if (op.u8[0]==0x03 && MIN_I32<=d<=MAX_I32 && !Bt(&cmp.non_ptr_vars_mask,r2)) { - i=ICModr1(r1,TY_DISP+RT_I64,r2,d); + i=ICModr1(r1,MDF_DISP+RT_I64,r2,d); i.u8[1]|=0x48; ICU24(tempi,i.u8[2]<<16+0x8D00+i.u8[1]); ICModr2(tempi,i,d,ip+4); return; } } - switch (t1>>4) { - case TY_REG>>4: - case TY_DISP>>4: - case TY_SIB>>4: - case TY_RIP_DISP32>>4: + switch (Bsr(t1)) { + case MDf_REG: + case MDf_DISP: + case MDf_SIB: + case MDf_RIP_DISP32: if (t1!=t2 || r1!=r2 || d1!=d2) { ICMov(tempi,t1,r1,d1,t2,r2,d2,ip); t2=t1; @@ -114,8 +113,7 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, d2=d1; } - if (!d && - (op.u8[0]==0x03||op.u8[0]==0x2B||op.u8[0]==0x33||op.u8[0]==0x0B)) + if (!d &&(op.u8[0]==0x03||op.u8[0]==0x2B||op.u8[0]==0x33||op.u8[0]==0x0B)) return; r=op.u8[1]; //not a reg but a slash val if (op.u8[0]==0x03 && d==-1) //add -1 @@ -123,9 +121,9 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, if (op.u8[0]==0x03 && (d==1 || d==-1)) { //Add i=ICModr1(r,t1,r1,d1); - if (t1!=TY_REG && tempi->ic_flags&ICF_LOCK) + if (!(t1&MDF_REG) && tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); - switch (t1&RT_MASK) { + switch (t1.raw_type) { case RT_I8: case RT_U8: ICRex(tempi,i.u8[1]); @@ -143,11 +141,11 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, ICModr2(tempi,i,d1,ip+4); return; } - if (MIN_I8<=d<=MAX_I8 || t1&(RT_MASK-1)==RT_I8) { + if (MIN_I8<=d<=MAX_I8 || t1&(RTG_MASK-RTF_UNSIGNED)==RT_I8) { i=ICModr1(r,t1,r1,d1); if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); - switch (t1&RT_MASK) { + switch (t1.raw_type) { case RT_I8: case RT_U8: ICRex(tempi,i.u8[1]); @@ -166,11 +164,11 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, ICU8(tempi,d); return; } - if (MIN_I32<=d<=MAX_I32 || t1&RT_MASKic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); - switch (t1&RT_MASK) { + switch (t1.raw_type) { case RT_I16: case RT_U16: ICOpSizeRex(tempi,i.u8[1]); @@ -180,32 +178,32 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, ICRex(tempi,i.u8[1]); ICU16(tempi,i.u8[2]<<8+0x81); } - if (i.u8[0]!=MDR_RIP_REL) + if (i.u8[0]!=MODR_RIP_REL) ICModr2(tempi,i,d1,); else { - if (t1&(RT_MASK-1)==RT_I16) + if (t1&(RTG_MASK-RTF_UNSIGNED)==RT_I16) ICU32(tempi,d1-(ip+tempi->ic_cnt+6)); else ICU32(tempi,d1-(ip+tempi->ic_cnt+8)); tempi->ic_flags&=~ICF_CODE_FINAL; } - if (t1&(RT_MASK-1)==RT_I16) + if (t1&(RTG_MASK-RTF_UNSIGNED)==RT_I16) ICU16(tempi,d); else ICU32(tempi,d); return; } break; - case TY_STK>>4: - ICAddSubEctImm(tempi,TY_REG+RT_I64,REG_RAX,0,t2,r2,d2,d,op,ip); + case MDf_STK: + ICAddSubEctImm(tempi,MDF_REG+RT_I64,REG_RAX,0,t2,r2,d2,d,op,ip); ICPushRegs(tempi,1<=RT_I64 && r2.u8[0]!=REG_RAX && - (t2&TY_MASK!=TY_SIB || r2.u8[1]&15!=REG_RAX) && - TY_REG<=t2&TY_MASK<=TY_RIP_DISP32) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); + if (t2.raw_type>=RT_I64 && r2.u8[0]!=REG_RAX && + (!(t2&MDF_SIB) || r2.u8[1]&15!=REG_RAX) && t2&MDG_REG_DISP_SIB_RIP) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); if (!swap) { op=0x03; ICU24(tempi,0xD8F748); @@ -229,44 +226,24 @@ U0 ICSub(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, ICRex(tempi,i.u8[1]); ICU16(tempi,i.u8[2]<<8+op); ICModr2(tempi,i,d2,ip+4); - ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,REG_RAX,0,ip); } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - if (t3&TY_MASK!=TY_REG || t3&RT_MASKic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICU24(tempi,0xC00000+i+(r3&7)<<16+(r2&7)<<19+op<<8); - ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,r2,0,ip); + ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,r2,0,ip); } } @@ -287,23 +264,25 @@ U0 ICMul(CIntermediateCode *tempi,I64 ip) { I64 i,r2,r=REG_RAX,j; CICArg *a1,*a2; - if (tempi->a1.type&TY_MASK==TY_IMM) { + Bool alt; + if (tempi->a1.type&MDF_IMM) { a1=&tempi->a2; a2=&tempi->a1; - tempi->ic_flags|=ICF_A1_FIRST; + alt=TRUE; } else { a1=&tempi->a1; a2=&tempi->a2; + alt=FALSE; } i=a2->disp; - if (!(tempi->ic_class->raw_type&1) && - a2->type&TY_MASK==TY_IMM && MIN_I32<=i<=MAX_I32) { - if (tempi->r.type==TY_REG+RT_I64) { + if (!(tempi->ic_class->raw_type&RTF_UNSIGNED) && + a2->type&MDF_IMM && MIN_I32<=i<=MAX_I32) { + if (tempi->r.type==MDF_REG+RT_I64) { ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, a1->type,a1->reg,a1->disp,ip); r=tempi->r.reg; } else - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a1->type,a1->reg,a1->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a1->type,a1->reg,a1->disp,ip); if (r>7) j=0xC0004D; else @@ -315,19 +294,18 @@ U0 ICMul(CIntermediateCode *tempi,I64 ip) ICU32(tempi,i); } } else { - if (tempi->ic_class->raw_type&1) + if (tempi->ic_class->raw_type&RTF_UNSIGNED) i=0xE0F748; else i=0xE8F748; - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); + if (alt) { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); r2=REG_RCX; - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); - if (a1->type&TY_MASK!=TY_REG || - a1->type&RT_MASKtype,a1->reg,a1->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); + if (!(a1->type&MDF_REG) || a1->type.raw_typetype,a1->reg,a1->disp,ip); r2=REG_RCX; } else r2=a1->reg; @@ -338,20 +316,20 @@ U0 ICMul(CIntermediateCode *tempi,I64 ip) } ICU24(tempi,i+r2<<16); } - ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,TY_REG+RT_I64,r,0,ip); + ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,MDF_REG+RT_I64,r,0,ip); } U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) { I64 i=tempi->a2.disp,r=REG_RAX,j; - if (!(tempi->ic_class->raw_type&1) && - tempi->a2.type&TY_MASK==TY_IMM && MIN_I32<=i<=MAX_I32) { - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (tempi->a1.type==TY_REG+RT_I64) + if (!(tempi->ic_class->raw_type&RTF_UNSIGNED) && + tempi->a2.type&MDF_IMM && MIN_I32<=i<=MAX_I32) { + if (tempi->ic_flags & ICF_BY_VAL) { + if (tempi->a1.type==MDF_REG+RT_I64) r=tempi->a1.reg; else - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); if (r>7) j=0xC0004D; @@ -363,13 +341,13 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) ICU24(tempi,0x6900+j+(r&7)<<16+(r&7)<<19); ICU32(tempi,i); } - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,r,0,ip); + ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, + tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,r,0,ip); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, + MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); r=REG_RBX; if (MIN_I8<=i<=MAX_I8) ICU32(tempi,i<<24+0xDB6B48); @@ -377,68 +355,46 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) ICU24(tempi,0xDB6948); ICU32(tempi,i); } - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, - TY_REG+RT_I64,REG_RBX,0,ip); + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, + MDF_REG+RT_I64,REG_RBX,0,ip); } } else { - if (tempi->ic_class->raw_type&1) + if (tempi->ic_class->raw_type&RTF_UNSIGNED) i=0xE3F748; else i=0xEBF748; - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,ip); - } + if (tempi->ic_flags & ICF_BY_VAL) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, + tempi->a1.reg,tempi->a1.disp,ip); ICU24(tempi,i); - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, + tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip); } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - } - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, + MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); ICU24(tempi,i); - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, - TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, + MDF_REG+RT_I64,REG_RAX,0,ip); } } - if (tempi->r.type&TY_MASK) - ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,TY_REG+RT_I64,r,0,ip); + if (tempi->r.type.mode) + ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,MDF_REG+RT_I64,r,0,ip); } U0 ICDiv(CIntermediateCode *tempi,I64 ip) { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - } - if (tempi->ic_class->raw_type&1) { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); + if (tempi->ic_class->raw_type&RTF_UNSIGNED) { ICZero(tempi,REG_RDX); ICU24(tempi,0xF1F748); } else { @@ -446,26 +402,18 @@ U0 ICDiv(CIntermediateCode *tempi,I64 ip) ICU24(tempi,0xF9F748); } ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip) { - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,ip); - } - if (tempi->ic_class->raw_type&1) { + if (tempi->ic_flags & ICF_BY_VAL) { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, + tempi->a1.reg,tempi->a1.disp,ip); + if (tempi->ic_class->raw_type&RTF_UNSIGNED) { ICZero(tempi,REG_RDX); ICU24(tempi,0xF1F748); } else { @@ -473,28 +421,20 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip) ICU24(tempi,0xF9F748); } if (is_mod) - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RDX,0,ip); + ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, + tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RDX,0,ip); else - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, + tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip); } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICU24(tempi,0xD98748); //xchg bx,cx - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); //dangerous might clobber RBX in Mov, but it doesn't - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+tempi->a1.type_pointed_to, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,MDF_DISP+tempi->a1.type_pointed_to, REG_RBX,0,ip); - if (tempi->ic_class->raw_type&1) { + if (tempi->ic_class->raw_type&RTF_UNSIGNED) { ICZero(tempi,REG_RDX); ICU24(tempi,0xF1F748); } else { @@ -502,36 +442,29 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip) ICU24(tempi,0xF9F748); } if (is_mod) - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RBX,0, - TY_REG+RT_I64,REG_RDX,0,ip); + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RBX,0, + MDF_REG+RT_I64,REG_RDX,0,ip); else - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RBX,0, - TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RBX,0, + MDF_REG+RT_I64,REG_RAX,0,ip); } - if (tempi->r.type&TY_MASK) { + if (tempi->r.type.mode) { if (is_mod) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RDX,0,ip); + MDF_REG+RT_I64,REG_RDX,0,ip); else ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } } U0 ICMod(CIntermediateCode *tempi,I64 ip) { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - } - if (tempi->ic_class->raw_type&1) { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); + if (tempi->ic_class->raw_type&RTF_UNSIGNED) { ICZero(tempi,REG_RDX); ICU24(tempi,0xF1F748); } else { @@ -539,35 +472,33 @@ U0 ICMod(CIntermediateCode *tempi,I64 ip) ICU24(tempi,0xF9F748); } ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RDX,0,ip); + MDF_REG+RT_I64,REG_RDX,0,ip); } -U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed_to, - I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2, - I64 t3,I64 r3,I64 d3,I64 op,I64 ip) +U0 ICAddSubEctEqu(CIntermediateCode *tempi,U8 type_pointed_to, + CICType t1,I64 r1,I64 d1,CICType t2,I64 r2,I64 d2, + CICType t3,I64 r3,I64 d3,I64 op,I64 ip) { Bool done; I64 result_reg,temp,i; - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (t3&TY_MASK==TY_IMM) { - ICAddSubEctImm(tempi, - t2&TY_MASK+type_pointed_to,r2,d2,t2&TY_MASK+ + if (tempi->ic_flags & ICF_BY_VAL) { + if (t3&MDF_IMM) { + ICAddSubEctImm(tempi,t2&MDG_MASK+type_pointed_to,r2,d2,t2&MDG_MASK+ type_pointed_to,r2,d2,d3,op,ip); - if (t1&TY_MASK) - ICMov(tempi,t1,r1,d1,t2&TY_MASK+type_pointed_to,r2,d2,ip); + if (t1.mode) + ICMov(tempi,t1,r1,d1,t2&MDG_MASK+type_pointed_to,r2,d2,ip); return; } else { done=FALSE; if (type_pointed_to>=RT_I64) { - if (!(t1&TY_MASK) && - TY_REG<=t2&TY_MASK<=TY_RIP_DISP32) { - if (t3&TY_MASK==TY_REG) + if (!t1.mode && t2&MDG_REG_DISP_SIB_RIP) { + if (t3&MDF_REG) temp=r3; else { temp=REG_RCX; - ICMov(tempi,TY_REG+RT_I64,temp,0,t3,r3,d3,ip); + ICMov(tempi,MDF_REG+RT_I64,temp,0,t3,r3,d3,ip); } - i=ICModr1(temp,t2&TY_MASK+type_pointed_to,r2,d2); + i=ICModr1(temp,t2&MDG_MASK+type_pointed_to,r2,d2); if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICRex(tempi,i.u8[1]); @@ -575,44 +506,32 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed_to, ICModr2(tempi,i,d2,ip+4); return; } - if (t3&RT_MASK>=RT_I64 && - TY_REG<=t3&TY_MASK<=TY_RIP_DISP32) { - if (t2&TY_MASK==TY_REG) + if (t3.raw_type>=RT_I64 && t3&MDG_REG_DISP_SIB_RIP) { + if (t2&MDF_REG) result_reg=r2; else { result_reg=REG_RCX; - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); } - i=ICModr1(result_reg,t3&TY_MASK+type_pointed_to,r3,d3); + i=ICModr1(result_reg,t3&MDG_MASK+type_pointed_to,r3,d3); if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICRex(tempi,i.u8[1]); ICU16(tempi,i.u8[2]<<8+op.u8[0]); ICModr2(tempi,i,d3,ip+4); - ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2, - TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,t2&MDG_MASK+type_pointed_to,r2,d2, + MDF_REG+RT_I64,result_reg,0,ip); done=TRUE; } } if (!done) { - if (tempi->ic_flags & ICF_A1_FIRST) { - if (t2&TY_MASK==TY_REG && r2!=REG_RAX) - result_reg=r2; - else { - result_reg=REG_RCX; - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - t2&TY_MASK+type_pointed_to,r2,d2,ip); - } - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); - if (t2&TY_MASK==TY_REG && r2!=REG_RAX) - result_reg=r2; - else { - result_reg=REG_RCX; - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - t2&TY_MASK+type_pointed_to,r2,d2,ip); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); + if (t2&MDF_REG && r2!=REG_RAX) + result_reg=r2; + else { + result_reg=REG_RCX; + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + t2&MDG_MASK+type_pointed_to,r2,d2,ip); } if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); @@ -621,35 +540,35 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed_to, else ICU8(tempi,0x48); ICU16(tempi,0xC000+op.u8[0]+(result_reg&7)<<11); - ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2, - TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,t2&MDG_MASK+type_pointed_to,r2,d2, + MDF_REG+RT_I64,result_reg,0,ip); } } } else { done=FALSE; - if (t3&TY_MASK==TY_IMM && op.u8[2]) { + if (t3&MDF_IMM && op.u8[2]) { if (!d3.u32[1]) { if (tempi->ic_flags&ICF_NO_DEPEND_RESULT && - t2&TY_MASK==TY_REG && d3(U64)<=MAX_I8) { - ICSlashOp(tempi,TY_DISP+type_pointed_to,r2,0,0x838000+op.u8[4],ip); + t2&MDF_REG && d3(U64)<=MAX_I8) { + ICSlashOp(tempi,MDF_DISP+type_pointed_to,r2,0,0x838000+op.u8[4],ip); ICU8(tempi,d3); done=TRUE; } else if (op.u8[2]==0x24) {//AND - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_DISP+type_pointed_to,REG_RCX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + MDF_DISP+type_pointed_to,REG_RCX,0,ip); result_reg=REG_RAX; if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICU16(tempi,op.u8[3]<<8+0x40); ICU32(tempi,d3); - ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0, - TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,MDF_DISP+type_pointed_to,REG_RCX,0, + MDF_REG+RT_I64,result_reg,0,ip); done=TRUE; - } else if (type_pointed_to&RT_MASKic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); @@ -663,48 +582,46 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed_to, ICU16(tempi,op.u8[2]<<8+0x40); ICU8(tempi,d3); } - ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0, - TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,MDF_DISP+type_pointed_to,REG_RCX,0, + MDF_REG+RT_I64,result_reg,0,ip); done=TRUE; } } } if (!done) { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); - } - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,TY_DISP+type_pointed_to,REG_RCX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, + MDF_DISP+type_pointed_to,REG_RCX,0,ip); result_reg=REG_RBX; if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICU8(tempi,0x48); ICU16(tempi,0xC000+op.u8[0]+(result_reg&7)<<11); - ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0, - TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,MDF_DISP+type_pointed_to,REG_RCX,0, + MDF_REG+RT_I64,result_reg,0,ip); } } - if (t1&TY_MASK) - ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip); + if (t1.mode) + ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,result_reg,0,ip); } -U0 ICShift(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, - I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3,I64 us,I64 is,I64 ip) +U0 ICShift(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1, + CICType t2,I64 r2,I64 d2,CICType t3,I64 r3,I64 d3, + I64 us,I64 is,I64 ip) { I64 i=0x48,result_reg; - if (tempi->ic_class->raw_type&1 || tempi->ic_flags & ICF_USE_UNSIGNED) + if (tempi->ic_class->raw_type&RTF_UNSIGNED || + tempi->ic_flags & ICF_USE_UNSIGNED) is=us; - if (t1&TY_MASK==TY_REG) { + if (t1&MDF_REG) { result_reg=r1; if (result_reg>7) i++; } else result_reg=REG_RAX; - if (t3&TY_MASK==TY_IMM) { - ICMov(tempi,TY_REG+RT_I64,result_reg,0,t2,r2,d2,ip); + if (t3&MDF_IMM) { + ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t2,r2,d2,ip); if (d3==1) ICU24(tempi,i+is.u16[2]<<8+(result_reg&7)<<16); else { @@ -712,52 +629,37 @@ U0 ICShift(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, ICU8(tempi,d3); } } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,result_reg,0,t2,r2,d2,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); - ICMov(tempi,TY_REG+RT_I64,result_reg,0,t2,r2,d2,ip); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); + ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t2,r2,d2,ip); ICU24(tempi,i+is.u16[1]<<8+(result_reg&7)<<16); } - ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,result_reg,0,ip); } -U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed_to, - I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3, - I64 us,I64 is,I64 ip) +U0 ICShiftEqu(CIntermediateCode *tempi,U8 type_pointed_to, + CICType t1,I64 r1,I64 d1, + CICType t2,I64 r2,I64 d2, + CICType t3,I64 r3,I64 d3,I64 us,I64 is,I64 ip) { I64 result_reg; - if (tempi->ic_class->raw_type&1 || tempi->ic_flags & ICF_USE_UNSIGNED) + if (tempi->ic_class->raw_type&RTF_UNSIGNED || + tempi->ic_flags & ICF_USE_UNSIGNED) is=us; - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (tempi->ic_flags & ICF_A1_FIRST) { - if (t2&TY_MASK==TY_REG) - result_reg=r2; - else { - result_reg=REG_RAX; - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - t2&TY_MASK+type_pointed_to,r2,d2,ip); - } - if (t3&TY_MASK!=TY_IMM) - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); - } else { - if (t3&TY_MASK!=TY_IMM) - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); - if (t2&TY_MASK==TY_REG) - result_reg=r2; - else { - result_reg=REG_RAX; - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - t2&TY_MASK+type_pointed_to,r2,d2,ip); - } + if (tempi->ic_flags & ICF_BY_VAL) { + if (!(t3&MDF_IMM)) + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); + if (t2&MDF_REG) + result_reg=r2; + else { + result_reg=REG_RAX; + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + t2&MDG_MASK+type_pointed_to,r2,d2,ip); } if (result_reg>7) ICU8(tempi,0x49); else ICU8(tempi,0x48); - if (t3&TY_MASK==TY_IMM) { + if (t3&MDF_IMM) { if (d3==1) ICU16(tempi,is.u16[2]+(result_reg&7)<<8); else { @@ -766,21 +668,16 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed_to, } } else ICU16(tempi,is.u16[1]+(result_reg&7)<<8); - ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2,TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,t2&MDG_MASK+type_pointed_to,r2,d2, + MDF_REG+RT_I64,result_reg,0,ip); } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip); - if (t3&TY_MASK!=TY_IMM) - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); - } else { - if (t3&TY_MASK!=TY_IMM) - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip); - } - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+type_pointed_to,REG_RDX,0,ip); + if (!(t3&MDF_IMM)) + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,MDF_DISP+type_pointed_to,REG_RDX,0,ip); result_reg=REG_RAX; ICU8(tempi,0x48); - if (t3&TY_MASK==TY_IMM) { + if (t3&MDF_IMM) { if (d3==1) ICU16(tempi,is.u16[2]+(result_reg&7)<<8); else { @@ -790,8 +687,8 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed_to, } else ICU16(tempi,is.u16[1]+(result_reg&7)<<8); ICMov(tempi, - TY_DISP+type_pointed_to,REG_RDX,0,TY_REG+RT_I64,result_reg,0,ip); + MDF_DISP+type_pointed_to,REG_RDX,0,MDF_REG+RT_I64,result_reg,0,ip); } - if (t1&TY_MASK) - ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip); + if (t1.mode) + ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,result_reg,0,ip); } diff --git a/Compiler/BackB.CPP b/Compiler/BackB.CPP index 37f30df..3ae071b 100644 --- a/Compiler/BackB.CPP +++ b/Compiler/BackB.CPP @@ -1,55 +1,43 @@ U0 ICUnaries(CIntermediateCode *tempi,I64 op,I64 ip) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICSlashOp(tempi,TY_REG+RT_I64,REG_RAX,0,op,ip); + ICSlashOp(tempi,MDF_REG+RT_I64,REG_RAX,0,op,ip); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICNot(CIntermediateCode *tempi,I64 ip) { I64 i; - if (tempi->a1.type&RT_MASK<=RT_U8 && - TY_DISP<=tempi->a1.type&TY_MASK<=TY_RIP_DISP32) { + if (tempi->a1.type.raw_type<=RT_U8 && tempi->a1.type&MDG_DISP_SIB_RIP) { i=ICModr1(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp); ICRex(tempi,i.u8[1]); ICU16(tempi,i.u8[2]<<8+0xF6); //TEST ?,0xFF ICModr2(tempi,i,tempi->a1.disp,ip+5); ICU8(tempi,0xFF); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); ICTest(tempi,REG_RAX); } ICU24(tempi,0xC0940F); //SETZ AL ICU32(tempi,0xC0B60F48); //MOVZX RAX,AL ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_U64,REG_RAX,0,ip); + MDF_REG+RT_U64,REG_RAX,0,ip); } U0 ICAndAnd(CIntermediateCode *tempi,I64 ip) { I64 r2; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->a1.type&TY_MASK!=TY_REG || tempi->a1.reg==REG_RAX) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - r2=REG_RDX; - } else - r2=tempi->a1.reg; - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->a1.type&TY_MASK!=TY_REG || tempi->a1.reg==REG_RAX) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - r2=REG_RDX; - } else - r2=tempi->a1.reg; - } + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + if (!(tempi->a1.type&MDF_REG) || tempi->a1.reg==REG_RAX) { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); + r2=REG_RDX; + } else + r2=tempi->a1.reg; ICZero(tempi,REG_RAX); ICTest(tempi,r2); ICU16(tempi,0x0874); @@ -57,31 +45,20 @@ U0 ICAndAnd(CIntermediateCode *tempi,I64 ip) ICU16(tempi,0x0374); ICU24(tempi,0xC0FF48); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICOrOr(CIntermediateCode *tempi,I64 ip) { I64 i=0x48,r2; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->a1.type&TY_MASK!=TY_REG || tempi->a1.reg==REG_RAX) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - r2=REG_RDX; - } else - r2=tempi->a1.reg; - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->a1.type&TY_MASK!=TY_REG || tempi->a1.reg==REG_RAX) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - r2=REG_RDX; - } else - r2=tempi->a1.reg; - } + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + if (!(tempi->a1.type&MDF_REG) || tempi->a1.reg==REG_RAX) { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); + r2=REG_RDX; + } else + r2=tempi->a1.reg; if (r2>7) { i++; @@ -92,31 +69,20 @@ U0 ICOrOr(CIntermediateCode *tempi,I64 ip) ICU16(tempi,0x0374); ICU24(tempi,0xC0FF48); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICXorXor(CIntermediateCode *tempi,I64 ip) { I64 r2; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->a1.type&TY_MASK!=TY_REG) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - r2=REG_RDX; - } else - r2=tempi->a1.reg; - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->a1.type&TY_MASK!=TY_REG) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - r2=REG_RDX; - } else - r2=tempi->a1.reg; - } + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + if (!(tempi->a1.type&MDF_REG)) { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); + r2=REG_RDX; + } else + r2=tempi->a1.reg; ICZero(tempi,REG_RBX); ICTest(tempi,r2); ICU16(tempi,0x0374); @@ -130,16 +96,16 @@ U0 ICXorXor(CIntermediateCode *tempi,I64 ip) ICU24(tempi,0xC33348); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICCmp(CIntermediateCode *tempi,I64 us,I64 is,I64 ip) { I64 r1,d1,r2,i=0x48,j=tempi->a2.disp; - if (tempi->a2.type&TY_MASK==TY_IMM && MIN_I32<=j<=MAX_I32) { + if (tempi->a2.type&MDF_IMM && MIN_I32<=j<=MAX_I32) { if (!(tempi->ic_flags&(ICF_POP_CMP|ICF_PUSH_CMP)) && - tempi->a1.type&TY_MASK==TY_DISP && //TODO - tempi->a1.type&RT_MASK>=RT_I64 && tempi->a1.reg!=REG_RAX) { + tempi->a1.type&MDF_DISP && //TODO + tempi->a1.type.raw_type>=RT_I64 && tempi->a1.reg!=REG_RAX) { r1=tempi->a1.reg; d1=tempi->a1.disp; ICZero(tempi,REG_RAX); @@ -167,10 +133,10 @@ U0 ICCmp(CIntermediateCode *tempi,I64 us,I64 is,I64 ip) ICPopRegs(tempi,1<a1.type&TY_MASK==TY_REG && tempi->a1.reg!=REG_RAX) + if (tempi->a1.type&MDF_REG && tempi->a1.reg!=REG_RAX) r1=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); r1=REG_RCX; } @@ -187,53 +153,32 @@ U0 ICCmp(CIntermediateCode *tempi,I64 us,I64 is,I64 ip) } } if (tempi->ic_flags & ICF_PUSH_CMP) - ICPush(tempi,TY_IMM+RT_I64,0,j,ip); - if (tempi->ic_class->raw_type&1 || tempi->ic_flags & ICF_USE_UNSIGNED) + ICPush(tempi,MDF_IMM+RT_I64,0,j,ip); + if (tempi->ic_class->raw_type&RTF_UNSIGNED || + tempi->ic_flags & ICF_USE_UNSIGNED) is=us; ICU16(tempi,0x300+is); ICU24(tempi,0xC0FF48); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->ic_flags & ICF_POP_CMP) { - ICPopRegs(tempi,1<a1.type&TY_MASK==TY_REG && tempi->a1.reg!=REG_RAX) - r1=tempi->a1.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - r1=REG_RCX; - } - } - if (tempi->a2.type&TY_MASK==TY_REG && tempi->a2.reg!=REG_RAX) - r2=tempi->a2.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - r2=REG_RDX; - } + if (tempi->a2.type&MDF_REG && tempi->a2.reg!=REG_RAX) + r2=tempi->a2.reg; + else { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + r2=REG_RCX; + } + if (tempi->ic_flags & ICF_POP_CMP) { + ICPopRegs(tempi,1<a2.type&TY_MASK==TY_REG && tempi->a2.reg!=REG_RAX) - r2=tempi->a2.reg; + if (tempi->a1.type&MDF_REG && tempi->a1.reg!=REG_RAX) + r1=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - r2=REG_RCX; - } - if (tempi->ic_flags & ICF_POP_CMP) { - ICPopRegs(tempi,1<a1.type,tempi->a1.reg,tempi->a1.disp,ip); r1=REG_RDX; - } else { - if (tempi->a1.type&TY_MASK==TY_REG && tempi->a1.reg!=REG_RAX) - r1=tempi->a1.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - r1=REG_RDX; - } } } ICZero(tempi,REG_RAX); @@ -244,12 +189,13 @@ U0 ICCmp(CIntermediateCode *tempi,I64 us,I64 is,I64 ip) if (tempi->ic_flags & ICF_PUSH_CMP) ICPushRegs(tempi,1<ic_class->raw_type&1 || tempi->ic_flags & ICF_USE_UNSIGNED) + if (tempi->ic_class->raw_type&RTF_UNSIGNED || + tempi->ic_flags & ICF_USE_UNSIGNED) is=us; ICU16(tempi,0x300+is); ICU24(tempi,0xC0FF48); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } } @@ -258,85 +204,50 @@ U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2, {//TODO:not fully utilizing Modr Bool no_depend=ToBool(tempi2->ic_flags&ICF_NO_DEPEND_RESULT); I64 r1,t2,r2,d2,i=0x48; - if (tempi->ic_flags & ICF_NOT_ADDR) { - t2=a2->type&TY_MASK+RT_I64; //TODO: check overflow + if (tempi->ic_flags & ICF_BY_VAL) { + t2=a2->type&MDG_MASK+RT_I64; //TODO: check overflow r2=a2->reg; d2=a2->disp; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (a1->type&TY_MASK==TY_REG && (a1->reg!=REG_RAX||no_depend)) - r1=a1->reg; - else if (a1->type&TY_MASK!=TY_IMM || a1->disp>63) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); - r1=REG_RCX; - } else - r1=0; - if (!(TY_REG<=t2&TY_MASK<=TY_RIP_DISP32) || - !(r2.u8[0]!=REG_RAX&&(t2&TY_MASK!=TY_SIB||r2.u8[1]&15!=REG_RAX)|| - no_depend)) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip); - t2=TY_REG+RT_I64; - r2=REG_RDX; - d2=0; - } - } else { - if (!(TY_REG<=t2&TY_MASK<=TY_RIP_DISP32) || - !(r2.u8[0]!=REG_RAX&&(t2&TY_MASK!=TY_SIB||r2.u8[1]&15!=REG_RAX)|| - no_depend)) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); - t2=TY_REG+RT_I64; - r2=REG_RCX; - d2=0; - } - if (a1->type&TY_MASK==TY_REG && (a1->reg!=REG_RAX||no_depend)) - r1=a1->reg; - else if (a1->type&TY_MASK!=TY_IMM || a1->disp>63) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip); - r1=REG_RDX; - } else - r1=0; + if (!(t2&MDG_REG_DISP_SIB_RIP) || !(r2.u8[0]!=REG_RAX&&(!(t2&MDF_SIB) || + r2.u8[1]&15!=REG_RAX) || no_depend)) { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); + t2=MDF_REG+RT_I64; + r2=REG_RCX; + d2=0; } + if (a1->type&MDF_REG && (a1->reg!=REG_RAX||no_depend)) + r1=a1->reg; + else if (!(a1->type&MDF_IMM) || a1->disp>63) { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip); + r1=REG_RDX; + } else + r1=0; } else { - t2=TY_DISP+RT_I64; + t2=MDF_DISP+RT_I64; d2=0; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (a1->type&TY_MASK==TY_REG && (a1->reg!=REG_RAX||no_depend)) - r1=a1->reg; - else if (a1->type&TY_MASK!=TY_IMM || a1->disp>63) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); - r1=REG_RCX; - } else - r1=0; - if (a2->type&TY_MASK==TY_REG && (a2->reg!=REG_RAX||no_depend)) - r2=a2->reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a2->type,a2->reg,a2->disp,ip); - r2=REG_RDX; - } - } else { - if (a2->type&TY_MASK==TY_REG && (a2->reg!=REG_RAX||no_depend)) - r2=a2->reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a2->type,a2->reg,a2->disp,ip); - r2=REG_RCX; - } - if (a1->type&TY_MASK==TY_REG && (a1->reg!=REG_RAX||no_depend)) - r1=a1->reg; - else if (a1->type&TY_MASK!=TY_IMM || a1->disp>63) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip); - r1=REG_RDX; - } else - r1=0; + if (a2->type&MDF_REG && (a2->reg!=REG_RAX||no_depend)) + r2=a2->reg; + else { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a2->type,a2->reg,a2->disp,ip); + r2=REG_RCX; } + if (a1->type&MDF_REG && (a1->reg!=REG_RAX||no_depend)) + r1=a1->reg; + else if (!(a1->type&MDF_IMM) || a1->disp>63) { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip); + r1=REG_RDX; + } else + r1=0; } if (!no_depend) ICZero(tempi,REG_RAX); if (tempi->ic_flags&ICF_LOCK && op!=0xA30F) ICU8(tempi,OC_LOCK_PREFIX); - if (a1->type&TY_MASK==TY_IMM && a1->disp<32) - t2=t2&TY_MASK+RT_U32; + if (a1->type&MDF_IMM && a1->disp<32) + t2=t2&MDG_MASK+RT_U32; i=ICModr1(r1,t2,r2,d2); ICRex(tempi,i.u8[1]); - if (a1->type&TY_MASK==TY_IMM && a1->disp<64) { + if (a1->type&MDF_IMM && a1->disp<64) { ICU24(tempi,i.u8[2]<<16+op_imm); ICModr2(tempi,i,d2,ip+5); ICU8(tempi,a1->disp); @@ -346,15 +257,15 @@ U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2, } if (!no_depend) { ICU32(tempi,0xD08348); - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } } U0 ICToUpper(CIntermediateCode *tempi,I64 ip) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); ICU32(tempi,0x61F88348); ICU16(tempi,0x0A7C); @@ -378,10 +289,10 @@ U0 ICToF64(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip) U0 ICToBool(CCmpCtrl *,CIntermediateCode *tempi,I64 ip) { I64 r; - if (tempi->a1.type&TY_MASK==TY_REG) + if (tempi->a1.type&MDF_REG) r=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); r=REG_RAX; } @@ -394,40 +305,40 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip) { I64 r; CHashClass *tempc=tempi->ic_class,*tempc1=tempc-1; - if (tempi->ic_flags & ICF_NOT_ADDR) { + if (tempi->ic_flags & ICF_BY_VAL) { if (tempc->ptr_stars_cnt && tempc1->size!=1) { ICAddSubEctImm(tempi, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip); } else ICSlashOp(tempi, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,op,ip); - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); } else { - if (tempi->a1.type&TY_MASK==TY_REG) + if (tempi->a1.type&MDF_REG) r=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); r=REG_RCX; } if (tempc->ptr_stars_cnt && tempc1->size!=1) { - ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0, - TY_DISP+tempi->a1.type_pointed_to,r,0, + ICAddSubEctImm(tempi,MDF_DISP+tempi->a1.type_pointed_to,r,0, + MDF_DISP+tempi->a1.type_pointed_to,r,0, tempc1->size,op.u16[3],ip); } else ICSlashOp(tempi, - TY_DISP+tempi->a1.type_pointed_to,r,0,op,ip); - if (tempi->r.type&TY_MASK) + MDF_DISP+tempi->a1.type_pointed_to,r,0,op,ip); + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+tempi->a1.type_pointed_to,r,0,ip); + MDF_DISP+tempi->a1.type_pointed_to,r,0,ip); } } @@ -435,82 +346,83 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip) { I64 r; CHashClass *tempc=tempi->ic_class,*tempc1=tempc-1; - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (tempi->r.type&TY_MASK) + if (tempi->ic_flags & ICF_BY_VAL) { + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); if (tempc->ptr_stars_cnt && tempc1->size!=1) ICAddSubEctImm(tempi, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip); else ICSlashOp(tempi, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,op,ip); } else { - if (tempi->a1.type&TY_MASK==TY_REG && - !(tempi->r.type&TY_MASK==TY_REG && tempi->r.reg==tempi->a1.reg)) + if (tempi->a1.type&MDF_REG && + !(tempi->r.type&MDF_REG && tempi->r.reg==tempi->a1.reg)) r=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); r=REG_RCX; } - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+tempi->a1.type_pointed_to,r,0,ip); + MDF_DISP+tempi->a1.type_pointed_to,r,0,ip); if (tempc->ptr_stars_cnt && tempc1->size!=1) - ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0, - TY_DISP+tempi->a1.type_pointed_to,r,0,tempc1->size,op.u16[3],ip); + ICAddSubEctImm(tempi,MDF_DISP+tempi->a1.type_pointed_to,r,0, + MDF_DISP+tempi->a1.type_pointed_to,r,0,tempc1->size,op.u16[3],ip); else - ICSlashOp(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0,op,ip); + ICSlashOp(tempi,MDF_DISP+tempi->a1.type_pointed_to,r,0,op,ip); } } U0 ICDerefPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip) { - I64 t,r; + CICType t; + I64 r; CHashClass *tempc1=tempi->ic_class; - t=tempi->r.type&RT_MASK; + t=tempi->r.type.raw_type; if (t>tempi->a1.type_pointed_to) t=tempi->a1.type_pointed_to; - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (tempi->a1.type&TY_MASK==TY_REG) + if (tempi->ic_flags & ICF_BY_VAL) { + if (tempi->a1.type&MDF_REG) r=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); r=REG_RDX; } ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+t,r,0,ip); + MDF_DISP+t,r,0,ip); if (tempc1->size!=1) ICAddSubEctImm(tempi, - tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp, - tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp, + tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp, + tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp, tempc1->size,op.u16[3],ip); else ICSlashOp(tempi, - tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,op,ip); + tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,op,ip); } else { - if (tempi->a1.type&TY_MASK==TY_REG) + if (tempi->a1.type&MDF_REG) r=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); r=REG_RCX; } - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,TY_DISP+RT_I64,r,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,MDF_DISP+RT_I64,r,0,ip); if (tempc1->size!=1) - ICAddSubEctImm(tempi,TY_DISP+RT_I64,r,0,TY_DISP+RT_I64,r,0, + ICAddSubEctImm(tempi,MDF_DISP+RT_I64,r,0,MDF_DISP+RT_I64,r,0, tempc1->size,op.u16[3],ip); else - ICSlashOp(tempi,TY_DISP+RT_I64,r,0,op,ip); + ICSlashOp(tempi,MDF_DISP+RT_I64,r,0,op,ip); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+t,REG_RDX,0,ip); + MDF_DISP+t,REG_RDX,0,ip); } } @@ -518,70 +430,72 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip) { CHashClass *tempc1=tempi->ic_class2-1; I64 r; - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (tempi->a1.type&TY_MASK==TY_REG) + if (tempi->ic_flags & ICF_BY_VAL) { + if (tempi->a1.type&MDF_REG) r=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); r=REG_RDX; } - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0, + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,r,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempc1->size!=1 || tempi->a1.type&TY_MASK==TY_STK) + if (tempc1->size!=1 || tempi->a1.type&MDF_STK) ICAddSubEctImm(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp, - TY_REG+RT_I64,r,0,tempc1->size,op.u16[3],ip); + MDF_REG+RT_I64,r,0,tempc1->size,op.u16[3],ip); else ICSlashOp(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp,op,ip); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,TY_DISP+RT_I64,REG_RDX,0,ip); - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_DISP+RT_I64,REG_RDX,0,ip); + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); if (tempc1->size!=1) - ICAddSubEctImm(tempi,TY_DISP+RT_I64,REG_RDX,0, - TY_REG+RT_I64,REG_RCX,0,tempc1->size,op.u16[3],ip); + ICAddSubEctImm(tempi,MDF_DISP+RT_I64,REG_RDX,0, + MDF_REG+RT_I64,REG_RCX,0,tempc1->size,op.u16[3],ip); else - ICSlashOp(tempi,TY_DISP+RT_I64,REG_RDX,0,op,ip); + ICSlashOp(tempi,MDF_DISP+RT_I64,REG_RDX,0,op,ip); } } U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip, I64 us,I64 is,I64 not_us,I64 not_is,U8 *buf,I64 ip2) { - I64 r1,r2,i=0x48,j,t1,t2,result_reg; + I64 r1,r2,i=0x48,j,result_reg; + CICType t1,t2; Bool short_jmp,swap,done; CCodeMisc *lb; CICArg *a1=&tempi->a1,*a2=&tempi->a2; j=a1->disp; - if (a1->type&TY_MASK==TY_IMM && MIN_I32<=j<=MAX_I32) { + if (a1->type&MDF_IMM && MIN_I32<=j<=MAX_I32) { SwapI64(&a1,&a2); swap=TRUE; us=not_us; is=not_is; } else swap=FALSE; - if (tempi->ic_class->raw_type&1 || tempi->ic_flags & ICF_USE_UNSIGNED) + if (tempi->ic_class->raw_type&RTF_UNSIGNED || + tempi->ic_flags & ICF_USE_UNSIGNED) is=us; j=a2->disp; - if (a2->type&TY_MASK==TY_IMM && MIN_I32<=j<=MAX_I32) { - if (!has_result && TY_REG<=a1->type&TY_MASK<=TY_RIP_DISP32) + if (a2->type&MDF_IMM && MIN_I32<=j<=MAX_I32) { + if (!has_result && a1->type&MDG_REG_DISP_SIB_RIP) ICAddSubEctImm(tempi,a1->type,a1->reg,a1->disp, a1->type,a1->reg,a1->disp,j,0x073B,ip2); else { - if (a1->type&TY_MASK==TY_REG) + if (a1->type&MDF_REG) r1=a1->reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip2); r1=REG_RDX; } if (!j) { @@ -613,7 +527,7 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip, } if (has_result) { if (!swap) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,TY_IMM+RT_I64,0,j,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_IMM+RT_I64,0,j,ip2); result_reg=REG_RCX; } else result_reg=r1; @@ -624,10 +538,9 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip, r1=a1->reg; r2=a2->reg; t2=a2->type; - if (t2&RT_MASK>=RT_I64 && !has_result && - TY_DISP<=t2&TY_MASK<=TY_RIP_DISP32) { - if (t1&TY_MASK!=TY_REG || t1&RT_MASKtype,a1->reg,a1->disp,ip2); + if (t2.raw_type>=RT_I64 && !has_result && t2&MDG_DISP_SIB_RIP) { + if (!(t1&MDF_REG) || t1.raw_typetype,a1->reg,a1->disp,ip2); r1=REG_RAX; } i=ICModr1(r1,t2,r2,a2->disp); @@ -635,13 +548,13 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip, ICU16(tempi,i.u8[2]<<8+0x3B); ICModr2(tempi,i,a2->disp,ip2+4); done=TRUE; - } else if (t1&RT_MASK>=RT_I64 && TY_REG<=t1&TY_MASK<=TY_RIP_DISP32) { - if (t2&TY_MASK!=TY_REG || t2&RT_MASKtype,a2->reg,a2->disp,ip2); + } else if (t1.raw_type>=RT_I64 && t1&MDG_REG_DISP_SIB_RIP) { + if (!(t2&MDF_REG) || t2.raw_typetype,a2->reg,a2->disp,ip2); r2=REG_RCX; } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip2); r2=REG_RAX; } } @@ -654,32 +567,17 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip, done=TRUE; } if (!done) { - if (tempi->ic_flags & ICF_A1_FIRST) { - if (a1->type&TY_MASK==TY_REG) - r1=a1->reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a1->type,a1->reg,a1->disp,ip2); - r1=REG_RAX; - } - if (a2->type&TY_MASK==TY_REG) - r2=a2->reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a2->type,a2->reg,a2->disp,ip2); - r2=REG_RCX; - } - } else { - if (a2->type&TY_MASK==TY_REG) - r2=a2->reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip2); - r2=REG_RAX; - } - if (a1->type&TY_MASK==TY_REG) - r1=a1->reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip2); - r1=REG_RCX; - } + if (a2->type&MDF_REG) + r2=a2->reg; + else { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip2); + r2=REG_RAX; + } + if (a1->type&MDF_REG) + r1=a1->reg; + else { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip2); + r1=REG_RCX; } if (r2>7) i++; @@ -730,7 +628,7 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip, } if (has_result) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,result_reg,0,ip2); + MDF_REG+RT_I64,result_reg,0,ip2); } U0 ICTestAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2) @@ -739,16 +637,15 @@ U0 ICTestAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2) Bool short_jmp; CCodeMisc *lb; - if (tempi->a1.type&TY_MASK!=TY_REG) { - if (tempi->a1.type&RT_MASK<=RT_U8 && - TY_DISP<=tempi->a1.type&TY_MASK<=TY_RIP_DISP32) { + if (!(tempi->a1.type&MDF_REG)) { + if (tempi->a1.type.raw_type<=RT_U8 && tempi->a1.type&MDG_DISP_SIB_RIP) { i=ICModr1(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp); ICRex(tempi,i.u8[1]); ICU16(tempi,i.u8[2]<<8+0xF6); ICModr2(tempi,i,tempi->a1.disp,ip2+5); ICU8(tempi,0xFF); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICTest(tempi,REG_RAX); } diff --git a/Compiler/BackC.CPP b/Compiler/BackC.CPP index 355d5bc..4a76af7 100644 --- a/Compiler/BackC.CPP +++ b/Compiler/BackC.CPP @@ -6,7 +6,7 @@ U0 ICAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2) CCodeMisc *lb; CICArg *a1,*a2; - if (tempi->a1.type&TY_MASK==TY_IMM) { + if (tempi->a1.type&MDF_IMM) { swap=TRUE; a1=&tempi->a2; a2=&tempi->a1; @@ -16,19 +16,19 @@ U0 ICAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2) a2=&tempi->a2; } - if (a2->type&TY_MASK==TY_IMM && a2->disp>MAX_U32) + if (a2->type&MDF_IMM && a2->disp>MAX_U32) override=TRUE; else override=FALSE; - if (a1->type&RT_MASKtype&RT_MASK) - it=a1->type&RT_MASK; + if (a1->type.raw_typetype.raw_type) + it=a1->type.raw_type; else - it=a2->type&RT_MASK; + it=a2->type.raw_type; i=a2->disp; - if (a2->type&TY_MASK==TY_IMM && i<=MAX_U32) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a1->type,a1->reg,a1->disp,ip2); + if (a2->type&MDF_IMM && i<=MAX_U32) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a1->type,a1->reg,a1->disp,ip2); if (i<=MAX_U8) ICU16(tempi,i<<8+0xA8); else if (i<=MAX_U16) @@ -38,51 +38,51 @@ U0 ICAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2) ICU32(tempi,i); } } else { - t1=TY_REG+it; + t1=MDF_REG+it; d1=0; - if ((tempi->ic_flags&ICF_A1_FIRST ^^swap)&&!override) { - if (a1->type&TY_MASK==TY_REG) { + if (swap && !override) { + if (a1->type&MDF_REG) { r1=a1->reg; swap=TRUE; } else { r1=REG_RCX; swap=FALSE; } - if (a2->type&TY_MASK==TY_REG) { + if (a2->type&MDF_REG) { r2=a2->reg; swap=FALSE; } else r2=REG_RDX; if (swap) { - if (a1->type&TY_MASK!=TY_REG || r1!=a1->reg) - ICMov(tempi,TY_REG+RT_I64,r1,0,a1->type,a1->reg,a1->disp,ip2); - if (TY_REG<=a2->type&TY_MASK<=TY_RIP_DISP32) { - t1=a2->type&TY_MASK+it; + if (!(a1->type&MDF_REG) || r1!=a1->reg) + ICMov(tempi,MDF_REG+RT_I64,r1,0,a1->type,a1->reg,a1->disp,ip2); + if (a2->type&MDG_REG_DISP_SIB_RIP) { + t1=a2->type&MDG_MASK+it; r2=a2->reg; d1=a2->disp; } else - ICMov(tempi,TY_REG+RT_I64,r2,0,a2->type,a2->reg,a2->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,r2,0,a2->type,a2->reg,a2->disp,ip2); i=ICModr1(r1,t1,r2,d1); } else { - if (TY_REG<=a1->type&TY_MASK<=TY_RIP_DISP32) { - t1=a1->type&TY_MASK+it; + if (a1->type&MDG_REG_DISP_SIB_RIP) { + t1=a1->type&MDG_MASK+it; r1=a1->reg; d1=a1->disp; } else - ICMov(tempi,TY_REG+RT_I64,r1,0,a1->type,a1->reg,a1->disp,ip2); - if (a2->type&TY_MASK!=TY_REG || r2!=a2->reg) - ICMov(tempi,TY_REG+RT_I64,r2,0,a2->type,a2->reg,a2->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,r1,0,a1->type,a1->reg,a1->disp,ip2); + if (!(a2->type&MDF_REG) || r2!=a2->reg) + ICMov(tempi,MDF_REG+RT_I64,r2,0,a2->type,a2->reg,a2->disp,ip2); i=ICModr1(r2,t1,r1,d1); } } else { - if (a2->type&TY_MASK==TY_REG) { + if (a2->type&MDF_REG) { r2=a2->reg; swap=FALSE; } else { r2=REG_RDX; swap=TRUE; } - if (a1->type&TY_MASK==TY_REG) { + if (a1->type&MDF_REG) { r1=a1->reg; swap=TRUE; } else @@ -90,24 +90,24 @@ U0 ICAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2) if (override) swap=FALSE; if (swap) { - if (TY_REG<=a2->type&TY_MASK<=TY_RIP_DISP32) { - t1=a2->type&TY_MASK+it; + if (a2->type&MDG_REG_DISP_SIB_RIP) { + t1=a2->type&MDG_MASK+it; r2=a2->reg; d1=a2->disp; } else - ICMov(tempi,TY_REG+RT_I64,r2,0,a2->type,a2->reg,a2->disp,ip2); - if (a1->type&TY_MASK!=TY_REG || r1!=a1->reg) - ICMov(tempi,TY_REG+RT_I64,r1,0,a1->type,a1->reg,a1->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,r2,0,a2->type,a2->reg,a2->disp,ip2); + if (!(a1->type&MDF_REG) || r1!=a1->reg) + ICMov(tempi,MDF_REG+RT_I64,r1,0,a1->type,a1->reg,a1->disp,ip2); i=ICModr1(r1,t1,r2,d1); } else { - if (a2->type&TY_MASK!=TY_REG || r2!=a2->reg) - ICMov(tempi,TY_REG+RT_I64,r2,0,a2->type,a2->reg,a2->disp,ip2); - if (TY_REG<=a1->type&TY_MASK<=TY_RIP_DISP32) { - t1=a1->type&TY_MASK+it; + if (!(a2->type&MDF_REG) || r2!=a2->reg) + ICMov(tempi,MDF_REG+RT_I64,r2,0,a2->type,a2->reg,a2->disp,ip2); + if (a1->type&MDG_REG_DISP_SIB_RIP) { + t1=a1->type&MDG_MASK+it; r1=a1->reg; d1=a1->disp; } else - ICMov(tempi,TY_REG+RT_I64,r1,0,a1->type,a1->reg,a1->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,r1,0,a1->type,a1->reg,a1->disp,ip2); i=ICModr1(r2,t1,r1,d1); } } @@ -159,33 +159,31 @@ U0 ICAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2) U0 ICAssign(CIntermediateCode *tempi,I64 ip) { CIntermediateCode *tempi1; - if (tempi->ic_flags & ICF_NOT_ADDR) { - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + if (tempi->ic_flags & ICF_BY_VAL) { + ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->r.type&TY_MASK) { - if (tempi->a1.type&TY_MASK==TY_REG) + if (tempi->r.type.mode) { + if (tempi->a1.type&MDF_REG) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); else ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } } else { - if (tempi->a1.type&TY_MASK==TY_REG) { - if (!(tempi1=OptLag1(tempi)) || - tempi1->ic_code!=IC_ADD_CONST || - tempi1->r.type!=TY_REG+RT_I64 || tempi1->r.reg!=tempi->a1.reg || - tempi1->a1.type!=TY_REG+RT_I64 || tempi1->a1.reg!=tempi->a1.reg || - (tempi->a2.type&TY_MASK==TY_REG||tempi->a2.type&TY_MASK==TY_DISP) && + if (tempi->a1.type&MDF_REG) { + if (!(tempi1=OptLag1(tempi)) || tempi1->ic_code!=IC_ADD_CONST || + tempi1->r.type!=MDF_REG+RT_I64 || tempi1->r.reg!=tempi->a1.reg || + tempi1->a1.type!=MDF_REG+RT_I64 || tempi1->a1.reg!=tempi->a1.reg || + (tempi->a2.type&MDF_REG || tempi->a2.type&MDF_DISP) && tempi->a2.reg==tempi->a1.reg || - tempi->r.type&TY_MASK || - tempi1->ic_flags&~ICG_NO_CVT_MASK) { + tempi->r.type.mode || tempi1->ic_flags&~ICG_NO_CVT_MASK) { ICMov(tempi, - TY_DISP+tempi->a1.type_pointed_to,tempi->a1.reg,tempi->a1.disp, + MDF_DISP+tempi->a1.type_pointed_to,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } else { @@ -193,16 +191,16 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip) ~ICF_CODE_FINAL|ICF_DONT_RESTORE; tempi->a1.disp=tempi1->ic_data; OptSetNOP1(tempi1); //This better not be last pass! - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to, + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } @@ -217,135 +215,80 @@ U0 ICBrBitOps(CIntermediateCode *tempi,I64 ip, Bool short_jmp; CCodeMisc *lb; - if (tempi->ic_flags & ICF_NOT_ADDR) { - if (tempi->ic_flags & ICF_A1_FIRST) { - if (!(tempi->ic_flags&ICF_SWAP) && a1->type&TY_MASK!=TY_REG && - (a1->type&TY_MASK!=TY_IMM || a1->disp>63) || - tempi->ic_flags&ICF_SWAP && a1->type&TY_MASK==TY_IMM && - a1->disp<64 || a1->type&TY_MASK==TY_STK) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip2); - t1=TY_REG+RT_I64; - r1=REG_RCX; - d1=0; - } else { - t1=a1->type; - if (t1&TY_MASK==TY_IMM && a1->disp<64) - r1=0; - else - r1=a1->reg; - d1=a1->disp; - } - if (tempi->ic_flags&ICF_SWAP && a2->type&TY_MASK!=TY_REG && - (a2->type&TY_MASK!=TY_IMM || a2->disp>63) || - !(tempi->ic_flags&ICF_SWAP) && a2->type&TY_MASK==TY_IMM && - a2->disp<64 || a2->type&TY_MASK==TY_STK) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a2->type,a2->reg,a2->disp,ip2); - t2=TY_REG+RT_I64; - r2=REG_RDX; - d2=0; - } else { - t2=a2->type; - if (t2&TY_MASK==TY_IMM && a2->disp<64) - r2=0; - else - r2=a2->reg; - d2=a2->disp; - } + if (tempi->ic_flags & ICF_BY_VAL) { + if (tempi->ic_flags&ICF_SWAP && !(a2->type&MDF_REG) && + (!(a2->type&MDF_IMM) ||a2->disp>63)|| + !(tempi->ic_flags&ICF_SWAP) && a2->type&MDF_IMM && + a2->disp<64 || a2->type&MDF_STK) { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a2->type,a2->reg,a2->disp,ip2); + t2=MDF_REG+RT_I64; + r2=REG_RCX; + d2=0; } else { - if (tempi->ic_flags&ICF_SWAP && a2->type&TY_MASK!=TY_REG && - (a2->type&TY_MASK!=TY_IMM ||a2->disp>63)|| - !(tempi->ic_flags&ICF_SWAP) && a2->type&TY_MASK==TY_IMM && - a2->disp<64 || a2->type&TY_MASK==TY_STK) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a2->type,a2->reg,a2->disp,ip2); - t2=TY_REG+RT_I64; - r2=REG_RCX; - d2=0; - } else { - t2=a2->type; - if (t2&TY_MASK==TY_IMM && a2->disp<64) - r2=0; - else - r2=a2->reg; - d2=a2->disp; - } - if (!(tempi->ic_flags&ICF_SWAP) && a1->type&TY_MASK!=TY_REG && - (a1->type&TY_MASK!=TY_IMM || a1->disp>63) || - tempi->ic_flags&ICF_SWAP && a1->type&TY_MASK==TY_IMM && - a1->disp<64 || a1->type&TY_MASK==TY_STK) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip2); - t1=TY_REG+RT_I64; - r1=REG_RDX; - d1=0; - } else { - t1=a1->type; - if (t1&TY_MASK==TY_IMM && a1->disp<64) - r1=0; - else - r1=a1->reg; - d1=a1->disp; - } + t2=a2->type; + if (t2&MDF_IMM && a2->disp<64) + r2=0; + else + r2=a2->reg; + d2=a2->disp; + } + if (!(tempi->ic_flags&ICF_SWAP) && !(a1->type&MDF_REG) && + (!(a1->type&MDF_IMM) || a1->disp>63) || + tempi->ic_flags&ICF_SWAP && a1->type&MDF_IMM && + a1->disp<64 || a1->type&MDF_STK) { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip2); + t1=MDF_REG+RT_I64; + r1=REG_RDX; + d1=0; + } else { + t1=a1->type; + if (t1&MDF_IMM && a1->disp<64) + r1=0; + else + r1=a1->reg; + d1=a1->disp; } } else { - t1=TY_DISP+RT_I64; - t2=TY_DISP+RT_I64; + t1=MDF_DISP+RT_I64; + t2=MDF_DISP+RT_I64; d1=0; d2=0; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (a1->type&TY_MASK==TY_REG) - r1=a1->reg; - else if (tempi->ic_flags&ICF_SWAP || a1->type&TY_MASK!=TY_IMM || - a1->disp>63) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip2); - r1=REG_RCX; - } else - r1=0; - if (a2->type&TY_MASK==TY_REG) - r2=a2->reg; - else if (!(tempi->ic_flags&ICF_SWAP) || a2->type&TY_MASK!=TY_IMM || - a2->disp>63) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a2->type,a2->reg,a2->disp,ip2); - r2=REG_RDX; - } else - r2=0; - } else { - if (a2->type&TY_MASK==TY_REG) - r2=a2->reg; - else if (!(tempi->ic_flags&ICF_SWAP) || a2->type&TY_MASK!=TY_IMM || - a2->disp>63) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a2->type,a2->reg,a2->disp,ip2); - r2=REG_RCX; - } else - r2=0; - if (a1->type&TY_MASK==TY_REG) - r1=a1->reg; - else if (tempi->ic_flags&ICF_SWAP || a1->type&TY_MASK!=TY_IMM || - a1->disp>63) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip2); - r1=REG_RDX; - } else - r1=0; - } + if (a2->type&MDF_REG) + r2=a2->reg; + else if (!(tempi->ic_flags&ICF_SWAP) || !(a2->type&MDF_IMM) || + a2->disp>63) { + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a2->type,a2->reg,a2->disp,ip2); + r2=REG_RCX; + } else + r2=0; + if (a1->type&MDF_REG) + r1=a1->reg; + else if (tempi->ic_flags&ICF_SWAP || !(a1->type&MDF_IMM) || a1->disp>63) { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip2); + r1=REG_RDX; + } else + r1=0; } if (tempi->ic_flags&ICF_LOCK && op!=0xA30F) ICU8(tempi,OC_LOCK_PREFIX); if (tempi->ic_flags&ICF_SWAP) { - if (a2->type&TY_MASK==TY_IMM && a2->disp<32) { + if (a2->type&MDF_IMM && a2->disp<32) { if (op==0xA30F && a2->disp<8) { - t=t1&TY_MASK+RT_U8; + t=t1&MDG_MASK+RT_U8; op_imm=0xF6; //TEST } else - t=t1&TY_MASK+RT_U32; + t=t1&MDG_MASK+RT_U32; } else t=t1; i=ICModr1(r2,t,r1,d1); SwapI64(&a1,&a2); } else { - if (a1->type&TY_MASK==TY_IMM && a1->disp<32) { + if (a1->type&MDF_IMM && a1->disp<32) { if (op==0xA30F && a1->disp<8) { - t=t2&TY_MASK+RT_U8; + t=t2&MDG_MASK+RT_U8; op_imm=0xF6; //TEST } else - t=t2&TY_MASK+RT_U32; + t=t2&MDG_MASK+RT_U32; } else t=t2; i=ICModr1(r1,t,r2,d2); @@ -359,7 +302,7 @@ U0 ICBrBitOps(CIntermediateCode *tempi,I64 ip, is=0x75850F; else is=0x74840F; - } else if (a1->type&TY_MASK==TY_IMM && a1->disp<64) { + } else if (a1->type&MDF_IMM && a1->disp<64) { ICU24(tempi,i.u8[2]<<16+op_imm); ICModr2(tempi,i,a2->disp,ip2+5); ICU8(tempi,a1->disp); @@ -398,111 +341,77 @@ U0 ICBrBitOps(CIntermediateCode *tempi,I64 ip, U0 ICQueInit(CIntermediateCode *tempi,I64 ip2) { I64 r1; - if (tempi->a1.type==TY_REG+RT_I64) + if (tempi->a1.type==MDF_REG+RT_I64) r1=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); r1=REG_RAX; } - ICMov(tempi,TY_DISP+RT_I64,r1,0,TY_REG+RT_I64,r1,0,ip2); - ICMov(tempi,TY_DISP+RT_I64,r1,sizeof(U8 *),TY_REG+RT_I64,r1,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,r1,0,MDF_REG+RT_I64,r1,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,r1,sizeof(U8 *),MDF_REG+RT_I64,r1,0,ip2); } U0 ICQueIns(CIntermediateCode *tempi,I64 ip2) { I64 r1,r2; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->a1.type==TY_REG+RT_I64 && tempi->a1.reg!=REG_RAX) - r1=tempi->a1.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - r1=REG_RDX; - } - if (tempi->a2.type==TY_REG+RT_I64) - r2=tempi->a2.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - r2=REG_RAX; - } - } else { - if (tempi->a2.type==TY_REG+RT_I64 && tempi->a2.reg!=REG_RDX) - r2=tempi->a2.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - r2=REG_RAX; - } - if (tempi->a1.type==TY_REG+RT_I64) - r1=tempi->a1.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - r1=REG_RDX; - } + if (tempi->a2.type==MDF_REG+RT_I64 && tempi->a2.reg!=REG_RDX) + r2=tempi->a2.reg; + else { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + r2=REG_RAX; } - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,TY_DISP+RT_I64,r1,0,ip2); - ICMov(tempi,TY_DISP+RT_I64,r1,0,TY_REG+RT_I64,r2,0,ip2); - ICMov(tempi,TY_DISP+RT_I64,r2,0,TY_REG+RT_I64,REG_RBX,0,ip2); - ICMov(tempi,TY_DISP+RT_I64,r2,sizeof(U8 *),TY_REG+RT_I64,r1,0,ip2); - ICMov(tempi,TY_DISP+RT_I64,REG_RBX,sizeof(U8 *),TY_REG+RT_I64,r2,0,ip2); + if (tempi->a1.type==MDF_REG+RT_I64) + r1=tempi->a1.reg; + else { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); + r1=REG_RDX; + } + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,MDF_DISP+RT_I64,r1,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,r1,0,MDF_REG+RT_I64,r2,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,r2,0,MDF_REG+RT_I64,REG_RBX,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,r2,sizeof(U8 *),MDF_REG+RT_I64,r1,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,REG_RBX,sizeof(U8 *),MDF_REG+RT_I64,r2,0,ip2); } U0 ICQueInsRev(CIntermediateCode *tempi,I64 ip2) { I64 r1,r2; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->a1.type==TY_REG+RT_I64 && tempi->a1.reg!=REG_RAX) - r1=tempi->a1.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - r1=REG_RDX; - } - if (tempi->a2.type==TY_REG+RT_I64) - r2=tempi->a2.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - r2=REG_RAX; - } - } else { - if (tempi->a2.type==TY_REG+RT_I64 && tempi->a2.reg!=REG_RDX) - r2=tempi->a2.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - r2=REG_RAX; - } - if (tempi->a1.type==TY_REG+RT_I64) - r1=tempi->a1.reg; - else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - r1=REG_RDX; - } + if (tempi->a2.type==MDF_REG+RT_I64 && tempi->a2.reg!=REG_RDX) + r2=tempi->a2.reg; + else { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + r2=REG_RAX; } - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,TY_DISP+RT_I64,r1,sizeof(U8 *),ip2); - ICMov(tempi,TY_DISP+RT_I64,REG_RBX,0,TY_REG+RT_I64,r2,0,ip2); - ICMov(tempi,TY_DISP+RT_I64,r2,0,TY_REG+RT_I64,r1,0,ip2); - ICMov(tempi,TY_DISP+RT_I64,r2,sizeof(U8 *),TY_REG+RT_I64,REG_RBX,0,ip2); - ICMov(tempi,TY_DISP+RT_I64,r1,sizeof(U8 *),TY_REG+RT_I64,r2,0,ip2); + if (tempi->a1.type==MDF_REG+RT_I64) + r1=tempi->a1.reg; + else { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); + r1=REG_RDX; + } + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,MDF_DISP+RT_I64,r1,sizeof(U8 *),ip2); + ICMov(tempi,MDF_DISP+RT_I64,REG_RBX,0,MDF_REG+RT_I64,r2,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,r2,0,MDF_REG+RT_I64,r1,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,r2,sizeof(U8 *),MDF_REG+RT_I64,REG_RBX,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,r1,sizeof(U8 *),MDF_REG+RT_I64,r2,0,ip2); } U0 ICQueRem(CIntermediateCode *tempi,I64 ip2) { I64 r1; - if (tempi->a1.type==TY_REG+RT_I64) + if (tempi->a1.type==MDF_REG+RT_I64) r1=tempi->a1.reg; else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); r1=REG_RAX; } - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,TY_DISP+RT_I64,r1,0,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,TY_DISP+RT_I64,r1,sizeof(U8 *),ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,MDF_DISP+RT_I64,r1,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,MDF_DISP+RT_I64,r1,sizeof(U8 *),ip2); ICU24(tempi,0x1A8948); ICU32(tempi,sizeof(U8 *)<<24+0x538948); } @@ -510,68 +419,34 @@ U0 ICQueRem(CIntermediateCode *tempi,I64 ip2) U0 ICMinMax(CIntermediateCode *tempi,I64 op,I64 ip2) { I64 r1,i1=0x48; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->a1.type==TY_REG+RT_I64 && tempi->a1.reg!=REG_RAX) { - r1=tempi->a1.reg; - if (r1>7) { - i1++; - r1&=7; - } - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - } else { - if (tempi->a2.reg==REG_RAX && TY_REG<=tempi->a2.type&TY_MASK<=TY_SIB) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - r1=REG_RDX; - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - if (tempi->a2.type==TY_REG+RT_I64) { - r1=tempi->a2.reg; - if (r1>7) { - i1++; - r1&=7; - } - } else { - r1=REG_RDX; - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - } - } + if (tempi->a2.type==MDF_REG+RT_I64 && tempi->a2.reg!=REG_RAX) { + r1=tempi->a2.reg; + if (r1>7) { + i1++; + r1&=7; } + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); } else { - if (tempi->a2.type==TY_REG+RT_I64 && tempi->a2.reg!=REG_RAX) { - r1=tempi->a2.reg; - if (r1>7) { - i1++; - r1&=7; - } - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + if (tempi->a1.reg==REG_RAX && tempi->a1.type&MDG_REG_DISP_SIB) { + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + r1=REG_RDX; + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); } else { - if (tempi->a1.reg==REG_RAX && TY_REG<=tempi->a1.type&TY_MASK<=TY_SIB) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - r1=REG_RDX; - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - if (tempi->a1.type==TY_REG+RT_I64) { - r1=tempi->a1.reg; - if (r1>7) { - i1++; - r1&=7; - } - } else { - r1=REG_RDX; - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + if (tempi->a1.type==MDF_REG+RT_I64) { + r1=tempi->a1.reg; + if (r1>7) { + i1++; + r1&=7; } + } else { + r1=REG_RDX; + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); } } } @@ -581,113 +456,83 @@ U0 ICMinMax(CIntermediateCode *tempi,I64 op,I64 ip2) U0 ICSqr(CIntermediateCode *tempi,I64 op,I64 ip2) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - ICSlashOp(tempi,TY_REG+RT_I64,REG_RAX,0,op,ip2); + ICSlashOp(tempi,MDF_REG+RT_I64,REG_RAX,0,op,ip2); } U0 ICModU64(CIntermediateCode *tempi,I64 ip2) { - I64 t1,r1,d1; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->a1.reg!=REG_RAX && tempi->a1.reg!=REG_RDX && - TY_REG<=tempi->a1.type&TY_MASK<=TY_SIB && - tempi->a1.type&RT_MASK>=RT_I64) { - t1=tempi->a1.type; - r1=tempi->a1.reg; - d1=tempi->a1.disp; - } else { - t1=TY_REG+RT_I64; - r1=REG_RBX; - d1=0; - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - } - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + CICType t1; + I64 r1,d1; + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + if (tempi->a1.reg!=REG_RAX && tempi->a1.reg!=REG_RDX && + tempi->a1.type&MDG_REG_DISP_SIB && + tempi->a1.type.raw_type>=RT_I64) { + t1=tempi->a1.type; + r1=tempi->a1.reg; + d1=tempi->a1.disp; } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - if (tempi->a1.reg!=REG_RAX && tempi->a1.reg!=REG_RDX && - TY_REG<=tempi->a1.type&TY_MASK<=TY_SIB && - tempi->a1.type&RT_MASK>=RT_I64) { - t1=tempi->a1.type; - r1=tempi->a1.reg; - d1=tempi->a1.disp; - } else { - t1=TY_REG+RT_I64; - r1=REG_RBX; - d1=0; - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - } + t1=MDF_REG+RT_I64; + r1=REG_RBX; + d1=0; + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); } - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+RT_I64,REG_RCX,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,MDF_DISP+RT_I64,REG_RCX,0,ip2); ICZero(tempi,REG_RDX); ICSlashOp(tempi,t1,r1,d1,SLASH_OP_DIV,ip2); - ICMov(tempi,TY_DISP+RT_I64,REG_RCX,0,TY_REG+RT_I64,REG_RAX,0,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_REG+RT_I64,REG_RDX,0,ip2); + ICMov(tempi,MDF_DISP+RT_I64,REG_RCX,0,MDF_REG+RT_I64,REG_RAX,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + MDF_REG+RT_I64,REG_RDX,0,ip2); } U0 ICSwap(CIntermediateCode *tempi,I64 ip2) { I64 r1,r2; - if (tempi->a1.type&TY_MASK==TY_REG) + if (tempi->a1.type&MDF_REG) r1=tempi->a1.reg; else r1=REG_RAX; - if (tempi->a2.type&TY_MASK==TY_REG) + if (tempi->a2.type&MDF_REG) r2=tempi->a2.reg; else r2=REG_RAX; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (r1==r2) { - if (r2==REG_RAX) - r2=REG_RBX; - else - r1=REG_RAX; - } - ICMov(tempi,TY_REG+RT_I64,r1,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,r2,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - } else { - if (r1==r2) { - if (r1==REG_RAX) - r1=REG_RBX; - else - r2=REG_RAX; - } - ICMov(tempi,TY_REG+RT_I64,r2,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,r1,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); + if (r1==r2) { + if (r1==REG_RAX) + r1=REG_RBX; + else + r2=REG_RAX; } + ICMov(tempi,MDF_REG+RT_I64,r2,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,r1,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); switch (tempi->ic_code) { case IC_SWAP_U8: - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,TY_DISP+RT_U8,r1,0,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,TY_DISP+RT_U8,r2,0,ip2); - ICMov(tempi,TY_DISP+RT_U8,r2,0,TY_REG+RT_I64,REG_RCX,0,ip2); - ICMov(tempi,TY_DISP+RT_U8,r1,0,TY_REG+RT_I64,REG_RDX,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_DISP+RT_U8,r1,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,MDF_DISP+RT_U8,r2,0,ip2); + ICMov(tempi,MDF_DISP+RT_U8,r2,0,MDF_REG+RT_I64,REG_RCX,0,ip2); + ICMov(tempi,MDF_DISP+RT_U8,r1,0,MDF_REG+RT_I64,REG_RDX,0,ip2); break; case IC_SWAP_U16: - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,TY_DISP+RT_U16,r1,0,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,TY_DISP+RT_U16,r2,0,ip2); - ICMov(tempi,TY_DISP+RT_U16,r2,0,TY_REG+RT_I64,REG_RCX,0,ip2); - ICMov(tempi,TY_DISP+RT_U16,r1,0,TY_REG+RT_I64,REG_RDX,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_DISP+RT_U16,r1,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,MDF_DISP+RT_U16,r2,0,ip2); + ICMov(tempi,MDF_DISP+RT_U16,r2,0,MDF_REG+RT_I64,REG_RCX,0,ip2); + ICMov(tempi,MDF_DISP+RT_U16,r1,0,MDF_REG+RT_I64,REG_RDX,0,ip2); break; case IC_SWAP_U32: - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,TY_DISP+RT_U32,r1,0,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,TY_DISP+RT_U32,r2,0,ip2); - ICMov(tempi,TY_DISP+RT_U32,r2,0,TY_REG+RT_I64,REG_RCX,0,ip2); - ICMov(tempi,TY_DISP+RT_U32,r1,0,TY_REG+RT_I64,REG_RDX,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_DISP+RT_U32,r1,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,MDF_DISP+RT_U32,r2,0,ip2); + ICMov(tempi,MDF_DISP+RT_U32,r2,0,MDF_REG+RT_I64,REG_RCX,0,ip2); + ICMov(tempi,MDF_DISP+RT_U32,r1,0,MDF_REG+RT_I64,REG_RDX,0,ip2); break; case IC_SWAP_I64: - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,TY_DISP+RT_U64,r1,0,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,TY_DISP+RT_U64,r2,0,ip2); - ICMov(tempi,TY_DISP+RT_U64,r2,0,TY_REG+RT_I64,REG_RCX,0,ip2); - ICMov(tempi,TY_DISP+RT_U64,r1,0,TY_REG+RT_I64,REG_RDX,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_DISP+RT_U64,r1,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,MDF_DISP+RT_U64,r2,0,ip2); + ICMov(tempi,MDF_DISP+RT_U64,r2,0,MDF_REG+RT_I64,REG_RCX,0,ip2); + ICMov(tempi,MDF_DISP+RT_U64,r1,0,MDF_REG+RT_I64,REG_RDX,0,ip2); break; } } @@ -695,14 +540,14 @@ U0 ICSwap(CIntermediateCode *tempi,I64 ip2) U0 ICAndEqu(CIntermediateCode *tempi,I64 ip2) { I64 i,bit; - if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK && + if (tempi->a2.type&MDF_IMM && !(tempi->a1.type&MDF_STK) && tempi->ic_flags&ICF_NO_DEPEND_RESULT) { i=~tempi->a2.disp; bit=Bsf(i); if (0<=bit==Bsr(i)) { tempi->a2.disp=bit; tempi->a2.reg=0; - tempi->a1.type=tempi->a1.type&TY_MASK+RT_I64; + tempi->a1.type=tempi->a1.type&MDG_MASK+RT_I64; ICBitOps(tempi,&tempi->a2,&tempi->a1,tempi,0xB30F,0x30BA0F,ip2); return; } @@ -716,14 +561,14 @@ U0 ICAndEqu(CIntermediateCode *tempi,I64 ip2) U0 ICOrEqu(CIntermediateCode *tempi,I64 ip2) { I64 i,bit; - if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK && + if (tempi->a2.type&MDF_IMM && !(tempi->a1.type&MDF_STK) && tempi->ic_flags&ICF_NO_DEPEND_RESULT) { i=tempi->a2.disp; bit=Bsf(i); if (0<=bit==Bsr(i) && i>MAX_I8) { tempi->a2.disp=bit; tempi->a2.reg=0; - tempi->a1.type=tempi->a1.type&TY_MASK+RT_I64; + tempi->a1.type=tempi->a1.type&MDG_MASK+RT_I64; ICBitOps(tempi,&tempi->a2,&tempi->a1,tempi,0xAB0F,0x28BA0F,ip2); return; } @@ -737,14 +582,14 @@ U0 ICOrEqu(CIntermediateCode *tempi,I64 ip2) U0 ICXorEqu(CIntermediateCode *tempi,I64 ip2) { I64 i,bit; - if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK && + if (tempi->a2.type&MDF_IMM && !(tempi->a1.type&MDF_STK) && tempi->ic_flags&ICF_NO_DEPEND_RESULT) { i=tempi->a2.disp; bit=Bsf(i); if (0<=bit==Bsr(i)) { tempi->a2.disp=bit; tempi->a2.reg=0; - tempi->a1.type=tempi->a1.type&TY_MASK+RT_I64; + tempi->a1.type=tempi->a1.type&MDG_MASK+RT_I64; ICBitOps(tempi,&tempi->a2,&tempi->a1,tempi,0xBB0F,0x38BA0F,ip2); return; } @@ -762,17 +607,17 @@ U0 ICSwitch(CIntermediateCode *tempi,I64 ip, CCodeMisc *lb; Bool short_jmp; CAOTAbsAddr *tempa; - if (tempi->a1.type&TY_MASK!=TY_REG || tempi->a1.reg&7==REG_RSP) + if (!(tempi->a1.type&MDF_REG) || tempi->a1.reg&7==REG_RSP) r=REG_RDX; else r=tempi->a1.reg; if (nobound) - ICMov(tempi,TY_REG+RT_I64,r,0, + ICMov(tempi,MDF_REG+RT_I64,r,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); else { - if (tempi->a2.type&TY_MASK==TY_IMM) { + if (tempi->a2.type&MDF_IMM) { j=tempi->a2.disp; - ICMov(tempi,TY_REG+RT_I64,r,0, + ICMov(tempi,MDF_REG+RT_I64,r,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); if (MIN_I8<=j<=MAX_I8) { i=0xF88348+(r&7)<<16; @@ -785,24 +630,17 @@ U0 ICSwitch(CIntermediateCode *tempi,I64 ip, ICU24(tempi,i); ICU32(tempi,j); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); i=0xC13B48+(r&7)<<19; if (r>7) i+=4; ICU24(tempi,i); } } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,r,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,r,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,r,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); i=0xC13B48+(r&7)<<19; if (r>7) i+=4; ICU24(tempi,i); diff --git a/Compiler/BackFA.CPP b/Compiler/BackFA.CPP index c2db8ef..dca4b92 100644 --- a/Compiler/BackFA.CPP +++ b/Compiler/BackFA.CPP @@ -21,17 +21,19 @@ U0 CmpNoteFloatOp(CCmpCtrl *cc,CIntermediateCode *tempi, case CN_MAIN: if (cc->last_float_op_ic!=tempi) { if (cc->dont_push_float) { - if (!(tempi->ic_flags & ICF_A1_FIRST)) - tempi->ic_flags|=ICF_ALTERNATE_TEMPLATE; + if (intermediate_code_table[tempi->ic_code].arg_cnt==IS_2_ARG && + cc->last_float_op_ic->r.reg!=REG_R8) + tempi->ic_flags|=ICF_ALT_TEMPLATE; else - tempi->ic_flags&=~ICF_ALTERNATE_TEMPLATE; + tempi->ic_flags&=~ICF_ALT_TEMPLATE; link=TRUE; } } else { - if (cc->last_float_op_pos==CN_A1 ^^ !(tempi->ic_flags & ICF_A1_FIRST)) - tempi->ic_flags|=ICF_ALTERNATE_TEMPLATE; + if (intermediate_code_table[tempi->ic_code].arg_cnt==IS_2_ARG && + cc->last_float_op_pos!=CN_A1) + tempi->ic_flags|=ICF_ALT_TEMPLATE; else - tempi->ic_flags&=~ICF_ALTERNATE_TEMPLATE; + tempi->ic_flags&=~ICF_ALT_TEMPLATE; link=TRUE; } break; @@ -79,7 +81,7 @@ U0 ICCopyTemplate(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op, U8 *ptr; I64 i=0; if (!off_the_record) { - if (tempi->ic_flags&ICF_ALTERNATE_TEMPLATE) + if (tempi->ic_flags&ICF_ALT_TEMPLATE) alt=TRUE; else alt=FALSE; @@ -118,8 +120,8 @@ U0 ICCopyTemplate(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op, tempi->ic_cnt+=i; } -U0 ICFCvt(CCmpCtrl *cc,CIntermediateCode *tempi, - I64 r1,I64 t2,I64 r2,I64 d2,Bool to_int,I64 pos,I64 ip) +U0 ICFCvt(CCmpCtrl *cc,CIntermediateCode *tempi,I64 r1, + CICType t2,I64 r2,I64 d2,Bool to_int,I64 pos,I64 ip) { I64 rsp_size=0,op1,op2; Bool dont_push_float,dont_pop_float; @@ -134,12 +136,9 @@ U0 ICFCvt(CCmpCtrl *cc,CIntermediateCode *tempi, CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); if (!dont_push_float) { - if (!(t2&RT_MASK>=RT_I64 && - (t2&TY_MASK==TY_DISP || - t2&TY_MASK==TY_RIP_DISP32 || - t2&TY_MASK==TY_SIB))) { + if (!(t2.raw_type>=RT_I64 && t2&MDG_DISP_SIB_RIP)) { ICPush(tempi,t2,r2,d2,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size=8; } else { if (!dont_pop_float) { @@ -162,13 +161,13 @@ U0 ICFCvt(CCmpCtrl *cc,CIntermediateCode *tempi, if (rsp_size) ICAddRSP(tempi,rsp_size); } else { - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,op2,ip); - ICPop(tempi,TY_REG+RT_I64,r1,0,ip); + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,op2,ip); + ICPop(tempi,MDF_REG+RT_I64,r1,0,ip); } } -U0 ICFCvt2(CCmpCtrl *cc,CIntermediateCode *tempi, - I64 r1,I64 t2,I64 r2,I64 d2,Bool to_int,I64 ip) +U0 ICFCvt2(CCmpCtrl *cc,CIntermediateCode *tempi,I64 r1, + CICType t2,I64 r2,I64 d2,Bool to_int,I64 ip) { I64 rsp_size=0,op1,op2; if (to_int) { @@ -178,20 +177,17 @@ U0 ICFCvt2(CCmpCtrl *cc,CIntermediateCode *tempi, op1=SLASH_OP_FILD; op2=SLASH_OP_FSTP; } - if (!(t2&RT_MASK>=RT_I64 && - (t2&TY_MASK==TY_DISP || - t2&TY_MASK==TY_RIP_DISP32 || - t2&TY_MASK==TY_SIB))) { + if (!(t2.raw_type>=RT_I64 && t2&MDG_DISP_SIB_RIP)) { ICPush(tempi,t2,r2,d2,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size=8; } else { rsp_size=8; ICAddRSP(tempi,-8); } ICSlashOp(tempi,t2,r2,d2,op1,ip); - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,op2,ip); - ICPop(tempi,TY_REG+RT_I64,r1,0,ip); + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,op2,ip); + ICPop(tempi,MDF_REG+RT_I64,r1,0,ip); cc->last_dont_pushable=cc->last_dont_popable=FALSE; //TODO: improve this } @@ -206,23 +202,20 @@ U0 ICFUnaryMinus(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf2,I64 ip) CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); if (!dont_push_float) { - if (a1->type&RT_MASK>=RT_I64 && - (a1->type&TY_MASK==TY_DISP || - a1->type&TY_MASK==TY_RIP_DISP32 || - a1->type&TY_MASK==TY_SIB)) { + if (a1->type.raw_type>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { t1=a1->type; r1=a1->reg; d1=a1->disp; } else { - if (a1->type&TY_MASK==TY_IMM) { + if (a1->type&MDF_IMM) { if (!(builtin1=ICBuiltInFloatConst(a1->disp(F64)))) { - t1=TY_RIP_DISP32+RT_I64; + t1=MDF_RIP_DISP32+RT_I64; r1=REG_RIP; d1=COCFloatConstFind(cc,a1->disp(F64))+buf2; } } else { ICPush(tempi,a1->type,a1->reg,a1->disp,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } } @@ -241,7 +234,7 @@ U0 ICFUnaryMinus(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf2,I64 ip) if (rsp_size) ICAddRSP(tempi,rsp_size); } else { - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,SLASH_OP_FSTP,ip); + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,SLASH_OP_FSTP,ip); ICPop(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,ip); } } @@ -251,30 +244,23 @@ U0 ICFMod(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip) Bool dont_push_float,dont_pop_float; CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); if (dont_push_float) { - if (tempi->ic_flags&ICF_ALTERNATE_TEMPLATE) - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + if (tempi->ic_flags&ICF_ALT_TEMPLATE) + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); else - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); } //TODO: unpushable,unpop? Not sure ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN); if (!dont_pop_float) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICFPow(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) @@ -284,17 +270,10 @@ U0 ICFPow(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) CHashExport *tempex=HashFind("SYS_POW", cc->htc.hash_table_lst,HTT_EXPORT_SYS_SYM); - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); if (cc->flags&CCF_AOT_COMPILE) { if (!tempex) { tempex=CAlloc(sizeof(CHashExport)); @@ -354,17 +333,16 @@ U0 ICFPow(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) } tempi->ic_flags&=~ICF_CODE_FINAL; ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICFOp(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) {//for ADD,SUB,DIV,MUL CICArg *a1,*a2; Bool dont_push_float,dont_pop_float,alt; - I64 rsp_size=0,builtin1=0,builtin2=0, - t1,r1,d1,t2,r2,d2; + I64 rsp_size=0,builtin1=0,builtin2=0,t1,r1,d1,t2,r2,d2; - if (tempi->ic_flags&ICF_ALTERNATE_TEMPLATE) { + if (tempi->ic_flags&ICF_ALT_TEMPLATE) { a1=&tempi->a2; a2=&tempi->a1; alt=TRUE; @@ -379,122 +357,115 @@ U0 ICFOp(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); if (dont_push_float) { - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { + if (a2->type.raw_type>=RT_I64 && a2->type&MDG_DISP_SIB_RIP) { t2=a2->type; r2=a2->reg; d2=a2->disp; } else { - if (a2->type&TY_MASK==TY_IMM) { + if (a2->type&MDF_IMM) { if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64)))) { - t2=TY_RIP_DISP32+RT_I64; + t2=MDF_RIP_DISP32+RT_I64; r2=REG_RIP; d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; } } else { ICPush(tempi,a2->type,a2->reg,a2->disp,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; } } } else { - if (tempi->ic_flags & ICF_A1_FIRST^^alt) { - if (a2->type&TY_MASK!=TY_STK) { - if (a1->type&RT_MASK>=RT_I64 && (a1->type&TY_MASK==TY_DISP || - a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { + if (alt) { + if (!(a2->type&MDF_STK)) { + if (a1->type.raw_type>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { t1=a1->type; r1=a1->reg; d1=a1->disp; } else { - if (a1->type&TY_MASK==TY_IMM) { + if (a1->type&MDF_IMM) { if (!(builtin1=ICBuiltInFloatConst(a1->disp(F64)))) { - t1=TY_RIP_DISP32+RT_I64; + t1=MDF_RIP_DISP32+RT_I64; r1=REG_RIP; d1=COCFloatConstFind(cc,a1->disp(F64))+buf2; } } else { ICPush(tempi,a1->type,a1->reg,a1->disp,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } } - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { + if (a2->type.raw_type>=RT_I64 && a2->type&MDG_DISP_SIB_RIP) { t2=a2->type; r2=a2->reg; d2=a2->disp; } else { - if (a2->type&TY_MASK==TY_IMM) { + if (a2->type&MDF_IMM) { if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64)))) { - t2=TY_RIP_DISP32+RT_I64; + t2=MDF_RIP_DISP32+RT_I64; r2=REG_RIP; d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; } } else { ICPush(tempi,a2->type,a2->reg,a2->disp,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; if (r1==REG_RSP+REG_RSP<<8) d1+=8; } } } else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - a1->type,a1->reg,a1->disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - a2->type,a2->reg,a2->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); ICU16(tempi,0x5052); //PUSH EDX PUSH EAX rsp_size=16; - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; } } else { - if (a1->type&TY_MASK!=TY_STK) { - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { + if (!(a1->type&MDF_STK)) { + if (a2->type.raw_type>=RT_I64 && a2->type&MDG_DISP_SIB_RIP) { t2=a2->type; r2=a2->reg; d2=a2->disp; } else { - if (a2->type&TY_MASK==TY_IMM) { + if (a2->type&MDF_IMM) { if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64)))) { - t2=TY_RIP_DISP32+RT_I64; + t2=MDF_RIP_DISP32+RT_I64; r2=REG_RIP; d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; } } else { ICPush(tempi,a2->type,a2->reg,a2->disp,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; } } - if (a1->type&RT_MASK>=RT_I64 && (a1->type&TY_MASK==TY_DISP || - a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { + if (a1->type.raw_type>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { t1=a1->type; r1=a1->reg; d1=a1->disp; } else { - if (a1->type&TY_MASK==TY_IMM) { + if (a1->type&MDF_IMM) { if (!(builtin1=ICBuiltInFloatConst(a1->disp(F64)))) { - t1=TY_RIP_DISP32+RT_I64; + t1=MDF_RIP_DISP32+RT_I64; r1=REG_RIP; d1=COCFloatConstFind(cc,a1->disp(F64))+buf2; } } else { ICPush(tempi,a1->type,a1->reg,a1->disp,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; if (r2==REG_RSP+REG_RSP<<8) d2+=8; } } } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip); ICU16(tempi,0x5052); //PUSH EDX PUSH EAX rsp_size=16; - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; } } } @@ -531,10 +502,9 @@ U0 ICFOp(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) ICAddRSP(tempi,rsp_size); } else { if (rsp_size==8) - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,0, - SLASH_OP_FSTP,ip); + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,SLASH_OP_FSTP,ip); else if (rsp_size>8) { - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,rsp_size-8, + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,rsp_size-8, SLASH_OP_FSTP,ip); ICAddRSP(tempi,rsp_size-8); } @@ -547,114 +517,87 @@ U0 ICFCmp(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,I64 ip) Bool dont_push_float,dont_pop_float; CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); if (dont_push_float) { - if (tempi->ic_flags&ICF_ALTERNATE_TEMPLATE) { + if (tempi->ic_flags&ICF_ALT_TEMPLATE) { if (tempi->ic_flags&ICF_POP_CMP) ICPopRegs(tempi,1<a1.type,tempi->a1.reg,tempi->a1.disp,ip); } else - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->ic_flags&ICF_POP_CMP) - ICPopRegs(tempi,1<a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - if (tempi->ic_flags&ICF_POP_CMP) - ICPopRegs(tempi,1<a1.type,tempi->a1.reg,tempi->a1.disp,ip); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + if (tempi->ic_flags&ICF_POP_CMP) + ICPopRegs(tempi,1<a1.type,tempi->a1.reg,tempi->a1.disp,ip); } if (tempi->ic_flags&ICF_PUSH_CMP) ICPushRegs(tempi,1<r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip) { Bool dont_push_float,dont_pop_float; CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); - if (tempi->ic_flags & ICF_NOT_ADDR) { + if (tempi->ic_flags & ICF_BY_VAL) { if (dont_push_float) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); if (tempi->a1.type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip); - } else if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,ip); - if (tempi->a1.type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); + ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); if (tempi->a1.type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); + ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip); } //TODO: unpushable,unpop? Not sure ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN); if (tempi->a1.type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip); - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, - tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip); - if (tempi->r.type&TY_MASK) + ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip); + ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, + tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip); + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, + tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); } else { if (dont_push_float) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,tempi->a1.type, tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); if (tempi->a1.type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip); - } else if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type, - tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); - if (tempi->a1.type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); + ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,tempi->a1.type, tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); if (tempi->a1.type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); + ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip); } //TODO: unpushable,unpop? Not sure ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN); if (tempi->a1.type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip); - ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, - TY_REG+RT_I64,REG_RAX,0,ip); - if (tempi->r.type&TY_MASK) + ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip); + ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, + MDF_REG+RT_I64,REG_RAX,0,ip); + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } } diff --git a/Compiler/BackFB.CPP b/Compiler/BackFB.CPP index 5cd07fb..016218a 100644 --- a/Compiler/BackFB.CPP +++ b/Compiler/BackFB.CPP @@ -13,117 +13,67 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) if (dont_pop_float) throw('Compiler'); - if (tempi->ic_flags & ICF_NOT_ADDR) { + if (tempi->ic_flags & ICF_BY_VAL) { p1_mem=FALSE; if (dont_push_float) { if (a1->type_pointed_to!=RT_F64) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); - ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip); - ICPush(tempi,TY_REG+RT_I64,REG_RAX,0,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); + ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip); + ICPush(tempi,MDF_REG+RT_I64,REG_RAX,0,ip); + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } else { - if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP || - a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { - t1=a1->type_pointed_to+a1->type&TY_MASK; + if (a1->type_pointed_to>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { + t1=a1->type&MDG_MASK+a1->type_pointed_to; r1=a1->reg; d1=a1->disp; p1_mem=TRUE; } else { ICPush(tempi, - a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } } - } else if (tempi->ic_flags & ICF_A1_FIRST) { - if (a1->type_pointed_to!=RT_F64 || a2->type&TY_MASK==TY_STK) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); - if (a1->type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - a2->type,a2->reg,a2->disp,ip); - - ICU16(tempi,0x5052); //PUSH EDX PUSH EAX - rsp_size=16; - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; - } else { - if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP || - a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { - t1=a1->type_pointed_to+a1->type&TY_MASK; - r1=a1->reg; - d1=a1->disp; - p1_mem=TRUE; - } else { - ICPush(tempi, - a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; - rsp_size+=8; - } - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { - t2=a2->type; - r2=a2->reg; - d2=a2->disp; - } else { - if (a2->type&TY_MASK==TY_IMM) { - if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64)))) { - t2=TY_RIP_DISP32+RT_I64; - r2=REG_RIP; - d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; - } - } else { - ICPush(tempi,a2->type,a2->reg,a2->disp,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; - rsp_size+=8; - if (r1==REG_RSP+REG_RSP<<8) - d1+=8; - } - } - } } else { - if (a1->type_pointed_to!=RT_F64 || a1->type&TY_MASK==TY_STK) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); + if (a1->type_pointed_to!=RT_F64 || a1->type&MDF_STK) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); if (a1->type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); + ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip); ICU16(tempi,0x5052); //PUSH EDX PUSH EAX rsp_size=16; - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; } else { - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { + if (a2->type.raw_type>=RT_I64 && a2->type&MDG_DISP_SIB_RIP) { t2=a2->type; r2=a2->reg; d2=a2->disp; } else { - if (a2->type&TY_MASK==TY_IMM) { + if (a2->type&MDF_IMM) { if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64)))) { - t2=TY_RIP_DISP32+RT_I64; + t2=MDF_RIP_DISP32+RT_I64; r2=REG_RIP; d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; } } else { ICPush(tempi,a2->type,a2->reg,a2->disp,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; } } - if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP || - a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { - t1=a1->type_pointed_to+a1->type&TY_MASK; + if (a1->type_pointed_to>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { + t1=a1->type&MDG_MASK+a1->type_pointed_to; r1=a1->reg; d1=a1->disp; p1_mem=TRUE; } else { ICPush(tempi, - a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; if (r2==REG_RSP+REG_RSP<<8) d2+=8; @@ -152,112 +102,72 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) ICAddRSP(tempi,rsp_size); } else { if (rsp_size==8) - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,0, - SLASH_OP_FSTP,ip); + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,SLASH_OP_FSTP,ip); else if (rsp_size>8) { - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,rsp_size-8, + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,rsp_size-8, SLASH_OP_FSTP,ip); ICAddRSP(tempi,rsp_size-8); } if (a1->type_pointed_to!=RT_F64) { - ICPop(tempi,TY_REG+RT_I64,REG_RAX,0,ip); - ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip); - ICMov(tempi,a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp, - TY_REG+RT_I64,REG_RAX,0,ip); + ICPop(tempi,MDF_REG+RT_I64,REG_RAX,0,ip); + ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip); + ICMov(tempi,a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp, + MDF_REG+RT_I64,REG_RAX,0,ip); } else - ICPop(tempi,a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip); + ICPop(tempi,a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); } - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); + a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); } else { if (a1->type_pointed_to>=RT_I64) p1_mem=TRUE; else p1_mem=FALSE; if (dont_push_float) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); if (a1->type_pointed_to!=RT_F64) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); - ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip); - ICPush(tempi,TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + MDF_DISP+a1->type_pointed_to,REG_RCX,0,ip); + ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip); + ICPush(tempi,MDF_REG+RT_I64,REG_RAX,0,ip); } else - ICPush(tempi,a1->type_pointed_to+TY_DISP,REG_RCX,0,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + ICPush(tempi,MDF_DISP+a1->type_pointed_to,REG_RCX,0,ip); + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; - } else if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); - if (a1->type_pointed_to!=RT_F64 || a2->type&TY_MASK==TY_STK) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); - if (a1->type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); - - ICU16(tempi,0x5052); //PUSH EDX PUSH EAX - rsp_size=16; - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; - } else { - ICPush(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; - rsp_size+=8; - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { - t2=a2->type; - r2=a2->reg; - d2=a2->disp; - } else { - if (a2->type&TY_MASK==TY_IMM) { - if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64)))) { - t2=TY_RIP_DISP32+RT_I64; - r2=REG_RIP; - d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; - } - } else { - ICPush(tempi,a2->type,a2->reg,a2->disp,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; - rsp_size+=8; - if (r1==REG_RSP+REG_RSP<<8) - d1+=8; - } - } - } } else { - if (a1->type_pointed_to!=RT_F64 || a1->type&TY_MASK==TY_STK) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); + if (a1->type_pointed_to!=RT_F64 || a1->type&MDF_STK) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + MDF_DISP+a1->type_pointed_to,REG_RCX,0,ip); if (a1->type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); + ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip); ICU16(tempi,0x5052); //PUSH EDX PUSH EAX rsp_size=16; - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; } else { - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { + if (a2->type.raw_type>=RT_I64 && a2->type&MDG_DISP_SIB_RIP) { t2=a2->type; r2=a2->reg; d2=a2->disp; } else { - if (a2->type&TY_MASK==TY_IMM) { + if (a2->type&MDF_IMM) { if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64)))) { - t2=TY_RIP_DISP32+RT_I64; + t2=MDF_RIP_DISP32+RT_I64; r2=REG_RIP; d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; } } else { ICPush(tempi,a2->type,a2->reg,a2->disp,ip); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; } } - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); - ICPush(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); + ICPush(tempi,MDF_DISP+a1->type_pointed_to,REG_RCX,0,ip); + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; if (r2==REG_RSP+REG_RSP<<8) d2+=8; @@ -281,28 +191,26 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) ICSlashOp(tempi,t1,r1,d1,op,ip); CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN); if (p1_mem && a1->type_pointed_to==RT_F64) { - ICSlashOp(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0, - SLASH_OP_FSTP,ip); + ICSlashOp(tempi,MDF_DISP+a1->type_pointed_to,REG_RCX,0,SLASH_OP_FSTP,ip); if (rsp_size) ICAddRSP(tempi,rsp_size); } else { if (rsp_size==8) - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,0, - SLASH_OP_FSTP,ip); + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,0,SLASH_OP_FSTP,ip); else if (rsp_size>8) { - ICSlashOp(tempi,TY_SIB+RT_I64,REG_RSP+REG_RSP<<8,rsp_size-8, + ICSlashOp(tempi,MDF_SIB+RT_I64,REG_RSP+REG_RSP<<8,rsp_size-8, SLASH_OP_FSTP,ip); ICAddRSP(tempi,rsp_size-8); } - ICPop(tempi,TY_REG+RT_I64,REG_RAX,0,ip); + ICPop(tempi,MDF_REG+RT_I64,REG_RAX,0,ip); if (a1->type_pointed_to!=RT_F64) - ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip); - ICMov(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0, - TY_REG+RT_I64,REG_RAX,0,ip); + ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip); + ICMov(tempi,MDF_DISP+a1->type_pointed_to,REG_RCX,0, + MDF_REG+RT_I64,REG_RAX,0,ip); } - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } } @@ -315,7 +223,7 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip, CCodeMisc *lb; U8 *buf2; - if (tempi->ic_flags&ICF_ALTERNATE_TEMPLATE) { + if (tempi->ic_flags&ICF_ALT_TEMPLATE) { a1=&tempi->a2; a2=&tempi->a1; alt=TRUE; @@ -333,71 +241,68 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip, CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); if (dont_push_float) { if (tempi->ic_flags&ICF_POP_CMP && alt) { - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; } else { - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { + if (a2->type.raw_type>=RT_I64 && a2->type&MDG_DISP_SIB_RIP) { t2=a2->type; r2=a2->reg; d2=a2->disp; } else { - if (a2->type&TY_MASK==TY_IMM) { + if (a2->type&MDF_IMM) { if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64))) || tempi->ic_flags&ICF_PUSH_CMP) { - t2=TY_RIP_DISP32+RT_I64; + t2=MDF_RIP_DISP32+RT_I64; r2=REG_RIP; d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; } } else { ICPush(tempi,a2->type,a2->reg,a2->disp,ip2); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; } } } } else { - if (tempi->ic_flags & ICF_A1_FIRST^^alt) { - if (a2->type&TY_MASK!=TY_STK) { + if (alt) { + if (!(a2->type&MDF_STK)) { if (tempi->ic_flags&ICF_POP_CMP) { - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } else { - if (a1->type&RT_MASK>=RT_I64 && (a1->type&TY_MASK==TY_DISP || - a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { + if (a1->type.raw_type>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { t1=a1->type; r1=a1->reg; d1=a1->disp; } else { - if (a1->type&TY_MASK==TY_IMM) { + if (a1->type&MDF_IMM) { if (!(builtin1=ICBuiltInFloatConst(a1->disp(F64)))) { - t1=TY_RIP_DISP32+RT_I64; + t1=MDF_RIP_DISP32+RT_I64; r1=REG_RIP; d1=COCFloatConstFind(cc,a1->disp(F64))+buf2; } } else { ICPush(tempi,a1->type,a1->reg,a1->disp,ip2); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } } } - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { + if (a2->type.raw_type>=RT_I64 && a2->type&MDG_DISP_SIB_RIP) { t2=a2->type; r2=a2->reg; d2=a2->disp; } else { - if (a2->type&TY_MASK==TY_IMM) { + if (a2->type&MDF_IMM) { if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64))) || tempi->ic_flags&ICF_PUSH_CMP) { - t2=TY_RIP_DISP32+RT_I64; + t2=MDF_RIP_DISP32+RT_I64; r2=REG_RIP; d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; } } else { ICPush(tempi,a2->type,a2->reg,a2->disp,ip2); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; if (r1==REG_RSP+REG_RSP<<8) d1+=8; @@ -407,55 +312,53 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip, if (tempi->ic_flags&ICF_POP_CMP) ICPopRegs(tempi,1<type,a1->reg,a1->disp,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip2); ICU16(tempi,0x5052); //PUSH EDX PUSH EAX rsp_size=16; - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; } } else { - if (a1->type&TY_MASK!=TY_STK) { - if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || - a2->type&TY_MASK==TY_RIP_DISP32 || a2->type&TY_MASK==TY_SIB)) { + if (!(a1->type&MDF_STK)) { + if (a2->type.raw_type>=RT_I64 && a2->type&MDG_DISP_SIB_RIP) { t2=a2->type; r2=a2->reg; d2=a2->disp; } else { - if (a2->type&TY_MASK==TY_IMM) { + if (a2->type&MDF_IMM) { if (!(builtin2=ICBuiltInFloatConst(a2->disp(F64))) || tempi->ic_flags&ICF_PUSH_CMP) { - t2=TY_RIP_DISP32+RT_I64; + t2=MDF_RIP_DISP32+RT_I64; r2=REG_RIP; d2=COCFloatConstFind(cc,a2->disp(F64))+buf2; } } else { ICPush(tempi,a2->type,a2->reg,a2->disp,ip2); - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; rsp_size+=8; } } if (tempi->ic_flags&ICF_POP_CMP) { - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; if (r2==REG_RSP+REG_RSP<<8) d1+=8; } else { - if (a1->type&RT_MASK>=RT_I64 && (a1->type&TY_MASK==TY_DISP || - a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { + if (a1->type.raw_type>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { t1=a1->type; r1=a1->reg; d1=a1->disp; } else { - if (a1->type&TY_MASK==TY_IMM) { + if (a1->type&MDF_IMM) { if (!(builtin1=ICBuiltInFloatConst(a1->disp(F64)))) { - t1=TY_RIP_DISP32+RT_I64; + t1=MDF_RIP_DISP32+RT_I64; r1=REG_RIP; d1=COCFloatConstFind(cc,a1->disp(F64))+buf2; } } else { ICPush(tempi,a1->type,a1->reg,a1->disp,ip2); - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; if (r2==REG_RSP+REG_RSP<<8) d2+=8; @@ -463,15 +366,15 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip, } } } else { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip2); if (tempi->ic_flags&ICF_POP_CMP) ICPopRegs(tempi,1<type,a1->reg,a1->disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip2); ICU16(tempi,0x5052); //PUSH EDX PUSH EAX rsp_size=16; - t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; } } } @@ -488,7 +391,7 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip, else ICSlashOp(tempi,t2,r2,d2,SLASH_OP_FLD,ip2); if (tempi->ic_flags&ICF_PUSH_CMP) { - t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; + t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; if (!rsp_size) { rsp_size=8; ICAddRSP(tempi,-8); @@ -571,15 +474,13 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip, U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) { - if (tempi->a1.type&TY_MASK==TY_IMM && - tempi->a1.type_pointed_to&RT_MASK==RT_F64 && + if (tempi->a1.type&MDF_IMM && tempi->a1.type_pointed_to==RT_F64 && tempi->a1.disp(F64)==1.0) { CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); - } else if (tempi->a2.type&TY_MASK==TY_IMM && - tempi->a2.type_pointed_to&RT_MASK==RT_F64 && - tempi->a2.disp(F64)==1.0) { + } else if (tempi->a2.type&MDF_IMM && + tempi->a2.type_pointed_to==RT_F64&& tempi->a2.disp(F64)==1.0) { CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); @@ -589,8 +490,7 @@ U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) U0 ICFDiv(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) { - if (tempi->a2.type&TY_MASK==TY_IMM && - tempi->a2.type_pointed_to&RT_MASK==RT_F64 && + if (tempi->a2.type&MDF_IMM && tempi->a2.type_pointed_to==RT_F64 && tempi->a2.disp(F64)==1.0) { CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, @@ -603,13 +503,13 @@ U0 ICFAdd(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) { Bool dont_push_float,dont_pop_float; CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); - if (tempi->a1.type&TY_MASK==TY_IMM && !tempi->a1.disp) { + if (tempi->a1.type&MDF_IMM && !tempi->a1.disp) { if (dont_push_float) { ICCopyTemplate(cc,tempi,CMP_TEMPLATE_FSTP,FALSE,TRUE,TRUE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } else if (dont_pop_float) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); ICCopyTemplate(cc,tempi,CMP_TEMPLATE_FLD,FALSE,TRUE,TRUE,CN_MAIN); } else { @@ -617,13 +517,13 @@ U0 ICFAdd(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } - } else if (tempi->a2.type&TY_MASK==TY_IMM && !tempi->a2.disp) { + } else if (tempi->a2.type&MDF_IMM && !tempi->a2.disp) { if (dont_push_float) { ICCopyTemplate(cc,tempi,CMP_TEMPLATE_FSTP,FALSE,TRUE,TRUE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } else if (dont_pop_float) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); ICCopyTemplate(cc,tempi,CMP_TEMPLATE_FLD,FALSE,TRUE,TRUE,CN_MAIN); } else { @@ -638,14 +538,14 @@ U0 ICFAdd(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) U0 ICFSub(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) { Bool dont_push_float,dont_pop_float; - if (tempi->a2.type&TY_MASK==TY_IMM && !tempi->a2.disp) { + if (tempi->a2.type&MDF_IMM && !tempi->a2.disp) { CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); if (dont_push_float) { ICCopyTemplate(cc,tempi,CMP_TEMPLATE_FSTP,FALSE,TRUE,TRUE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } else if (dont_pop_float) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); ICCopyTemplate(cc,tempi,CMP_TEMPLATE_FLD,FALSE,TRUE,TRUE,CN_MAIN); } else { @@ -659,46 +559,46 @@ U0 ICFSub(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) U0 ICFPreIncDec(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,I64 ip) { - if (tempi->ic_flags & ICF_NOT_ADDR) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); + if (tempi->ic_flags & ICF_BY_VAL) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); ICCopyTemplate(cc,tempi,op,FALSE,TRUE,TRUE,CN_MAIN); ICMov(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+RT_I64,REG_RCX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,MDF_DISP+RT_I64,REG_RCX,0,ip); ICCopyTemplate(cc,tempi,op,FALSE,TRUE,TRUE,CN_MAIN); - ICMov(tempi,TY_DISP+RT_I64,REG_RCX,0,TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,MDF_DISP+RT_I64,REG_RCX,0,MDF_REG+RT_I64,REG_RAX,0,ip); } - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } U0 ICFPostIncDec(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,I64 ip) { - if (tempi->ic_flags & ICF_NOT_ADDR) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); - if (tempi->r.type&TY_MASK) - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,TY_REG+RT_I64,REG_RAX,0,ip); + if (tempi->ic_flags & ICF_BY_VAL) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); + if (tempi->r.type.mode) + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,MDF_REG+RT_I64,REG_RAX,0,ip); ICCopyTemplate(cc,tempi,op,FALSE,TRUE,TRUE,CN_MAIN); ICMov(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+RT_I64,REG_RCX,0,ip); - if (tempi->r.type&TY_MASK) - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,MDF_DISP+RT_I64,REG_RCX,0,ip); + if (tempi->r.type.mode) + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,MDF_REG+RT_I64,REG_RAX,0,ip); ICCopyTemplate(cc,tempi,op,FALSE,TRUE,TRUE,CN_MAIN); - ICMov(tempi,TY_DISP+RT_I64,REG_RCX,0,TY_REG+RT_I64,REG_RAX,0,ip); + ICMov(tempi,MDF_DISP+RT_I64,REG_RCX,0,MDF_REG+RT_I64,REG_RAX,0,ip); } - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RDX,0,ip); + MDF_REG+RT_I64,REG_RDX,0,ip); } U0 ICFTemplateFun(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,I64 ip) @@ -707,12 +607,12 @@ U0 ICFTemplateFun(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,I64 ip) CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); if (!dont_push_float) - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); ICCopyTemplate(cc,tempi,op,FALSE,TRUE,TRUE,CN_MAIN); - if (tempi->r.type&TY_MASK && !(tempi->ic_flags & ICF_R_TO_F64) && + if (tempi->r.type.mode && !(tempi->ic_flags & ICF_R_TO_F64) && !(tempi->ic_flags & ICF_R_TO_INT)) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip); + MDF_REG+RT_I64,REG_RAX,0,ip); } diff --git a/Compiler/BackLib.CPP b/Compiler/BackLib.CPP index 79fbd4a..64e613b 100644 --- a/Compiler/BackLib.CPP +++ b/Compiler/BackLib.CPP @@ -72,8 +72,7 @@ U0 ICAddRSP(CIntermediateCode *tempi,I64 i,Bool optimize=TRUE) CIntermediateCode *tempil1; if (optimize && (tempil1=ICLastIns(tempi))) { j=tempil1->ic_cnt; - if (tempil1->ic_last_cnt==j-4 && - tempil1->ic_body[j-3]==0x83 && + if (tempil1->ic_last_cnt==j-4 && tempil1->ic_body[j-3]==0x83 && tempil1->ic_body[j-4]==0x48) { if (tempil1->ic_body[j-2]==0xEC) j=-tempil1->ic_body[j-1](I8); @@ -81,8 +80,7 @@ U0 ICAddRSP(CIntermediateCode *tempi,I64 i,Bool optimize=TRUE) j=tempil1->ic_body[j-1](I8); else j=0; - } else if (tempil1->ic_last_cnt==j-7 && - tempil1->ic_body[j-6]==0x81 && + } else if (tempil1->ic_last_cnt==j-7 && tempil1->ic_body[j-6]==0x81 && tempil1->ic_body[j-7]==0x48) { if (tempil1->ic_body[j-5]==0xEC) j=-tempil1->ic_body[j-4](I32); @@ -127,28 +125,24 @@ U0 ICAddRSP(CIntermediateCode *tempi,I64 i,Bool optimize=TRUE) } extern U0 ICMov(CIntermediateCode *tempi, - I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2,I64 ip); + CICType t1,I64 r1,I64 d1,CICType t2,I64 r2,I64 d2,I64 ip); -#define MDR_REG 0 -#define MDR_INDIRECT_REG 1 -#define MDR_D8_INDIRECT_REG 2 -#define MDR_D32_INDIRECT_REG 3 -#define MDR_SIB_INDIRECT_REG 4 -#define MDR_SIB_D8_INDIRECT_REG 5 -#define MDR_SIB_D32_INDIRECT_REG 6 -#define MDR_RIP_REL 7 +#define MODR_REG 0 +#define MODR_INDIRECT_REG 1 +#define MODR_D8_INDIRECT_REG 2 +#define MODR_D32_INDIRECT_REG 3 +#define MODR_SIB_INDIRECT_REG 4 +#define MODR_SIB_D8_INDIRECT_REG 5 +#define MODR_SIB_D32_INDIRECT_REG 6 +#define MODR_RIP_REL 7 -I64 ICModr1(I64 r,I64 t2,I64 r2,I64 d2) +I64 ICModr1(I64 r,CICType t2,I64 r2,I64 d2) {//result.u8[0] is type //result.u8[1] is REX //result.u8[2] is ModR //result.u8[3] is SIB I64 result=0; - if (t2&TY_MASK>TY_RIP_DISP32) { - "Callers:%P;%P\n",Caller,Caller(2); - throw('Compiler'); - } - if (t2&RT_MASK>4) { - case TY_REG>>4: + switch (Bsr(t2)) { + case MDf_REG: if (r2>7) { result.u8[1]++; r2&=7; } result.u8[2]=0xC0+r<<3+r2; - result.u8[0]=MDR_REG; - if (result.u8[1]==0x40 && (t2&RT_MASK>=RT_I16 || r<4 && r2<4)) + result.u8[0]=MODR_REG; + if (result.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4 && r2<4)) result.u8[1]=0; break; - case TY_DISP>>4: + case MDf_DISP: if (r2>7) { result.u8[1]++; r2&=7; } if (!d2 && r2!=REG_RBP) { result.u8[2]=r<<3+r2; - result.u8[0]=MDR_INDIRECT_REG; + result.u8[0]=MODR_INDIRECT_REG; } else if (MIN_I8<=d2<=MAX_I8) { result.u8[2]=0x40+r<<3+r2; - result.u8[0]=MDR_D8_INDIRECT_REG; + result.u8[0]=MODR_D8_INDIRECT_REG; } else { result.u8[2]=0x80+r<<3+r2; - result.u8[0]=MDR_D32_INDIRECT_REG; + result.u8[0]=MODR_D32_INDIRECT_REG; } - if (result.u8[1]==0x40 && (t2&RT_MASK>=RT_I16 || r<4)) + if (result.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4)) result.u8[1]=0; break; - case TY_SIB>>4: + case MDf_SIB: if (77) @@ -193,27 +187,27 @@ I64 ICModr1(I64 r,I64 t2,I64 r2,I64 d2) if (r2.u8[0]==REG_NONE) { result.u8[3]=5+(r2.u8[1]&7)<<3+r2.u8[1]&0xC0; result.u8[2]=4+r<<3; - result.u8[0]=MDR_SIB_D32_INDIRECT_REG; + result.u8[0]=MODR_SIB_D32_INDIRECT_REG; } else { result.u8[3]=r2.u8[0]&7+(r2.u8[1]&7)<<3+r2.u8[1]&0xC0; if (!d2 && r2.u8[0]&7!=REG_RBP) { result.u8[2]=4+r<<3; - result.u8[0]=MDR_SIB_INDIRECT_REG; + result.u8[0]=MODR_SIB_INDIRECT_REG; } else if (MIN_I8<=d2<=MAX_I8) { result.u8[2]=0x44+r<<3; - result.u8[0]=MDR_SIB_D8_INDIRECT_REG; + result.u8[0]=MODR_SIB_D8_INDIRECT_REG; } else { result.u8[2]=0x84+r<<3; - result.u8[0]=MDR_SIB_D32_INDIRECT_REG; + result.u8[0]=MODR_SIB_D32_INDIRECT_REG; } } - if (result.u8[1]==0x40 && (t2&RT_MASK>=RT_I16 || r<4)) + if (result.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4)) result.u8[1]=0; break; - case TY_RIP_DISP32>>4: + case MDf_RIP_DISP32: result.u8[2]=0x05+r<<3; - result.u8[0]=MDR_RIP_REL; - if (result.u8[1]==0x40 && (t2&RT_MASK>=RT_I16 || r<4)) + result.u8[0]=MODR_RIP_REL; + if (result.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4)) result.u8[1]=0; break; } @@ -223,28 +217,28 @@ I64 ICModr1(I64 r,I64 t2,I64 r2,I64 d2) U0 ICModr2(CIntermediateCode *tempi,I64 i,I64 d,I64 ip=0) {//t=0 means no SIB switch [i.u8[0]] { - case MDR_REG: + case MODR_REG: break; - case MDR_INDIRECT_REG: + case MODR_INDIRECT_REG: break; - case MDR_D8_INDIRECT_REG: + case MODR_D8_INDIRECT_REG: ICU8(tempi,d); break; - case MDR_D32_INDIRECT_REG: + case MODR_D32_INDIRECT_REG: ICU32(tempi,d); break; - case MDR_SIB_INDIRECT_REG: + case MODR_SIB_INDIRECT_REG: ICU8(tempi,i.u8[3]); break; - case MDR_SIB_D8_INDIRECT_REG: + case MODR_SIB_D8_INDIRECT_REG: ICU8(tempi,i.u8[3]); ICU8(tempi,d); break; - case MDR_SIB_D32_INDIRECT_REG: + case MODR_SIB_D32_INDIRECT_REG: ICU8(tempi,i.u8[3]); ICU32(tempi,d); break; - case MDR_RIP_REL: + case MODR_RIP_REL: ICU32(tempi,d-(ip+tempi->ic_cnt)); tempi->ic_flags&=~ICF_CODE_FINAL; break; @@ -272,16 +266,16 @@ U0 ICModr2(CIntermediateCode *tempi,I64 i,I64 d,I64 ip=0) #define SLASH_OP_FISTTP 0x0000000001DDDD01 #define SLASH_OP_FILD 0x0000000001DFDF05 -U0 ICSlashOp(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,I64 op,I64 ip) +U0 ICSlashOp(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1,I64 op,I64 ip) { I64 i; - if (t1&TY_MASK==TY_REG && !op.u8[3]) - t1=t1&(TY_MASK|1)+RT_I64; //Set to 64 bit, preserving signed/unsigned + if (t1&MDF_REG && !op.u8[3]) + t1=t1&(MDG_MASK|RTF_UNSIGNED)+RT_I64; //Set to 64 bit,preserving unsigned i=ICModr1(op.u8[0],t1,r1,d1); - if (tempi->ic_flags&ICF_LOCK && op!=SLASH_OP_MOV && t1&TY_MASK!=TY_REG) + if (tempi->ic_flags&ICF_LOCK && op!=SLASH_OP_MOV && !(t1&MDF_REG)) ICU8(tempi,OC_LOCK_PREFIX); - switch (t1&RT_MASK) { + switch (t1.raw_type) { case RT_I8: case RT_U8: ICRex(tempi,i.u8[1]); @@ -300,32 +294,32 @@ U0 ICSlashOp(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,I64 op,I64 ip) ICModr2(tempi,i,d1,ip+4); } -U0 ICPush(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,I64 ip) +U0 ICPush(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1,I64 ip) { - switch (t1>>4) { - case TY_REG>>4: + switch (Bsr(t1)) { + case MDf_REG: if (r1>7) ICU16(tempi,0x5049+(r1&7)<<8); else ICU8(tempi,0x50+r1); return; - case TY_IMM>>4: + case MDf_IMM: if (MIN_I8<=d1<=MAX_I8) ICU16(tempi,0x6A+d1<<8); else if (MIN_I32<=d1<=MAX_I32) { ICU8(tempi,0x68); ICU32(tempi,d1); } else { - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,t1,r1,d1,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,t1,r1,d1,ip); ICU8(tempi,0x50+REG_RBX); } return; - case TY_STK>>4: + case MDf_STK: return; - case TY_DISP>>4: - case TY_SIB>>4: - case TY_RIP_DISP32>>4: - switch (t1&RT_MASK) { + case MDf_DISP: + case MDf_SIB: + case MDf_RIP_DISP32: + switch (t1.raw_type) { case RT_I64: case RT_U64: case RT_F64: @@ -334,7 +328,7 @@ U0 ICPush(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,I64 ip) } break; } - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,t1,r1,d1,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,t1,r1,d1,ip); ICU16(tempi,0x5048+REG_RBX<<8); } @@ -351,30 +345,31 @@ U0 ICPushRegs(CIntermediateCode *tempi,I64 mask) } } -U0 ICPop(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,I64 ip) +U0 ICPop(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1,I64 ip) { - switch (t1>>4) { - case TY_NULL>>4: - ICAddRSP(tempi,8); - break; - case TY_REG>>4: + switch (Bsr(t1)) { + case MDf_REG: if (r1>7) ICU16(tempi,0x5849+(r1&7)<<8); else ICU8(tempi,0x58+r1); break; - case TY_DISP>>4: - case TY_RIP_DISP32>>4: - case TY_SIB>>4: - if (t1&RT_MASKic_cnt; CIntermediateCode *tempil1; Bool old_lock=Btr(&tempi->ic_flags,ICf_LOCK); - switch (t1>>4) { - case TY_REG>>4: - if (t2&TY_MASK==TY_IMM) { + switch (Bsr(t1)) { + case MDf_REG: + if (t2&MDF_IMM) { if (!d2) ICZero(tempi,r1); else if (0<=d2<=MAX_U8) { @@ -492,13 +487,13 @@ U0 ICMov(CIntermediateCode *tempi, ICU16(tempi,i+r1<<8); ICU64(tempi,d2); } - } else if (t2&TY_MASK==TY_STK) + } else if (t2&MDF_STK) ICPop(tempi,t1,r1,d1,ip); else { - if (r1==r2 && t2&TY_MASK==TY_REG) + if (r1==r2 && t2&MDF_REG) goto move_done; - if (t2&TY_MASK==TY_REG) { - t2=TY_REG+RT_I64; + if (t2&MDF_REG) { + t2=MDF_REG+RT_I64; if (tempil1=ICLastIns(tempi)) { i=tempil1->ic_cnt; j=0x48+(r1>7); @@ -511,10 +506,10 @@ U0 ICMov(CIntermediateCode *tempi, } } i=ICModr1(r1,t2,r2,d2); - if (t2&RT_MASK!=RT_U32) + if (t2.raw_type!=RT_U32) i|=0x4800; ICRex(tempi,i.u8[1]); - switch (t2&RT_MASK) { + switch (t2.raw_type) { case RT_I8: ICU24(tempi,i.u8[2]<<16+0xBE0F); break; @@ -537,19 +532,22 @@ U0 ICMov(CIntermediateCode *tempi, ICModr2(tempi,i,d2,ip+4); } break; - case TY_STK>>4: - if (t1&RT_MASKic_flags&ICF_PUSH_CMP) + ICPopRegs(tempi,1<ic_flags&ICF_PUSH_CMP) + ICPushRegs(tempi,1<>4: - case TY_RIP_DISP32>>4: - case TY_SIB>>4: - if (t2&TY_MASK==TY_IMM && (t1&RT_MASKic_cnt+4); - switch (t1&RT_MASK) { + switch (t1.raw_type) { case RT_I8: case RT_U8: i--; @@ -584,7 +582,7 @@ U0 ICMov(CIntermediateCode *tempi, tempi->ic_flags&=~ICF_CODE_FINAL; } - switch (t1&RT_MASK) { + switch (t1.raw_type) { case RT_I8: case RT_U8: ICU8(tempi,d2); @@ -597,11 +595,11 @@ U0 ICMov(CIntermediateCode *tempi, ICU32(tempi,d2); } } else { - if (t2&TY_MASK==TY_REG) + if (t2&MDF_REG) ICSlashOp(tempi,t1,r1,d1,r2+SLASH_OP_MOV,ip); else { - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,t2,r2,d2,ip); - ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,REG_RBX,0,ip); + ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,t2,r2,d2,ip); + ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,REG_RBX,0,ip); } } break; @@ -612,20 +610,20 @@ move_done: tempi->ic_last_cnt=last_cnt; } -U0 ICLea(CIntermediateCode *tempi, - I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2,CCmpCtrl *cc,U8 *buf,I64 ip) +U0 ICLea(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1, + CICType t2,I64 r2,I64 d2,CCmpCtrl *cc,U8 *buf,I64 ip) { I64 i; CAOTAbsAddr *tempa; - switch (t1>>4) { - case TY_REG>>4: + switch (Bsr(t1)) { + case MDf_REG: i=ICModr1(r1,t2,r2,d2); i.u8[1]|=0x48; ICU24(tempi,i.u8[2]<<16+0x8D00+i.u8[1]); ICModr2(tempi,i,d2,ip+4); break; - case TY_STK>>4: - if (t2&TY_MASK==TY_RIP_DISP32) { + case MDf_STK: + if (t2&MDF_RIP_DISP32) { ICU8(tempi,0x68); ICU32(tempi,d2); if (cc->flags&CCF_AOT_COMPILE && buf && !(cc->flags&CCF_NO_ABSS)) { @@ -639,24 +637,24 @@ U0 ICLea(CIntermediateCode *tempi, break; } // Fall thru default: - ICLea(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,cc,buf,ip); - ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,REG_RCX,0,ip); + ICLea(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,cc,buf,ip); + ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,REG_RCX,0,ip); } } U0 ICDeref(CIntermediateCode *tempi,I64 ip) { - I64 t; - t=tempi->r.type&RT_MASK; + CICType t; + t=tempi->r.type.raw_type; if (t>tempi->a1.type_pointed_to) t=tempi->a1.type_pointed_to; - if (tempi->a1.type&TY_MASK==TY_REG) + if (tempi->a1.type&MDF_REG) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+t,tempi->a1.reg,tempi->a1.disp,ip); + MDF_DISP+t,tempi->a1.reg,tempi->a1.disp,ip); else { - ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+t,REG_RCX,0,ip); + MDF_DISP+t,REG_RCX,0,ip); } } diff --git a/Compiler/CExcept.CPP b/Compiler/CExcept.CPP index 038e38a..580d519 100644 --- a/Compiler/CExcept.CPP +++ b/Compiler/CExcept.CPP @@ -3,7 +3,7 @@ U0 LexPutToken(CCmpCtrl *cc) '"'; if (cc->token==TK_IDENT || cc->token==TK_STR) "%s",cc->cur_str; - else if (cc->token==TK_INTEGER) + else if (cc->token==TK_INT) "INT:%X",cc->cur_i64; else if (cc->token==TK_CHAR_CONST) "U8:%X",cc->cur_i64; @@ -141,31 +141,29 @@ U0 ICClassPut(CHashClass *c) U0 ICArgPut(CICArg *a) { if (a->type_pointed_to) - "%Z %Z %Z ", - a->type&RT_MASK,"ST_RAW_TYPES", - a->type_pointed_to&RT_MASK,"ST_RAW_TYPES", - a->type>>4,"ST_TY_TYPES"; + "%Z %Z %Z ",a->type.raw_type,"ST_RAW_TYPES", + a->type_pointed_to,"ST_RAW_TYPES", + Bsr(a->type>>8)+1,"ST_TY_TYPES"; else - "%Z %Z ", - a->type&RT_MASK,"ST_RAW_TYPES", - a->type>>4,"ST_TY_TYPES"; - switch (a->type>>4) { - case TY_STK>>4: + "%Z %Z ",a->type.raw_type,"ST_RAW_TYPES", + Bsr(a->type>>8)+1,"ST_TY_TYPES"; + switch (Bsr(a->type)) { + case MDf_STK: "STK"; break; - case TY_IMM>>4: + case MDf_IMM: "#%X",a->disp; break; - case TY_REG>>4: + case MDf_REG: "%Z",a->reg,"ST_U64_REGS"; break; - case TY_DISP>>4: + case MDf_DISP: "%X[%Z]",a->disp,a->reg,"ST_U64_REGS"; break; - case TY_RIP_DISP32>>4: + case MDf_RIP_DISP32: "[%X]",a->disp; break; - case TY_SIB>>4: + case MDf_SIB: if (a->disp) "%X",a->disp; if (a->reg==REG_RIP) @@ -189,14 +187,14 @@ U0 ICPut(CCmpCtrl *cc,CIntermediateCode *tempi) if (opcode>=IC_END_EXP && opcode!=IC_NOP2) { "%15ts %016X ",intermediate_code_table[opcode].name,tempi->ic_data; if (cc->pass) { - if (tempi->r.type&TY_MASK) { + if (tempi->r.type.mode) { ICArgPut(&tempi->r); "<-"; } - if (tempi->a1.type&TY_MASK) + if (tempi->a1.type.mode) ICArgPut(&tempi->a1); ','; - if (tempi->a2.type&TY_MASK) + if (tempi->a2.type.mode) ICArgPut(&tempi->a2); '' CH_SPACE; } @@ -225,8 +223,8 @@ U0 ICPut(CCmpCtrl *cc,CIntermediateCode *tempi) "-DEP "; if (tempi->ic_flags & ICF_DEPEND_RESULT) "+DEP "; - if (tempi->ic_flags & ICF_NOT_ADDR) - "NOT_ADDR "; + if (tempi->ic_flags & ICF_BY_VAL) + "BY_VAL "; if (tempi->ic_flags & ICF_PUSH_RESULT) "PUSH "; if (tempi->ic_flags & ICF_PUSH_CMP) @@ -234,16 +232,16 @@ U0 ICPut(CCmpCtrl *cc,CIntermediateCode *tempi) if (tempi->ic_flags & ICF_POP_CMP) "POP_CMP "; if (tempi->ic_flags & ICF_DEL_PREVIOUS_INS) - "DELPREV "; + "DEL_PREV "; if (tempi->ic_flags & ICF_PREVIOUS_DELETED) - "PREVDEL "; + "PREV_DEL "; for (i=0;i<3;i++) { if (Bt(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0+i)) "DONT_PUSH#%d ",i; if (Bt(&tempi->ic_flags,ICf_DONT_POP_FLOAT0+i)) "DONT_POP#%d ",i; } - if (tempi->ic_flags & ICF_ALTERNATE_TEMPLATE) + if (tempi->ic_flags & ICF_ALT_TEMPLATE) "ALT_TEMP "; '\n'; } diff --git a/Compiler/CInit.CPP b/Compiler/CInit.CPP index 2eb5b30..2dd83d7 100644 --- a/Compiler/CInit.CPP +++ b/Compiler/CInit.CPP @@ -211,7 +211,7 @@ U0 CmpLoadDefines() "I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0F64\0String\0"); DefineLstLoad("ST_INT_SIZE_TYPES", "I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0"); - DefineLstLoad("ST_TY_TYPES","NULL\0IMM\0REG\0DISP\0SIB\0RIP\0STK\0"); + DefineLstLoad("ST_TY_TYPES","NULL\0STK\0IMM\0REG\0DISP\0SIB\0RIP\0"); DefineLstLoad("ST_U8_REGS","AL\0CL\0DL\0BL\0AH\0CH\0DH\0BH\0" "R8u8\0R9u8\0R10u8\0R11u8\0R12u8\0R13u8\0R14u8\0R15u8\0"); DefineLstLoad("ST_U8_REX_REGS","AL\0CL\0DL\0BL\0RSPu8\0RBPu8\0RSIu8\0RDIu8\0" @@ -239,68 +239,23 @@ U0 CmpLoadDefines() U0 CmpFillTables() { - I64 i,k; + I64 i; U32 *d; cmp.to_reg_vars_map=CAlloc(NUM_REGS*sizeof(U8)); cmp.num_reg_vars=0; - cmp.reg_vars_mask=REGG_C_LOCAL_VARS; + cmp.reg_vars_mask=REGG_LOCAL_VARS; for (i=0;iabss; while (tempa) { - if (!(tempa->type&1)) + if (!(tempa->type&IEF_IMM_NOT_REL)) cnt++; tempa=tempa->next; } @@ -451,7 +451,7 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0) tempa=tempaot->abss; while (tempa) { tempa1=tempa->next; - if (!(tempa->type&1)) + if (!(tempa->type&IEF_IMM_NOT_REL)) *ptr(U32 *)++ =tempa->ip; Free(tempa); tempa=tempa1; @@ -655,8 +655,7 @@ I64 ExePrint2(U8 *fmt,...) I64 ExeFile2(U8 *name,Bool just_load=FALSE) {//throws exceptions I64 result; - U8 *name2=DftExt(name,"CPP.Z"), - *st=MStrPrint("#include \"%s\";",name2); + U8 *name2=DftExt(name,"CPP.Z"),*st=MStrPrint("#include \"%s\";",name2); result=ExePutS2(st,name,just_load); Free(st); Free(name2); diff --git a/Compiler/CMisc.CPP b/Compiler/CMisc.CPP index baa4d6d..76ba54e 100644 --- a/Compiler/CMisc.CPP +++ b/Compiler/CMisc.CPP @@ -16,7 +16,7 @@ I64 PassTrace(I64 i=0b10001111101) return old; } -Bool Trace(Bool val) +Bool Trace(Bool val=ON) {//Displays assembly code output from compiler. return Option(OPTf_TRACE,val); } @@ -52,15 +52,15 @@ U0 StreamDir() CD2I32 *LexD2I32(CCmpCtrl *cc,CD2I32 *p) {//Not HolyC. Sprite-like lex 2D point. if (cc->token!='(') - LexExcept(cc,"expecting '(' at "); + LexExcept(cc,"Expecting '(' at "); Lex(cc); //Skip ( p->x=LexExpressionI64(cc); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , p->y=LexExpressionI64(cc); if (cc->token!=')') - LexExcept(cc,"expecting ')' at "); + LexExcept(cc,"Expecting ')' at "); Lex(cc); //Skip ) return p; } @@ -68,19 +68,19 @@ CD2I32 *LexD2I32(CCmpCtrl *cc,CD2I32 *p) CD3I32 *LexD3I32(CCmpCtrl *cc,CD3I32 *p) {//Not HolyC. Sprite-like lex 3D point. if (cc->token!='(') - LexExcept(cc,"expecting '(' at "); + LexExcept(cc,"Expecting '(' at "); Lex(cc); //Skip ( p->x=LexExpressionI64(cc); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , p->y=LexExpressionI64(cc); if (cc->token!=',') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); Lex(cc); //Skip , p->z=LexExpressionI64(cc); if (cc->token!=')') - LexExcept(cc,"expecting ')' at "); + LexExcept(cc,"Expecting ')' at "); Lex(cc); //Skip ) return p; } diff --git a/Compiler/Compiler.BIN b/Compiler/Compiler.BIN index a0883630835577568c14a82b08d3622c700755aa..7fe215ab29e84d6d061ed7016e117728c4884acc 100644 GIT binary patch literal 191724 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 t8b literal 198275 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∈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 O^5YXh&I2vx1Y-a^TkX97 diff --git a/Compiler/Compiler.MAP b/Compiler/Compiler.MAP index 131e991..cab1e22 100644 --- a/Compiler/Compiler.MAP +++ b/Compiler/Compiler.MAP @@ -1,31 +1,29 @@ $LK,"LexPutPos",A="FL:::/Compiler/CExcept.CPP.Z,50",BI=1$ -$LK,"ICAssignPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,517",BI=2$ -$LK,"CmpSetFloatOpPushPop",A="FL:::/Compiler/BackFA.CPP.Z,60",BI=3$ -$LK,"ICFCvt2",A="FL:::/Compiler/BackFA.CPP.Z,170",BI=4$ -$LK,"CmpRawTypePointed",A="FL:::/Compiler/OptLib.CPP.Z,518",BI=5$ +$LK,"ICAssignPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,429",BI=2$ +$LK,"CmpSetFloatOpPushPop",A="FL:::/Compiler/BackFA.CPP.Z,62",BI=3$ +$LK,"ICFCvt2",A="FL:::/Compiler/BackFA.CPP.Z,169",BI=4$ +$LK,"CmpRawTypePointed",A="FL:::/Compiler/OptLib.CPP.Z,517",BI=5$ $LK,"OptFixupBinaryOp1",A="FL:::/Compiler/OptLib.CPP.Z,96",BI=6$ $LK,"OptFixupBinaryOp2",A="FL:::/Compiler/OptLib.CPP.Z,182",BI=7$ $LK,"COCInit",A="FL:::/Compiler/PrsLib.CPP.Z,99",BI=8$ -$LK,"IsLexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1130",BI=9$ -$LK,"CSubSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,563"$ +$LK,"IsLexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1128",BI=9$ +$LK,"CSubSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,562"$ $LK,"LexFilePop",A="FL:::/Compiler/Lex.CPP.Z,11",BI=10$ $LK,"ExePutS",A="FL:::/Compiler/CMain.CPP.Z,571",BI=11$ $LK,"PrsStaticInit",A="FL:::/Compiler/PrsVar.CPP.Z,215",BI=12$ $LK,"LexPutLine",A="FL:::/Compiler/CExcept.CPP.Z,22",BI=13$ $LK,"PrsKeyWord",A="FL:::/Compiler/PrsLib.CPP.Z,31",BI=14$ -$LK,"AsmLineLst",A="FL:::/Compiler/AsmLib.CPP.Z,149",BI=15$ +$LK,"AsmLineLst",A="FL:::/Compiler/AsmLib.CPP.Z,147",BI=15$ $LK,"ICOpSizeRex",A="FL:::/Compiler/BackLib.CPP.Z,28",BI=16$ $LK,"CVI2",A="FL:::/Compiler/PrsVar.CPP.Z,117"$ $LK,"ICU8",A="FL:::/Compiler/BackLib.CPP.Z,17",BI=17$ $LK,"AsmStoreNum",A="FL:::/Compiler/Asm.CPP.Z,263",BI=18$ -$LK,"MDR_SIB_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,137"$ $LK,"OptPass012",A="FL:::/Compiler/OptPass012.CPP.Z,23",BI=19$ $LK,"MemberLstSize",A="FL:::/Compiler/LexLib.CPP.Z,191",BI=20$ -$LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,412",BI=21$ +$LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,355",BI=21$ $LK,"ICAndBranch",A="FL:::/Compiler/BackC.CPP.Z,1",BI=22$ -$LK,"MDR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,134"$ -$LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,649",BI=23$ -$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,494",BI=24$ +$LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,645",BI=23$ +$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,403",BI=24$ $LK,"CN_R",A="FL:::/Compiler/BackFA.CPP.Z,4"$ $LK,"OptLead1",A="FL:::/Compiler/OptLib.CPP.Z,73",BI=25$ $LK,"CmpNoteFloatOp",A="FL:::/Compiler/BackFA.CPP.Z,6",BI=26$ @@ -33,24 +31,25 @@ $LK,"AOTGlblsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,76",BI=27$ $LK,"ExePutS2",A="FL:::/Compiler/CMain.CPP.Z,627",BI=28$ $LK,"HashEntrySize",A="FL:::/Compiler/CHash.CPP.Z,1",BI=29$ $LK,"COCPush",A="FL:::/Compiler/PrsLib.CPP.Z,107",BI=30$ -$LK,"SLASH_OP_DEC",A="FL:::/Compiler/BackLib.CPP.Z,255"$ -$LK,"ICPushRegs",A="FL:::/Compiler/BackLib.CPP.Z,341",BI=31$ +$LK,"SLASH_OP_DEC",A="FL:::/Compiler/BackLib.CPP.Z,249"$ +$LK,"MODR_SIB_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,136"$ +$LK,"ICPushRegs",A="FL:::/Compiler/BackLib.CPP.Z,335",BI=31$ $LK,"PE_POP_HIGHER",A="FL:::/Compiler/PrsExp.CPP.Z,10"$ -$LK,"SLASH_OP_FLD",A="FL:::/Compiler/BackLib.CPP.Z,270"$ +$LK,"SLASH_OP_FLD",A="FL:::/Compiler/BackLib.CPP.Z,264"$ $LK,"ICU32",A="FL:::/Compiler/BackLib.CPP.Z,47",BI=32$ $LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=33$ $LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=34$ -$LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,260"$ +$LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,254"$ $LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,240",BI=35$ $LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=36$ $LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=37$ -$LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,254"$ -$LK,"AOTStoreCodeU64",A="FL:::/Compiler/AsmLib.CPP.Z,69",BI=38$ +$LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,248"$ +$LK,"AOTStoreCodeU64",A="FL:::/Compiler/AsmLib.CPP.Z,68",BI=38$ $LK,"LexPopNoRestore",A="FL:::/Compiler/LexLib.CPP.Z,38",BI=39$ $LK,"ExePrint",A="FL:::/Compiler/CMain.CPP.Z,607",BI=40$ -$LK,"SLASH_OP_NEG",A="FL:::/Compiler/BackLib.CPP.Z,257"$ +$LK,"SLASH_OP_NEG",A="FL:::/Compiler/BackLib.CPP.Z,251"$ $LK,"PrsVarLst",A="FL:::/Compiler/PrsVar.CPP.Z,416",BI=41$ -$LK,"PrsAsmDefine",A="FL:::/Compiler/Asm.CPP.Z,811",BI=42$ +$LK,"PrsAsmDefine",A="FL:::/Compiler/Asm.CPP.Z,809",BI=42$ $LK,"PrsAddOp",A="FL:::/Compiler/PrsExp.CPP.Z,15",BI=43$ $LK,"LexWarn",A="FL:::/Compiler/CExcept.CPP.Z,65",BI=44$ $LK,"PE_POP_ALL1",A="FL:::/Compiler/PrsExp.CPP.Z,12"$ @@ -58,163 +57,162 @@ $LK,"PE_POP_ALL2",A="FL:::/Compiler/PrsExp.CPP.Z,13"$ $LK,"COCAppend",A="FL:::/Compiler/PrsLib.CPP.Z,126",BI=45$ $LK,"LexFilePush",A="FL:::/Compiler/Lex.CPP.Z,1",BI=46$ $LK,"CN_MAIN",A="FL:::/Compiler/BackFA.CPP.Z,3"$ -$LK,"PrsUnaryModifier",A="FL:::/Compiler/PrsExp.CPP.Z,956",BI=47$ +$LK,"PrsUnaryModifier",A="FL:::/Compiler/PrsExp.CPP.Z,954",BI=47$ $LK,"OptFixupUnaryOp",A="FL:::/Compiler/OptLib.CPP.Z,196",BI=48$ $LK,"LexPush",A="FL:::/Compiler/LexLib.CPP.Z,12",BI=49$ -$LK,"SLASH_OP_MOV",A="FL:::/Compiler/BackLib.CPP.Z,261"$ -$LK,"ICPopRegs",A="FL:::/Compiler/BackLib.CPP.Z,381",BI=50$ -$LK,"SLASH_OP_MUL",A="FL:::/Compiler/BackLib.CPP.Z,258"$ -$LK,"SLASH_OP_NOT",A="FL:::/Compiler/BackLib.CPP.Z,256"$ +$LK,"SLASH_OP_MOV",A="FL:::/Compiler/BackLib.CPP.Z,255"$ +$LK,"ICPopRegs",A="FL:::/Compiler/BackLib.CPP.Z,376",BI=50$ +$LK,"SLASH_OP_MUL",A="FL:::/Compiler/BackLib.CPP.Z,252"$ +$LK,"SLASH_OP_NOT",A="FL:::/Compiler/BackLib.CPP.Z,250"$ $LK,"NUM_INTERNAL_TYPES",A="FL:::/Compiler/CInit.CPP.Z,1"$ -$LK,"SLASH_OP_POP",A="FL:::/Compiler/BackLib.CPP.Z,263"$ -$LK,"ICFOp",A="FL:::/Compiler/BackFA.CPP.Z,360",BI=51$ +$LK,"SLASH_OP_POP",A="FL:::/Compiler/BackLib.CPP.Z,257"$ +$LK,"ICFOp",A="FL:::/Compiler/BackFA.CPP.Z,339",BI=51$ $LK,"CN_A1",A="FL:::/Compiler/BackFA.CPP.Z,2"$ $LK,"CN_A2",A="FL:::/Compiler/BackFA.CPP.Z,1"$ -$LK,"LexExpressionF64",A="FL:::/Compiler/PrsExp.CPP.Z,1149",BI=52$ +$LK,"LexExpressionF64",A="FL:::/Compiler/PrsExp.CPP.Z,1147",BI=52$ $LK,"ICAdd",A="FL:::/Compiler/PrsLib.CPP.Z,79",BI=53$ -$LK,"CmpRawType",A="FL:::/Compiler/OptLib.CPP.Z,509",BI=54$ +$LK,"CmpRawType",A="FL:::/Compiler/OptLib.CPP.Z,508",BI=54$ $LK,"ICFOpEqu",A="FL:::/Compiler/BackFB.CPP.Z,1",BI=55$ -$LK,"LexExpressionI64",A="FL:::/Compiler/PrsExp.CPP.Z,1135",BI=56$ -$LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,453",BI=57$ -$LK,"LexExpression",A="FL:::/Compiler/PrsExp.CPP.Z,1163",BI=58$ +$LK,"LexExpressionI64",A="FL:::/Compiler/PrsExp.CPP.Z,1133",BI=56$ +$LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,379",BI=57$ +$LK,"LexExpression",A="FL:::/Compiler/PrsExp.CPP.Z,1161",BI=58$ $LK,"PrsExpression",A="FL:::/Compiler/PrsExp.CPP.Z,264",BI=59$ $LK,"PrsClassNew",A="FL:::/Compiler/PrsLib.CPP.Z,40",BI=60$ -$LK,"LexInStr",A="FL:::/Compiler/Lex.CPP.Z,372",BI=61$ +$LK,"LexInStr",A="FL:::/Compiler/Lex.CPP.Z,373",BI=61$ $LK,"internal_types_table",A="FL:::/Compiler/CInit.CPP.Z,6"$ $LK,"OptPass3",A="FL:::/Compiler/OptPass3.CPP.Z,1",BI=62$ -$LK,"OptPass4",A="FL:::/Compiler/OptPass4.CPP.Z,171",BI=63$ +$LK,"OptPass4",A="FL:::/Compiler/OptPass4.CPP.Z,163",BI=63$ $LK,"OptPass5",A="FL:::/Compiler/OptPass5.CPP.Z,1",BI=64$ -$LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,111",BI=65$ +$LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,96",BI=65$ +$LK,"MODR_REG",A="FL:::/Compiler/BackLib.CPP.Z,130"$ $LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,24",BI=66$ $LK,"PrsGlblVarLst",A="FL:::/Compiler/PrsStmt.CPP.Z,201",BI=67$ -$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,398",BI=68$ -$LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,136",BI=69$ +$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,341",BI=68$ +$LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,102",BI=69$ $LK,"ICAddRSP",A="FL:::/Compiler/BackLib.CPP.Z,69",BI=70$ -$LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,428",BI=71$ -$LK,"ICDeref",A="FL:::/Compiler/BackLib.CPP.Z,647",BI=72$ -$LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,615",BI=73$ +$LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,391",BI=71$ +$LK,"ICDeref",A="FL:::/Compiler/BackLib.CPP.Z,645",BI=72$ +$LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,613",BI=73$ $LK,"CmpBuf",A="FL:::/Compiler/CMain.CPP.Z,157",BI=74$ $LK,"CMP_TEMPLATES_DONT_PUSH_POP",A="FL:::/Compiler/Templates.CPP.Z,394"$ $LK,"ICAddEct",A="FL:::/Compiler/BackA.CPP.Z,1",BI=75$ -$LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,372",BI=76$ -$LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,885",BI=77$ +$LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,283",BI=76$ +$LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,883",BI=77$ $LK,"HashTableSize2",A="FL:::/Compiler/CHash.CPP.Z,72",BI=78$ $LK,"HashEntrySize2",A="FL:::/Compiler/CHash.CPP.Z,33",BI=79$ $LK,"Ui",A="FL:::/Compiler/UAsm.CPP.Z,238",BI=80$ -$LK,"ICSlashOp",A="FL:::/Compiler/BackLib.CPP.Z,275",BI=81$ -$LK,"OptBrZero",A="FL:::/Compiler/OptLib.CPP.Z,231",BI=82$ -$LK,"Un",A="FL:::/Compiler/UAsm.CPP.Z,664",BI=83$ +$LK,"ICSlashOp",A="FL:::/Compiler/BackLib.CPP.Z,269",BI=81$ +$LK,"OptBrZero",A="FL:::/Compiler/OptLib.CPP.Z,230",BI=82$ +$LK,"Un",A="FL:::/Compiler/UAsm.CPP.Z,660",BI=83$ $LK,"PrsSizeOf",A="FL:::/Compiler/PrsExp.CPP.Z,298",BI=84$ -$LK,"ICToI64",A="FL:::/Compiler/BackB.CPP.Z,366",BI=85$ -$LK,"ICMod",A="FL:::/Compiler/BackA.CPP.Z,521",BI=86$ +$LK,"ICToI64",A="FL:::/Compiler/BackB.CPP.Z,277",BI=85$ +$LK,"ICMod",A="FL:::/Compiler/BackA.CPP.Z,461",BI=86$ $LK,"OptSetNOP1",A="FL:::/Compiler/OptLib.CPP.Z,17",BI=87$ $LK,"OptPass789A",A="FL:::/Compiler/OptPass789A.CPP.Z,1",BI=88$ $LK,"OptSetNOP2",A="FL:::/Compiler/OptLib.CPP.Z,25",BI=89$ $LK,"FBO1_F64",A="FL:::/Compiler/OptLib.CPP.Z,94"$ -$LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,737",BI=90$ -$LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,355",BI=91$ -$LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,129",BI=92$ -$LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,435",BI=93$ +$LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,582",BI=90$ +$LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,266",BI=91$ +$LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,127",BI=92$ +$LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,430",BI=93$ $LK,"ICNot",A="FL:::/Compiler/BackB.CPP.Z,10",BI=94$ -$LK,"ICMul",A="FL:::/Compiler/BackA.CPP.Z,286",BI=95$ +$LK,"ICMul",A="FL:::/Compiler/BackA.CPP.Z,263",BI=95$ $LK,"ICRex",A="FL:::/Compiler/BackLib.CPP.Z,22",BI=96$ -$LK,"ICPop",A="FL:::/Compiler/BackLib.CPP.Z,354",BI=97$ -$LK,"MDR_RIP_REL",A="FL:::/Compiler/BackLib.CPP.Z,139"$ -$LK,"SLASH_OP_FADD",A="FL:::/Compiler/BackLib.CPP.Z,264"$ +$LK,"ICPop",A="FL:::/Compiler/BackLib.CPP.Z,348",BI=97$ +$LK,"SLASH_OP_FADD",A="FL:::/Compiler/BackLib.CPP.Z,258"$ +$LK,"MODR_RIP_REL",A="FL:::/Compiler/BackLib.CPP.Z,137"$ $LK,"LexStmt2Bin",A="FL:::/Compiler/CMain.CPP.Z,1",BI=98$ -$LK,"ICSub",A="FL:::/Compiler/BackA.CPP.Z,207",BI=99$ +$LK,"ICSub",A="FL:::/Compiler/BackA.CPP.Z,205",BI=99$ $LK,"COCFloatConstFind",A="FL:::/Compiler/PrsLib.CPP.Z,164",BI=100$ -$LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,186",BI=101$ +$LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,184",BI=101$ $LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=102$ -$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,582",BI=103$ +$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,457",BI=103$ $LK,"FBO1_NOT_CONST",A="FL:::/Compiler/OptLib.CPP.Z,92"$ $LK,"CMP_TEMPLATES_DONT_POP",A="FL:::/Compiler/Templates.CPP.Z,178"$ $LK,"PrsClass",A="FL:::/Compiler/PrsStmt.CPP.Z,1",BI=104$ $LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=105$ -$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,758",BI=106$ -$LK,"OptBrNotZero",A="FL:::/Compiler/OptLib.CPP.Z,358",BI=107$ +$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,603",BI=106$ +$LK,"OptBrNotZero",A="FL:::/Compiler/OptLib.CPP.Z,357",BI=107$ $LK,"LexPutToken",A="FL:::/Compiler/CExcept.CPP.Z,1",BI=108$ -$LK,"SLASH_OP_FDIV",A="FL:::/Compiler/BackLib.CPP.Z,268"$ +$LK,"SLASH_OP_FDIV",A="FL:::/Compiler/BackLib.CPP.Z,262"$ $LK,"AsmHashLoad",A="FL:::/Compiler/AsmInit.CPP.Z,50",BI=109$ $LK,"UAsmHashLoad",A="FL:::/Compiler/UAsm.CPP.Z,188",BI=110$ $LK,"UnusedExternWarning",A="FL:::/Compiler/CExcept.CPP.Z,104",BI=111$ -$LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,273"$ -$LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,98",BI=112$ +$LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,267"$ +$LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,75",BI=112$ $LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,838",BI=113$ -$LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,684",BI=114$ +$LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,683",BI=114$ $LK,"MemberMetaFind",A="FL:::/Compiler/LexLib.CPP.Z,56",BI=115$ $LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,646",BI=116$ $LK,"FBO1_INT",A="FL:::/Compiler/OptLib.CPP.Z,93"$ $LK,"PE_DO_UNARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,8"$ $LK,"PrsVarInit",A="FL:::/Compiler/PrsVar.CPP.Z,1",BI=117$ -$LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,716",BI=118$ -$LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,141",BI=119$ -$LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,223",BI=120$ -$LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,267"$ -$LK,"ICPreIncDec",A="FL:::/Compiler/BackB.CPP.Z,393",BI=121$ -$LK,"PrsAsmInstruction",A="FL:::/Compiler/Asm.CPP.Z,390",BI=122$ -$LK,"PrsUnaryTerm",A="FL:::/Compiler/PrsExp.CPP.Z,588",BI=123$ -$LK,"MemberLstDel",A="FL:::/Compiler/LexLib.CPP.Z,157",BI=124$ -$LK,"SLASH_OP_FSUB",A="FL:::/Compiler/BackLib.CPP.Z,265"$ -$LK,"ICAndAnd",A="FL:::/Compiler/BackB.CPP.Z,31",BI=125$ -$LK,"InstEntriesCompare",A="FL:::/Compiler/UAsm.CPP.Z,1",BI=126$ -$LK,"SLASH_OP_IMUL",A="FL:::/Compiler/BackLib.CPP.Z,259"$ -$LK,"SLASH_OP_FSTP",A="FL:::/Compiler/BackLib.CPP.Z,271"$ -$LK,"COCDel",A="FL:::/Compiler/PrsLib.CPP.Z,186",BI=127$ +$LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,561",BI=118$ +$LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,139",BI=119$ +$LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,217",BI=120$ +$LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,261"$ +$LK,"ICPreIncDec",A="FL:::/Compiler/BackB.CPP.Z,304",BI=121$ +$LK,"PrsUnaryTerm",A="FL:::/Compiler/PrsExp.CPP.Z,588",BI=122$ +$LK,"MemberLstDel",A="FL:::/Compiler/LexLib.CPP.Z,157",BI=123$ +$LK,"SLASH_OP_FSUB",A="FL:::/Compiler/BackLib.CPP.Z,259"$ +$LK,"ICAndAnd",A="FL:::/Compiler/BackB.CPP.Z,30",BI=124$ +$LK,"InstEntriesCompare",A="FL:::/Compiler/UAsm.CPP.Z,1",BI=125$ +$LK,"SLASH_OP_IMUL",A="FL:::/Compiler/BackLib.CPP.Z,253"$ +$LK,"SLASH_OP_FSTP",A="FL:::/Compiler/BackLib.CPP.Z,265"$ +$LK,"COCDel",A="FL:::/Compiler/PrsLib.CPP.Z,186",BI=126$ $LK,"PE_UNARY_TERM1",A="FL:::/Compiler/PrsExp.CPP.Z,1"$ -$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,602",BI=128$ +$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,502",BI=127$ $LK,"PE_UNARY_TERM2",A="FL:::/Compiler/PrsExp.CPP.Z,2"$ -$LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=129$ -$LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,172",BI=130$ -$LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=131$ -$LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=132$ -$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,695",BI=133$ -$LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=134$ -$LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=135$ -$LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=136$ -$LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=137$ -$LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=138$ -$LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,575",BI=139$ -$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,590",BI=140$ -$LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,108",BI=141$ +$LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=128$ +$LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,172",BI=129$ +$LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=130$ +$LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=131$ +$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,540",BI=132$ +$LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=133$ +$LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=134$ +$LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=135$ +$LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=136$ +$LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,515",BI=137$ +$LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,574",BI=138$ +$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,491",BI=139$ +$LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,106",BI=140$ $LK,"PE_PUSH_LOWER",A="FL:::/Compiler/PrsExp.CPP.Z,11"$ -$LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=142$ -$LK,"OptLag1",A="FL:::/Compiler/OptLib.CPP.Z,51",BI=143$ -$LK,"OptLag2",A="FL:::/Compiler/OptLib.CPP.Z,62",BI=144$ -$LK,"StreamPrint",A="FL:::/Compiler/CMisc.CPP.Z,29",BI=145$ -$LK,"ICFCvt",A="FL:::/Compiler/BackFA.CPP.Z,121",BI=146$ -$LK,"StreamDir",A="FL:::/Compiler/CMisc.CPP.Z,43",BI=147$ -$LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=148$ -$LK,"MDR_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$ -$LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=149$ -$LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,503",BI=150$ -$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,694",BI=151$ -$LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,249",BI=152$ -$LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=153$ -$LK,"PrsExpression2",A="FL:::/Compiler/PrsExp.CPP.Z,65",BI=154$ -$LK,"SLASH_OP_PUSH",A="FL:::/Compiler/BackLib.CPP.Z,262"$ +$LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=141$ +$LK,"OptLag1",A="FL:::/Compiler/OptLib.CPP.Z,51",BI=142$ +$LK,"OptLag2",A="FL:::/Compiler/OptLib.CPP.Z,62",BI=143$ +$LK,"StreamPrint",A="FL:::/Compiler/CMisc.CPP.Z,29",BI=144$ +$LK,"ICFCvt",A="FL:::/Compiler/BackFA.CPP.Z,123",BI=145$ +$LK,"StreamDir",A="FL:::/Compiler/CMisc.CPP.Z,43",BI=146$ +$LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=147$ +$LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=148$ +$LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,502",BI=149$ +$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,609",BI=150$ +$LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,242",BI=151$ +$LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=152$ +$LK,"PrsExpression2",A="FL:::/Compiler/PrsExp.CPP.Z,65",BI=153$ +$LK,"SLASH_OP_PUSH",A="FL:::/Compiler/BackLib.CPP.Z,256"$ $LK,"PE_DEREFERENCE",A="FL:::/Compiler/PrsExp.CPP.Z,5"$ -$LK,"LexPopRestore",A="FL:::/Compiler/LexLib.CPP.Z,23",BI=155$ -$LK,"ICUnaries",A="FL:::/Compiler/BackB.CPP.Z,1",BI=156$ -$LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,572",BI=157$ -$LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,727",BI=158$ -$LK,"LexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1112",BI=159$ -$LK,"ICFPow",A="FL:::/Compiler/BackFA.CPP.Z,280",BI=160$ -$LK,"MapFileWrite",A="FL:::/Compiler/CHash.CPP.Z,90",BI=161$ -$LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,638",BI=162$ -$LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,585",BI=163$ -$LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,529",BI=164$ -$LK,"OptFree",A="FL:::/Compiler/OptLib.CPP.Z,33",BI=165$ +$LK,"LexPopRestore",A="FL:::/Compiler/LexLib.CPP.Z,23",BI=154$ +$LK,"ICUnaries",A="FL:::/Compiler/BackB.CPP.Z,1",BI=155$ +$LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,475",BI=156$ +$LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,639",BI=157$ +$LK,"LexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1110",BI=158$ +$LK,"ICFPow",A="FL:::/Compiler/BackFA.CPP.Z,266",BI=159$ +$LK,"MapFileWrite",A="FL:::/Compiler/CHash.CPP.Z,90",BI=160$ +$LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,538",BI=161$ +$LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=162$ +$LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,528",BI=163$ +$LK,"OptFree",A="FL:::/Compiler/OptLib.CPP.Z,33",BI=164$ $LK,"CMP_TEMPLATES_DONT_PUSH2",A="FL:::/Compiler/Templates.CPP.Z,458"$ $LK,"CInternalType",A="FL:::/Compiler/CInit.CPP.Z,3"$ -$LK,"LexDollar",A="FL:::/Compiler/Lex.CPP.Z,93",BI=166$ -$LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,189",BI=167$ -$LK,"AOTStoreCodeU8",A="FL:::/Compiler/AsmLib.CPP.Z,1",BI=168$ -$LK,"MDR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,133"$ -$LK,"ICBitOps",A="FL:::/Compiler/BackB.CPP.Z,256",BI=169$ +$LK,"LexDollar",A="FL:::/Compiler/Lex.CPP.Z,93",BI=165$ +$LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,188",BI=166$ +$LK,"AOTStoreCodeU8",A="FL:::/Compiler/AsmLib.CPP.Z,1",BI=167$ +$LK,"ICBitOps",A="FL:::/Compiler/BackB.CPP.Z,202",BI=168$ $LK,"lex_zeros",A="FL:::/Compiler/Lex.CPP.Z,91"$ -$LK,"CSwitchCase",A="FL:::/Compiler/PrsStmt.CPP.Z,568"$ -$LK,"AsmResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,1",BI=170$ +$LK,"CSwitchCase",A="FL:::/Compiler/PrsStmt.CPP.Z,567"$ +$LK,"AsmResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,1",BI=169$ +$LK,"PrsAsmInst",A="FL:::/Compiler/Asm.CPP.Z,390",BI=170$ $LK,"COCCompile",A="FL:::/Compiler/PrsLib.CPP.Z,249",BI=171$ $LK,"Cmp",A="FL:::/Compiler/CMain.CPP.Z,419",BI=172$ $LK,"PrsPush2",A="FL:::/Compiler/PrsLib.CPP.Z,11",BI=173$ @@ -222,164 +220,188 @@ $LK,"ICArgPut",A="FL:::/Compiler/CExcept.CPP.Z,141",BI=174$ $LK,"UndefinedExtern",A="FL:::/Compiler/CExcept.CPP.Z,98",BI=175$ $LK,"OptIC4",A="FL:::/Compiler/OptPass4.CPP.Z,1",BI=176$ $LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=177$ -$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,556",BI=178$ -$LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,452",BI=179$ -$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,483",BI=180$ -$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,309",BI=181$ -$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,442",BI=182$ -$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,736",BI=183$ +$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,468",BI=178$ +$LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,408",BI=179$ +$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,482",BI=180$ +$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,217",BI=181$ +$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,443",BI=182$ +$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,634",BI=183$ $LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$ -$LK,"MDR_SIB_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,138"$ +$LK,"MODR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,131"$ $LK,"PE_MAYBE_MODIFIERS",A="FL:::/Compiler/PrsExp.CPP.Z,3"$ $LK,"PE_UNARY_MODIFIERS",A="FL:::/Compiler/PrsExp.CPP.Z,4"$ $LK,"AOTLocalsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,42",BI=184$ $LK,"PE_DO_BINARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,9"$ $LK,"CmpFixUpAOTAsm",A="FL:::/Compiler/CMain.CPP.Z,302",BI=185$ $LK,"OptLabelFwd",A="FL:::/Compiler/OptLib.CPP.Z,1",BI=186$ -$LK,"ICOrOr",A="FL:::/Compiler/BackB.CPP.Z,63",BI=187$ +$LK,"ICOrOr",A="FL:::/Compiler/BackB.CPP.Z,51",BI=187$ $LK,"LexExcept",A="FL:::/Compiler/CExcept.CPP.Z,81",BI=188$ $LK,"cmp_templates",A="FL:::/Compiler/CExts.CPP.Z,42"$ -$LK,"CmpF2PushPop",A="FL:::/Compiler/OptLib.CPP.Z,536",BI=189$ -$LK,"MDR_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,135"$ +$LK,"CmpF2PushPop",A="FL:::/Compiler/OptLib.CPP.Z,535",BI=189$ $LK,"CmpJoin",A="FL:::/Compiler/CMain.CPP.Z,35",BI=190$ -$LK,"MDR_SIB_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,136"$ $LK,"PrsPop2",A="FL:::/Compiler/PrsLib.CPP.Z,16",BI=191$ $LK,"CMP_TEMPLATES",A="FL:::/Compiler/Templates.CPP.Z,4"$ -$LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,901",BI=192$ +$LK,"MODR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$ +$LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,899",BI=192$ $LK,"PrsAsmArg",A="FL:::/Compiler/Asm.CPP.Z,35",BI=193$ -$LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,276",BI=194$ +$LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,277",BI=194$ $LK,"MemberClassBaseFind",A="FL:::/Compiler/LexLib.CPP.Z,87",BI=195$ $LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=196$ $LK,"cmp",A="FL:::/Compiler/Compiler.PRJ.Z,16"$ $LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=197$ -$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,434",BI=198$ -$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,680",BI=199$ -$LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,403",BI=200$ -$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,589",BI=201$ +$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,345",BI=198$ +$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,580",BI=199$ +$LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,398",BI=200$ +$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,464",BI=201$ $LK,"ICLastIns",A="FL:::/Compiler/BackLib.CPP.Z,59",BI=202$ $LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=203$ $LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=204$ -$LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,545",BI=205$ -$LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,57",BI=206$ -$LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,303",BI=207$ -$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,633",BI=208$ +$LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,478",BI=205$ +$LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,56",BI=206$ +$LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,297",BI=207$ +$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,491",BI=208$ $LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:::/Compiler/Templates.CPP.Z,267"$ $LK,"intermediate_code_table",A="FL:::/Compiler/CInit.CPP.Z,16"$ -$LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,394",BI=209$ +$LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,389",BI=209$ $LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=210$ $LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=211$ $LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=212$ -$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,704",BI=213$ +$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,604",BI=213$ $LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=214$ $LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=215$ -$LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,269"$ -$LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,272"$ +$LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,263"$ +$LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,266"$ $LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=216$ -$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,924",BI=217$ -$LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,526",BI=218$ +$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,762",BI=217$ +$LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,525",BI=218$ $LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,11",BI=219$ $LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=220$ -$LK,"ICCopyTemplate",A="FL:::/Compiler/BackFA.CPP.Z,75",BI=221$ +$LK,"ICCopyTemplate",A="FL:::/Compiler/BackFA.CPP.Z,77",BI=221$ $LK,"PrsStmt",A="FL:::/Compiler/PrsStmt.CPP.Z,900",BI=222$ $LK,"PrsFun",A="FL:::/Compiler/PrsStmt.CPP.Z,132",BI=223$ -$LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,298",BI=224$ +$LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,299",BI=224$ $LK,"PrsType",A="FL:::/Compiler/PrsVar.CPP.Z,287",BI=225$ $LK,"CmpCtrlNew",A="FL:::/Compiler/Lex.CPP.Z,28",BI=226$ -$LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,327"$ +$LK,"MODR_SIB_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,135"$ +$LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,328"$ $LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=227$ $LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=228$ $LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,388"$ -$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,510",BI=229$ +$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,419",BI=229$ $LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=230$ -$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,456",BI=231$ -$LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,413",BI=232$ -$LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,198",BI=233$ -$LK,"LexDocRead",A="FL:::/Compiler/Lex.CPP.Z,310",BI=234$ +$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,455",BI=231$ +$LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,408",BI=232$ +$LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,194",BI=233$ +$LK,"LexDocRead",A="FL:::/Compiler/Lex.CPP.Z,311",BI=234$ $LK,"CmpFixUpJITAsm",A="FL:::/Compiler/CMain.CPP.Z,174",BI=235$ $LK,"COCPopNoFree",A="FL:::/Compiler/PrsLib.CPP.Z,114",BI=236$ $LK,"ParenWarning",A="FL:::/Compiler/CExcept.CPP.Z,110",BI=237$ $LK,"PrsFunCall",A="FL:::/Compiler/PrsExp.CPP.Z,378",BI=238$ -$LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,473",BI=239$ +$LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,384",BI=239$ $LK,"Option",A="FL:::/Compiler/CMisc.CPP.Z,1",BI=240$ $LK,"ExeFile2",A="FL:::/Compiler/CMain.CPP.Z,655",BI=241$ -$LK,"COptMemberVar",A="FL:::/Compiler/OptLib.CPP.Z,550"$ +$LK,"COptMemberVar",A="FL:::/Compiler/OptLib.CPP.Z,549"$ $LK,"PE_CHECK_BINARY_OPS1",A="FL:::/Compiler/PrsExp.CPP.Z,6"$ $LK,"PE_CHECK_BINARY_OPS2",A="FL:::/Compiler/PrsExp.CPP.Z,7"$ $LK,"LexBackupLastChar",A="FL:::/Compiler/LexLib.CPP.Z,1",BI=242$ $LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,19",BI=243$ -$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,212",BI=244$ +$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,210",BI=244$ +$LK,"MODR_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,133"$ $LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=245$ -$LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,269",BI=246$ -$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,785",BI=247$ -$LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,266"$ -$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,660",BI=248$ +$LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,270",BI=246$ +$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,682",BI=247$ +$LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,260"$ +$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,560",BI=248$ +$LK,"MODR_SIB_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,134"$ $LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,616",BI=249$ $LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=250$ $LK,"cmp_templates_dont_pop",A="FL:::/Compiler/CExts.CPP.Z,43"$ $LK,"CmpOffset2Reg",A="FL:::/Compiler/OptLib.CPP.Z,83",BI=251$ $LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=252$ -$LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,666",BI=253$ +$LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,665",BI=253$ $LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=254$ -$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,556",BI=255$ -$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,378",BI=256$ +$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,555",BI=255$ +$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,289",BI=256$ $LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=257$ $LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,787",BI=258$ -$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,485",BI=259$ +$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,484",BI=259$ $LK,"cmp_templates_dont_push",A="FL:::/Compiler/CExts.CPP.Z,45"$ $LK,"cmp_templates_dont_push_pop",A="FL:::/Compiler/CExts.CPP.Z,46"$ -$LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,330",BI=260$ +$LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,331",BI=260$ $LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,801",BI=261$ $LK,"cmp_templates_dont_push2",A="FL:::/Compiler/CExts.CPP.Z,44"$ $LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=262$ $LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=263$ -$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,344",BI=264$ +$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,322",BI=264$ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$ -H2@÷#÷#$$!$&$Q$S$†$p$–$�$®$Á$¨+>k>kTk\kgksk~k�k€k©k¯k¯kÖkãkl'l'lQlsl‹lxl—l½lªlÑlÞl m mm.mAmAmAmKmH<Jöö0ö:ö>öBöGöIöeö�ö�ö‹ö|ªÅ.ú.úXúZúaúgúmúoúuú{ú‚ú�úœú¯ú½úÌúÑúÓúØúâúòúûû3ûEû8þßþßà àà à'à)à.àd`µîÓîÓ ÔÔÔ Ô,Ô.Ô:Ô:ÔGÔIÔVÔXÔdÔdÔzÔƒÔƒÔŽÔ•Ô¤Ô¯ÔµÔºÔ¼ÔÈÔÏÔÞÔéÔïÔôÔöÔÕ2ÕXÕhÕxÕˆÕŠÕšÕªÕºÕºÕ¿ÕÙÕàÕçÕçÕçÕçÕîÕÖÖÖÖ"Ö&Ö&Ö&ÖSÖZÖpÖ|Ö‚ÖˆÖŽÖ�Ö�ÖžÖD¶ÃžÖžÖ´Ö·ÖºÖÇÖÍÖÚÖÝÖàÖæÖèÖòÖ,cj¨‡¨‡¶‡À‡Ë‡Ö‡Ü‡â‡ jnÖÖäùÿ -P o6o6}6Œ6¤6ª6¼6¼6Ç6Ð6Ö6Ý6ã6 œ;^öEöEþEFF.FAF^FFˆF™FÀF×F×FùFGGG%GWGdGhGpGpGƒG“G—G›G Œ×öFFfnr€†ŒŒ¹Ïãñ -LUegnntt„ |1W#W#m#v#�#š#š#�#¬#²#»#½#Ã#Ì#Î#Ô#Þ#å#è#è#ò#0 'ð…ð…þ…†$†*†*†0†„•²@�@�T�[�b�f�Š���¤�µ�Ú�å�ð�ò�ý�"ž-ž8ž:žAžJžLžWž^žˆž("ÆÜÆÜÕÜèÜÝÝÝ nÜnÜ}Ü�ܖ܃�¯�¯µ¯¼¯Ó¯ß¯ê¯ü¯ °þ¯ü¯-°H°T°[°a°m°w°~°…°‰°‹°‘°�°§°®°µ°¹°¹°Ã°È°Ó°å°ö°ç°å°±7±C±J±P±\±f±m±t±x±z±€±Œ±–±�±¤±¨±¨±µ±Ã±Ó±å±ö±ç±å±²7²C²J²P²\²f²m²t²x²z²€²Œ²–²�²¤²¨²¨²²²Â²Ô²å²Ö²Ô²³ ³³³(³/³6³:³<³B³N³X³_³f³j³j³t³‚³‹³¤³°³´³´³·³À³6´ìÆ{Æ{ã{�¡ë{ý{|$|6|=|N|V|^|a|o|›|›|°|²|²|¾|Æ|Ê|×|×|ã|ë|ï|ü|ü|ü|}#}4}4}9}Q}`}e}k}v}{}{}€}˜}§}¬}²}½}Â}Â}Ð}Ù}å}í}õ}ý}~~ ~~&~/~@~P~P~U~]~e~h~n~n~s~s~s~y~|~ƒ~Ž~£~È~ß~ì~ô~ü~!*.1=CJOO]mmzz‚Š“¢§§®¹¿ÇÍØÝÝì÷ €€€€"€-€?€E€M€S€X€X€l€r€}€ƒ€…€•€›€›€½€ä€é€é€ý€��*�0�5�N�T�d�l�t�z���“�™�¯�À�Æ�Ë�ä�ê�ú�‚ -‚‚‚‚+‚1‚G‚X‚^‚c‚r‚x‚‰‚‘‚™‚Ÿ‚¦‚«‚«‚Á‚ǂ݂î‚ô‚ö‚ƒ ƒƒƒ%ƒ+ƒ2ƒ2ƒ2ƒDƒMƒ^ƒnƒnƒsƒsƒ�ƒ‰ƒšƒ­ƒ´ƒºƒƒȃ؃Þƒæƒìƒìƒìƒñƒñƒñƒñƒñƒ„„!„!„7„@„K„T„_„j„o„o„…„‹„¡„²„¸„½„τՄڄ󄅅……"…*…-…3…9…>…>…b…j…r…‚…ˆ…Ž…Ž…Ÿ…½…½…Â…Â…Î…Ö…Ù…à…æ…ë…ë… ††#†)†0†N†]†e†}†…†ˆ†�†•†­†µ†͆Õ†؆߆å†å†å†‡‡ ‡(‡+‡2‡8‡H‡W‡c‡~‡†‡‰‡�‡–‡®‡º‡Õ‡݇à‡ç‡í‡í‡í‡í‡ò‡ò‡û‡ ˆ!ˆ'ˆ?ˆRˆXˆ]ˆoˆuˆzˆ–ˆœˆ¨ˆ°ˆ³ˆºˆÀˆéˆñˆ‰‰‰‰‰‰‰‰4‰J‰P‰h‰{‰�‰†‰±‰·‰ʉŠŠ/Š7Š=ŠBŠBŠ\ŠhŠtŠŠŠ„Š„ŠžŠªŠ¶ŠÁŠÁŠÆŠÆŠàŠìŠøŠ‹‹‹‹‹$‹0‹6‹;‹M‹S‹X‹g‹s‹‹…‹‹‹’‹¥‹°‹¹‹Å‹Í‹ЋÖ‹Ü‹á‹õ‹Œ Œ$Œ,Œ/Œ5Œ;ŒSŒ[Œ{Œ•Œ�Œ Œ¦Œ¬Œ¬Œ½ŒÆŒÒŒÚŒÝŒäŒêŒïŒ���0�8�;�B�H�`�h�‡�¡�©�¬�³�¹�¹�É�Ò�Þ�æ�é�ï�õ�ú�ŽŽ%Ž?ŽGŽJŽPŽVŽnŽvŽ˜Ž´Ž¼Ž¿ŽÅŽËŽËŽÜŽåŽñŽùŽüŽ� �� �/�7�R�Z�]�d�j�‚�Š�¬�É�Ñ�Ô�Û�á�á�á�á�á�æ�æ�ü�����+�1�6�D�P�Y�e�m�p�w�}�‚�”�£�«�Ã�Ë�Î�Õ�Û�ó�û�‘4‘<‘?‘F‘L‘L‘L‘]‘f‘r‘z‘}‘„‘Š‘�‘¡‘°‘¼‘בß‘â‘é‘ï‘’’5’R’Z’]’d’j’j’j’j’j’o’o’‚’�’£’®’³’³’Æ’Ü’â’í’ï’ï’“%“+“6“6“H“Q“b“g“y“‰“‰“ޓޓ¡“·“½“˓ړߓߓò“”””+”0”0”F”L”i”�”�”«”±”¶””˔ڔڔߔߔõ”û”•0•0•Z•`•e•q•z•‰•‰•ޕޕ¤•ª•Ǖߕߕ ––– –)–8–8–=–=–S–Y–v–Ž–Ž–¸–¾–À–Ì–Õ–à–à–à–à–å–ó–ü– ——!—.—.—.—>—N—S—w—ƒ—„—‰—ž—»—Ë—ï—ÿ—˜˜˜ -˜˜$˜7˜u˜…˜‹˜�˜’˜£˜²˜ä˜ì˜ò˜ô˜ù˜™™ ™™.™7™F™F™K™P™_™h™s™u™~™‰™‰™ª™±™·™¿™Ê™Йà™æ™î™ù™ÿ™ÿ™š šššš%š.š=š=š=šBšBšBšTšYšYškšvš~š†šŒšŒšŒš‘š‘šœš­š°š¼šÅšÑšØšÞšãšãšîšÿš›››#›*›0›5›5›5›5›:›?›?›F›J›J›V›_›b›b›m›o›�›ˆ›Ž›�›¨›³›¹››Æ›Æ›Ò›Û›Þ›Þ›é›ë›ý›œ -œœœ(œ.œ8œ;œ?œ?œGœNœQœSœ^œbœkœnœnœyœ{œ“œšœ¥œ°œ³œ¹œ¾œ¾œÅœÉœÉœÕœÞœáœáœìœîœ�� ��'�2�8�A�E�E�Q�Z�]�]�h�j�|�ƒ�‰�‘�œ�§�­�·�º�¾�¾�Æ�Í�Ð�Ò�Ý�á�ê�í�í�ø�ú�žž$ž/ž2ž8ž=ž=žOžSžSž_žhžkžkžvžxžŠž‘ž—ž©ž´ž¿žÅžÊžÊžÕžÚžÚžåžêžêžõžøžüžŸŸ ŸŸŸ&Ÿ+Ÿ+Ÿ8Ÿ<ŸMŸUŸYŸmŸtŸxŸxŸ…Ÿ‘Ÿ™ŸŸŸ¯Ÿ³ŸÄŸÖŸáŸåŸåŸòŸúŸ       +H2@_#_#h#n#‰#Ž#¹#»#î#Ø#þ#$$)$¨­Ó¾\¾\Ô\Ü\ç\ó\]õ\"](](]R]Y]„]’]’]¿]á]ù]æ]^4^!^K^R^}^}^„^¨^¾^¾^¾^È^H>L6ø6øPøZø^øbøgøiø‚ø›ø›ø¥øp©ÁFüFüpürüyüü…ü‡ü�ü“ü©ü¼üËüÐüÒü×üáüöü ý ý/ýAý8ãããã'ã0ã7ã9ã>ãd`µVÖVÖtÖxÖ…Ö‡Ö”Ö–Ö¢Ö¢Ö¯Ö±Ö¾ÖÀÖÌÖÌÖâÖëÖëÖöÖýÖ ×××"×$×0×7×F×Q×W×\×^×jך×À×Ð×à×ð×òרØ"Ø"Ø'ØAØHØOØOØOØOØVØlØxØ~؄؊؎؎؎ػØÂØØØäØêØðØöØøØøØÙD¶ÃÙÙÙ Ù"Ù/Ù5ÙBÙEÙHÙNÙPÙZÙ,cjЈЈވèˆóˆþˆ‰ +‰ hl&&4IO +P ï5ï5ý5 6$6*6<6<6G6P6V6]6c6 œ;^®I®I¶IºIÓIæIùIJ7J@JQJuJŒJŒJ«JºJÃJÐJ×J KKK&K&K9KIKMKQK Œ×ö––¶¾ÂÐÖÜÜ  3AX^jo}™¢²´»»ÁÁÑ |1¿"¿"Õ"Þ"é"#####$#&#,#5#7#=#G#N#Q#Q#[#0 '‡‡&‡F‡L‡R‡R‡X‡„“°pŸpŸ„Ÿ‹Ÿ’Ÿ–ŸºŸÍŸÔŸåŸ +    " - R ] h j q z | ‡ Ž ¸ ("žÞžÞ­ÞÄÞßÞßÞåÞ >Þ>ÞMÞcÞiÞƒббõ±ü±² ²*²<²M²>²<²m²ˆ²”²›²¡²­²·²¾²Å²É²Ë²Ñ²Ý²ç²î²õ²ù²ù²³³³%³6³'³%³V³w³ƒ³Š³�³œ³¦³­³´³¸³º³À³Ì³Ö³Ý³ä³è³è³õ³´´%´6´'´%´V´w´ƒ´Š´�´œ´¦´­´´´¸´º´À´Ì´Ö´Ý´ä´è´è´ò´µµ%µµµEµLµRµ^µhµoµvµzµ|µ‚µŽµ˜µŸµ¦µªµªµ´µÂµËµäµðµôµôµ÷µ¶v¶Ôîî €T¦€%€A€L€^€e€v€~€†€‰€—€ÀÀØ€Ú€Ú€æ€î€õ€�����*�*�*�F�Q�b�b�g��Ž�“�™�¤�©�©�®�Æ�Õ�Ú�à�ë�ð�ð�þ�‚‚‚#‚+‚.‚4‚9‚B‚T‚]‚n‚~‚~‚ƒ‚‹‚“‚–‚œ‚œ‚¡‚¡‚¡‚§‚ª‚±‚¼‚Ñ‚ö‚ ƒƒ"ƒ*ƒ6ƒBƒHƒOƒXƒ\ƒ_ƒkƒqƒxƒ}ƒ}ƒ‹ƒ›ƒ›ƒ¨ƒ¨ƒ°ƒ¸ƒÁƒЃÕƒÕƒ܃çƒíƒõƒûƒ„ „ „„%„7„=„E„K„P„[„m„s„{„�„†„†„š„ „«„±„³„ÄɄɄ…….…4…J…[…a…f…………•…�…¥…«…°…°…Ä…Ê…à…ñ…÷…ü…††+†3†;†A†F†F†\†b†x†‰†�†”†£†©†º††ʆІ׆܆܆ò†ø†‡ ‡%‡'‡6‡<‡F‡N‡V‡\‡c‡c‡c‡u‡~‡�‡Ÿ‡Ÿ‡¤‡¤‡²‡º‡ˇÞ‡å‡ë‡ó‡ù‡ ˆˆˆˆˆˆ"ˆ"ˆ"ˆ"ˆ"ˆAˆMˆRˆRˆhˆqˆ|ˆ…ˆ�ˆ›ˆ ˆ ˆ¶ˆ¼ˆÒˆãˆéˆîˆ‰‰ ‰$‰B‰B‰G‰G‰S‰[‰^‰d‰j‰o‰o‰“‰›‰£‰³‰¹‰¿‰¿‰Љî‰î‰ó‰ó‰ÿ‰Š +ŠŠŠŠŠ<ŠDŠTŠZŠaŠŠ‘Š™Š´Š¼Š¿ŠÆŠÌŠçŠïŠ +‹‹‹‹"‹"‹"‹A‹Q‹]‹e‹h‹o‹u‹…‹—‹£‹Á‹É‹Ì‹Ó‹Ù‹ô‹ŒŒ&Œ)Œ0Œ6Œ6Œ6Œ6Œ;Œ;ŒDŒTŒjŒpŒˆŒ›Œ¡Œ¦Œ¸Œ¾ŒÃŒߌåŒñŒùŒüŒ� �2�:�J�P�W�W�W�\�\�e�}�“�™�±�Ä�Ê�Ï�ú�ŽŽJŽ\ŽyŽ�Ž‡ŽŒŽŒŽ¦Ž²Ž¾ŽÉŽÉŽÎŽÎŽèŽôŽ� � ���*�6�B�M�M�R�R�h�n�z�€�…�—���¢�±�½�É�Ï�Õ�Ü�ï�ú����� �&�+�?�Q�Y�t�|��…�‹�¦�®�Ñ�î�ö�ù�ÿ�‘‘‘ ‘+‘3‘6‘=‘C‘H‘Z‘l‘t‘�‘—‘š‘¡‘§‘‘Ê‘ì‘ ’’’’!’!’1’:’F’N’Q’W’]’b’v’ˆ’�’­’µ’¸’¾’Ä’ß’ç’ “+“3“6“<“B“B“S“\“h“p“s“z“€“…“—“©“±“Ï“דÚ“á“ç“” +”/”O”W”Z”a”g”g”g”g”g”l”l”‚”ˆ”””š”Ÿ”±”·”¼”ʔ֔ߔë”ó”ö”ý”•••,•4•O•W•Z•a•g•‚•Š•¬•ɕѕԕەá•á•á•ò•û•–––– –6–H–T–r–z–}–„–Š–¥–±–Ö–ö–þ–—————————&—A—G—R—W—W—j—€—†—‘—“—“—¦—É—Ï—Ú—Ú—ì—õ—˜ ˜˜-˜-˜2˜2˜E˜[˜a˜o˜~˜ƒ˜ƒ˜–˜¬˜²˜À˜ϘÔ˜Ô˜ê˜ð˜ ™%™%™O™U™Z™f™o™~™~™ƒ™ƒ™™™Ÿ™¼™Ô™Ô™þ™š ššš-š-š2š2šHšNškšƒšƒš­š³š¸šÄšÍšÜšÜšášáš÷šýš›2›2›\›b›d›p›y›„›„›„›„›‰›—› ›±›³›Å›Ò›Ò›Ò›â›ò›÷›œ'œ(œ-œBœ_œoœ“œ£œ©œ©œ©œ®œ³œÈœÛœ�)�/�1�6�G�V�ˆ���–�˜���¤�¤�­�¿�Ò�Û�ê�ê�ï�ô�ž žžž"ž-ž-žNžUž[žcžnžtž„žŠž’ž�ž£ž£ž¨ž­ž´ž»žžÉžÒžážážážæžæžæžøžýžýžŸŸ"Ÿ*Ÿ0Ÿ0Ÿ0Ÿ5Ÿ5Ÿ@ŸQŸTŸ`ŸiŸuŸ|Ÿ‚Ÿ‡Ÿ‡Ÿ’Ÿ£Ÿ¦Ÿ²Ÿ»ŸÇŸΟԟٟٟٟٟޟãŸãŸîŸòŸòŸþŸ    -    , 8 F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F H H _ g s s ” ¢ º ¼ È Õ Õ ø ¡¡¡"¡-¡4¡4¡>¡>¡A¡S¡q¡}¡}¡¬£x¿Ù_4_4q4s4w4€4Œ4˜4­4­4Ù4Ý4â4î45 5555$5.5°œÄ¾Œ¾ŒÔŒÛŒìŒñŒ�óŒ���$�<�)�H�K�M�[�`�u�b���„�„���¥�’�±�·�·�Ê�Ý�ð�ŽŽ Ž„ž^x^x|xŽx”x›x¢x¤x§x®xµxµxÑxÕxÛxÛxóxyyy yDydy…yŠy«y°y¼yÇyÌyÙyÜyz$z)z/z1z7z:zKzPzSz[zdzzŸz¶zÉzÎzÒzôz{ {#{6{;{?{a{|{œ{¯{´{Å{Ê{Í{Ï{Õ{Û{ì{ñ{÷{ÿ{ÿ{ ||)|<|A|E|g|‚|¢|µ|º|Õ|õ| } }$}(}J}]}]}x}x}x}†}ž} } } }®}Æ}È}È}Ö}î}î}~~ ~~,~L~f~m~w~Š~Ž~Ž~Ž~•~›~µ~¼~Æ~Þ~à~æ~ **DH‰—HƒHƒ_ƒuƒ…ƒŒƒ£ƒ¾ƒÐƒÔƒ„LîýŽ�Ž�¢�®�Ä�°�Ð�Ò�å�ø����4IRvÓvÓÓÓ‚Ó�ÓžÓ¡Ó¦Óä;ôô.ô1ôOôfôwôwô’ô˜ô�ô�ô¸ô¾ôÃôÃôÌôÚôæôíôóôøô;õEõLõRõTõTõgõmõmõmõ}õrõŽõ�õ¯õ´õ´õ´õ»õÂõÉõÞõåõöööÐL¼ø¡ø¡¢¢(¢1¢9¢<¢C¢G¢P¢a¢e¢k¢y¢–¢£¢²¢·¢Ã¢È¢Ï¢Û¢à¢ã¢í¢å¢ý¢£££ £%£.£4£4£B£E£Y£b£k£r£v£{£’£ª£³£Á£Ý£é£é£¤¤¤¤5¤A¤I¤\¤c¤w¤€¤‡¤‹¤–¤›¤¢¤¿¤ì¤ó¤÷¤ù¤¥¥¥)¥+¥<¥F¥Q¥[¥j¥y¥•¥•¥˜¥ ¥¥¥'¦Xs…nHnH‹HœH©H³HÊHçHI II"I(I+I7IŒ Ø_Ø_è_ ` ````` ` `'`A`R`Z`Z`e`e`s`ƒ`ƒ`‘`—`—`¯`¯`µ`Û`(kqè‡è‡ö‡ˆˆˆ ˆ @UaÞæÞæìæôæûæç'ç'ç*ç,ç2ç $/4^Ý^ÝkÝyÝ~Ý„Ý!$).6Ý6ÝCÝQÝVÝ\Ý"$#(ÝÝÝ$Ý)Ý/Ý#4ðy__k{‘™£»ÀÐæîø  % 5 K S ] u � ‰ “ £ ¨ ¾ È Ò Ü æ ð ú    " , 6 @ V ` j t ~ ˆ ’ œ ¦ ¼ Æ Ð æ ð ú !!!"!,!6!@!J!T!^!h!r!|!†!�!š!¤!®!¸!Â!Ì!Ö!à!ê!ô!þ!""""$¨D@™@™V™]™d™r™ƒ™•™—™ž™¤™´™¿™É™Ô™ë™î™ð™ššš"š,š3š>šSš[š[šqšqšqš…š%$5:†Ý†Ý”ݣݨݮÝ&¨Ekˆšˆšžš¥š¬šºšËšÝšßšæšìšüš›››3›6›8›J›Q›a›k›u›|›‡›››£›£›¹›¹›¹›Î›'(&,0000&0,020(0_gžGžG´GÇGÖGÜGßGçG)  ß– – ¸ À Æ Ó Ú ö ü ü ü     ' 3 > D N U f f q { { � “ £ © ® µ µ Ö Ü ë þ !! ! !!!!!!!.!8!=!=!R!\!\!p!y!!…!›! !§!º!¾!¾!Æ!Ì!Ò!Ü!ã!ê!ó!""*"."4":"I"\"b"f"l"r"x"x"z"~"„"Š"�"•"•"•"•"À"Ñ"Ñ"è"õ"ù"##6#6#<#?#C#I#I#[#l#�#•#�#®#²#Ã#Ç#Í#æ#è#î#û#ý# $'$-$8$[$f$l$r$x$�$‡$œ$ª$²$¶$Ç$Ë$Ñ$ê$ì$ò$ÿ$% %+%1%7%=%F%L%i%\%ƒ%Œ%’%’%§%¬%¬%³%º%Ì%Ñ%Ñ%Ñ%ë%í%& &#&)&1&5&<&_&e&k&w&Ž&•&›&¦&«&«&²&¶&½&Ë&Í&Õ&Ú&â&í&ó&ÿ&' -''''+'F'V'c'r'Ž'�'¬'¬'³'È'Í'Ö'ã'è'î'ó'ó'ú'þ'((((!(%(/(;(B(F(N(V(^(m({(€(Œ(Œ(”(”(·(·(Å(Ë(Ð(Ô(Ù(Ù(Ù(Ù(ß(á(á() -)))-)/)/)/):):):)?)h**4+t>Å>ÅXÅ\ÅtÅ|ńŎŒřşųŻÅÀÅÃÅÎÅÙÅáÅìÅ÷ÅùÅÆÆÆ(Æ3Æ5Æ@ÆKÆMÆYÆbÆbÆxƂƙƟƥƶƼÆÅÆ×ÆÝÆÝÆåÆéÆôÆùÆ ÇÇÇ(Ç*Ç.Ç=Ç=Ç=ÇNÇNÇSÇeÇkÇÙÇ+Ô@.á.áDáKáNárárá�á¢áµáÈáÍáÍáëáùá â â'â'â)â)â)â<â>â>â>âEâXâkâkâkâ~â‰âœâ²â·â»âÂâ×âêâñâñâôâã,LAPÇ$Ç$Õ$æ$ò$ %%2%4%O%j%j%r%y% %-P~Žpˆpˆ~ˆ‹ˆ™ˆ«ˆ¶ˆÄˆÑˆßˆñˆüˆ -‰‰‰.4 -66%616B6T6]6g6m6/|¼Wææ)OOXZZaˆ��ž­ÉÔÔàç÷ý&(AGRbt}ˆ�“š¿ÄÒÛÛâñ18?DOU]ƒŒ“˜£¯¾Ò×ßëýý  # 3 E K T T c i } † – ¥ · À Ð ã ë ÿ  -7 -; -G -^ -z -Œ -’ -� -© -¹ -É -Î -× -× -é -í -ù - , > D O [ k { � “ “ ˜ š š Ÿ Ÿ ® ´ º º ¾ 70�ÄäöÖöÖ××"×&×-×4×C×N×T×Y×[×g×n×v×|ׂ׆׆ולפתװײײ׾×18 ?/?/M/S/_/j/{/…/Œ/’/2@}‰&è&è4è?èFèeèrèrèuèwè}è3ðh ffŒŸ§®µ»½ÄËÎÎààóþBJS[`q‡—©®Èàääé*Fnv‡Œ�¯¿ÑÓí  %MU^fk|’¢´¹Óëï:'GSYq‰Ž£¿çïø(8JLf~‚‚žÆÎ×ßäõ -2Ldh{{{€ ÀÌÒê *<Lcz‘¨¨¼ØØØù    + 9 T c j z | ‚ ™ ¨ ¡ ¾ Ï ê ê  -4D}Š^^n‚‹‘££§ª²5\Ob‡‡ ‡/‡8‡A‡E‡I‡U‡Z‡_‡_‡p‡t‡{‡“‡–‡¢‡60ýÖßÖßßßäßíßôßößûß7Ü4nnŒ“𥭯ÆÚóóþ 5AWe{„–¾ÕÚâæ ë(,,<yX…¢¢ÁÌÒèùþ8OT\`ƒb‰Ÿ£¿çïôøý$2FKduy‹‹‹‹�¬ìËø &<MRn–ž£§¬½ÏÝñó !!3[rwƒ¦…¬ÂÆÓÓÓÓæìöý''CSaaw‡•¬¿ÄÊàïè)G?l•••¢Ûàëñü2">Tbz�”¤Ãïßû7BH^otŠ ¤Àèðõùþ%3GLevzŒŒŒŒ‘­Ìûë$/5K\a}¥­²¶»ÌÞì,00Oe{ŒŒŒŸ¥¯¶Éàààü 0@UNi|�‡�¬¥ÁÑßüü%EEEe8Do|*39KKORZ9°Åí&Ž&Ž<ŽCŽTŽYŽnŽ[ŽzŽ€Ž€ŽŒŽ¤Ž‘Ž°Ž³ŽµŽÃŽÈŽÝŽÊŽéŽìŽìŽøŽ �úŽ� � �2�E�X�k�~�ˆ�:<‹–¶¶Æ×àæêõ;”)ÞéÞéæéêéöéê êê$ê6êAêLê[êlêsêŒê�ê�ê�ê§ê®êÁêÊêØêìêë ë*ë<d(=0†0†<†P†S†g†o†s†}†‡†�†’†˜†=$t¹ÀEÀEäEçEëEøEF FF F*FRFRF^F`F`FlFqFqF}F‚F‚FŽF“F“FŸF¤F¤F°FµFµFÁFÆFÆFÒF×F×F×FÚFÚFóFGG%G%G'G'G3G9G>G>GDGPGPG[GgGtG‰G‘G—G—G¨G¨G±G´GH>è w®£®£Ë£Ó£Ö£ä£ò£¤¤(¤>¤P¤[¤l¤p¤‚¤…¤�¤™¤¥¤¸¤é¤Þ¤Ĥù¤ ¥¥*¥8¥V¥h¥Œ¥�¥Ÿ¥À¥¦¥Û¥Û¥Þ¥ã¥æ¥æ¥í¥¦ ¦¦¦,¦9¦L¦L¦`¦d¦‘¦‘¦©¦®¦®¦¾¦ƦÖ¦à¦ð¦ú¦ -§§§§+§3§C§M§]§g§w§ƒ§ˆ§ˆ§ˆ§ª§¸§§ǧÔ§é§é§î§ø§¨ ¨¨¨¨¨&¨5¨:¨@¨E¨E¨K¨Q¨V¨V¨e¨x¨„¨‘¨�¨°¨¸¨¾¨ǨÞ¨ò¨©©©-©@©W©d©l©©‡©�©–©Ÿ©Ÿ©¤©¤©¤©¤©¤©°©°©°©¹©Ò©ç©ï© -ªª(ª*ª>ªCªCªCªNª\ªaªaªhªvª{ª“ªŸª±ª½ªêÒªÖªߪ誫«««0«8«@«m«~«‹«�«›«›« « «§«µ«º«Í«Ù«å«ë«ï«ø«ý«ý«ý«ý«ý«¬¬¬¬¬¬+¬+¬+¬+¬+¬+¬+¬+¬+¬+¬4¬M¬b¬j¬…¬–¬£¬¥¬¹¬ŬʬʬʬÓ¬í¬ù¬þ¬ ­,­,­1­1­1­1­1­1­1­1­F­K­K­K­\­g­l­l­w­‰­¡­³­Ô­ô­ÿ­®®®®®@®I®Z®^®v®†®Ž®–®¡®Ë®Ô®Ø®ð®¯¯¯¯¯"¯[¯d¯h¯n¯s¯|¯…¯НННН™¯­¯˯Ö¯Û¯á¯æ¯æ¯ù¯ °3°>°F°L°L°Q°Q°`°t°’°�°¢°¨°­°­°À°Ô°ú°± ±±±±±±!±:±O±W±r±ƒ±�±’±¡±£±£±£±£±£±·±·±·±·±·±·±·±·±·±·±·±·±·±·±·±·±ƱÕ±à±â±â±ë±í±í±²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²"².².²2²7²G²b²w²†²’²¨²²ŲϲÛ²³!³A³e³g³z³¨³€³óóƳÖ³Þ³ù³ -´ ´'´5´A´Y´Y´„´‡´–´ª´Ë´Ü´ø´ä´µ&µDµwµuµjµ_µPµ…µ…µ…µˆµ�µ�µªµ¸µæµ¶¶3¶6¶E¶Y¶z¶‹¶§¶“¶ööá¶···ü¶í¶"·"·"·%·*·*·1·A·b·n·ú?°«Ó–À–À¬À°À»ÀÂÀÍÀáÀáÀìÀýÀÁÁÁ*Á2ÁCÁCÁLÁQÁYÁiÁwÁ†Á‘Á¤Á¤Á·Á·ÁÍÁùÁùÁ ÂÂÂÂ!Â!Â+Â3Â3Â3ÂDÂDÂDÂHÂPÂVÂ[Â[Â_ÂgÂkÂqÂvÂv‚—§±ÂÄÂÉÂÑÂÑÂÖÂÖÂÝÂéÂþÂÃà Ã&Ã9Ã>ÃFÃLÃLÃQÃXÃcËÖåï÷ýÃÏÃÕÃÚÃÚÃÚÃÚÃÚÃÚÃÚÃÚÃÚÃåÃñÃþÃÄÄÄ/Ä4Ä<ÄAÄIÄNÄNÄNÄVÄ^ÄgÄoÄtÄ|Ä�ÄˆÄ“Ä»ÄÆÄÎÄÝÄçÄùÄþÄÅ Å ÅÅ"Å*Å=ÅEÅMÅbÅdÅoÅwŌŌŔŨŰŷŽÅÁÅÅÅÔÅÙÅåÅûÅÆÆ$Æ0Æ5ÆAÆLÆQÆQÆQÆrƌƑƙƨưƸÆÍÆÒÆÝÆåÆúÆÿÆÿÆ Ç!Ç-Ç5ÇJÇVÇ[ÇgÇrÇwÇwÇwÇwÇwÇwǂǂǂǂǂǂǂǂǂǂǂǂÇ�Ç­ÇÊÇÚÇàÇèÇûÇÈÈÈÈÈ-È3È;ÈCÈEÈeÈmÈvÈ~ȆȋÈ�È—È¢ÈÊÈÕÈÝÈìÈöÈÉÉÉ!É!É!É*É3É6É@ÉNÉ`ÉbÉtɆɆɆɑɖɳɸɸÉÁÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÆÉÑÉÝÉéÉ ÊÊ$ÊDÊIÊQÊXÊeÊmÊvÊ~ʅʊʊʒʚʶʾÊÁÊÃÊÓÊÝÊÝÊÝÊßÊòÊËË ËËËË Ë$Ë,Ë3Ë@ËYË`ËeË}ˇˢ˻ËÃËÐËéËðËðËõËõËõËõËõËõËõËýËÌÌ"Ì'Ì'Ì/Ì7ÌDÌIÌIÌIÌMÌRÌRÌbÌgÌgÌgÌsÌzÌ€Ì�̡̽ÌÐÌÖÌÞÌóÌúÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Í)Í7Í7Í<ÍGÍNÍjÍwÍwÍwÍ{͆ͤͲͪÏ@ü|®Ï®ÏÄÏÏÏÖÏáÏìÏÐÐÐ%Ð8ÐBÐBÐ^ÐxÐЈÐ�ВОЧЮбжÐÌÐÖÐèÐîÐúÐÑÑÑ*Ñ?ÑFÑFÑFÑTÑbÑlÑoÑ}чъќѡѦѶѹѾÑÎÑÑÑÕÑÞÑæÑøÑÒÒÒÒ Ò2Ò8ÒDÒYÒ`ÒhÒzÒ€Ò�Ò Ò Ò§Ò§Ò§ÒµÒÃÒÍÒÐÒÞÒèÒëÒýÒÓÓÓÓ Ó/Ó2Ó6Ó?ÓGÓYÓaÓaÓmÓzÓ‚Ó‚Ó…Ó�Ó®Ó¼ÓÔAhoÅfØf؀ؚؓءجؿØÂØËØÒØÕØåØóØþØ Ù Ù"Ù.ÙCÙNÙYÙdÙoÙzÙ‘Ù�ٴټÙÅÙÍÙÚÙõÙøÙþÙÚÚÚ$Ú7Ú=ÚEÚEÚSÚeÚrÚ…Ú‹Ú“Ú¦Ú¬Ú´Ú´ÚÝÚâÚÛÛÛ ÛÛÛ'ÛAÛMÛ]Û}Û™Û­ÛµÛ¿ÛÞÛòÛòÛhÜB 6+6+@+H+M+CÉÇfSfSƒSŽS¡SŽS»SÉSÉSÙSâSéSíSöSöSþST T,T8T>TITkTkT~T‰T�T–T›T›T®T¹TÄTËTÓTàTàTòT÷T÷TU U U U U$U7U=UDUYUmUmUrUrU‚U‡U‡UŒU“U›U¢U¤U¬U³U³UÂUÈUÕUÜUßUVV VV#V*V,V@VOVTVYVYVYVlVqV€V‡VŽV£V·V·V¼V¼VÄVÚVßVóVúVÿVÿV WW,W;WNWRWaWoW}WŒW©W´W¹WÈWÜWãWêWúWüW -XXX*X7XGXNXcXjXvX‡XžX X¬X·X¹X¹XÄXØXåXíXïXYYY,Y8YYY`YlYŠYŠYŠY’Y�Y¡Y©Y­YµY¼YÌY×YñYöYýYZZZZZ-Z:ZHZSZ^ZlZrZxZ~Z‡Z�ZœZ©Z±Z½ZËZâZäZíZøZúZ[$[*[0[6[?[P[w[[‰[–[®[µ[Á[Ð[å[å[ò[÷[ \\\\\Ë\DDŽ›NŒNŒbŒnŒ„ŒpŒ�Œ’Œ¤Œ¶Œ¾ŒEìˆÿ&Z&ZHZRZ…Z”ZªZÎZÓZ×ZßZèZ÷ZþZ[ [![2[Q[Y[[[z[‚[‘[˜[¤[©[°[¸[¾[À[Ü[á[÷[ã[\ \ \\\)\H\O\Q\p\w\w\w\‹\Ÿ\£\±\Ä\¼\Ü\á\ì\ó\û\]] ]$]:]&]F]L]L]h]m]†]r]’]˜]�]¹]¾]Ô]À]à]æ]í]õ]û]ý]^^4^ ^@^F^F^F^N^W^W^a^a^y^©^½^Á^Ï^â^Ú^ú^ú^ _FüE€îÝîÝ Þ)Þ.ÞOÞmÞ|ÞšÞ®ÞÆÞÍÞÒÞóÞß ß=ßNßeßißißmßrßwß�߄ߎߔ߱ߴߴߴ߹߿ßÛßéßõßþßàà#à?àJàVà_àsàsà‚à‡à‡à•àGl¬Ã¦D¦D´DÎD»DíDÚDùDEûD-EE9EGEOEZE\EgErErE‘E—EHP‡—FóFóZógóvó‚óˆó²óÈó´óßóÔó÷óÿóIŒg†ÖñÖñò+ò+ò>òBòaòuòzòzò‡ò�ò—ò¬ò¸òÉòÎòßòóòøòúòúòúòó+ó+óEóJP�­.7.7W7Y7g7m7‹7š7©7¸7Æ7Ñ7Ô7ä7Kì8n0n0˜0›0ž0¤0©0À0×0î01&1M1P1i1€1’1Ÿ1²1Å1Ê1Ò1Ü1ä1ä1ë1ô1ô1ÿ1'2A2G2`2y2{2•2›2´2Í2Õ2à2à2ê2ê2ü2:3O3a3L$ty¶d¶dádÊdëdódMLu„ÞÇÞÇðÇÈÈ'È.È6ÈFÈNÈ_ÈeÈ—ÈNTHYˆbˆbšbœb¥b®b¼bÁbÊbÍbÒbàbêbíb÷bO¨!Gà`à`ð`ù` aa%a1a=aIa`a`aoazaƒaŠa“aªa½aÂaÔaãaïabb -b*b*b,b?bAb[bgbjb�bPxîˆ(m(mAmLm\m¥m¬mÀmÇmÏm×màmèmðmòmúmn nn/nGnPnPn…n¯n¸nÚnôno;oGoiokoroyoyoœoµoÜoõop5p\pupœpµpÜpõpqq+q8q=q=qLqYq^q^qeqpq‚q›q´qÍqÏqÏqÏqÖqÖqãqèqèqèqùqrr/rirprprprxr•r£rÁrÊrÓràrîrs$s$s$s7sEsassssŠs�sºs¼sÓsÙsêsósõstttt t tDtFtMt^tgtitwtyt‡t‰t—t—t·t·t·t·tÄt×têt uu1u9u=uEuIuWueuguousuwuu�u›u›uµuÀuÖuèuv v*v4v;vTv`vgv€v€v’v—v™vŸv°vÁvÐv×vèvñvóvwwww!w!w!wEwEwbwiwpwsww‚w�w”w¢w¦w´w¸w¸wÑwØwÝwëwüwxx9xLx[x]xlxnx}x‡x‡x•xžx´x»xàxåxy>yCyQySyayjy„y†yˆy�y y©y«y¹y»yÉyËyÙyÙyùyùyùyùyùyzzz#z?zdz}z‚z‚z‚z¤z©z©z©zÉzÎzÎzÎzízòzòzùzûzûz{{{ { {{{3{I{n{Š{ž{£{£{¾{Ë{Í{Ü{å{ÿ{||||'|)|)|1|,|j|j|j|‰|‰|‰|ª|¯|¯|¯|Ñ|Ö|Ö|Ö|ö|û|û|û|} } }:}H}J}Y}b}|}~}~}ƒ}~}¤}¦}¦}®}©}ç}ç}ç}ò}ò}~~F~^~v~�~—~§~¼~Ô~è~/FMEƒQ|.>ä>äbävä�ä–ä´ä¿äÝäÝäÝäêäååååå)å+å+å9åFå^å^åoåƒåRçe¾×¾×Ø×á×ØØØØØ Ø'Ø-Ø:Ø:ØWØ\Ø\ØbØgØgØmØrØrØxØ}Ø}ؕبخسسؼØÜØÜØÜØãØåØåØìØîØîØôØôØûØýØýØÙÙ -Ù Ù ÙÙÙÙÙ!Ù'Ù-Ù5Ù5Ù5Ù5ÙAÙIÙQÙYÙaÙiÙqÙwÙ�ٞ٨٫٫ٵٻÙÁÙÁÙÅÙÍÙÔÙØÙàÙèÙîÙöÙýÙÚ ÚÚÚ"Ú(Ú5ÚAÚGÚOÚSÚZÚbÚjÚnÚtÚ|ÚƒÚ‹Ú“Ú—Ú�Ú¨Ú­ÚÃÚÔÚÙÚÜÚ‚ÛSL˜§„„1„3„:„P„`„f„~„–„™„«„ó„TÔ*[.ë.ëBëWëfëjëxë~ë�ë�ëœë§ë²ë½ëÄëÔëëëþëì ì ììì3ì5ì?ì`ìkìmì†ìŠì˜ì�ì�ì¤ì°ì¸ìËì5íU$nsvdvd¡dŠd«d³dVl  ~H~HŒH¦H“HÅH²HÑHæHÓHIòHI I'I2I4I?IJIJIiIoIW,6Ò6Ò?ÒEÒMÒ\ÒkÒpÒXTÒΡΡï¡¢ ¢¢7¢A¢O¢i¢v¢v¢€¢€¢‡¢š¢˜¢¨¢¨¢³¢½¢âɢ̢ڢá¢ù¢££££%£0£J£e£y£–£¸£½£ãÉ£Ô£á£ÿ£ç£¤ ¤¤¤ ¤?¤'¤H¤L¤R¤Z¤_¤_¤l¤r¤�¤y¤™¤�¤£¤«¤°¤°¤ѤÕ¤Û¤ã¤ò¤ ¥ù¤¥¥#¥+¥0¥0¥Q¥U¥[¥c¥c¥h¥u¥“¥{¥œ¥ ¥¦¥®¥Î¥¶¥×¥Û¥á¥é¥é¥ö¥¦ü¥¦!¦'¦/¦O¦7¦X¦\¦b¦j¦j¦j¦€¦€¦€¦€¦‹¦•¦ž¦¾¦ʦئݦë¦ÿ¦§§§§ §(§4§H§U§d§s§�§’§’§�§¥§²§½§ʧէ裡¨¨#¨#¨.¨D¨Q¨Y¨e¨s¨x¨†¨š¨š¨¢¨š¨º¨¿¨¿¨ΨÓ¨Ó¨â¨ç¨ç¨ø¨ý¨ý¨©©©&©5©:©:©M©\©a©o©a©ƒ©ˆ©–©ˆ©ª©¯©½©¯©Ñ©Ö©ä©Ö©ø©ý©ý©ª ªAªFªTªFªhªmªmªŠª�ª±ª¶ªĪ¶ªتݪݪúªÿª!«&«4«&«H«M«M«j«o«‘«–«¤«–«¸«½«½«Ø«Ý«Ý«ø«ý«ý«¬¬¬8¬=¬=¬X¬]¬]¬x¬}¬}¬˜¬�¬�¬¸¬½¬½¬άÓ¬Ó¬ä¬é¬é¬õ¬­­­­&­?­D­g­n­x­}­Ž­˜­­­¸­½­έÙ­á­æ­æ­ê­î­õ­ÿ­ ® ®®!®!®!®%®;®D®D®g®l®l®t®ˆ®‘®«®¸®îήÙ®ë®÷®¯¯¯¯¯3¯>¯H¯S¯X¯c¯k¯p¯p¯{¯ƒ¯Œ¯—¯§¯¿¯ׯë¯ð¯ð¯û¯°°#°D°P°^°c°q°u°z°z°а•°�°¢°­°º°Űß°ñ°±±±±&±+±6±C±N±h±z±Œ±Œ±Œ±Œ±‘±–±–±¢±³±³±Ù±Û±÷±÷±²² ²!²-²5²R²c²m²x²›²¬²½²βÙ²ñ²³³³³³³³)³.³.³6³A³F³F³N³l³V³„³‰³‰³‘³¯³™³dz̳à³̳ø³ý³ý³ -´´´´´´(´9´K´P´P´d´P´|´�´�´‰´Ž´Ž´¡´¦´¦´¹´¾´¾´Ø´è´í´í´µµµµ6µFµKµKµeµuµzµ‘µzµ©µ®µ®µ¹µ¾µúµèµÖµ¾µ¶¶S¶A¶/¶¶k¶p¶p¶¶�¶”¶”¶£¶³¶¸¶¸¶ǶÕ¶Ú¶·ð¶Ú¶· ·G·5· ·_·d·Œ·z·d·¤·©·©·Æ·°·ð·¸¸¸ ¸ ¸J¸Z¸_¸_¸k¸p¸p¸|¸�¸�¸”¸¤¸©¸©¸¼¸̸ѸѸä¸ô¸ù¸ù¸ ¹¹!¹!¹)¹.¹.¹6¹;¹;¹C¹H¹H¹P¹U¹U¹h¹m¹m¹€¹…¹Ó¹Á¹¯¹�¹…¹à¹å¹3º!ººý¹å¹@ºEºEºTºoºtºtº…º º¥º¥º¶ºĺɺɺѺÖºÖºÞºãºãºëºðºðº(»»»÷ºG»b»g»g»Ÿ»�»{»n»¾»Ù»Þ»¼þ»ö»Þ»(¼-¼_¼M¼E¼-¼w¼|¼–¼€¼|¼®¼³¼мº¼³¼è¼í¼í¼ù¼½"½3½3½Y½[½q½w½w½“½ ½ѽ¾¾ð½ ¾'¾'¾'¾3¾8¾8¾K¾V¾`¾e¾p¾z¾¾¾™¾ž¾ž¾¦¾«¾¿¾«¾˾Ö¾Û¾ï¾Û¾û¾¿ ¿ ¿¿$¿)¿)¿4¿?¿D¿D¿U¿Z¿Z¿k¿p¿p¿Š¿•¿š¿¢¿š¿®¿³¿Ç¿³¿Ó¿Ø¿à¿Ø¿ì¿ñ¿Àñ¿ÀÀÀ*ÀÀ6À6À6À;ÀGÀ;ÀZÀ_À_ÀkÀ_À~ÀƒÀƒÀ�ÀƒÀ¢À§À§À³À§ÀÆÀËÀßÀËÀëÀ÷ÀÁ ÁÁ&ÁÁ2Á>ÁIÁTÁYÁmÁYÁ�ÁyÁŠÁ�Á�Á—ÁœÁœÁ¥ÁªÁªÁ³Á¸Á¸ÁÁÁÆÁÆÁÑÁÖÁÖÁáÁæÁæÁñÁöÁöÁÂÂÂÂÂÂ!Â&Â&Â1Â6ÂJÂ6ÂVÂaÂlÂwÂ|Â|†‹‹•šš¤©©³¸¸ÂÀÂÅÂÅÂÒÂ×Â×ÂäÂéÂéÂéÂéÂéÂñÂöÂöÂþÂÃà ÃÃÃÃÃÃ%Ã*Ã>Ã*ÃJÃ[Ã`Ã`ÃrÃ}Ã�âøÃÃÃÜÃÈÃèÃóÃþÃÄÄÄ Ä@ÄEÄ[ÄfÄÄkċĖġĦĦĸÄÃÄãÄèÄþÄ Å"ÅÅ.Å9ÅDÅIÅIÅoÅ[Å{śŠŶÅÁÅÆÅáÅÍÅÆíÅ Æ#ÆÆCÆ/ÆOÆZÆ_Æ_Æ…ÆqƑƱƶÆÌÆׯÜÆ÷ÆãÆÇÇ#Ç9Ç%ÇYÇEÇeÇpÇuÇuǛLJǧÇÇÇÌÇâÇíÇòÇ ÈùÇ-ÈÈ9ÈOÈ;ÈoÈ[È{ȆȋȋȚȟȟȮȳȳȳȹȾȾȾÈÈÈÊÈÊÈÔÈáÈÉÉÉ É É É É ÉÉÉ&É-É8É8ÉEÉKÉRÉ]ÉhÉsÉ~ɉɃɬɤÉÄÉÒÉÌÉõÉíÉ Ê Ê ÊÊÊ1Ê7ÊEÊXÊXÊpÊzʎʨʨʨÊÉÊÙÊîÊËËË8Ë?ËNË`Ë`ËdËiËpˀ˟˟ˣ˺ËÁËÆËÆËÊËÕËáËïËÌ%Ì6ÌDÌw̞̲̃̈̾ÌÌÌÑÌßÌûÌ&ÍLÍOÍ_ÍaÍaÍeÍ„Í�Í�Í’Í ÍËÍëÍëÍëÍîÍÐY, vÒvÒ„ÒŠÒŽÒ�Ò¬Ò²ÒZ`áõ^™^™t™–™£™§™¶™Ï™Ó™Ù™ì™ š š š<š*š š[šeš[8cmdd'dd3d>dIdTd_dkdqd\\�”ˆœˆœ–œ˜œ£œ«œ¶œÁœÌœÎœäœäœöœ� ��=�]ܳfîéîé ê)ê7êYêYêjêwê•ê�êÊêÏêøêë1ë7ë;ë^ë„ë‰ë²ëÌëòë ììì,ì4ì9ìJìRìqìwì{ì”ìœì»ìÀìÑìÙìøìýìí ííí%í-í9íOíTífíkí|í�í“íœí°í»íàíî5î:î:î:îJîQî_îlîŽîŽî¥îªîªîÁîÃîÃî×îÙîÙîðîòîòî ï ï ï"ï"ï3ï8ï8ïHïmïï„ï„ï„ï„ïœï¿ïÒïðïðïðïýïðððð#ð:ð<ð<ðIð`ð`ðwðyð“ð±ð±ð±ðµð·ð·ð·ð¼ð¾ð¾ðÃðÃðÍðÒðÒðððððððøðúðúðúðñññ ñ ñññ3ñ5ñHñ^ñ^ñ^ñ^ñ^ñqñ‰ñ‘ñ‘ñÔñ^` -UU(U4URUnU{U’U¥U°UÅU²UÑUÙUäU÷UðUVV_ôWæ=æ=>>> >'>,>.>5><>@>R>„>ž>‹>¶>»>Ü>Ü>è>ð>ÿ>9?>?k?s?x?�?Œ?”?›?º?À?ß?á?@ @"@A@G@N@N@T@W@[@l@Œ@ž@`$–ܖܥܽܽÜÃÜaxb|6ç6çVçxçxç‚ç‡ç‡ç¦ç³çµçµçµçµçÂçÊçÝçñçóçóçûçèè èb”"~/~/ /ª/¶/»/Ë/Ñ/æ/ú/ 00%0<0D0N0]0e0r0z0}0}0}00Ž0˜0¡0©0¬0¾0cHÏî9î9:#:&:/:5:L:c:z:Œ:º:Ö:ð:õ:ú:;;.;;;N;d;x;};ˆ;¨;­;°;Ê;ä;ì;ô;ù;<-<5<=<B<\<d<i<‰<Ž<‘<«<Å<Í<Õ<×<ñ< ====7=?=?=D=I=T=T=_=_=k=k=}=½=Ó=Ó=ã=dd¤¹È‰È‰Ø‰ß‰ë‰ñ‰ù‰ŠŠ&Š=ŠJŠJŠMŠ[ŠkŠ‚Š†ŠŽŠeºû++-+2+F+u+�+Ž+˜+¨+¨+¿+Æ+Ý+ä+í+,,,,0,0,F,F,\,\,r,r,ˆ,ˆ,ž,ž,´,´,Ë,Ë,â,â,ù,ù,--'-'->->-U-U-m-m-…-�-˜-©-´-Å-È-Ê-á-è-ô.f¬÷†† ¦­µ½ÀËÝÝñøûý"8;ILOVZbp‚’•äg(FLÆ’Æ’í’Ú’ù’““hCFKFKiK~KƒK‹K“K›K¨K®K·K½KÂKÊKæKìKîKðKýKýK -LÿKL!L#L%L2L2L2L7L@LHLQLYL[LcLkLsL€L†L‘L˜L¨L³L¿LÝLäLïLõLM -MMM&M6M>MAM§Mi8-77070K0O0T0_0j0m0q0y0j¤ö›fšfš„š¨š®šµšµš¼šÜšáš÷š›ÿš ›2›D›M›U›_›}›�›˜› ›ª›Û¯›Ï›á›ë›ó›ø›œÿ›3œ œ?œUœAœuœaœ�œ“œ�œ¥œ¥œ®œ¶œÌœåœ÷œ� -� -���4�6�;�F�\�\�\�`�l���›�¥�²�Ó�á�ë�í�í�žž(ž+žKžOžnžrž•ž™ž¸ž¼ž¼ž¼žžОÚžóžùžŸŸŸŸ Ÿ9ŸDŸRŸ\ŸuŸxŸ€ŸŒŸŽŸ–Ÿ™Ÿ²Ÿ´ŸÀŸŸÊŸП韠  " ' 9 H a r r } ˆ   ¬ Á Æ Ø ç ¡¡¡¡"¡*¡8¡?¡Q¡kfä†Û†Û Û©ÛÉÛÉÛÏÛ×ÛßÛçÛïÛõÛÜÜÜÜÜÜ Ü Ü&Ü+Ü+Ü1Ü6Ü6ÜNÜaÜgÜlÜlÜuܕܕܕܜܞܞܥܧܧܭܭܴܼܼܶܶÜÃÜÅÜÅÜËÜËÜÒÜÒÜÚÜàÜæÜîÜîÜîÜîÜúÜÝ -ÝÝÝ"Ý*Ý0ÝHÝWÝaÝdÝdÝnÝtÝzÝzÝ~݆Ý�Ý•Ý�Ý¡Ý§Ý¯Ý¶Ý¾ÝÆÝÊÝÐÝÛÝáÝîÝúÝÞÞ ÞÞÞ#Þ'Þ-Þ5Þ<ÞDÞLÞPÞVÞaÞfÞ|Þ�Þ’Þ•Þ;ßl`'"'"0"7"K"_"d"‚"‡"¥"§"Å"Ç"Þ"ò"û"ý"#!#R#m|2ÍББæ‘÷‘’’*’;’N’V’d’‚’�’“’ ’µ’µ’È’Ù’ß’ô’““$“)“1“9“?“W“j“u“y“ƒ“˜“ž“ “­“¯“Á“Á“ȓГâ“â“ñ“ÿ“”” ”$”0”4”@”D”P”T”T”g”z”€”„”Ž”’”¡”¥”´”¸”˔ϔϔϔϔԔæ”õ”••-•=•M•R•R•R•^•f•n•t•‰•‘•Ÿ•©•·•½•¿•¿•¿•¿•¿•¿•¿•¿•¿•˕ӕەá•ö•þ•– -–––––0–6–B–H–U–p–€–Œ–’–Ÿ–±–¿–Þ–8˜nÔ¼íHkHkZkkkvk�k—k©kÁkÆkÏkÖkãkêkøkÿkll l ll+lEl[lslxl�lˆl•l©lÄlËlÍlÐlÕlølm"mo$hm×&×&å&ù&''p¤b‡ÎXÎXâXéXYûXY Y'Y'YGY]YIYiY�Y{Y›Y Y§Y§Y¯Y¶YÁYÌYÔYÜYçYòYZýYZ%ZqFƒælælm m!m9mCmNmNmSm^mjmumƒm“m£mªm°mÅmÚmÚmîmömnn"n/n@nQn_nmntnzn�n¤n¤n¸nÅnÖnænìnýnýnoo"o/o?o¡or8¬¶öJöJúJÿJKK#K,K1K6K8Ks88B00“0—0œ0§0±0´0¸0À0t0†Ž>I>ITIgItIzI}I…IuÜtöö#.7GY_ek�p•¢¥­¿ÅÊí -!'7=IW\jƒ‘šª¬³¸Àßíù29CRX^dj€¡µÁØãòÿ+9P\aoŽ ·ÀÆÑÖÜóþ  /1?N``h‹–Êv`ÌàN˜N˜d˜†˜“˜—˜¦˜ŘɘϘâ˜ÿ˜™™2™ ™™Q™[™wT�Þ–à–à®à¶àÃàãàõàüàá áááá<á<áCáFáKáZá^á‹á�á”á”á›ážá£á¯á½áÁáÒáááåáçáöáúáâ â%â%â9â<âHâRâYââŠâŽâ“âÉâàâëâïâã ãããã ã ã:ã>ã@ã@ãKãOãiãmãmãmãqã”ãxˆßý–ã–ãªãÀãÀãÀãÂãÂãÉãËãËãÒãÔãÔãáãããããðã÷ãùãùãä äää'ä,ä,ä<äy°‰±nene†eŽe™eóeÞeÓe¾e§eùe fûe&f&f?f3flfqf}fˆf�fŠf©f¯f¶f×fÉf½fëfífggg:g:g:gFgz †*>´>´[´b´j´u´Œ´–´–´­´·´Ò´è´ö´ú´µ.µBµIµMµfµpµ�µŽµŽµ•µœµ¡µ¦µ«µ²µ¹µÓµÚµêµîµîµøµ¶¶¶#¶6¶I¶I¶O¶Z¶a¶i¶t¶{¶ƒ¶Ž¶•¶•¶ ¶¾¶Â¶Ú¶Ë¶õ¶õ¶û¶···'·.·2·4·F·F·F·X·`·†·”·”·˜·­·µ·Å·Ð·å·ê·ø·¸¸¸(¸,¸1¸9¸=¸L¸N¸]¸_¸n¸p¸¸†¸Š¸ž¸¦¸´¸»¸¿¸Ï¸Ú¸ß¸ý¸¹¹¹¹&¹4¹;¹?¹G¹[¹c¹n¹r¹r¹r¹}¹ˆ¹˜¹¤¹º¹Â¹Í¹Ü¹ä¹ï¹ô¹ü¹ººº"º'º9ºAºLºLºLºLºZºiº†º’ºšºªºººØºÜº »»ñº»»%»,»;»J»R»`»g»k»m»|»„»’»™»�»�»Ÿ»±»±»Ã»Ã»Ã»É»Õ»ç»ï»¼3¼A¼E¼c¼j¼q¼|¼’¼”¼›¼®¼¶¼Ä¼Ë¼Ï¼Ñ¼ä¼ì¼ú¼½½½½½½½-½5½C½N½R½R½W½_½c½r½t½ƒ½…½”½–½¥½¬½°½Ä½Ì½Ú½á½å½õ½¾¾#¾+¾9¾@¾D¾L¾Z¾a¾e¾m¾�¾‰¾”¾˜¾˜¾˜¾£¾ª¾¸¾Ò¾â¾í¾¿¿¿"¿.¿D¿L¿W¿f¿n¿y¿~¿†¿‘¿�¿¡¿¬¿±¿Ã¿Ë¿Ö¿Ö¿Ö¿Ö¿ê¿ú¿ÀÀ À4ÀEÀZÀgÀkÀyÀŽÀžÀµÀÎÀçÀéÀôÀüÀüÀÁ"Á3ÁJÁcÁqÁ|ÁˆÁ�Á’Á�Á¥Á¥Á¥Á¿ÁÍÁÛÁðÁÂÂ#ÂAÂHÂHÂXÂl††Š ¯ÂÊÂÕÂìÂôÂôÂÃÃ)ÃDÃMÃbÃ|ËØöÃÄÃÚÃóÃÄÄÄ3Ä3Ä?ÄWÄoÄxÄxÄxĄĕĭĶĶĽįÄÌÄØÄ>Å{ÌL»®ö®öÌö×öâö÷÷ -÷÷"÷(÷9÷H÷W÷d÷d÷j÷o÷t÷‡÷š÷¥÷©÷»÷È÷Ð÷Û÷×÷ò÷øøø ø&øø7ø.øAøCø_øKøgøuøuøwø“ø“øšø ø©ø°ø³øÕøéøÜøñø÷øùùùùùù ù ù+ù@ùIùIùIùIùeù|ù‚ù‡ù‡ùœù¢ù§ù§ù³ùÐùðùõùúùúùú#ú2úAúIúNúTúYúYú`úgúŠú§ú©úÆúÛúÛúáúáúîú÷ú÷úû$û/û4ûAûLûTû\ûlûƒûƒû“û“û¥û«ûÓûÜûÜûÞûåûêûêû÷ûüüüü$ü1üCüNü\üeüjü‘üšü¥üªü±ü¹üÌüáüæüíüúüýý(ý/ý5ý>ý>ýGýaýhýmý{ý‹ý™ý™ýŸý¦ý¯ý¯ýÂýÔý×ý×ýèýðýøýþ!þ(þ5þ7þ>þRþaþaþaþˆþˆþˆþ•þ•þªþµþÇþÔþßþíþøþÿÿÿ(ÿ;ÿ=ÿLÿaÿcÿqÿ†ÿ†ÿŒÿ•ÿ•ÿ¢ÿ¨ÿºÿºÿÇÿÊÿÕÿçÿîÿùÿþÿ 24Ncccelrƒ‘££©°¹¾ßèèî÷÷#&,5=HZ`kkx{�Š’�¯µÀÀÍÐÖßá+1<NT\\\\gà|”�¾g3g3{33ˆ3‹3”3�3¯3¯3Ø3Ü3á3ä3í3ý34444 4'4/474>4N4N4Z4}Œ >VV*V1VaVMVmVrVyVyV™V¯V›V»VëV×V÷VüVWW WWW%W0WCW;W[WcW~À-ee.e>eHeHeReRe\ene{e~e€e‰e–e–e¤e¸e¸eÜeéeéeùeff)f6f6fLfof…f¨f±f¾f¾fáfëfëfgQgWgWgWgig¸ºä�Š�Š¨ŠªŠ¶ŠºŠÇŠÊŠäŠäŠäŠêŠîŠöŠ‹‹!‹#‹#‹,‹.‹.‹7‹9‹9‹B‹D‹D‹M‹M‹V‹\‹_‹i‹z‹€‹Œ‹Œ‹ô‹€œZ}.*.*L*]*€*‡* *˜*¸*Ø*Ä*ä*õ*ú*++3+[+b+{+s+“+³+Ÿ+¿+Ð+æ+Ò+þ+ , ,#,#,-,�œX{Î-Î-Ú-ê-õ- .O.\.m..†.�.¡.¨.¶.Î.Ý.ê.í./ //%/1/=/A/H/~/‚x¬h¬h¬~¬…¬Œ¬«¬º¬É¬Ø¬ç¬ö¬­­­ ­ ­.­3­N­h­h­~­�­”­¢­©­®­®­µ­Ç­Ð­Ò­à­ò­ò­ò­®®!®,®9®>®N®S®c®o®t®�®†®–®›®«®­®½®¿®Ï®Ñ®â®ë®ë®í®ý®¯¯¯/¯A¯S¯e¯u¯u¯u¯x¯‹¯ƒ\åøø‹ø‹ŒŒ Œ-ŒBŒIŒSŒaŒdŒfŒpŒ‚Œ‚Œ‰Œ¿Œ„0ÎÖÎÎæ(ðî<D…`·Ë>—>—T—v—ƒ—�—œ—µ—¹—¿—Ò—ï—ñ—ñ—"˜˜ñ—A˜K˜†L4CF,F,T,f,l,t,†,Œ,•,§,­,°,ì,‡(–œ7373E3T3X3[3a3ˆ\DWî,î,ü,---.-4-=-O-U-^-p-v-y-Ç-‰, ÒÒÒ#Ò+Ò0Ò6ÒŠ¬!H +   - 4 : I T _ e q u u � Š � � ˜ š ° · ½ Å РÛ á ë î ò ò ú ¡¡¡¡¡¡!¡!¡,¡.¡L¡S¡^¡i¡l¡r¡w¡w¡‚¡†¡†¡’¡›¡ž¡ž¡©¡«¡Á¡È¡ΡÝ¡è¡ó¡ù¡¢ ¢ ¢¢¢!¢!¢,¢.¢D¢K¢Q¢Y¢d¢o¢u¢¢‚¢†¢†¢Ž¢•¢˜¢š¢¥¢©¢²¢µ¢µ¢À¢¢à¢ç¢ò¢ý¢££ £ ££!£!£-£6£9£9£D£F£\£c£i£{£†£‘£—£œ£œ£§£¬£¬£·£¼£¼£Ç£Ê£ΣÕ£Ú£ߣä£ä£ø£ý£ý£ +¤¤ ¤'¤+¤?¤F¤J¤J¤W¤c¤k¤q¤�¤…¤–¤¨¤³¤·¤·¤Ĥ̤Ô¤Ú¤Ú¤Ú¤Ú¤Ú¤ܤܤê¤ñ¤þ¤ +¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥1¥9¥E¥E¥f¥u¥�¥�¥›¥¨¥¨¥Ë¥Ø¥ã¥ì¥õ¥¦¦¦¦¦¦&¦D¦P¦P¦¨x¿ÙÏ3Ï3á3ã3ç3ð3ü3444L4P4U4a4t4~4�4Œ4�4—4¡4lcz¶x¶xÌxÛxàxõxâxyyyy)yy8y>yWypy‰y¢y»yÅy„žÎhÎhìhôhúhii +i iiii,i0i6i6iKiUiUi]ivi™iºi¿iàiåiñiüijjj(j.j3j9j;jAjDjJjOjRjZjcjsj–j¤j¼jÁjÅjêjýjkk(k-k1kVkfk‰kœk¡k§k¬k¯k±k·k½kÃkÈkÎkÖkÖkàkék÷klll=lMlplƒlˆl˜l»lÉlálælêlm"m"m=m=m=mKmcmemememsm‹m�m�m›m³m³mÅmÅmÎmÛmñmn+n3n>nQnUnUnUn\nbn|n„n�nªn¬n²nÌnÔnßnínønønoH…“h„h„„•„¥„¬„Äބð„ô„7…L“¢ÖzÖzêz÷z {ùz{{7{P{[{f{n{4IRÞÕÞÕçÕçÕêÕøÕÖ ÖÖì=öö>öAö_övö‡ö‡ö¢ö¨ö­ö­öÈöÎöÓöÓöÜöêö÷ ÷$÷+÷1÷3÷P÷`÷e÷l÷r÷t÷t÷‡÷�÷�÷�÷�÷’÷®÷¾÷Ð÷Õ÷Õ÷Õ÷Ü÷ã÷ê÷ÿ÷ø"ø"ø4øÌL»0¤0¤J¤U¤`¤i¤q¤t¤{¤¤ˆ¤›¤Ÿ¤¥¤³¤Ð¤Ý¤ì¤ñ¤ý¤¥ ¥¥¥¥'¥ ¥7¥@¥Q¥O¥G¥_¥h¥n¥n¥|¥¥“¥œ¥¥¥¬¥°¥µ¥Ì¥ä¥í¥û¥¦#¦#¦;¦L¦L¦S¦l¦x¦€¦“¦š¦®¦·¦¾¦Â¦Í¦Ò¦Ù¦ö¦#§*§.§0§;§G§K§`§b§s§}§ˆ§’§¡§°§É§É§Ì§Ô§Ù§[¨Xs…&L&LCLTLaLkL‚LŸLºLÀLÉL×LÝLàLìLŒ ````p`”`”`¢`¢`¢`¢`«`«`²`Í`â`ê`ê`õ`õ`aaa!a'a'a?a?aEaka(kq‰‰‰*‰:‰A‰G‰ @O[¶è¶èÄèÌèÓèòèÿèÿèéé +é $/4FßFßSßhßmßsß!$).ßß#ß8ß=ßCß"$#(æÞæÞõÞ ßßß#€ðLWWaq‡�™´¹Éßçñ  ' 1 ; E O Y c m w � ‹ • Ÿ © ¿ É Ó Ý ç ñ û  % / 9 O Y c m w � ‹ • Ÿ © ³ ½ Ç Ñ Û å ï ù ! !!!!+!5!?!I!S!]!g!q!{!‰!$¤Cp›p›†›�›¢›³›Å›Ç›Î›Ô›ä›ï›ù›œœœ œ2œ8œHœRœ\œcœnœƒœ‹œ‹œ¡œ¡œ¡œµœ%$5:vßv߄ߙߞߤß&¤Di¸œ¸œÎœÕœêœûœ ����,�7�A�L�c�f�h�z���‘�›�¥�¬�·�Ë�Ó�Ó�é�é�é�þ�'(&,w/w/…/Œ/–/œ/¢/(0_gVKVKlKKŽK”K—KŸK)  ßö"ö"# #&#3#:#V#\#\#\#i#k#v#€#‡#–#¡#§#±#»#Ì#Ì#×#á#á#ó#ù# $$$$$<$B$T$g$m$p$v$v$x$~$„$†$†$†$—$¡$¦$¦$»$Å$Å$Ù$â$è$î$% %%'%+%+%3%9%?%I%P%W%`%r%r%—%›%¡%§%¹%Ì%Ò%Ö%Ü%â%è%è%ê%î%ô%ú%&&&&&0&A&A&X&e&i&q&ƒ&£&£&©&¬&°&¶&¶&È&Ù&î&' +'' '0'4':'S'U'['h'j'v'”'š'¥'È'Ó'Ù'ß'å'î'ô'(( (#(4(8(>(W(Y(_(l(n(z(˜(ž(¤(ª(³(¹(Ö(É(ð(ù(ÿ(ÿ())) )*)?)D)D)D)a)c)€)‚)Ÿ)¥)­)±)¸)Û)á)ç)ó) +***"*'*'*.*2*<*J*L*T*Y*a*l*r*�*†*Œ*‘*™*ž*­*È*Ø*å*ô*++.+.+5+J+O+X+e+j+p+u+u+|+€+Š+˜+š+¢+¦+ª+´+À+Ç+Ë+Ó+Û+ã+õ+,,,,,,?,?,M,S,X,\,a,a,a,a,g,i,i,Œ,’,˜,Ÿ,µ,·,·,·,Â,Â,Â,Ç,ð-*4)r¶Ç¶ÇÐÇÔÇìÇôÇüÇÈ +ÈÈÈ+È3È8È;ÈFÈQÈYÈdÈoÈqȇȎȕȠȫȭȸÈÃÈÅÈÑÈÚÈÚÈðÈûÈÉÉ"É3É9ÉBÉTÉZÉZÉbÉfÉqÉvɈɓɗɥɧɫɺɺɺÉËÉËÉÐÉâÉèÉVÊ+Ô@>ä>äTä[ä^ä‚ä‚äŸä²äÅäØäÝäÝäûä åå/å7å7å9å9å9åLåNåNåNåUåhå{å{å{åŽå™å¬åÂåÇåËåÒåçåúåæææ)æ,LAP/$/$=$N$Z$u$z$š$œ$·$Ò$Ò$Ú$á$%-P~Ž˜‰˜‰¦‰³‰Á‰Ó‰Þ‰ì‰ù‰ŠŠ$Š2Š8Š>Š.4 +—5—5¥5±5Â5Ô5Ý5ç5í5/|ºU. . P W f q — —   ¢ ¢ © Ð × × æ õ  + + +( +0 +A +J +h +s +u +Ž +” +Ÿ +¯ +Á +Ê +Õ +Ú +à +ç +  " + + 2 A X X g p „ ‹ ’ — ¢ ¨ ° Ö ß æ ë ö   % * 2 > P P g n v † ˜ ž § § ¶ ¼ Ð Ù é ø  +  # 6 > R p ‡ ‹ — ® Ê Ü â í ù  ''9=I`|Ž”Ÿ«»ËÝããèêêïïþ + +‡0ŒÄã^Ù^Ùzنيَٕٜ٫ٶټÙÁÙÃÙÏÙÖÙÞÙäÙêÙîÙîÙýÙÚ ÚÚÚÚÚ&Ú18 ¯.¯.½.Ã.Ï.Ú.ë.õ.ü./2@x„êê$ê/ê6êUêbêbêeêgêmê3ÌS¶¶Üïöý + //AL`hqy~„šª¿ÄÝõùùþ%-6>CJ\l�ƒœ´¸¸ÌÔÝåêð+0Iaexxx}ŸÁÌÒê&.7?AGYi~€™±µµÉÑÚâçî).G_cvvv{�¿ÊÐè '9I`wŽ¥¥¸ÓÓÓô    % 2 L Z a t v • ¤ � ¼ Ì æ æ ÿ 4D{ˆ®®¾ÒÛáóó÷ú5\Ob(ˆ(ˆHˆWˆ`ˆiˆmˆqˆ}ˆ‚ˆ‡ˆ‡ˆ˜ˆœˆ¤ˆ¼ˆ¿ˆËˆ60üæâæâïâôâýâãã ã7lØvv˜Ÿ¦±ÇÇÙòòý 9H_p„ˆ�¢º¿ÇËöÐü*rL�Ÿª°ÄÜáõý,<RTm…‰‰ž¶»ÃÇïÉõ  /5?FYtt� ®®ÂÐÞó *92Qahy›�Åóóóþ<ALR]™†¨¿Ðëÿ;p]�¨®ÂÚßóû *:PRkƒ‡‡©ÂÖÚéééü &AAA]m{{��«ÉÜá'7Hffˆˆ�²²²Ò8DmzVVfzƒ‰››Ÿ¢ª9l{’ÆyÆyÜyëyðyzòyzzz$z9z&zHzNzgz€z™z²zËzÕz:<‰”'06:E;”)îìîìöìúìííí)í4íFíQí\íkí|íƒíœí í±í±í»íÂíÕíÞíìíîî!î>î<d(=X‡X‡d‡x‡{‡�‡—‡›‡¥‡¯‡·‡º‡À‡=$uºHEHElEoEsE€E‰E”E¤E¬E¶EÞEÞEîEóEóEFFFFFF-F2F2FBFGFGFWF\F\FlFqFqF�F†F†F†F‰F‰F¢F°FÇFÚFÚFÜFÜFëFñFöFöFüF G GG'G4GLGTGZGZGnGnGwGzG8H>Ð q†¨†¨£¨«¨®¨¼¨ʨߨ訩©.©9©J©N©`©c©n©w©ƒ©–©Ç©¼©¢©שªª=ªRªvªŠªŒª­ª“ªȪ˪ЪÓªÓªÚªñªøª« +««&«9«9«M«Q«~«~«–«›«›«««³«Ä«Ϋß«é«ü«¬ ¬ ¬¬%¬6¬@¬Q¬[¬n¬z¬¬¬¬¡¬²¬¼¬Á¬άã¬ã¬è¬ò¬­­ ­­­­ ­/­4­:­?­?­E­K­P­P­X­k­w­„­�­Ÿ­§­­­¶­Í­á­ò­ÿ­®®/®F®S®[®j®r®x®�®Š®Š®�®�®�®�®�®›®›®›®³®É®Ñ®ì®ý® +¯ ¯¯¯¯¯)¯7¯<¯<¯C¯Q¯V¯n¯z¯�¯›¯¡¯©¯¯¯¸¯Þ¯ê¯ð¯ö¯° °°B°S°`°b°p°p°u°u°|°а�°¢°®°º°À°ưϰÔ°Ô°Ô°Ô°Ô°ì°ñ°ñ°ñ°ñ°ñ°±±±±±±±±±±±0±8±S±d±q±s±€±Œ±‘±‘±‘±š±´±À±űç±ó±ó±ø±ø±ø±ø±ø±ø±ø±ø± ²²²²#².²3²3²>²P²h²}²ž²¿²ʲÛ²à²à²à²é² ³³%³+³C³S³[³c³n³˜³¡³§³¿³ϳϳϳϳϳñ³*´3´9´?´D´M´V´[´[´[´[´j´~´œ´¬´²´·´·´Ê´Þ´µµµµ"µ"µ1µEµcµsµyµ~µ~µ‘µ¥µ˵Þµäµäµéµéµéµ¶¶ ¶:¶K¶X¶Z¶i¶k¶k¶k¶k¶k¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶޶�¶¨¶ª¶ª¶³¶µ¶µ¶ɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶ˶˶â¶ê¶ö¶ö¶ú¶ÿ¶·+·C·R·^·t·Ž·‘·›·§·Í·í· ¸1¸3¸F¸t¸L¸�¸�¸’¸¢¸ª¸ŸÖ¸Ù¸ó¸¹ ¹%¹%¹P¹S¹b¹v¹—¹«¹ǹ³¹ã¹ø¹ºKºIº>º3º$ºYºYºYº\ºaºdº~ºŒºººܺܺ» +»»-»N»b»~»j»š»š»¸»í»ë»à»Õ»Æ»û»û»û»þ»¼¼ +¼¼;¼G¼ ¿?”£Ä¶Ä¶ÄÌÄÐÄÛÄâÄíÄÅÅ ÅÅ$Å1Å=ÅJÅRÅcÅcÅlÅqÅyʼnŗŦűÅÄÅÄÅ×Å×ÅíÅÆÆ-Æ/Æ/Æ9ÆAÆAÆKÆSÆSÆSÆdÆdÆdÆjÆrÆxÆ}Æ}ƃƋÆ�ƕƚƚưÆÀÆÊÆÙÆÞÆæÆæÆëÆëÆòÆÇÇ"Ç*Ç0Ç?ÇDÇLÇRÇRÇ^ÇiÇ�ǬǶǾÇÄÇÙÇßÇäÇäÇäÇäÇäÇäÇäÇäÇäÇïÇýÇ ÈÈÈ*È/È<ÈDÈIÈIÈIÈQÈZÈcÈpÈxÈ„È�ÈÃÈËÈÚÈäÈþÈÉ É ÉÉ#É+É@ÉHÉPÉeÉgÉrÉzÉ�É�ɗɨɰɷɽÉÃÉÇÉÐÉÕÉùÉÊ Ê"Ê.Ê3Ê?ÊJÊOÊOÊOÊeʂʇÊ�ʠʨʰÊÅÊÊÊÕÊÝÊòÊ÷Ê÷ÊË'Ë/ËDËPËUËaËlËqËqËqËqËqËqË|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|ˇ˖ˤ˴˺ËÂËÑËÖËÞËæËèËðËÿËÌ ÌÌÌ4Ì<ÌEÌMÌUÌZÌ_ÌqÌ¥Ì­Ì¼ÌÆÌàÌèÌíÌíÌíÌöÌÿÌÍ ÍÍ,Í.Í@ÍRÍRÍRÍ]ÍbÍ̈́̈́Í�Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í�Í©ÍÁÍÔÍÜÍëÍðÍøÍÿÍ ÎÎÎ&Î-Î2Î2Î:ÎBÎ`ÎhÎkÎmÎ}···ΉΞίβενÎÂÎÂÎËÎÐÎØÎßÎìÎÏÏÏ%ÏBÏ[ÏpυόόϑϑϑϑϑϑϑϙϤϰϿÏÄÏÄÏÌÏÔÏáÏæÏæÏæÏêÏïÏïÏÿÏÐÐÐÐÐÐ'Ð,ÐCÐRÐZÐkÐsЖМУХЫвввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввддÐÏÐÙÐçÐçÐìÐ÷ÐþÐÑ'Ñ'Ñ'Ñ+Ñ6ÑTÑbÑZÓ@ôz^Ó^ÓtÓӆӑӜӳӾÓÅÓÕÓèÓòÓòÓÔ(Ô/Ô8Ô?ÔBÔNÔWÔ^ÔaÔfÔqÔ{Ô�Ô“Ô©Ô°Ô¸ÔÎÔÕÔÕÔÕÔÚÔßÔéÔìÔñÔûÔþÔÕÕ Õ0Õ3Õ8ÕHÕKÕOÕXÕ`ÕrÕzÕzÕzÕ…Õ�Õ¡Õ§Õ½ÕÄÕÌÕÓÕèÕùÕùÕÖÖÖÖ +ÖÖÖÖ&Ö)ÖAÖFÖKÖ[Ö^ÖcÖsÖvÖzÖƒÖ‹Ö�Ö¥Ö¥Ö¥Ö³Ö»Ö»Ö¾ÖÉÖçÖõÖ>×A|`»NÚNÚfÚvÚ}Ú„Ú�Ú¢Ú¥Ú­Ú´Ú·ÚÇÚÕÚàÚëÚîÚùÚÛÛ%Û0Û;ÛFÛ]ÛiÛ†ÛŽÛ—ÛŸÛ¬ÛÊÛÍÛÓÛØÛçÛíÛõÛÜ +ÜÜÜÜ,Ü;ÜCÜRÜZÜ}܃܉܋ܑܗܗܗܼÜÁÜÞÜáÜáÜèÜõÜùÜÝÝ*Ý:ÝMÝiÝ~݆Ý�ݯÝÃÝÃÝ7ÞB Æ.Æ.Ð.Ø.Ý.CÉÆ&W&WCWNWaWNW{W‰W‰W™W¢W©W­W¶W¶W¾WÂWâWðWüWX X1X1XDXOXUX\XaXaXtXXŠX‘X›X¨X¨XºX¿X¿XÏXÔXÔXÔXçXìXÿXYY#Y7Y7YcLcQcZc]cbcpczc}c‡cO¨!Gpapa€a‰aœa©aµaÁaÍaÙaðaðaÿa +bbb#b:bQbVbhbwbƒb•b•bžbÁbÁbÃbÖbØbòbþbccPhî„nn)n4nDn�n”n¨n¯n·n¿nÈnÐnØnÚnânênñnøno/o8o8omo—o oÂoÜoùo#p/pQpSpZpapap„p pÇpãp +q&qMqiq�q¬qÓqïqrr%r2r7r7rFrSrXrXr_rjr|r•r®rÇrÉrÉrÉrÐrÐrÝrârârârórss)seslslslsts‘sŸs½sÆsÏsÜsêst t t t3tAt]t{t{t{t†t‰t¸tºtÑt×tètñtótuuuuuuBuDuKu\ueuguuuwu…u‡u•u•uµuµuµuµuÕu v/v7v;vCvGvUvcvevmvqvuv}v‹v™v™v³v¾vÔvèvw!w,w6w=wVwbwiw‚w‚w”w™w›w¡w²wÃwÒwÙwêwówõwxxxx#x#x#xGxGxfxmxtxwxƒx†x”x˜x¦xªx¸x¼x¼xÕxÜxáxïxy y$yDyWyfyhywyyyˆy’y’y y©y¿yÆyëyðyzIzNz\z^zlzuz�z‘z“zšz«z´z¶zÄzÆzÔzÖzäzäz{{{{{#{#{#{.{J{o{ˆ{�{�{�{¯{´{´{´{Ô{Ù{Ù{Ù{ø{ý{ý{||||||||| |>|T|y|•|©|®|®|É|Ö|Ø|ç|ð| +} } }} }2}4}4}<}7}w}w}w}–}–}–}·}¼}¼}¼}Þ}ã}ã}ã}~~~~'~,~,~G~U~W~f~o~‰~‹~‹~�~‹~±~³~³~»~¶~ö~ö~ö~++Um…�¦ºÓë€!€#€4€Q€h€o€g„Q| (îåîå ææ0æJæbæmæ‰æ‰æ‰æ–æ±æ³æ³æ³æÀæÛæÝæÝæëæøæçç#ç5çRæd&Ú&Ú@ÚIÚiÚiÚoÚwÚÚ‡Ú•Ú›Ú¨Ú¨ÚÂÚÇÚÇÚÍÚÒÚÒÚØÚÝÚÝÚãÚèÚèÚÛÛÛÛÛ'ÛGÛGÛGÛNÛPÛPÛWÛYÛYÛ_Û_ÛfÛhÛhÛnÛnÛuÛwÛwÛ}Û}ۄۄیےۘ۠۠۠۠۬۴ۼÛÄÛÌÛÚÛèÛîÛÜÜ Ü"Ü"Ü,Ü5Ü;Ü;Ü?ÜGÜQÜUÜcÜkÜqÜy܃ܑܙÜ�ܣܮܴÜÅÜÑÜ×ÜßÜãÜíÜûÜÝÝ ÝÝ Ý-Ý5Ý9Ý?ÝJÝOÝh݂݇݊Ý0ÞSL”£8…8…Q…S…Z…p…€…†…ž…¶…¹…Ë…†TÔ*[>î>îRîgîvîzîˆî‘î î î¯îºîÅîÐî×îçîþîïï ï$ï7ï7ïMïOïYï}ïˆïŠï£ï§ïµïºïºïÁïÐïØïëïUðU$îUîUVV#V+VVPÍÝ~?~?Ÿ?Œ?Á?®?Ð?ß?ç?ò?ô?ÿ? +@ +@,@2@W,¾Ô¾ÔÇÔÍÔÕÔÞÔçÔìÔX …ÆŠÆŠçŠüŠ‹‹2‹<‹K‹e‹r‹r‹|‹|‹ƒ‹–‹”‹¤‹¤‹¯‹¹‹¿‹Å‹È‹Ö‹Ý‹õ‹ü‹ÿ‹ŒŒ!Œ,ŒFŒaŒuŒ{Œ�ŒˆŒ¦ŒŽŒ¯ŒµŒ»ŒÃŒãŒËŒìŒòŒøŒ���%� �.�4�:�B�b�J�k�q�w���•�•�•�•� �ª�³�Ó�ß�í�ò�ŽŽŽŽ$Ž,Ž4Ž=ŽIŽ]ŽjŽyŽˆŽ¢Ž§Ž§Ž²ŽºŽÇŽÒŽߎëŽ��)�4�9�9�D�Z�o�{�‰�Ž�œ�°�°�»�°�Ó�Ø�Ø�ç�ì�ì�û������'�,�,�?�N�S�S�f�u�z�ˆ�z�œ�¡�¯�¡�Ã�È�Ö�È�ê�ï�ý�ï�‘‘‘3‘8‘Z‘_‘m‘_‘�‘†‘†‘£‘¨‘ʑϑݑϑñ‘ö‘ö‘’’:’?’M’?’a’f’f’ƒ’ˆ’ª’¯’½’¯’Ñ’Ö’Ö’ñ’ö’ö’“““1“6“6“Q“V“V“q“v“v“‘“–“–“±“¶“¶“ѓ֓֓ç“ì“ì“ý“””””.”3”3”?”X”]”ƒ”Š”””™”ª”´”ɔԔٔê”õ”ý”••• +•••%•%•8•=•=•=•A•W•`•`•†•‹•‹•“•§•°•Ê•וâ•í•ø• +–– –$–$–$–5–R–]–g–r–w–‚–Š–�–�–š–¢–«–¶–Æ–Þ–ö– +————-—7—B—c—o—}—‚—�—”—™—™—©—´—¼—Á—Ì—Ù—å—ÿ—˜#˜.˜3˜>˜F˜K˜V˜c˜o˜‰˜›˜­˜­˜­˜­˜²˜·˜·˜ØÔ˜Ô˜ù˜û˜™™"™6™@™B™N™V™s™„™Ž™™™¼™Í™Þ™ï™ú™š"š'š'š2š7š7š?šJšOšOšWšbšgšgšoš�šyšwš¨š­š­šµšÖš¿š½šîšóš›óš ›$›$›1›6›6›>›C›C›U›g›l›l›€›l›˜›�›�›¥›ª›ª›½›››Õ›Ú›Ú›ô›œ œ œ#œ3œ8œ8œRœbœgœgœ�œ‘œ–œ­œ–œÅœÊœÊœÕœÚœ��òœÚœ.�3�o�]�K�3�‡�Œ�Œ�›�«�°�°�¿�Ï�Ô�Ô�ã�ñ�ö�ž žö�6ž;žcžQž;ž{ž€ž¨ž–ž€žÀžÅžÅžâžÌž ŸŸ!Ÿ!Ÿ<Ÿ(ŸfŸvŸ{Ÿ{Ÿ‡ŸŒŸŒŸ˜Ÿ�Ÿ�Ÿ°ŸÀŸÅŸÅŸØŸèŸíŸíŸ    ( 8 = = E J J R W W _ d d l q q „ ‰ ‰ œ ¡ ï Ý Ë ¹ ¡ ü ¡O¡=¡+¡¡¡\¡a¡a¡p¡‹¡�¡�¡¡¡¼¡Á¡Á¡Ò¡à¡å¡å¡í¡ò¡ò¡ú¡ÿ¡ÿ¡¢ ¢ ¢D¢2¢ ¢¢c¢~¢ƒ¢ƒ¢»¢©¢—¢Š¢Ú¢õ¢ú¢/£££ú¢G£L£�£o£d£L£™£ž£¸£¢£ž£УÕ£ò£Ü£Õ£ +¤¤¤¤4¤D¤U¤U¤z¤|¤’¤˜¤˜¤µ¤¤ó¤$¥¥G¥O¥O¥O¥[¥`¥`¥s¥~¥ˆ¥�¥˜¥¢¥§¥§¥Á¥Æ¥Æ¥Î¥Ó¥ç¥Ó¥ö¥¦¦¦¦)¦4¦9¦9¦D¦U¦Z¦Z¦e¦p¦u¦u¦†¦‹¦‹¦œ¦¡¦¡¦»¦Ʀ˦Ö¦˦å¦ê¦þ¦ê¦ §§§§,§1§E§1§T§Y§Y§m§Y§|§|§|§�§�§�§ §¥§¥§±§¥§ħɧɧÕ§ɧè§í§í§ù§í§ ¨¨%¨¨4¨@¨K¨V¨[¨o¨[¨~¨Ѝ•¨ ¨¥¨¹¨¥¨ШȨÙ¨Þ¨Þ¨æ¨ë¨ë¨ô¨ù¨ù¨©©©©©© ©%©%©0©5©5©@©E©E©P©U©U©`©e©e©p©u©u©€©…©™©…©¨©³©¾©É©ΩΩØ©Ý©Ý©ç©ì©ì©ö©û©û©ª +ª +ªªªª$ª)ª)ª6ª;ª;ª;ª;ª;ªCªHªHªPªUªUª]ªbªbªjªoªoªwª|ª�ª|ªŸª°ªµªµª¼ªǪçªìª« «&««5«@«K«P«P«W«b«‚«‡«�«¨«Á«­«ЫÛ«æ«ë«ë«ò«ý«¬"¬8¬C¬\¬H¬k¬v¬�¬†¬†¬¡¬�¬°¬ЬÕ¬ë¬ö¬­û¬2­­A­L­Q­Q­l­X­{­›­ ­¶­Á­Ú­Æ­ý­é­ ®®®®7®#®F®f®k®�®Œ®¥®‘®È®´®×®â®ç®ç®ö®û®û® +¯¯¯¯¯¯¯¯$¯&¯&¯0¯7¯Z¯\¯\¯f¯f¯f¯f¯f¯h¯h¯¯†¯‘¯‘¯œ¯¢¯©¯´¯¿¯ʯį寰÷¯°°(°"°N°C°f°f°f°o°v°‰°ްœ°¯°¯°˰Ö°ê°±±±(±8±M±_±o±o±—±ž±­±¿±¿±ñȱϱß±þ±þ±²² ²%²%²)²4²@²N²{²„²•²£²Ö²â²ç²ý²³³+³0³>³Z³…³®³±³Á³óódzæ³ñ³ñ³ô³´-´M´M´M´P´y¶Y, îÔîÔüÔÕÕÕÕÕZ`FZÖ‚Ö‚ì‚ú‚ƒƒƒ-ƒ1ƒ7ƒMƒjƒlƒlƒ�ƒ‹ƒlƒ¼ƒƃ[8 +~U~UŸUŒU®U¹UÄUÏUÚUæUìU\\’¸ž¸žÆžÈžÓžÛžæžñžüžþžŸŸ&Ÿ2Ÿ;Ÿ>ŸmŸ]è®dÞëÞë ìì ìKìKìVìcì�ì‰ì¶ì»ìäìí í&í*íMísíxí¡í¾íäíûíîîî&î+î<îDîcîiîmî†îŽî­î²îÃîËîêîïî÷îýîïïï ï$ï=ïBïNïSï^ïdïvïï“ïžïÃïôïð"ð"ð"ð8ðGðTðtðtð‹ð�ð�ð§ð©ð©ð½ð¿ð¿ðÖðØðØðïðñðñðñññññ-ñ-ñañuñuñˆñ�ñ�ñ�ñ�ñ¼ñÒñîñîñîñûñòòòò!ò8ò:ò:òGò^ò^òsòuòŽòªòªòªò®ò°ò°ò°òµò·ò·ò¼ò¼òÆòËòËòçòçòçòïòñòñòñòùòûòûòóóó&ó(óCó^ó^ó^ó^ó^óqóˆó�ó�óÜó^\ +ÎJÎJàJöJK K6KIKTKiKVKxK€K‹K¡K—K¹K¿K_øA66$6'6.656<6@6B6I6P6T6X6k6“6®6›6Æ6Ë6ï6ï6û677L7Q7~7†7‹7”7 7¨7¯7Ñ7×7ù7û78)8K8Q8X8X8^8a8e8v8™8«8`$nÞnÞ}Þ˜Þ˜ÞžÞa|\wéé(éTéTéséƒé…é…é…é…éŒé”é¯éÈéÊéÊéÊéÒéíéïéïéùéùéêb”"33@3J3V3[3k3q3†3š3ª3¸3Æ3Ý3å3ï3þ3444444 4/494B4J4M4_4côÍî2î23$3'30363M3d3{3†3¼3Ü3á3æ3ñ3 44*4@4V4m4r4„4‰4Œ4¬4Ì4Ô4Ü4á45!5)51535S5[5`5e5p5p5{5{5‡5‡5™5Ù5ò5ò56dd¤¹ðŠðŠ‹‹‹‹!‹/‹B‹N‹h‹u‹u‹x‹†‹–‹°‹´‹¼‹e¸ù—*—*­*²*Æ*õ*+++"+"+3+:+K+R+[+r+r+ˆ+ˆ+ž+ž+´+´+Ê+Ê+à+à+ö+ö+ , ,",",9,9,P,P,g,g,~,~,•,•,¬,¬,Ã,Ã,Ú,Ú,ò,ú,--!-2-5-7-N-U-a.f¬÷ÖÖðöý --DKNP\mmpxŽ‘Ÿ¢¥¬°¸ÆØëî=g(ÉÏ}}-}}<}N}V}hCöNöNO.O3O;OCOKOXO^OgOmOrOzO–OœOžO O­O­OºO¯OËOÑOÓOÕOâOâOâOçOðOøOP P PPP#P0P6PAPHPXPcPrP“PšP¥P®P¿PÃPËPËPßPïP÷PúP`Qi8-7§/§/»/¿/Ä/Ï/Ú/Ý/á/é/jˆ[ùƃƃàƒûƒ„„„„4„9„D„b„L„q„„„–„Ÿ„§„±„Ï„á„ê„ò„ü„……&…8…B…J…b…L…‡…q…–…¨…²…º…º…Ã…Ë…á…ú… †† † †&†+†I†K†P†[†q†q†q†u†�†¢†¬†¶†¿†à†ê†ô†ö†ö†‡!‡/‡2‡K‡O‡j‡n‡�‡‘‡¬‡°‡°‡°‡¶‡ć·ç‡í‡ø‡ˆˆˆˆ-ˆ8ˆFˆPˆiˆlˆtˆ€ˆ‚ˆŠˆ�ˆ¦ˆ¨ˆ´ˆ¶ˆ¾ˆĈ݈õˆ‰‰‰0‰@‰Y‰j‰j‰u‰€‰˜‰¤‰¹‰¾‰Ó‰ã‰ü‰ Š ŠŠŠ&Š4Š;ŠMŠkeã6Þ6ÞPÞYÞyÞyÞÞ‡Þ�Þ—Þ¥Þ«Þ¸Þ¸ÞÆÞËÞËÞÑÞÖÞÖÞÜÞáÞáÞçÞìÞìÞßßß"ß"ß+ßKßKßKßRßTßTß[ß]ß]ßcßcßjßlßlßrßrßyß{ß{ß�ß�߈߈ß�ߖߜߤߤߤߤ߰߸ßÀßÈßÐßÞßìßòß +àà#à&à&à0à9à?à?àCàKàUàcàkàoàuà}à‡à•à�à¡à§à²à¸àÉàÕàÛàãàçàñàÿàá ááá#á1á9á=áCáNáSálá†á‹áŽá4âl`�!�!˜!Ÿ!³!Ç!Ì!ê!ï! ""-"/"F"Z"c"e"y"‰"º"m�2Ò“““/“@“Q“b“s“†“Ž“œ“º“œ˓ؓí“í“”””,”G”G”S”[”c”i”~”†”Š”’” ”¦”«”«”À”Քܔä”ì”ò”•(•4•8•B•[•a•c•p•r•„•„•‹•“•¥•¥•´••Օٕã•ç•ó•÷•–––––-–@–F–J–T–X–g–k–z–~–‘–•–•–•–•–¬–º–Ç–Ï–æ–ö–——%—2—A—I—V—q—�—‘—–—–—–—–—£—²—º—À—Õ—ä—ù— +˜˜ ˜ ˜ ˜2˜8˜D˜J˜W˜r˜‚˜Ž˜”˜¡˜³˜Á˜ã˜hšnÔ¼í l l2lClNlYlol�l™lžl­l´lÁlÈlÖlÝlßlâlçlélïl m#m9mQmVmemlmym�m®mµm·mºm¿mâmn no$hm?&?&M&a&h&‚&pxKe–M–M¾MªMÍMèMÔM÷MüMN NNN(N0N8NCNNNdNYN|N„NqFƒþpþpq!q9qQq[qfqfqkqvq‚q�q›q«q»qÂqÈqÝqòqòqrrr+r:rGrXrirwr…rŒr’r§r¼r¼rÐrÝrîrþrssss,s=sJsZs¼sr8«µ¦N¦NªN¯N´NÅNÓNÜNáNæNèNs88Bï/ï/00 00!0$0(000t0†ŽîLîLMM$M*M-M5MuÜtFFhs~‡—©¯µ»ÑÀåòõý=PTZqw‡�™§¬ºÓáêúü/=Ic‚‰“¢¨®´ºÐñ(3BP_l|Š¡­²ÀÜî $*ALY``n}�œ®®¶Ùäv`1EÖ�Ö�ì�þ�‚ ‚‚7‚;‚A‚W‚t‚v‚v‚§‚•‚v‚Æ‚ЂwD‹ØŽâŽâ â¨â³â¹â¿âÃâÇâóâóâúâýâããã?ãCãHãHãOãRãWãcãtãxã‰ã›ãŸã¡ã³ã·ãÓã×ãÜãÜãðãóãä ää8äCäGäLä‚ä›ä¦äªä»äÆäÊäÌä×äÛäÛäïäóäõäõäåååååå åBåxˆÙ÷FåFåZåpåpåpåråråyå{å{å‚å„å„å‘å“å“å å§å©å©å¶å½å¿å¿å×åÜåÜåìåy°0XÞVÞVöVþV WmWSWHW.WWsW…WuW¥W¥W¼W°WîWóWÿWXX#X)X0XTXCX7XkXmX‰X‰X�XºXºXºXÆXzÄL¹ÞùÞùüùúú8ú8ú:úGúRúXúiúxú‡ú”ú”úšúŸú¤úºúÍúØúÜúîúûúûû +û%û3û3û3û>ûYûDûaûtûvû’û~ûšû¨û¨ûªûÆûÆûÍûÓûÜûãûæûüüü$ü*ü3ü3ü3üFüKüKüSüSü^üsü|ü|ü|ü|ü˜ü¯üµüºüºüÏüÕüÚüÚüæüý#ý(ý-ý-ý9ýVýeýtý|ý�ý‡ýŒýŒý“ýšý½ýÚýÜýùýþþþþ!þ*þ*þHþ^þiþnþ{þ†þ�þ—þ§þ¾þ¾þÎþÎþàþæþÿÿÿÿ!ÿ&ÿ&ÿ3ÿ>ÿDÿMÿMÿ`ÿmÿÿŠÿ˜ÿ¡ÿ¦ÿÐÿÙÿäÿéÿðÿøÿ  %,9@Rgnt}}† §¬ºÊØØÞåîî'/7C`gtv}‘   ÊÊÊ××ì÷ !/:IPPi|~�¢¤²ÇÇÍÖÖãéûû (/:?GNY^su�¤¤¤¦­³ÄÒääêñúÿ#,,2;;ZZgjs|„�¡§²²¿ÂËÔÜçùÿ + +#,.Pcx~‰›¡©©©©´- {”�¾×2×2ë2ï2ø2û23 3 3 3K3O3T3W3`3p3w3z3‚3…3’3š3¢3ª3±3Á3Á3Í3|`2ÆKÆKîKÚKýK"LL1L6L=LELLLWL_LjL€LuL˜L L}À- e e¾eÎeØeØeâeâeìeþe ffff&f&f4fHfHflfyfyf‰f–f–f¹fÆfÆfÜfÿfg8gAgNgNgqg{g{g®gágçgçgçgùg~¸ºäÀ‹À‹Ø‹Ú‹æ‹ê‹÷‹ú‹ŒŒŒŒŒ&Œ1ŒEŒQŒSŒSŒ\Œ^Œ^ŒgŒiŒiŒrŒtŒtŒ}Œ}Œ†ŒŒŒ�Œ™ŒªŒ°Œ¼Œ¼Œ$�œö##4#E#]#d#€#u#˜#¸#¤#Ç#Ø#Ý#þ#ê#$3$:$V$K$n$Ž$z$�$®$Ä$°$Ü$é$é$%% %€œX{^1^1j1z1…1¯1ß1ð1222!252<2J2b2q2~2�2š2�2¢2¹2É2Ù2Ý2ä23�x¬¨®¨®¾®Å®Ì®ë®ú® ¯¯'¯6¯@¯@¯E¯L¯_¯n¯s¯Ž¯¨¯¨¯¾¯Ð¯Ô¯â¯é¯î¯î¯õ¯°°° °2°2°2°D°O°a°l°y°~°Ž°“°£°¯°´°Á°Æ°Ö°Û°ë°í°ý°ÿ°±±"±+±+±-±=±D±T±T±o±�±“±¥±µ±µ±µ±¸±Ë±‚\åø(�(�C�J�O�]�r�y�ƒ�‘�”�–� �²�²�¹�ï�ƒ0ÎÖ6xl@>Œ”„`0Ö€Ö€ì€þ€���7�;�A�W�t�v�v�§�•�v�Æ�Ð�…L4CÖ/Ö/ä/ö/ü/000%070=0@0|0†(–œ§2§2µ2Ä2È2Ë2Ñ2‡\DW~0~0Œ0ž0¤0¬0¾0Ä0Í0ß0å0î011 1W1ˆ, –Ô–Ô¤Ô«Ô³Ô¸Ô¾Ô‰„   $ 6 @@ -387,42 +409,52 @@ MMM&M6M>MAM D S X -w -w -| -› -  -§ -¶ -¸ -× -× -ö - ø - & ( G G G G V o h ‡ ‘ ‹\?ŽaŽa«a³aºaßaíaïaýa -bbb2bAbLbPb[bgbrb~b•b¬b¿bÖbàbîbccc"c"c(c9c?cOcOcgcgcŒcŒc‘c‘c—c£c°c¼cÑcèc÷cdd d7dOdpdpdyd~d~d~d~dŽd—dŸd¤d²dÀdÐdÕdÕdãdãdèdèdòdýdee!e1eHFÓFÓOÓOÓ]ÓaÓhÓkÓpÓ‘D*N+N+h+{+…+Œ+˜+°+¹+½+Ï+Õ+ô+’Ðy©®ø®øØøÛøâøèøîøðøöøüøüøùù ù-ù:ùMù\ùpùvùxùù…ù�ù�ù ù¢ù©ù¯ù¹ù¹ù¹ùÐùâùéùøùúù úúú-ú“0+3ö+ö+ÿ+%,6,<,<,D,”„\y6í6íHí]ígípíríyí‰í”í–í í í¦í·íºíºíÛíæíèíîî îî+î~î•  -ž*ž*§*Å*Ê*–h÷ î^î^___(_3_9_J_P_a_g_s_Š_Š_œ_­_º_À_Ñ_×_%`—�¶ÖîOîOP!P5P=PKPOPXPXP]PjP€PªP¯PÓPÛPàPçPýPQQ+QAQeQQ‘Q˜ˆù&ý&ý>ýPýWý^ý}ý‚ý¡ý¦ýÀý­ýßýÌýëýþíý þ þ+þ+þ+þ=þDþcþcþkþ™ y}PˆPˆYˆeˆjˆš(Aãã@ãHãNãVãXãXãiãiãiãqãyã‹ãšã‹ã¯ã±ã±ãËãÍãÍãØãÝã÷ãüãüãüãää ä"ä/ä1ä>äFäNäUädäqäsä„ä‘ä‘ä‘äšä¬ä¿äÅäÍäÏäÜäÜäñäñäñäüäåå#å#å#å1å7å<åDåOåaålåqåqåxå|åŠåŽå—åžå¼åÉåÐåÙåõåúåúåúåúåæ æææ;æ;æ;æBæPæ_æræ…æ‡æ‡æ‡æšæšæ¡æ¨æ­æ³æÅæÏæêæççç-ç2çVç]çiç‡çšç¥ç¬ç°ç°ç°ç°ç»çÅçÓçõçèè'è'è5èSèƒè–è§è¾èÑèÖèÖèÖèÞèéèûèé é é ééJéPéPéPé[éeéqé|é~é~é~éƒé�é�éÙé›H%—/—/¥/¬/·/Å/Ð/Ø/Ø/ð/ú/00œ0 ¦T¦TÍTºTÙTïTèTUU�T<M^(^(x(„(–(¬(Í(º(å(ö())?),)W)o)o)y)ž,×–Q–QÈQÜQäQïQöQýQRRR R)R0RKRMRTRoRvRR�R–R„R¢R¢R¢R°RºRÇRçRéRS S S'SESJSQSeSlS‡S‰S�S«S¿SÚSÝSåSòSTT.T6T6TRTRTmTmT“T¥TŸTXi>>Tbhn�›­±·ÅÈÒ Lgnþnþ�þ’þªþÅþ±þåþÑþñþÿóþ'ÿÿ3ÿ?ÿDÿPÿ`ÿgÿtÿÿ‹ÿ–ÿžÿ£ÿ¯ÿ´ÿÈÿÏÿÓÿÞÿãÿîÿ!5<@@E^c|‘£¨³»»»½Öëö    -%Ee¡àZŽøbøbc c%c2c@cIcdcrc”c�c­cÇcÒcâcäcæcðcücd dd+d3dKdOdOdOdOdTdrdŒdŒd“d–dždªd³d e¢d~“.,.,L,o,€,‡, ,˜,¸,Ø,Ä,ä,õ, -÷,#-0-0-H-H-R-£@I•– – ® À Ë ó Þ Ò ÿ  J 5 ) V p p � ¤ ‘ Ñ ¼ ° Ý ÷ ÷ ÷  # # P i ] – › ® ¢ Ð Á Ü ú 8%SD_}’ªžÌ½Øòòò9Feem¤(.à.à<à_àeàjàjàpà¥(!'¶Ò¶Ò¿ÒÍÒÓÒÕÒÚÒ¦D]j999%9.9:9O9W9]9c9e9e9t9§„½Ú(¦(¦[¦g¦k¦s¦{¦¦Š¦Ž¦’¦–¦ž¦£¦§¦¸¦É¦Ë¦Ï¦à¦ñ¦þ¦§§"§"§"§4§¨€8˜8˜Q˜X˜_˜f˜l˜|˜‡˜‘˜œ˜³˜¶˜¸˜Ó˜Ý˜ç˜î˜ù˜ ™™™)™)™;™©˜b__4_T_\_g_v__ƒ_Ž_®_³_Í_ì_ò_÷_ -`7`@`V`\`d`g`l``¤`©`¿`Å`Í`Ð`ð`õ`a1a7a?a?aDaJaMaXaxa}a—a¶a¼aÁaáaêaïabbb;bDbFbebmb�b’b¬bËbÑbÖbÖbÖbÖbãbôbÿbc"c5cBcZcncc‰c‹cŸc°cµcÀcÍcícícícÿcª°)ˆžˆž«ž¸ž½žÁžÊž×žãžîžùžŸ ŸŸŸ#Ÿ+ŸEŸkŸeŸ{Ÿ„Ÿ¹Ÿ¥ŸÉŸÉŸáŸìŸ  3 l l l l Í «0ùAÀŒÀŒåŒñŒüŒ� ���&�4�>�P�Z�`�j�p�z�����“�œ�Ç�Ö�Ù�Û�å�÷�ŽŽŽ2Ž2Ž5Ž?ŽTŽYŽiŽtŽyŽ�Ž ŽªŽ¿ŽÍŽÖŽÞŽìŽýŽ ��+�+�8�8�@�N�•�¬l£:f@f@@—@§@Ç@Ù@ñ@ A A6A>ABAEAIANAXA[AbAhAoAuAyA~AˆA™A A§A©A­A¶AÀAÃAÎAÚAÝAîAùAÿABB(B9BBBKBSB^BiBuB†B—B£B±B³BºBÁBÆBÊB×BÞBCCC#C,CECVC_ChCpCyCCƒCˆCŒC™C C®C¸CÍC×CàCùC -DDD$D-D3D7DF2F_FmFuF€F‚F�F˜F˜F�FÊFÏFüFGGG:G'GFGQGfGSG…GrG‘G–G‘G¬GºGÂGÍGÏGÚGåGåGêGHH"H"H/H4HSHUHtHtHtH|H´\ãöþ]þ]^&^,^7^E^Q^h^h^z^€^‹^›^¦^´^Á^í^µ(5;ff„—ž¥¬°²¹ÀÄÄÌåïï   - 1 6 R z ~ ‡ ‹ � ¡ ¾ ¾ Ì à å þ      F [ b u y ~ š  Ê Ó × Ü í ÿ !#!%!>!Q!U!U!U!q!™!�!¦!ª!¯!À!Ý!Ý!ë!ÿ!""."2"D"D"D"I"X"y"˜"£"©"¿"Ð"Õ"ê"#.#2#;#?#D#U#n#n#|#�#’#«#¼#À#À#Ç#Ú#Þ#ð#õ#$9$A$J$N$S$d$z$Š$ž$£$¼$Ï$Ó$å$å$å$å$ê$ %%9%D%J%`%q%q%q%x%‹%¤%¤%¤%³%³%Æ%Ý%è%ù%þ%&&&&&#&.&C&E&P&e&q&s&~&Š&š&¡&¨&²&º&¾&Â&Ä&É&Ñ&Õ&ç&é&î&ö&ú&ü&ü&''('H'b'n'z'�'�'”'˜'˜'˜'Ÿ'¤'¾'Ê'Ö'Ý'Ý'ô'ö'û'(!(-(4(4(A(K(K(](¶˜ ºœ H H=HLHLHLHfHfHuHuH{H}H}HƒH…H…H‹H�H�H”H˜H�H�H�H�H�H�H¥HºHºHÏHÚHäHñHII#I%I@IEI`IeIkIkI€IƒIªI·IÏIïIïIøIýIJ J!J0J5JSHSVSkSnSpSzSzS|S„S‰SŽS“S“S™S¡S¦S¦S«S¶S»SÀSËSÐSöSøSýSTT TTTTT T%TATKT_TsTyT�T�T�T•T›T¥T¯T½TÒTÕT×TáTðTõTõTõTýTU U UUUUU#U#U(U3U8U=UBUQUQUbUhUhUvU|U‚UŒU–U¤U¹U¼U¾UÈU×UÜUÜUÜUäUéUòU÷U÷UýUV -V -VVV V$V)V8V8VIVOVOV]VcViVsV}V‹V V£V¥V¯V¾VÃVÃVÃVËVÐVÙVÞVÞVäVìVñVñVþVWWWWW(W2W@WUWXWZWdWsWxWxWxW€W…WŽW“W“W™W¡W¦W¦W³W¹W¹WÇWÍWÓWÝWçWõW -X XXX(X-X-X-X5X:XCXHXHXRXZX_X_X_XeXoXuX‰XŽXŽX”XžX¤X©X©X¯X½XÆXÔXÙXÙXßXíXùX -YYY&Y0Y>Y>YCYCYNYNYNYRYWYWY]YaYfYnYtYvYYŽY–Y›Y¡Y¡Y©Y¯Y½YÈYÍYÓYÛYàYàYàYàYàYàYàYàYàYàYùYÿYZZZZ Z)Z4Z=ZEZJZJZJZPZXZ]Z]ZaZfZfZoZ}Z‰Z–ZœZœZ¥Z¹Z¹Z¿ZÈZÜZÜZåZçZíZöZ -[ -[[[[[[[%[*[*[G[U[a[j[p[z[‚[‡[‡[‡[›[¤[ª[¼[Æ[Æ[Î[Î[Ö[Ø[Ø[ñ[û[\\\\ \\\\\\\\#\'\ _·ÐàfufuˆužuªuÈuäuñuvv&v >>>>>>>#>#>2>;>C>Y>Y>Y>^>^>s>>Š>�>�>’>—>—>³>¿>Ì>Î>Î>Ò>Ô>Ô>ð>ü>? -? -? ??????!?!?*?0?5?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?S?d?v?…?”?”?˜?˜? ?¼?À?Å?`@º,æÑæÑôÑûÑÒÒÒ»˜?afWfW|W‚W‰W¹W¥WÅWÊWÑWÑWñWXóWXCX/XOXTX[X[X[XaXdXhXpXˆX“X¦XžX¾XÈX¼PQa§%§%µ%Ã%Ê%Ú%ë%ð% &&&!&/&;&M&‰&½D%vàvàŠà˜àžàÁàÇàÍàòàøàþàáá á¾ô#œ¾0¾0Æ0Õ0Ù0æ0ó01161C1U1w1—1¥1Á1Ó1ë12 2.2L2[2v2�2œ2µ2µ2Ð2ù23.3@3O3^3^3i3|3�3 3°3½3È3×3÷3÷34444!4(4G4P4]4a4i4t4Œ4¤4­4½4Å4Ê4î4þ455-525:5`5b5m5 5º5º5Ò5á5é5ø56 66:6B6J6U6W6g66—6¯6Ç6Ù6ð6ù677"7&7*7¿ €…€…‰…¨…­…À\…XžÈžÈ¸È¿ÈÌÈ×ÈÜÈâÈôÈúÈÉÉ6ÉJÉUÉ[É}É}É�ɢɤɧɳɻÉÃÉËÉÙÉßÉåÉñÉñÉóÉÊ ÊÊÊ'Ê'ÊEÊEÊXÊeÊjÊjÊ�ʊʙʯʺÊÈÊÓÊãÊðÊËËËË+Ë-Ë-Ë5Ë:Ë:ËBËGËGËOËTËTË\ËaËaËgËlËlËsËxËxË˄˄Ë�Ë”Ë”ËŸË¤Ë¤Ë¯Ë´Ë´Ë¿Ë¿ËØËßËåËèËóËöË -ÌÌ&Ì-Ì0ÌBÌDÌJÌ^ÌkÌzÌzÌzÌz̜̱̄ÌÁÌÒÌØÌéÌïÌôÌþÌÍ Í/Í5ÍFÍQÍ[ÍjÍyÍÍŠÍ�ͥͫͼÍÇÍÍÍÝÍÝÍíÍÎ ÎÎ$Î+Î1ÎBÎMÎRÎo΄Β΢ήÎÀÎËÎÚÎÜÎîÎöÎûÎÏÏÏÏ$Ï.Ï4Ï?ÏEÏGÏTÏaÏkτϒϒϘϟÏßÑÁ0#«h¨h¨‡¨±¨¹¨¹¨Ç¨Ú¨ó¨ö¨©©©©©©$©&©&©.©0©0©8©8©A©G©L©L©U©a©e©j©p©u©u©}©†©Œ©‘©‘©–©¢©º©Ù©Ü©ñ©ªªªªªªª"ª$ª$ª$ª,ª.ª.ª.ª6ª8ª8ªCªCªIªNªNªNªNªUª`ªrª€ªŽª˜ª˜ª˜ª¨ª¨ª¯ª³ª¹ªÑªßªòªþª'«*«1«C«K«T«_«_«j«p«u«u«u«|«‚«—«Ÿ«¥«Ç«Ó«Ù«Þ«Þ«å«ð«ð«õ«¬ ¬ ¬ ¬ ¬f¬Âd)¤B¤BÆBÐBÓBÓBÝBðBòBÿBC C C(C8C=CCCKCNC`CÃLWf/1/1C1G1L1W1W1a1g1g1k1s1Ä\CVÇ0Ç0Ý0Ý0á0æ0ù0ü011 111 1!1+1Å8(2ÞÒÞÒçÒçÒõÒùÒÓÓÓÆ¨²ØFgFg^gfgqgŠg~g·ghügñgÜgÅgh,hhGhLhXhh„h™h†h¥h«h«h¸hßhiíhi6i6i6iBiÇl¨¿f.f.€.¨.‹.´.Ô.í.æ.// -/)/”@”F”L”b”O”n”n”�”‰”›”µ”®”Á”Í”Ê4;D®Ý®Ý·ÝÃÝâÝçÝéÝéÝîÝË”"8§8§F§X§\§d§l§w§‚§Š§•§ §¥§»§Â§É§Ô§ß§á§ì§÷§ù§¨¨¨$¨,¨,¨0¨g¨Ì€Úö/5/5M5Q5U5]5k5n5q5„5Š5Œ5›5Ÿ5£5«5³5¿5Ô5å5ì5ó5ó566Í`!µvIvI¨I³IèIÙIÀIîIJ"J"J&J0J7C7c7u7‡7¥7¥7¥7²7É7Ë7Ë7Ë7Ø7ï7ñ7ñ7þ788&8.838Y8k8}8›8›8›8¨8¿8Á8Á8Î8å8å8ú8ü89%9C9H9O9]9g9i9i9i9…9�9�9�9±9ë9Ϥ/T†å†å¦åÈåÈåçå÷åüåüå ææ7æ?æFæHæ[æcæcæcæeæeæeæeæƒæƒæƒæƒæ•æ—æ—æ—æ—æªæµæØæÐy¶ΔΔä”ð”û”• •••#•(•3•8•8•8•j•W•v•x•}•ˆ•�•�•�•¿•¬•Ë•ò•ò•––+–>–C–C–V–i–|–�–”–”–§–º–Í–à–â–â–õ–——.—.—.—<—Ñ0Š’~è~èŒè’è–èµèÖèÖèÜèÒ<:E8888)858A8J8S8\8b8g8ÓluŒo'o'}'‡'Ž'¥'¥'ª'¬'¸'Â'Ð'í'ï'ÿ'ÿ'(( (?(ÔàŸÓFFZ„yeŸ¬¸Ë¾øý)€)€.€D€V€l€‚€µ€Ä€�ü€è€�$�P�U�]�|�„�©�ž�Š�¹�Ò�¾�ò�Þ�‚‚?‚?‚?‚?‚G‚ÕLÀϾ/¾/Ü/î/õ/00&090F0?0^0h0ÖÈg•w1w1›1Ÿ1¾1à1ì1ó1þ1 22 2 2$2.2F2Q2a2m2t22�2’2£2¥2§2§2§2¯2¯2¹2¹2Á2É2Ñ2Ù2Ý2ç233× ø„ø„…… …Ø`FZg8g8w8~8€8…8”8š8¯8¯8½8½8É8Ò8Õ8ã8í8ð8ø8Ù<œ§V¡V¡_¡j¡u¡€¡‹¡•¡³¡¾¡ΡÚ 2&`&`>`P`V`b`m`{`‡`ž`©`¹`Ë`Ñ`×`Ý`ð`ö`ÿ`aaa(a0a>aKaˆaÛ, Î*Î*Ü*í*++++Ü4°…°…¾…È…Ñ…Ø…ß…é…é…ï…ÝÄKxŽöŽöºö½öÂöÏöÔöæöèöìöðöóö÷ ÷A÷J÷U÷\÷u÷—÷œ÷µ÷×÷Ü÷ã÷ü÷ø ø9ø[ø[ø[øpøŠø™ø«øÞ„¦o¦oÄoÇoÍoáoéoúop ppp p(p.p>pLpNpmp~p…p‘p¡p¡p¯pÂpÍpÑpâpâpâpçpçpópqqq q4q:qBqTqZq\qkqxq~q„q‰q�q•qœq¨q¯q±q¶q¾qÀqÅqÑqÓqØqàqâqçqïqñqöqþqrr r r rrrr4r:r@rKrPrXrqrwr‚r†rŒr—r°r»rÆrÌrÙrÞrãrãrørss&s1stGt`tktvt|t‰t‰t�t’t’t£t¥t¥t¸tºtºtÍtÏtÏtâtätät÷tùtùt u uuuu-uAu6uNuVu]ucuku~u‰u€u™u™u›u³u¶u¸uÄuÖuæuòu v#v(vPPPPPnPyPŒP“P­PÊPÖPñP Q%Q.Q=QEQRQ[Q`QqQQŸQ¤Q¬QÅQ×QçQíQøQRRMR7R(R]R˜R‚RsR¨R«RËR_Sà<*5dCdC…C‹C”C¦C¿CÇCÝCéCá„ |ææ"%%5@@CJQW]cjp��ƒŒ˜žÄÈËÛãèèïõ ..7<FMT\bdr‰Œ›§´´´´ºÌÒã-4>FMMV]iy„„„˜¬¼¿zâ„9ç6ç677737Y7o7€7‰7—7©7Â7Â7Ô7ê7ò7õ78ãX{ÍÎÎù!3AGX_g}…˜­½ÇÉÙéòøý -!,/6PXr‡”—Ÿ£µÄÏ×î -5<@IK]t‚ˆŒŽ›››�´ººÌä  - … …)…=…B…å,þE��2�8�C�T�Y�_�b�f�f�†�‹�Á�­�Í�æ�Ò�ò� ‘÷�‘‘#‘-‘0‘4‘9‘R‘>‘^‘^‘^‘c‘t‘y‘‘‚‘†‘†‘¦‘«‘á‘͑푒ò‘’(’’4’;’@’F’I’M’O’h’T’t’t’t’t’Œ’µ’Á’æ˜Íï  (##72FAP__nn}}ŒŒ››ª¾¹ÈÈ׿õ^çxÈâÎ\Î\ì\þ\]]']']9]?]J]Z]f]o]u]{]†]”]¡]­]»]Ê]Ê]ú]èd�².é.é2éEéEé_éféréré‰é‰é é é·é·éÎéÎéåéçéçéëé騯øFûFûhûoûzû�û�û¢û­û¸ûÉûÚûñûõûúûþûüü#ü/üAüCü\üküoüoüoü‚ü—ü—ü£ü©ü³ü¾üÌüÓüâüäüúüýý&ýêP6FìCìCDDDD+D9D?DKDSD^DdDgDqDë ®-æ7æ78 888 8&8<8M8^8p8‚8‘8 8±8À8À8Ç8Ë8Ô8á8è8ñ8ø8ü899999(9,9/979E9M9Z9b9j9{9†9‹9‹9˜9ž9­9Ä9Æ9Ñ9Þ9í9ð9ö9ò9 -:!:#:1:3:>:D:D:L:L:^:e:{:{:{:€:€:•:£:®:³:³:¶:»:»:×:å:ò:ô:ô:ø:ú:ú:;$;0;2;2;5;7;7;D;F;F;I;I;I;I;I;R;X;\;h;ˆ;•;£;ª;r<ì(rx ˆ ˆ.ˆ5ˆEˆHˆNˆí(nt ' '('2'B'M'M'k'îTzK~î~îœî¢î¥î®î¸îÐîàîéîïîòîöîøîï ï-ï3ï7ï=ï?ïBïFïFïiïmïsïsïzïœï±ïÄï×ïÝïäïïïùïýïðð ððð(ð.ð3ð8ðEðGðYð[ðbðoðqðƒðƒðƒðƒðƒð§ð²ð¾ðÕðÕðêðöðñ7ñQñVñmñrñ€ñ—ñœñ¢ñ³ñÈñÎñÞñëñò -òò.ò:ò:ò:ò@òCòFò_òeòyòò„ò�ò�ò”ò¡ò®ò®ò´òÂòÙòßòâòåòìòõòüòüòóóóó!ó/óFóLóOóRóYóYójóqó~ó‹ó‹ó’óœó£ó©ó°ó»óÏóÏóéóîóõóýóôôô ô8ô=ôDôfôqôwôô˜ô¬ô¬ôÇôÇôáôïôöôýô õ2õVõXõbõ„õ„õ„õ�õ©õºõÒõÖõ«öï¼ÙFiFi^ibipiiŠi–i¡iÁi£iÍiÒiÒiôi$jjûiFjKjsjxj„j�j¯j‘j»jÀjÓjÚj÷j -k -k-k-k9kð n*n*}*–*œ*ñ8�™†I†IŸI®IÂIÏIÕIÛIÞIÿIò8 ÷.÷./ // /&/,/2/2/8/ó ++(+0+5+ôôÔ�N‚N‚l‚|‚‡‚’‚«‚ׂð‚ƒFƒLƒRƒZƒ\ƒdƒƒ‚ƒ�ƒ™ƒ²ƒÞƒ÷ƒ#„M„S„Y„a„f„n„‰„Œ„—„£„¨„Á„í„…2…\…b…h…p…r…z…•…˜…£…¯…È…ô… †9†c†i†o†w†|†„†Ÿ†¢†­†¹†¹†¾†ĆʆÒ†Ú†å†÷†‡!‡5‡_‡e‡j‡|‡‹‡©‡½‡ç‡í‡õ‡ú‡ ˆˆ6ˆJˆtˆzˆˆ‘ˆ ˆ»ˆψùˆÿˆ‰‰‰‰ ‰+‰Q‰i‰t‰|‰‰‰‰‰މ¡‰¸‰½‰ã‰û‰ŠŠŠŠ Š3Š@ŠJŠ^ŠuŠŽŠ Š­ŠØŠìŠ‹‹‹'‹>‹>‹G‹S‹i‹‚‹•‹¡‹´‹¸‹¸‹¸‹¿‹Ä‹׋ã‹ú‹ü‹ŒŒ Œ-Œ7Œ7ŒIŒõ”k t9t9Š9–9–9¬9·9¹9Õ9Õ9Õ9Ü9æ9ê9î9ñ9ñ9ú9þ9::J:V:a:q:�:†:‰:Ž:Ž:Ž:£:ª:·:¾:Æ:Ë:Ë:à:ì:ô:ù:ù:;;#;(;(;=;I;R;Z;b;n;„;�;²;¶;Ä;Ì;Ñ;Ñ;æ;< -<<<#<#<B<N<Y<^<s<<Ž<“<¢<¯<´<´<´<·<¼<¼<¼<Û<ç<ò<ô<÷<ü<ü<ü<====&=1=7=E=S=S=]=f=n=£=©=°=¿=Õ=Ú=Ú=í=õ=õ=÷=÷=÷=ü=ü=> > >>>>>>'>'>L>U>U>Y>tBö( tBtB‚B‹B™BŸB÷�1VwVwtw|wˆwžw³wÁwÌwÛwáwáwáwæwëwùwxxx!x/x:xGxNx\xø\”§V-V-p-”-w- -¹-²-Ñ-æ-Ó-ò-..*.*.7.V.V.`.ù8hrîGîGHH*H9H?HEHHHiHú0�—‰‰,‰8‰F‰I‰a‰d‰l‰û0S[¦Ó¦ÓºÓÂÓÏÓÙÓìÓüP>N˜†˜†¤†¸†»†Ï†×†Û†å†ï†÷†ú†‡ýTš«JJ J3J6J@JMJbJdJvJ€J”J”JšJ�JñJþ<˜£p‰p‰„‰‹‰—‰£‰³‰¸‰»‰¿‰Ç‰ÿ ,0ááá(áHzˆödöd -ee!e7e#eCeEeLeWeceke Dƒ®M®MÒMÙMÞMæMN N NNNN4N:NNKNKNKNKNON^NgNoNxN€N‡N�N�N«N¯NÁNÔNÚNîNóNOOOO"O+O9OBObOhOlOqOvOyOƒO†O–OD žjžj¬j¶jÀjÐjÕjÛjçjéjûjûjýj-klåü>ß>ßRßhßu߀߄ߋß�ߘߧߩߩ߽߿ßÈßÎßÎßÎßÎßÖß´Js€D€D¦D·D¼DÃDÍDÍDÕDèDìDñDEE EEE*E.E6EBEIEMEUEWE_EmEuEwEzE�E—EŸE­E±E¿E !E.k.k>kJkVkfk~k„k’k£k«k²kÈkîkll"l2l8l:lKlmltlzlˆl�l¦l±l·l½làlôB»pgpgŠg�g”gŸg®g°g»gÊgÊg×gågègêgêgïgôgýghhh*h/hDhOhYhYhohohœh°hÅhËhÐh×hÝhähéhéhïhõhúhúh ii3i9i>iRi\icicicihihi‘i–i–i¿iæiëiëiëiîiõiûijjj jjjj/j9jCjIjljrj‚jŽj”j¢j©j«j¿jÅjÌjÌjÎjÎjÎjÓjÙjÞjâjäjçjòjþjkkkk k kkDk˜}Ÿ~~šŸ¦°¶ÁÑÙáæñû   $ 4 ; C K S [ ` k y y � \X«ž@ž@¶@½@Ï@A AA'AAHAHATA\AkA¥A§AÔAÜAÜA B!BB~e~e›e£eªeÏeÝeßeíeúef f"f1fkLkYkfkpktk}k–k™k©k°kµkµkÉkÉkÎkÒkâkëkýklllll"l3lmNmimpmtmzm‚m�m§n‹8ëõ~"~"˜"Ÿ"¶"×"Ä"ï"###Œ`j~žž ž'ž/ž:žDžOžWžfžpžsž˜žšžªžªž¸ž�_VØVØxØØ†Ø‹Ø¢Ø´Ø¾ØÄØÖØÛØçØïØòØôØþØÙÙ ÙÙÙ$Ù.Ù7Ù?ÙBÙKÙfÙwÙ~Ù�نٕٛ٣٣٪٭ٲÙÁÙÇÙÏÙÏÙÝÙàÙåÙôÙÿÙÚÚÚ&Ú-Ú4ÚKÚŽ83=vÕvÕÕÕ�Õ‘ÕŸÕ¢Õ§Õ�8>H®Õ®Õ·Õ·ÕÅÕÉÕÐÕÓÕØÕ�D*Þ.Þ.ø. ///(/@/I/M/_/e/„/‘Ä{¨ÞúÞúû ûûûû û$û*û*û<ûCûYûlû{û�ûƒûŠû�ûšûšû®û°û·û½ûÇûÇûÇûÞûðû÷ûüüü1ü1üCü’0+3†/†/�/µ/Æ/Ì/Ì/Ô/“„\yVðVðhð}ð‡ð�ð’ð™ð©ð´ð¶ðÀðÀðÉðÚðÝðÝðñ ññ'ñ.ñ2ñAñTñ§ñ”  +&.&./.M.R.•hö ÖbÖbìb÷bccc$c5c>cOcUcacxcxcŠc›c¨c±cÂcÈcd–„a~nFnFžF¤F­F¹FÁFÈFÌFÕFÕFÚFáFùF#G(GLGTGVGnG†GªGÉGÛG—lò öþöþÿ ÿ'ÿ.ÿPÿRÿtÿ‰ÿvÿ«ÿ˜ÿºÿºÿÌÿÓÿõÿõÿýÿ˜ y}x‰x‰�‰�‰’‰™(A.æ.æPæXæ^æfæhæhæyæyæyæ�æ‰æ›æªæ›æ¿æÁæÁæÛæÝæÝæèæíæç ç ç ç!ç#ç0ç2ç?çAçNçVç^çeçtç�çƒç”ç¡ç¡ç¡çªç¼çÏçÕçÝçßçìçìçèèè èè.è3è3è3èAèGèLèTè_èqè|è�è�èˆèŒèšèžè§è®èÌèÙèàèéèé +é +é +é +ééé+é+éKéKéKéRé`éoé‚é•é—é—é—éªéªé±é¸é½éÃéÕéßéûé%ê+ê+ê?êDêhêoê{ê™ê¬ê·ê¾êÂêÂêÂêÂêÍê×êåêëë/ë9ë9ëGëeë•ë¨ë¹ëÐëãëèëèëèëðëûë ììììì/ìYì_ì_ì_ìjìtì€ì‹ì�ì�ì�ì’ìžìžìèìšH%////'/5/@/H/H/`/j/p/v/›0 VJVJ}JjJŒJ¨JžJÀJÈJœLÛêŽ!Ž!¨!¯!Æ!ç!Ô!ÿ!" "@"-"X"p"p"z"�ð·ÞGÞGHH(H0H;HZHZHdHfH�HiH�H�HžH¨H¯HÏHÑHëHòHòHII5I:IYIrI�I’IšI¡IÁIÃIÝIäIäIJJJJDJVJžTVgŽŽ¤²¸¾ÏÝëý"Ÿ0 +Rþÿþÿ-"N:q]€Œ‘�­´ÁÌØãëðü +0;T]in‚‰��’«°ÉÞðõ +#8CMXZemm}r•µ àZŽˆcˆc¢c°cµcÂcÐcÙcôcd'd0d@d[dfdvdxdzd„d�d”d¡d­d¿dÇdßdãdãdãdãdède e e'e*e2e>eGe�e¡d/%%,%D%U%\%x%m%�%°%œ%¿%Ð%æ%Ò%þ% & &#&#&-&¢ü!\F F ^ p { ¨ Ž ‚ · Ø í Ú "  ü 1 N N N ` } } ² É ½ û    ; ) J k ƒ p ž ’ Æ ´ Õ ò ò ò !!BIkks£(>ã>ãLãoãuãzãzã€ã¤(!'ÕÕ'Õ5Õ;Õ=ÕBÕ¥D]j„8„8ž8¥8®8º8Ï8×8Ý8ã8å8å8ô8¦„¼Ù`¨`¨“¨Ÿ¨£¨«¨³¨·¨Â¨Æ¨Ê¨Î¨Ö¨Û¨ß¨ð¨©©©©)©8©K©S©^©^©^©p©§€hšhš�šˆš�š–šœš¬š·šÁšÌšãšæšèš› ›››)›;›C›C›Y›Y›k›¨ Ê †R†R¬RÉRÑRÜRìRõRùRS*SCSISQSTSiSnS€S¢S¨S°SµS»S¾SÔSÝSßST TT#T2TTTZT_T_T_TlT}TˆT•T¡T´TÁTÎTåTùTUUU0U5U@UGUjUjUjU|U©°)¸ ¸ Û è í ñ ú  ¡¡ ¡+¡3¡>¡F¡I¡U¡]¡w¡�¡—¡­¡¶¡ë¡×¡û¡û¡¢¢:¢A¢e¢ž¢ž¢ž¢ž¢ÿ¢ª˜†(~¶~¶›¶¢¶ª¶µ¶Ì¶Ö¶Ö¶í¶÷¶·(·6·:·Z·n·‚·‰·�·¦·°·Á·Î·Î·Õ·Ü·á·æ·ë·ò·ù·¸¸*¸.¸.¸8¸N¸R¸R¸c¸v¸‰¸‰¸�¸š¸¡¸©¸´¸»¸Ã¸Î¸Õ¸Õ¸à¸þ¸¹¹ ¹5¹5¹;¹B¹Q¹[¹i¹p¹t¹v¹ˆ¹ˆ¹ˆ¹š¹¢¹È¹Ö¹Ö¹Ú¹ï¹÷¹ºº'º,º:ºIºSºaºlºpºuº}º�º�º’º¡º£º²º´ºÃºÊºÎºâºìºúº»»» »%»C»M»[»b»f»p»~»…»‰»“»§»¯»º»¾»¾»¾»É»Ô»ä»ð»¼¼¼(¼0¼;¼@¼H¼S¼_¼c¼n¼s¼‡¼�¼š¼š¼š¼š¼·¼Ô¼à¼è¼ø¼½&½*½Y½N½?½i½i½s½z½‰½˜½¢½°½·½»½½½Ì½Ö½ä½ë½ï½ï½ñ½¾¾¾¾¾'¾9¾A¾Y¾…¾“¾—¾µ¾¼¾Ã¾Î¾ä¾é¾ð¾¿ ¿¿"¿&¿(¿;¿E¿S¿Z¿^¿^¿^¿^¿l¿w¿†¿�¿ž¿©¿­¿­¿²¿º¿¾¿Í¿Ï¿Þ¿à¿ï¿ñ¿ÀÀ À À)À7À>ÀBÀRÀ]ÀbÀ€ÀŠÀ˜ÀŸÀ£À­À»ÀÂÀÆÀÐÀäÀìÀ÷ÀûÀûÀûÀÁ ÁÁ5ÁEÁPÁeÁjÁuÁ…Á‘Á§Á¯ÁºÁÉÁÑÁÜÁáÁéÁôÁÂÂÂÂ(Â0Â;Â;Â;Â;ÂOÂ_ÂtÂ�…™ª¿ÂÌÂÐÂÞÂóÂÃÃ3ÃLÃNÃYÃaÃaÃjÇØïÃÈÃÖÃáÃíÃõÃ÷ÃÄ +Ä +Ä +Ä'Ä5ÄCÄZÄqÄ€Ä�Ä­Ä´Ä´ÄÄÄØÄòÄòÄöÄ ÅÅ6ÅAÅXÅ`Å`ŅŅŘųżÅÓÅíÅüÅ Æ)Æ7ÆMÆiÆyƑƑƩƩƵÆÐÆèÆñÆñÆñÆýÆÇ&Ç/Ç/Ç6Ç?ÇEÇQǰǫ0ùAð�ð�Ž!Ž,Ž6Ž<ŽFŽLŽVŽdŽnŽ€ŽŠŽ�ŽšŽ ŽªŽ±Ž½ŽÃŽÌŽ÷Ž� � ��'�1�C�M�b�b�e�o�„�‰�™�¤�©�½�Ð�Ú�ï�ý����-�=�N�[�[�h�h�p�~�Å�¬l£:DD/DGDWDwD‰D¡D¼D¼DæDîDòDõDùDþDE EEE E%E)E.E8EIEPEWEYE]EfEpEsE~EŠE�EžE©E¯E¶E¿EØEéEòEûEFFF%F6FGFSFaFcFjFqFvFzF‡FŽF±F¿FÉFÓFÜFõFGGG G)G/G3G8GHFHNHVHcHkHŠH}HŸH¨HÃH×HêHñHúHI +III%I>I.INIRI¬I­  p†p†~† †¦†®¸�·§'§'°'Ñ'·'ø'ú'/(Z(Z(j(o(o(ƒ(ˆ(ˆ(¤(©(©(É(Î(Î(â(ç(ç()))6)\)|)Ž) )²)Â)Â)Â)Â)Â)—*¯$bg÷%÷%û%&%&?&°”¢¦¿¦¿À¿Ï¿Ï¿Ò¿Û¿ç¿ç¿ý¿À%À,À0À@À`ÀrÀxÀ‡À�À”ÀšÀ£À¹À½ÀÚÀøÀ +ÁÁ Á1Á=Á?ÁKÁSÁWÁ]ÁfÁfÁfÁxÁƒÁ‰ÁŸÁ¦Á®ÁÄÁËÁËÁËÁÐÁÕÁßÁâÁçÁñÁôÁ ÂÂÂ&Â)Â.Â>ÂAÂEÂNÂVÂhÂpÂy„Š §¯¶ÂËÂÜÂÜÂãÂãÂãÂèÂíÂ÷ÂúÂÿ à Ã$Ã)Ã.Ã>ÃAÃFÃVÃYÃ]ÃfÃnÀÈÑÑÜãñõÃÁÃÙÃáÃçÃöÃÿÃÄ ÄÄÄ"Ä*Ä0ÄMÄVÄ^ÄdÄjÄjÄjÄqÄxćÄ�ĕěěÄ�įıx>×>×L×a×h×s׉׳×Ï×Ö×î×ôר ØØØØ$Ø*Ø9ØAØGØIØOز¤ÔyÎ^Î^ñ^ù^ __5_L_P_X_`_f_o_{_ƒ_ƒ_‹_»_ú_Õ_`"`*`:`<`j`p`y`€`ˆ`�`œ`¤`¬`¿`Ç`Ì`Ö`ö`ý`ÿ` aa8a?aAaaahahahaqaxa‘a—aŸaŸa¤a¨a´a½aÆaÒaõab1b4bPb]bqb‹b�b®b¼bÈböbübþb,c/c/cKcXclc†cŽc’c�c¥cµc·cåcècðcdd0d6d6d@d@dKd|d„d„d„d„d�d™d¯dÈdÛdâdîdõdõde e e eee+e2e>eEeEe_eaefeye€eŒe“e“e eªeªe¯eÒeÒeäe³à˜Ì==#=A=.=v=\=P=…=”=œ=§=©=´=¿=¿=Ä=ù=þ=3>K>8>m>Z>�>|>�>¬>´>¿>Á>Ì>×>×>Ü>ý>ÿ> ? ?'?,?N?P?r?r?r?z?´\âõæaæaüabb b-b9bPbPbbbhbsbƒbŽbœb©bÕbµÙÚÖÖô ")044<U__s~Œ�¡¦º¾ÇËÐÖóó6GKKKP[elƒˆœ¤­±³ºÌÜóõ!%%%9=FJOUrr€—œµÆÊÜÜÜáð6AG]ns~’–Ÿ£¥«ÄÄÒéë 37INbjsw|ƒ™©ÀÅÞñõ .=alrˆ™™™ ³ÌÌÌÛÛî  ! & , 6 8 D D K V k m x � ™ › ¦ ²  É Ð Ú â æ ê ì ñ ù ý     " $ $ - : P p Š ˜ ¤ « « ¾    É Î è ö ! ! !#!%!*!D!R!^!e!e!r!|!|!Ž!¶˜ »�8H8HUHdHdHdH�H�H�H�H–H˜H˜HžH H H¦H¨H¨H¯H³H¸H¸H¸H¸H¸H¸HÀHØHØHíHøHII'I)IHIJIiInI�I’I˜I˜I±I´IÛIèIJ J J)J.JLJ:JRJaJfJmJvJ‰J‘J™JžJžJžJ§JÀJÆJÆJßJíJ +K#K%K-K3K;K@K@KFKFKOK`KbKwKyK�K‡K�K”K”K”K”K¢K¹K»KÏKÏK×KÝKåKêKóKûKL +LLLLLLL(L?LCLELQLSLnLtL|L�LŠL•L˜LžL¤L­L°L°L¾LÏLÑL÷LMM"M'M0M5M5M:M\H\H\P\P\X\Z\Z\s\}\†\ˆ\ˆ\ˆ\Ž\’\”\”\”\”\™\Ÿ\¥\©\"`·Ìz©æeæeff)fEfRfif|f‡f�f‰f¬f´f´fÃfÃfËf×fífggg/g5g5g5g:g?gNgYgsgugzg‰g”g¡g«g«g¹g¸”*K£££ £&£)£2£5£8£<£A£c£P£s£{£ƒ£†£ˆ£˜£¡£ª£°£³£Ä£Û£ì£÷£)¤¹à.¢&@&@D@O@`@c@g@p@w@…@”@ª@»@Ì@Þ@ð@ÿ@A A.A.ACMCMCQCQCYCrCvC{CDº,nÔnÔ|ÔƒÔ‹Ô�Ô–Ô»l3J¦L¦L¼LÖLÂLåL +MöLMM%M%M+M.M2M:MRM]MsMhM‹M•M¼PQa%%%+%2%B%S%X%u%{%‚%‰%—%£%µ%ñ%½D$†ã†ãšã¨ã®ãÑã×ãÝãääääää¾ô#œf4f4n4}4�4Ž4›4¯4¾4Û4è4ú45<5J5f5x5�5§5²5Ó5ñ566&6A6Z6Z6u6ž6¸6Ó6å6ô6777!727E7U7b7n7}7š7š7¢7¢7¢7³7À7Ç7æ7ï788 88/8G8P8`8h8m8‘8¡8±8¼8Ð8Õ8Ý8999C9]9]9u9„9Œ9›9¤9¬9¾9à9è9ð9û9ý9 :%:=:U:m::–:Ÿ:¨:º:È:Ì:Ð:¿ ¨†¨†±†Ð†Õ†À\ƒVËË0Ë7ËDËOËTËZËlËrËŠË�Ë®ËÄËÏËÕË÷Ë÷ËÌÌÌ!Ì-Ì5Ì=ÌEÌSÌYÌbÌnÌnÌp̂̈Ì�Ì�̤̤ÌÂÌÂÌÕÌâÌçÌçÌþÌÍÍ,Í7ÍEÍPÍ`ÍmÍÍ…Í�͛ͨͪͪͲͷͷͿÍÄÍÄÍÌÍÑÍÑÍÙÍÞÍÞÍäÍéÍéÍðÍõÍõÍüÍÎÎ ÎÎÎÎ!Î!Î,Î1Î1Î<Î<ÎWÎ^ÎdÎgÎrÎuΉΖΥάίÎÁÎÃÎÉÎÝÎêÎùÎùÎùÎùÎÏÏ2ÏDÏUÏ^ÏoÏuÏzυϗϨϷϽÏÎÏÙÏãÏóÏÐÐÐÐ.Ð4ÐEÐPÐVÐfÐfÐvЉЕÐ�ЭдкÐËÐÖÐÛÐøÐ ÑÑ+Ñ7ÑIÑTÑcÑeÑwÑфыÑ�Ñ�ѧѭѷѽÑÈÑÎÑÐÑÝÑêÑôÑ ÒÒÒ!Ò(ÒlÔÁ0#« ª ª¿ªéªñªñªÿª«,«/«K«K«K«S«U«U«]«_«_«g«i«i«q«q«z«€«…«…«Ž«�«¡«¦«¬«±«±«¹«Â«È«Í«Í«Ò«ß«ø«¬¬0¬O¬O¬O¬W¬Y¬Y¬Y¬a¬c¬c¬c¬k¬m¬m¬m¬u¬w¬w¬‚¬‚¬ˆ¬�¬�¬�¬�¬”¬Ÿ¬±¬¿¬Í¬×¬×¬×¬ç¬ç¬î¬ò¬ø¬­­1­>­g­j­q­…­�­–­¡­¡­¬­²­·­·­·­¾­Ä­Ù­á­ç­ ®®® ® ®'®2®2®7®I®O®O®O®O®¨®Âd*,B,BNBXB[B[BeBxBzB‡B‰B”B¨B°BÀBÅBËBÓBÖBèBÃLWfŸ0Ÿ0³0·0¼0Ç0Ç0Ñ0×0×0Û0ã0Ä\CV7070M0M0Q0V0i0l0q0q0{0�0�0�0‘0›0Å8(2FÕFÕOÕOÕ]ÕaÕhÕkÕpÕÆ¨YÆXÆXÞXæXñXYøX6YšY€YuY[YDY YµY¥YÕYÚY÷YüYZþY Z&Z&Z-ZWZ‚ZeZ™Z·Z·Z·ZÃZÇlD[N'N'h'‘'s' 'À'Ü'Ò'ô' (ù'(4(T(f(((†(¨(¨(²(È4Ž—ÎêÎêâêçêíêñêõêëëÉxÐêV}V}�}n}�}š}¡}·}¼}Á}Å}Ç}Í}Ó}é}Ö}ø}~~+~N~D~]~i~Ê4;D¦ß¦ß¯ß»ßÚßßßáßáßæßË”"p©p©~©�©”©œ©¤©¯©º©Â©Í©Ø©Ý©ó©ú©ª ªªª$ª/ª1ª=ªHªSª\ªdªdªhªŸªÌ€Úö§4§4Å4É4Í4Õ4ã4æ4é4ÿ45555!5)515=5R5c5j5q5q5~5“5ÍÞ`6@6@f@q@–@x@°@æ@ë@ë@î@ø@A A!A)AKAlA~A‹A¦AºA¿AÙAãAåAêAB(B:BGBbB‚BxBœB¢B¢B«BËB×BÚBÜB÷BáBCCCC&C0C[CQCuCuCzC}C“CŸC´CØCâCèCøC DD/D1DCDWDkDaD€D†D•D½D¬DÌDÎDàDêDþDEE(E2E4EHEREREqEwEwEwE€E EÈE·E×EÜEîEöE!FF6F6F6F\F\FnFÎ`8Ì.,.,e,l,t,},ˆ,�,§,¬,¯,²,»,É,Ó,Ø,--->-C-P-p-u-„-°-¸-½-Ò-þ-. . ..1.E.I.k.|.�.�.­.­.­.­.­.Á.Ù.Þ.á.ä.ä.// /,/4/O/f/t//›/›/›/¨/¿/Á/Á/Á/Î/å/ç/ç/ô/ 0 00 0G0^0p0Œ0Œ0Œ0™0°0²0²0²0¿0Ö0Ø0Ø0å0ü0ü0 11191P1b1~1~1~1‹1¢1¤1¤1±1È1È1Ü1Þ1ì12,212?2M2W2Y2Y2Y2v2~2€2€2¨2î2Ϥ)N6ç6çPç|ç|ç›ç«ç°ç°ç¿çÑçëçóçúçÿçè"è"è"è$è$è$è$è@è@è@è@èWèYèYèYèYètèè´èÐÐën~n~„~�~•~•~¡~¦~«~¶~»~»~»~ð~Ý~ÿ~&&?XqŠ��¨ÁÚóøø€*€C€\€^€^€w€�€©€€€€Ô€Ñ0…�nênê|ê‚ê†ê¥êÆêÆêÌêÒ<:E‡7‡7�7›7©7µ7Á7Ê7Ó7Ü7â7ç7ÓluŒ×&×&å&ï&ö& ' ''' '*'8'U'W'g'g'l'n'u'§'ÔØŸÑoo*oToIo5otoo“o†oÅoÊoöoöoûopp#p:pWp°p˜p„p¶pÁpípòpúpq!qFq;q'qYqrq^q•q�q¬q³qßqßqßqßqçqÕL\k¶(¶(Ô(æ(í())!).)>)4)V)`)ÖÈg•ç0ç0 11.1P1\1c1n1|1‰1’1’1—1¡1¹1Ä1Ô1à1ç1ò12222222"2"2,2,242<2D2L2P2Z2¦2× ††&†=†C†Ø`FZç7ç7÷7þ78888/8/8=8=8I8R8U8c8m8p8x8Ù<úNŠNŠWŠbŠmŠxŠƒŠ�ЫжЯŠÚ  1dd.d@dFdRd]dkdwdŽd™d©d»dÁdÇdÍdàdædïdõde ee e.e;exeÛ, V.V.d.u.Ž.¢.¥.«.Ü4؆؆æ†ð†ù†‡‡‡‡‡ÝÄMz¦ø¦øÒøÕøÚøçøìøþøùùù ùù7ù]ùfùqùxù‘ù·ù¼ùÕùûùúú úFúHúaú‡ú‡ú‡úŸú¹úÈúÚúބ¾s¾sÜsßsåsùstt t%t*t*t7t@tFtVtdtft…t™t t¬t¼t¼tÊtÝtètìtýtýtýtuuuu0u6u;uOuUu]uouuuwu†u“u™uŸu¤uªu°u·uÃuÊuÌuÑuÙuÛuàuìuîuóuûuýuv +v vvvv v(v(v(v8v8v8vOvUv[vfvkvsvŒv’v�v¡v§v²vËvÖvávçvôvùvþvþvww#wDwOwZwfw`wowxw}w‚w—wžw§w³w¹wÅwÉwÎwÓwÞwéwôwöwüw xxx,x7xBxBxHxUxWx\xex~x‰x”xšx§x§x«x°x°xÁxÃxÃxÖxØxØxëxíxíxyyyyyy)y)y/y4y4yKy_yTylyty{y�y‰yœy§yžy·y·y¹yÑyÔyÖyåy÷yzz*zDzIz]zmz€z…z…zŽz¢z´z¿zÇzÏzÓzázçzìzìzòz{{{{!{'{,{,{,{2{A{T{a{e{j{j{n{s{s{x{ƒ{�{©{¿{Ë{Ë{Ñ{Þ{à{í{ù{|||(|4|4|4|4|8|=|N|`|k|s|{|}|�|”|¢|±|·|Ä|Ä|Û|ë|ë|ÿ| } }}"}9}9}?}L}N}`}`}k}k}k}k}k}çß „ÈVSVStS‚S•SšS¸S¾SÃSÉS×SÞSíSòSþSTT.T9TLTSTmTŠT–T±TÉTåTîTýTUUU U1U?U_UdUlU…U—U§U­U¸UÁUÇU V÷UèUVXVBV3VhVkV‹V Wà<+6ìBìB CCC.CGCOCeCqCá„ |>>`krz}}�˜˜›¢©¯µ»ÂÈÙÙÛäðö  " 2 : ? ? F O ` f o z ‹ ‹ ” ™ £ ª ± ¹ ¿ Á Ï æ é ø       * 3 D e v Ž • Ÿ § ® ® · ¾ Ê Ú å å å ù  !! !Û!â„9g6g6ƒ6’6™6³6Ù6ï67 77)7B7B7T7j7r7u7�7ãX{ÍISfqƒ‘—¨¯·ÍÕèý )9BHMTZ`fq|† ¨Â×äçïó '>W[dk}…Œ�™›­ÄÒØÜÞëëëí + +ä  +H†H†Q†e†j†å¤£Èn{n{Š{�{¢{§{­{°{´{´{×{Ü{ |õ{|1||@|V|B|e|m|r|x|{||�|š|†|©|©|©|Ä|ó|ÿ|æ˜Íï /*>9HWWffuu„„““¢¶±ÀÀÏÞíVçxÇá¶`¶`Ô`æ`ì`ø`aa!a'a2aBaNaWa]acana|a‰a•a£a²a²aâaèd˜­ëë"ë5ë5ëOëVëbëbëyëyë�ë�ë§ë§ë¾ë¾ëÕë×ë×ëÛëéÌÂñFýFýhýoýzý�ý�ý¢ý­ýÁýÅýÊýÎýÐýÖýèýôý þ þ$þ3þ7þ7þ7þJþ_þ_þkþqþ{þ†þ”þ›þªþ¬þÅþßþßþñþêP7GtCtCŠC–CžC¢C³CÁCÇCÓCÛCæCìCïCùCë ®-Ž;Ž;¨;³;·;À;Ç;Î;ä;õ;<<*<9<H<Y<h<h<o<s<|<‰<�<™< <¤<Ä<Ä<Ä<Ä<Ä<Ð<Ô<×<ß<í<õ<= +==#=.=3=3=@=F=U=l=n=y=†=•=˜=ž=š=²=É=Ë=Ù=Û=æ=ì=ì=ô=ô=> >#>#>#>(>(>@>N>Y>^>^>a>f>f>…>“> >¢>¢>¦>¨>¨>Ç>Õ>á>ã>ã>æ>è>è>õ>÷>÷>ú>ú>ú>ú>ú>? ? ??9?F?T?[?#@ì(rxH‰H‰V‰]‰m‰p‰v‰í(nt‡&‡&�&š&«&¶&¶&Ô&îTzK®ñ®ñÌñÒñÕñÞñèñòòò ò"ò&ò(ò@òPò]òcògòmòoòròvòvò™ò�ò£ò£òªòÌòáòôòó óó ó)ó-ó0ó7ó=óAóGóXó^ócóhóuówó‰ó‹ó’óŸó¡ó³ó³ó³ó³ó³ó×óâóîóôôô&ôCôgô�ô†ô�ô¢ô°ôÇôÌôÒôãôøôþôõõ3õ:õFõ^õjõjõjõpõsõvõ�õ•õ©õ¯õ´õ¿õ¿õÄõÑõÞõÞõäõòõ ööööö%ö,ö,ö1ö>öKöKöQö_övö|öö‚ö‰ö‰öšö¡ö®ö»ö»öÂöÌöÓöÙöàöëöÿöÿö÷÷%÷-÷4÷D÷H÷Q÷i÷n÷u÷—÷¢÷¨÷°÷É÷Ý÷Ý÷ø÷ø÷ø ø'ø.øPøcø‡ø‰ø“øµøµøµøÎøÚøëøùùÝùïÀ€¬ÆZÆZÞZâZçZöZ[ [.[[=[B[B[g[˜[{[n[»[À[é[î[ú[\ü[*\/\H\O\r\ˆ\ˆ\®\®\º\ð ö-ö-..$.ñ4�˜6M6MOMrMM…M‹MŽM¯Mò8 g.g.u.|.‡.�.–.œ.¢.¢.¨.ó ®.®.¸.À.Å.ôÒTîqîq rr'r=rZrir�r»rÁrÇrÏrÑrÙrîrñrürss;sJsnsœs¢s¨s°sµs½sÒsÕsàsìsñs÷sýst tt%t=tKtytt„tŒtœtÂtðtötûtût uu"u?uWucukuyuyu~u‘u¨uªuÇußuëuóuvvvv&v0vGv^vwv‰v–v¸vÏvævôvöv w$w$w-w9wOwhw{w†w™w�w�w�w¤w©w¼wÇwáwãwèwûwxxxx/xõ˜k ô8ô8 +999,97999X9X9X9_9i9m9q9t9t9}9�9—9—9Í9Ù9ä9ô9: : ::::&:-:::A:I:N:N:c:o:w:|:|:‘:ž:¦:«:«:À:Ì:Õ:Ý:å:ñ:;;5;9;G;O;T;T;i;ƒ;�;™;¡;¦;¦;Å;Ñ;Ü;á;ö;<<<%<2<7<7<7<7<:<?<?<?<^<j<u<w<z<<<<‰<‘<˜< <©<´<º<È<Ö<Ö<à<é<ñ<&=,=3=B=X=]=]=p=x=x=z=z=z===†=Œ=�=—=›=›=›=›=ª=ª=Ï=Ø=Ø=Ü=÷Aö(üAüA +BB!B'B÷�ªÊ¾g¾gÜgägðghh)h4hChIhIhIhNhShahlh…h‡hŒhšh¥h²h¹hÇhø\0C.&.&H&m&O&|&˜&Ž&°&Å&²&Ô&í&ÿ&'' 'A'A'K'ù8hr¦K¦K¿KÎKâKñK÷KýKL!Lú0�—@Š@ŠTŠ`ŠnŠqŠ‰ŠŒŠ”Šû0S[ÖÖ"Ö*Ö7ÖAÖTÖüP>NÀ‡À‡Ì‡à‡ã‡÷‡ÿ‡ˆ ˆˆ ˆ"ˆ(ˆýT™ª¶M¶MÐMãMæMðMýMNN&N0NDNDNJNMN¡Nþ<˜£˜Š˜Š¬Š³Š¿ŠËŠÛŠàŠãŠçŠïŠÿ +/ää,ä8äH!/nVnV‚VŽV¤V�V³VµV¼VÇVÓVÛV DƒfQfQŠQ‘Q–QžQ¸QÁQÃQÐQÐQÒQìQòQôQöQRRRRRR R'R0R8R?RERGRcRgRyRŒR’R¦R«R¸R¸RÌRÓRÚRãRñRúRS#S'S,S1S4S>SASQSD ®n®n¼nÆnÐnànånînúnünooo@oläû6â6âJâgâxâ†âŠâ‘â•âžâ°â²â²âÉâËâ×âÝâÝâÝâÝâåâ´KtDD.D?DDDKDUDUD]DpDtDyDŽD�D“D—DžD²D¶D¾DÊDÑDÕDÝDßDçDõDýDÿDEE E'E5E9EGE !EFoFoVobono~o–oœoªo»oÃoÊoàop p-p:pJpPpRpcp…pŒp’p p¨p¾pÉpÏpÕpøpôB»hhhh$h/h>h@hKhZhZhghuhxhzhzhh„h�h˜hžh§hºh¿hÔhßhéhéhÿhÿh,i@iWi]ibiiioivi{i{i�i‡iŒiŒiŸi­iÅiËiÐiäiîiõiõij-j3j8j8jcjhjhj“jºj¿j¿j¿jÂjÉjÏjÖjÛjÛjájçjìjìjkkk@kFkVkbkhkvk}kk“k™k k k¢k¢k¢k§k­k²k¶k¸k»kÆkÕkØkÚkÞkÞkãkãkñkl˜}ŸÞ!Þ!ú!ÿ!"""!"1"9"A"F"Q"["a"l"|"„"”"›"£"«"³"»"À"Ë"Ù"Ù"ï" B†®8®8Æ8Í8à899 9.9"9W9W9c9k9z9´9¶9ã9ë9ë9 :8:%:Y:G:h:n:}:’:”:Ÿ:§:§:È:Í:Ö:â:ê:;õ:=;#;;L;i;T;‰;¡;Ž;Ã;°;ä;Ò;ó;<û;<<<E<E<Q< Ð1È�È�Ü�Ü�‘‘"‘&‘+‘+‘+‘7‘<‘L‘Q‘Q‘Q‘V‘V‘o‘v‘…‘“‘œ‘¬‘µ‘·‘·‘·‘·‘¾‘ő̑ӑڑá‘è‘ï‘ï‘ñ‘ñ‘÷‘ü‘“ \ No newline at end of file diff --git a/Compiler/CompilerB.HPP b/Compiler/CompilerB.HPP index 1738a9e..6644d0c 100644 --- a/Compiler/CompilerB.HPP +++ b/Compiler/CompilerB.HPP @@ -17,7 +17,7 @@ public extern I64 PassTrace(I64 i=0b1001111101); extern U0 StreamDir(); public extern I64 StreamExePrint(U8 *fmt,...); public extern U0 StreamPrint(U8 *fmt,...); -public extern Bool Trace(Bool val); +public extern Bool Trace(Bool val=ON); #help_index "Compiler/Lex" #help_file "::/Doc/Lex" diff --git a/Compiler/Lex.CPP b/Compiler/Lex.CPP index 03bd799..fcec39d 100644 --- a/Compiler/Lex.CPP +++ b/Compiler/Lex.CPP @@ -200,6 +200,7 @@ lgc_start2: goto lgc_done; } break; + case DOCT_MARKER: case DOCT_CURSOR: doc_e=doc_e->next; goto lgc_start2; @@ -529,7 +530,7 @@ lex_ident: } else { cc->cur_i64=i; cc->flags|=CCF_USE_LAST_U16; - cc->token=TK_INTEGER; + cc->token=TK_INT; goto lex_end; } } @@ -543,7 +544,7 @@ lex_ident: else { cc->cur_i64=i; cc->flags|=CCF_USE_LAST_U16; - cc->token=TK_INTEGER; + cc->token=TK_INT; goto lex_end; } } @@ -556,7 +557,7 @@ lex_ident: lex_is_int: cc->cur_i64=i; cc->flags|=CCF_USE_LAST_U16; - cc->token=TK_INTEGER; + cc->token=TK_INT; goto lex_end; } ch=LexGetChar(cc); diff --git a/Compiler/OpCodes.TXT b/Compiler/OpCodes.TXT index c07e62f..55476a0 100644 --- a/Compiler/OpCodes.TXT +++ b/Compiler/OpCodes.TXT @@ -19,6 +19,8 @@ forms. Get an Intel datasheet and learn which forms are valid. {Lock|Rep}{Seg|2E=NotBr|3E=Br}{OP}{ADD}{REX} + +':' is start of alias list. Marked with OCF_ALIAS. */ R8 AL 0; @@ -222,7 +224,7 @@ OPCODE PUSH 0x68, 32 !ID IMM32 0x50,+R 16 % R16 0x50,+R 32 R32 - 0x50,+R 32 ` R64 + 0x50,+R 32 `R64 0xFF,/6 16 % RM16 0xFF,/6 32 RM32 0xFF,/6 32 RM64; @@ -238,7 +240,7 @@ OPCODE POP 0x0F 0xA9, GS 0x58,+R 16 R16 0x58,+R 32 R32 - 0x58,+R 32 ` R64 + 0x58,+R 32 `R64 0x8F,/0 16 RM16 0x8F,/0 32 RM32 0x8F,/0 32 RM64; @@ -269,7 +271,7 @@ OPCODE MOV 0xB8,+R 16 R16 IMM16 0xB8,+R 32 &R32 UIMM32 0xB8,+R 32 R32 IMM32 - 0xB8,+R 32 ` R64 UIMM32 + 0xB8,+R 32 `R64 UIMM32 0xB8,+R 32 &R64 UIMM64 0xB8,+R 32 R64 IMM64 0xC6, &RM8 UIMM8 @@ -278,7 +280,7 @@ OPCODE MOV 0xC7, 16 RM16 IMM16 0xC7, 32 &RM32 UIMM32 0xC7, 32 RM32 IMM32 - 0xC7, 32 ` RM64 UIMM32 + 0xC7, 32 `RM64 UIMM32 0xC7, 32 RM64 IMM32; OPCODE ADC @@ -498,133 +500,77 @@ OPCODE XOR 0x31,/R 32 RM32 R32 0x31,/R 32 ^ RM64 R64; -OPCODE CMOVA - 0x0F 0x47,/R 16 R16 RM16 - 0x0F 0x47,/R 32 R32 RM32 - 0x0F 0x47,/R 32 R64 RM64; -OPCODE CMOVAE - 0x0F 0x43,/R 16 R16 RM16 - 0x0F 0x43,/R 32 R32 RM32 - 0x0F 0x43,/R 32 R64 RM64; -OPCODE CMOVB - 0x0F 0x42,/R 16 R16 RM16 - 0x0F 0x42,/R 32 R32 RM32 - 0x0F 0x42,/R 32 R64 RM64; -OPCODE CMOVBE - 0x0F 0x46,/R 16 R16 RM16 - 0x0F 0x46,/R 32 R32 RM32 - 0x0F 0x46,/R 32 R64 RM64; -OPCODE CMOVC - 0x0F 0x42,/R 16 R16 RM16 - 0x0F 0x42,/R 32 R32 RM32 - 0x0F 0x42,/R 32 R64 RM64; -OPCODE CMOVE - 0x0F 0x44,/R 16 R16 RM16 - 0x0F 0x44,/R 32 R32 RM32 - 0x0F 0x44,/R 32 R64 RM64; -OPCODE CMOVG - 0x0F 0x4F,/R 16 R16 RM16 - 0x0F 0x4F,/R 32 R32 RM32 - 0x0F 0x4F,/R 32 R64 RM64; -OPCODE CMOVGE - 0x0F 0x4D,/R 16 R16 RM16 - 0x0F 0x4D,/R 32 R32 RM32 - 0x0F 0x4D,/R 32 R64 RM64; -OPCODE CMOVL - 0x0F 0x4C,/R 16 R16 RM16 - 0x0F 0x4C,/R 32 R32 RM32 - 0x0F 0x4C,/R 32 R64 RM64; -OPCODE CMOVLE - 0x0F 0x4E,/R 16 R16 RM16 - 0x0F 0x4E,/R 32 R32 RM32 - 0x0F 0x4E,/R 32 R64 RM64; -OPCODE CMOVNA - 0x0F 0x46,/R 16 R16 RM16 - 0x0F 0x46,/R 32 R32 RM32 - 0x0F 0x46,/R 32 R64 RM64; -OPCODE CMOVNAE - 0x0F 0x42,/R 16 R16 RM16 - 0x0F 0x42,/R 32 R32 RM32 - 0x0F 0x42,/R 32 R64 RM64; -OPCODE CMOVNB - 0x0F 0x43,/R 16 R16 RM16 - 0x0F 0x43,/R 32 R32 RM32 - 0x0F 0x43,/R 32 R64 RM64; -OPCODE CMOVNBE - 0x0F 0x47,/R 16 R16 RM16 - 0x0F 0x47,/R 32 R32 RM32 - 0x0F 0x47,/R 32 R64 RM64; -OPCODE CMOVNC - 0x0F 0x43,/R 16 R16 RM16 - 0x0F 0x43,/R 32 R32 RM32 - 0x0F 0x43,/R 32 R64 RM64; -OPCODE CMOVNE - 0x0F 0x45,/R 16 R16 RM16 - 0x0F 0x45,/R 32 R32 RM32 - 0x0F 0x45,/R 32 R64 RM64; -OPCODE CMOVNG - 0x0F 0x4E,/R 16 R16 RM16 - 0x0F 0x4E,/R 32 R32 RM32 - 0x0F 0x4E,/R 32 R64 RM64; -OPCODE CMOVNGE - 0x0F 0x4C,/R 16 R16 RM16 - 0x0F 0x4C,/R 32 R32 RM32 - 0x0F 0x4C,/R 32 R64 RM64; -OPCODE CMOVNL - 0x0F 0x4D,/R 16 R16 RM16 - 0x0F 0x4D,/R 32 R32 RM32 - 0x0F 0x4D,/R 32 R64 RM64; -OPCODE CMOVNLE - 0x0F 0x4F,/R 16 R16 RM16 - 0x0F 0x4F,/R 32 R32 RM32 - 0x0F 0x4F,/R 32 R64 RM64; -OPCODE CMOVNO - 0x0F 0x41,/R 16 R16 RM16 - 0x0F 0x41,/R 32 R32 RM32 - 0x0F 0x41,/R 32 R64 RM64; -OPCODE CMOVNP - 0x0F 0x4B,/R 16 R16 RM16 - 0x0F 0x4B,/R 32 R32 RM32 - 0x0F 0x4B,/R 32 R64 RM64; -OPCODE CMOVNS - 0x0F 0x49,/R 16 R16 RM16 - 0x0F 0x49,/R 32 R32 RM32 - 0x0F 0x49,/R 32 R64 RM64; -OPCODE CMOVNZ - 0x0F 0x45,/R 16 R16 RM16 - 0x0F 0x45,/R 32 R32 RM32 - 0x0F 0x45,/R 32 R64 RM64; OPCODE CMOVO 0x0F 0x40,/R 16 R16 RM16 0x0F 0x40,/R 32 R32 RM32 0x0F 0x40,/R 32 R64 RM64; -OPCODE CMOVP - 0x0F 0x4A,/R 16 R16 RM16 - 0x0F 0x4A,/R 32 R32 RM32 - 0x0F 0x4A,/R 32 R64 RM64; -OPCODE CMOVPE - 0x0F 0x4A,/R 16 R16 RM16 - 0x0F 0x4A,/R 32 R32 RM32 - 0x0F 0x4A,/R 32 R64 RM64; -OPCODE CMOVPO - 0x0F 0x4B,/R 16 R16 RM16 - 0x0F 0x4B,/R 32 R32 RM32 - 0x0F 0x4B,/R 32 R64 RM64; +OPCODE CMOVNO + 0x0F 0x41,/R 16 R16 RM16 + 0x0F 0x41,/R 32 R32 RM32 + 0x0F 0x41,/R 32 R64 RM64; +OPCODE CMOVB + 0x0F 0x42,/R 16 R16 RM16 + 0x0F 0x42,/R 32 R32 RM32 + 0x0F 0x42,/R 32 R64 RM64 :CMOVC CMOVNAE; +OPCODE CMOVAE + 0x0F 0x43,/R 16 R16 RM16 + 0x0F 0x43,/R 32 R32 RM32 + 0x0F 0x43,/R 32 R64 RM64 :CMOVNB CMOVNC; +OPCODE CMOVE + 0x0F 0x44,/R 16 R16 RM16 + 0x0F 0x44,/R 32 R32 RM32 + 0x0F 0x44,/R 32 R64 RM64 :CMOVZ; +OPCODE CMOVNE + 0x0F 0x45,/R 16 R16 RM16 + 0x0F 0x45,/R 32 R32 RM32 + 0x0F 0x45,/R 32 R64 RM64 :CMOVNZ; +OPCODE CMOVBE + 0x0F 0x46,/R 16 R16 RM16 + 0x0F 0x46,/R 32 R32 RM32 + 0x0F 0x46,/R 32 R64 RM64 :CMOVNA; +OPCODE CMOVA + 0x0F 0x47,/R 16 R16 RM16 + 0x0F 0x47,/R 32 R32 RM32 + 0x0F 0x47,/R 32 R64 RM64 :CMOVNBE; OPCODE CMOVS 0x0F 0x48,/R 16 R16 RM16 0x0F 0x48,/R 32 R32 RM32 0x0F 0x48,/R 32 R64 RM64; -OPCODE CMOVZ - 0x0F 0x44,/R 16 R16 RM16 - 0x0F 0x44,/R 32 R32 RM32 - 0x0F 0x44,/R 32 R64 RM64; +OPCODE CMOVNS + 0x0F 0x49,/R 16 R16 RM16 + 0x0F 0x49,/R 32 R32 RM32 + 0x0F 0x49,/R 32 R64 RM64; +OPCODE CMOVP + 0x0F 0x4A,/R 16 R16 RM16 + 0x0F 0x4A,/R 32 R32 RM32 + 0x0F 0x4A,/R 32 R64 RM64 :CMOVPE; +OPCODE CMOVNP + 0x0F 0x4B,/R 16 R16 RM16 + 0x0F 0x4B,/R 32 R32 RM32 + 0x0F 0x4B,/R 32 R64 RM64 :CMOVPO; +OPCODE CMOVL + 0x0F 0x4C,/R 16 R16 RM16 + 0x0F 0x4C,/R 32 R32 RM32 + 0x0F 0x4C,/R 32 R64 RM64 :CMOVNGE; +OPCODE CMOVGE + 0x0F 0x4D,/R 16 R16 RM16 + 0x0F 0x4D,/R 32 R32 RM32 + 0x0F 0x4D,/R 32 R64 RM64 :CMOVNL; +OPCODE CMOVLE + 0x0F 0x4E,/R 16 R16 RM16 + 0x0F 0x4E,/R 32 R32 RM32 + 0x0F 0x4E,/R 32 R64 RM64 :CMOVNG; +OPCODE CMOVG + 0x0F 0x4F,/R 16 R16 RM16 + 0x0F 0x4F,/R 32 R32 RM32 + 0x0F 0x4F,/R 32 R64 RM64 :CMOVNLE; OPCODE CALL 0xE8, 16 !&CW REL16 0xFF,/2 16 ! RM16 0xE8, 32 !&CD REL32 0xFF,/2 32 ! RM32 - 0xFF,/2 32 !` RM64 + 0xFF,/2 32 !`RM64 // 0x9A, CD PTR1616 // 0xFF,/3 16 M1616 // 0x9A, 16 CP PTR1632 @@ -639,132 +585,74 @@ OPCODE JMP 0xFF,/4 16 ! RM16 0xFF,/4 32 ! RM32 0xFF,/4 32 ! RM64; -OPCODE JA - 0x77, &CB REL8 - 0x0F 0x87, 16 !CW REL16 - 0x0F 0x87, 32 !CD REL32; -OPCODE JAE - 0x73, &CB REL8 - 0x0F 0x83, 16 !CW REL16 - 0x0F 0x83, 32 !CD REL32; -OPCODE JB - 0x72, &CB REL8 - 0x0F 0x82, 16 !CW REL16 - 0x0F 0x82, 32 !CD REL32; -OPCODE JBE - 0x76, &CB REL8 - 0x0F 0x86, 16 !CW REL16 - 0x0F 0x86, 32 !CD REL32; -OPCODE JC - 0x72, &CB REL8 - 0x0F 0x82, 16 !CW REL16 - 0x0F 0x82, 32 !CD REL32; -OPCODE JCXZ - 0xE3, CB REL8; -OPCODE JECXZ - 0xE3, CB REL8; -OPCODE JRCXZ - 0xE3, CB REL8; -OPCODE JE - 0x74, &CB REL8 - 0x0F 0x84, 16 !CW REL16 - 0x0F 0x84, 32 !CD REL32; -OPCODE JG - 0x7F, &CB REL8 - 0x0F 0x8F, 16 !CW REL16 - 0x0F 0x8F, 32 !CD REL32; -OPCODE JGE - 0x7D, &CB REL8 - 0x0F 0x8D, 16 !CW REL16 - 0x0F 0x8D, 32 !CD REL32; -OPCODE JL - 0x7C, &CB REL8 - 0x0F 0x8C, 16 !CW REL16 - 0x0F 0x8C, 32 !CD REL32; -OPCODE JLE - 0x7E, &CB REL8 - 0x0F 0x8E, 16 !CW REL16 - 0x0F 0x8E, 32 !CD REL32; -OPCODE JNA - 0x76, &CB REL8 - 0x0F 0x86, 16 !CW REL16 - 0x0F 0x86, 32 !CD REL32; -OPCODE JNAE - 0x72, &CB REL8 - 0x0F 0x82, 16 !CW REL16 - 0x0F 0x82, 32 !CD REL32; -OPCODE JNB - 0x73, &CB REL8 - 0x0F 0x83, 16 !CW REL16 - 0x0F 0x83, 32 !CD REL32; -OPCODE JNBE - 0x77, &CB REL8 - 0x0F 0x87, 16 !CW REL16 - 0x0F 0x87, 32 !CD REL32; -OPCODE JNC - 0x73, &CB REL8 - 0x0F 0x83, 16 !CW REL16 - 0x0F 0x83, 32 !CD REL32; -OPCODE JNE - 0x75, &CB REL8 - 0x0F 0x85, 16 !CW REL16 - 0x0F 0x85, 32 !CD REL32; -OPCODE JNG - 0x7E, &CB REL8 - 0x0F 0x8E, 16 !CW REL16 - 0x0F 0x8E, 32 !CD REL32; -OPCODE JNGE - 0x7C, &CB REL8 - 0x0F 0x8C, 16 !CW REL16 - 0x0F 0x8C, 32 !CD REL32; -OPCODE JNL - 0x7D, &CB REL8 - 0x0F 0x8D, 16 !CW REL16 - 0x0F 0x8D, 32 !CD REL32; -OPCODE JNLE - 0x7F, &CB REL8 - 0x0F 0x8F, 16 !CW REL16 - 0x0F 0x8F, 32 !CD REL32; -OPCODE JNO - 0x71, &CB REL8 - 0x0F 0x81, 16 !CW REL16 - 0x0F 0x81, 32 !CD REL32; -OPCODE JNP - 0x7B, &CB REL8 - 0x0F 0x8B, 16 !CW REL16 - 0x0F 0x8B, 32 !CD REL32; -OPCODE JNS - 0x79, &CB REL8 - 0x0F 0x89, 16 !CW REL16 - 0x0F 0x89, 32 !CD REL32; -OPCODE JNZ - 0x75, &CB REL8 - 0x0F 0x85, 16 !CW REL16 - 0x0F 0x85, 32 !CD REL32; + OPCODE JO 0x70, &CB REL8 0x0F 0x80, 16 !CW REL16 0x0F 0x80, 32 !CD REL32; -OPCODE JP - 0x7A, &CB REL8 - 0x0F 0x8A, 16 !CW REL16 - 0x0F 0x8A, 32 !CD REL32; -OPCODE JPE - 0x7A, &CB REL8 - 0x0F 0x8A, 16 !CW REL16 - 0x0F 0x8A, 32 !CD REL32; -OPCODE JPO - 0x7B, &CB REL8 - 0x0F 0x8B, 16 !CW REL16 - 0x0F 0x8B, 32 !CD REL32; +OPCODE JNO + 0x71, &CB REL8 + 0x0F 0x81, 16 !CW REL16 + 0x0F 0x81, 32 !CD REL32; +OPCODE JB + 0x72, &CB REL8 + 0x0F 0x82, 16 !CW REL16 + 0x0F 0x82, 32 !CD REL32 :JC JNAE; +OPCODE JAE + 0x73, &CB REL8 + 0x0F 0x83, 16 !CW REL16 + 0x0F 0x83, 32 !CD REL32 :JNB JNC; +OPCODE JE + 0x74, &CB REL8 + 0x0F 0x84, 16 !CW REL16 + 0x0F 0x84, 32 !CD REL32 :JZ; +OPCODE JNE + 0x75, &CB REL8 + 0x0F 0x85, 16 !CW REL16 + 0x0F 0x85, 32 !CD REL32 :JNZ; +OPCODE JBE + 0x76, &CB REL8 + 0x0F 0x86, 16 !CW REL16 + 0x0F 0x86, 32 !CD REL32 :JNA; +OPCODE JA + 0x77, &CB REL8 + 0x0F 0x87, 16 !CW REL16 + 0x0F 0x87, 32 !CD REL32 :JNBE; OPCODE JS 0x78, &CB REL8 0x0F 0x88, 16 !CW REL16 0x0F 0x88, 32 !CD REL32; -OPCODE JZ - 0x74, &CB REL8 - 0x0F 0x84, 16 !CW REL16 - 0x0F 0x84, 32 !CD REL32; +OPCODE JNS + 0x79, &CB REL8 + 0x0F 0x89, 16 !CW REL16 + 0x0F 0x89, 32 !CD REL32; +OPCODE JP + 0x7A, &CB REL8 + 0x0F 0x8A, 16 !CW REL16 + 0x0F 0x8A, 32 !CD REL32 :JPE; +OPCODE JNP + 0x7B, &CB REL8 + 0x0F 0x8B, 16 !CW REL16 + 0x0F 0x8B, 32 !CD REL32 :JPO; +OPCODE JL + 0x7C, &CB REL8 + 0x0F 0x8C, 16 !CW REL16 + 0x0F 0x8C, 32 !CD REL32 :JNGE; +OPCODE JGE + 0x7D, &CB REL8 + 0x0F 0x8D, 16 !CW REL16 + 0x0F 0x8D, 32 !CD REL32 :JNL; +OPCODE JLE + 0x7E, &CB REL8 + 0x0F 0x8E, 16 !CW REL16 + 0x0F 0x8E, 32 !CD REL32 :JNG; +OPCODE JG + 0x7F, &CB REL8 + 0x0F 0x8F, 16 !CW REL16 + 0x0F 0x8F, 32 !CD REL32 :JNLE; + +OPCODE JCXZ + 0xE3, CB REL8 :JECXZ JRCXZ; OPCODE INC 0x40,+R 16 % R16 @@ -979,10 +867,8 @@ OPCODE LODSW 0xAD, 16; OPCODE LODSD 0xAD, 32; OPCODE LODSQ 0xAD, 32=; OPCODE LOOP 0xE2, CB REL8; -OPCODE LOOPE 0xE1, CB REL8; -OPCODE LOOPZ 0xE1, CB REL8; -OPCODE LOOPNE 0xE0, CB REL8; -OPCODE LOOPNZ 0xE0, CB REL8; +OPCODE LOOPE 0xE1, CB REL8 :LOOPZ; +OPCODE LOOPNE 0xE0, CB REL8 :LOOPNZ; OPCODE LSL 0x0F 0x03,/R 16 R16 RM16 0x0F 0x03,/R 32 R32 RM32 @@ -1072,36 +958,22 @@ OPCODE SEGDS 0x3E; OPCODE SEGES 0x26; OPCODE SEGFS 0x64; OPCODE SEGGS 0x65; -OPCODE SETA 0x0F 0x97, RM8; -OPCODE SETAE 0x0F 0x93, RM8; -OPCODE SETB 0x0F 0x92, RM8; -OPCODE SETBE 0x0F 0x96, RM8; -OPCODE SETC 0x0F 0x92, RM8; -OPCODE SETE 0x0F 0x94, RM8; -OPCODE SETG 0x0F 0x9F, RM8; -OPCODE SETGE 0x0F 0x9D, RM8; -OPCODE SETL 0x0F 0x9C, RM8; -OPCODE SETLE 0x0F 0x9E, RM8; -OPCODE SETNA 0x0F 0x96, RM8; -OPCODE SETNAE 0x0F 0x92, RM8; -OPCODE SETNB 0x0F 0x93, RM8; -OPCODE SETNBE 0x0F 0x97, RM8; -OPCODE SETNC 0x0F 0x93, RM8; -OPCODE SETNE 0x0F 0x95, RM8; -OPCODE SETNG 0x0F 0x9E, RM8; -OPCODE SETNGE 0x0F 0x9C, RM8; -OPCODE SETNL 0x0F 0x9D, RM8; -OPCODE SETNLE 0x0F 0x9F, RM8; +OPCODE SETO 0x0F 0x90, RM8; OPCODE SETNO 0x0F 0x91, RM8; -OPCODE SETNP 0x0F 0x9B, RM8; +OPCODE SETB 0x0F 0x92, RM8 :SETC SETNAE; +OPCODE SETAE 0x0F 0x93, RM8 :SETNC SETNB; +OPCODE SETE 0x0F 0x94, RM8 :SETZ; +OPCODE SETNE 0x0F 0x95, RM8 :SETNZ; +OPCODE SETBE 0x0F 0x96, RM8 :SETNA; +OPCODE SETA 0x0F 0x97, RM8 :SETNBE; +OPCODE SETS 0x0F 0x98, RM8; OPCODE SETNS 0x0F 0x99, RM8; -OPCODE SETNZ 0x0F 0x95, RM8; -OPCODE SETO 0x0F 0x90, RM8; -OPCODE SETP 0x0F 0x9A, RM8; -OPCODE SETPE 0x0F 0x9A, RM8; -OPCODE SETPO 0x0F 0x9B, RM8; -OPCODE SETS 0x0F 0x98, RM8; -OPCODE SETZ 0x0F 0x94, RM8; +OPCODE SETP 0x0F 0x9A, RM8 :SETPE; +OPCODE SETNP 0x0F 0x9B, RM8 :SETPO; +OPCODE SETL 0x0F 0x9C, RM8 :SETNGE; +OPCODE SETGE 0x0F 0x9D, RM8 :SETNL; +OPCODE SETLE 0x0F 0x9E, RM8 :SETNG; +OPCODE SETG 0x0F 0x9F, RM8 :SETNLE; OPCODE SHLD 0x0F 0xA5,/R 16 RM16 R16 0x0F 0xA5,/R 32 RM32 R32 @@ -1138,42 +1010,6 @@ OPCODE XADD 0x0F 0xC1,/R 32 RM64 R64; OPCODE XLATB 0xD7; -OPCODE RCL - 0xD2,/2 RM8 CL - 0xD3,/2 16 RM16 CL - 0xD3,/2 32 RM32 CL - 0xD3,/2 32 RM64 CL - 0xC0,/2 IB &RM8 UIMM8 - 0xC0,/2 IB RM8 IMM8 - 0xC1,/2 16 IB &RM16 UIMM8 - 0xC1,/2 16 IB RM16 IMM8 - 0xC1,/2 32 IB &RM32 UIMM8 - 0xC1,/2 32 IB RM32 IMM8 - 0xC1,/2 32 IB &RM64 UIMM8 - 0xC1,/2 32 IB RM64 IMM8; -OPCODE RCL1 - 0xD0,/2 RM8 - 0xD1,/2 16 RM16 - 0xD1,/2 32 RM32 - 0xD1,/2 32 RM64; -OPCODE RCR - 0xD2,/3 RM8 CL - 0xD3,/3 16 RM16 CL - 0xD3,/3 32 RM32 CL - 0xD3,/3 32 RM64 CL - 0xC0,/3 IB &RM8 UIMM8 - 0xC0,/3 IB RM8 IMM8 - 0xC1,/3 16 IB &RM16 UIMM8 - 0xC1,/3 16 IB RM16 IMM8 - 0xC1,/3 32 IB &RM32 UIMM8 - 0xC1,/3 32 IB RM32 IMM8 - 0xC1,/3 32 IB &RM64 UIMM8 - 0xC1,/3 32 IB RM64 IMM8; -OPCODE RCR1 - 0xD0,/3 RM8 - 0xD1,/3 16 RM16 - 0xD1,/3 32 RM32 - 0xD1,/3 32 RM64; OPCODE ROL 0xD2,/0 RM8 CL 0xD3,/0 16 RM16 CL @@ -1210,8 +1046,43 @@ OPCODE ROR1 0xD1,/1 16 RM16 0xD1,/1 32 RM32 0xD1,/1 32 RM64; - -OPCODE SAL +OPCODE RCL + 0xD2,/2 RM8 CL + 0xD3,/2 16 RM16 CL + 0xD3,/2 32 RM32 CL + 0xD3,/2 32 RM64 CL + 0xC0,/2 IB &RM8 UIMM8 + 0xC0,/2 IB RM8 IMM8 + 0xC1,/2 16 IB &RM16 UIMM8 + 0xC1,/2 16 IB RM16 IMM8 + 0xC1,/2 32 IB &RM32 UIMM8 + 0xC1,/2 32 IB RM32 IMM8 + 0xC1,/2 32 IB &RM64 UIMM8 + 0xC1,/2 32 IB RM64 IMM8; +OPCODE RCL1 + 0xD0,/2 RM8 + 0xD1,/2 16 RM16 + 0xD1,/2 32 RM32 + 0xD1,/2 32 RM64; +OPCODE RCR + 0xD2,/3 RM8 CL + 0xD3,/3 16 RM16 CL + 0xD3,/3 32 RM32 CL + 0xD3,/3 32 RM64 CL + 0xC0,/3 IB &RM8 UIMM8 + 0xC0,/3 IB RM8 IMM8 + 0xC1,/3 16 IB &RM16 UIMM8 + 0xC1,/3 16 IB RM16 IMM8 + 0xC1,/3 32 IB &RM32 UIMM8 + 0xC1,/3 32 IB RM32 IMM8 + 0xC1,/3 32 IB &RM64 UIMM8 + 0xC1,/3 32 IB RM64 IMM8; +OPCODE RCR1 + 0xD0,/3 RM8 + 0xD1,/3 16 RM16 + 0xD1,/3 32 RM32 + 0xD1,/3 32 RM64; +OPCODE SHL 0xD2,/4 RM8 CL 0xD3,/4 16 RM16 CL 0xD3,/4 32 RM32 CL @@ -1223,13 +1094,30 @@ OPCODE SAL 0xC1,/4 32 IB &RM32 UIMM8 0xC1,/4 32 IB RM32 IMM8 0xC1,/4 32 IB &RM64 UIMM8 - 0xC1,/4 32 IB RM64 IMM8; -OPCODE SAL1 + 0xC1,/4 32 IB RM64 IMM8 :SAL; +OPCODE SHL1 0xD0,/4 RM8 0xD1,/4 16 RM16 0xD1,/4 32 RM32 - 0xD1,/4 32 RM64; - + 0xD1,/4 32 RM64 :SAL1; +OPCODE SHR + 0xD2,/5 RM8 CL + 0xD3,/5 16 RM16 CL + 0xD3,/5 32 RM32 CL + 0xD3,/5 32 RM64 CL + 0xC0,/5 IB &RM8 UIMM8 + 0xC0,/5 IB RM8 IMM8 + 0xC1,/5 16 IB &RM16 UIMM8 + 0xC1,/5 16 IB RM16 IMM8 + 0xC1,/5 32 IB &RM32 UIMM8 + 0xC1,/5 32 IB RM32 IMM8 + 0xC1,/5 32 IB &RM64 UIMM8 + 0xC1,/5 32 IB RM64 IMM8; +OPCODE SHR1 + 0xD0,/5 RM8 + 0xD1,/5 16 RM16 + 0xD1,/5 32 RM32 + 0xD1,/5 32 RM64; OPCODE SAR 0xD2,/7 RM8 CL 0xD3,/7 16 RM16 CL @@ -1249,63 +1137,25 @@ OPCODE SAR1 0xD1,/7 32 RM32 0xD1,/7 32 RM64; -OPCODE SHL - 0xD2,/4 RM8 CL - 0xD3,/4 16 RM16 CL - 0xD3,/4 32 RM32 CL - 0xD3,/4 32 RM64 CL - 0xC0,/4 IB &RM8 UIMM8 - 0xC0,/4 IB RM8 IMM8 - 0xC1,/4 16 IB &RM16 UIMM8 - 0xC1,/4 16 IB RM16 IMM8 - 0xC1,/4 32 IB &RM32 UIMM8 - 0xC1,/4 32 IB RM32 IMM8 - 0xC1,/4 32 IB &RM64 UIMM8 - 0xC1,/4 32 IB RM64 IMM8; -OPCODE SHL1 - 0xD0,/4 RM8 - 0xD1,/4 16 RM16 - 0xD1,/4 32 RM32 - 0xD1,/4 32 RM64; - -OPCODE SHR - 0xD2,/5 RM8 CL - 0xD3,/5 16 RM16 CL - 0xD3,/5 32 RM32 CL - 0xD3,/5 32 RM64 CL - 0xC0,/5 IB &RM8 UIMM8 - 0xC0,/5 IB RM8 IMM8 - 0xC1,/5 16 IB &RM16 UIMM8 - 0xC1,/5 16 IB RM16 IMM8 - 0xC1,/5 32 IB &RM32 UIMM8 - 0xC1,/5 32 IB RM32 IMM8 - 0xC1,/5 32 IB &RM64 UIMM8 - 0xC1,/5 32 IB RM64 IMM8; -OPCODE SHR1 - 0xD0,/5 RM8 - 0xD1,/5 16 RM16 - 0xD1,/5 32 RM32 - 0xD1,/5 32 RM64; - OPCODE FILD 0xDF,/0 M16 //Load I16 0xDB,/0 M32 //Load I32 - 0xDF,/5 ` M64; //Load I64 + 0xDF,/5 `M64; //Load I64 OPCODE FISTP - 0xDF,/7 ` M64; //Store I64 + 0xDF,/7 `M64; //Store I64 OPCODE FISTTP - 0xDD,/1 ` M64; //Store I64 + 0xDD,/1 `M64; //Store I64 OPCODE FLD 0xD9,/0 M32 //Load F32 - 0xDD,/0 ` M64 //Load F64 + 0xDD,/0 `M64 //Load F64 0xD9 0xC0,+I* STI; OPCODE FSTP 0xD9,/3 M32 //Store F32 - 0xDD,/3 ` M64 //Store F64 + 0xDD,/3 `M64 //Store F64 0xDD 0xD8,+I* STI; OPCODE FST 0xD9,/2 M32 //Store F32 - 0xDD,/2 ` M64 //Store F64 + 0xDD,/2 `M64 //Store F64 0xDD 0xD0,+I* STI; OPCODE FRSTOR 0xDD,/4 M32 @@ -1327,7 +1177,7 @@ OPCODE FSQRT 0xD9 0xFA,*; OPCODE FMULP 0xDE 0xC8,+I* STI ST0; OPCODE FMUL 0xD8,/1 ST0 M32 - 0xDC,/1 ` ST0 M64 + 0xDC,/1 `ST0 M64 0xD8 0xC8,+I* ST0 STI 0xDC 0xC8,+I* STI ST0; OPCODE FIMUL @@ -1336,32 +1186,32 @@ OPCODE FIMUL OPCODE FDIVP 0xDE 0xF8,+I* STI ST0; OPCODE FDIV 0xD8,/6 ST0 M32 - 0xDC,/6 ` ST0 M64 + 0xDC,/6 `ST0 M64 0xD8 0xF0,+I* ST0 STI 0xDC 0xF8,+I* STI ST0; OPCODE FDIVRP 0xDE 0xF0,+I* STI ST0; OPCODE FDIVR 0xD8,/7 ST0 M32 - 0xDC,/7 ` ST0 M64 + 0xDC,/7 `ST0 M64 0xD8 0xF8,+I* ST0 STI 0xDC 0xF0,+I* STI ST0; OPCODE FPREM 0xD9 0xF8,*; OPCODE FADDP 0xDE 0xC0,+I* STI ST0; OPCODE FADD 0xD8,/0 ST0 M32 - 0xDC,/0 ` ST0 M64 + 0xDC,/0 `ST0 M64 0xD8 0xC0,+I* ST0 STI 0xDC 0xC0,+I* STI ST0; OPCODE FSUBP 0xDE 0xE8,+I* STI ST0; OPCODE FSUB 0xD8,/4 ST0 M32 - 0xDC,/4 ` ST0 M64 + 0xDC,/4 `ST0 M64 0xD8 0xE0,+I* ST0 STI 0xDC 0xE8,+I* STI ST0; OPCODE FSUBRP 0xDE 0xE0,+I* STI ST0; OPCODE FSUBR 0xD8,/5 ST0 M32 - 0xDC,/5 ` ST0 M64 + 0xDC,/5 `ST0 M64 0xD8 0xE8,+I* ST0 STI 0xDC 0xE0,+I* STI ST0; OPCODE FCOMIP 0xDF 0xF0,+I* ST0 STI; diff --git a/Compiler/OptLib.CPP b/Compiler/OptLib.CPP index 4b841e6..e1cb928 100644 --- a/Compiler/OptLib.CPP +++ b/Compiler/OptLib.CPP @@ -18,16 +18,16 @@ U0 OptSetNOP1(CIntermediateCode *tempi) { tempi->ic_code=IC_NOP1; tempi->ic_flags=0; - tempi->a1.type=TY_NULL+tempi->a1.type&RT_MASK; - tempi->r.type =TY_NULL+tempi->r.type &RT_MASK; + tempi->a1.type=MDF_NULL+tempi->a1.type.raw_type; + tempi->r.type =MDF_NULL+tempi->r.type.raw_type; } U0 OptSetNOP2(CIntermediateCode *tempi,I64 stk_delta=1) { tempi->ic_code=IC_NOP2; tempi->ic_data=stk_delta; - tempi->a1.type=TY_NULL+tempi->a1.type&RT_MASK; - tempi->r.type =TY_NULL+tempi->r.type &RT_MASK; + tempi->a1.type=MDF_NULL+tempi->a1.type.raw_type; + tempi->r.type =MDF_NULL+tempi->r.type.raw_type; } CIntermediateCode *OptFree(CIntermediateCode *tempi) @@ -168,7 +168,7 @@ fb_here2: return FBO1_NOT_CONST; } } - *is_unsigned=tempc1->raw_type&1 || tempc2->raw_type&1; + *is_unsigned=tempc1->raw_type&RTF_UNSIGNED || tempc2->raw_type&RTF_UNSIGNED; if (tempi1->ic_code==IC_IMM_I64 && tempi2->ic_code==IC_IMM_I64 && !(tempi->ic_flags&(ICF_PUSH_CMP|ICF_POP_CMP))) { tempi->ic_flags|=tempi1->ic_flags|tempi2->ic_flags; @@ -193,8 +193,7 @@ Bool OptFixupBinaryOp2(CIntermediateCode **tempi1,CIntermediateCode **tempi2) return FALSE; } -Bool OptFixupUnaryOp(CIntermediateCode *tempi, - CIntermediateCode *tempi1, +Bool OptFixupUnaryOp(CIntermediateCode *tempi, CIntermediateCode *tempi1, Bool *is_unsigned) { CHashClass *tempc,*tempc1; @@ -217,7 +216,7 @@ Bool OptFixupUnaryOp(CIntermediateCode *tempi, } else return FBO1_NOT_CONST; } - *is_unsigned=tempc1->raw_type&1; + *is_unsigned=tempc1->raw_type&RTF_UNSIGNED; if (tempi1->ic_code==IC_IMM_I64) { tempi->ic_flags|=tempi1->ic_flags; OptSetNOP1(tempi1); @@ -305,7 +304,7 @@ CIntermediateCode *OptBrZero(CCmpCtrl *cc,CIntermediateCode *tempi) !(tempi->ic_flags&ICF_USE_F64)) { tempi->ic_code+=IC_BR_EQU_EQU2-IC_BR_EQU_EQU; tempi->ic_flags&=~ICF_PUSH_CMP; - tempii=tempi->next; //IC_PUSH_CMP instruction + tempii=tempi->next; //IC_PUSH_CMP inst while (tempii->ic_code!=IC_PUSH_CMP) tempii=tempii->next; tempii->t.a1t=tempi; @@ -432,7 +431,7 @@ CIntermediateCode *OptBrNotZero(CCmpCtrl *cc,CIntermediateCode *tempi) !(tempi->ic_flags&ICF_USE_F64)) { tempi->ic_code+=IC_BR_EQU_EQU2-IC_BR_EQU_EQU; tempi->ic_flags&=~ICF_PUSH_CMP; - tempii=tempi->next; //IC_PUSH_CMP instruction + tempii=tempi->next; //IC_PUSH_CMP inst while (tempii->ic_code!=IC_PUSH_CMP) tempii=tempii->next; tempii->t.a1t=tempi; diff --git a/Compiler/OptPass012.CPP b/Compiler/OptPass012.CPP index 2fc495f..c0328db 100644 --- a/Compiler/OptPass012.CPP +++ b/Compiler/OptPass012.CPP @@ -186,7 +186,7 @@ args. tempi->ic_code=IC_IMM_F64; } } - if (tempc1->type&HTT_INTERNAL_TYPE && tempc1->raw_type& 1) + if (tempc1->type&HTT_INTERNAL_TYPE && tempc1->raw_type&RTF_UNSIGNED) tempi->ic_class=cmp.internal_types[tempc1->raw_type-1]; break; case IC_SHL_CONST: @@ -449,7 +449,7 @@ args. } else if (cc->pass==2 && tempi2->ic_code==IC_IMM_I64 && (i=tempi2->ic_data) && Bsf(i)==Bsr(i) && tempi_push->ic_class->raw_type!=RT_F64 && - tempi_push->ic_class->raw_type&1) {//do only unsigned + tempi_push->ic_class->raw_type&RTF_UNSIGNED) {//do only unsigned tempi2->ic_data=i-1; tempi->ic_code=IC_AND; } @@ -665,8 +665,7 @@ args. OptSetNOP1(tempi2); OptSetNOP1(tempi); } else - if (tempi1->ic_code==IC_ADD || - tempi1->ic_code==IC_SUB) { + if (tempi1->ic_code==IC_ADD || tempi1->ic_code==IC_SUB) { if (tempi1->t.a1t->ic_code==IC_IMM_F64) { tempi1->ic_flags|=tempi->ic_flags|tempi2->ic_flags; tempi1->t.a1t->ic_data(F64)-=tempi2->ic_data(F64); @@ -826,8 +825,7 @@ args. LexWarn(cc,"Assign U0 "); sub_switch_start: case IC_MUL_EQU: - if (tempi2->ic_code==IC_IMM_I64 && - tempc->raw_type!=RT_F64 && + if (tempi2->ic_code==IC_IMM_I64 && tempc->raw_type!=RT_F64 && tempc2->raw_type!=RT_F64) { if (i=tempi2->ic_data) { if (Bsf(i)==Bsr(i)) { @@ -838,8 +836,7 @@ args. } break; case IC_DIV_EQU: - if (tempi2->ic_code==IC_IMM_I64 && - tempc->raw_type!=RT_F64 && + if (tempi2->ic_code==IC_IMM_I64 && tempc->raw_type!=RT_F64 && tempc2->raw_type!=RT_F64 && (i=tempi2->ic_data) && Bsf(i)==Bsr(i)) { tempi2->ic_data=Bsf(i); @@ -847,8 +844,7 @@ args. } break; case IC_MOD_EQU: - if (tempi2->ic_code==IC_IMM_I64 && - tempc->raw_type!=RT_F64 && + if (tempi2->ic_code==IC_IMM_I64 && tempc->raw_type!=RT_F64 && tempc2->raw_type!=RT_F64 && (i=tempi2->ic_data) && Bsf(i)==Bsr(i)) { tempi2->ic_data=i-1; @@ -1286,9 +1282,7 @@ args. "Pass:%d Stk:%08X\n",cc->pass,ps->ptr; LexExcept(cc,"Compiler Optimization Error at "); } -/*This is for determining type conversions -for passing args to funs. -*/ +//This is for determining type conversions for passing args to funs. return last_with_class; } diff --git a/Compiler/OptPass3.CPP b/Compiler/OptPass3.CPP index 762f359..ab45efe 100644 --- a/Compiler/OptPass3.CPP +++ b/Compiler/OptPass3.CPP @@ -40,12 +40,10 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) mv[member_cnt].offset_start=tempm->offset; mv[member_cnt].offset_end=tempm->offset+MaxI64(1,tempm->size); mv[member_cnt++].m=tempm; - } else { - if (tempm->reg==REG_ALLOC) - PrintWarn("Can't reg var\n $$LK,\"FL:%s,%d\"$$ '%s' in '%s'\n", - cc->lex_include_stk->full_name, - cc->lex_include_stk->line_num,tempm->str,cc->htc.fun->str); - } + } else if (tempm->reg==REG_ALLOC) + PrintWarn("Can't reg var\n $$LK,\"FL:%s,%d\"$$ '%s' in '%s'\n", + cc->lex_include_stk->full_name, + cc->lex_include_stk->line_num,tempm->str,cc->htc.fun->str); tempm=tempm->next; } } else @@ -75,7 +73,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempc2=cmp.internal_types[RT_I64]; else tempc2=tempi->t.a2c; - tempi->a2.type=TY_STK+CmpRawType(tempc2); + tempi->a2.type=MDF_STK+CmpRawType(tempc2); tempi->a2.type_pointed_to=CmpRawTypePointed(tempc2); tempi->ic_flags|=ICF_A2_WAS_STK; case IS_1_ARG: @@ -86,7 +84,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempc1=cmp.internal_types[RT_I64]; else tempc1=tempi->t.a1c; - tempi->a1.type=TY_STK+CmpRawType(tempc1); + tempi->a1.type=MDF_STK+CmpRawType(tempc1); tempi->a1.type_pointed_to=CmpRawTypePointed(tempc1); tempi->ic_flags|=ICF_A1_WAS_STK; break; @@ -94,7 +92,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) break; } if (intermediate_code_table[code].result_cnt) { - tempi->r.type=TY_STK+CmpRawType(tempc); + tempi->r.type=MDF_STK+CmpRawType(tempc); tempi->r.type_pointed_to=CmpRawTypePointed(tempc); tempi->ic_flags|=ICF_R_WAS_STK; PrsPush(ps,tempi); @@ -121,12 +119,12 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempi->a1.reg=REG_RBP; break; case IC_DEREF: - tempi->a1.type_pointed_to=tempi->r.type&RT_MASK; + tempi->a1.type_pointed_to=tempi->r.type.raw_type; if (tempi1->ic_code==IC_LEA) { tempi->ic_flags|=tempi1->ic_flags; tempi->a1.reg=tempi1->a1.reg; tempi->a1.disp=tempi1->a1.disp; - tempi->a1.type=TY_DISP+tempi->r.type&RT_MASK; + tempi->a1.type=MDF_DISP+tempi->r.type.raw_type; tempi->a1.type_pointed_to=tempi->r.type_pointed_to; tempi->ic_code=IC_MOV; OptFree(tempi1); @@ -142,7 +140,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempi->ic_flags|=tempil2->ic_flags|tempil1->ic_flags; tempi->a1.reg=tempil2->a1.reg; tempi->a1.disp=tempi->ic_data; - tempi->a1.type=TY_DISP+tempi->r.type&RT_MASK; + tempi->a1.type=MDF_DISP+tempi->r.type.raw_type; tempi->a1.type_pointed_to=tempi->r.type_pointed_to; tempi->ic_code=IC_MOV; OptFree(tempil2); @@ -157,8 +155,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempi->r.type_pointed_to=CmpRawTypePointed(tempi->t.a1c); case IC_DEREF_PP: case IC_DEREF_MM: - if (tempi1->ic_code==IC_LEA && - tempi1->a1.type&TY_MASK==TY_DISP && + if (tempi1->ic_code==IC_LEA && tempi1->a1.type&MDF_DISP && tempi1->a1.reg==REG_RBP) for (i=0;ia1.disp) { @@ -166,7 +163,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) mv[i].score++; break; } - tempi->a1.type_pointed_to=tempi->r.type&RT_MASK; + tempi->a1.type_pointed_to=tempi->r.type.raw_type; break; case IC_MUL: case IC_DIV: @@ -186,15 +183,14 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempi->t.a1c=tempi->t.a2c; tempi->ic_data=tempi1->ic_data; tempi->ic_code=IC_ADD_CONST; - tempi->a1.type_pointed_to=tempi->r.type&RT_MASK; - tempi->a2.type=TY_NULL; + tempi->a1.type_pointed_to=tempi->r.type.raw_type; + tempi->a2.type=MDF_NULL; OptFree(tempi1); - if (tempil2->ic_code==IC_REG && - tempil2->a1.reg==REG_RBP) { + if (tempil2->ic_code==IC_REG && tempil2->a1.reg==REG_RBP) { tempi->ic_flags|=tempil2->ic_flags; tempi->ic_code=IC_LEA; tempi->a1.reg=REG_RBP; - tempi->a1.type=TY_DISP+tempi->a1.type&RT_MASK; + tempi->a1.type=MDF_DISP+tempi->a1.type.raw_type; tempi->a1.disp=tempi->ic_data; for (i=0;iic_dataic_flags|=tempi2->ic_flags; tempi->ic_data=tempi2->ic_data; tempi->ic_code=IC_SUB_CONST; - tempi->a2.type=TY_NULL; + tempi->a2.type=MDF_NULL; OptFree(tempi2); } break; @@ -241,8 +237,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) case IC_AND_EQU: case IC_OR_EQU: case IC_XOR_EQU: - if (tempi1->ic_code==IC_LEA && - tempi1->a1.type&TY_MASK==TY_DISP && + if (tempi1->ic_code==IC_LEA && tempi1->a1.type&MDF_DISP && tempi1->a1.reg==REG_RBP) for (i=0;ia1.disp) { @@ -250,7 +245,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) mv[i].score++; break; } - tempi->a1.type_pointed_to=tempi->r.type&RT_MASK; + tempi->a1.type_pointed_to=tempi->r.type.raw_type; tempi->r.type_pointed_to=CmpRawTypePointed(tempi->t.a1c); break; case IC_RETURN_VAL: @@ -295,7 +290,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempi1->ic_code==IC_IMM_F64) && !tempi1->ic_data) { OptFree(tempi1); MemCpy(&tempi->a1,&tempi->a2,sizeof(CICArg)); - tempi->a2.type=TY_NULL; + tempi->a2.type=MDF_NULL; if (code==IC_BR_EQU_EQU) code=tempi->ic_code=IC_BR_ZERO; else @@ -305,7 +300,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) } else if ((tempi2->ic_code==IC_IMM_I64 || tempi2->ic_code==IC_IMM_F64) && !tempi2->ic_data) { OptFree(tempi2); - tempi->a2.type=TY_NULL; + tempi->a2.type=MDF_NULL; if (code==IC_BR_EQU_EQU) code=tempi->ic_code=IC_BR_ZERO; else @@ -317,7 +312,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) if (tempi1->ic_code==IC_IMM_I64 || tempi1->ic_code==IC_IMM_F64) { if (code==IC_BR_ZERO ^^ tempi1->ic_data) { OptFree(tempi1); - tempi->a1.type=TY_NULL; + tempi->a1.type=MDF_NULL; tempi->ic_code=IC_JMP; } else { OptFree(tempi1); @@ -331,7 +326,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) i=Bsr(tempi1->ic_data); if (0<=i==Bsf(tempi1->ic_data)) { tempi1->ic_data=i; - tempi->ic_flags|=ICF_NOT_ADDR; + tempi->ic_flags|=ICF_BY_VAL; tempi->ic_code=IC_BR_NOT_BT; goto here1; } @@ -340,7 +335,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) i=Bsr(tempi2->ic_data); if (0<=i==Bsf(tempi2->ic_data)) { tempi2->ic_data=i; - tempi->ic_flags|=ICF_SWAP|ICF_NOT_ADDR; + tempi->ic_flags|=ICF_SWAP|ICF_BY_VAL; tempi->ic_code=IC_BR_NOT_BT; } } @@ -350,7 +345,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) i=Bsr(tempi1->ic_data); if (0<=i==Bsf(tempi1->ic_data)) { tempi1->ic_data=i; - tempi->ic_flags|=ICF_NOT_ADDR; + tempi->ic_flags|=ICF_BY_VAL; tempi->ic_code=IC_BR_BT; goto here1; } @@ -359,15 +354,14 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) i=Bsr(tempi2->ic_data); if (0<=i==Bsf(tempi2->ic_data)) { tempi2->ic_data=i; - tempi->ic_flags|=ICF_SWAP|ICF_NOT_ADDR; + tempi->ic_flags|=ICF_SWAP|ICF_BY_VAL; tempi->ic_code=IC_BR_BT; } } goto here1; case IC_BR_MM_ZERO: case IC_BR_MM_NOT_ZERO: - if (tempi1->ic_code==IC_LEA && - tempi1->a1.type&TY_MASK==TY_DISP && + if (tempi1->ic_code==IC_LEA && tempi1->a1.type&MDF_DISP && tempi1->a1.reg==REG_RBP) for (i=0;ia1.disp) { @@ -541,7 +535,7 @@ R12 and R13 as non-pointer register variables, such as index variables i,j,k. */ if (cc->htc.fun) { cc->htc.fun->used_reg_mask=cc->htc.fun->used_reg_mask& - ~(REGG_C_LOCAL_VARS|REGG_C_LOCAL_NON_PTR_VARS)|used_reg_mask; + ~(REGG_LOCAL_VARS|REGG_LOCAL_NON_PTR_VARS)|used_reg_mask; if (!Bt(&cc->opts,OPTf_NO_REG_VAR) && !(cc->flags & CCF_NO_REG_OPT)) { QSort(mv,member_cnt,sizeof(COptMemberVar),&OptMVCompare); diff --git a/Compiler/OptPass4.CPP b/Compiler/OptPass4.CPP index fca852f..eecdc2d 100644 --- a/Compiler/OptPass4.CPP +++ b/Compiler/OptPass4.CPP @@ -9,33 +9,28 @@ Bool OptIC4(CIntermediateCode *tempi) if (!(tempil2=OptLag1(tempil1))) return FALSE; - if (tempil2->r.type&TY_MASK==TY_STK && - !(tempil2->ic_flags&ICF_PUSH_RESULT)) { - if (tempil1->ic_code==IC_ADD_CONST && - tempil1->a1.type&TY_MASK==TY_STK) { - if ((tempil2->ic_code==IC_REG || - tempil2->ic_code==IC_MOV) && - tempil2->a1.type&TY_MASK==TY_REG) { + if (tempil2->r.type&MDF_STK && !(tempil2->ic_flags&ICF_PUSH_RESULT)) { + if (tempil1->ic_code==IC_ADD_CONST && tempil1->a1.type&MDF_STK) { + if ((tempil2->ic_code==IC_REG || tempil2->ic_code==IC_MOV) && + tempil2->a1.type&MDF_REG) { i=tempil1->ic_data; if (MIN_I32<=i<=MAX_I32 && !Bt(&cmp.non_ptr_vars_mask,tempil2->a1.reg)) { tempil1->ic_flags|=tempil2->ic_flags&ICG_NO_CVT_MASK; tempil1->ic_code=IC_LEA; - tempil1->a1.type=TY_DISP+tempil1->a1.type&RT_MASK; + tempil1->a1.type=MDF_DISP+tempil1->a1.type.raw_type; tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.disp=i; OptFree(tempil2); return TRUE; } - } else if (tempil2->ic_code==IC_SHL_CONST && - tempil2->a1.type&TY_MASK==TY_REG) { + } else if (tempil2->ic_code==IC_SHL_CONST && tempil2->a1.type&MDF_REG) { i=tempil1->ic_data; - if (MIN_I32<=i<=MAX_I32 && - tempil2->a1.reg!=REG_RSP && + if (MIN_I32<=i<=MAX_I32 && tempil2->a1.reg!=REG_RSP && 1<=tempil2->ic_data<=3) { tempil1->ic_flags|=tempil2->ic_flags&ICG_NO_CVT_MASK; tempil1->ic_code=IC_LEA; - tempil1->a1.type=TY_SIB+tempil1->a1.type&RT_MASK; + tempil1->a1.type=MDF_SIB+tempil1->a1.type.raw_type; tempil1->a1.reg=tempil2->a1.reg<<8+REG_NONE; if (tempil2->ic_data==1) tempil1->a1.reg|=0x4000; @@ -49,29 +44,28 @@ Bool OptIC4(CIntermediateCode *tempi) } } } - if (tempil2->ic_code==IC_MOV || - tempil2->ic_code==IC_REG) { - if (tempil1->a2.type&TY_MASK==TY_STK) { + if (tempil2->ic_code==IC_MOV || tempil2->ic_code==IC_REG) { + if (tempil1->a2.type&MDF_STK) { if (tempil2->ic_flags & ICF_R_TO_INT) { - if (tempil2->a1.type&TY_MASK==TY_IMM) + if (tempil2->a1.type&MDF_IMM) tempil2->a1.disp=tempil2->a1.disp(F64); else tempil1->ic_flags|=ICF_A2_TO_INT; } else if (tempil2->ic_flags&ICF_R_TO_F64) { - if (tempil2->a1.type&TY_MASK==TY_IMM) + if (tempil2->a1.type&MDF_IMM) tempil2->a1.disp(F64)=tempil2->a1.disp; else tempil1->ic_flags|=ICF_A2_TO_F64; } - ty=tempil1->a2.type&RT_MASK; - ty1=tempil2->a1.type&RT_MASK; + ty=tempil1->a2.type.raw_type; + ty1=tempil2->a1.type.raw_type; if (ty1 && ty1r.type&RT_MASK; + ty1=tempil2->r.type.raw_type; if (ty1 && ty1a2.type=tempil2->a1.type&TY_MASK+ty; + tempil1->a2.type=tempil2->a1.type&MDG_MASK+ty; pt=tempil1->a2.type_pointed_to; pt1=tempil2->a1.type_pointed_to; @@ -88,15 +82,15 @@ Bool OptIC4(CIntermediateCode *tempi) OptSetNOP2(tempil2); return TRUE; } - if (tempil1->a1.type&TY_MASK==TY_STK) { + if (tempil1->a1.type&MDF_STK) { if (tempil2->ic_flags & ICF_R_TO_INT) { - if (tempil2->a1.type&TY_MASK==TY_IMM) + if (tempil2->a1.type&MDF_IMM) tempil2->a1.disp=tempil2->a1.disp(F64); else tempil1->ic_flags|=ICF_A1_TO_INT; } else if (tempil2->ic_flags&ICF_R_TO_F64) { - if (tempil2->a1.type&TY_MASK==TY_IMM) { - if (tempil2->a1.type&1) //signed/unsigned + if (tempil2->a1.type&MDF_IMM) { + if (tempil2->a1.type&RTF_UNSIGNED) tempil2->a1.disp(F64)=tempil2->a1.disp(U64); else tempil2->a1.disp(F64)=tempil2->a1.disp(I64); @@ -104,14 +98,14 @@ Bool OptIC4(CIntermediateCode *tempi) tempil1->ic_flags|=ICF_A1_TO_F64; } - ty=tempil1->a1.type&RT_MASK; - ty1=tempil2->a1.type&RT_MASK; + ty=tempil1->a1.type.raw_type; + ty1=tempil2->a1.type.raw_type; if (ty1 && ty1r.type&RT_MASK; + ty1=tempil2->r.type.raw_type; if (ty1 && ty1a1.type=tempil2->a1.type&TY_MASK+ty; + tempil1->a1.type=tempil2->a1.type&MDG_MASK+ty; pt=tempil1->a1.type_pointed_to; pt1=tempil2->a1.type_pointed_to; @@ -130,26 +124,24 @@ Bool OptIC4(CIntermediateCode *tempi) } } if (tempil1->ic_code==IC_DEREF) { - if (tempil2->ic_code==IC_ADD_CONST && - tempil2->a1.type&TY_MASK==TY_REG && - tempil1->a1.type&TY_MASK==TY_STK) { + if (tempil2->ic_code==IC_ADD_CONST && tempil2->a1.type&MDF_REG && + tempil1->a1.type&MDF_STK) { i=tempil2->ic_data; if (MIN_I32<=i<=MAX_I32 && !Bt(&cmp.non_ptr_vars_mask,tempil2->a1.reg)) { tempil1->ic_flags|=tempil2->ic_flags; tempil1->ic_code=IC_MOV; - tempil1->a1.type=TY_DISP+tempil1->a1.type_pointed_to; + tempil1->a1.type=MDF_DISP+tempil1->a1.type_pointed_to; tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.disp=i; OptSetNOP2(tempil2,-1); return TRUE; } } - if (tempil2->ic_code==IC_LEA && - tempil1->a1.type&TY_MASK==TY_STK) { + if (tempil2->ic_code==IC_LEA && tempil1->a1.type&MDF_STK) { tempil1->ic_flags|=tempil2->ic_flags; tempil1->ic_code=IC_MOV; - tempil1->a1.type=tempil2->a1.type&TY_MASK+tempil1->a1.type_pointed_to; + tempil1->a1.type=tempil2->a1.type&MDG_MASK+tempil1->a1.type_pointed_to; tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.disp=tempil2->a1.disp; OptFree(tempil2); @@ -158,8 +150,8 @@ Bool OptIC4(CIntermediateCode *tempi) } } if (tempil1->ic_code==IC_DEREF) { - if (tempil1->a1.type&TY_MASK==TY_REG) { - tempil1->a1.type=TY_DISP+tempil1->a1.type_pointed_to; + if (tempil1->a1.type&MDF_REG) { + tempil1->a1.type=MDF_DISP+tempil1->a1.type_pointed_to; tempil1->a1.disp=0; tempil1->ic_code=IC_MOV; return TRUE; @@ -221,22 +213,21 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) switch [code] { case IC_IMM_I64: case IC_TYPE: - tempi->a1.type=TY_IMM+RT_I64; + tempi->a1.type=MDF_IMM+RT_I64; tempi->a1.disp=tempi->ic_data; tempi->ic_code=IC_MOV; break; case IC_IMM_F64: - tempi->a1.type=TY_IMM+RT_I64; + tempi->a1.type=MDF_IMM+RT_I64; tempi->a1.disp=tempi->ic_data; tempi->a1.type_pointed_to=RT_F64; tempi->ic_code=IC_MOV; break; case IC_MOV: - if (tempi->a1.type&TY_MASK==TY_DISP && - tempi->a1.reg==REG_RBP) { + if (tempi->a1.type&MDF_DISP && tempi->a1.reg==REG_RBP) { i=CmpOffset2Reg(tempi->a1.disp,reg_offsets); if (i>=0) { - tempi->a1.type=TY_REG+tempi->a1.type&RT_MASK; + tempi->a1.type=MDF_REG+tempi->a1.type.raw_type; tempi->a1.reg=i; tempi->a1.disp=0; } @@ -244,30 +235,27 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) break; case IC_DEREF: if (tempi1->ic_code==IC_LEA) { - if (tempi1->a1.type&TY_MASK==TY_DISP && - tempi1->a1.reg==REG_RBP) { + if (tempi1->a1.type&MDF_DISP && tempi1->a1.reg==REG_RBP) { i=CmpOffset2Reg(tempi1->a1.disp,reg_offsets); if (i>=0) { tempi->ic_flags|=tempi1->ic_flags; tempi->ic_code=IC_REG; - tempi->a1.type=TY_REG+tempi->a1.type&RT_MASK; + tempi->a1.type=MDF_REG+tempi->a1.type.raw_type; tempi->a1.reg=i; tempi->a1.disp=0; OptFree(tempi1); } } - } else if ((tempi1->ic_code==IC_ABS_ADDR || - tempi1->ic_code==IC_MOV && - tempi1->a1.type==TY_IMM+RT_I64 && - 0<=tempi1->a1.disp<=MAX_I32) && - !(tempi1->ic_flags&ICF_NO_RIP)) { + } else if ((tempi1->ic_code==IC_ABS_ADDR || tempi1->ic_code==IC_MOV && + tempi1->a1.type==MDF_IMM+RT_I64 && + 0<=tempi1->a1.disp<=MAX_I32)&& !(tempi1->ic_flags&ICF_NO_RIP)) { if (tempi1->ic_code==IC_ABS_ADDR) tempi->a1.disp=tempi1->ic_data; else tempi->a1.disp=tempi1->a1.disp; tempi->ic_flags|=tempi1->ic_flags; tempi->ic_code=IC_MOV; - tempi->a1.type=TY_RIP_DISP32+tempi->a1.type_pointed_to; + tempi->a1.type=MDF_RIP_DISP32+tempi->a1.type_pointed_to; tempi->a1.reg=REG_RIP; OptFree(tempi1); } @@ -282,15 +270,14 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) case IC_PP_: case IC_MM_: if (tempi1->ic_code==IC_LEA) { - if (tempi1->a1.type&TY_MASK==TY_DISP && - tempi1->a1.reg==REG_RBP) { + if (tempi1->a1.type&MDF_DISP && tempi1->a1.reg==REG_RBP) { i=CmpOffset2Reg(tempi1->a1.disp,reg_offsets); if (i>=0) { tempi->ic_flags|=tempi1->ic_flags; - tempi->a1.type=TY_REG+tempi->a1.type&RT_MASK; + tempi->a1.type=MDF_REG+tempi->a1.type.raw_type; tempi->a1.reg=i; tempi->a1.disp=0; - tempi->ic_flags|=ICF_NOT_ADDR; + tempi->ic_flags|=ICF_BY_VAL; OptSetNOP2(tempi1); } else goto p4_lea_gone; @@ -300,29 +287,27 @@ p4_lea_gone: tempi->a1.type=tempi1->a1.type; tempi->a1.reg=tempi1->a1.reg; tempi->a1.disp=tempi1->a1.disp; - tempi->ic_flags|=ICF_NOT_ADDR; + tempi->ic_flags|=ICF_BY_VAL; OptSetNOP2(tempi1); } - } else if ((tempi1->ic_code==IC_ABS_ADDR || - tempi1->ic_code==IC_MOV && - tempi1->a1.type==TY_IMM+RT_I64 && - 0<=tempi1->a1.disp<=MAX_I32) && - !(tempi1->ic_flags&ICF_NO_RIP)) { + } else if ((tempi1->ic_code==IC_ABS_ADDR || tempi1->ic_code==IC_MOV && + tempi1->a1.type==MDF_IMM+RT_I64 && + 0<=tempi1->a1.disp<=MAX_I32)&& !(tempi1->ic_flags&ICF_NO_RIP)) { tempi->ic_flags|=tempi1->ic_flags; if (tempi1->ic_code==IC_ABS_ADDR) tempi->a1.disp=tempi1->ic_data; else tempi->a1.disp=tempi1->a1.disp; - tempi->a1.type=TY_RIP_DISP32+tempi->a1.type_pointed_to; + tempi->a1.type=MDF_RIP_DISP32+tempi->a1.type_pointed_to; tempi->a1.reg=REG_RIP; - tempi->ic_flags|=ICF_NOT_ADDR; + tempi->ic_flags|=ICF_BY_VAL; OptFree(tempi1); } break; case IC_ADD: - if (tempi1->ic_code==IC_MOV && tempi1->a1.type==TY_REG+RT_I64 || + if (tempi1->ic_code==IC_MOV && tempi1->a1.type==MDF_REG+RT_I64 || tempi1->ic_code==IC_REG) { - if (tempi2->ic_code==IC_MOV && tempi2->a1.type==TY_REG+RT_I64 || + if (tempi2->ic_code==IC_MOV && tempi2->a1.type==MDF_REG+RT_I64 || tempi2->ic_code==IC_REG) { if (tempi2->a1.reg!=REG_RSP) { tempi->a1.disp=0; @@ -338,14 +323,13 @@ p4_sib: OptFree(tempi2); tempi->ic_code=IC_LEA; - tempi->a1.type=TY_SIB+RT_I64; + tempi->a1.type=MDF_SIB+RT_I64; tempi->a1.type_pointed_to=RT_I64; - tempi->a2.type=TY_NULL+tempi->a2.type&RT_MASK; + tempi->a2.type=MDF_NULL+tempi->a2.type.raw_type; } } else if (tempi2->ic_code==IC_SHL_CONST && - tempi2->a1.type==TY_REG+RT_I64 && - tempi2->ic_data<=3) { + tempi2->a1.type==MDF_REG+RT_I64 && tempi2->ic_data<=3) { if (tempi2->a1.reg!=REG_RSP) { tempi->a1.disp=0; tempi->a1.reg=tempi1->a1.reg+tempi2->a1.reg<<8; @@ -359,11 +343,11 @@ p4_sib: } } } else if (tempi1->ic_code==IC_LEA && - tempi1->a1.type&TY_MASK==TY_DISP) { + tempi1->a1.type&MDF_DISP) { if (tempi1->a1.reg==REG_RBP && CmpOffset2Reg(tempi1->a1.disp,reg_offsets)>=0) break; - if (tempi2->ic_code==IC_MOV && tempi2->a1.type==TY_REG+RT_I64 || + if (tempi2->ic_code==IC_MOV && tempi2->a1.type==MDF_REG+RT_I64 || tempi2->ic_code==IC_REG) { if (tempi2->a1.reg!=REG_RSP) { tempi->a1.disp=tempi1->a1.disp; @@ -375,8 +359,7 @@ p4_sib: goto p4_sib; } } else if (tempi2->ic_code==IC_SHL_CONST && - tempi2->a1.type==TY_REG+RT_I64 && - tempi2->ic_data<=3) { + tempi2->a1.type==MDF_REG+RT_I64 && tempi2->ic_data<=3) { if (tempi2->a1.reg!=REG_RSP) { tempi->a1.disp=tempi1->a1.disp; tempi->a1.reg=tempi1->a1.reg+tempi2->a1.reg<<8; @@ -407,44 +390,42 @@ p4_sib: case IC_ADD_EQU: case IC_SUB_EQU: if (tempi1->ic_code==IC_LEA) { - if (TY_DISP<=tempi1->a1.type&TY_MASK<=TY_SIB) { - if (tempi1->a1.type&TY_MASK==TY_DISP && tempi1->a1.reg==REG_RBP) { + if (tempi1->a1.type&(MDF_DISP|MDF_SIB)) { + if (tempi1->a1.type&MDF_DISP && tempi1->a1.reg==REG_RBP) { i=CmpOffset2Reg(tempi1->a1.disp,reg_offsets); if (i>=0) { tempi->ic_flags|=tempi1->ic_flags; - tempi->a1.type=TY_REG+tempi->a1.type&RT_MASK; + tempi->a1.type=MDF_REG+tempi->a1.type.raw_type; tempi->a1.reg=i; tempi->a1.disp=0; OptSetNOP2(tempi1); } else { tempi->ic_flags|=tempi1->ic_flags; - tempi->a1.type=TY_DISP+tempi->a1.type&RT_MASK; + tempi->a1.type=MDF_DISP+tempi->a1.type.raw_type; tempi->a1.reg=REG_RBP; tempi->a1.disp=tempi1->a1.disp; OptSetNOP2(tempi1); } } else { - tempi->a1.type=tempi1->a1.type&TY_MASK+tempi->a1.type&RT_MASK; + tempi->a1.type=tempi1->a1.type&MDG_MASK+tempi->a1.type.raw_type; tempi->ic_flags|=tempi1->ic_flags; tempi->a1.reg=tempi1->a1.reg; tempi->a1.disp=tempi1->a1.disp; OptSetNOP2(tempi1); } - tempi->ic_flags|=ICF_NOT_ADDR; + tempi->ic_flags|=ICF_BY_VAL; } } else if ((tempi1->ic_code==IC_ABS_ADDR || - tempi1->ic_code==IC_MOV && - tempi1->a1.type==TY_IMM+RT_I64 && - 0<=tempi1->a1.disp<=MAX_I32) && - !(tempi1->ic_flags&ICF_NO_RIP)) { + tempi1->ic_code==IC_MOV && tempi1->a1.type==MDF_IMM+RT_I64 && + 0<=tempi1->a1.disp<=MAX_I32)&& !(tempi1->ic_flags&ICF_NO_RIP)) { tempi->ic_flags|=tempi1->ic_flags; if (tempi1->ic_code==IC_ABS_ADDR) tempi->a1.disp=tempi1->ic_data; else tempi->a1.disp=tempi1->a1.disp; - tempi->a1.type=TY_RIP_DISP32+tempi->a1.type&RT_MASK; + tempi->a1.type=MDF_RIP_DISP32+tempi->a1.type.raw_type; tempi->a1.reg=REG_RIP; - tempi->ic_flags|=ICF_NOT_ADDR; + tempi->ic_flags|=ICF_BY_VAL; OptSetNOP2(tempi1); } break; @@ -486,18 +467,18 @@ p4_sib: case IC_LBTS: case IC_LBTR: case IC_LBTC: - if (!(tempi->ic_flags&ICF_NOT_ADDR)) { + if (!(tempi->ic_flags&ICF_BY_VAL)) { if (tempi2->ic_code==IC_ADDR) { - if (tempi2->a1.type&TY_MASK==TY_STK && - tempi2->r.type&TY_MASK==TY_STK) { + if (tempi2->a1.type&MDF_STK && + tempi2->r.type&MDF_STK) { if (tempil2=OptLag1(tempi2)) { if (tempil2->ic_code==IC_LEA) { - if (TY_IMM<=tempil2->a1.type&TY_MASKa1.type&(MDF_IMM|MDG_REG_DISP_SIB_RIP)) { if (tempi2) { tempi->ic_flags|=tempi2->ic_flags; OptFree(tempi2); } - tempi->ic_flags|=tempil2->ic_flags|ICF_NOT_ADDR; + tempi->ic_flags|=tempil2->ic_flags|ICF_BY_VAL; tempi->a2.type=tempil2->a1.type; tempi->a2.reg =tempil2->a1.reg; tempi->a2.disp=tempil2->a1.disp; @@ -506,7 +487,7 @@ p4_sib: break; } else if (tempil2->ic_code!=IC_ABS_ADDR && !(tempil2->ic_code==IC_MOV && - tempil2->a1.type==TY_IMM+RT_I64 && + tempil2->a1.type==MDF_IMM+RT_I64 && 0<=tempil2->a1.disp<=MAX_I32) || tempil2->ic_flags&ICF_NO_RIP) tempil2=NULL; @@ -518,7 +499,7 @@ p4_sib: } } } else { - if (tempi2->a1.type==TY_IMM+RT_I64 && + if (tempi2->a1.type==MDF_IMM+RT_I64 && 0<=tempi2->a1.disp<=MAX_I32 && !(tempi2->ic_flags&ICF_NO_RIP)) { tempil2=tempi2; @@ -532,19 +513,18 @@ p4_sib: tempi->ic_flags|=tempi2->ic_flags; OptFree(tempi2); } - tempi->ic_flags|=tempil2->ic_flags|ICF_NOT_ADDR; - tempi->a2.type=TY_RIP_DISP32+tempi->a2.type&RT_MASK; + tempi->ic_flags|=tempil2->ic_flags|ICF_BY_VAL; + tempi->a2.type=MDF_RIP_DISP32+tempi->a2.type.raw_type; tempi->a2.reg=REG_RIP; OptFree(tempil2); } - } else if (tempi2->ic_code==IC_MOV && - tempi2->r.type&TY_MASK==TY_STK && - tempi2->a1.type==TY_IMM+RT_I64 && + } else if (tempi2->ic_code==IC_MOV && tempi2->r.type&MDF_STK && + tempi2->a1.type==MDF_IMM+RT_I64 && 0<=tempi2->a1.disp<=MAX_I32 && !(tempi2->ic_flags&ICF_NO_RIP)) { tempi->a2.disp=tempi2->a1.disp; - tempi->ic_flags|=tempi2->ic_flags|ICF_NOT_ADDR; - tempi->a2.type=TY_RIP_DISP32+tempi->a2.type&RT_MASK; + tempi->ic_flags|=tempi2->ic_flags|ICF_BY_VAL; + tempi->a2.type=MDF_RIP_DISP32+tempi->a2.type.raw_type; tempi->a2.reg=REG_RIP; OptFree(tempi2); } @@ -579,15 +559,20 @@ p4_sib: if (!(tempil1->ic_flags&ICF_PUSH_RESULT)) { if (tempi->ic_flags&ICF_NO_DEPEND_RESULT) { tempil1->ic_flags|=ICF_NO_DEPEND_RESULT; - tempil1->r.type=TY_NULL+tempil1->r.type&RT_MASK; - } else if (tempi->a1.type&TY_MASK==TY_STK && - tempil1->r.type&TY_MASK==TY_STK) { - tempi->a1.type=TY_REG+tempi->a1.type&RT_MASK; - tempi->a1.reg=REG_RAX; + tempil1->r.type=MDF_NULL+tempil1->r.type.raw_type; + } else if (tempi->a1.type&MDF_STK && + tempil1->r.type&MDF_STK) { + tempi->a1.type=MDF_REG+tempi->a1.type.raw_type; tempi->a1.disp=0; - tempil1->r.type=TY_REG+tempil1->r.type&RT_MASK; - tempil1->r.reg=REG_RAX; + tempil1->r.type=MDF_REG+tempil1->r.type.raw_type; tempil1->r.disp=0; + if (intermediate_code_table[tempi->ic_code].arg_cnt==IS_2_ARG) { + tempi->a1.reg=REG_R8; + tempil1->r.reg=REG_R8; + } else { + tempi->a1.reg=REG_RAX; + tempil1->r.reg=REG_RAX; + } } } break; diff --git a/Compiler/OptPass5.CPP b/Compiler/OptPass5.CPP index 5b99bc8..2ca3e81 100644 --- a/Compiler/OptPass5.CPP +++ b/Compiler/OptPass5.CPP @@ -26,30 +26,29 @@ U0 OptPass5(CCmpCtrl *cc) if (Bt(&tempi->ic_data,i)) ps->ptr--; } - if (tempi->a2.type&TY_MASK==TY_STK) { + if (tempi->a2.type&MDF_STK) { tempi1=PrsPop(ps); - if (tempi1->ic_code==IC_MOV || - tempi1->ic_code==IC_REG) { + if (tempi1->ic_code==IC_MOV || tempi1->ic_code==IC_REG) { if (tempi1->ic_flags & ICF_R_TO_INT) { - if (tempi1->a1.type&TY_MASK==TY_IMM) + if (tempi1->a1.type&MDF_IMM) tempi1->a1.disp=tempi1->a1.disp(F64); else tempi->ic_flags|=ICF_A2_TO_INT; } else if (tempi1->ic_flags&ICF_R_TO_F64) { - if (tempi1->a1.type&TY_MASK==TY_IMM) + if (tempi1->a1.type&MDF_IMM) tempi1->a1.disp(F64)=tempi1->a1.disp; else tempi->ic_flags|=ICF_A2_TO_F64; } - ty=tempi->a2.type&RT_MASK; - ty1=tempi1->a1.type&RT_MASK; + ty=tempi->a2.type.raw_type; + ty1=tempi1->a1.type.raw_type; if (ty1 && ty1r.type&RT_MASK; + ty1=tempi1->r.type.raw_type; if (ty1 && ty1a2.type=tempi1->a1.type&TY_MASK+ty; + tempi->a2.type=tempi1->a1.type&MDG_MASK+ty; pt=tempi->a2.type_pointed_to; pt1=tempi1->a1.type_pointed_to; @@ -67,18 +66,17 @@ U0 OptPass5(CCmpCtrl *cc) } } - if (tempi->a1.type&TY_MASK==TY_STK) { + if (tempi->a1.type&MDF_STK) { tempi1=PrsPop(ps); - if (tempi1->ic_code==IC_MOV || - tempi1->ic_code==IC_REG) { + if (tempi1->ic_code==IC_MOV || tempi1->ic_code==IC_REG) { if (tempi1->ic_flags & ICF_R_TO_INT) { - if (tempi1->a1.type&TY_MASK==TY_IMM) + if (tempi1->a1.type&MDF_IMM) tempi1->a1.disp=tempi1->a1.disp(F64); else tempi->ic_flags|=ICF_A1_TO_INT; } else if (tempi1->ic_flags&ICF_R_TO_F64) { - if (tempi1->a1.type&TY_MASK==TY_IMM) { - if (tempi1->a1.type & 1) //signed/unsigned + if (tempi1->a1.type&MDF_IMM) { + if (tempi1->a1.type&RTF_UNSIGNED) tempi1->a1.disp(F64)=tempi1->a1.disp(U64); else tempi1->a1.disp(F64)=tempi1->a1.disp(I64); @@ -86,14 +84,14 @@ U0 OptPass5(CCmpCtrl *cc) tempi->ic_flags|=ICF_A1_TO_F64; } - ty=tempi->a1.type&RT_MASK; - ty1=tempi1->a1.type&RT_MASK; + ty=tempi->a1.type.raw_type; + ty1=tempi1->a1.type.raw_type; if (ty1 && ty1r.type&RT_MASK; + ty1=tempi1->r.type.raw_type; if (ty1 && ty1a1.type=tempi1->a1.type&TY_MASK+ty; + tempi->a1.type=tempi1->a1.type&MDG_MASK+ty; pt=tempi->a1.type_pointed_to; pt1=tempi1->a1.type_pointed_to; @@ -110,7 +108,7 @@ U0 OptPass5(CCmpCtrl *cc) OptSetNOP2(tempi1); } } - if (tempi->r.type&TY_MASK==TY_STK && + if (tempi->r.type&MDF_STK && !(tempi->ic_flags&ICF_NO_DEPEND_RESULT)) PrsPush(ps,tempi); } diff --git a/Compiler/OptPass6.CPP b/Compiler/OptPass6.CPP index 0329e2d..f28b1f5 100644 --- a/Compiler/OptPass6.CPP +++ b/Compiler/OptPass6.CPP @@ -4,20 +4,20 @@ Bool OptIC6(CIntermediateCode *tempi) if (tempi->ic_codeic_code==IC_ADD_CONST && tempi->ic_code==IC_DEREF && - tempi->ic_flags&ICF_A1_WAS_STK && tempi->a1.type&TY_MASK==TY_REG && - tempil1->r.type&TY_MASK==TY_REG && MIN_I32<=tempil1->ic_data<=MAX_I32 && + tempi->ic_flags&ICF_A1_WAS_STK && tempi->a1.type&MDF_REG && + tempil1->r.type&MDF_REG && MIN_I32<=tempil1->ic_data<=MAX_I32 && !Bt(&cmp.non_ptr_vars_mask,tempil1->a1.reg)) { - if (tempil1->a1.type&TY_MASK==TY_REG) { + if (tempil1->a1.type&MDF_REG) { tempi->ic_flags=tempi->ic_flags&~ICF_A1_WAS_STK | tempil1->ic_flags; tempi->ic_code=IC_MOV; - tempi->a1.type=TY_DISP+tempi->a1.type_pointed_to; + tempi->a1.type=MDF_DISP+tempi->a1.type_pointed_to; tempi->a1.reg=tempil1->a1.reg; tempi->a1.disp=tempil1->ic_data; OptSetNOP2(tempil1,-1); } else { tempil1->ic_code=IC_MOV; tempi->ic_code=IC_MOV; - tempi->a1.type=TY_DISP+tempi->a1.type_pointed_to; + tempi->a1.type=MDF_DISP+tempi->a1.type_pointed_to; tempi->a1.disp=tempil1->ic_data; } return TRUE; @@ -26,99 +26,85 @@ Bool OptIC6(CIntermediateCode *tempi) } U0 OptPass6Lag(CCmpCtrl *cc,CPrsStk *ps,CIntermediateCode *tempi, - I64 *i_,I64 num_stk,I64 *_clobbered_reg_mask,I64 fun_num) + I64 *_stk_ptr,I64 reg_stk_size,I64 *_clobbered_reg_mask) { - I64 i=*i_,j,k,l,code,clobbered_reg_mask=*_clobbered_reg_mask; + I64 stk_ptr=*_stk_ptr,code, + clobbered_stk_temp_mask,clobbered_reg_mask=*_clobbered_reg_mask; CHashFun *tempf; code=tempi->ic_code; if (tempi->ic_flags&ICF_PASS_TRACE && Bt(&cc->saved_pass_trace,6)) { - "%2d:",i; + "%2d:",stk_ptr; ICPut(cc,tempi); } if (code==IC_CALL_START) { - k=MinI64(i,num_stk); - j=0; -//See $LK,"STK TEMP ALLOCATION",A="FF:::/Compiler/CInit.CPP,STK TEMP ALLOCATION"$ - if (fun_num&1) - for (l=0;l0) + clobbered_stk_temp_mask=REGG_STK_TEMP; else - for (l=0;lic_data) { if (Bt(&tempf->flags,Ff_INTERNAL)) - j=0; + clobbered_stk_temp_mask=0; else { - j&=tempf->clobbered_reg_mask; + clobbered_stk_temp_mask&=tempf->clobbered_reg_mask; clobbered_reg_mask|=tempf->clobbered_reg_mask; } } - tempi->ic_data=j; - PrsPush(ps,i); - PrsPush(ps,j); + tempi->ic_data=clobbered_stk_temp_mask; + PrsPush(ps,stk_ptr); + PrsPush(ps,clobbered_stk_temp_mask); } else if (code==IC_CALL_END) { tempi->ic_data=PrsPop(ps); - i=PrsPop(ps); + stk_ptr=PrsPop(ps); } else if (code==IC_CALL_END2) { ps->ptr--; - i=PrsPop(ps); + stk_ptr=PrsPop(ps); } if (intermediate_code_table[code].arg_cnt==IS_V_ARG) - i-=tempi->ic_data>>3; - if (tempi->a2.type&TY_MASK==TY_STK) { - i--; - if (ia2.type=TY_REG+tempi->a2.type&RT_MASK; - if (fun_num&1) - tempi->a2.reg=cmp.to_stk_temps_map_odd[i]; - else - tempi->a2.reg=cmp.to_stk_temps_map_even[i]; + stk_ptr-=tempi->ic_data>>3; + if (tempi->a2.type&MDF_STK) { + stk_ptr--; + if (stk_ptra2.type=MDF_REG+tempi->a2.type.raw_type; + tempi->a2.reg=Bsf(REGG_STK_TEMP); tempi->a2.disp=0; } } - if (tempi->a1.type&TY_MASK==TY_STK) { - i--; - if (ia1.type=TY_REG+tempi->a1.type&RT_MASK; - if (fun_num&1) - tempi->a1.reg=cmp.to_stk_temps_map_odd[i]; - else - tempi->a1.reg=cmp.to_stk_temps_map_even[i]; + if (tempi->a1.type&MDF_STK) { + stk_ptr--; + if (stk_ptra1.type=MDF_REG+tempi->a1.type.raw_type; + tempi->a1.reg=Bsf(REGG_STK_TEMP); tempi->a1.disp=0; } } - if (tempi->r.type&TY_MASK==TY_STK && !(tempi->ic_flags & ICF_PUSH_RESULT)) { - i++; - if (i<=num_stk) { - tempi->r.type=TY_REG+tempi->r.type&RT_MASK; - if (fun_num&1) { - tempi->r.reg=cmp.to_stk_temps_map_odd[i-1]; - Bts(&clobbered_reg_mask,cmp.to_stk_temps_map_odd[i-1]); - } else { - tempi->r.reg=cmp.to_stk_temps_map_even[i-1]; - Bts(&clobbered_reg_mask,cmp.to_stk_temps_map_even[i-1]); - } + if (tempi->r.type&MDF_STK && !(tempi->ic_flags & ICF_PUSH_RESULT)) { + stk_ptr++; + if (stk_ptr<=reg_stk_size) { + tempi->r.type=MDF_REG+tempi->r.type.raw_type; + tempi->r.reg=Bsf(REGG_STK_TEMP); + clobbered_reg_mask|=REGG_STK_TEMP; tempi->r.disp=0; } } while (OptIC6(tempi)); - if (tempi->r.type&RT_MASK!=RT_F64 && !(tempi->ic_flags&ICF_USE_F64)) + if (tempi->r.type.raw_type!=RT_F64 && !(tempi->ic_flags&ICF_USE_F64)) tempi->ic_flags|=ICF_USE_INT; - *i_=i; + *_stk_ptr=stk_ptr; *_clobbered_reg_mask=clobbered_reg_mask; } U0 OptPass6(CCmpCtrl *cc) { CIntermediateCode *tempi,*tempi_next,*tempil1,*tempil2,*old_tempil2; - I64 i=0,num_stk,clobbered_reg_mask=REGG_C_CLOBBERED,fun_num=0; + I64 stk_ptr=0,reg_stk_size,clobbered_reg_mask=REGG_CLOBBERED; CPrsStk *ps=cc->ps; ps->ptr=0; ps->ptr2=0; if (Bt(&cc->opts,OPTf_NO_REG_VAR) || cc->flags&CCF_NO_REG_OPT) - num_stk=0; + reg_stk_size=0; else - num_stk=cmp.num_stk_temps; + reg_stk_size=1; +#assert REGG_STK_TEMP==1<<9 tempi=cc->coc.coc_root.next; old_tempil2=NULL; tempil1=tempil2=&cmp.ic_nop; @@ -127,50 +113,54 @@ U0 OptPass6(CCmpCtrl *cc) if (tempil1->ic_code>IC_NOP2) tempil2=tempil1; tempil1=tempi; - if (tempi->a2.type&TY_MASK==TY_STK) { - if (tempil2->r.type&TY_MASK==TY_STK && + if (tempi->a2.type&MDF_STK) { + if (tempil2->r.type&MDF_STK && !(tempil2->ic_flags&ICF_PUSH_RESULT)) { - if (tempi->ic_code==IC_ASSIGN && tempi->ic_flags&ICF_NOT_ADDR && + if (tempi->ic_code==IC_ASSIGN && tempi->ic_flags&ICF_BY_VAL && tempi->ic_flags&ICF_NO_DEPEND_RESULT && tempil2->ic_code!=IC_CALL_END && tempil2->ic_code!=IC_CALL_END2 && - tempil2->ic_code!=IC_SET_RAX && + tempil2->ic_code!=IC_SET_RAX && !(tempi->ic_flags&(ICF_A2_TO_F64|ICF_A2_TO_INT)) && !(tempil2->ic_flags&(ICF_R_TO_F64|ICF_R_TO_INT))) { - tempil2->r.type =tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to; + tempil2->r.type =tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to; tempil2->r.type_pointed_to=tempi->a1.type_pointed_to; tempil2->r.reg =tempi->a1.reg; tempil2->r.disp =tempi->a1.disp; tempil2->ic_flags=tempil2->ic_flags &~(ICF_NO_DEPEND_RESULT|ICF_R_WAS_STK) - |tempi->ic_flags&~(ICF_NOT_ADDR|ICF_A1_WAS_STK|ICF_A2_WAS_STK) + |tempi->ic_flags&~(ICF_BY_VAL|ICF_A1_WAS_STK|ICF_A2_WAS_STK) |ICF_DEPEND_RESULT; old_tempil2=NULL; OptSetNOP1(tempi); } else { - tempi->a2.type=TY_REG+tempi->a2.type&RT_MASK; + tempi->a2.type=MDF_REG+tempi->a2.type.raw_type; tempi->a2.reg=REG_RAX; tempi->a2.disp=0; - tempil2->r.type=TY_REG+tempil2->r.type&RT_MASK; + tempil2->r.type=MDF_REG+tempil2->r.type.raw_type; tempil2->r.reg=REG_RAX; tempil2->r.disp=0; } } - } else if (tempi->a1.type&TY_MASK==TY_STK && - tempil2->r.type&TY_MASK==TY_STK && + } else if (tempi->a1.type&MDF_STK && tempil2->r.type&MDF_STK && !(tempil2->ic_flags&ICF_PUSH_RESULT)) { - tempi->a1.type=TY_REG+tempi->a1.type&RT_MASK; - tempi->a1.reg=REG_RAX; + tempi->a1.type=MDF_REG+tempi->a1.type.raw_type; tempi->a1.disp=0; - tempil2->r.type=TY_REG+tempil2->r.type&RT_MASK; - tempil2->r.reg=REG_RAX; + tempil2->r.type=MDF_REG+tempil2->r.type.raw_type; tempil2->r.disp=0; + if (intermediate_code_table[tempi->ic_code].arg_cnt==IS_2_ARG) { + tempi->a1.reg=REG_R8; + tempil2->r.reg=REG_R8; + } else { + tempi->a1.reg=REG_RAX; + tempil2->r.reg=REG_RAX; + } } if (tempi->ic_flags & ICF_PUSH_RESULT) - tempi->r.type==TY_STK+tempi->r.type&RT_MASK; + tempi->r.type==MDF_STK+tempi->r.type.raw_type; if (old_tempil2!=tempil2) { if (tempil2->ic_code>IC_NOP2) - OptPass6Lag(cc,ps,tempil2,&i,num_stk,&clobbered_reg_mask,fun_num); + OptPass6Lag(cc,ps,tempil2,&stk_ptr,reg_stk_size,&clobbered_reg_mask); old_tempil2=tempil2; } } @@ -184,7 +174,7 @@ U0 OptPass6(CCmpCtrl *cc) LexExcept(cc,"Compiler Optimization Error at "); } if (cc->htc.fun) { - cc->htc.fun->used_reg_mask&=~REGG_C_TEMP_CLOBBERED; + cc->htc.fun->used_reg_mask&=~REGG_STK_TEMP; cc->htc.fun->used_reg_mask|=clobbered_reg_mask; cc->htc.fun->clobbered_reg_mask=clobbered_reg_mask; if (Bt(&cc->flags,CCf_PASS_TRACE_PRESENT) && diff --git a/Compiler/OptPass789A.CPP b/Compiler/OptPass789A.CPP index 3f0039c..6502834 100644 --- a/Compiler/OptPass789A.CPP +++ b/Compiler/OptPass789A.CPP @@ -61,90 +61,36 @@ cc->pass==10 is final pass, code is placed into buf. if (cc->pass==7) cc->dont_push_float=Btr(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0); MemCpy(saved_p123,&tempi->a1,3*sizeof(CICArg)); - if (intermediate_code_table[tempi->ic_code].arg_cnt==IS_2_ARG && - tempi->a1.type&TY_MASK==TY_REG && tempi->a1.reg==REG_RAX) - tempi->ic_flags|=ICF_A1_FIRST; tempi->ic_cnt=0; tempi->ic_last_cnt=-1; - if (tempi->ic_flags & ICF_A1_FIRST) { - if (tempi->a1.type&TY_MASK) { - if (tempi->ic_flags & ICF_A1_TO_F64) { - ICFCvt(cc,tempi,REG_RDX, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,FALSE,CN_A1,ip2); - tempi->a1.type=TY_REG+RT_I64; - tempi->a1.reg=REG_RDX; - tempi->a1.disp=0; - tempi->ic_flags&=~ICF_A1_FIRST; - } else if (tempi->ic_flags & ICF_A1_TO_INT) { - ICFCvt(cc,tempi,REG_RDX, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,TRUE,CN_A1,ip2); - tempi->a1.type=TY_REG+RT_I64; - tempi->a1.reg=REG_RDX; - tempi->a1.disp=0; - tempi->ic_flags&=~ICF_A1_FIRST; - } + if (tempi->a2.type.mode) { + if (tempi->ic_flags & ICF_A2_TO_F64) { + ICFCvt(cc,tempi,REG_RAX, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,FALSE,CN_A2,ip2); + tempi->a2.type=MDF_REG+RT_I64; + tempi->a2.reg=REG_RAX; + tempi->a2.disp=0; + } else if (tempi->ic_flags & ICF_A2_TO_INT) { + ICFCvt(cc,tempi,REG_RAX, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,TRUE,CN_A2,ip2); + tempi->a2.type=MDF_REG+RT_I64; + tempi->a2.reg=REG_RAX; + tempi->a2.disp=0; } - if (tempi->a2.type&TY_MASK) { - if (tempi->ic_flags & ICF_A2_TO_F64) { - if (tempi->ic_flags&ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - tempi->a1.type=TY_REG+RT_I64; - tempi->a1.reg=REG_RDX; - tempi->a1.disp=0; - tempi->ic_flags&=~ICF_A1_FIRST; - } - ICFCvt(cc,tempi,REG_RAX, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,FALSE,CN_A2,ip2); - tempi->a2.type=TY_REG+RT_I64; - tempi->a2.reg=REG_RAX; - tempi->a2.disp=0; - } else if (tempi->ic_flags & ICF_A2_TO_INT) { - if (tempi->ic_flags&ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - tempi->a1.type=TY_REG+RT_I64; - tempi->a1.reg=REG_RDX; - tempi->a1.disp=0; - tempi->ic_flags&=~ICF_A1_FIRST; - } - ICFCvt(cc,tempi,REG_RAX, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,TRUE,CN_A2,ip2); - tempi->a2.type=TY_REG+RT_I64; - tempi->a2.reg=REG_RAX; - tempi->a2.disp=0; - } - } - } else { - if (tempi->a2.type&TY_MASK) { - if (tempi->ic_flags & ICF_A2_TO_F64) { - ICFCvt(cc,tempi,REG_RAX, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,FALSE,CN_A2,ip2); - tempi->a2.type=TY_REG+RT_I64; - tempi->a2.reg=REG_RAX; - tempi->a2.disp=0; - } else if (tempi->ic_flags & ICF_A2_TO_INT) { - ICFCvt(cc,tempi,REG_RAX, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,TRUE,CN_A2,ip2); - tempi->a2.type=TY_REG+RT_I64; - tempi->a2.reg=REG_RAX; - tempi->a2.disp=0; - } - } - if (tempi->a1.type&TY_MASK) { - if (tempi->ic_flags & ICF_A1_TO_F64) { - ICFCvt(cc,tempi,REG_RDX, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,FALSE,CN_A1,ip2); - tempi->a1.type=TY_REG+RT_I64; - tempi->a1.reg=REG_RDX; - tempi->a1.disp=0; - } else if (tempi->ic_flags & ICF_A1_TO_INT) { - ICFCvt(cc,tempi,REG_RDX, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,TRUE,CN_A1,ip2); - tempi->a1.type=TY_REG+RT_I64; - tempi->a1.reg=REG_RDX; - tempi->a1.disp=0; - } + } + if (tempi->a1.type.mode) { + if (tempi->ic_flags & ICF_A1_TO_F64) { + ICFCvt(cc,tempi,REG_RDX, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,FALSE,CN_A1,ip2); + tempi->a1.type=MDF_REG+RT_I64; + tempi->a1.reg=REG_RDX; + tempi->a1.disp=0; + } else if (tempi->ic_flags & ICF_A1_TO_INT) { + ICFCvt(cc,tempi,REG_RDX, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,TRUE,CN_A1,ip2); + tempi->a1.type=MDF_REG+RT_I64; + tempi->a1.reg=REG_RDX; + tempi->a1.disp=0; } } switch [tempi->ic_code] { @@ -191,8 +137,7 @@ cc->pass==10 is final pass, code is placed into buf. case IC_RIP: ICU16(tempi,0xB848); ICU64(tempi,ip2+tempi->ic_cnt-2); - if (cc->flags&CCF_AOT_COMPILE && buf && - !(cc->flags&CCF_NO_ABSS)) { + if (cc->flags&CCF_AOT_COMPILE && buf &&!(cc->flags&CCF_NO_ABSS)) { tempa=CAlloc(sizeof(CAOTAbsAddr)); tempa->next=aotc->abss; tempa->type=AAT_ADD_U64; @@ -202,7 +147,7 @@ cc->pass==10 is final pass, code is placed into buf. break; sub_switch_end: ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip2); + MDF_REG+RT_I64,REG_RAX,0,ip2); break; case IC_BR_CARRY: ICFlagBranch(tempi,ip,0x72820F,buf); @@ -356,7 +301,7 @@ cc->pass==10 is final pass, code is placed into buf. else i=lb->addr+buf; ICLea(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_RIP_DISP32+RT_PTR,0,i,cc,buf,ip2); + MDF_RIP_DISP32+RT_PTR,0,i,cc,buf,ip2); break; case IC_ASM: tempaot=tempi->ic_data; @@ -442,12 +387,11 @@ cc->pass==10 is final pass, code is placed into buf. case IC_LEAVE: if (cc->htc.fun) { if (Bt(&cc->htc.fun->flags,Ff_INTERRUPT)) - ICPopRegs(tempi,REGG_C_CLOBBERED|cc->htc.fun->used_reg_mask& - (REGG_C_LOCAL_VARS|REGG_C_LOCAL_NON_PTR_VARS| - REGG_C_TEMP_CLOBBERED)); + ICPopRegs(tempi,REGG_CLOBBERED|cc->htc.fun->used_reg_mask& + (REGG_LOCAL_VARS|REGG_LOCAL_NON_PTR_VARS|REGG_STK_TEMP)); else ICPopRegs(tempi,cc->htc.fun->used_reg_mask& - (REGG_C_LOCAL_VARS|REGG_C_LOCAL_NON_PTR_VARS)); + (REGG_LOCAL_VARS|REGG_LOCAL_NON_PTR_VARS)); } if (tempi->ic_data<=MAX_I16) { if (tempi->ic_data) @@ -487,14 +431,16 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tempi,0x64); //It's ugly to use ic_class here ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+CmpRawType(tempi->ic_class),REG_RAX,tempi->ic_data,ip2); + MDF_DISP+CmpRawType(tempi->ic_class),REG_RAX,tempi->ic_data, + ip2); break; case IC_MOV_GS: ICZero(tempi,REG_RAX); ICU8(tempi,0x65); //It's ugly to use ic_class here ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+CmpRawType(tempi->ic_class),REG_RAX,tempi->ic_data,ip2); + MDF_DISP+CmpRawType(tempi->ic_class),REG_RAX,tempi->ic_data, + ip2); break; case IC_HOLYC_TYPECAST: ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, @@ -507,7 +453,7 @@ cc->pass==10 is final pass, code is placed into buf. ICNot(tempi,ip2); break; case IC_UNARY_MINUS: - if (tempi->r.type&RT_MASK==RT_F64) + if (tempi->r.type.raw_type==RT_F64) ICFUnaryMinus(cc,tempi,buf,ip2); else ICUnaries(tempi,SLASH_OP_NEG,ip2); @@ -730,13 +676,13 @@ cc->pass==10 is final pass, code is placed into buf. case IC_SHL_CONST: ICShift(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, - TY_IMM+RT_I64,0,tempi->ic_data, + MDF_IMM+RT_I64,0,tempi->ic_data, 0xE0D1E0D3E0C1,0xE0D1E0D3E0C1,ip2); break; case IC_SHR_CONST: ICShift(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, - TY_IMM+RT_I64,0,tempi->ic_data, + MDF_IMM+RT_I64,0,tempi->ic_data, 0xE8D1E8D3E8C1,0xF8D1F8D3F8C1,ip2); break; case IC_ADD_CONST: @@ -755,20 +701,18 @@ cc->pass==10 is final pass, code is placed into buf. ICAddRSP(tempi,-tempi->ic_data,FALSE); if (cc->htc.fun) { if (Bt(&cc->htc.fun->flags,Ff_INTERRUPT)) - ICPushRegs(tempi,REGG_C_CLOBBERED|cc->htc.fun->used_reg_mask& - (REGG_C_LOCAL_VARS|REGG_C_LOCAL_NON_PTR_VARS| - REGG_C_TEMP_CLOBBERED)); + ICPushRegs(tempi,REGG_CLOBBERED|cc->htc.fun->used_reg_mask& + (REGG_LOCAL_VARS|REGG_LOCAL_NON_PTR_VARS|REGG_STK_TEMP)); else { - if (sys_var_init_flag&1 && i) + if (sys_var_init_flag && i) ICLocalVarInit(tempi); ICPushRegs(tempi,cc->htc.fun->used_reg_mask - &(REGG_C_LOCAL_VARS|REGG_C_LOCAL_NON_PTR_VARS)); + &(REGG_LOCAL_VARS|REGG_LOCAL_NON_PTR_VARS)); } for (i=0;i0 && reg_offsets[i].offset!=MAX_I64) { tempc=OptClassFwd(reg_offsets[i].m->member_class); - ICMov(tempi,TY_REG+RT_I64,i,0, - TY_DISP+tempc->raw_type, + ICMov(tempi,MDF_REG+RT_I64,i,0,MDF_DISP+tempc->raw_type, REG_RBP,reg_offsets[i].offset,ip2); } } @@ -792,18 +736,18 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tempi,0x58); break; case IC_INVLPG: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU24(tempi,0x38010F); break; case IC_CLFLUSH: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU24(tempi,0x38AE0F); break; case IC_GET_RFLAGS: ICU8(tempi,0x9C); - ICPop(tempi,TY_REG+RT_I64,REG_RAX,0,ip2); + ICPop(tempi,MDF_REG+RT_I64,REG_RAX,0,ip2); break; case IC_CARRY: ICU24(tempi,0xC0920F); //SETC AL @@ -820,24 +764,24 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tempi,0x9D); break; case IC_GET_RBP: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_REG+RT_I64,REG_RBP,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + MDF_REG+RT_I64,REG_RBP,0,ip2); break; case IC_SET_RBP: - ICMov(tempi,TY_REG+RT_I64,REG_RBP,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RBP,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); break; case IC_GET_RSP: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_REG+RT_I64,REG_RSP,0,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + MDF_REG+RT_I64,REG_RSP,0,ip2); break; case IC_SET_RSP: - ICMov(tempi,TY_REG+RT_I64,REG_RSP,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RSP,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); break; case IC_RETURN_VAL: case IC_SET_RAX: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); break; case IC_RETURN_VAL2: @@ -863,21 +807,21 @@ cc->pass==10 is final pass, code is placed into buf. 0xBB0F,0x38BA0F,ip2); break; case IC_BSF: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU32(tempi,0xC0BC0F48); ICU16(tempi,0x0375); ICU24(tempi,0xD0F748); break; case IC_BSR: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU32(tempi,0xC0BD0F48); ICU16(tempi,0x0375); ICU24(tempi,0xD0F748); break; case IC_SIGN_I64: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICCopyTemplate(cc,tempi,CMP_TEMPLATE_SIGN_I64, TRUE,FALSE,FALSE,CN_MAIN); @@ -916,7 +860,7 @@ cc->pass==10 is final pass, code is placed into buf. ICFTemplateFun(cc,tempi,CMP_TEMPLATE_ATAN,ip2); break; case IC_ABS_I64: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU24(tempi,0xC08548); ICU16(tempi,0x0379); @@ -962,12 +906,12 @@ cc->pass==10 is final pass, code is placed into buf. ICQueRem(tempi,ip2); break; case IC_STRLEN: - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICCopyTemplate(cc,tempi,CMP_TEMPLATE_STRLEN,TRUE,FALSE,FALSE,CN_MAIN); break; case IC_IN_U32: - if (tempi->a1.type&TY_MASK==TY_IMM) { + if (tempi->a1.type&MDF_IMM) { ICU16(tempi,0xC033); if (tempi->a1.disp<=MAX_U8) ICU16(tempi,0xE5+tempi->a1.disp<<8); @@ -976,14 +920,14 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tempi,0xED); } } else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU16(tempi,0xC033); ICU8(tempi,0xED); } break; case IC_IN_U16: - if (tempi->a1.type&TY_MASK==TY_IMM) { + if (tempi->a1.type&MDF_IMM) { ICU16(tempi,0xC033); if (tempi->a1.disp<=MAX_U8) ICU24(tempi,0xE500+OC_OP_SIZE_PREFIX+tempi->a1.disp<<16); @@ -992,14 +936,14 @@ cc->pass==10 is final pass, code is placed into buf. ICU16(tempi,0xED00+OC_OP_SIZE_PREFIX); } } else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU16(tempi,0xC033); ICU16(tempi,0xED00+OC_OP_SIZE_PREFIX); } break; case IC_IN_U8: - if (tempi->a1.type&TY_MASK==TY_IMM) { + if (tempi->a1.type&MDF_IMM) { ICU16(tempi,0xC033); if (tempi->a1.disp<=MAX_U8) ICU16(tempi,0xE4+tempi->a1.disp<<8); @@ -1008,15 +952,15 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tempi,0xEC); } } else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU16(tempi,0xC033); ICU8(tempi,0xEC); } break; case IC_OUT_U32: - if (tempi->a2.type&TY_MASK==TY_IMM) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + if (tempi->a2.type&MDF_IMM) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); if (tempi->a2.disp<=MAX_U8) ICU16(tempi,0xE7+tempi->a2.disp<<8); @@ -1025,23 +969,16 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tempi,0xEF); } } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU8(tempi,0xEF); } break; case IC_OUT_U16: - if (tempi->a2.type&TY_MASK==TY_IMM) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + if (tempi->a2.type&MDF_IMM) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); if (tempi->a2.disp<=MAX_U8) ICU24(tempi,0xE700+OC_OP_SIZE_PREFIX+tempi->a2.disp<<16); @@ -1050,23 +987,16 @@ cc->pass==10 is final pass, code is placed into buf. ICU16(tempi,0xEF00+OC_OP_SIZE_PREFIX); } } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU16(tempi,0xEF00+OC_OP_SIZE_PREFIX); } break; case IC_OUT_U8: - if (tempi->a2.type&TY_MASK==TY_IMM) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + if (tempi->a2.type&MDF_IMM) { + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); if (tempi->a2.disp<=MAX_U8) ICU16(tempi,0xE6+tempi->a2.disp<<8); @@ -1075,17 +1005,10 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tempi,0xEE); } } else { - if (tempi->ic_flags & ICF_A1_FIRST) { - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - } else { - ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); - } + ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, + tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip2); + ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, + tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICU8(tempi,0xEE); } break; @@ -1105,9 +1028,9 @@ cc->pass==10 is final pass, code is placed into buf. break; case IC_CALL_END: ICPopRegs(tempi,tempi->ic_data); - if (tempi->r.type&TY_MASK) + if (tempi->r.type.mode) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip2); + MDF_REG+RT_I64,REG_RAX,0,ip2); break; case IC_POP_REGS: ICPopRegs(tempi,tempi->ic_data); @@ -1122,24 +1045,24 @@ cc->pass==10 is final pass, code is placed into buf. ICPut(cc,tempi); LexExcept(cc,"Compiler Optimization Error at "); } - if (tempi->r.type&TY_MASK) { + if (tempi->r.type.mode) { if (tempi->ic_flags & ICF_R_TO_F64) { if (tempi->ic_code==IC_PUSH_CMP) { - ICU24(tempi,0xDC8B48); - ICU24(tempi,0x2BDF48); - ICU24(tempi,0x1BDD48); - ICU8(tempi,0x9B); + ICU24(tempi,0x242CDF); //FILD U64 [RSP] + ICU24(tempi,0x241CDD); //FSTP U64 [RSP] } else { ICFCvt(cc,tempi,REG_RAX,tempi->r.type,tempi->r.reg,tempi->r.disp, FALSE,CN_R,ip2); - ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip2); + if (!Bt(&tempi->ic_flags,ICf_DONT_POP_FLOAT0+ + cc->cur_ic_float_op_num-1)) + ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, + MDF_REG+RT_I64,REG_RAX,0,ip2); } } else if (tempi->ic_flags & ICF_R_TO_INT) { ICFCvt(cc,tempi,REG_RAX,tempi->r.type,tempi->r.reg,tempi->r.disp, TRUE,CN_R,ip2); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_REG+RT_I64,REG_RAX,0,ip2); + MDF_REG+RT_I64,REG_RAX,0,ip2); } } } diff --git a/Compiler/PrsExp.CPP b/Compiler/PrsExp.CPP index f619360..188c05f 100644 --- a/Compiler/PrsExp.CPP +++ b/Compiler/PrsExp.CPP @@ -203,7 +203,7 @@ pe_do_binary_op: tempc=OptClassFwd(tempi->ic_class); if (intermediate_code_table[tempi->ic_code].type!=IST_DEREF || !tempc->ptr_stars_cnt && !Bt(&tempc->flags,Cf_INTERNAL_TYPE)) - LexExcept(cc,"invalid lval at "); + LexExcept(cc,"Invalid lval at "); tempi->ic_code=IC_NOP1; //Important for setting class (pretty sure) cur_op.u8[2]=PREC_ASSIGN|ASSOCF_RIGHT; } @@ -302,7 +302,7 @@ U0 PrsSizeOf(CCmpCtrl *cc) CDbgInfo *dbg_info; I64 i; if (cc->token!=TK_IDENT) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); if (tempm=cc->local_var_entry) { tempc=tempm->member_class; i=tempc->size*tempm->dim.total_cnt; @@ -312,7 +312,7 @@ U0 PrsSizeOf(CCmpCtrl *cc) if (!(tempc=cc->hash_entry) || !(tempc->type & (HTT_CLASS|HTT_INTERNAL_TYPE|HTT_GLBL_VAR| HTT_FUN|HTT_EXPORT_SYS_SYM))) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); if (tempc->type&(HTT_FUN|HTT_EXPORT_SYS_SYM)) { if (!(dbg_info=tempc(CHashFun *)->dbg_info)) LexExcept(cc,"Size not defined at "); @@ -324,11 +324,11 @@ U0 PrsSizeOf(CCmpCtrl *cc) while (Lex(cc)=='.') { pu_sizeof_member: if (!(tempc->type & (HTT_CLASS|HTT_GLBL_VAR))) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); else if (tempc->type & HTT_GLBL_VAR) tempc=tempc(CHashGlblVar *)->var_class; if (Lex(cc)!=TK_IDENT || !(tempm=MemberFind(cc->cur_str,tempc))) - LexExcept(cc,"invalid member at "); + LexExcept(cc,"Invalid member at "); else if (cc->local_var_entry) cc->local_var_entry->use_cnt--; tempc=tempm->member_class; @@ -351,22 +351,22 @@ U0 PrsOffsetOf(CCmpCtrl *cc) CMemberLst *tempm; I64 i; if (cc->token!=TK_IDENT) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); if (tempm=cc->local_var_entry) tempc=tempm->member_class; else { tempc=cc->hash_entry; if (!tempc || !(tempc->type & (HTT_CLASS|HTT_GLBL_VAR))) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); else if (tempc->type & HTT_GLBL_VAR) tempc=tempc(CHashGlblVar *)->var_class; } if (Lex(cc)!='.') - LexExcept(cc,"expecting '.' at "); + LexExcept(cc,"Expecting '.' at "); i=0; do { if (Lex(cc)!=TK_IDENT || !(tempm=MemberFind(cc->cur_str,tempc))) - LexExcept(cc,"invalid member at "); + LexExcept(cc,"Invalid member at "); else if (cc->local_var_entry) cc->local_var_entry->use_cnt--; i+=tempm->offset; @@ -437,13 +437,13 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf) if (cc->token==',') Lex(cc); else if (cc->token!=';') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); } else { if (needs_right_paren) { if (cc->token==',') Lex(cc); else if (cc->token!=')') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); } } } @@ -494,7 +494,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf) if (cc->token==',') Lex(cc); else - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); } COCInit(cc); if (!PrsExpression(cc,NULL,FALSE,ps)) @@ -511,7 +511,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf) if (cc->token==',') Lex(cc); else - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); } COCInit(cc); if (!PrsExpression(cc,NULL,FALSE,ps)) @@ -528,7 +528,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf) if (cc->token==')') Lex(cc); else - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); } tempcbh1=tempcbh->coc_next; tempcbh->coc_next=cc->coc.coc_next; @@ -622,8 +622,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, if (Bt(&tempf->flags,Cf_EXTERN)) { if (cc->flags&CCF_AOT_COMPILE) { if (cc->flags&CCF_ASM_EXPRESSIONS) { - if (tempex=HashFind( - tempf->str,cc->htc.hash_table_lst, + if (tempex=HashFind(tempf->str,cc->htc.hash_table_lst, HTT_EXPORT_SYS_SYM)) goto pu_export_sys_sym; else @@ -634,8 +633,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, cc->abs_cnts.externs++; ICAdd(cc,IC_IMM_I64, &tempf->executable_addr,cmp.internal_types[RT_PTR]); - ICAdd(cc,IC_DEREF,0, - cmp.internal_types[RT_PTR]); + ICAdd(cc,IC_DEREF,0,cmp.internal_types[RT_PTR]); } else { if (cc->flags&CCF_AOT_COMPILE) { ICAdd(cc,IC_ABS_ADDR, @@ -673,7 +671,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, return PE_UNARY_TERM2; sub_switch_start: - case TK_INTEGER: + case TK_INT: case TK_CHAR_CONST: case TK_INS_BIN_SIZE: if (cc->cur_i64<0) @@ -737,7 +735,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, if (!paren_warn) *paren_prec=PREC_NULL; if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); Lex(cc); //skip ) cc->flags= cc->flags & ~CCF_ARRAY | CCF_RAX | CCF_PAREN; return PE_UNARY_MODIFIERS; @@ -782,7 +780,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, i=PrsPop(ps); ps->ptr--; if (i.u16[0]!=IC_ADDR) - LexExcept(cc,"expecting '&' at "); + LexExcept(cc,"Expecting '&' at "); ICAdd(cc,IC_IMM_I64,tempm->offset,cmp.internal_types[RT_PTR]); *_local_var=tempm; Lex(cc); @@ -805,7 +803,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, pu_ident_but_not_local_var: if (!(tempex=cc->hash_entry)) { if (!(cc->flags & CCF_ASM_EXPRESSIONS)) - LexExcept(cc,"invalid lval at "); + LexExcept(cc,"Invalid lval at "); tempc=NULL; pu_new_sys_sym: tempex=CAlloc(sizeof(CHashExport),Fs->code_heap); @@ -912,7 +910,7 @@ pu_export_sys_sym: PrsSizeOf(cc); while (j--) { if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); Lex(cc); } return PE_MAYBE_MODIFIERS; @@ -925,7 +923,7 @@ pu_export_sys_sym: PrsOffsetOf(cc); while (j--) { if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); Lex(cc); } return PE_MAYBE_MODIFIERS; @@ -943,14 +941,14 @@ pu_export_sys_sym: Lex(cc); while (j--) { if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); Lex(cc); } return PE_MAYBE_MODIFIERS; } } } - LexExcept(cc,"missing expression at "); + LexExcept(cc,"Missing expression at "); } I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, @@ -987,10 +985,10 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, if (!(cc->flags & CCF_RAX)) tempc--; if (!(tempc->type & HTT_CLASS)) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); if (Lex(cc)!=TK_IDENT || !(tempm=MemberFind(cc->cur_str,tempc))) - LexExcept(cc,"invalid member at "); + LexExcept(cc,"Invalid member at "); else if (cc->local_var_entry) cc->local_var_entry->use_cnt--; Lex(cc); //skip member name @@ -1017,7 +1015,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, if (!*unary_post_prec) *unary_post_prec=PREC_TERM; if (Lex(cc)!=TK_IDENT) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); if (Btr(&cc->flags,CCf_FUN_EXP)) ps->ptr2--; cc->flags&=~CCF_ARRAY; @@ -1044,7 +1042,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, tempi->ic_class=tempc; ICAdd(cc,IC_HOLYC_TYPECAST,was_paren,tempc); if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); Lex(cc); return PE_UNARY_MODIFIERS; case '[': @@ -1053,11 +1051,11 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, Lex(cc); tempc=OptClassFwd(cc->coc.coc_root.last->ic_class); if (!tempc->ptr_stars_cnt) - LexExcept(cc,"not array or ptr "); + LexExcept(cc,"Not array or ptr "); if (!(cc->flags & (CCF_ARRAY | CCF_RAX))) { tempc=OptClassFwd(tempc-1); if (!tempc->ptr_stars_cnt) - LexExcept(cc,"not array or ptr "); + LexExcept(cc,"Not array or ptr "); ICAdd(cc,IC_DEREF+PREC_UNARY_PRE<<16,0,tempc); } tempc1=tempc-1; @@ -1069,7 +1067,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, throw('Compiler'); cc->flags=cc->flags&~CCF_FUN_EXP|old_flags&CCF_FUN_EXP; if (cc->token!=']') - LexExcept(cc,"missing ']' at "); + LexExcept(cc,"Missing ']' at "); Lex(cc); //skip ] tempi1=cc->coc.coc_root.last; tempi1->ic_flags|=ICF_R_TO_INT; @@ -1085,7 +1083,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, throw('Compiler'); cc->flags=cc->flags&~CCF_FUN_EXP|old_flags&CCF_FUN_EXP; if (cc->token!=']') - LexExcept(cc,"missing ']' at "); + LexExcept(cc,"Missing ']' at "); Lex(cc); //skip ] tempi1=cc->coc.coc_root.last; tempi1->ic_flags|=ICF_R_TO_INT; diff --git a/Compiler/PrsStmt.CPP b/Compiler/PrsStmt.CPP index 6031db5..9074101 100644 --- a/Compiler/PrsStmt.CPP +++ b/Compiler/PrsStmt.CPP @@ -2,7 +2,7 @@ CHashClass *PrsClass(CCmpCtrl *cc,I64 keyword,I64 fsp_flags,Bool is_extern) { CHashClass *tempc,*base_class; if (cc->token!=TK_IDENT) - LexExcept(cc,"expecting identifier at "); + LexExcept(cc,"Expecting identifier at "); if (is_extern) { tempc=PrsClassNew; tempc->str=cc->cur_str; @@ -50,7 +50,7 @@ CHashClass *PrsClass(CCmpCtrl *cc,I64 keyword,I64 fsp_flags,Bool is_extern) if (Lex(cc)==':') { if (Lex(cc)!=TK_IDENT || !(base_class=cc->hash_entry) || !(base_class->type&HTT_CLASS)) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); if (Lex(cc)==',') LexExcept(cc,"Only one base class allowed at this time at "); tempc->base_class=base_class; @@ -91,7 +91,7 @@ CHashFun *PrsFunJoin(CCmpCtrl *cc, } else tempf=NULL; if (tempf) { - tempf->used_reg_mask=REGG_C_CLOBBERED+REGG_SAVED+REGG_C_TEMP_CLOBBERED; + tempf->used_reg_mask=REGG_CLOBBERED+REGG_SAVED+REGG_STK_TEMP; Free(tempf->src_link); tempf->src_link=NULL; Free(tempf->index); @@ -100,8 +100,8 @@ CHashFun *PrsFunJoin(CCmpCtrl *cc, MemberLstDel(tempf); } else { tempf=PrsFunNew; - tempf->used_reg_mask=REGG_C_CLOBBERED+REGG_SAVED+REGG_C_TEMP_CLOBBERED; - tempf->clobbered_reg_mask=REGG_C_CLOBBERED+REGG_C_TEMP_CLOBBERED; + tempf->used_reg_mask=REGG_CLOBBERED+REGG_SAVED+REGG_STK_TEMP; + tempf->clobbered_reg_mask=REGG_CLOBBERED+REGG_STK_TEMP; tempf->str=name; if (cc->flags&CCF_AOT_COMPILE) tempf->executable_addr=aotc->ip; @@ -214,9 +214,8 @@ U0 PrsGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tempc, while (TRUE) { tempc=PrsType(cc,&saved_tempc,&saved_mode,NULL,&st, &tempf_fun_ptr,&tempex,&tempad,fsp_flags); - if (!st) - return; + if (!st) return; if (tempad.next) is_array=TRUE; else if (tempad.total_cnt<0) { @@ -228,7 +227,7 @@ U0 PrsGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tempc, val=saved_val; mode=saved_mode; if (tempex && mode&255==PRS0_EXTERN && !(cc->flags&CCF_AOT_COMPILE) && - tempex->type & HTT_EXPORT_SYS_SYM) { + tempex->type&HTT_EXPORT_SYS_SYM) { val=tempex->val; mode=PRS0__EXTERN|PRS1_NULL; } @@ -352,7 +351,7 @@ U0 PrsGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tempc, tempg->type=HTT_GLBL_VAR | HTF_EXPORT; if (tempex && tempex->type & HTT_GLBL_VAR) has_alias=TRUE; - if (sys_var_init_flag&1) + if (sys_var_init_flag) for (k=0;ktype&HTF_UNRESOLVED && MHeapCtrl(tempex)==MHeapCtrl(tempg)) has_alias=TRUE; - if (sys_var_init_flag&1) + if (sys_var_init_flag) MemSet(tempg->data_addr,sys_var_init_val,j); } } @@ -413,14 +412,14 @@ U0 PrsGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tempc, if (temphg) temphg->size=tempg->size; if (cc->flags&CCF_AOT_COMPILE) { - if (sys_var_init_flag&1) + if (sys_var_init_flag) for (k=0;ksize;k++) AOTStoreCodeU8(cc,sys_var_init_val); else for (k=0;ksize;k++) AOTStoreCodeU8(cc,0); } else - if (sys_var_init_flag&1) + if (sys_var_init_flag) MemSet(tempg->data_addr,sys_var_init_val,k); LexPopRestore(cc); } @@ -445,7 +444,7 @@ U0 PrsGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tempc, Lex(cc); else { if (cc->token!=';') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); Lex(cc); return; } @@ -458,12 +457,12 @@ U0 PrsIf(CCmpCtrl *cc,I64 try_cnt,CCodeMisc *lb_break) CCodeMisc *lb,*lb1; I64 k; if (cc->token!='(') - LexExcept(cc,"expecting '(' at "); + LexExcept(cc,"Expecting '(' at "); Lex(cc); if (!PrsExpression(cc,NULL,FALSE)) throw('Compiler'); if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); Lex(cc); lb=COCMiscNew(cc,CMT_LABEL); ICAdd(cc,IC_BR_ZERO,lb,0); @@ -484,14 +483,14 @@ U0 PrsWhile(CCmpCtrl *cc,I64 try_cnt) { CCodeMisc *lb,*lb_done; if (cc->token!='(') - LexExcept(cc,"expecting '(' at "); + LexExcept(cc,"Expecting '(' at "); Lex(cc); lb=COCMiscNew(cc,CMT_LABEL); ICAdd(cc,IC_LABEL,lb,0); if (!PrsExpression(cc,NULL,FALSE)) throw('Compiler'); if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); Lex(cc); lb_done=COCMiscNew(cc,CMT_LABEL); ICAdd(cc,IC_BR_ZERO,lb_done,0); @@ -508,18 +507,18 @@ U0 PrsDoWhile(CCmpCtrl *cc,I64 try_cnt) ICAdd(cc,IC_LABEL,lb,0); PrsStmt(cc,try_cnt,lb_done); if (PrsKeyWord(cc)!=KW_WHILE) - LexExcept(cc,"missing 'while' at"); + LexExcept(cc,"Missing 'while' at"); if (Lex(cc)!='(') - LexExcept(cc,"expecting '(' at "); + LexExcept(cc,"Expecting '(' at "); Lex(cc); if (!PrsExpression(cc,NULL,FALSE)) throw('Compiler'); if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); ICAdd(cc,IC_BR_NOT_ZERO,lb,0); ICAdd(cc,IC_LABEL,lb_done,0); if (Lex(cc)!=';') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); Lex(cc); } @@ -529,7 +528,7 @@ U0 PrsFor(CCmpCtrl *cc,I64 try_cnt) CCodeMisc *lb,*lb_done; if (cc->token!='(') - LexExcept(cc,"expecting '(' at "); + LexExcept(cc,"Expecting '(' at "); Lex(cc); PrsStmt(cc,try_cnt); @@ -540,7 +539,7 @@ U0 PrsFor(CCmpCtrl *cc,I64 try_cnt) lb_done=COCMiscNew(cc,CMT_LABEL); ICAdd(cc,IC_BR_ZERO,lb_done,0); if (cc->token!=';') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); Lex(cc); COCPush(cc); @@ -551,7 +550,7 @@ U0 PrsFor(CCmpCtrl *cc,I64 try_cnt) tempcbh=COCPopNoFree(cc); COCPop(cc); if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); Lex(cc); PrsStmt(cc,try_cnt,lb_done); @@ -586,7 +585,7 @@ U0 PrsSwitch(CCmpCtrl *cc,I64 try_cnt) else if (cc->token=='[') nobound=TRUE; else - LexExcept(cc,"expecting '(' or '[' at "); + LexExcept(cc,"Expecting '(' or '[' at "); Lex(cc); QueInit(&root); @@ -605,14 +604,14 @@ U0 PrsSwitch(CCmpCtrl *cc,I64 try_cnt) if (nobound) { ICAdd(cc,IC_NOBOUND_SWITCH,mc_jt,0); if (cc->token!=']') - LexExcept(cc,"missing ']' at "); + LexExcept(cc,"Missing ']' at "); } else { ICAdd(cc,IC_SWITCH,mc_jt,0); if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); } if (Lex(cc)!='{') - LexExcept(cc,"expecting '{' at "); + LexExcept(cc,"Expecting '{' at "); Lex(cc); ICAdd(cc,IC_LABEL,mc_jt->begin,0); while (TRUE) { @@ -625,7 +624,7 @@ sw_cont: if (Lex(cc)==':') Lex(cc); else - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); tempss=MAlloc(sizeof(CSubSwitch)); QueIns(tempss,root.last); root.last->lb_break=COCMiscNew(cc,CMT_LABEL); @@ -707,10 +706,11 @@ sw_cont: temps->next=header; header=temps; } + k_start=k_end; } else - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); } else - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); break; case KW_DFT: if (root.next!=&root) { @@ -722,7 +722,7 @@ sw_cont: if (cc->token==':') Lex(cc); else - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); if (root.next!=&root) { tempss=root.next; while (tempss!=&root) { @@ -743,18 +743,18 @@ sw_sub_end: ICAdd(cc,IC_LABEL,tempss->lb_break,0); if (tempss==&root) { if (cc->token!='}') - LexExcept(cc,"missing '}' at "); + LexExcept(cc,"Missing '}' at "); Lex(cc); break; } else { QueRem(tempss); Free(tempss); if (PrsKeyWord(cc)!=KW_SUB_SWITCH_END) - LexExcept(cc,"missing 'sub_switch_end' at "); + LexExcept(cc,"Missing 'sub_switch_end' at "); if (Lex(cc)==':') Lex(cc); else - LexExcept(cc,"expecting ':' at "); + LexExcept(cc,"Expecting ':' at "); } } if (!dft_found) @@ -789,12 +789,12 @@ U0 PrsNoUnusedWarn(CCmpCtrl *cc) CMemberLst *tempm; while (cc->token==TK_IDENT) { if (!(tempm=cc->local_var_entry)) - LexExcept(cc,"expecting local var at "); + LexExcept(cc,"Expecting local var at "); tempm->flags|=MLF_NO_UNUSED_WARN; if (Lex(cc)==',') Lex(cc); else if (cc->token!=';') - LexExcept(cc,"expecting ',' at "); + LexExcept(cc,"Expecting ',' at "); } } @@ -817,7 +817,7 @@ U0 PrsStreamBlk(CCmpCtrl *cc) if (cc->token=='{') Lex(cc); else - LexExcept(cc,"missing '}' at "); + LexExcept(cc,"Missing '}' at "); while (cc->token && cc->token!='}') ExeCmdLine(cc); @@ -888,7 +888,7 @@ U0 PrsTryBlk(CCmpCtrl *cc,I64 try_cnt) ICAdd(cc,IC_JMP,lb_done,0); if (PrsKeyWord(cc)!=KW_CATCH) - LexExcept(cc,"missing 'catch' at"); + LexExcept(cc,"Missing 'catch' at"); Lex(cc); ICAdd(cc,IC_LABEL,lb_catch,0); @@ -995,26 +995,26 @@ Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0, if (cc->flags&CCF_AOT_COMPILE) { if (cc->token!=TK_IDENT || !(tempex=cc->hash_entry) || !(tempex->type & HTT_EXPORT_SYS_SYM)) - LexExcept(cc,"expecting System sym at "); + LexExcept(cc,"Expecting System sym at "); i=tempex->val; Lex(cc); } else i=LexExpressionI64(cc); if (cc->token!=TK_IDENT || !(tempex=cc->hash_entry) || !(tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE))) - LexExcept(cc,"expecting type at "); + LexExcept(cc,"Expecting type at "); Lex(cc); PrsGlblVarLst(cc,PRS0__EXTERN|PRS1_NULL,tempex,i,fsp_flags); break; case KW__IMPORT: sm_underscore_import: if (cc->token!=TK_IDENT) - LexExcept(cc,"expecting System sym at "); + LexExcept(cc,"Expecting System sym at "); import_name=cc->cur_str; cc->cur_str=0; if (Lex(cc)!=TK_IDENT || !(tempex=cc->hash_entry) || !(tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE))) - LexExcept(cc,"expecting type at "); + LexExcept(cc,"Expecting type at "); Lex(cc); PrsGlblVarLst(cc,PRS0__IMPORT|PRS1_NULL,tempex, import_name,FALSE); @@ -1022,7 +1022,7 @@ sm_underscore_import: break; case KW_EXTERN: if (cc->token!=TK_IDENT) - LexExcept(cc,"expecting type at "); + LexExcept(cc,"Expecting type at "); tempex=cc->hash_entry; i=PrsKeyWord(cc); if (i==KW_CLASS||i==KW_UNION) { @@ -1033,7 +1033,7 @@ sm_underscore_import: } if (!tempex || !(tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE))) - LexExcept(cc,"expecting type at "); + LexExcept(cc,"Expecting type at "); if (Bt(&cc->opts,OPTf_EXTERNS_TO_IMPORTS)) goto sm_import; Lex(cc); @@ -1042,7 +1042,7 @@ sm_underscore_import: case KW_IMPORT: if (cc->token!=TK_IDENT || !(tempex=cc->hash_entry) || !(tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE))) - LexExcept(cc,"expecting type at "); + LexExcept(cc,"Expecting type at "); sm_import: Lex(cc); PrsGlblVarLst(cc,PRS0_IMPORT|PRS1_NULL,tempex,0,FALSE); @@ -1051,7 +1051,7 @@ sm_import: i=LexExpressionI64(cc); if (cc->token!=TK_IDENT || !(tempex=cc->hash_entry) || !(tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE))) - LexExcept(cc,"expecting type at "); + LexExcept(cc,"Expecting type at "); Lex(cc); PrsGlblVarLst(cc,PRS0__INTERN|PRS1_NULL,tempex,i,fsp_flags); break; @@ -1115,7 +1115,7 @@ sm_import: goto sm_semicolon; case KW_GOTO: if (Lex(cc)!=TK_IDENT) - LexExcept(cc,"expecting identifier at "); + LexExcept(cc,"Expecting identifier at "); if (!(g_lb=COCGoToLabelFind(cc,cc->cur_str))) { g_lb=COCMiscNew(cc,CMT_GOTO_LABEL); g_lb->str=cc->cur_str; @@ -1188,7 +1188,7 @@ sm_not_keyword_afterall: if (Lex(cc)==':') //skip cur_str Lex(cc); //skip colon else - LexExcept(cc,"undefined identifier at "); + LexExcept(cc,"Undefined identifier at "); if (!cc->htc.fun) LexExcept(cc,"No global labels at "); if (cc->token!=',') goto sm_done; @@ -1205,7 +1205,7 @@ sm_semicolon: if (cc->token==';') Lex(cc); else if (cc->token!=',') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); } if (cc->token!=',') goto sm_done; } else diff --git a/Compiler/PrsVar.CPP b/Compiler/PrsVar.CPP index 46f156f..86febdd 100644 --- a/Compiler/PrsVar.CPP +++ b/Compiler/PrsVar.CPP @@ -13,7 +13,7 @@ U0 PrsVarInit(CCmpCtrl *cc,U8 **_dst,CHashClass *tempc,CArrayDim *tempad, tempc=OptClassFwd(tempc); if (tempm=tempc->member_lst_and_root) { if (cc->token!='{') - LexExcept(cc,"expecting '{' at "); + LexExcept(cc,"Expecting '{' at "); LexPopNoRestore(cc); LexPush(cc); Lex(cc); @@ -26,7 +26,7 @@ U0 PrsVarInit(CCmpCtrl *cc,U8 **_dst,CHashClass *tempc,CArrayDim *tempad, } LexPopNoRestore(cc); if (cc->token!='}') - LexExcept(cc,"missing '}' at "); + LexExcept(cc,"Missing '}' at "); Lex(cc); } else { if (tempc->ptr_stars_cnt==1 && @@ -278,7 +278,7 @@ Bool PrsArrayDims(CCmpCtrl *cc,I64 mode,CArrayDim *dim) tempad->total_cnt=1; dim->total_cnt*=j; if (cc->token!=']') - LexExcept(cc,"missing ']' at "); + LexExcept(cc,"Missing ']' at "); } while (Lex(cc)=='['); } return result; @@ -296,7 +296,7 @@ CHashClass *PrsType(CCmpCtrl *cc,CHashClass **_tempc1, pt_start: if (!tempc1 || !(tempc1->type & (HTT_CLASS|HTT_INTERNAL_TYPE))) - LexExcept(cc,"invalid class at "); + LexExcept(cc,"Invalid class at "); ptr_stars_cnt=0; while (cc->token=='*') { @@ -323,7 +323,7 @@ CHashClass *PrsType(CCmpCtrl *cc,CHashClass **_tempc1, if (cc->token=='(') { if (Lex(cc)!='*') - LexExcept(cc,"expecting '*' at "); + LexExcept(cc,"Expecting '*' at "); ptr_stars_cnt=1; //fun_ptr while (Lex(cc)=='*') ptr_stars_cnt++; //fun_ptr @@ -346,15 +346,15 @@ CHashClass *PrsType(CCmpCtrl *cc,CHashClass **_tempc1, *_ident=StrNew("_anon_"); tempm->flags|=MLF_NO_UNUSED_WARN; } else - LexExcept(cc,"expecting identifier at "); + LexExcept(cc,"Expecting identifier at "); } } if (ptr_stars_cnt>=0) { //fun_ptr if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + LexExcept(cc,"Missing ')' at "); if (Lex(cc)!='(') - LexExcept(cc,"expecting '(' at "); + LexExcept(cc,"Expecting '(' at "); fun_ptr=PrsFunJoin(cc,tempc1,NULL,fsp_flags)+ptr_stars_cnt; tempc1=cmp.internal_types[RT_PTR]+ptr_stars_cnt; } @@ -437,7 +437,7 @@ U0 PrsVarLst(CCmpCtrl *cc,CHashClass *tempc,I64 mode,I64 union_base=0) cc->class_ip=tempc->size; while (cc->token=='$$') { if (Lex(cc)!='=') //skip $$ - LexExcept(cc,"expecting '=' at "); + LexExcept(cc,"Expecting '=' at "); Lex(cc); //skip = cc->class_ip=LexExpression(cc); if (-cc->class_ip>tempc->neg_offset) @@ -447,7 +447,7 @@ U0 PrsVarLst(CCmpCtrl *cc,CHashClass *tempc,I64 mode,I64 union_base=0) else tempc->size=cc->class_ip; if (cc->token!=';') - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); Lex(cc); //skip ; } if (cc->token==')' || cc->token=='}') { @@ -482,14 +482,14 @@ pvl_restart1: else temph=NULL; if (!temph) - LexExcept(cc,"expecting type at "); + LexExcept(cc,"Expecting type at "); k=PrsKeyWord(cc); if (k==KW_UNION) { Lex(cc); PrsVarLst(cc,tempc,mode|PRSF_UNION,tempc->size); } else { if (!(temph->type & (HTT_CLASS|HTT_INTERNAL_TYPE))) - LexExcept(cc,"expecting type at "); + LexExcept(cc,"Expecting type at "); first=TRUE; pvl_restart2: tempc1=temph; @@ -555,7 +555,7 @@ pvl_restart3: if (cc->flags&CCF_AOT_COMPILE) { tempm->static_data_ip=cc->aotc->ip; k>>=3; - if (sys_var_init_flag&1) { + if (sys_var_init_flag) { k<<=3; while (k--) AOTStoreCodeU8(cc,sys_var_init_val); @@ -563,7 +563,7 @@ pvl_restart3: while (k--) AOTStoreCodeU64(cc,0); } else - if (sys_var_init_flag&1) + if (sys_var_init_flag) MemSet(tempm->static_data,sys_var_init_val,k); LexPopNoRestore(cc); if (cc->token=='=') { @@ -579,7 +579,7 @@ pvl_restart3: k=(i+7)&~7; if (cc->flags&CCF_AOT_COMPILE) { k>>=3; - if (sys_var_init_flag&1) { + if (sys_var_init_flag) { k<<=3; while (k--) AOTStoreCodeU8(cc,sys_var_init_val); @@ -587,7 +587,7 @@ pvl_restart3: while (k--) AOTStoreCodeU64(cc,0); } else - if (sys_var_init_flag&1) + if (sys_var_init_flag) MemSet(tempm->static_data,sys_var_init_val,k); LexPopRestore(cc); } @@ -724,7 +724,7 @@ pvl_restart3: goto pvl_done; break; default: - LexExcept(cc,"missing ';' at"); + LexExcept(cc,"Missing ';' at"); } } } diff --git a/Compiler/UAsm.CPP b/Compiler/UAsm.CPP index 5a51b6f..ab27b7a 100644 --- a/Compiler/UAsm.CPP +++ b/Compiler/UAsm.CPP @@ -1,4 +1,4 @@ -I64 InstEntriesCompare(CInstruction *tempi1,CInstruction *tempi2) +I64 InstEntriesCompare(CInst *tempi1,CInst *tempi2) { I64 i1,i2,j=0,result=0,oc_cnt1=tempi1->opcode_cnt,oc_cnt2=tempi2->opcode_cnt; if (tempi1->flags&IEF_STI_LIKE) @@ -44,9 +44,9 @@ I64 InstEntriesCompare(CInstruction *tempi1,CInstruction *tempi2) } /* -U0 DumpUAsmIns(CInstruction *tempi) +U0 DumpUAsmIns(CInst *tempi) { - CHashOpcode *tempo=tempi(U8 *)-tempi->ins_entry_num*sizeof(CInstruction) + CHashOpcode *tempo=tempi(U8 *)-tempi->ins_entry_num*sizeof(CInst) -offset(CHashOpcode.ins); "%10s:%02d,%02d SV:%02d\n",tempo->str, tempi->arg1,tempi->arg2,tempi->slash_val; @@ -63,10 +63,10 @@ U0 DumpUAsmTables() } */ -CInstruction *InstEntryFind(U8 *ip,I64 opsize,I64 seg_size) +CInst *InstEntryFind(U8 *ip,I64 opsize,I64 seg_size) {//Binary Search I64 i,j,n,m,k,a1,a2,o1,o2,oc_cnt; - CInstruction *tempi,**table; + CInst *tempi,**table; i=0; if (seg_size==64) { table=uasm.table_64; @@ -123,7 +123,9 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize,I64 seg_size) tempi->flags&IEF_48_REX) m=-1; } - } + } else if ((Bt(&uasm.mem_arg_mask,a1)||Bt(&uasm.mem_arg_mask,a2)) && + ip[n]&0xC0==0xC0) + m=1; goto ief_compare_done; case SV_I_REG: m=ip[n]>>3-tempi->opcode[tempi->opcode_cnt-1]>>3; @@ -147,10 +149,8 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize,I64 seg_size) } } if (opsize==64 || a1==ARGT_M64 || a2==ARGT_M64) { - if (!Bt(&uasm.ins64_arg_mask,a1) && - !Bt(&uasm.ins64_arg_mask,a2) && - !(tempi->flags&IEF_48_REX)&& - !(a2==ARGT_NO && + if (!Bt(&uasm.ins64_arg_mask,a1) &&!Bt(&uasm.ins64_arg_mask,a2) && + !(tempi->flags&IEF_48_REX)&& !(a2==ARGT_NO && (ARGT_UIMM8<=a1<=ARGT_UIMM64 || ARGT_IMM8<=a1<=ARGT_IMM64))) m=1; else if (tempi->arg2==ARGT_IMM64 || tempi->arg2==ARGT_UIMM64) { @@ -188,7 +188,7 @@ ief_compare_done: U0 UAsmHashLoad() { CHashOpcode *temph; - CInstruction *tempi; + CInst *tempi; I64 i,j1,j2,k; uasm.ins64_arg_mask=0x0880888880+1<mask;i++) { temph=cmp.asm_hash->body[i]; while (temph) { - if (temph->type==HTT_OPCODE) { + if (temph->type==HTT_OPCODE && !(temph->oc_flags&OCF_ALIAS)) { tempi=&temph->ins; - for (k=0;kinstruction_entry_cnt;k++) { + for (k=0;kinst_entry_cnt;k++) { uasm.table_16_32_entries++; if (!(tempi->flags&IEF_NOT_IN_64_BIT)) uasm.table_64_entries++; @@ -219,9 +219,9 @@ U0 UAsmHashLoad() for (i=0;i<=cmp.asm_hash->mask;i++) { temph=cmp.asm_hash->body[i]; while (temph) { - if (temph->type==HTT_OPCODE) { + if (temph->type==HTT_OPCODE && !(temph->oc_flags&OCF_ALIAS)) { tempi=&temph->ins; - for (k=0;kinstruction_entry_cnt;k++) { + for (k=0;kinst_entry_cnt;k++) { uasm.table_16_32[j1++]=tempi; if (!(tempi->flags&IEF_NOT_IN_64_BIT)) uasm.table_64[j2++]=tempi; @@ -236,14 +236,14 @@ U0 UAsmHashLoad() } U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE) -{//Unassembles one instruction +{//Unassembles one inst I64 i,disp,imm,opsize,opadd, a1,a2,reloced_a1,reloced_a2, a1_size=0,a2_size=0,reloced_a1_size,reloced_a2_size, ModrM=-1,SIB=-1,scale,r1,r2, Mod=-1,RM1=-1,RM2=-1,REX=-1,REX_r=0,REX_x=0,REX_b=0; Bool cont; - CInstruction *tempi,*tempi2; + CInst *tempi,*tempi2; CHashOpcode *tempo; U8 *ip=*_ip,*ptr,*reloced_a1_st,*reloced_a2_st, *bin_data_area1,*bin_data_area2, @@ -328,14 +328,13 @@ U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE) tempi=InstEntryFind(ip,opsize,seg_size); if (opsize==32 && seg_size==64) { tempi2=InstEntryFind(ip,64,seg_size); - if (tempi2!=tempi && - tempi2->flags&IEF_REX_ONLY_R8_R15 || + if (tempi2!=tempi && tempi2->flags&IEF_REX_ONLY_R8_R15 || tempi2->flags&IEF_REX_XOR_LIKE&& ip[1]>>3&7==ip[1]&7) tempi=tempi2; } ip+=tempi->opcode_cnt; - tempo=tempi(U8 *)-tempi->ins_entry_num*sizeof(CInstruction) + tempo=tempi(U8 *)-tempi->ins_entry_num*sizeof(CInst) -offset(CHashOpcode.ins); if (just_ins) *line1=0; @@ -393,12 +392,9 @@ U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE) } } - if (ARGT_RM8<=a1<=ARGT_RM64 || - ARGT_M8<=a1<=ARGT_M64 || - ARGT_RM8<=a2<=ARGT_RM64 || - ARGT_M8<=a2<=ARGT_M64) { - if (ARGT_RM8<=a2<=ARGT_RM64 || - ARGT_M8<=a2<=ARGT_M64) { + if (ARGT_RM8<=a1<=ARGT_RM64 || ARGT_M8<=a1<=ARGT_M64 || + ARGT_RM8<=a2<=ARGT_RM64 || ARGT_M8<=a2<=ARGT_M64) { + if (ARGT_RM8<=a2<=ARGT_RM64 || ARGT_M8<=a2<=ARGT_M64) { reloced_a1=a2; reloced_a2=a1; reloced_a1_size=a2_size; @@ -647,7 +643,7 @@ U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE) } U8 *U(U8 *ip,I64 cnt=20,I64 seg_size=64) -{//Unassembles a num of instructions. +{//Unassembles a num of insts. I64 i; U8 buf[1024]; if (seg_size==16) diff --git a/Demo/AcctExample/HomeLocalize.CPP b/Demo/AcctExample/HomeLocalize.CPP index 9c5839b..3b63013 100644 --- a/Demo/AcctExample/HomeLocalize.CPP +++ b/Demo/AcctExample/HomeLocalize.CPP @@ -7,7 +7,7 @@ Option(OPTf_WARN_DUP_TYPES,ON); KbdTypeMatic(0); // Las Vegas is -7 during summer, -8 during winter -local_time_offset=-8*60*60*CDATE_FREQ; //Pacific +local_time_offset=-7*60*60*CDATE_FREQ; //Pacific // Remember you can set the time in the BIOS. //$AN,"",A="mouse_move_scale"$adjust these to set mouse move scale diff --git a/Demo/AcctExample/PersonalNotes.TXT b/Demo/AcctExample/PersonalNotes.TXT index e6e601b..de23450 100644 --- a/Demo/AcctExample/PersonalNotes.TXT +++ b/Demo/AcctExample/PersonalNotes.TXT @@ -1,5 +1,5 @@ - $WW,1$$FG,5$$TX+CX,"TODO"$$FG$ + * Investigate why packet loss $LK,"Training Sleep(1)",A="FF:::/Adam/Training.CPP,Sleep(1)"$. * Add AVL or red/black binary tree library support. We have fixed-size stack. Auto-balancing binary tree is very needed. I've done everything myself. I don't want to ruin a perfect record. I'm in no hurry. @@ -37,7 +37,6 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$ * Bug: Find-and-replace text on $$PT$$ line before it. * 12/25/2015 Copy-Paste index.html glitch if source window 40 columns. -* 01/10/2016 find-replace editor hung on $LK,"CounterRenaissance",A="FI:::/Home/Web/TAD/CounterRenaissance.TXT"$ "Rennaisance" * 01/06/2016 Editor filter "str" applied to output from LineRep looks broken. * Document, perhaps with video, $LK,"GetStr",A="MN:GetStr"$() all the way down into $LK,"PutKey",A="MN:PutKey"$() code. @@ -104,6 +103,8 @@ $FG,5$$TX+CX,"TODO: Too Hard, or Not Worth Doing."$$FG$ * Log-to-file is inefficient because we load and save whole file. +* $LK,"ICMov",A="MN:ICMov"$() $LK,"PUSH_CMP",A="FF:::/Compiler/BackLib.CPP,PUSH_CMP"$ and $LK,"MDf_STK",A="MN:MDf_STK"$? Perhaps, it's okay. + * Short FAT32 ~ names. * Compiler: Inline functions? @@ -368,7 +369,7 @@ and blotted at the end. * static var off of data heap. * could add "const" to not set CCF_NOT_CONST flag for trig, etc. -* could make glblvar imports use TY_RIP_DISP32. +* could make glblvar imports use MDF_RIP_DISP32. * PUSH_CMP allocs reg R9 or whatever * Might be problem with NOP in OPT pass1 for NO_PUSH in expressions besides assignments. Is ShiftNoPush fully implemented? @@ -387,14 +388,16 @@ Lord does not repeat $TX,"Job 33:14",HTML="http://www.biblegateway.com/verse/e Offer only in approved place $TX,"Deuteronomy 12:13-18",HTML="http://www.biblegateway.com/passage/?search=Deuteronomy%2012:13-18&version=NIV"$ Jesus' zeal for the Temple $TX,"John 2:14-19",HTML="http://www.biblegateway.com/passage/?search=John%202:14-19&version=NIV"$ Famine not for bread $TX,"Amos 8:11-12",HTML="http://www.biblegateway.com/passage/?search=Amos%208:11-12&version=NIV"$ +To the honest, you are honest $TX,"Psalm 18:26",HTML="http://www.biblegateway.com/verse/en/Psalm%2018:26"$ Meek and humble of heart $TX,"Matthew 11:29",HTML="http://www.biblegateway.com/verse/en/Matthew%2011:29"$ +MOses hgets Aaron $TX,"Exodus 4:10-16",HTML="http://www.biblegateway.com/passage/?search=Exodus%204:10-16&version=NIV"$ There is no council against the Lord $TX,"Proverbs 21:30",HTML="http://www.biblegateway.com/verse/en/Proverbs%2021:30"$ - +Human help is worthless $TX,"Psalm 108:12",HTML="http://www.biblegateway.com/verse/en/Psalm%20108:12"$ $FG,5$$TX+CX,"Misc Notes"$$FG$ Intel CEO's name: Brian Krzanich >$FG,2$lspci -v$FG$ -Size:$TX,"17364 KB",D="DD_TEMPLEOSCD_K_SIZE"$ +Size:$TX,"17362 KB",D="DD_TEMPLEOSCD_K_SIZE"$ $FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$ $TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$ @@ -407,6 +410,7 @@ Pew Pew Pew $HC,"
\"\"
"$ I made dis $HC,"
\"\"
"$ NIST Beacon $HC,"
\"\"
"$ +Purple Frog $HC,"
\"\"
"$ $TX,"SimStructure",HTML="http://www.templeos.org/files/SimStrSetUp.zip"$ $TX,"ASU_Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$ $TX,"ASU Course Catalog (See page 261)",HTML="https://catalog.asu.edu/files/shared/archives/1994-1996/general/UG1994-1996.pdf/1994-1996-UG-241-267.pdf"$ $TX,"Dr. David Pheanis",HTML="https://webapp4.asu.edu/directory/person/77201"$ $TX,"Dr. Konstantinos S. Tsakalis",HTML="http://ecee.engineering.asu.edu/directory/tenured-and-tenure-track-faculty/kostantinos-s-tsakalis"$ $TX,"Dr. Walter Higgins",HTML="https://webapp4.asu.edu/directory/directorysearch?cn=Walter+Higgins"$ @@ -430,6 +434,7 @@ $TX,"Higgs 5-Sigma Proof",HTML="http://understandinguncertainty.org/explaining-5 $TX,"Dwight: Nerd torture",HTML="http://www.noob.us/humor/the-office-dwight-faces-nerd-torture-of-the-highest-form"$ $TX,"TOSZ Compression",HTML="http://www.templeos.org/Wb/Linux/TOSZ.CPP"$ $TX,"ATA/ATAPI spec",HTML="http://www.t13.org/Documents/UploadedDocuments/docs2007/D1532v1r4b-AT_Attachment_with_Packet_Interface_-_7_Volume_1.pdf"$ +$TX,"Streaming Terry A. Davis",HTML="https://www.youtube.com/channel/UCdX4uJUwSFwiY3XBvu-F_-Q/live"$ $TX,"WWW.OSDEV.ORG",HTML="http://www.osdev.org"$ $TX,"NIST Beacon",HTML="http://www.nist.gov/itl/csd/ct/nist_beacon.cfm"$ diff --git a/Demo/AcctExample/Registry.CPP b/Demo/AcctExample/Registry.CPP index 1b49aa5..6872f27 100644 --- a/Demo/AcctExample/Registry.CPP +++ b/Demo/AcctExample/Registry.CPP @@ -2,7 +2,7 @@ $TR-UL,"Adam"$ $ID,2$$TR,"SysMsgFlags"$ $ID,2$sys_msg_flags[0]=0xFF; $ID,-2$$TR,"SysRegVer"$ -$ID,2$registry_version=4.040; +$ID,2$registry_version=4.050; $ID,-2$$ID,-2$$TR-UL,"TempleOS"$ $ID,2$$TR,"TOS"$ $ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46; @@ -26,8 +26,6 @@ $ID,-2$$TR,"FlapBat"$ $ID,2$F64 best_score=16.4090; $ID,-2$$TR,"TimeOut"$ $ID,2$I64 best_score=22202; -$ID,-2$$TR,"RawHide"$ -$ID,2$F64 best_score=96.1279; $ID,-2$$TR,"KeepAway"$ $ID,2$I64 best_score0=0,best_score1=9999; $ID,-2$$TR,"XCaliber"$ @@ -37,9 +35,11 @@ $ID,-2$$TR,"Wenceslas"$ $ID,2$F64 best_score=49.8074; $ID,-2$$TR,"BomberGolf"$ $ID,2$I64 best_score=175; +$ID,-2$$TR,"RawHide"$ +$ID,2$F64 best_score=96.1279; $ID,-2$$ID,-2$$TR,"DemoCompany"$ $ID,2$$TR,"Game1"$ -$ID,2$F64 best_score=1344.86889; +$ID,2$F64 best_score=481.84264; $TR,"SimpleVal"$ -$ID,2$1300; +$ID,2$1309; $ID,-2$$ID,-2$$ID,-2$ \ No newline at end of file diff --git a/Demo/AcctExample/TOSDistro.CPP b/Demo/AcctExample/TOSDistro.CPP index 6614e13..6265508 100644 --- a/Demo/AcctExample/TOSDistro.CPP +++ b/Demo/AcctExample/TOSDistro.CPP @@ -245,7 +245,7 @@ U0 MakeTOSDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSTS_SIZE", - "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.05",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -280,7 +280,7 @@ U0 MakeDbgDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSDBG_SIZE", - "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.05",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -328,7 +328,7 @@ U0 MakeLiteDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSLITE_SIZE", - "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.05",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -361,7 +361,7 @@ U0 MakeUltraDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSULTRA_SIZE", - "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.05",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -370,12 +370,12 @@ U0 UpdateISODocDefines() { try { DefinePrint("DD_TEMPLEOSCD_SIZE", - "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.05",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)", 0.1*(10*Size("D:/Wb/TempleOSCD.ISO","+s")/1024/1024)); DefinePrint("DD_TEMPLEOSCD_K_SIZE", "%d KB",Size("D:/Wb/TempleOSCD.ISO","+s")/1024); DefinePrint("DD_TEMPLEOSULTRA_SIZE", - "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.05",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)", 0.1*(10*Size("D:/Wb/TempleOSUltra.ISO","+s")/1024/1024)); DefinePrint("DD_TEMPLEOSULTRA_K_SIZE", "%d KB",Size("D:/Wb/TempleOSUltra.ISO","+s")/1024); diff --git a/Demo/AcctExample/TOSHolySpirit.CPP b/Demo/AcctExample/TOSHolySpirit.CPP index 5a74a69..8dd3fbc 100644 --- a/Demo/AcctExample/TOSHolySpirit.CPP +++ b/Demo/AcctExample/TOSHolySpirit.CPP @@ -132,7 +132,7 @@ class CMetallicaForm class CWebBookMarkForm { - U8 tag[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Tag Text:%s\"$$\n"; + U8 tag[STR_LEN] fmtstr "$$DA-P,A=\"Tag Text:%s\"$$\n"; U8 special[STR_LEN]; I64 timestamp; I64 cert; @@ -142,8 +142,8 @@ class CWebBookMarkForm class CWebBibleForm { - U8 tag[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Tag Text:%s\"$$\n"; - U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Bible Passage:%s\"$$\n"; + U8 tag[STR_LEN] fmtstr "$$DA-P,A=\"Tag Text:%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,A=\"Bible Passage:%s\"$$\n"; I64 timestamp; I64 cert; I64 min; @@ -152,7 +152,7 @@ class CWebBibleForm class CYouTubeForm { - U8 tag[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Title:%s\"$$\n"; + U8 tag[STR_LEN] fmtstr "$$DA-P,A=\"Title:%s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P-TRM,LEN=11,A=\"SerialNum:%11s\"$$\n"; I64 timestamp; I64 cert; @@ -163,7 +163,7 @@ class CYouTubeForm class CImgurForm { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"SerialNum:%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,A=\"SerialNum:%s\"$$\n"; I64 timestamp; I64 cert; I64 min fmtstr "$$DA,A=\"Width :%d\"$$\n"; @@ -172,8 +172,8 @@ class CImgurForm class CWikipediaForm { - U8 tag[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Tag Text:%s\"$$\n"; - U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Index :%s\"$$\n"; + U8 tag[STR_LEN] fmtstr "$$DA-P,A=\"Tag Text:%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,A=\"Index :%s\"$$\n"; I64 timestamp; I64 cert; I64 min; @@ -183,7 +183,7 @@ class CWikipediaForm class CRandDecForm { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Line (Dec):%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,A=\"Line (Dec):%s\"$$\n"; I64 timestamp; I64 cert; I64 min; @@ -193,7 +193,7 @@ class CRandDecForm class CRandHexForm { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Line (Hex):%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,A=\"Line (Hex):%s\"$$\n"; I64 timestamp; I64 cert; I64 min; @@ -203,7 +203,7 @@ class CRandHexForm class CRandCertForm { U8 tag[STR_LEN]; - U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Line (Dec) :%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,A=\"Line (Dec) :%s\"$$\n"; I64 timestamp; I64 cert fmtstr "$$DA,A=\"Certificate:%d\"$$\n"; I64 min; @@ -213,8 +213,7 @@ class CRandCertForm class CRandHexBeacon5Form { U8 tag[STR_LEN]; - U8 special[STR_LEN] - fmtstr "$$DA-P-TRM,LEN=5," + U8 special[STR_LEN] fmtstr "$$DA-P-TRM,LEN=5," "A=\"Line (5-Digit Hex):%5s\"$$\n"; I64 timestamp fmtstr "$$DA,A=\"TimeStamp :%d\"$$\n"; I64 cert; @@ -225,8 +224,7 @@ class CRandHexBeacon5Form class CRandHexBeacon8Form { U8 tag[STR_LEN]; - U8 special[STR_LEN] - fmtstr "$$DA-P-TRM,LEN=8," + U8 special[STR_LEN] fmtstr "$$DA-P-TRM,LEN=8," "A=\"Line (8-Digit Hex):%8s\"$$\n"; I64 timestamp fmtstr "$$DA,A=\"TimeStamp :%d\"$$\n"; I64 cert; @@ -427,7 +425,7 @@ public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512, DirTreeDel(tempde1); } -#define NIST_TIME_OFFSET (-7900-local_time_offset/CDATE_FREQ) +#define NIST_TIME_OFFSET (-7916-local_time_offset/CDATE_FREQ) #define NIST_TIME_TO_SWITCH 3 public U0 NISTSync() diff --git a/Demo/AcctExample/TOSMisc.CPP b/Demo/AcctExample/TOSMisc.CPP index 143467b..b169227 100644 --- a/Demo/AcctExample/TOSMisc.CPP +++ b/Demo/AcctExample/TOSMisc.CPP @@ -241,7 +241,7 @@ U0 TOSRegWrite() class CYouTubeForm2 { - U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"SerialNum:%s\"$$\n"; + U8 special[STR_LEN] fmtstr "$$DA-P,A=\"SerialNum:%s\"$$\n"; }; U8 *TOSYouTube() diff --git a/Demo/AcctExample/TOSToHtml.CPP b/Demo/AcctExample/TOSToHtml.CPP index e1be5ae..d292973 100644 --- a/Demo/AcctExample/TOSToHtml.CPP +++ b/Demo/AcctExample/TOSToHtml.CPP @@ -150,7 +150,7 @@ public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL, "\n" "\n" - "\n"; + "\n"; if (!body_header) body_header= "\n" "
\n";
@@ -372,7 +372,7 @@ U0 TOSWebFile(U8 *name)
 	  "\n"
-	  "\n",
+	  "\n",
 
 	  " and back.)\n\n";
+  "(Not preserved if you press .)\n\n";
   doc_e->left_cb=&MyLeftCB1;
   DocUnlock(DocPut);
 }
@@ -32,15 +32,16 @@ I64 MyLeftCB2(CDoc *,CDocEntry *)
   return cnts.jiffies;
 }
 
-U0 PopUpJiffiesCallBack()
+U0 PopUpJiffiesCallBack(I64 i)
 {
   CDoc *doc=DocNew;
-  CDocEntry *doc_e=DocPrint(doc,"\n\n\n$$BT+LC,\"Jiffies\"$$\n\n\n");
+  CDocEntry *doc_e=DocPrint(doc,
+	"Click %d more times\n\n\n$$BT+LC,\"Jiffies\"$$\n\n\n",i);
   doc_e->left_cb=&MyLeftCB2;
   "Current Jiffies:%d\n",PopUpMenu(doc);
   DocDel(doc);
 }
 
-PopUpJiffiesCallBack;
-PopUpJiffiesCallBack;
-PopUpJiffiesCallBack;
+PopUpJiffiesCallBack(3);
+PopUpJiffiesCallBack(2);
+PopUpJiffiesCallBack(1);
diff --git a/Demo/DolDoc/Form.CPP b/Demo/DolDoc/Form.CPP
index 0698295..96c0510 100644
--- a/Demo/DolDoc/Form.CPP
+++ b/Demo/DolDoc/Form.CPP
@@ -1,15 +1,12 @@
 class FDStruct
-{//Use  and select "Data" to generate the fmtstrs
-
-  //The number is the field from after the ':' to the end.
-  //See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$.
-
-  F64 num1	fmtstr "$$DA-TRM,RT=F64,A=\"F64   1:%12.8f\"$$\n";
-  F64 num2	fmtstr "$$DA-TRM,RT=F64,A=\"F64   2:%12e\"$$\n";
-  I64 num3	fmtstr "$$DA-TRM,A=\"I64   1:0x%016X\"$$\n";
-  I64 num4	fmtstr "$$DA-TRM,A=\"I64   2:%12d\"$$\n";
+{//Use  and select "Data", "List" or "Check Box"
+//to generate the fmtstrs.
+  F64 num1	fmtstr "$$DA-TRM,A=\"Float 1:%12.8f\"$$\n";
+  F64 num2	fmtstr "$$DA-TRM,A=\"Float 2:%12e\"$$\n";
+  I64 num3	fmtstr "$$DA-TRM,A=\"Int   1:0x%016X\"$$\n";
+  I64 num4	fmtstr "$$DA-TRM,A=\"Int   2:%12d\"$$\n";
   I64 type	fmtstr "$$LS,D=\"ST_PERSON_TYPE\"$$\n";
-  U8  name[32]	fmtstr "$$DA-P,LEN=31,A=\"Name   :%s\"$$\n";
+  U8  name[32]	fmtstr "$$DA-P,A=\"Name   :%s\"$$\n";
   U8  *address1	fmtstr "$$DA+M,A=\"Address:%s\"$$\n"; //+M is unlimited len U8 *.
   U8  *address2	fmtstr "$$DA+M,A=\"Address:%s\"$$\n"; //+M is unlimited len U8 *.
   CDate datetime fmtstr "$$DA-TRM,A=\"Date   :%8D\"$$\n";
diff --git a/Demo/ExtendedChars.CPP b/Demo/ExtendedChars.CPP
index bb4021c..3e1df6f 100644
--- a/Demo/ExtendedChars.CPP
+++ b/Demo/ExtendedChars.CPP
@@ -30,7 +30,7 @@ U0 SrcExample()
 }
 
 SrcExample;
-//See $LK,"::/Demo/ScreenCodes.CPP"$, $LK,"::/Demo/Graphics/CharGraphics.CPP"$,
-//and $LK,"::/Demo/Graphics/FontEd.CPP"$.
+//See $LK,"::/Demo/ScreenCodes.CPP"$, $LK,"::/Demo/Graphics/CharAnimation.CPP"$,
+//$LK,"::/Demo/Games/CharDemo.CPP"$ and $LK,"::/Demo/Graphics/FontEd.CPP"$.
 
 //See $LK,"chars_bmp_alpha",A="MN:chars_bmp_alpha"$ and $LK,"chars_bmp_alpha_numeric",A="MN:chars_bmp_alpha_numeric"$.
diff --git a/Demo/Games/BomberGolf.CPP b/Demo/Games/BomberGolf.CPP
index 19e3ca59cf73e264c005df27c1a5d6ab3a4684d5..3cd7dd1c8c49a0f64997e4d928f8dad040fe098b 100644
GIT binary patch
delta 63
zcmeC3#5idZ>3;
+  gr.hide_col=gr.hide_row=TRUE;
+  gr.pan_text_x=7-screen_pix_x&7;
+  gr.pan_text_y=7-screen_pix_y&7;
+  for (i=0;iwin_height;i++) {
+    ptr=&map[y++][screen_pix_x>>3];
+    for (j=0;jwin_width;j++)
+	//By the time you clip to window and handle Fs->scroll_x,Fs->scroll_y,
+	//it is too much trouble to do raw access to gr.text_base like we do
+	//in $LK,"::/Demo/Games/Maze.CPP"$.
+      TextChar(task,FALSE,j,i,*ptr++);
+  }
+}
+
+U8 *old_font=text.font;
+U64 waves[4]={
+0x0011AA440011AA44,0x0022558800225588,
+0x0044AA110044AA11,0x0088552200885522};
+
+U0 AnimateEndCB()
+{
+  text.font=old_font;
+  Exit;
+}
+
+U0 AnimateTask(I64)
+{
+  I64 i;
+  U64 *font=MAlloc(256*8);
+  Fs->task_end_cb=&AnimateEndCB;
+  MemCpy(font,text.font,256*8);
+  text.font=font;
+  font[CH_TREE]=0x18187E7E3C3C18;
+  while (TRUE) {
+    font[CH_WATER]=waves[i++&0x3];
+    Sleep(200);
+    WinMgrSync;
+  }
+}
+
+U0 ScrollTaskX(I64 sign)
+{
+  I64 i;
+  for (i=0;i<32;i++) {
+    screen_pix_x=ClampI64(screen_pix_x+sign,0,
+	  (MAP_WIDTH-TEXT_COLS+1)*FONT_WIDTH);
+    WinMgrSync;
+  }
+}
+
+U0 ScrollTaskY(I64 sign)
+{
+  I64 i;
+  for (i=0;i<32;i++) {
+    screen_pix_y=ClampI64(screen_pix_y+sign,0,
+	  (MAP_HEIGHT-TEXT_ROWS+2)*FONT_HEIGHT);
+    WinMgrSync;
+  }
+}
+
+U0 Init()
+{
+  I64 i,j,x,y;
+  screen_pix_x=(MAP_WIDTH-TEXT_COLS)>>1*FONT_WIDTH;
+  screen_pix_y=(MAP_HEIGHT-TEXT_ROWS)>>1*FONT_HEIGHT;
+
+  MemSetU16(map,CH_WATER+(BLUE<<4+LTBLUE)<<8,MAP_WIDTH*MAP_HEIGHT);
+  for (i=1;itext_attr=YELLOW<<4+BLUE;
+  AutoComplete;
+  WinBorder;
+  WinMax;
+  DocCursor;
+
+  MenuPush(
+	"File {"
+	"  Abort(,CH_SHIFT_ESC);"
+	"  Exit(,CH_ESC);"
+	"}"
+	"Play {"
+	"  Restart(,'\n');"
+	"  Left(,,SC_CURSOR_LEFT);"
+	"  Right(,,SC_CURSOR_RIGHT);"
+	"  Up(,,SC_CURSOR_UP);"
+	"  Down(,,SC_CURSOR_DOWN);"
+	"}"
+	);
+  Init;
+  Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs);
+  Fs->draw_it=&DrawIt;
+  try {
+    while (TRUE) {
+      switch (GetKey(&sc)) {
+	case 0:
+	  switch (sc.u8[0]) {
+	    case SC_CURSOR_LEFT:
+	      Spawn(&ScrollTaskX,-1,"Scroll",,Fs);
+	      break;
+	    case SC_CURSOR_RIGHT:
+	      Spawn(&ScrollTaskX,1,"Scroll",,Fs);
+	      break;
+	    case SC_CURSOR_UP:
+	      Spawn(&ScrollTaskY,-1,"Scroll",,Fs);
+	      break;
+	    case SC_CURSOR_DOWN:
+	      Spawn(&ScrollTaskY,1,"Scroll",,Fs);
+	      break;
+	  }
+	  break;
+	case '\n':
+	  CleanUp;
+	  Init;
+	  break;
+	case CH_SHIFT_ESC:
+	case CH_ESC:
+	  goto sq_done;
+      }
+    }
+sq_done: //Don't goto out of try
+  } catch
+    PutExcept;
+  SettingsPop;
+  CleanUp;
+  MenuPop;
+}
+
+CharDemo;
diff --git a/Demo/Games/EagleDive.CPP b/Demo/Games/EagleDive.CPP
index b8da257..8d37366 100644
--- a/Demo/Games/EagleDive.CPP
+++ b/Demo/Games/EagleDive.CPP
@@ -27,7 +27,7 @@ RegExeBranch("TempleOS/EagleDive");
 class Panel
 {
   Panel *next;
-  I32 n,   //num polygon sides
+  I32	n,   //num polygon sides
 	num; //panel number
   CD3I32 *pts;
   I64 color,cnt;
@@ -49,15 +49,6 @@ $SP,"<1>",BI=1$
 
 
 I64 critical_section_flag;
-U0 CriticalSectionStart()
-{
-  while (LBts(&critical_section_flag,0))
-    Yield;
-}
-U0 CriticalSectionEnd()
-{
-  LBtr(&critical_section_flag,0);
-}
 
 /*These are $BK,1$NOT$BK,0$ dealloced after the program ends,
 but I did them this way for your benefit
@@ -181,9 +172,10 @@ U0 MPDoPanels(CTask *task)
 		tempf->p.x=(i+w/2)*MAP_SCALE;
 		tempf->p.y=(j+h/2)*MAP_SCALE;
 		tempf->p.z=l;
-		CriticalSectionStart;
+		while (LBts(&critical_section_flag,0))
+		  Yield;
 		QueIns(tempf,fish_root.last);
-		CriticalSectionEnd;
+		LBtr(&critical_section_flag,0);
 	      }
 	    } else {
 	      if (RandI16&1) {
@@ -242,11 +234,12 @@ U0 MPDoPanels(CTask *task)
       }
     }
   if (end_ptr) {
-    CriticalSectionStart;
+    while (LBts(&critical_section_flag,0))
+      Yield;
     if (end_ptr)
       end_ptr->next=panel_root;
     panel_root=start_ptr;
-    CriticalSectionEnd;
+    LBtr(&critical_section_flag,0);
   }
   LBtr(&mp.init_not_done_flags,Gs->num);
 }
@@ -443,7 +436,7 @@ U0 MPDrawIt(CTask *task,CDC *dc)
     yy+=y3;
   }
 
-  if (Gs->num&1) {//alternate left-right,right-left
+  if (Gs->num&1) {//alt left-right,right-left
     yh2=-yh;
     xh2=-xh;
   } else {
diff --git a/Demo/Graphics/CharGraphics.CPP b/Demo/Graphics/CharAnimation.CPP
similarity index 61%
rename from Demo/Graphics/CharGraphics.CPP
rename to Demo/Graphics/CharAnimation.CPP
index 2060497..02357b6 100644
--- a/Demo/Graphics/CharGraphics.CPP
+++ b/Demo/Graphics/CharAnimation.CPP
@@ -3,11 +3,9 @@ U8 *old_font=text.font;
 // See $LK,"::/Kernel/Font8x8.CPP"$, $LK,"::/Demo/ScreenCodes.CPP"$,
 //$LK,"::/Demo/ExtendedChars.CPP"$, and $LK,"::/Demo/Graphics/FontEd.CPP"$.
 
-U8 waves[8*4]={
-0x00,0x11,0xAA,0x44,0x00,0x11,0xAA,0x44,
-0x00,0x22,0x55,0x88,0x00,0x22,0x55,0x88,
-0x00,0x44,0xAA,0x11,0x00,0x44,0xAA,0x11,
-0x00,0x88,0x55,0x22,0x00,0x88,0x55,0x22};
+U64 waves[4]={
+0x0011AA440011AA44,0x0022558800225588,
+0x0044AA110044AA11,0x0088552200885522};
 
 U0 AnimateEndCB()
 {
@@ -18,12 +16,12 @@ U0 AnimateEndCB()
 U0 AnimateTask(I64)
 {
   I64 i;
-  U8 *font=MAlloc(256*8);
+  U64 *font=MAlloc(256*8);
   Fs->task_end_cb=&AnimateEndCB;
   MemCpy(font,text.font,256*8);
   text.font=font;
   while (TRUE) {
-    MemCpy(font+CH_SPACE*FONT_HEIGHT,waves+8*(i++&0x3),8);
+    font[CH_SPACE]=waves[i++&0x3];
     Sleep(100);
   }
 }
diff --git a/Demo/Graphics/FontEd.CPP b/Demo/Graphics/FontEd.CPP
index 5ef9bb2..70cd947 100644
--- a/Demo/Graphics/FontEd.CPP
+++ b/Demo/Graphics/FontEd.CPP
@@ -14,7 +14,8 @@ save to a file with this font editor program
 and cut and paste the code into $LK,"::/Kernel/Font8x8.CPP"$.
 You will need to recompile Kernel by calling $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
 
-See $LK,"::/Demo/ExtendedChars.CPP"$ and $LK,"::/Demo/ScreenCodes.CPP"$.
+See $LK,"::/Demo/ExtendedChars.CPP"$, $LK,"::/Demo/Games/CharDemo.CPP"$,
+$LK,"::/Demo/Graphics/CharAnimation.CPP"$ and $LK,"::/Demo/ScreenCodes.CPP"$.
 */
 
 #define BLOW_UP_CHAR_X	(18*FONT_WIDTH)
diff --git a/Demo/Graphics/SunMoon.CPP b/Demo/Graphics/SunMoon.CPP
index dd57712..ac5fb9c 100644
--- a/Demo/Graphics/SunMoon.CPP
+++ b/Demo/Graphics/SunMoon.CPP
@@ -33,7 +33,7 @@ U0 SunMoon()
     gr.dc->dither_probability_u16=2*i;	//U16 can be [0,65535]
     GrFloodFill(gr.dc,x-0.75*radius,y);
 
-    WinMgrSync; //Typically 30 fps or 33S
+    WinMgrSync; //Typically 30 fps
     DCFill;
   }
 
diff --git a/Demo/Lectures/FixedPoint.CPP b/Demo/Lectures/FixedPoint.CPP
index 7e64087..cd6d6e7 100644
--- a/Demo/Lectures/FixedPoint.CPP
+++ b/Demo/Lectures/FixedPoint.CPP
@@ -1,4 +1,4 @@
-/*"Fixed point" means you use integers
+/*"Fixed point" means you use ints
 that are scaled by a value.  A common
 example would be using number of pennies
 instead of dollars with a float.
@@ -10,7 +10,7 @@ and my compiler used to do floats poorly.
 It's a little better.
 
 I often use 64-bit ints with upper 32-bits
-as integer and lower 32-bits as fraction.
+as int and lower 32-bits as fraction.
 
 See $LK,"::/Demo/SubIntAccess.CPP"$ for how
 to access upper or lower 32-bits.
@@ -29,7 +29,7 @@ U0 Main()
   t0=tS;
   for (i=1000000000;i;i--)
     i_sum+=i_val;
-  "Integer Sum:%.9f Time:%7.3fs\n",i_sum/ToF64(0x100000000),tS-t0;
+  "Int Sum:%.9f Time:%7.3fs\n",i_sum/ToF64(0x100000000),tS-t0;
 
   f_val= 2.0000002;
   t0=tS;
@@ -47,7 +47,7 @@ U0 DoIt2()
   "i&0xFFFFFFFF=%X\n",i&0xFFFFFFFF;
   "i>>32       =%X\n",i>>32;
 
-  /*  Standard integer types are declared
+  /*  Standard int types are declared
 with a special compiler feature which
 allows a structure to be accessed as a
 whole.  That's why the i variable can
@@ -87,7 +87,7 @@ DoIt2;
 /*Program Output$HL,0$$WW+H,1$$FD,1$
 
 8 Cores 2.660GHz
-Integer Sum:2000000199.768689408 Time:	0.787s
+Int Sum:2000000199.768689408 Time:	0.787s
 Float	Sum:2000000225.656126208 Time:	3.918s
 
 i	    =123456789ABCDEF0
diff --git a/Demo/Lectures/FixedPointAdvanced.CPP b/Demo/Lectures/FixedPointAdvanced.CPP
index 5299a9a..96ce13d 100644
--- a/Demo/Lectures/FixedPointAdvanced.CPP
+++ b/Demo/Lectures/FixedPointAdvanced.CPP
@@ -1,4 +1,4 @@
-/*"Fixed point" means you use integers
+/*"Fixed point" means you use ints
 that are scaled by a value.  A common
 example would be using number of pennies
 instead of dollars with a float.
@@ -9,7 +9,7 @@ floats.  It also depends on the compiler
 and my compiler used to do floats poorly.
 
 I often use 64-bit ints with upper 32-bits
-as integer and lower 32-bits as fraction.
+as int and lower 32-bits as fraction.
 
 See $LK,"::/Demo/SubIntAccess.CPP"$ for how
 to access upper or lower 32-bits.
diff --git a/Demo/Lectures/MiniCompiler.CPP b/Demo/Lectures/MiniCompiler.CPP
index 902759a..f048ea7 100644
--- a/Demo/Lectures/MiniCompiler.CPP
+++ b/Demo/Lectures/MiniCompiler.CPP
@@ -11,7 +11,7 @@ $ID,-2$
 $TR,"Mini Compiler"$
 $ID,2$For this mini compiler, some things you should know about 64-bit asm:
 
-* Putting a 0x48, known as the REX byte, in front of an instruction makes it 64-bit size.
+* Putting a 0x48, known as the REX byte, in front of an inst makes it 64-bit size.
 
 * "PUSH EAX", "POP EAX" and "XOR EAX,EAX" will behave as 64-bit even without REX because the stk is always 64 bit and because the XOR clears the upper 32-bits.
 
@@ -112,7 +112,7 @@ U0 PrsTerm(U8 **_src,U8 **_dst,I64 prec)
 
 I64 Parse(U8 **_src,U8 **_dst)
 {//See $LK,"PrsExpression",A="MN:PrsExpression"$().
-//See $LK,"Opcode Fmts",A="FF:::/Compiler/OpCodes.TXT,IDIV"$ for details on asm instructions.
+//See $LK,"Opcode Fmts",A="FF:::/Compiler/OpCodes.TXT,IDIV"$ for details on asm insts.
   I64 i;
   U8 *dst=*_dst;
   switch (Lex(_src,&i)) {
@@ -204,7 +204,7 @@ U0 Main()
 
   while (TRUE) {
     "This will compile an expression\n"
-	  "consisting of integers, parentheses\n"
+	  "consisting of ints, parentheses\n"
 	  "and the operators +,-,* and /.\n";
     src=GetStr;
     if (*src) {
diff --git a/Demo/Lectures/Optimization.CPP b/Demo/Lectures/Optimization.CPP
index d49ae03..44b8944 100644
--- a/Demo/Lectures/Optimization.CPP
+++ b/Demo/Lectures/Optimization.CPP
@@ -1,8 +1,8 @@
 /*The moral of this story is simple
-instruction level optimizations
+inst level optimizations
 don't matter much on a modern Intel CPU
-because they convert complex instructions
-to a stream of RISC instructions.
+because they convert complex insts
+to a stream of RISC insts.
 
 I learned this the hard way when I thought
 I was greatly improving my compiler by
@@ -61,7 +61,7 @@ _WELL_OPTIMIZED3::
 	XOR	RAX,RAX
 	MOV	RCX,SAMPLES-1
 @@05:	ADD	RAX,RCX
-	LOOP	@@05	//Instruction sucks in speed, but saves code size.
+	LOOP	@@05	//Inst sucks in speed, but saves code size.
 	RET
 }
 
diff --git a/Demo/MultiCore/Lock.CPP b/Demo/MultiCore/Lock.CPP
index 4b10937..2ccfa5c 100644
--- a/Demo/MultiCore/Lock.CPP
+++ b/Demo/MultiCore/Lock.CPP
@@ -1,8 +1,8 @@
 /*lock{} is a compiler stmt
-which places asm LOCK instruction
+which places asm LOCK inst
 prefixes on code.  Only use it on
 read-modify-write stmts.
-It will generate invalid instructions
+It will generate invalid insts
 if you misuse it and it will crash.
 $LK,"U",A="MN:U"$() to see what code was generated.
 */
diff --git a/Demo/SortFileExample/SortedF64.DAT b/Demo/SortFileExample/SortedF64.DAT
index 3900869..36d72bc 100644
--- a/Demo/SortFileExample/SortedF64.DAT
+++ b/Demo/SortFileExample/SortedF64.DAT
@@ -1 +1 @@
-8ý!/Û
˜?"v¬ùâ°»?äÌq¡À?jAÊ?õŸƒ¶3Í?¬ax“Ø?]¦"Þ?L–o`öÞ?ŠìÁxÅß? Ñ”ìžë?
\ No newline at end of file
+ëØ'^»™?ÿS”aÔÄ?‡u•Ëj^Ï?*ð¨¥y§Ò?ðe¢ý£‰Ú?ÁhY÷×ß?mëc|˜ä?‰-ÅiU°å?×�vŸWÂè?Þ/PÄAë?
\ No newline at end of file
diff --git a/Demo/SortFileExample/SortedF64.TXT b/Demo/SortFileExample/SortedF64.TXT
index 4a70acc..233bbb9 100644
--- a/Demo/SortFileExample/SortedF64.TXT
+++ b/Demo/SortFileExample/SortedF64.TXT
@@ -1,11 +1,11 @@
 //This is sorted.
-    0.256505
-    0.347373
-    0.349509
-    0.367545
-    0.563530
-    0.626343
-    0.703852
-    0.753115
-    0.897487
-    0.941150
+    0.014631
+    0.073055
+    0.074138
+    0.078977
+    0.245686
+    0.393559
+    0.554134
+    0.570852
+    0.856893
+    0.981828
diff --git a/Demo/SortFileExample/UnsortedF64.DAT b/Demo/SortFileExample/UnsortedF64.DAT
index dcae6de..79bf2ca 100644
--- a/Demo/SortFileExample/UnsortedF64.DAT
+++ b/Demo/SortFileExample/UnsortedF64.DAT
@@ -1 +1 @@
-jAÊ?¬ax“Ø?]¦"Þ?"v¬ùâ°»?äÌq¡À?ŠìÁxÅß?õŸƒ¶3Í?8ý!/Û
˜?L–o`öÞ? Ñ”ìžë?
\ No newline at end of file
+Þ/PÄAë?‰-ÅiU°å?ðe¢ý£‰Ú?ÁhY÷×ß?×�vŸWÂè?mëc|˜ä?‡u•Ëj^Ï?ëØ'^»™?ÿS”aÔÄ?*ð¨¥y§Ò?
\ No newline at end of file
diff --git a/Demo/SortFileExample/UnsortedF64.TXT b/Demo/SortFileExample/UnsortedF64.TXT
index 5ead3f9..cbefcc4 100644
--- a/Demo/SortFileExample/UnsortedF64.TXT
+++ b/Demo/SortFileExample/UnsortedF64.TXT
@@ -1,11 +1,11 @@
 //This is unsorted.
-    0.941150
-    0.347373
-    0.626343
-    0.256505
-    0.753115
-    0.367545
-    0.897487
-    0.563530
-    0.703852
-    0.349509
+    0.981828
+    0.554134
+    0.570852
+    0.393559
+    0.014631
+    0.856893
+    0.245686
+    0.074138
+    0.073055
+    0.078977
diff --git a/Demo/SubIntAccess.CPP b/Demo/SubIntAccess.CPP
index 66aaa59..2a655f4 100644
--- a/Demo/SubIntAccess.CPP
+++ b/Demo/SubIntAccess.CPP
@@ -1,6 +1,6 @@
 /*TempleOS has a feature that allows
 access to bytes and words of larger
-integers.
+ints.
 
 See $LK,"U64i union",A="FF:::/Kernel/KernelA.HPP,U64i union"$.
  
diff --git a/Demo/TimeIns.CPP b/Demo/TimeIns.CPP
index 2afe87b..9c04826 100644
--- a/Demo/TimeIns.CPP
+++ b/Demo/TimeIns.CPP
@@ -1,4 +1,4 @@
-/*Allows you to time instructions.
+/*Allows you to time insts.
 Results vary because the CPU does
 parallel and out-of-order execution.
 */
@@ -20,7 +20,7 @@ U0 TimeIns()
   start=GetTSC;
   for (i=0;i\n"
 	  "\n"
-	  "\n";
+	  "\n";
   if (!body_header) body_header=
 	  "\n"
 	  "
\n";
diff --git a/Demo/WebLogExample/WebLogRep.CPP b/Demo/WebLogExample/WebLogRep.CPP
index 9a91653..dc4edff 100644
--- a/Demo/WebLogExample/WebLogRep.CPP
+++ b/Demo/WebLogExample/WebLogRep.CPP
@@ -182,6 +182,7 @@ U0 BlockIPNums(LogStruct *root)
   BlockedStructAdd(&blocked_root,68<<24+96<<16+100<<8+126);
   BlockedStructAdd(&blocked_root,68<<24+96<<16+110<<8+213);
   BlockedStructAdd(&blocked_root,68<<24+96<<16+242<<8+108);
+  BlockedStructAdd(&blocked_root,68<<24+227<<16+61<<8+11);
 
   //pass 1: collect robot lst
   while (templg!=root) {
diff --git a/Demo/WebLogExample/access_150211.LOG b/Demo/WebLogExample/access_150211.LOG
index 16be578..d001e9b 100644
--- a/Demo/WebLogExample/access_150211.LOG
+++ b/Demo/WebLogExample/access_150211.LOG
@@ -584,7 +584,7 @@
 52.53.176.137 - - [10/Feb/2015:13:44:27 -0800] "GET /files/?D=A HTTP/1.1" 200 1522 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "www.templeos.org"
 52.81.208.207 - - [10/Feb/2015:13:45:31 -0800] "GET /Wb/Adam/Gr/GrPrimatives.html HTTP/1.1" 200 743387 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0" "www.templeos.org"
 130.158.66.124 - - [10/Feb/2015:13:47:09 -0800] "GET /files/BIBLE.TXT HTTP/1.1" 200 4345143 "http://www.templeos.org/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Safari/537.36" "www.templeos.org"
-150.176.164.55 - - [10/Feb/2015:13:47:55 -0800] "GET /Wb/Demo/Graphics/CharGraphics.html HTTP/1.1" 200 15754 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
+150.176.164.55 - - [10/Feb/2015:13:47:55 -0800] "GET /Wb/Demo/Graphics/CharAnimation.html HTTP/1.1" 200 15754 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
 150.176.164.55 - - [10/Feb/2015:13:51:30 -0800] "GET / HTTP/1.1" 200 6329 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
 150.176.164.55 - - [10/Feb/2015:13:51:58 -0800] "GET /Wb/Home/Web/History.html HTTP/1.1" 200 7745 "http://www.templeos.org/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0" "www.templeos.org"
 210.63.49.147 - - [10/Feb/2015:13:53:23 -0800] "GET /test/wp-admin/ HTTP/1.1" 404 89 "-" "-" "templeos.org"
diff --git a/Doc/Asm.TXT b/Doc/Asm.TXT
index 807567d..e480f5c 100644
--- a/Doc/Asm.TXT
+++ b/Doc/Asm.TXT
@@ -1,12 +1,12 @@
 $WW,1$$FG,5$$TX+CX,"Assembler"$$FG$
 
-See $LK,"::/Compiler/OpCodes.TXT"$ for opcodes.  They're not standard.  Some invalid instructions are not flagged and some valid instructions are not implemented. 16-bit asm support is limited.
+See $LK,"::/Compiler/OpCodes.TXT"$ for opcodes.  They're not standard.  Some invalid insts are not flagged and some valid insts are not implemented. 16-bit asm support is limited.
 
-Here are example instruction formats:
+Here are example inst formats:
 $HL,1$	ADD	RAX,I64 FS:DISP[RSI+RDI*8]
 $HL,0$$HL,1$	ADD	RAX,I64 [DISP]
 $HL,0$
-$FG,2$$$$FG$ Current compiler output pos (instruction ptr).  Even works in HolyC expressions.
+$FG,2$$$$FG$ Current compiler output pos (inst ptr).  Even works in HolyC expressions.
 
 $FG,2$$$$FG$ works in $FG,2$class$FG$es.
   $FG,2$class MyFun
diff --git a/Doc/ChangeLog.TXT b/Doc/ChangeLog.TXT
index 5f7d8af..9062022 100644
--- a/Doc/ChangeLog.TXT
+++ b/Doc/ChangeLog.TXT
@@ -2,6 +2,39 @@ $WW,1$$FG,5$$TX+CX,"Change Log"$$FG$
 
 Use $LK,"R",A="MN:R"$() to rename if I change a label.
 
+$IV,1$----03/29/16 17:59:14----$IV,0$
+
+$IV,1$----03/29/16 05:53:45----$IV,0$
+* $BK,1$TempleOS version 4.05 Released$BK,0$
+
+$IV,1$----03/24/16 16:26:50----$IV,0$
+* Added $LK,"::/Demo/Games/CharDemo.CPP"$.
+
+$IV,1$----03/22/16 16:58:25----$IV,0$
+* Added $LK,"DOCEF_DFT_RAW_TYPE",A="MN:DOCEF_DFT_RAW_TYPE"$.  Modified $LK,"DocForm",A="MN:DocForm"$() to look-up raw type automatically from the compiler's class information.
+* Added $LK,"DOCEF_DFT_LEN",A="MN:DOCEF_DFT_LEN"$.  Modified $LK,"DocForm",A="MN:DocForm"$() to look-up string length automatically from the compiler's class information.
+
+$IV,1$----03/21/16 07:28:35----$IV,0$
+* Added $LK,"OCF_ALIAS",A="MN:OCF_ALIAS"$.
+* $LK,"R",A="MN:R"$("Integer","Int");
+* Added aliases to $LK,"::/Compiler/OpCodes.TXT"$.
+
+$IV,1$----03/21/16 02:12:08----$IV,0$
+* Added $LK,"DOCT_MARKER",A="MN:DOCT_MARKER"$.
+* Added $LK,"CICType",A="MN:CICType"$.
+* Optimized $LK,"MDG_MASK",A="MN:MDG_MASK"$ and $LK,"RTG_MASK",A="MN:RTG_MASK"$ values.
+
+$IV,1$----03/19/16 09:15:11----$IV,0$
+* Fixed bug in $LK,"EdFindReplace",A="MN:EdFindReplace"$().
+
+$IV,1$----03/19/16 06:22:36----$IV,0$
+* Fixed $LK,"UAsm",A="MN:Ui"$() bug.
+* Got rids of $FG,4$ICF_A1_FIRST$FG$.
+* Cleaned-up compiler $LK,"REGG_CLOBBERED",A="MN:REGG_CLOBBERED"$ and $LK,"REGG_STK_TEMP",A="MN:REGG_STK_TEMP"$.
+
+$IV,1$----03/18/16 09:53:33----$IV,0$
+* Made $LK,"SpriteEd",A="MN:SpriteEd"$() select foreground elem.
+
 $IV,1$----03/14/16 05:57:27----$IV,0$
 * $BK,1$TempleOS version 4.04 Released$BK,0$
 * Changed $FG,2$nobound_switch$FG$ so it uses [].
@@ -123,7 +156,7 @@ $IV,1$----01/06/16 11:01:57----$IV,0$
 
 $IV,1$----01/03/16 17:15:41----$IV,0$
 * Updated $LK,"::/Misc/PCIDevices.TXT"$.
-* Added null case option.  Next higher integer with "$FG,2$case:$FG$" in $FG,2$switch$FG$ stmts.  See  $LK,"::/Demo/NullCase.CPP"$.
+* Added null case option.  Next higher int with "$FG,2$case:$FG$" in $FG,2$switch$FG$ stmts.  See  $LK,"::/Demo/NullCase.CPP"$.
 
 $IV,1$----12/31/15 00:44:44----$IV,0$
 * Made $LK,"ASM_KEYWORD",A="FF:::/Compiler/OpCodes.TXT,ASM_KEYWORD"$s usable in HolyC outside asm{} blocks.
diff --git a/Doc/CutCorners.TXT b/Doc/CutCorners.TXT
index 23eba99..82a3a2f 100644
--- a/Doc/CutCorners.TXT
+++ b/Doc/CutCorners.TXT
@@ -6,7 +6,7 @@ There are a few places where I cut corners in the interest of not junking-up cod
 
 * TempleOS does not figure-out $FG,2$FAT32$FG$ short name alias numbers.  $LK,"FAT32DirNew",A="MN:FAT32DirNew"$().  It can cause hard drive corruption, so I might have to do it.  It would really take a lot of junky code for this hatefully, detestable, legacy issue.  "Please don't make me ruin my beautiful shiny-new TempleOS with that!"  I am also not enthused about $FG,2$FAT32$FG$ because it is in patent limbo.  $FG,2$FAT32$FG$ might get removed from TempleOS.  There is the $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$  64-bit file system that works perfectly well.  $FG,2$FAT32$FG$ is useful, however, because it assists in transferring between dual booted operating systems.
 
-* I changed the $LK,"asm opcodes",A="FI:::/Compiler/OpCodes.TXT"$ names to remove the ambiguity between instructions with different numbers of arguments, making my $LK,"assembler",A="FI:::/Compiler/Asm.CPP"$ simpler and I did minimal 16-bit asm support, since 64-bit is what you should be using, unless you're doing a $LK,"boot loader",A="FI:::/Adam/Opt/Boot/BootDVD.CPP"$.
+* I changed the $LK,"asm opcodes",A="FI:::/Compiler/OpCodes.TXT"$ names to remove the ambiguity between insts with different numbers of arguments, making my $LK,"assembler",A="FI:::/Compiler/Asm.CPP"$ simpler and I did minimal 16-bit asm support, since 64-bit is what you should be using, unless you're doing a $LK,"boot loader",A="FI:::/Adam/Opt/Boot/BootDVD.CPP"$.
 
 * There are no user-controlled file-sharing locks.  However, the drive and file system have locks and concurrent operations should be fine. 
 
diff --git a/Doc/Date.TXT b/Doc/Date.TXT
index 6350715..c8bd58a 100644
--- a/Doc/Date.TXT
+++ b/Doc/Date.TXT
@@ -1 +1 @@
-$WW,1$Dates are 32-bit signed integers representing the number of days since the birth of Christ.  Negative values represent B.C.E. dates.
+$WW,1$Dates are 32-bit signed ints representing the number of days since the birth of Christ.  Negative values represent B.C.E. dates.
diff --git a/Doc/DbgOverview.TXT b/Doc/DbgOverview.TXT
index 945e51c..be53a32 100644
--- a/Doc/DbgOverview.TXT
+++ b/Doc/DbgOverview.TXT
@@ -6,7 +6,7 @@ $WW,1$$FG,5$$TX+CX,"Debugging Overview"$$FG$
 
 * While debugging, you specify addresses of assembly routines with just the label, as in $FG,2$_MALLOC+0x20$FG$.  You specify $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ function names with $FG,2$&$FG$ before functions as in $FG,2$&Print+0x10$FG$.
 
-* I use $LK,"progress1",A="MN:progress1"$-$LK,"progress4",A="MN:progress4"$ for debugging because they show on the wallpaper.  They're just global integer vars.
+* I use $LK,"progress1",A="MN:progress1"$-$LK,"progress4",A="MN:progress4"$ for debugging because they show on the wallpaper.  They're just global int vars.
 
 * You can use $LK,"AdamLog",A="MN:AdamLog"$() to send text to the Adam task window.  It works like $LK,"Print",A="MN:Print"$().  I never use that.  Instead, I use $LK,"RawPrint",A="MN:RawPrint"$().
 
diff --git a/Doc/Demands.TXT b/Doc/Demands.TXT
index 9679859..16b8351 100644
--- a/Doc/Demands.TXT
+++ b/Doc/Demands.TXT
@@ -6,9 +6,9 @@ $HC," to see
 $ID,-2$$TR,"BT Button"$
 $ID,2$See $LK,"::/Demo/DolDoc/MenuButton.CPP"$.
 $ID,-2$$TR,"DA Data"$
-$ID,2$Used for forms that prompt for data.  Use $FG,2$$FG$ as a text widgets editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$.  If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr.  See $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/DolDoc/Form.CPP"$.
+$ID,2$Used for forms that prompt for data or just displaying a value.  Use $FG,2$$FG$ to help you generate the DolDoc command text you need in your $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$().  See $LK,"::/Demo/DolDoc/Form.CPP"$, $LK,"::/Demo/Dsk/DataBase.CPP"$, and $LK,"::/Adam/DolDoc/DocWidgetWiz.CPP"$.
 
-The default data-type for the $FG,2$$$DA...$$$FG$ command is $FG,2$I64$FG$.  You can change it to $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$.  See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
+If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$DA...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the $FG,2$->data$FG$ addr.  See $LK,"task_title",A="FF:::/Adam/DolDoc/DocEd.CPP,&Fs->task_title"$.   
 
-The $LK,"CDocEntry",A="MN:CDocEntry"$.aux_str arg $FG,2$A=""$FG$ is used for the format string.
+The default raw data type for the $FG,2$$$DA...$$$FG$ command is $FG,2$RT=I64$FG$.  $LK,"DocForm",A="MN:DocForm"$() will automatically reset the raw type to the value from the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's definition if you leave it set to the default.  Or, if not using $LK,"DocForm",A="MN:DocForm"$(), specify a raw data type of $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$.  See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
 
-If there is a ':', the space after the first ':' in the format string marks the first valid cursor pos.  See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$.
+The $LK,"CDocEntry",A="MN:CDocEntry"$.aux_str arg $FG,2$A=""$FG$ is used for the print/scan format string.
+
+The default field length is $FG,2$LEN=64$FG$ characters.  For U8 arrays[], $LK,"DocForm",A="MN:DocForm"$() will automatically reset the field length to the string length from the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's definition.  The length measures starting after the ':' in the $FG,2$A=""$FG$ format string.
+
+The space after the first ':' in the format string marks the first valid cursor pos.  See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$.
 $ID,-2$$TR,"CB Check Box"$
-$ID,2$Used for forms.  Use $FG,2$$FG$ as a text widgets editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$.  If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr.  See $LK,"DocForm",A="MN:DocForm"$(), $LK,"CEdFindText",A="MN:CEdFindText"$ and $LK,"::/Demo/DolDoc/Form.CPP"$.
+$ID,2$Used for forms.  Use $FG,2$$FG$ to help you generate the DolDoc command text you need in your $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$().  See $LK,"::/Demo/DolDoc/Form.CPP"$$FG$ and $LK,"CEdFindText",A="MN:CEdFindText"$.
 
-The default data-type for the $FG,2$$$CB...$$$FG$ command is $FG,2$I8$FG$ which is $FG,2$Bool$FG$.  You can change it to $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, or $FG,2$U64$FG$.  See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
+If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$CB...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the $FG,2$->data$FG$ addr.  See $LK,"task_title",A="FF:::/Adam/DolDoc/DocEd.CPP,&Fs->task_title"$.   
+
+The default raw data type for the $FG,2$$$CB...$$$FG$ command is $FG,2$RT=I8$FG$ which is $FG,2$Bool$FG$$FG$.  $LK,"DocForm",A="MN:DocForm"$() will automatically reset the raw type to the value from the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's definition if you leave it set to the default.  Or, if not using $LK,"DocForm",A="MN:DocForm"$(), specify a raw data type of $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$.  See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
 $ID,-2$$TR,"LS List Widget"$
-$ID,2$Used for forms that prompt for data.  You must specify a define list, $FG,2$D=""$FG$.  Use $FG,2$$FG$ as a text widgets editor to help you generate the text you need in your "$FG,2$fmtstr$FG$" cmd in a $FG,2$class$FG$.  If you add it directly with $LK,"DocPrint",A="MN:DocPrint"$(), you'll need to fill-in the data addr.  See $LK,"DocForm",A="MN:DocForm"$() and $LK,"::/Demo/DolDoc/Form.CPP"$.
+$ID,2$Used for forms that prompt for data.  You must specify a define list, $FG,2$D=""$FG$.  Use $FG,2$$FG$ to help you generate the DolDoc command text you need in your $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's $FG,2$fmtstr$FG$ meta-data for $LK,"DocForm",A="MN:DocForm"$().  See $LK,"::/Demo/DolDoc/Form.CPP"$.
 
-The default data-type for the $FG,2$$$LS...$$$FG$ command is $FG,2$I64$FG$.  You can change it to $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, or $FG,2$U64$FG$.  See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
+If you are not using $LK,"DocForm",A="MN:DocForm"$(), make a $FG,2$$$LS...$$$FG$ statement with $LK,"DocPrint",A="MN:DocPrint"$() and fill-in the data addr.  See $LK,"task_title",A="FF:::/Adam/DolDoc/DocEd.CPP,&Fs->task_title"$.   
+
+The default raw data type for the $FG,2$$$LS...$$$FG$ command is $FG,2$RT=I64$FG$.  $LK,"DocForm",A="MN:DocForm"$() will automatically reset the raw type to the value from the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's definition if you leave it set to the default.  Or, if not using $LK,"DocForm",A="MN:DocForm"$(), specify a raw data type of $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$.  See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
 $ID,-2$$TR,"MA Macro"$
 $ID,2$A left macro arg, $FG,2$LM=""$FG$, will send text when the left mouse is clicked.
 
@@ -215,6 +223,10 @@ $ID,-2$
 <$LK,"ArgCode",A="FF:::/Adam/DolDoc/DocInit.CPP,ST_DOC_FLAGS"$>  See $LK,"Arg Defines",A="MN:DOCEf_TAG"$.
 $TR,"T=\"\" Tag Str"$
 $ID,2$Some cmds have a tag by default.  See $LK,"TX+T",A="FF:::/Adam/DolDoc/DocInit.CPP,TX+T"$.  You can code $FG,2$T="tag_text"$FG$ as just $FG,2$"tag_text"$FG$ with no $FG,2$T=$FG$. 
+$ID,-2$$TR,"LEN=\"\" Field Length"$
+$ID,2$The default field length for $FG,2$$$DA...$$$FG$ commands is $FG,2$LEN=64$FG$ characters.  For U8 arrays[], $LK,"DocForm",A="MN:DocForm"$() will automatically reset the field length to the string length from the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ $FG,2$class$FG$ member's definition.  The length measures starting after the ':' in the $FG,2$A=""$FG$ format string.
+
+The space after the first ':' in the format string marks the first valid cursor pos.  See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$.
 $ID,-2$$TR,"A=\"\" Auxilliary Str"$
 $ID,2$Some cmds need auxilliary strings.  $FG,2$A="str"$FG$ means an $LK,"CDocEntry",A="MN:CDocEntry"$.aux_str is present.  aux_str is used for song note text, link text, anchor text, and $FG,2$$$DA...$$$FG$ format string text.
 $ID,-2$$TR,"D=\"\" Define Str"$
@@ -245,9 +257,9 @@ $ID,2$The BinPtrLink flags lets you specify a filename and bin num to import a b
 $FG,2$$$SP,"",BI=1,BP="filename,1"$$$FG$ will import bin num "1" from filename.
 $FG,2$$$SP,"<1>",BI=1,BP="::/Demo/Graphics/Mountain.CPP.Z,Mountain"$$$FG$ will import bin with tag name "Mountain" from "::/Demo/Graphics/Mountain.CPP.Z".
 $ID,-2$$TR,"RT="$
-$ID,2$The default data-type for the $FG,2$$$DA...$$$FG$ command is $FG,2$I64$FG$.  The default for the $FG,2$$$CB...$$$FG$ command is $FG,2$I8$FG$ which is $FG,2$Bool$FG$.
+$ID,2$The default data-type for the $FG,2$$$DA...$$$FG$ and $FG,2$$$LS...$$$FG$ commands is $FG,2$RT=I64$FG$.  If you do not specify a raw type and are using $LK,"DocForm",A="MN:DocForm"$(), it will use the $FG,2$class$FG$ member's raw type, automatically.  The default for the $FG,2$$$CB...$$$FG$ command is $FG,2$RT=I8$FG$ which is $FG,2$Bool$FG$.
 
-You can change it to $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$.  See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
+If not using $LK,"DocForm",A="MN:DocForm"$(), change it to $FG,2$I8$FG$, $FG,2$U8$FG$, $FG,2$I16$FG$, $FG,2$U16$FG$, $FG,2$I32$FG$, $FG,2$U32$FG$, $FG,2$I64$FG$, $FG,2$U64$FG$, or $FG,2$F64$FG$.  See $LK,"DocDataFmt",A="MN:DocDataFmt"$() and $LK,"DocDataScan",A="MN:DocDataScan"$().
 $ID,-2$$TR,"SX= Shift X"$
 $ID,2$Shift tag text $FG,2$+$FG$/$FG,2$- 7$FG$ X pixels off the grid.
 $ID,-2$$TR,"SY= Shift Y"$
diff --git a/Doc/FAQ.TXT b/Doc/FAQ.TXT
index c86dc6c..fb86a3d 100644
--- a/Doc/FAQ.TXT
+++ b/Doc/FAQ.TXT
@@ -17,7 +17,7 @@ $ID,2$TempleOS compiles, doesn't $FG,2$interpret$FG$, and uses no $FG,2$byte cod
 $ID,-2$$TR,"Are you a Creationist?"$
 $ID,2$I am an evolutionist.  $FG,2$Adam$FG$ is a better term for the first father of all tasks than $FG,2$root$FG$ was!
 $ID,-2$$TR,"Is 'Bt()' in the code Bit Torrent?"$
-$ID,2$$LK,"Bt",A="MN:Bt"$() is $FG,2$bit test$FG$, like the $FG,2$x86$FG$ instruction, not $FG,2$bit torrent$FG$.
+$ID,2$$LK,"Bt",A="MN:Bt"$() is $FG,2$bit test$FG$, like the $FG,2$x86$FG$ inst, not $FG,2$bit torrent$FG$.
 $ID,-2$$TR,"Is 'Fs->' in the code file system?"$
 $ID,2$$LK,"Fs",A="MN:Fs"$ is a segment reg, not $FG,2$file system$FG$.  ($LK,"Fs",A="MN:Fs"$ is kept pointing to the current task's record.)  There is no memory segmentation.  It is 64-bit and flat. FS and GS are used as general purpose regs, more or less.
 $ID,-2$$TR,"Is it Pascal?"$
@@ -49,7 +49,7 @@ $ID,2$TempleOS identity-maps all memory, all the time.  It is like paging is not
 $ID,-2$$TR,"Why does it run code from stack addresses?"$
 $ID,2$TempleOS puts all code in the lowest 2 Gig, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.TXT,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used.  TempleOS is 64-bit, but $FG,2$2 Gig$FG$ is enough for code.  It actually puts global variables there, too, but you can turn that off with $LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$.  $LK,"MAlloc",A="MN:MAlloc"$() allocs higher memory.
 $ID,-2$$TR,"How does it SYSCALL?"$
-$ID,2$TempleOS doesn't use software interrupts or $FG,2$SYSCALL$FG$ instructions because it never needs to change out of ring-0, even running user programs.  Calls are always $FG,2$CALL REL32$FG$ instructions.
+$ID,2$TempleOS doesn't use software interrupts or $FG,2$SYSCALL$FG$ insts because it never needs to change out of ring-0, even running user programs.  Calls are always $FG,2$CALL REL32$FG$ insts.
 $ID,-2$$TR,"How do you fault-in stack?"$
 $ID,2$The stack does not grow, so do not do deep recursion.  In theory, memory gets fragmented, too.
 $ID,-2$$TR,"How do I set the PATH?"$
@@ -62,7 +62,7 @@ $ID,-2$$TR,"Why is there some 16-Bit code?"$
 $ID,2$TempleOS is 64-bit.  Like all PC operating systems, the boot-loader starts in 16-bit real-mode.  TempleOS calls a few $FG,2$BIOS$FG$ info routines, switches to VGA-640x480x4bit, switches to 32-bit, then, 64-bit mode.  There is an odd thing called a $FG,2$$TX,"PCI BIOS",HTML="http://www.o3one.org/hwdocs/bios_doc/pci_bios_21.pdf"$$FG$ which is 32-bit used for $FG,2$PCI$FG$ config space access.  TempleOS calls $LK,"that",A="FI:::/Kernel/PCIBIOS.CPP"$ a couple times.  It must temporarily drop-out-of 64-bit mode for that and stop multi-tasking.
 $ID,-2$$TR,"Why are you pushing 32-bit values on the stack?"$
 $ID,2$$FG,2$PUSH EAX$FG$ : All stack operations in 64-bit mode are 64-bits.
-$ID,-2$$TR,"Why are you using 32-bit instructions and not setting high 32-bits?"$
+$ID,-2$$TR,"Why are you using 32-bit insts and not setting high 32-bits?"$
 $ID,2$$FG,2$XOR EAX,EAX$FG$ : Operations on 32-bit regs clear the high 32-bits.
 $ID,-2$$TR,"How do you use the FS and GS segment registers."$
 $ID,2$$FG,2$MOV RAX,FS:[RAX]$FG$ : FS can be set with a $FG,2$WRMSR$FG$, but displacement is RIP relative, so it's tricky to use.  FS is used for the current $LK,"CTask",A="MN:CTask"$, GS for $LK,"CCPU",A="MN:CCPU"$.
diff --git a/Doc/Features.TXT b/Doc/Features.TXT
index ab9ba43..226e080 100644
--- a/Doc/Features.TXT
+++ b/Doc/Features.TXT
@@ -30,7 +30,7 @@
 
 * $FG,2$64-bit pointers$FG$.  All memory, even more than 4 Gig, can be directly accessed by all tasks on all cores at all times.
 
-* $FG,2$Ring-0-only$FG$.  Highest CPU privileged mode at all times.  No off-limits instructions.  No time lost changing modes or address maps.  Switches tasks in half a microsecond.
+* $FG,2$Ring-0-only$FG$.  Highest CPU privileged mode at all times.  No off-limits insts.  No time lost changing modes or address maps.  Switches tasks in half a microsecond.
 
 * $FG,2$2D/3D$FG$ graphics library
 
diff --git a/Doc/FileUtils.TXT b/Doc/FileUtils.TXT
index 9938388..b9c0d32 100644
--- a/Doc/FileUtils.TXT
+++ b/Doc/FileUtils.TXT
@@ -9,7 +9,7 @@ $FG,2$"/*.TXT*;~*/Bible*"$FG$	BaseDir: $FG,2$Root$FG$		Mask: $FG,2$*.TXT*$FG$ bu
 
 See $LK,"FilesFindMatch",A="MN:FilesFindMatch"$().
 
-Flags are either text or integer values.
+Flags are either text or int values.
 
   $LK,"FUF_RECURSE",A="MN:FUF_RECURSE"$		$FG,2$+r$FG$ Recurse
   $LK,"FUF_SINGLE",A="MN:FUF_SINGLE"$		$FG,2$+s$FG$ Single File (Optimization for one file in mask.)
diff --git a/Doc/Glossary.TXT b/Doc/Glossary.TXT
index 9dfbe15..0ff05e2 100644
--- a/Doc/Glossary.TXT
+++ b/Doc/Glossary.TXT
@@ -7,6 +7,7 @@ $FG,2$Acct$FG$	Account
 $FG,2$ACD$FG$	AutoComplete Dictionary
 $FG,2$Addr$FG$	Address
 $FG,2$Alloc$FG$	Allocate
+$FG,2$Alt$FG$	Alternate
 $FG,2$AOT$FG$	Ahead-of-Time
 $FG,2$AP$FG$	ApplicationProcessor (Core1 - Core7)
 $FG,2$Arg$FG$	Argument
@@ -65,7 +66,8 @@ $FG,2$Ident$FG$	Identifier, Identity
 $FG,2$IDT$FG$	Interrupt Descriptor Table
 $FG,2$Init$FG$	Initialize
 $FG,2$Ins$FG$	Insert
-$FG,2$Int$FG$	Interrupt
+$FG,2$Inst$FG$	Instruction
+$FG,2$Int$FG$	Interrupt, Integer
 $FG,2$ip_$FG$	Input Pointer.  See $LK,"InputPointer.CPP",A="FI:::/Kernel/SerialDev/InputPointer.CPP"$.
 $FG,2$Irq$FG$	Interrupt (Request)
 $FG,2$JIT$FG$	Just-in-Time
@@ -148,11 +150,11 @@ $ID,2$This is Adam, as in Adam and Eve, the parent of all tasks and immortal.  T
 $ID,-2$$TR,"Seth Task"$
 $ID,2$$FG,2$Seth$FG$ is Adam and Eve's child.  Each CPU core has an executive task called $FG,2$Seth$FG$ that is immortal.  The Adam task on $FG,2$CPU#0$FG$ is also it's $FG,2$Seth$FG$ task.
 $ID,-2$$TR,"Code and Data Heaps"$
-$ID,2$TempleOS uses the asm $FG,2$CALL$FG$ instruction, exclusively, and that instruction is limited to calling routines $FG,2$+/-2 Gig$FG$ from the current code location.  To prevent out-of-range issues, I decided to separate code and data, placing all code within the lowest $FG,2$2 Gig$FG$ of memory, addresses $FG,2$00000000$FG$-$FG,2$7FFFFFFF$FG$.  The compiler and $LK,"Load",A="MN:Load"$()er alloc memory from the code heap to store code and glbl vars, unless the compiler option $LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$ is used.  When programs call $LK,"MAlloc",A="MN:MAlloc"$() is from the data heap, which in not limited in size, except by physical RAM memory.  You can alloc from any heap in any task at any time on any core, even making $LK,"independent",A="MN:Mem512Alloc"$ heaps.
+$ID,2$TempleOS uses the asm $FG,2$CALL$FG$ inst, exclusively, and that inst is limited to calling routines $FG,2$+/-2 Gig$FG$ from the current code location.  To prevent out-of-range issues, I decided to separate code and data, placing all code within the lowest $FG,2$2 Gig$FG$ of memory, addresses $FG,2$00000000$FG$-$FG,2$7FFFFFFF$FG$.  The compiler and $LK,"Load",A="MN:Load"$()er alloc memory from the code heap to store code and glbl vars, unless the compiler option $LK,"OPTf_GLBLS_ON_DATA_HEAP",A="MN:OPTf_GLBLS_ON_DATA_HEAP"$ is used.  When programs call $LK,"MAlloc",A="MN:MAlloc"$() is from the data heap, which in not limited in size, except by physical RAM memory.  You can alloc from any heap in any task at any time on any core, even making $LK,"independent",A="MN:Mem512Alloc"$ heaps.
 $ID,-2$$TR,"Parent, Child and PopUp Tasks"$
 $ID,2$Often a task will $LK,"Spawn",A="MN:Spawn"$() or $LK,"PopUp",A="MN:PopUp"$() a task as a helper.  The helper is known as a child Task, though you can $LK,"Spawn",A="MN:Spawn"$ a task and assign it a different parent... like $FG,2$Adam$FG$.  Links are kept as to who's whose child, so when one task is $LK,"Kill",A="MN:Kill"$()ed the child helper tasks die, too.  You can get a report of current system tasks with $LK,"TaskRep",A="MN:TaskRep"$().  There is just one window per task, so child tasks are needed for pop-ups.
 $ID,-2$$TR,"HolyC"$
-$ID,2$$LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ is more than $FG,2$C$FG$ and less than $FG,2$C++$FG$.  It has the default args of $FG,2$C++$FG$ and uses $FG,2$class$FG$ in place of $FG,2$struct$FG$.  It uses $FG,2$U0,U8,U16,U32,I64$FG$ and $FG,2$I0,I8,I16,I32,I64$FG$ for signed and unsigned integers.  It has different $LK,"operator precedence",A="FF:::/Doc/HolyC.TXT,operator precedence"$.  It has $FG,2$PASCAL$FG$-like function calls with no parens, but requires an $FG,2$&$FG,2$$FG$ when referring to function addresses.
+$ID,2$$LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ is more than $FG,2$C$FG$ and less than $FG,2$C++$FG$.  It has the default args of $FG,2$C++$FG$ and uses $FG,2$class$FG$ in place of $FG,2$struct$FG$.  It uses $FG,2$U0,U8,U16,U32,I64$FG$ and $FG,2$I0,I8,I16,I32,I64$FG$ for signed and unsigned ints.  It has different $LK,"operator precedence",A="FF:::/Doc/HolyC.TXT,operator precedence"$.  It has $FG,2$PASCAL$FG$-like function calls with no parens, but requires an $FG,2$&$FG,2$$FG$ when referring to function addresses.
 $ID,-2$$TR,"AOT Compile Mode"$
 $ID,2$$FG,2$Ahead-of-Time$FG$ compiling is conventional compilation mode.  Do not use $FG,2$AOT$FG$, use $FG,2$JIT$FG$ compiling.
 
@@ -162,7 +164,7 @@ There is no $FG,2$main()$FG$ routine.  Instead, stmts outside functions are auto
 $ID,-2$$TR,"JIT Compile Mode"$
 $ID,2$In $FG,2$just-in-time$FG$ mode, the compiler places code and data in memory alloced from the heap, incrementally, making them immediately ready for in-place execution.  This mode is used during cmd line operations.  When you $FG,2$#include$FG$ a file, it is compiled function by function and code ends-up all over in the memory, at least in the first 2Gig of memory.  The $LK,"ExeFile",A="MN:ExeFile"$() routine is the same as $FG,2$#include$FG$ but can be used in programs.  $LK,"ExePrint",A="MN:ExePrint"$() routine will compile and run a string.
 $ID,-2$$TR,"Compiler Intermediate Code"$
-$ID,2$The compiler generates instructions one step before making actual assembly (machine) language instructions.  This code is reverse polish stack machine in nature and can be viewed with $LK,"PassTrace",A="MN:PassTrace"$().  The compiler does not $FG,2$interpret$FG$ code, except in the process of optimization to make the final machine code.  Assembly language output can be viewed when code is compiled with the $LK,"Trace",A="MN:Trace"$(), or, afterward, with $LK,"U",A="MN:U"$() or $LK,"Uf",A="MN:Uf"$("").
+$ID,2$The compiler generates insts one step before making actual assembly (machine) language insts.  This code is reverse polish stack machine in nature and can be viewed with $LK,"PassTrace",A="MN:PassTrace"$().  The compiler does not $FG,2$interpret$FG$ code, except in the process of optimization to make the final machine code.  Assembly language output can be viewed when code is compiled with the $LK,"Trace",A="MN:Trace"$(), or, afterward, with $LK,"U",A="MN:U"$() or $LK,"Uf",A="MN:Uf"$("").
 $ID,-2$$TR,"Drive/Partition"$
 $ID,2$There is no distinction between $FG,2$drive$FG$ or $FG,2$partition$FG$.  They are specified with a single letter from $FG,2$A$FG$-$FG,2$Z$FG$.
 
@@ -179,7 +181,7 @@ $LK,"Hash Table",A="HI:Hash"$
 $LK,"RedSea File System",A="FI:::/Doc/RedSea.TXT"$
 $LK,"Sprite",A="HI:Graphics/Sprite"$
 $TR,"CLI, STI, PUSHFD, POPFD"$
-$ID,2$These are x86 assembly instructions.
+$ID,2$These are x86 assembly insts.
 $FG,2$CLI$FG$ disable interrupts.
 $FG,2$STI$FG$ enable interrupts.
 $FG,2$PUSHFD$FG$ pushes the CPU flags.
diff --git a/Doc/GuideLines.TXT b/Doc/GuideLines.TXT
index 30dc3d4..9ee3e23 100644
--- a/Doc/GuideLines.TXT
+++ b/Doc/GuideLines.TXT
@@ -114,7 +114,7 @@ See $LK,"::/Doc/Asm.TXT"$.
 
 * Don't change the segment regs unless interrupts are off.  It's hard to do, anyway.  $LK,"SET_FS_BASE",A="MN:SET_FS_BASE"$ and $LK,"SET_GS_BASE",A="MN:SET_GS_BASE"$.
 
-* When interacting with $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ compiled code, preserve $FG,2$RBP, RSI, RDI, R10-R15$FG$ because the compiler uses these for reg vars.  You are free to clobber $FG,2$RAX, RBX, RCX, RDX$FG$, $FG,2$R8$FG$ and $FG,2$R9$FG$.  See $LK,"Compiler Reg Masks",A="MN:REGG_C_LOCAL_VARS"$, $LK,"PUSH_C_REGS",A="MN:PUSH_C_REGS"$ and $LK,"POP_C_REGS",A="MN:POP_C_REGS"$
+* When interacting with $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ compiled code, preserve $FG,2$RBP, RSI, RDI, R10-R15$FG$ because the compiler uses these for reg vars.  You are free to clobber $FG,2$RAX, RBX, RCX, RDX$FG$, $FG,2$R8$FG$ and $FG,2$R9$FG$.  See $LK,"Compiler Reg Masks",A="MN:REGG_LOCAL_VARS"$, $LK,"PUSH_C_REGS",A="MN:PUSH_C_REGS"$ and $LK,"POP_C_REGS",A="MN:POP_C_REGS"$
 
 * I recommend using the standard stk frame for functions because $LK,"Caller",A="MN:Caller"$() is used to display the call stk, such as for the wallpaper.
 $FG,2$	PUSH	RBP
diff --git a/Doc/HelloWorld.TXT b/Doc/HelloWorld.TXT
index c311ccd..7fa6e65 100644
--- a/Doc/HelloWorld.TXT
+++ b/Doc/HelloWorld.TXT
@@ -58,7 +58,7 @@ asm {
 _HELLO_WORLD::
 //You can only clobber RAX,RBX,RCX,RDX
 	MOV	RAX,'Hello '
-	CALL	PUT_CHARS //Up to 8 chars packed into one 64-bit integer.
+	CALL	PUT_CHARS //Up to 8 chars packed into one 64-bit int.
 	MOV	RAX,'World\n'
 	CALL	PUT_CHARS
 	RET
diff --git a/Doc/HolyC.TXT b/Doc/HolyC.TXT
index b02bebc..7996120 100644
--- a/Doc/HolyC.TXT
+++ b/Doc/HolyC.TXT
@@ -112,7 +112,7 @@ $FG$$ID,-2$
 
 * Allows ranges like "$FG,2$case 4...7:$FG$" in $FG,2$switch$FG$ stmts.
 
-* A no case number causes next higher integer case in $FG,2$switch$FG$ stmts.  See $LK,"::/Demo/NullCase.CPP"$.
+* A no case number causes next higher int case in $FG,2$switch$FG$ stmts.  See $LK,"::/Demo/NullCase.CPP"$.
 
 $ID,2$$FG,2$I64 i;
 for (i=0;i<20;i++) 
@@ -153,7 +153,7 @@ $ID,-2$
 
 $ID,2$$FG,2$U0 Main()
 {
-  //Only use $LK,"REGG_C_LOCAL_VARS",A="MN:REGG_C_LOCAL_VARS"$ or $LK,"REGG_C_LOCAL_NON_PTR_VARS",A="MN:REGG_C_LOCAL_NON_PTR_VARS"$ for reg vars or else clobbered.
+  //Only use $LK,"REGG_LOCAL_VARS",A="MN:REGG_LOCAL_VARS"$ or $LK,"REGG_LOCAL_NON_PTR_VARS",A="MN:REGG_LOCAL_NON_PTR_VARS"$ for reg vars or else clobbered.
   I64 reg R15 i=5, noreg j=4;
   nounusedwarn i;
   asm {
@@ -219,7 +219,7 @@ $FG$$ID,-2$
 
 * Can't use $FG,2$<>$FG$ with $FG,2$#include$FG$, use $FG,2$""$FG$.
 
-* "$FG,2$$$$FG$" is an escape character.  Two dollar signs signify an ordinary $$.  See $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$.  In $FG,2$asm$FG$ or $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ code, it also refers to the instruction's address or the offset in a $FG,2$class$FG$ definition. 
+* "$FG,2$$$$FG$" is an escape character.  Two dollar signs signify an ordinary $$.  See $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$.  In $FG,2$asm$FG$ or $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ code, it also refers to the inst's address or the offset in a $FG,2$class$FG$ definition. 
 
 * $FG,2$union$FG$ is more like a class, so you don't reference it with a $FG,2$union$FG$ label after you define it.  Some common unions are declared in $LK,"KernelA.HPP",A="MN:U16"$ for 1,2,4 and 8 byte objects.  If you place a type in front of a union declaration, that is the type when used by itself.  See $LK,"::/Demo/SubIntAccess.CPP"$. 
 
@@ -233,7 +233,7 @@ $FG$$ID,-2$
 
 * There is no $FG,2$continue$FG$ stmt.  Use $FG,2$goto$FG$.
 
-* $FG,2$lock{}$FG$ can be used to apply asm $FG,2$LOCK$FG$ prefixes to code for safe multicore read-modify-write accesses.  The code bracked with have $FG,2$LOCK$FG$ asm prefix's applied to relevant instructions within.  It's a little shoddy.  See $LK,"::/Demo/MultiCore/Lock.CPP"$.
+* $FG,2$lock{}$FG$ can be used to apply asm $FG,2$LOCK$FG$ prefixes to code for safe multicore read-modify-write accesses.  The code bracked with have $FG,2$LOCK$FG$ asm prefix's applied to relevant insts within.  It's a little shoddy.  See $LK,"::/Demo/MultiCore/Lock.CPP"$.
 
 * There is a function called $LK,"MSize",A="MN:MSize"$() which gives the size of an object alloced off the heap.  For larger size allocations, the system rounds-up to a power of two, so $FG,2$MSize()$FG$ lets you know the real size and you can take full advantage of it.
 
diff --git a/Doc/MemOverview.TXT b/Doc/MemOverview.TXT
index 9efbb91..df7ad02 100644
--- a/Doc/MemOverview.TXT
+++ b/Doc/MemOverview.TXT
@@ -2,7 +2,7 @@ $WW,1$$FG,5$$TX+CX,"Memory Overview"$$FG$
 
 Paging is practically not used.  64-bit mode requires paging, however, so it is identity-mapped, virtual identical to physical.  All tasks on all cores use the same page table map, just as though all addresses are physical addresses.  2 Meg page table entries are used, except the first 2 Meg, which uses 4K page tables entries.  Nothing swaps to disk, either.
 
-In TempleOS, the lowest 2 Gig of memory is called the $FG,2$code heap$FG$.  TempleOS's compiler always uses 32-bit signed relative JMP & CALL instructions because 64-bit CALLs take two instructions.  With signed +/- 32-bit values, code can only call a function within 2 Gig distance.  Therefore, TempleOS keeps all code in the lowest 2 Gig memory addresses including what would normally be called "the kernel".  Two Gig is plenty for code, don't worry.
+In TempleOS, the lowest 2 Gig of memory is called the $FG,2$code heap$FG$.  TempleOS's compiler always uses 32-bit signed relative JMP & CALL insts because 64-bit CALLs take two insts.  With signed +/- 32-bit values, code can only call a function within 2 Gig distance.  Therefore, TempleOS keeps all code in the lowest 2 Gig memory addresses including what would normally be called "the kernel".  Two Gig is plenty for code, don't worry.
 
 You can create new, independent heaps using $LK,"HeapCtrlInit",A="MN:HeapCtrlInit"$().  Then, use the $LK,"CHeapCtrl",A="MN:CHeapCtrl"$ as the 2nd arg to $LK,"MAlloc",A="MN:MAlloc"$().  See $LK,"HeapLog",A="MN:HeapLog"$() for an example.
 
diff --git a/Doc/MultiCore.TXT b/Doc/MultiCore.TXT
index dc9bada..185eafe 100644
--- a/Doc/MultiCore.TXT
+++ b/Doc/MultiCore.TXT
@@ -8,7 +8,7 @@ Each core has an executive $FG,2$seth task$FG$ which is the father of all tasks
 
 You give a job to a seth task with $LK,"JobQue",A="MN:JobQue"$() and get the result with $LK,"JobResultGet",A="MN:JobResultGet"$().  You spawn a task on another core with $LK,"Spawn",A="MN:Spawn"$().
 
-Note: You must use the $FG,2$LOCK$FG$ asm prefix when changing shared structures in a multicore environment.  The $LK,"LBts",A="MN:LBts"$(), $LK,"LBtr",A="MN:LBtr"$() and $LK,"LBtc",A="MN:LBtc"$() instructions have $FG,2$LOCK$FG$ prefixes.  The compiler has a $FG,2$lock{}$FG$ feature but it doesn't work well.  See $LK,"::/Demo/MultiCore/Lock.CPP"$.
+Note: You must use the $FG,2$LOCK$FG$ asm prefix when changing shared structures in a multicore environment.  The $LK,"LBts",A="MN:LBts"$(), $LK,"LBtr",A="MN:LBtr"$() and $LK,"LBtc",A="MN:LBtc"$() insts have $FG,2$LOCK$FG$ prefixes.  The compiler has a $FG,2$lock{}$FG$ feature but it doesn't work well.  See $LK,"::/Demo/MultiCore/Lock.CPP"$.
 
 See $LK,"::/Demo/Graphics/Transform.CPP"$.
 See $LK,"::/Kernel/MultiProc.CPP"$.
diff --git a/Doc/Quirks.TXT b/Doc/Quirks.TXT
index 8684e4c..4f65ce4 100644
--- a/Doc/Quirks.TXT
+++ b/Doc/Quirks.TXT
@@ -42,6 +42,6 @@ $FG,2$$ID,2$$ID,2$U0 Main()
   U16 *_w=0xA0000;
   *_w|=0x8000;
 }
-$ID,-2$$FG$The $FG,2$|=$FG$ will be coded as a $FG,2$U32 Bts$FG$ instruction resulting in a $FG,2$U32$FG$ access instead of a $FG,2$U16$FG$ access.  This affects some hardware operations.
+$ID,-2$$FG$The $FG,2$|=$FG$ will be coded as a $FG,2$U32 Bts$FG$ inst resulting in a $FG,2$U32$FG$ access instead of a $FG,2$U16$FG$ access.  This affects some hardware operations.
 $ID,-2$
 * Compiler warning or error message line numbers will be off if you have a block of word-wrapped comments.  You might press $FG,2$$FG$ before doing an editor goto-line-number command.
diff --git a/Doc/TimeCycles.TXT b/Doc/TimeCycles.TXT
index fb6bfa2..378d16c 100644
--- a/Doc/TimeCycles.TXT
+++ b/Doc/TimeCycles.TXT
@@ -1 +1 @@
-$WW,1$Intel/AMD have an instruction that returns the num of CPU cycles since boot.  This is not a steady, calibrated real time value.  TempleOS measures it and you can convert with $LK,"cnts.time_stamp_freq",A="MN:CCntsGlbls"$, a value continuously calibrated from other cnts.
\ No newline at end of file
+$WW,1$Intel/AMD have an inst that returns the num of CPU cycles since boot.  This is not a steady, calibrated real time value.  TempleOS measures it and you can convert with $LK,"cnts.time_stamp_freq",A="MN:CCntsGlbls"$, a value continuously calibrated from other cnts.
\ No newline at end of file
diff --git a/Doc/Transform.TXT b/Doc/Transform.TXT
index 09e986e..1c06a1f 100644
--- a/Doc/Transform.TXT
+++ b/Doc/Transform.TXT
@@ -1,6 +1,6 @@
 $WW,1$$LK,"CDC",A="MN:CDC"$'s have a 4x4 matrix for rotating, scaling, skewing and shifting in 3 dimensions.  To make the graphics routines use the transform, you must set the $LK,"DCF_TRANSFORMATION",A="MN:DCF_TRANSFORMATION"$ flag.
 
-The matrix consists of integers that have been scaled 32 bits ($LK,"GR_SCALE",A="MN:GR_SCALE"$).  See $LK,"::/Demo/Lectures/FixedPoint.CPP"$ to learn why.
+The matrix consists of ints that have been scaled 32 bits ($LK,"GR_SCALE",A="MN:GR_SCALE"$).  See $LK,"::/Demo/Lectures/FixedPoint.CPP"$ to learn why.
 
 See $LK,"Mat4x4IdentEqu",A="MN:Mat4x4IdentEqu"$(), $LK,"Mat4x4IdentNew",A="MN:Mat4x4IdentNew"$(), $LK,"Mat4x4Equ",A="MN:Mat4x4Equ"$() and $LK,"Mat4x4New",A="MN:Mat4x4New"$().  See $LK,"Mat4x4RotX",A="MN:Mat4x4RotX"$(), $LK,"Mat4x4RotY",A="MN:Mat4x4RotY"$(), $LK,"Mat4x4RotZ",A="MN:Mat4x4RotZ"$() and $LK,"Mat4x4Scale",A="MN:Mat4x4Scale"$() to rotate about axes and scale.  Combine them with $LK,"Mat4x4MulMat4x4Equ",A="MN:Mat4x4MulMat4x4Equ"$()/$LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$() and assign them to the $LK,"CDC",A="MN:CDC"$.$FG,2$dc$FG$ with $LK,"DCMat4x4Set",A="MN:DCMat4x4Set"$().  See $LK,"::/Demo/Graphics/Box.CPP"$.
 
diff --git a/Kernel/KExcept.CPP b/Kernel/KExcept.CPP
index bc8bf61..4da2434 100644
--- a/Kernel/KExcept.CPP
+++ b/Kernel/KExcept.CPP
@@ -1,5 +1,5 @@
 asm {
-#assert !((REGG_C_LOCAL_NON_PTR_VARS|REGG_C_LOCAL_VARS)&~0xFCC0)
+#assert !((REGG_LOCAL_NON_PTR_VARS|REGG_LOCAL_VARS)&~0xFCC0)
 _TEST_EXCEPT::
 	XOR	RAX,RAX
 	MOV	RAX,FS:U64 CTask.last_except[RAX]
diff --git a/Kernel/KMathB.CPP b/Kernel/KMathB.CPP
index 2ed7f23..714b203 100644
--- a/Kernel/KMathB.CPP
+++ b/Kernel/KMathB.CPP
@@ -24,7 +24,7 @@ F64 Max(F64 n1,F64 n2)
 }
 
 F64 Pow10I64(I64 i)
-{//F64 integer powers of ten.
+{//F64 int powers of ten.
   if (i>308)
     return ì;
   else if (i<-308)
@@ -34,23 +34,23 @@ F64 Pow10I64(I64 i)
 }
 
 U64 FloorU64(U64 num,U64 to)
-{//Integer multiples of num.
+{//Int multiples of num.
   return num-num%to;
 }
 
 U64 CeilU64(U64 num,U64 to)
-{//Integer multiples of num.
+{//Int multiples of num.
   num+=to-1;
   return num-num%to;
 }
 
 I64 RoundI64(I64 num,I64 to)
-{//Integer multiples of num.
+{//Int multiples of num.
   return num-num%to;
 }
 
 I64 FloorI64(I64 num,I64 to)
-{//Integer multiples of num.
+{//Int multiples of num.
   if (num>=0)
     return num-num%to;
   else {
@@ -60,7 +60,7 @@ I64 FloorI64(I64 num,I64 to)
 }
 
 I64 CeilI64(I64 num,I64 to)
-{//Integer multiples of num.
+{//Int multiples of num.
   if (num>=0) {
     num+=to-1;
     return num-num%to;
diff --git a/Kernel/Kernel.MAP b/Kernel/Kernel.MAP
index 7276961..bd9cfa8 100644
--- a/Kernel/Kernel.MAP
+++ b/Kernel/Kernel.MAP
@@ -1,547 +1,548 @@
 $LK,"DrvTextAttrGet",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,281",BI=1$
-$LK,"ARGT_R64",A="FL:::/Kernel/KernelA.HPP,1874"$
+$LK,"ARGT_R64",A="FL:::/Kernel/KernelA.HPP,1893"$
 $LK,"MAlloc",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,387"$
-$LK,"BOOT_SRC_NULL",A="FL:::/Kernel/KernelA.HPP,3862"$
+$LK,"BOOT_SRC_NULL",A="FL:::/Kernel/KernelA.HPP,3881"$
 $LK,"KbdTypeMatic",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,86",BI=2$
 $LK,"KbdLEDsSet",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,52",BI=3$
 $LK,"LXchgU32",A="FL:::/Kernel/KernelB.HPP,261"$
 $LK,"LXchgU16",A="FL:::/Kernel/KernelB.HPP,260"$
-$LK,"BDS_CUR_DRV",A="FL:::/Kernel/KernelA.HPP,3242"$
-$LK,"DOCM_CANCEL",A="FL:::/Kernel/KernelA.HPP,1331"$
+$LK,"BDS_CUR_DRV",A="FL:::/Kernel/KernelA.HPP,3261"$
+$LK,"DOCM_CANCEL",A="FL:::/Kernel/KernelA.HPP,1337"$
 $LK,"chars_bmp_word",A="FL:::/Kernel/StrA.CPP.Z,340"$
-$LK,"BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,2273"$
-$LK,"ARGT_SS",A="FL:::/Kernel/KernelA.HPP,1905"$
+$LK,"BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,2292"$
+$LK,"ARGT_SS",A="FL:::/Kernel/KernelA.HPP,1924"$
 $LK,"c32_eax",A="FL:::/Kernel/PCIBIOS.CPP.Z,152"$
-$LK,"ARGT_EAX",A="FL:::/Kernel/KernelA.HPP,1898"$
-$LK,"DOCT_HEADER",A="FL:::/Kernel/KernelA.HPP,905"$
-$LK,"Ff__EXTERN",A="FL:::/Kernel/KernelA.HPP,847"$
+$LK,"ARGT_EAX",A="FL:::/Kernel/KernelA.HPP,1917"$
+$LK,"DOCT_HEADER",A="FL:::/Kernel/KernelA.HPP,907"$
+$LK,"Ff__EXTERN",A="FL:::/Kernel/KernelA.HPP,848"$
 $LK,"c32_ebx",A="FL:::/Kernel/PCIBIOS.CPP.Z,153"$
 $LK,"MemPageSize",A="FL:::/Kernel/Mem/PageTables.CPP.Z,154",BI=4$
 $LK,"D3Add",A="FL:::/Kernel/KernelB.HPP,147"$
 $LK,"D3NormSqr",A="FL:::/Kernel/KernelB.HPP,165"$
-$LK,"ARf_PLANAR_SYMMETRY",A="FL:::/Kernel/KernelA.HPP,3874"$
-$LK,"DOCf_PLAIN_TEXT_TABS",A="FL:::/Kernel/KernelA.HPP,1285"$
-$LK,"RLF_BLKDEV",A="FL:::/Kernel/KernelA.HPP,462"$
-$LK,"RLf_BLKDEV",A="FL:::/Kernel/KernelA.HPP,443"$
+$LK,"ARf_PLANAR_SYMMETRY",A="FL:::/Kernel/KernelA.HPP,3893"$
+$LK,"DOCf_PLAIN_TEXT_TABS",A="FL:::/Kernel/KernelA.HPP,1291"$
+$LK,"RLF_BLKDEV",A="FL:::/Kernel/KernelA.HPP,463"$
+$LK,"RLf_BLKDEV",A="FL:::/Kernel/KernelA.HPP,444"$
 $LK,"c32_ecx",A="FL:::/Kernel/PCIBIOS.CPP.Z,154"$
-$LK,"CCF_USE_LAST_U16",A="FL:::/Kernel/KernelA.HPP,2132"$
-$LK,"SYSf_CTRL_ALT_DEL",A="FL:::/Kernel/KernelA.HPP,613"$
+$LK,"CCF_USE_LAST_U16",A="FL:::/Kernel/KernelA.HPP,2152"$
+$LK,"SYSf_CTRL_ALT_DEL",A="FL:::/Kernel/KernelA.HPP,614"$
 $LK,"SSF_INACTIVE",A="FL:::/Kernel/KernelA.HPP,221"$
 $LK,"MSF_INACTIVE",A="FL:::/Kernel/KernelA.HPP,205"$
-$LK,"ATA_READ_MULTI",A="FL:::/Kernel/KernelA.HPP,2241"$
+$LK,"ATA_READ_MULTI",A="FL:::/Kernel/KernelA.HPP,2260"$
 $LK,"c32_edx",A="FL:::/Kernel/PCIBIOS.CPP.Z,155"$
-$LK,"FUf_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,2570"$
-$LK,"CAOTBinBlk",A="FL:::/Kernel/KernelA.HPP,1778"$
-$LK,"DOCEf_HAS_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,1091"$
+$LK,"FUf_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,2589"$
+$LK,"CAOTBinBlk",A="FL:::/Kernel/KernelA.HPP,1797"$
+$LK,"DOCEf_HAS_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,1095"$
 $LK,"KernelMain",A="FL:::/Kernel/KEnd.CPP.Z,131",BI=5$
 $LK,"KbdCmdSend",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,24",BI=6$
 $LK,"_D3_NORM_SQR",A="FL:::/Kernel/KMathA.CPP.Z,22"$
-$LK,"TTS_CUR_LEX",A="FL:::/Kernel/KernelA.HPP,3250"$
-$LK,"RS_ATTR_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,2513"$
-$LK,"CCf_USE_LAST_U16",A="FL:::/Kernel/KernelA.HPP,2133"$
-$LK,"CDocEntry",A="FL:::/Kernel/KernelA.HPP,1171"$
-$LK,"CAOT",A="FL:::/Kernel/KernelA.HPP,1974"$
-$LK,"SVCf_DISPATCHED",A="FL:::/Kernel/KernelA.HPP,3156"$
-$LK,"RLF_32BIT",A="FL:::/Kernel/KernelA.HPP,455"$
-$LK,"RLF_16BIT",A="FL:::/Kernel/KernelA.HPP,453"$
-$LK,"RLf_32BIT",A="FL:::/Kernel/KernelA.HPP,436"$
-$LK,"RLf_16BIT",A="FL:::/Kernel/KernelA.HPP,434"$
+$LK,"TTS_CUR_LEX",A="FL:::/Kernel/KernelA.HPP,3269"$
+$LK,"RS_ATTR_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,2532"$
+$LK,"CCf_USE_LAST_U16",A="FL:::/Kernel/KernelA.HPP,2153"$
+$LK,"CDocEntry",A="FL:::/Kernel/KernelA.HPP,1177"$
+$LK,"CAOT",A="FL:::/Kernel/KernelA.HPP,1994"$
+$LK,"SVCf_DISPATCHED",A="FL:::/Kernel/KernelA.HPP,3175"$
+$LK,"RLF_32BIT",A="FL:::/Kernel/KernelA.HPP,456"$
+$LK,"RLF_16BIT",A="FL:::/Kernel/KernelA.HPP,454"$
+$LK,"RLf_32BIT",A="FL:::/Kernel/KernelA.HPP,437"$
+$LK,"RLf_16BIT",A="FL:::/Kernel/KernelA.HPP,435"$
 $LK,"BreakUnlock",A="FL:::/Kernel/KExcept.CPP.Z,142",BI=7$
-$LK,"DOCT_BACKGROUND",A="FL:::/Kernel/KernelA.HPP,909"$
-$LK,"DOCT_FOREGROUND",A="FL:::/Kernel/KernelA.HPP,908"$
+$LK,"DOCT_BACKGROUND",A="FL:::/Kernel/KernelA.HPP,911"$
+$LK,"DOCT_FOREGROUND",A="FL:::/Kernel/KernelA.HPP,910"$
 $LK,"CGDT",A="FL:::/Kernel/KernelA.HPP,333"$
-$LK,"TSF_SAME_SONG",A="FL:::/Kernel/KernelA.HPP,3220"$
-$LK,"ICF_PUSH_CMP",A="FL:::/Kernel/KernelA.HPP,1591"$
-$LK,"MLF_NO_UNUSED_WARN",A="FL:::/Kernel/KernelA.HPP,774"$
+$LK,"TSF_SAME_SONG",A="FL:::/Kernel/KernelA.HPP,3239"$
+$LK,"ICF_PUSH_CMP",A="FL:::/Kernel/KernelA.HPP,1605"$
+$LK,"MLF_NO_UNUSED_WARN",A="FL:::/Kernel/KernelA.HPP,775"$
 $LK,"I_MP_CRASH",A="FL:::/Kernel/KernelA.HPP,292"$
-$LK,"MEM_HEAP_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2850"$
+$LK,"MEM_HEAP_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2869"$
 $LK,"INVALID_PTR",A="FL:::/Kernel/KernelA.HPP,38"$
-$LK,"RECALCt_NORMAL",A="FL:::/Kernel/KernelA.HPP,1335"$
+$LK,"RECALCt_NORMAL",A="FL:::/Kernel/KernelA.HPP,1341"$
 $LK,"ATAInit",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,303",BI=8$
 $LK,"HashDefineLstAdd",A="FL:::/Kernel/KHashB.CPP.Z,206",BI=9$
 $LK,"StrUtil",A="FL:::/Kernel/StrA.CPP.Z,524",BI=10$
 $LK,"LstMatch",A="FL:::/Kernel/StrA.CPP.Z,421",BI=11$
 $LK,"IET_REL_I32",A="FL:::/Kernel/KernelA.HPP,398"$
 $LK,"IET_REL_I16",A="FL:::/Kernel/KernelA.HPP,396"$
-$LK,"CPrsStk",A="FL:::/Kernel/KernelA.HPP,1658"$
-$LK,"CCmpCtrl",A="FL:::/Kernel/KernelA.HPP,2143"$
+$LK,"CPrsStk",A="FL:::/Kernel/KernelA.HPP,1676"$
+$LK,"CCmpCtrl",A="FL:::/Kernel/KernelA.HPP,2163"$
 $LK,"ATAWBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,579",BI=12$
-$LK,"CCPU",A="FL:::/Kernel/KernelA.HPP,3418"$
+$LK,"CCPU",A="FL:::/Kernel/KernelA.HPP,3437"$
 $LK,"c32_esi",A="FL:::/Kernel/PCIBIOS.CPP.Z,156"$
-$LK,"CCF_JUST_LOAD",A="FL:::/Kernel/KernelA.HPP,2109"$
+$LK,"CCF_JUST_LOAD",A="FL:::/Kernel/KernelA.HPP,2129"$
 $LK,"LDF_JUST_LOAD",A="FL:::/Kernel/KernelA.HPP,366"$
 $LK,"SYS_CACHE_LINE_WIDTH",A="FL:::/Kernel/KStart.CPP.Z,229"$
-$LK,"CMF_I16_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1679"$
+$LK,"CMF_I16_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1697"$
 $LK,"FramePtrSet",A="FL:::/Kernel/KHashB.CPP.Z,230",BI=13$
-$LK,"CCf_PASS_TRACE_PRESENT",A="FL:::/Kernel/KernelA.HPP,2114"$
-$LK,"CMF_U16_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1680"$
+$LK,"CCf_PASS_TRACE_PRESENT",A="FL:::/Kernel/KernelA.HPP,2134"$
+$LK,"CMF_U16_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1698"$
 $LK,"_STRICMP",A="FL:::/Kernel/StrA.CPP.Z,117"$
 $LK,"IET_REL_I64",A="FL:::/Kernel/KernelA.HPP,400"$
-$LK,"CFAT32Boot",A="FL:::/Kernel/KernelA.HPP,2312"$
-$LK,"DOCEF_NO_CLICK_ON",A="FL:::/Kernel/KernelA.HPP,1016"$
-$LK,"FILEMASK_TXT",A="FL:::/Kernel/KernelA.HPP,2268"$
-$LK,"TK_EOF",A="FL:::/Kernel/KernelA.HPP,2045"$
+$LK,"CFAT32Boot",A="FL:::/Kernel/KernelA.HPP,2331"$
+$LK,"DOCEF_NO_CLICK_ON",A="FL:::/Kernel/KernelA.HPP,1018"$
+$LK,"FILEMASK_TXT",A="FL:::/Kernel/KernelA.HPP,2287"$
+$LK,"TK_EOF",A="FL:::/Kernel/KernelA.HPP,2065"$
 $LK,"SPF_NEG",A="FL:::/Kernel/StrPrint.CPP.Z,10"$
-$LK,"CWinScroll",A="FL:::/Kernel/KernelA.HPP,3071"$
-$LK,"DOCEf_NO_CLICK_ON",A="FL:::/Kernel/KernelA.HPP,1100"$
-$LK,"ARf_FLOODFILL",A="FL:::/Kernel/KernelA.HPP,3872"$
-$LK,"ICF_USE_F64",A="FL:::/Kernel/KernelA.HPP,1578"$
+$LK,"CWinScroll",A="FL:::/Kernel/KernelA.HPP,3090"$
+$LK,"DOCEf_NO_CLICK_ON",A="FL:::/Kernel/KernelA.HPP,1104"$
+$LK,"ARf_FLOODFILL",A="FL:::/Kernel/KernelA.HPP,3891"$
+$LK,"ICF_USE_F64",A="FL:::/Kernel/KernelA.HPP,1593"$
 $LK,"MemPagesNotPresentMark",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,70",BI=14$
-$LK,"CH_BACKSPACE",A="FL:::/Kernel/KernelA.HPP,3488"$
+$LK,"CH_BACKSPACE",A="FL:::/Kernel/KernelA.HPP,3507"$
 $LK,"FloorI64",A="FL:::/Kernel/KMathB.CPP.Z,52",BI=15$
-$LK,"SC_BACKSPACE",A="FL:::/Kernel/KernelA.HPP,3534"$
-$LK,"FUf_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,2569"$
-$LK,"GVF_ARRAY",A="FL:::/Kernel/KernelA.HPP,866"$
+$LK,"SC_BACKSPACE",A="FL:::/Kernel/KernelA.HPP,3553"$
+$LK,"FUf_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,2588"$
+$LK,"GVF_ARRAY",A="FL:::/Kernel/KernelA.HPP,867"$
 $LK,"DirEntryCompareCluster",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,84",BI=16$
 $LK,"KbdCmdFlush",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,45",BI=17$
-$LK,"CFPU",A="FL:::/Kernel/KernelA.HPP,3143"$
-$LK,"TASKf_IDLE",A="FL:::/Kernel/KernelA.HPP,3256"$
-$LK,"CDIR_SIZE",A="FL:::/Kernel/KernelA.HPP,2541"$
-$LK,"ARGT_UIMM32",A="FL:::/Kernel/KernelA.HPP,1868"$
-$LK,"ARGT_UIMM16",A="FL:::/Kernel/KernelA.HPP,1867"$
+$LK,"CFPU",A="FL:::/Kernel/KernelA.HPP,3162"$
+$LK,"TASKf_IDLE",A="FL:::/Kernel/KernelA.HPP,3275"$
+$LK,"CDIR_SIZE",A="FL:::/Kernel/KernelA.HPP,2560"$
+$LK,"ARGT_UIMM32",A="FL:::/Kernel/KernelA.HPP,1887"$
+$LK,"ARGT_UIMM16",A="FL:::/Kernel/KernelA.HPP,1886"$
 $LK,"PCIWriteU8",A="FL:::/Kernel/PCIBIOS.CPP.Z,220",BI=18$
 $LK,"DefinePrint",A="FL:::/Kernel/KDefine.CPP.Z,90",BI=19$
 $LK,"FifoI64Del",A="FL:::/Kernel/KDataTypes.CPP.Z,252",BI=20$
-$LK,"CDocUndo",A="FL:::/Kernel/KernelA.HPP,1323"$
-$LK,"ROPB_XOR",A="FL:::/Kernel/KernelA.HPP,2905"$
-$LK,"FUF_JUST_FILES",A="FL:::/Kernel/KernelA.HPP,2584"$
-$LK,"ATA_SET_MAX",A="FL:::/Kernel/KernelA.HPP,2239"$
-$LK,"IEF_DFT",A="FL:::/Kernel/KernelA.HPP,1710"$
-$LK,"RT_F32",A="FL:::/Kernel/KernelA.HPP,1554"$
+$LK,"CDocUndo",A="FL:::/Kernel/KernelA.HPP,1329"$
+$LK,"ROPB_XOR",A="FL:::/Kernel/KernelA.HPP,2924"$
+$LK,"FUF_JUST_FILES",A="FL:::/Kernel/KernelA.HPP,2603"$
+$LK,"ATA_SET_MAX",A="FL:::/Kernel/KernelA.HPP,2258"$
+$LK,"IEF_DFT",A="FL:::/Kernel/KernelA.HPP,1728"$
+$LK,"RT_F32",A="FL:::/Kernel/KernelA.HPP,1560"$
 $LK,"Let2BlkDev",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,131",BI=21$
-$LK,"FUf_JUST_FILES",A="FL:::/Kernel/KernelA.HPP,2558"$
-$LK,"ARGT_M1632",A="FL:::/Kernel/KernelA.HPP,1886"$
-$LK,"DOF_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1205"$
-$LK,"DOCEF_LEFT_X",A="FL:::/Kernel/KernelA.HPP,981"$
+$LK,"FUf_JUST_FILES",A="FL:::/Kernel/KernelA.HPP,2577"$
+$LK,"ARGT_M1632",A="FL:::/Kernel/KernelA.HPP,1905"$
+$LK,"DOF_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1211"$
+$LK,"DOCEF_LEFT_X",A="FL:::/Kernel/KernelA.HPP,983"$
 $LK,"RFLAGf_AUX_CARRY",A="FL:::/Kernel/KernelA.HPP,307"$
-$LK,"DEF_PROCESSED",A="FL:::/Kernel/KernelA.HPP,2524"$
-$LK,"WIf_FOCUS_TASK_IP_L_D",A="FL:::/Kernel/KernelA.HPP,1441"$
-$LK,"DOCEf_LEFT_X",A="FL:::/Kernel/KernelA.HPP,1067"$
+$LK,"DEF_PROCESSED",A="FL:::/Kernel/KernelA.HPP,2543"$
+$LK,"WIf_FOCUS_TASK_IP_L_D",A="FL:::/Kernel/KernelA.HPP,1447"$
+$LK,"DOCEf_LEFT_X",A="FL:::/Kernel/KernelA.HPP,1071"$
 $LK,"Mem64DevFree",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,158",BI=22$
 $LK,"Mem32DevFree",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,124",BI=23$
-$LK,"ARGT_UIMM64",A="FL:::/Kernel/KernelA.HPP,1869"$
-$LK,"DOCf_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1293"$
-$LK,"DOCF_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1257"$
+$LK,"ARGT_UIMM64",A="FL:::/Kernel/KernelA.HPP,1888"$
+$LK,"DOCf_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1299"$
+$LK,"DOCF_MIN_SIZE",A="FL:::/Kernel/KernelA.HPP,1263"$
 $LK,"ATARepEntry",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,90",BI=24$
-$LK,"BLUE",A="FL:::/Kernel/KernelA.HPP,2930"$
+$LK,"BLUE",A="FL:::/Kernel/KernelA.HPP,2949"$
 $LK,"sys_ctrl_alt_flags",A="FL:::/Kernel/KernelB.HPP,209"$
 $LK,"D3Div",A="FL:::/Kernel/KernelB.HPP,158"$
-$LK,"RT_F64",A="FL:::/Kernel/KernelA.HPP,1556"$
+$LK,"RT_F64",A="FL:::/Kernel/KernelA.HPP,1562"$
 $LK,"EdLite",A="FL:::/Kernel/EdLite.CPP.Z,58",BI=25$
-$LK,"MBR_PT_FAT12",A="FL:::/Kernel/KernelA.HPP,2671"$
+$LK,"MBR_PT_FAT12",A="FL:::/Kernel/KernelA.HPP,2690"$
 $LK,"FramePtr",A="FL:::/Kernel/KHashB.CPP.Z,215",BI=26$
-$LK,"ARGT_RM8",A="FL:::/Kernel/KernelA.HPP,1876"$
-$LK,"ROPF_PROBABILITY_DITHER",A="FL:::/Kernel/KernelA.HPP,2925"$
-$LK,"DOCEF_HAS_BORDER",A="FL:::/Kernel/KernelA.HPP,996"$
-$LK,"TK_EQU_EQU",A="FL:::/Kernel/KernelA.HPP,2060"$
-$LK,"RT_I32",A="FL:::/Kernel/KernelA.HPP,1549"$
-$LK,"RT_I16",A="FL:::/Kernel/KernelA.HPP,1547"$
-$LK,"DOCEf_HAS_BORDER",A="FL:::/Kernel/KernelA.HPP,1082"$
+$LK,"ARGT_RM8",A="FL:::/Kernel/KernelA.HPP,1895"$
+$LK,"ROPF_PROBABILITY_DITHER",A="FL:::/Kernel/KernelA.HPP,2944"$
+$LK,"RTF_UNSIGNED",A="FL:::/Kernel/KernelA.HPP,1565"$
+$LK,"DOCEF_HAS_BORDER",A="FL:::/Kernel/KernelA.HPP,998"$
+$LK,"TK_EQU_EQU",A="FL:::/Kernel/KernelA.HPP,2080"$
+$LK,"RT_I32",A="FL:::/Kernel/KernelA.HPP,1555"$
+$LK,"RT_I16",A="FL:::/Kernel/KernelA.HPP,1553"$
+$LK,"DOCEf_HAS_BORDER",A="FL:::/Kernel/KernelA.HPP,1086"$
 $LK,"SysTry",A="FL:::/Kernel/KExcept.CPP.Z,62",BI=27$
-$LK,"POP_REGS",A="FL:::/Kernel/KernelA.HPP,1750"$
-$LK,"IEF_OP_SIZE32",A="FL:::/Kernel/KernelA.HPP,1707"$
-$LK,"IEF_OP_SIZE16",A="FL:::/Kernel/KernelA.HPP,1706"$
-$LK,"HTT_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,683"$
-$LK,"BD_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2636"$
-$LK,"DOCEf_ESC",A="FL:::/Kernel/KernelA.HPP,1079"$
+$LK,"POP_REGS",A="FL:::/Kernel/KernelA.HPP,1768"$
+$LK,"IEF_OP_SIZE32",A="FL:::/Kernel/KernelA.HPP,1725"$
+$LK,"IEF_OP_SIZE16",A="FL:::/Kernel/KernelA.HPP,1724"$
+$LK,"HTT_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,684"$
+$LK,"BD_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2655"$
+$LK,"DOCEf_ESC",A="FL:::/Kernel/KernelA.HPP,1083"$
 $LK,"ScanCode2Char",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,136",BI=28$
-$LK,"NUM_DRVS",A="FL:::/Kernel/KernelA.HPP,2687"$
-$LK,"FSt_ISO13346",A="FL:::/Kernel/KernelA.HPP,2663"$
+$LK,"NUM_DRVS",A="FL:::/Kernel/KernelA.HPP,2706"$
+$LK,"FSt_ISO13346",A="FL:::/Kernel/KernelA.HPP,2682"$
 $LK,"_D3_ADD",A="FL:::/Kernel/KMathA.CPP.Z,131"$
-$LK,"SYSf_CTRL_ALT_TAB",A="FL:::/Kernel/KernelA.HPP,616"$
+$LK,"SYSf_CTRL_ALT_TAB",A="FL:::/Kernel/KernelA.HPP,617"$
 $LK,"RCache",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,119",BI=29$
-$LK,"DOC_ATTR_DFT_TEXT",A="FL:::/Kernel/KernelA.HPP,1124"$
+$LK,"DOC_ATTR_DFT_TEXT",A="FL:::/Kernel/KernelA.HPP,1130"$
 $LK,"D3Dot",A="FL:::/Kernel/KernelB.HPP,160"$
-$LK,"CSrvCmd",A="FL:::/Kernel/KernelA.HPP,3167"$
-$LK,"ARGT_RAX",A="FL:::/Kernel/KernelA.HPP,1899"$
-$LK,"EDf_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1245"$
-$LK,"EDF_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1239"$
-$LK,"DOCF_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1260"$
+$LK,"CSrvCmd",A="FL:::/Kernel/KernelA.HPP,3186"$
+$LK,"ARGT_RAX",A="FL:::/Kernel/KernelA.HPP,1918"$
+$LK,"EDf_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1251"$
+$LK,"EDF_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1245"$
+$LK,"DOCF_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1266"$
 $LK,"KbdMsgsQue",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,467",BI=30$
-$LK,"ARGT_ST0",A="FL:::/Kernel/KernelA.HPP,1912"$
-$LK,"RT_I64",A="FL:::/Kernel/KernelA.HPP,1551"$
+$LK,"TK_INT",A="FL:::/Kernel/KernelA.HPP,2071"$
+$LK,"ARGT_ST0",A="FL:::/Kernel/KernelA.HPP,1931"$
+$LK,"RT_I64",A="FL:::/Kernel/KernelA.HPP,1557"$
 $LK,"FifoI64Cnt",A="FL:::/Kernel/KDataTypes.CPP.Z,312",BI=31$
-$LK,"NUM_PROGRESS_BARS",A="FL:::/Kernel/KernelA.HPP,3881"$
-$LK,"SUF_SAFE_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3775"$
-$LK,"RWF_SHOW_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3574"$
-$LK,"_CFG_HEAP_DBG",A="FL:::/Kernel/KernelA.HPP,2768"$
-$LK,"HTt_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,653"$
+$LK,"NUM_PROGRESS_BARS",A="FL:::/Kernel/KernelA.HPP,3900"$
+$LK,"SUF_SAFE_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3794"$
+$LK,"RWF_SHOW_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3593"$
+$LK,"_CFG_HEAP_DBG",A="FL:::/Kernel/KernelA.HPP,2787"$
+$LK,"HTt_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,654"$
 $LK,"RedSeaFileWrite",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,509",BI=32$
 $LK,"AutoStr",A="FL:::/Kernel/SrvCmd.CPP.Z,465",BI=33$
 $LK,"CPatchTableAbsAddr",A="FL:::/Kernel/KernelA.HPP,381"$
 $LK,"DVDImageRead",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,1",BI=34$
-$LK,"FSt_ISO13490",A="FL:::/Kernel/KernelA.HPP,2662"$
-$LK,"IET_CODE_HEAP",A="FL:::/Kernel/KernelA.HPP,408"$
-$LK,"ROPB_MONO",A="FL:::/Kernel/KernelA.HPP,2907"$
-$LK,"CAsmNum2",A="FL:::/Kernel/KernelA.HPP,1805"$
+$LK,"FSt_ISO13490",A="FL:::/Kernel/KernelA.HPP,2681"$
+$LK,"IET_CODE_HEAP",A="FL:::/Kernel/KernelA.HPP,409"$
+$LK,"ROPB_MONO",A="FL:::/Kernel/KernelA.HPP,2926"$
+$LK,"CAsmNum2",A="FL:::/Kernel/KernelA.HPP,1824"$
 $LK,"AutoFile",A="FL:::/Kernel/SrvCmd.CPP.Z,475",BI=35$
 $LK,"AMAlloc",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,390",BI=36$
-$LK,"ICF_R_TO_INT",A="FL:::/Kernel/KernelA.HPP,1573"$
-$LK,"DOCEf_LEN",A="FL:::/Kernel/KernelA.HPP,1046"$
+$LK,"ICF_R_TO_INT",A="FL:::/Kernel/KernelA.HPP,1588"$
+$LK,"DOCEf_LEN",A="FL:::/Kernel/KernelA.HPP,1050"$
 $LK,"B",A="FL:::/Kernel/KDbg.CPP.Z,407",BI=37$
 $LK,"chars_bmp_dec_numeric",A="FL:::/Kernel/StrA.CPP.Z,350"$
 $LK,"D3Equ",A="FL:::/Kernel/KernelB.HPP,161"$
-$LK,"FF_NEW_FILE",A="FL:::/Kernel/KernelA.HPP,2752"$
-$LK,"CMT_STR_CONST",A="FL:::/Kernel/KernelA.HPP,1669"$
-$LK,"WIf_FOCUS_TASK_IP_R_D",A="FL:::/Kernel/KernelA.HPP,1443"$
+$LK,"FF_NEW_FILE",A="FL:::/Kernel/KernelA.HPP,2771"$
+$LK,"CMT_STR_CONST",A="FL:::/Kernel/KernelA.HPP,1687"$
+$LK,"WIf_FOCUS_TASK_IP_R_D",A="FL:::/Kernel/KernelA.HPP,1449"$
 $LK,"D",A="FL:::/Kernel/KDbg.CPP.Z,172",BI=38$
 $LK,"StrPrint",A="FL:::/Kernel/StrPrint.CPP.Z,893",BI=39$
 $LK,"E",A="FL:::/Kernel/FunSeg.CPP.Z,270",BI=40$
-$LK,"ICF_A2_TO_INT",A="FL:::/Kernel/KernelA.HPP,1577"$
-$LK,"CEdFileName",A="FL:::/Kernel/KernelA.HPP,1230"$
-$LK,"DOCT_LEFT_MARGIN",A="FL:::/Kernel/KernelA.HPP,903"$
+$LK,"ICF_A2_TO_INT",A="FL:::/Kernel/KernelA.HPP,1592"$
+$LK,"CEdFileName",A="FL:::/Kernel/KernelA.HPP,1236"$
+$LK,"DOCT_LEFT_MARGIN",A="FL:::/Kernel/KernelA.HPP,905"$
 $LK,"_STRNCMP",A="FL:::/Kernel/StrA.CPP.Z,154"$
 $LK,"G",A="FL:::/Kernel/KDbg.CPP.Z,444",BI=41$
 $LK,"ScaleIndent",A="FL:::/Kernel/StrB.CPP.Z,35",BI=42$
-$LK,"IET_ABS_ADDR",A="FL:::/Kernel/KernelA.HPP,407"$
+$LK,"IET_ABS_ADDR",A="FL:::/Kernel/KernelA.HPP,408"$
 $LK,"PressAKey",A="FL:::/Kernel/StrB.CPP.Z,103",BI=43$
-$LK,"DOF_WIN_MAX",A="FL:::/Kernel/KernelA.HPP,1208"$
-$LK,"CCodeCtrl",A="FL:::/Kernel/KernelA.HPP,1993"$
+$LK,"DOF_WIN_MAX",A="FL:::/Kernel/KernelA.HPP,1214"$
+$LK,"CCodeCtrl",A="FL:::/Kernel/KernelA.HPP,2013"$
 $LK,"Char2ScanCode",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,100",BI=44$
 $LK,"Mem32DevInit",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,30",BI=45$
 $LK,"_BIT_FIELD_OR_U32",A="FL:::/Kernel/KUtils.CPP.Z,154"$
-$LK,"DOCf_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1296"$
+$LK,"DOCf_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1302"$
 $LK,"SPutChar",A="FL:::/Kernel/StrPrint.CPP.Z,14",BI=46$
 $LK,"TaskQueIns",A="FL:::/Kernel/Sched.CPP.Z,298",BI=47$
-$LK,"CYAN",A="FL:::/Kernel/KernelA.HPP,2932"$
-$LK,"TK_SUPERSCRIPT",A="FL:::/Kernel/KernelA.HPP,2046"$
-$LK,"ICF_PUSH_RESULT",A="FL:::/Kernel/KernelA.HPP,1586"$
+$LK,"CYAN",A="FL:::/Kernel/KernelA.HPP,2951"$
+$LK,"TK_SUPERSCRIPT",A="FL:::/Kernel/KernelA.HPP,2066"$
+$LK,"ICF_PUSH_RESULT",A="FL:::/Kernel/KernelA.HPP,1600"$
 $LK,"FileNameTempTxt",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,266",BI=48$
-$LK,"RS_ATTR_DELETED",A="FL:::/Kernel/KernelA.HPP,2511"$
-$LK,"CMT_ASM_LABEL",A="FL:::/Kernel/KernelA.HPP,1667"$
-$LK,"RLF_64BIT",A="FL:::/Kernel/KernelA.HPP,457"$
-$LK,"RLf_64BIT",A="FL:::/Kernel/KernelA.HPP,438"$
+$LK,"RS_ATTR_DELETED",A="FL:::/Kernel/KernelA.HPP,2530"$
+$LK,"CMT_ASM_LABEL",A="FL:::/Kernel/KernelA.HPP,1685"$
+$LK,"RLF_64BIT",A="FL:::/Kernel/KernelA.HPP,458"$
+$LK,"RLf_64BIT",A="FL:::/Kernel/KernelA.HPP,439"$
 $LK,"RedSeaFreeLstBuild",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,24",BI=49$
-$LK,"TK_SHL",A="FL:::/Kernel/KernelA.HPP,2058"$
-$LK,"DOCf_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,1299"$
-$LK,"DOCF_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,1263"$
-$LK,"CH_CTRLA",A="FL:::/Kernel/KernelA.HPP,3461"$
-$LK,"CHashGlblVar",A="FL:::/Kernel/KernelA.HPP,868"$
-$LK,"CH_CTRLB",A="FL:::/Kernel/KernelA.HPP,3462"$
-$LK,"DOCEf_TAG",A="FL:::/Kernel/KernelA.HPP,1045"$
+$LK,"TK_SHL",A="FL:::/Kernel/KernelA.HPP,2078"$
+$LK,"DOCf_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,1305"$
+$LK,"DOCF_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,1269"$
+$LK,"CH_CTRLA",A="FL:::/Kernel/KernelA.HPP,3480"$
+$LK,"CHashGlblVar",A="FL:::/Kernel/KernelA.HPP,869"$
+$LK,"CH_CTRLB",A="FL:::/Kernel/KernelA.HPP,3481"$
+$LK,"DOCEf_TAG",A="FL:::/Kernel/KernelA.HPP,1049"$
 $LK,"S",A="FL:::/Kernel/KDbg.CPP.Z,479",BI=50$
-$LK,"VGAP_INDEX",A="FL:::/Kernel/KernelA.HPP,3706"$
-$LK,"CH_CTRLC",A="FL:::/Kernel/KernelA.HPP,3463"$
+$LK,"VGAP_INDEX",A="FL:::/Kernel/KernelA.HPP,3725"$
+$LK,"CH_CTRLC",A="FL:::/Kernel/KernelA.HPP,3482"$
 $LK,"FifoI64Ins",A="FL:::/Kernel/KDataTypes.CPP.Z,258",BI=51$
 $LK,"FloorU64",A="FL:::/Kernel/KMathB.CPP.Z,36",BI=52$
-$LK,"CH_CTRLD",A="FL:::/Kernel/KernelA.HPP,3464"$
-$LK,"DOCF_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1272"$
-$LK,"DOCT_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,913"$
-$LK,"CH_CTRLE",A="FL:::/Kernel/KernelA.HPP,3465"$
-$LK,"BLACK",A="FL:::/Kernel/KernelA.HPP,2929"$
-$LK,"ARGT_STI",A="FL:::/Kernel/KernelA.HPP,1913"$
-$LK,"NUM_REGS",A="FL:::/Kernel/KernelA.HPP,1753"$
-$LK,"DOCf_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1309"$
-$LK,"DOCEf_BOTTOM_Y",A="FL:::/Kernel/KernelA.HPP,1072"$
-$LK,"DOCEF_BOTTOM_Y",A="FL:::/Kernel/KernelA.HPP,986"$
+$LK,"CH_CTRLD",A="FL:::/Kernel/KernelA.HPP,3483"$
+$LK,"DOCF_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1278"$
+$LK,"DOCT_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,915"$
+$LK,"CH_CTRLE",A="FL:::/Kernel/KernelA.HPP,3484"$
+$LK,"BLACK",A="FL:::/Kernel/KernelA.HPP,2948"$
+$LK,"ARGT_STI",A="FL:::/Kernel/KernelA.HPP,1932"$
+$LK,"NUM_REGS",A="FL:::/Kernel/KernelA.HPP,1771"$
+$LK,"DOCf_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1315"$
+$LK,"DOCEf_BOTTOM_Y",A="FL:::/Kernel/KernelA.HPP,1076"$
+$LK,"DOCEF_BOTTOM_Y",A="FL:::/Kernel/KernelA.HPP,988"$
 $LK,"FileNameAbs",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,161",BI=53$
-$LK,"CH_CTRLF",A="FL:::/Kernel/KernelA.HPP,3466"$
-$LK,"TK_SHR",A="FL:::/Kernel/KernelA.HPP,2059"$
+$LK,"CH_CTRLF",A="FL:::/Kernel/KernelA.HPP,3485"$
+$LK,"TK_SHR",A="FL:::/Kernel/KernelA.HPP,2079"$
 $LK,"AutoMountIDE",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,254",BI=54$
-$LK,"CH_CTRLG",A="FL:::/Kernel/KernelA.HPP,3467"$
-$LK,"DOCEF_REMALLOC_DATA",A="FL:::/Kernel/KernelA.HPP,1006"$
+$LK,"CH_CTRLG",A="FL:::/Kernel/KernelA.HPP,3486"$
+$LK,"DOCEF_REMALLOC_DATA",A="FL:::/Kernel/KernelA.HPP,1008"$
 $LK,"_HASH_REM_DEL",A="FL:::/Kernel/KHashA.CPP.Z,208"$
 $LK,"TaskQueRem",A="FL:::/Kernel/Sched.CPP.Z,312",BI=55$
-$LK,"CH_CTRLH",A="FL:::/Kernel/KernelA.HPP,3468"$
-$LK,"CPalindromeU32",A="FL:::/Kernel/KernelA.HPP,2392"$
-$LK,"CPalindromeU16",A="FL:::/Kernel/KernelA.HPP,2387"$
-$LK,"DOCT_CHECK_BOX",A="FL:::/Kernel/KernelA.HPP,924"$
-$LK,"CH_CTRLI",A="FL:::/Kernel/KernelA.HPP,3469"$
+$LK,"CH_CTRLH",A="FL:::/Kernel/KernelA.HPP,3487"$
+$LK,"CPalindromeU32",A="FL:::/Kernel/KernelA.HPP,2411"$
+$LK,"CPalindromeU16",A="FL:::/Kernel/KernelA.HPP,2406"$
+$LK,"DOCT_CHECK_BOX",A="FL:::/Kernel/KernelA.HPP,926"$
+$LK,"CH_CTRLI",A="FL:::/Kernel/KernelA.HPP,3488"$
 $LK,"FifoI64New",A="FL:::/Kernel/KDataTypes.CPP.Z,240",BI=56$
-$LK,"CH_CTRLJ",A="FL:::/Kernel/KernelA.HPP,3470"$
-$LK,"ARGT_XMM128",A="FL:::/Kernel/KernelA.HPP,1922"$
-$LK,"SC_CURSOR_UP",A="FL:::/Kernel/KernelA.HPP,3543"$
-$LK,"CH_CTRLK",A="FL:::/Kernel/KernelA.HPP,3471"$
-$LK,"TASKf_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,3259"$
+$LK,"CH_CTRLJ",A="FL:::/Kernel/KernelA.HPP,3489"$
+$LK,"ARGT_XMM128",A="FL:::/Kernel/KernelA.HPP,1941"$
+$LK,"SC_CURSOR_UP",A="FL:::/Kernel/KernelA.HPP,3562"$
+$LK,"CH_CTRLK",A="FL:::/Kernel/KernelA.HPP,3490"$
+$LK,"TASKf_HAS_SONG",A="FL:::/Kernel/KernelA.HPP,3278"$
 $LK,"RandI32",A="FL:::/Kernel/KMathB.CPP.Z,90",BI=57$
 $LK,"RandI16",A="FL:::/Kernel/KMathB.CPP.Z,74",BI=58$
-$LK,"CH_CTRLL",A="FL:::/Kernel/KernelA.HPP,3472"$
-$LK,"CH_CTRLM",A="FL:::/Kernel/KernelA.HPP,3473"$
-$LK,"ICf_LOCK",A="FL:::/Kernel/KernelA.HPP,1599"$
-$LK,"ICF_LOCK",A="FL:::/Kernel/KernelA.HPP,1598"$
+$LK,"CH_CTRLL",A="FL:::/Kernel/KernelA.HPP,3491"$
+$LK,"CH_CTRLM",A="FL:::/Kernel/KernelA.HPP,3492"$
+$LK,"ICf_LOCK",A="FL:::/Kernel/KernelA.HPP,1613"$
+$LK,"ICF_LOCK",A="FL:::/Kernel/KernelA.HPP,1612"$
 $LK,"PutFileLink",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,163",BI=59$
 $LK,"BreakLock",A="FL:::/Kernel/KExcept.CPP.Z,136",BI=60$
 $LK,"HPET",A="FL:::/Kernel/KernelB.HPP,289"$
 $LK,"CORE0_32BIT_INIT",A="FL:::/Kernel/KStart.CPP.Z,234"$
 $LK,"CORE0_16BIT_INIT",A="FL:::/Kernel/KStart.CPP.Z,56"$
-$LK,"CH_CTRLN",A="FL:::/Kernel/KernelA.HPP,3474"$
-$LK,"BDf_FMT",A="FL:::/Kernel/KernelA.HPP,2628"$
-$LK,"CCF_KEEP_DOT",A="FL:::/Kernel/KernelA.HPP,2111"$
+$LK,"CH_CTRLN",A="FL:::/Kernel/KernelA.HPP,3493"$
+$LK,"BDf_FMT",A="FL:::/Kernel/KernelA.HPP,2647"$
+$LK,"CCF_KEEP_DOT",A="FL:::/Kernel/KernelA.HPP,2131"$
 $LK,"Let2BlkDevType",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,137",BI=61$
-$LK,"CH_CTRLO",A="FL:::/Kernel/KernelA.HPP,3475"$
-$LK,"ARGT_XMM",A="FL:::/Kernel/KernelA.HPP,1918"$
-$LK,"DOCEf_REMALLOC_DATA",A="FL:::/Kernel/KernelA.HPP,1090"$
-$LK,"DOCEf_WIN_REL",A="FL:::/Kernel/KernelA.HPP,1077"$
-$LK,"DOCEF_WIN_REL",A="FL:::/Kernel/KernelA.HPP,991"$
+$LK,"CH_CTRLO",A="FL:::/Kernel/KernelA.HPP,3494"$
+$LK,"ARGT_XMM",A="FL:::/Kernel/KernelA.HPP,1937"$
+$LK,"DOCEf_REMALLOC_DATA",A="FL:::/Kernel/KernelA.HPP,1094"$
+$LK,"DOCEf_WIN_REL",A="FL:::/Kernel/KernelA.HPP,1081"$
+$LK,"DOCEF_WIN_REL",A="FL:::/Kernel/KernelA.HPP,993"$
 $LK,"FifoI64Rem",A="FL:::/Kernel/KDataTypes.CPP.Z,275",BI=62$
 $LK,"_D3_DIV",A="FL:::/Kernel/KMathA.CPP.Z,184"$
-$LK,"CH_CTRLP",A="FL:::/Kernel/KernelA.HPP,3476"$
+$LK,"CH_CTRLP",A="FL:::/Kernel/KernelA.HPP,3495"$
 $LK,"chars_bmp_non_eol",A="FL:::/Kernel/StrA.CPP.Z,396"$
-$LK,"CH_CTRLQ",A="FL:::/Kernel/KernelA.HPP,3477"$
-$LK,"CTSS",A="FL:::/Kernel/KernelA.HPP,3382"$
+$LK,"CH_CTRLQ",A="FL:::/Kernel/KernelA.HPP,3496"$
+$LK,"CTSS",A="FL:::/Kernel/KernelA.HPP,3401"$
 $LK,"FileNameChk",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,239",BI=63$
 $LK,"D3Mul",A="FL:::/Kernel/KernelB.HPP,162"$
-$LK,"CH_CTRLR",A="FL:::/Kernel/KernelA.HPP,3478"$
+$LK,"CH_CTRLR",A="FL:::/Kernel/KernelA.HPP,3497"$
 $LK,"SK_NAME",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,89"$
 $LK,"CtrlAltC",A="FL:::/Kernel/KeyDev.CPP.Z,131",BI=64$
 $LK,"CallerRep",A="FL:::/Kernel/KDbg.CPP.Z,152",BI=65$
-$LK,"CH_CTRLS",A="FL:::/Kernel/KernelA.HPP,3479"$
-$LK,"ROP_EQU",A="FL:::/Kernel/KernelA.HPP,2913"$
-$LK,"DOCEf_LST",A="FL:::/Kernel/KernelA.HPP,1095"$
+$LK,"CH_CTRLS",A="FL:::/Kernel/KernelA.HPP,3498"$
+$LK,"ROP_EQU",A="FL:::/Kernel/KernelA.HPP,2932"$
+$LK,"DOCEf_LST",A="FL:::/Kernel/KernelA.HPP,1099"$
 $LK,"CtrlAltD",A="FL:::/Kernel/KeyDev.CPP.Z,136",BI=66$
 $LK,"RandI64",A="FL:::/Kernel/KMathB.CPP.Z,106",BI=67$
-$LK,"CH_CTRLT",A="FL:::/Kernel/KernelA.HPP,3480"$
-$LK,"MBS_UNUSED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2829"$
-$LK,"CCmpGlbls",A="FL:::/Kernel/KernelA.HPP,2190"$
-$LK,"RT_U32",A="FL:::/Kernel/KernelA.HPP,1550"$
-$LK,"RT_U16",A="FL:::/Kernel/KernelA.HPP,1548"$
-$LK,"CExternUsage",A="FL:::/Kernel/KernelA.HPP,812"$
+$LK,"CH_CTRLT",A="FL:::/Kernel/KernelA.HPP,3499"$
+$LK,"MBS_UNUSED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2848"$
+$LK,"CCmpGlbls",A="FL:::/Kernel/KernelA.HPP,2210"$
+$LK,"RT_U32",A="FL:::/Kernel/KernelA.HPP,1556"$
+$LK,"RT_U16",A="FL:::/Kernel/KernelA.HPP,1554"$
+$LK,"CExternUsage",A="FL:::/Kernel/KernelA.HPP,813"$
 $LK,"FAT32FreeClusters",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,413",BI=68$
 $LK,"CtrlAltE",A="FL:::/Kernel/KeyDev.CPP.Z,146",BI=69$
-$LK,"CH_CTRLU",A="FL:::/Kernel/KernelA.HPP,3481"$
-$LK,"ARGT_MM32",A="FL:::/Kernel/KernelA.HPP,1916"$
-$LK,"DOCSS_COMMENT",A="FL:::/Kernel/KernelA.HPP,1121"$
+$LK,"CH_CTRLU",A="FL:::/Kernel/KernelA.HPP,3500"$
+$LK,"ARGT_MM32",A="FL:::/Kernel/KernelA.HPP,1935"$
+$LK,"DOCSS_COMMENT",A="FL:::/Kernel/KernelA.HPP,1127"$
 $LK,"CtrlAltF",A="FL:::/Kernel/KeyDev.CPP.Z,151",BI=70$
 $LK,"ip_grid",A="FL:::/Kernel/KGlbls.CPP.Z,23"$
-$LK,"CH_CTRLV",A="FL:::/Kernel/KernelA.HPP,3482"$
-$LK,"CCodeMisc",A="FL:::/Kernel/KernelA.HPP,1684"$
-$LK,"DOF_DONT_TEXT_ATTR",A="FL:::/Kernel/KernelA.HPP,1209"$
-$LK,"DOCEf_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1038"$
-$LK,"DOCEF_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1032"$
+$LK,"CH_CTRLV",A="FL:::/Kernel/KernelA.HPP,3501"$
+$LK,"CCodeMisc",A="FL:::/Kernel/KernelA.HPP,1702"$
+$LK,"DOF_DONT_TEXT_ATTR",A="FL:::/Kernel/KernelA.HPP,1215"$
+$LK,"DOCEf_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1042"$
+$LK,"DOCEF_WORD_WRAP",A="FL:::/Kernel/KernelA.HPP,1036"$
 $LK,"DrvFATBlkSet",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,93",BI=71$
 $LK,"ISODrvInit",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,5",BI=72$
-$LK,"CH_CTRLW",A="FL:::/Kernel/KernelA.HPP,3483"$
-$LK,"FFB_NEXT_BLK",A="FL:::/Kernel/KernelA.HPP,2749"$
+$LK,"CH_CTRLW",A="FL:::/Kernel/KernelA.HPP,3502"$
+$LK,"FFB_NEXT_BLK",A="FL:::/Kernel/KernelA.HPP,2768"$
 $LK,"ISO1FromName",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,88",BI=73$
 $LK,"MPIntAll",A="FL:::/Kernel/MultiProc.CPP.Z,149",BI=74$
 $LK,"TaskContextRestore",A="FL:::/Kernel/Sched.CPP.Z,294"$
 $LK,"SYS_INIT_MEM",A="FL:::/Kernel/Mem/PageTables.CPP.Z,6"$
-$LK,"SCf_ALT",A="FL:::/Kernel/KernelA.HPP,3503"$
-$LK,"CH_CTRLX",A="FL:::/Kernel/KernelA.HPP,3484"$
-$LK,"CH_CTRLY",A="FL:::/Kernel/KernelA.HPP,3485"$
-$LK,"CDoc",A="FL:::/Kernel/KernelA.HPP,1344"$
+$LK,"SCf_ALT",A="FL:::/Kernel/KernelA.HPP,3522"$
+$LK,"CH_CTRLX",A="FL:::/Kernel/KernelA.HPP,3503"$
+$LK,"CH_CTRLY",A="FL:::/Kernel/KernelA.HPP,3504"$
+$LK,"CDoc",A="FL:::/Kernel/KernelA.HPP,1350"$
 $LK,"MemSetU8",A="FL:::/Kernel/KernelB.HPP,185"$
 $LK,"_FCLEX",A="FL:::/Kernel/KMathA.CPP.Z,646"$
 $LK,"_D3_DOT",A="FL:::/Kernel/KMathA.CPP.Z,113"$
-$LK,"ARf_CSPRITE_INS_CLIPBOARD",A="FL:::/Kernel/KernelA.HPP,3873"$
-$LK,"CH_CTRLZ",A="FL:::/Kernel/KernelA.HPP,3486"$
-$LK,"CHashGeneric",A="FL:::/Kernel/KernelA.HPP,729"$
+$LK,"ARf_CSPRITE_INS_CLIPBOARD",A="FL:::/Kernel/KernelA.HPP,3892"$
+$LK,"CH_CTRLZ",A="FL:::/Kernel/KernelA.HPP,3505"$
+$LK,"CHashGeneric",A="FL:::/Kernel/KernelA.HPP,730"$
 $LK,"SYS_FIND_PCIBIOS_SERVICE_DIR",A="FL:::/Kernel/PCIBIOS.CPP.Z,8"$
-$LK,"CTRLF_CLICKED",A="FL:::/Kernel/KernelA.HPP,3067"$
-$LK,"HTF_RESOLVE",A="FL:::/Kernel/KernelA.HPP,703"$
+$LK,"CTRLF_CLICKED",A="FL:::/Kernel/KernelA.HPP,3086"$
+$LK,"HTF_RESOLVE",A="FL:::/Kernel/KernelA.HPP,704"$
 $LK,"BCnt",A="FL:::/Kernel/KMisc.CPP.Z,39",BI=75$
 $LK,"Mem64DevAlloc",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,141",BI=76$
 $LK,"Mem32DevAlloc",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,91",BI=77$
-$LK,"RT_U64",A="FL:::/Kernel/KernelA.HPP,1553"$
-$LK,"DOCT_TAB",A="FL:::/Kernel/KernelA.HPP,899"$
-$LK,"HTT_FRAME_PTR",A="FL:::/Kernel/KernelA.HPP,694"$
-$LK,"HTt_FRAME_PTR",A="FL:::/Kernel/KernelA.HPP,664"$
+$LK,"RT_U64",A="FL:::/Kernel/KernelA.HPP,1559"$
+$LK,"DOCT_TAB",A="FL:::/Kernel/KernelA.HPP,901"$
+$LK,"HTT_FRAME_PTR",A="FL:::/Kernel/KernelA.HPP,695"$
+$LK,"HTt_FRAME_PTR",A="FL:::/Kernel/KernelA.HPP,665"$
 $LK,"ISO1FilesFind",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,233",BI=78$
 $LK,"CtrlAltM",A="FL:::/Kernel/KeyDev.CPP.Z,156",BI=79$
 $LK,"DefineLstLoad",A="FL:::/Kernel/KDefine.CPP.Z,13",BI=80$
 $LK,"SYS_EM64T",A="FL:::/Kernel/KStart.CPP.Z,318"$
-$LK,"ARGT_MM64",A="FL:::/Kernel/KernelA.HPP,1917"$
-$LK,"DOCEf_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,1063"$
-$LK,"DOCEF_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,977"$
+$LK,"ARGT_MM64",A="FL:::/Kernel/KernelA.HPP,1936"$
+$LK,"DOCEf_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,1067"$
+$LK,"DOCEF_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,979"$
 $LK,"RFLAGf_DIR",A="FL:::/Kernel/KernelA.HPP,312"$
 $LK,"ClusterNumNext",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,1",BI=81$
 $LK,"KbdMouseEvtTime",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,486",BI=82$
 $LK,"ip_last",A="FL:::/Kernel/KGlbls.CPP.Z,24"$
-$LK,"CDirEntry",A="FL:::/Kernel/KernelA.HPP,2529"$
-$LK,"TK_STR",A="FL:::/Kernel/KernelA.HPP,2050"$
-$LK,"ACD_DEF_END",A="FL:::/Kernel/KernelA.HPP,1496"$
-$LK,"PROGRESS_DESC_LEN",A="FL:::/Kernel/KernelA.HPP,3882"$
-$LK,"CCF_ASM_EXPRESSIONS",A="FL:::/Kernel/KernelA.HPP,2121"$
+$LK,"CDirEntry",A="FL:::/Kernel/KernelA.HPP,2548"$
+$LK,"TK_STR",A="FL:::/Kernel/KernelA.HPP,2070"$
+$LK,"ACD_DEF_END",A="FL:::/Kernel/KernelA.HPP,1502"$
+$LK,"PROGRESS_DESC_LEN",A="FL:::/Kernel/KernelA.HPP,3901"$
+$LK,"CCF_ASM_EXPRESSIONS",A="FL:::/Kernel/KernelA.HPP,2141"$
 $LK,"D3Sub",A="FL:::/Kernel/KernelB.HPP,166"$
-$LK,"SC_CURSOR_RIGHT",A="FL:::/Kernel/KernelA.HPP,3546"$
+$LK,"SC_CURSOR_RIGHT",A="FL:::/Kernel/KernelA.HPP,3565"$
 $LK,"KeyDevAdd",A="FL:::/Kernel/KeyDev.CPP.Z,64",BI=83$
-$LK,"CTRLF_BORDER",A="FL:::/Kernel/KernelA.HPP,3064"$
+$LK,"CTRLF_BORDER",A="FL:::/Kernel/KernelA.HPP,3083"$
 $LK,"_D3_EQU",A="FL:::/Kernel/KMathA.CPP.Z,226"$
-$LK,"VGAP_ATTR_DATA_READ",A="FL:::/Kernel/KernelA.HPP,3704"$
-$LK,"ATA_PACKET",A="FL:::/Kernel/KernelA.HPP,2236"$
-$LK,"HTF_LOCAL",A="FL:::/Kernel/KernelA.HPP,705"$
-$LK,"HTT_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HPP,688"$
-$LK,"HTf_LOCAL",A="FL:::/Kernel/KernelA.HPP,675"$
+$LK,"VGAP_ATTR_DATA_READ",A="FL:::/Kernel/KernelA.HPP,3723"$
+$LK,"ATA_PACKET",A="FL:::/Kernel/KernelA.HPP,2255"$
+$LK,"HTF_LOCAL",A="FL:::/Kernel/KernelA.HPP,706"$
+$LK,"HTT_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HPP,689"$
+$LK,"HTf_LOCAL",A="FL:::/Kernel/KernelA.HPP,676"$
 $LK,"CtrlAltT",A="FL:::/Kernel/KeyDev.CPP.Z,161",BI=84$
 $LK,"IsSilent",A="FL:::/Kernel/KMisc.CPP.Z,228",BI=85$
-$LK,"CBpt",A="FL:::/Kernel/KernelA.HPP,3129"$
-$LK,"HTt_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HPP,658"$
+$LK,"CBpt",A="FL:::/Kernel/KernelA.HPP,3148"$
+$LK,"HTt_ASM_KEYWORD",A="FL:::/Kernel/KernelA.HPP,659"$
 $LK,"PCIWriteU32",A="FL:::/Kernel/PCIBIOS.CPP.Z,250",BI=86$
 $LK,"PCIWriteU16",A="FL:::/Kernel/PCIBIOS.CPP.Z,235",BI=87$
 $LK,"CtrlAltV",A="FL:::/Kernel/KeyDev.CPP.Z,166",BI=88$
-$LK,"CISO1DirEntry",A="FL:::/Kernel/KernelA.HPP,2434"$
+$LK,"CISO1DirEntry",A="FL:::/Kernel/KernelA.HPP,2453"$
 $LK,"_LXCHG_U8",A="FL:::/Kernel/KUtils.CPP.Z,244"$
 $LK,"CtrlAltX",A="FL:::/Kernel/KeyDev.CPP.Z,171",BI=89$
 $LK,"ChgDsk",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,200",BI=90$
 $LK,"UserTaskCont",A="FL:::/Kernel/KTask.CPP.Z,350",BI=91$
 $LK,"RFLAGf_NESTED_TASK",A="FL:::/Kernel/KernelA.HPP,316"$
 $LK,"BEqu",A="FL:::/Kernel/KernelB.HPP,28"$
-$LK,"ISO1T_PRI_VOL_DESC",A="FL:::/Kernel/KernelA.HPP,2455"$
+$LK,"ISO1T_PRI_VOL_DESC",A="FL:::/Kernel/KernelA.HPP,2474"$
 $LK,"FAT32MkDir",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,933",BI=92$
-$LK,"DCS_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3624"$
-$LK,"ICF_USE_INT",A="FL:::/Kernel/KernelA.HPP,1580"$
-$LK,"DOCT_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,896"$
+$LK,"DCS_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3643"$
+$LK,"ICF_USE_INT",A="FL:::/Kernel/KernelA.HPP,1595"$
+$LK,"DOCT_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,897"$
 $LK,"BIN_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,369"$
-$LK,"ARGT_IMM8",A="FL:::/Kernel/KernelA.HPP,1861"$
+$LK,"ARGT_IMM8",A="FL:::/Kernel/KernelA.HPP,1880"$
 $LK,"SYS_HASH_SINGLE_TABLE_FIND1",A="FL:::/Kernel/KHashA.CPP.Z,30"$
-$LK,"DOC_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,1333"$
-$LK,"DOCEF_INVERT",A="FL:::/Kernel/KernelA.HPP,1034"$
+$LK,"DOC_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,1339"$
+$LK,"DOCEF_INVERT",A="FL:::/Kernel/KernelA.HPP,1038"$
 $LK,"CDateStruct",A="FL:::/Kernel/KernelA.HPP,191"$
-$LK,"CHashFun",A="FL:::/Kernel/KernelA.HPP,851"$
-$LK,"SV_I_REG",A="FL:::/Kernel/KernelA.HPP,1720"$
-$LK,"DOCEf_INVERT",A="FL:::/Kernel/KernelA.HPP,1040"$
+$LK,"CHashFun",A="FL:::/Kernel/KernelA.HPP,852"$
+$LK,"SV_I_REG",A="FL:::/Kernel/KernelA.HPP,1738"$
+$LK,"DOCEf_INVERT",A="FL:::/Kernel/KernelA.HPP,1044"$
 $LK,"DayOfWeek",A="FL:::/Kernel/KDate.CPP.Z,30",BI=93$
-$LK,"CDrv",A="FL:::/Kernel/KernelA.HPP,2690"$
-$LK,"TK_MINUS_MINUS",A="FL:::/Kernel/KernelA.HPP,2055"$
-$LK,"DOCT_LST",A="FL:::/Kernel/KernelA.HPP,925"$
+$LK,"CDrv",A="FL:::/Kernel/KernelA.HPP,2709"$
+$LK,"TK_MINUS_MINUS",A="FL:::/Kernel/KernelA.HPP,2075"$
+$LK,"DOCT_LST",A="FL:::/Kernel/KernelA.HPP,927"$
 $LK,"sys_heap_init_flag",A="FL:::/Kernel/KernelB.HPP,187"$
-$LK,"FUF_CANCEL",A="FL:::/Kernel/KernelA.HPP,2576"$
-$LK,"FUf_CANCEL",A="FL:::/Kernel/KernelA.HPP,2550"$
+$LK,"FUF_CANCEL",A="FL:::/Kernel/KernelA.HPP,2595"$
+$LK,"FUf_CANCEL",A="FL:::/Kernel/KernelA.HPP,2569"$
 $LK,"FALSE",A="FL:::/Kernel/KernelA.HPP,19"$
-$LK,"VGAP_REG_READ",A="FL:::/Kernel/KernelA.HPP,3709"$
-$LK,"SVCf_ADD_TO_QUE",A="FL:::/Kernel/KernelA.HPP,3158"$
-$LK,"CUAsmGlbls",A="FL:::/Kernel/KernelA.HPP,2206"$
-$LK,"TK_ADD_EQU",A="FL:::/Kernel/KernelA.HPP,2074"$
-$LK,"TK_XOR_EQU",A="FL:::/Kernel/KernelA.HPP,2073"$
+$LK,"VGAP_REG_READ",A="FL:::/Kernel/KernelA.HPP,3728"$
+$LK,"SVCf_ADD_TO_QUE",A="FL:::/Kernel/KernelA.HPP,3177"$
+$LK,"CUAsmGlbls",A="FL:::/Kernel/KernelA.HPP,2225"$
+$LK,"TK_ADD_EQU",A="FL:::/Kernel/KernelA.HPP,2094"$
+$LK,"TK_XOR_EQU",A="FL:::/Kernel/KernelA.HPP,2093"$
 $LK,"StrPrintHex",A="FL:::/Kernel/StrA.CPP.Z,1",BI=94$
 $LK,"_D3_ADD_EQU",A="FL:::/Kernel/KMathA.CPP.Z,239"$
-$LK,"DRV_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2689"$
-$LK,"DOCT_PMT",A="FL:::/Kernel/KernelA.HPP,912"$
-$LK,"Cf_EXTERN",A="FL:::/Kernel/KernelA.HPP,825"$
-$LK,"HPET_GCAP_ID",A="FL:::/Kernel/KernelA.HPP,529"$
+$LK,"DRV_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2708"$
+$LK,"DOCT_PMT",A="FL:::/Kernel/KernelA.HPP,914"$
+$LK,"Cf_EXTERN",A="FL:::/Kernel/KernelA.HPP,826"$
+$LK,"HPET_GCAP_ID",A="FL:::/Kernel/KernelA.HPP,530"$
 $LK,"ATan",A="FL:::/Kernel/KernelB.HPP,94"$
 $LK,"SysBadFree",A="FL:::/Kernel/Mem/Mem512.CPP.Z,1",BI=95$
-$LK,"ATA_ID_DEV",A="FL:::/Kernel/KernelA.HPP,2245"$
-$LK,"CHashReg",A="FL:::/Kernel/KernelA.HPP,743"$
-$LK,"SCf_INS",A="FL:::/Kernel/KernelA.HPP,3511"$
-$LK,"LAPIC_LVT_ERR",A="FL:::/Kernel/KernelA.HPP,499"$
+$LK,"ATA_ID_DEV",A="FL:::/Kernel/KernelA.HPP,2264"$
+$LK,"CHashReg",A="FL:::/Kernel/KernelA.HPP,744"$
+$LK,"SCf_INS",A="FL:::/Kernel/KernelA.HPP,3530"$
+$LK,"LAPIC_LVT_ERR",A="FL:::/Kernel/KernelA.HPP,500"$
 $LK,"Scale2Mem",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,187",BI=96$
 $LK,"Mem512TaskFree",A="FL:::/Kernel/Mem/Mem512.CPP.Z,153",BI=97$
 $LK,"RandU32",A="FL:::/Kernel/KMathB.CPP.Z,98",BI=98$
 $LK,"RandU16",A="FL:::/Kernel/KMathB.CPP.Z,82",BI=99$
 $LK,"_FLDCW",A="FL:::/Kernel/KMathA.CPP.Z,625"$
-$LK,"__DIR__",A="FL:::/Kernel/KernelA.HPP,2009"$
-$LK,"ARGT_RM32",A="FL:::/Kernel/KernelA.HPP,1878"$
-$LK,"ARGT_RM16",A="FL:::/Kernel/KernelA.HPP,1877"$
+$LK,"__DIR__",A="FL:::/Kernel/KernelA.HPP,2029"$
+$LK,"ARGT_RM32",A="FL:::/Kernel/KernelA.HPP,1897"$
+$LK,"ARGT_RM16",A="FL:::/Kernel/KernelA.HPP,1896"$
 $LK,"RFLAGf_INT",A="FL:::/Kernel/KernelA.HPP,311"$
-$LK,"WIf_SELF_DOC",A="FL:::/Kernel/KernelA.HPP,1435"$
-$LK,"WIF_SELF_DOC",A="FL:::/Kernel/KernelA.HPP,1409"$
-$LK,"MLF_STATIC",A="FL:::/Kernel/KernelA.HPP,775"$
-$LK,"ICF_A1_FIRST",A="FL:::/Kernel/KernelA.HPP,1585"$
+$LK,"WIf_SELF_DOC",A="FL:::/Kernel/KernelA.HPP,1441"$
+$LK,"WIF_SELF_DOC",A="FL:::/Kernel/KernelA.HPP,1415"$
+$LK,"MLF_STATIC",A="FL:::/Kernel/KernelA.HPP,776"$
 $LK,"ChgExt",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,193",BI=100$
 $LK,"str2color_lst",A="FL:::/Kernel/KDefine.CPP.Z,155"$
 $LK,"local_time_offset",A="FL:::/Kernel/KGlbls.CPP.Z,14"$
 $LK,"RedSeaFilesFind",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,537",BI=101$
-$LK,"TK_INS_BIN",A="FL:::/Kernel/KernelA.HPP,2086"$
+$LK,"TK_INS_BIN",A="FL:::/Kernel/KernelA.HPP,2106"$
 $LK,"_D3_MUL",A="FL:::/Kernel/KMathA.CPP.Z,167"$
-$LK,"ISO1_BASE_YEAR",A="FL:::/Kernel/KernelA.HPP,2497"$
-$LK,"TK_ELSE",A="FL:::/Kernel/KernelA.HPP,2082"$
+$LK,"ISO1_BASE_YEAR",A="FL:::/Kernel/KernelA.HPP,2516"$
+$LK,"TK_ELSE",A="FL:::/Kernel/KernelA.HPP,2102"$
 $LK,"RandU64",A="FL:::/Kernel/KMathB.CPP.Z,114",BI=102$
 $LK,"PostMsgWait",A="FL:::/Kernel/SrvCmd.CPP.Z,251",BI=103$
 $LK,"UndefinedDefine",A="FL:::/Kernel/KDefine.CPP.Z,43",BI=104$
-$LK,"ARGT_RM64",A="FL:::/Kernel/KernelA.HPP,1879"$
+$LK,"ARGT_RM64",A="FL:::/Kernel/KernelA.HPP,1898"$
 $LK,"ATAWaitDRQ",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,36",BI=105$
 $LK,"TaskInit",A="FL:::/Kernel/KTask.CPP.Z,150",BI=106$
-$LK,"DOCEf_RIGHT_CB",A="FL:::/Kernel/KernelA.HPP,1065"$
-$LK,"DOCEF_RIGHT_CB",A="FL:::/Kernel/KernelA.HPP,979"$
-$LK,"HTT_DICT_WORD",A="FL:::/Kernel/KernelA.HPP,686"$
-$LK,"HTt_DICT_WORD",A="FL:::/Kernel/KernelA.HPP,656"$
-$LK,"RLf_MP",A="FL:::/Kernel/KernelA.HPP,444"$
+$LK,"DOCEf_RIGHT_CB",A="FL:::/Kernel/KernelA.HPP,1069"$
+$LK,"DOCEF_RIGHT_CB",A="FL:::/Kernel/KernelA.HPP,981"$
+$LK,"HTT_DICT_WORD",A="FL:::/Kernel/KernelA.HPP,687"$
+$LK,"HTt_DICT_WORD",A="FL:::/Kernel/KernelA.HPP,657"$
+$LK,"RLf_MP",A="FL:::/Kernel/KernelA.HPP,445"$
 $LK,"CSpring",A="FL:::/Kernel/KernelA.HPP,224"$
-$LK,"CBGR24",A="FL:::/Kernel/KernelA.HPP,2961"$
-$LK,"FONT_WIDTH",A="FL:::/Kernel/KernelA.HPP,3585"$
-$LK,"CHeapCtrl",A="FL:::/Kernel/KernelA.HPP,2879"$
+$LK,"CBGR24",A="FL:::/Kernel/KernelA.HPP,2980"$
+$LK,"FONT_WIDTH",A="FL:::/Kernel/KernelA.HPP,3604"$
+$LK,"CHeapCtrl",A="FL:::/Kernel/KernelA.HPP,2898"$
 $LK,"LastDayOfYear",A="FL:::/Kernel/KDate.CPP.Z,110",BI=107$
 $LK,"SYS_IDLE_PT",A="FL:::/Kernel/Sched.CPP.Z,215"$
 $LK,"mp_cnt_initial",A="FL:::/Kernel/KernelB.HPP,235"$
-$LK,"STD_DISTRO_DVD_CFG",A="FL:::/Kernel/KernelA.HPP,3868"$
-$LK,"CAbsCntsI64",A="FL:::/Kernel/KernelA.HPP,1784"$
+$LK,"STD_DISTRO_DVD_CFG",A="FL:::/Kernel/KernelA.HPP,3887"$
+$LK,"CAbsCntsI64",A="FL:::/Kernel/KernelA.HPP,1803"$
 $LK,"Core0StartMP",A="FL:::/Kernel/MultiProc.CPP.Z,285",BI=108$
 $LK,"JobResultGet",A="FL:::/Kernel/SrvCmd.CPP.Z,198",BI=109$
 $LK,"_D3_SUB",A="FL:::/Kernel/KMathA.CPP.Z,149"$
-$LK,"CBGR48",A="FL:::/Kernel/KernelA.HPP,2965"$
-$LK,"DOCEF_BORDER_PLOT",A="FL:::/Kernel/KernelA.HPP,998"$
+$LK,"CBGR48",A="FL:::/Kernel/KernelA.HPP,2984"$
+$LK,"DOCEF_BORDER_PLOT",A="FL:::/Kernel/KernelA.HPP,1000"$
 $LK,"IntCore0TimerHandler",A="FL:::/Kernel/KMisc.CPP.Z,47",BI=110$
-$LK,"__DATE__",A="FL:::/Kernel/KernelA.HPP,2001"$
+$LK,"__DATE__",A="FL:::/Kernel/KernelA.HPP,2021"$
 $LK,"chars_bmp_safe_dollar",A="FL:::/Kernel/StrA.CPP.Z,391"$
 $LK,"AdamErr",A="FL:::/Kernel/SrvCmd.CPP.Z,434",BI=111$
 $LK,"sys_focus_task",A="FL:::/Kernel/KernelB.HPP,203"$
-$LK,"DOCEf_BORDER_PLOT",A="FL:::/Kernel/KernelA.HPP,1084"$
-$LK,"HTT_MODULE",A="FL:::/Kernel/KernelA.HPP,692"$
-$LK,"HTt_MODULE",A="FL:::/Kernel/KernelA.HPP,662"$
-$LK,"SVCf_HIGHEST_PRIORITY",A="FL:::/Kernel/KernelA.HPP,3153"$
-$LK,"ARGT_REL8",A="FL:::/Kernel/KernelA.HPP,1857"$
+$LK,"DOCEf_BORDER_PLOT",A="FL:::/Kernel/KernelA.HPP,1088"$
+$LK,"HTT_MODULE",A="FL:::/Kernel/KernelA.HPP,693"$
+$LK,"HTt_MODULE",A="FL:::/Kernel/KernelA.HPP,663"$
+$LK,"SVCf_HIGHEST_PRIORITY",A="FL:::/Kernel/KernelA.HPP,3172"$
+$LK,"ARGT_REL8",A="FL:::/Kernel/KernelA.HPP,1876"$
 $LK,"GridInit",A="FL:::/Kernel/SerialDev/InputPointer.CPP.Z,1",BI=112$
 $LK,"FirstDayOfYear",A="FL:::/Kernel/KDate.CPP.Z,98",BI=113$
-$LK,"CCf_PMT",A="FL:::/Kernel/KernelA.HPP,2104"$
-$LK,"ACD_EXTRA",A="FL:::/Kernel/KernelA.HPP,1501"$
-$LK,"WIf_SELF_ODE",A="FL:::/Kernel/KernelA.HPP,1436"$
-$LK,"WIF_SELF_ODE",A="FL:::/Kernel/KernelA.HPP,1410"$
-$LK,"MLF_DFT_AVAILABLE",A="FL:::/Kernel/KernelA.HPP,769"$
+$LK,"CCf_PMT",A="FL:::/Kernel/KernelA.HPP,2124"$
+$LK,"ACD_EXTRA",A="FL:::/Kernel/KernelA.HPP,1507"$
+$LK,"WIf_SELF_ODE",A="FL:::/Kernel/KernelA.HPP,1442"$
+$LK,"WIF_SELF_ODE",A="FL:::/Kernel/KernelA.HPP,1416"$
+$LK,"MLF_DFT_AVAILABLE",A="FL:::/Kernel/KernelA.HPP,770"$
 $LK,"COREAP_16BIT_INIT",A="FL:::/Kernel/MultiProc.CPP.Z,9"$
-$LK,"SCf_NUM",A="FL:::/Kernel/KernelA.HPP,3505"$
-$LK,"RS_ATTR_RESIDENT",A="FL:::/Kernel/KernelA.HPP,2512"$
+$LK,"SCf_NUM",A="FL:::/Kernel/KernelA.HPP,3524"$
+$LK,"RS_ATTR_RESIDENT",A="FL:::/Kernel/KernelA.HPP,2531"$
 $LK,"Dbg2",A="FL:::/Kernel/KDbg.CPP.Z,533",BI=114$
 $LK,"HashSrcFileSet",A="FL:::/Kernel/KHashB.CPP.Z,154",BI=115$
-$LK,"ROP_XOR",A="FL:::/Kernel/KernelA.HPP,2914"$
+$LK,"ROP_XOR",A="FL:::/Kernel/KernelA.HPP,2933"$
 $LK,"NULL",A="FL:::/Kernel/KernelA.HPP,17"$
 $LK,"BlkPoolInit",A="FL:::/Kernel/Mem/BlkPool.CPP.Z,18",BI=116$
 $LK,"_BIT_FIELD_EXTRACT_U32",A="FL:::/Kernel/KUtils.CPP.Z,167"$
-$LK,"BDF_EXT_SIZE",A="FL:::/Kernel/KernelA.HPP,2620"$
+$LK,"BDF_EXT_SIZE",A="FL:::/Kernel/KernelA.HPP,2639"$
 $LK,"ProgressBarsRst",A="FL:::/Kernel/KMisc.CPP.Z,275",BI=117$
-$LK,"TASKf_PENDING_BREAK",A="FL:::/Kernel/KernelA.HPP,3263"$
-$LK,"BDf_EXT_SIZE",A="FL:::/Kernel/KernelA.HPP,2630"$
+$LK,"TASKf_PENDING_BREAK",A="FL:::/Kernel/KernelA.HPP,3282"$
+$LK,"BDf_EXT_SIZE",A="FL:::/Kernel/KernelA.HPP,2649"$
 $LK,"RedSeaAllocClusters",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,300",BI=118$
 $LK,"CQue",A="FL:::/Kernel/KernelA.HPP,120"$
-$LK,"MEM_ADAM_STK",A="FL:::/Kernel/KernelA.HPP,2856"$
-$LK,"DOCEF_UPDATE_DATA",A="FL:::/Kernel/KernelA.HPP,1002"$
+$LK,"MEM_ADAM_STK",A="FL:::/Kernel/KernelA.HPP,2875"$
+$LK,"DOCEF_UPDATE_DATA",A="FL:::/Kernel/KernelA.HPP,1004"$
 $LK,"AdamLog",A="FL:::/Kernel/SrvCmd.CPP.Z,424",BI=119$
-$LK,"TASKf_KILL_TASK",A="FL:::/Kernel/KernelA.HPP,3254"$
-$LK,"ACD_H1",A="FL:::/Kernel/KernelA.HPP,1493"$
-$LK,"Ff_RET1",A="FL:::/Kernel/KernelA.HPP,849"$
-$LK,"SVCT_SPAWN_TASK",A="FL:::/Kernel/KernelA.HPP,3165"$
-$LK,"RS_ATTR_ARCHIVE",A="FL:::/Kernel/KernelA.HPP,2507"$
-$LK,"DOCEf_UPDATE_DATA",A="FL:::/Kernel/KernelA.HPP,1088"$
-$LK,"EXT_DBG_RESUME",A="FL:::/Kernel/KernelA.HPP,575"$
-$LK,"FSt_FAT32",A="FL:::/Kernel/KernelA.HPP,2660"$
-$LK,"OPTf_WARN_PAREN",A="FL:::/Kernel/KernelA.HPP,1529"$
+$LK,"TASKf_KILL_TASK",A="FL:::/Kernel/KernelA.HPP,3273"$
+$LK,"ACD_H1",A="FL:::/Kernel/KernelA.HPP,1499"$
+$LK,"Ff_RET1",A="FL:::/Kernel/KernelA.HPP,850"$
+$LK,"SVCT_SPAWN_TASK",A="FL:::/Kernel/KernelA.HPP,3184"$
+$LK,"RS_ATTR_ARCHIVE",A="FL:::/Kernel/KernelA.HPP,2526"$
+$LK,"DOCEf_UPDATE_DATA",A="FL:::/Kernel/KernelA.HPP,1092"$
+$LK,"EXT_DBG_RESUME",A="FL:::/Kernel/KernelA.HPP,576"$
+$LK,"FSt_FAT32",A="FL:::/Kernel/KernelA.HPP,2679"$
+$LK,"OPTf_WARN_PAREN",A="FL:::/Kernel/KernelA.HPP,1535"$
 $LK,"TaskStkNew",A="FL:::/Kernel/KTask.CPP.Z,68",BI=120$
-$LK,"RT_PTR",A="FL:::/Kernel/KernelA.HPP,1552"$
+$LK,"RT_PTR",A="FL:::/Kernel/KernelA.HPP,1558"$
 $LK,"HashTableDel",A="FL:::/Kernel/KHashB.CPP.Z,90",BI=121$
 $LK,"LBtc",A="FL:::/Kernel/KernelB.HPP,22"$
-$LK,"FUF_Z_OR_NOT_Z",A="FL:::/Kernel/KernelA.HPP,2590"$
+$LK,"FUF_Z_OR_NOT_Z",A="FL:::/Kernel/KernelA.HPP,2609"$
 $LK,"ClampI64",A="FL:::/Kernel/KernelB.HPP,124"$
-$LK,"FUf_Z_OR_NOT_Z",A="FL:::/Kernel/KernelA.HPP,2564"$
+$LK,"FUf_Z_OR_NOT_Z",A="FL:::/Kernel/KernelA.HPP,2583"$
 $LK,"B2",A="FL:::/Kernel/KDbg.CPP.Z,422",BI=122$
 $LK,"SLOP",A="FL:::/Kernel/StrPrint.CPP.Z,217"$
-$LK,"FF_BUF_DIRTY",A="FL:::/Kernel/KernelA.HPP,2753"$
-$LK,"ICF_SWAP",A="FL:::/Kernel/KernelA.HPP,1594"$
+$LK,"FF_BUF_DIRTY",A="FL:::/Kernel/KernelA.HPP,2772"$
+$LK,"ICF_SWAP",A="FL:::/Kernel/KernelA.HPP,1608"$
 $LK,"_STRMATCH",A="FL:::/Kernel/StrA.CPP.Z,223"$
 $LK,"MSF_FIXED",A="FL:::/Kernel/KernelA.HPP,206"$
 $LK,"_CPUID",A="FL:::/Kernel/KUtils.CPP.Z,319"$
 $LK,"SYS_HEAP_BASE",A="FL:::/Kernel/KStart.CPP.Z,184"$
 $LK,"_LBEQU",A="FL:::/Kernel/KUtils.CPP.Z,104"$
 $LK,"Caller",A="FL:::/Kernel/KDbg.CPP.Z,60",BI=123$
-$LK,"SUF_S2T",A="FL:::/Kernel/KernelA.HPP,3772"$
-$LK,"ATA_DEV_RST",A="FL:::/Kernel/KernelA.HPP,2235"$
+$LK,"SUF_S2T",A="FL:::/Kernel/KernelA.HPP,3791"$
+$LK,"ATA_DEV_RST",A="FL:::/Kernel/KernelA.HPP,2254"$
 $LK,"INT_MP_CRASH_ADDR",A="FL:::/Kernel/KInts.CPP.Z,2"$
-$LK,"RWF_LAST_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3573"$
-$LK,"RS_ATTR_CONTIGUOUS",A="FL:::/Kernel/KernelA.HPP,2514"$
-$LK,"HPET_MAIN_CNT",A="FL:::/Kernel/KernelA.HPP,531"$
-$LK,"DOCT_DATA",A="FL:::/Kernel/KernelA.HPP,923"$
-$LK,"SUF_T2S",A="FL:::/Kernel/KernelA.HPP,3773"$
-$LK,"MEM_MIN_MEG",A="FL:::/Kernel/KernelA.HPP,3438"$
+$LK,"RWF_LAST_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3592"$
+$LK,"RS_ATTR_CONTIGUOUS",A="FL:::/Kernel/KernelA.HPP,2533"$
+$LK,"HPET_MAIN_CNT",A="FL:::/Kernel/KernelA.HPP,532"$
+$LK,"DOCT_DATA",A="FL:::/Kernel/KernelA.HPP,925"$
+$LK,"SUF_T2S",A="FL:::/Kernel/KernelA.HPP,3792"$
+$LK,"MEM_MIN_MEG",A="FL:::/Kernel/KernelA.HPP,3457"$
 $LK,"exp_1",A="FL:::/Kernel/KernelA.HPP,50"$
 $LK,"CTRL_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,15"$
 $LK,"KeyDevRem",A="FL:::/Kernel/KeyDev.CPP.Z,80",BI=124$
 $LK,"G2",A="FL:::/Kernel/KDbg.CPP.Z,469",BI=125$
-$LK,"DOCEG_HAS_ARG",A="FL:::/Kernel/KernelA.HPP,1023"$
+$LK,"DOCEG_HAS_ARG",A="FL:::/Kernel/KernelA.HPP,1027"$
 $LK,"TSSNew",A="FL:::/Kernel/MultiProc.CPP.Z,76",BI=126$
 $LK,"SYS_PROGRESS1_DESC",A="FL:::/Kernel/KStart.CPP.Z,210"$
 $LK,"LBtr",A="FL:::/Kernel/KernelB.HPP,24"$
-$LK,"FStf_DISABLE",A="FL:::/Kernel/KernelA.HPP,2669"$
-$LK,"HTT_OPCODE",A="FL:::/Kernel/KernelA.HPP,689"$
-$LK,"HTt_OPCODE",A="FL:::/Kernel/KernelA.HPP,659"$
+$LK,"FStf_DISABLE",A="FL:::/Kernel/KernelA.HPP,2688"$
+$LK,"HTT_OPCODE",A="FL:::/Kernel/KernelA.HPP,690"$
+$LK,"HTt_OPCODE",A="FL:::/Kernel/KernelA.HPP,660"$
 $LK,"CDATE_YEAR_DAYS_INT",A="FL:::/Kernel/KernelA.HPP,182"$
 $LK,"FAT32AllocContiguousClusters",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,514",BI=127$
 $LK,"LBts",A="FL:::/Kernel/KernelB.HPP,26"$
@@ -549,175 +550,175 @@ $LK,"ArcEntryGet",A="FL:::/Kernel/Compress.CPP.Z,100"$
 $LK,"_LOG10",A="FL:::/Kernel/KMathA.CPP.Z,592"$
 $LK,"Adam",A="FL:::/Kernel/SrvCmd.CPP.Z,407",BI=128$
 $LK,"CTryStk",A="FL:::/Kernel/KExcept.CPP.Z,54"$
-$LK,"DCF_PALETTE",A="FL:::/Kernel/KernelA.HPP,3600"$
+$LK,"DCF_PALETTE",A="FL:::/Kernel/KernelA.HPP,3619"$
 $LK,"set_bits_table",A="FL:::/Kernel/KGlbls.CPP.Z,13"$
-$LK,"KBD_CTRL",A="FL:::/Kernel/KernelA.HPP,2972"$
-$LK,"HTt_FUN",A="FL:::/Kernel/KernelA.HPP,654"$
-$LK,"RS_ATTR_LONG_NAME",A="FL:::/Kernel/KernelA.HPP,2508"$
-$LK,"TK_XOR_XOR",A="FL:::/Kernel/KernelA.HPP,2066"$
-$LK,"DOCEf_HOLD",A="FL:::/Kernel/KernelA.HPP,1093"$
-$LK,"DOCEF_HOLD",A="FL:::/Kernel/KernelA.HPP,1009"$
+$LK,"KBD_CTRL",A="FL:::/Kernel/KernelA.HPP,2991"$
+$LK,"HTt_FUN",A="FL:::/Kernel/KernelA.HPP,655"$
+$LK,"RS_ATTR_LONG_NAME",A="FL:::/Kernel/KernelA.HPP,2527"$
+$LK,"TK_XOR_XOR",A="FL:::/Kernel/KernelA.HPP,2086"$
+$LK,"DOCEf_HOLD",A="FL:::/Kernel/KernelA.HPP,1097"$
+$LK,"DOCEF_HOLD",A="FL:::/Kernel/KernelA.HPP,1011"$
 $LK,"KDInputFilterPutKey",A="FL:::/Kernel/KeyDev.CPP.Z,106",BI=129$
 $LK,"GetOutOfDollar",A="FL:::/Kernel/StrB.CPP.Z,75",BI=130$
-$LK,"DOC_COLOR_ALT_TEXT",A="FL:::/Kernel/KernelA.HPP,1125"$
-$LK,"MBR_PT_FAT32a",A="FL:::/Kernel/KernelA.HPP,2672"$
+$LK,"DOC_COLOR_ALT_TEXT",A="FL:::/Kernel/KernelA.HPP,1131"$
+$LK,"MBR_PT_FAT32a",A="FL:::/Kernel/KernelA.HPP,2691"$
 $LK,"DbgHelp",A="FL:::/Kernel/KDbg.CPP.Z,498",BI=131$
 $LK,"_FLOOR",A="FL:::/Kernel/KMathA.CPP.Z,420"$
-$LK,"MBR_PT_FAT32b",A="FL:::/Kernel/KernelA.HPP,2673"$
-$LK,"MBR_PT_FAT32c",A="FL:::/Kernel/KernelA.HPP,2674"$
+$LK,"MBR_PT_FAT32b",A="FL:::/Kernel/KernelA.HPP,2692"$
+$LK,"MBR_PT_FAT32c",A="FL:::/Kernel/KernelA.HPP,2693"$
 $LK,"D3Dist",A="FL:::/Kernel/KernelB.HPP,155"$
-$LK,"MBR_PT_FAT32d",A="FL:::/Kernel/KernelA.HPP,2675"$
-$LK,"TK_INS_BIN_SIZE",A="FL:::/Kernel/KernelA.HPP,2087"$
-$LK,"LMF_EXACT",A="FL:::/Kernel/KernelA.HPP,3785"$
-$LK,"MBR_PT_FAT32e",A="FL:::/Kernel/KernelA.HPP,2676"$
-$LK,"FSt_NTFS",A="FL:::/Kernel/KernelA.HPP,2664"$
-$LK,"MBR_PT_FAT32f",A="FL:::/Kernel/KernelA.HPP,2677"$
-$LK,"CM_MAX_CONSTS",A="FL:::/Kernel/KernelA.HPP,1682"$
-$LK,"DOCEF_TAG_CB",A="FL:::/Kernel/KernelA.HPP,988"$
+$LK,"MBR_PT_FAT32d",A="FL:::/Kernel/KernelA.HPP,2694"$
+$LK,"TK_INS_BIN_SIZE",A="FL:::/Kernel/KernelA.HPP,2107"$
+$LK,"LMF_EXACT",A="FL:::/Kernel/KernelA.HPP,3804"$
+$LK,"MBR_PT_FAT32e",A="FL:::/Kernel/KernelA.HPP,2695"$
+$LK,"FSt_NTFS",A="FL:::/Kernel/KernelA.HPP,2683"$
+$LK,"MBR_PT_FAT32f",A="FL:::/Kernel/KernelA.HPP,2696"$
+$LK,"CM_MAX_CONSTS",A="FL:::/Kernel/KernelA.HPP,1700"$
+$LK,"DOCEF_TAG_CB",A="FL:::/Kernel/KernelA.HPP,990"$
 $LK,"Str2Date",A="FL:::/Kernel/StrScan.CPP.Z,138",BI=132$
-$LK,"ICF_PASS_TRACE",A="FL:::/Kernel/KernelA.HPP,1587"$
-$LK,"DOCEf_TAG_CB",A="FL:::/Kernel/KernelA.HPP,1074"$
-$LK,"HTt_REG",A="FL:::/Kernel/KernelA.HPP,660"$
+$LK,"ICF_PASS_TRACE",A="FL:::/Kernel/KernelA.HPP,1601"$
+$LK,"DOCEf_TAG_CB",A="FL:::/Kernel/KernelA.HPP,1078"$
+$LK,"HTt_REG",A="FL:::/Kernel/KernelA.HPP,661"$
 $LK,"ChkPtr",A="FL:::/Kernel/KDbg.CPP.Z,1",BI=133$
 $LK,"TaskWait",A="FL:::/Kernel/SrvCmd.CPP.Z,220",BI=134$
-$LK,"_R10",A="FL:::/Kernel/KernelA.HPP,3407"$
+$LK,"_R10",A="FL:::/Kernel/KernelA.HPP,3426"$
 $LK,"SYS_MEM_INIT_VAL",A="FL:::/Home/Temp.TXT.Z,1"$
-$LK,"_R11",A="FL:::/Kernel/KernelA.HPP,3408"$
-$LK,"WMG_FPS",A="FL:::/Kernel/KernelA.HPP,1457"$
-$LK,"BOOT_RAM_LIMIT",A="FL:::/Kernel/KernelA.HPP,3859"$
-$LK,"_R12",A="FL:::/Kernel/KernelA.HPP,3409"$
+$LK,"_R11",A="FL:::/Kernel/KernelA.HPP,3427"$
+$LK,"WMG_FPS",A="FL:::/Kernel/KernelA.HPP,1463"$
+$LK,"BOOT_RAM_LIMIT",A="FL:::/Kernel/KernelA.HPP,3878"$
+$LK,"_R12",A="FL:::/Kernel/KernelA.HPP,3428"$
 $LK,"SK_CLUSTER",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,90"$
 $LK,"SysGetI64",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,160",BI=135$
 $LK,"MemSetI64",A="FL:::/Kernel/KernelB.HPP,179"$
-$LK,"_R13",A="FL:::/Kernel/KernelA.HPP,3410"$
-$LK,"DEF_NOT_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2526"$
+$LK,"_R13",A="FL:::/Kernel/KernelA.HPP,3429"$
+$LK,"DEF_NOT_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2545"$
 $LK,"SYS_BOOT_PATCH_TABLE_BASE",A="FL:::/Kernel/KStart.CPP.Z,25"$
-$LK,"_R14",A="FL:::/Kernel/KernelA.HPP,3411"$
-$LK,"CTRLT_WIN_VSCROLL",A="FL:::/Kernel/KernelA.HPP,3060"$
-$LK,"TK_LESS_EQU",A="FL:::/Kernel/KernelA.HPP,2062"$
+$LK,"_R14",A="FL:::/Kernel/KernelA.HPP,3430"$
+$LK,"CTRLT_WIN_VSCROLL",A="FL:::/Kernel/KernelA.HPP,3079"$
+$LK,"TK_LESS_EQU",A="FL:::/Kernel/KernelA.HPP,2082"$
 $LK,"ODEF_HAS_MASSES",A="FL:::/Kernel/KernelA.HPP,238"$
-$LK,"_R15",A="FL:::/Kernel/KernelA.HPP,3412"$
-$LK,"FUG_FILES_FIND",A="FL:::/Kernel/KernelA.HPP,2598"$
+$LK,"_R15",A="FL:::/Kernel/KernelA.HPP,3431"$
+$LK,"FUG_FILES_FIND",A="FL:::/Kernel/KernelA.HPP,2617"$
 $LK,"TRUE",A="FL:::/Kernel/KernelA.HPP,18"$
-$LK,"FSt_NULL",A="FL:::/Kernel/KernelA.HPP,2658"$
+$LK,"FSt_NULL",A="FL:::/Kernel/KernelA.HPP,2677"$
 $LK,"chars_bmp_zero_tab_ff_cr_nl_cursor",A="FL:::/Kernel/StrA.CPP.Z,365"$
-$LK,"CEdFindText",A="FL:::/Kernel/KernelA.HPP,1214"$
-$LK,"MEM_FREE_PAGE_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2851"$
+$LK,"CEdFindText",A="FL:::/Kernel/KernelA.HPP,1220"$
+$LK,"MEM_FREE_PAGE_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2870"$
 $LK,"LDF_NO_ABSS",A="FL:::/Kernel/KernelA.HPP,365"$
-$LK,"DOCEf_LINK",A="FL:::/Kernel/KernelA.HPP,1078"$
-$LK,"DOCEF_LINK",A="FL:::/Kernel/KernelA.HPP,992"$
+$LK,"DOCEf_LINK",A="FL:::/Kernel/KernelA.HPP,1082"$
+$LK,"DOCEF_LINK",A="FL:::/Kernel/KernelA.HPP,994"$
 $LK,"D3Copy",A="FL:::/Kernel/KernelB.HPP,151"$
 $LK,"Beep",A="FL:::/Kernel/KMisc.CPP.Z,190",BI=136$
 $LK,"_STRNICMP",A="FL:::/Kernel/StrA.CPP.Z,183"$
 $LK,"_MEMSET_I64",A="FL:::/Kernel/KUtils.CPP.Z,42"$
-$LK,"CH_SPACE",A="FL:::/Kernel/KernelA.HPP,3493"$
-$LK,"AAT_SUB_U8",A="FL:::/Kernel/KernelA.HPP,1946"$
-$LK,"IET_IMM64_EXPORT",A="FL:::/Kernel/KernelA.HPP,406"$
-$LK,"IET_IMM32_EXPORT",A="FL:::/Kernel/KernelA.HPP,404"$
+$LK,"CH_SPACE",A="FL:::/Kernel/KernelA.HPP,3512"$
+$LK,"AAT_SUB_U8",A="FL:::/Kernel/KernelA.HPP,1966"$
+$LK,"IET_IMM64_EXPORT",A="FL:::/Kernel/KernelA.HPP,407"$
+$LK,"IET_IMM32_EXPORT",A="FL:::/Kernel/KernelA.HPP,405"$
 $LK,"sys_gdt",A="FL:::/Kernel/KernelB.HPP,272"$
 $LK,"Call",A="FL:::/Kernel/KernelB.HPP,43"$
-$LK,"SYS_FIXED_AREA",A="FL:::/Kernel/KernelA.HPP,3446"$
-$LK,"ICF_CODE_FINAL",A="FL:::/Kernel/KernelA.HPP,1582"$
+$LK,"SYS_FIXED_AREA",A="FL:::/Kernel/KernelA.HPP,3465"$
+$LK,"ICF_CODE_FINAL",A="FL:::/Kernel/KernelA.HPP,1597"$
 $LK,"SYS_PROGRESS2_DESC",A="FL:::/Kernel/KStart.CPP.Z,213"$
 $LK,"BlkDevLockFwdingSet",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,1",BI=137$
 $LK,"InU8",A="FL:::/Kernel/KernelB.HPP,76"$
-$LK,"ARGT_SREG",A="FL:::/Kernel/KernelA.HPP,1903"$
-$LK,"CMemUnused",A="FL:::/Kernel/KernelA.HPP,2787"$
-$LK,"IEF_48_REX",A="FL:::/Kernel/KernelA.HPP,1712"$
-$LK,"RECALCt_TO_SCREEN",A="FL:::/Kernel/KernelA.HPP,1337"$
+$LK,"ARGT_SREG",A="FL:::/Kernel/KernelA.HPP,1922"$
+$LK,"CMemUnused",A="FL:::/Kernel/KernelA.HPP,2806"$
+$LK,"IEF_48_REX",A="FL:::/Kernel/KernelA.HPP,1730"$
+$LK,"RECALCt_TO_SCREEN",A="FL:::/Kernel/KernelA.HPP,1343"$
 $LK,"ã",A="FL:::/Kernel/KernelA.HPP,49"$
 $LK,"Suspend",A="FL:::/Kernel/KTask.CPP.Z,45",BI=138$
 $LK,"ClampU64",A="FL:::/Kernel/KernelB.HPP,126"$
-$LK,"ARC_MAX_BITS",A="FL:::/Kernel/KernelA.HPP,3720"$
-$LK,"TK_MOD_EQU",A="FL:::/Kernel/KernelA.HPP,2083"$
+$LK,"ARC_MAX_BITS",A="FL:::/Kernel/KernelA.HPP,3739"$
+$LK,"TK_MOD_EQU",A="FL:::/Kernel/KernelA.HPP,2103"$
 $LK,"FunSegFind",A="FL:::/Kernel/FunSeg.CPP.Z,10",BI=139$
 $LK,"Define",A="FL:::/Kernel/KDefine.CPP.Z,49",BI=140$
-$LK,"CInstruction",A="FL:::/Kernel/KernelA.HPP,1723"$
 $LK,"FAT32Fmt",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,60",BI=141$
 $LK,"SrvCmdLine",A="FL:::/Kernel/KTask.CPP.Z,372",BI=142$
 $LK,"HashTableNew",A="FL:::/Kernel/KHashB.CPP.Z,50",BI=143$
-$LK,"DOCT_INDENT",A="FL:::/Kernel/KernelA.HPP,907"$
+$LK,"DOCT_INDENT",A="FL:::/Kernel/KernelA.HPP,909"$
 $LK,"_ARG",A="FL:::/Kernel/KMathA.CPP.Z,366"$
-$LK,"COLORROP_NO_ROP0_MASK",A="FL:::/Kernel/KernelA.HPP,2959"$
+$LK,"COLORROP_NO_ROP0_MASK",A="FL:::/Kernel/KernelA.HPP,2978"$
 $LK,"CDualBuf",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,41"$
 $LK,"TaskText",A="FL:::/Kernel/SrvCmd.CPP.Z,75",BI=144$
-$LK,"COLORROP_BITS",A="FL:::/Kernel/KernelA.HPP,2960"$
-$LK,"BROWN",A="FL:::/Kernel/KernelA.HPP,2935"$
+$LK,"COLORROP_BITS",A="FL:::/Kernel/KernelA.HPP,2979"$
+$LK,"BROWN",A="FL:::/Kernel/KernelA.HPP,2954"$
 $LK,"Da",A="FL:::/Kernel/KDbg.CPP.Z,209",BI=145$
-$LK,"SUF_REM_TRAILING",A="FL:::/Kernel/KernelA.HPP,3767"$
+$LK,"SUF_REM_TRAILING",A="FL:::/Kernel/KernelA.HPP,3786"$
 $LK,"Cd",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,1",BI=146$
 $LK,"Ceil",A="FL:::/Kernel/KernelB.HPP,122"$
-$LK,"DOCEF_SKIP_IN_FORM",A="FL:::/Kernel/KernelA.HPP,1014"$
-$LK,"CCF_DONT_FREE_BUF",A="FL:::/Kernel/KernelA.HPP,2106"$
-$LK,"IET_ZEROED_CODE_HEAP",A="FL:::/Kernel/KernelA.HPP,409"$
+$LK,"DOCEF_SKIP_IN_FORM",A="FL:::/Kernel/KernelA.HPP,1016"$
+$LK,"CCF_DONT_FREE_BUF",A="FL:::/Kernel/KernelA.HPP,2126"$
+$LK,"IET_ZEROED_CODE_HEAP",A="FL:::/Kernel/KernelA.HPP,410"$
 $LK,"SrcEdLink",A="FL:::/Kernel/FunSeg.CPP.Z,238",BI=147$
 $LK,"GetRBP",A="FL:::/Kernel/KernelB.HPP,248"$
-$LK,"GREEN",A="FL:::/Kernel/KernelA.HPP,2931"$
-$LK,"RECALCF_TO_HTML",A="FL:::/Kernel/KernelA.HPP,1342"$
+$LK,"GREEN",A="FL:::/Kernel/KernelA.HPP,2950"$
+$LK,"RECALCF_TO_HTML",A="FL:::/Kernel/KernelA.HPP,1348"$
 $LK,"ì",A="FL:::/Kernel/KernelA.HPP,47"$
 $LK,"ON",A="FL:::/Kernel/KernelA.HPP,20"$
 $LK,"_LXCHG_I64",A="FL:::/Kernel/KUtils.CPP.Z,217"$
-$LK,"DOCEt_BLINK",A="FL:::/Kernel/KernelA.HPP,947"$
-$LK,"DOCET_BLINK",A="FL:::/Kernel/KernelA.HPP,941"$
+$LK,"MDG_DISP_SIB_RIP",A="FL:::/Kernel/KernelA.HPP,1584"$
+$LK,"DOCEt_BLINK",A="FL:::/Kernel/KernelA.HPP,949"$
+$LK,"DOCET_BLINK",A="FL:::/Kernel/KernelA.HPP,943"$
 $LK,"sys_clipboard_doc",A="FL:::/Kernel/KGlbls.CPP.Z,6"$
-$LK,"CCF_NO_DEFINES",A="FL:::/Kernel/KernelA.HPP,2107"$
-$LK,"DOCEf_SKIP_IN_FORM",A="FL:::/Kernel/KernelA.HPP,1098"$
+$LK,"CCF_NO_DEFINES",A="FL:::/Kernel/KernelA.HPP,2127"$
+$LK,"DOCEf_SKIP_IN_FORM",A="FL:::/Kernel/KernelA.HPP,1102"$
 $LK,"CGDTEntry",A="FL:::/Kernel/KernelA.HPP,328"$
-$LK,"ARGT_XMM0",A="FL:::/Kernel/KernelA.HPP,1923"$
+$LK,"ARGT_XMM0",A="FL:::/Kernel/KernelA.HPP,1942"$
 $LK,"_TASK_END_NOW",A="FL:::/Kernel/Sched.CPP.Z,162"$
-$LK,"HTT_INVALID",A="FL:::/Kernel/KernelA.HPP,677"$
+$LK,"HTT_INVALID",A="FL:::/Kernel/KernelA.HPP,678"$
 $LK,"_REP_OUT_U8",A="FL:::/Kernel/KUtils.CPP.Z,308"$
 $LK,"GetRAX",A="FL:::/Kernel/KernelB.HPP,247"$
 $LK,"sys_boot_src",A="FL:::/Kernel/KernelB.HPP,39"$
-$LK,"SCF_DELETE",A="FL:::/Kernel/KernelA.HPP,3525"$
-$LK,"SCf_DELETE",A="FL:::/Kernel/KernelA.HPP,3510"$
-$LK,"ARGT_M32N32",A="FL:::/Kernel/KernelA.HPP,1889"$
-$LK,"ARGT_M16N16",A="FL:::/Kernel/KernelA.HPP,1888"$
-$LK,"ARGT_M16N32",A="FL:::/Kernel/KernelA.HPP,1887"$
-$LK,"SV_STI_LIKE",A="FL:::/Kernel/KernelA.HPP,1721"$
-$LK,"ICG_NO_CVT_MASK",A="FL:::/Kernel/KernelA.HPP,1604"$
-$LK,"RECALCG_MASK",A="FL:::/Kernel/KernelA.HPP,1338"$
-$LK,"HTF_PRIVATE",A="FL:::/Kernel/KernelA.HPP,697"$
+$LK,"SCF_DELETE",A="FL:::/Kernel/KernelA.HPP,3544"$
+$LK,"SCf_DELETE",A="FL:::/Kernel/KernelA.HPP,3529"$
+$LK,"ARGT_M32N32",A="FL:::/Kernel/KernelA.HPP,1908"$
+$LK,"ARGT_M16N16",A="FL:::/Kernel/KernelA.HPP,1907"$
+$LK,"ARGT_M16N32",A="FL:::/Kernel/KernelA.HPP,1906"$
+$LK,"SV_STI_LIKE",A="FL:::/Kernel/KernelA.HPP,1739"$
+$LK,"ICG_NO_CVT_MASK",A="FL:::/Kernel/KernelA.HPP,1618"$
+$LK,"RECALCG_MASK",A="FL:::/Kernel/KernelA.HPP,1344"$
+$LK,"HTF_PRIVATE",A="FL:::/Kernel/KernelA.HPP,698"$
 $LK,"ESTIMATED_MISC_ALLOCS",A="FL:::/Kernel/Mem/PageTables.CPP.Z,124"$
 $LK,"Pow10I64",A="FL:::/Kernel/KMathB.CPP.Z,26",BI=148$
-$LK,"IEF_STI_LIKE",A="FL:::/Kernel/KernelA.HPP,1715"$
-$LK,"HTf_PRIVATE",A="FL:::/Kernel/KernelA.HPP,667"$
+$LK,"IEF_STI_LIKE",A="FL:::/Kernel/KernelA.HPP,1733"$
+$LK,"HTf_PRIVATE",A="FL:::/Kernel/KernelA.HPP,668"$
 $LK,"Dm",A="FL:::/Kernel/KDbg.CPP.Z,204",BI=149$
-$LK,"CCF_EXE_BLK",A="FL:::/Kernel/KernelA.HPP,2118"$
+$LK,"CCF_EXE_BLK",A="FL:::/Kernel/KernelA.HPP,2138"$
 $LK,"CQueD3I32",A="FL:::/Kernel/KernelA.HPP,130"$
-$LK,"BDf_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2622"$
-$LK,"BDF_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2612"$
-$LK,"DEF_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2525"$
-$LK,"COLOR_INVALID",A="FL:::/Kernel/KernelA.HPP,2947"$
+$LK,"BDf_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2641"$
+$LK,"BDF_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2631"$
+$LK,"DEF_REMOVABLE",A="FL:::/Kernel/KernelA.HPP,2544"$
+$LK,"COLOR_INVALID",A="FL:::/Kernel/KernelA.HPP,2966"$
 $LK,"DftExt",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,202",BI=150$
 $LK,"Bt",A="FL:::/Kernel/KernelB.HPP,14"$
-$LK,"OPTf_EXTERNS_TO_IMPORTS",A="FL:::/Kernel/KernelA.HPP,1531"$
+$LK,"OPTf_EXTERNS_TO_IMPORTS",A="FL:::/Kernel/KernelA.HPP,1537"$
 $LK,"Dr",A="FL:::/Kernel/KDbg.CPP.Z,328",BI=151$
 $LK,"CPUId",A="FL:::/Kernel/KernelB.HPP,258"$
 $LK,"FilesFind2",A="FL:::/Kernel/BlkDev/DskFind.CPP.Z,1",BI=152$
 $LK,"TaskKillDying",A="FL:::/Kernel/KTask.CPP.Z,496",BI=153$
 $LK,"scan_code_map",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,157"$
 $LK,"MSize2",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,385"$
-$LK,"REGG_C_TEMP_CLOBBERED",A="FL:::/Kernel/KernelA.HPP,1771"$
 $LK,"MemSetU32",A="FL:::/Kernel/KernelB.HPP,183"$
 $LK,"MemSetU16",A="FL:::/Kernel/KernelB.HPP,181"$
 $LK,"DirTreeDel",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,36",BI=154$
 $LK,"Fs",A="FL:::/Kernel/KernelB.HPP,282"$
-$LK,"SCF_CAPS",A="FL:::/Kernel/KernelA.HPP,3519"$
-$LK,"SCf_CAPS",A="FL:::/Kernel/KernelA.HPP,3504"$
-$LK,"SYS_SEMA_FAR_CALL32",A="FL:::/Kernel/KernelA.HPP,601"$
-$LK,"ACD_DEF_CHAR",A="FL:::/Kernel/KernelA.HPP,1507"$
+$LK,"SCF_CAPS",A="FL:::/Kernel/KernelA.HPP,3538"$
+$LK,"SCf_CAPS",A="FL:::/Kernel/KernelA.HPP,3523"$
+$LK,"SYS_SEMA_FAR_CALL32",A="FL:::/Kernel/KernelA.HPP,602"$
+$LK,"ACD_DEF_CHAR",A="FL:::/Kernel/KernelA.HPP,1513"$
 $LK,"Gs",A="FL:::/Kernel/KernelB.HPP,240"$
 $LK,"SYS_PROGRESS3_DESC",A="FL:::/Kernel/KStart.CPP.Z,216"$
-$LK,"RWF_SCROLL",A="FL:::/Kernel/KernelA.HPP,3575"$
+$LK,"RWF_SCROLL",A="FL:::/Kernel/KernelA.HPP,3594"$
+$LK,"REGG_LOCAL_VARS",A="FL:::/Kernel/KernelA.HPP,1791"$
 $LK,"DrvModelNum",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,263",BI=155$
 $LK,"RepInU8",A="FL:::/Kernel/KernelB.HPP,85"$
-$LK,"MSG_FOCUS",A="FL:::/Kernel/KernelA.HPP,3209"$
+$LK,"MSG_FOCUS",A="FL:::/Kernel/KernelA.HPP,3228"$
 $LK,"IsSysDbg",A="FL:::/Kernel/KMisc.CPP.Z,238",BI=156$
-$LK,"CDbgGlbls",A="FL:::/Kernel/KernelA.HPP,3844"$
+$LK,"CDbgGlbls",A="FL:::/Kernel/KernelA.HPP,3863"$
 $LK,"_TEST_EXCEPT",A="FL:::/Kernel/KExcept.CPP.Z,4"$
 $LK,"_FSTCW",A="FL:::/Kernel/KMathA.CPP.Z,632"$
-$LK,"MSG_IP_R_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3216"$
+$LK,"MSG_IP_R_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3235"$
 $LK,"ScanFlags",A="FL:::/Kernel/StrB.CPP.Z,123",BI=157$
 $LK,"Ln",A="FL:::/Kernel/KernelB.HPP,135"$
 $LK,"INT_WAKE",A="FL:::/Kernel/KInts.CPP.Z,6"$
@@ -728,16 +729,17 @@ $LK,"SYS_MP_CNT_LOCK",A="FL:::/Kernel/KStart.CPP.Z,226"$
 $LK,"SYS_COMPILE_TIME",A="FL:::/Home/Temp.TXT.Z,1"$
 $LK,"GetTSC",A="FL:::/Kernel/KernelB.HPP,285"$
 $LK,"BptR",A="FL:::/Kernel/KDbg.CPP.Z,389",BI=159$
+$LK,"DOCT_MARKER",A="FL:::/Kernel/KernelA.HPP,900"$
 $LK,"BptS",A="FL:::/Kernel/KDbg.CPP.Z,368",BI=160$
 $LK,"_HASH_BUCKET_FIND",A="FL:::/Kernel/KHashA.CPP.Z,158"$
 $LK,"_MHEAP_CTRL",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,368"$
 $LK,"ATAMount",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,239",BI=161$
 $LK,"FifoI64Peek",A="FL:::/Kernel/KDataTypes.CPP.Z,290",BI=162$
 $LK,"_EXP",A="FL:::/Kernel/KMathA.CPP.Z,558"$
-$LK,"SYS_SEMA_SYS_TIMER",A="FL:::/Kernel/KernelA.HPP,591"$
+$LK,"SYS_SEMA_SYS_TIMER",A="FL:::/Kernel/KernelA.HPP,592"$
 $LK,"IET_END",A="FL:::/Kernel/KernelA.HPP,390"$
 $LK,"KbdHandler",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,441",BI=163$
-$LK,"GSF_WITH_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,3761"$
+$LK,"GSF_WITH_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,3780"$
 $LK,"SPF_TRUNCATE",A="FL:::/Kernel/StrPrint.CPP.Z,3"$
 $LK,"SYS_HASH_FIND1",A="FL:::/Kernel/KHashA.CPP.Z,81"$
 $LK,"GetRSP",A="FL:::/Kernel/KernelB.HPP,250"$
@@ -746,248 +748,248 @@ $LK,"ScanKey",A="FL:::/Kernel/SerialDev/Message.CPP.Z,123",BI=164$
 $LK,"MouseDriverInstall",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,222",BI=165$
 $LK,"mouse_last",A="FL:::/Kernel/KGlbls.CPP.Z,27"$
 $LK,"D3DistSqr",A="FL:::/Kernel/KernelB.HPP,157"$
-$LK,"_RDI",A="FL:::/Kernel/KernelA.HPP,3401"$
-$LK,"SV_R_REG",A="FL:::/Kernel/KernelA.HPP,1719"$
-$LK,"TY_IMM",A="FL:::/Kernel/KernelA.HPP,1562"$
+$LK,"_RDI",A="FL:::/Kernel/KernelA.HPP,3420"$
+$LK,"SV_R_REG",A="FL:::/Kernel/KernelA.HPP,1737"$
 $LK,"ATARepExitAllApplications",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,119",BI=166$
 $LK,"CeilI64",A="FL:::/Kernel/KMathB.CPP.Z,62",BI=167$
-$LK,"_RBP",A="FL:::/Kernel/KernelA.HPP,3402"$
-$LK,"CCacheBlk",A="FL:::/Kernel/KernelA.HPP,2718"$
-$LK,"OPTf_WARN_DUP_TYPES",A="FL:::/Kernel/KernelA.HPP,1530"$
+$LK,"_RBP",A="FL:::/Kernel/KernelA.HPP,3421"$
+$LK,"CCacheBlk",A="FL:::/Kernel/KernelA.HPP,2737"$
+$LK,"OPTf_WARN_DUP_TYPES",A="FL:::/Kernel/KernelA.HPP,1536"$
 $LK,"ATAProbe",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,373",BI=168$
 $LK,"_LXCHG_U16",A="FL:::/Kernel/KUtils.CPP.Z,235"$
 $LK,"_LXCHG_U32",A="FL:::/Kernel/KUtils.CPP.Z,226"$
 $LK,"SYS_PROGRESS1",A="FL:::/Kernel/KStart.CPP.Z,208"$
-$LK,"DOCT_FOOTER",A="FL:::/Kernel/KernelA.HPP,906"$
+$LK,"DOCT_FOOTER",A="FL:::/Kernel/KernelA.HPP,908"$
 $LK,"MEM_NUM_E820_ENTRIES",A="FL:::/Kernel/KernelA.HPP,354"$
 $LK,"MPAPICInit",A="FL:::/Kernel/MultiProc.CPP.Z,171",BI=169$
 $LK,"SYS_PROGRESS2",A="FL:::/Kernel/KStart.CPP.Z,211"$
-$LK,"DOCEf_SKIP",A="FL:::/Kernel/KernelA.HPP,1096"$
-$LK,"DOCEF_SKIP",A="FL:::/Kernel/KernelA.HPP,1012"$
+$LK,"DOCEf_SKIP",A="FL:::/Kernel/KernelA.HPP,1100"$
+$LK,"DOCEF_SKIP",A="FL:::/Kernel/KernelA.HPP,1014"$
 $LK,"SPF_COMMA",A="FL:::/Kernel/StrPrint.CPP.Z,4"$
 $LK,"SYS_PROGRESS3",A="FL:::/Kernel/KStart.CPP.Z,214"$
-$LK,"CSrvCtrl",A="FL:::/Kernel/KernelA.HPP,3187"$
+$LK,"CSrvCtrl",A="FL:::/Kernel/KernelA.HPP,3206"$
 $LK,"DirNew",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,1",BI=170$
 $LK,"SYS_PROGRESS4",A="FL:::/Kernel/KStart.CPP.Z,217"$
-$LK,"_RAX",A="FL:::/Kernel/KernelA.HPP,3396"$
+$LK,"_RAX",A="FL:::/Kernel/KernelA.HPP,3415"$
 $LK,"FAT32DirNew",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,576",BI=171$
-$LK,"HTf_RESOLVED",A="FL:::/Kernel/KernelA.HPP,673"$
+$LK,"HTf_RESOLVED",A="FL:::/Kernel/KernelA.HPP,674"$
 $LK,"LinkedLstDel",A="FL:::/Kernel/KDataTypes.CPP.Z,1",BI=172$
 $LK,"Help",A="FL:::/Kernel/StrB.CPP.Z,115",BI=173$
 $LK,"Log2",A="FL:::/Kernel/KernelB.HPP,137"$
-$LK,"_RBX",A="FL:::/Kernel/KernelA.HPP,3397"$
-$LK,"DOCT_HEX_ED",A="FL:::/Kernel/KernelA.HPP,928"$
-$LK,"DOCT_LINK",A="FL:::/Kernel/KernelA.HPP,921"$
+$LK,"_RBX",A="FL:::/Kernel/KernelA.HPP,3416"$
+$LK,"DOCT_HEX_ED",A="FL:::/Kernel/KernelA.HPP,930"$
+$LK,"DOCT_LINK",A="FL:::/Kernel/KernelA.HPP,923"$
 $LK,"_D3_COPY",A="FL:::/Kernel/KMathA.CPP.Z,212"$
 $LK,"PUT_STR",A="FL:::/Kernel/StrA.CPP.Z,58"$
 $LK,"_RET",A="FL:::/Kernel/KUtils.CPP.Z,457"$
-$LK,"_RCX",A="FL:::/Kernel/KernelA.HPP,3398"$
+$LK,"_RCX",A="FL:::/Kernel/KernelA.HPP,3417"$
 $LK,"BIOSTotalMem",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,169",BI=174$
-$LK,"_RDX",A="FL:::/Kernel/KernelA.HPP,3399"$
-$LK,"RLF_FULL_HEAP",A="FL:::/Kernel/KernelA.HPP,459"$
-$LK,"RLf_FULL_HEAP",A="FL:::/Kernel/KernelA.HPP,440"$
+$LK,"_RDX",A="FL:::/Kernel/KernelA.HPP,3418"$
+$LK,"RLF_FULL_HEAP",A="FL:::/Kernel/KernelA.HPP,460"$
+$LK,"RLf_FULL_HEAP",A="FL:::/Kernel/KernelA.HPP,441"$
 $LK,"ScanMsg",A="FL:::/Kernel/SerialDev/Message.CPP.Z,37",BI=175$
 $LK,"SYS_PROGRESS4_DESC",A="FL:::/Kernel/KStart.CPP.Z,219"$
-$LK,"__FILE__",A="FL:::/Kernel/KernelA.HPP,2007"$
-$LK,"TY_REG",A="FL:::/Kernel/KernelA.HPP,1563"$
+$LK,"__FILE__",A="FL:::/Kernel/KernelA.HPP,2027"$
 $LK,"CDate",A="FL:::/Kernel/KernelA.HPP,184"$
 $LK,"CLFlush",A="FL:::/Kernel/KernelB.HPP,275"$
 $LK,"SYS_HEAP_DBG_FLAG",A="FL:::/Kernel/KStart.CPP.Z,199"$
-$LK,"_RIP",A="FL:::/Kernel/KernelA.HPP,3404"$
-$LK,"IEF_REX_ONLY_R8_R15",A="FL:::/Kernel/KernelA.HPP,1713"$
-$LK,"DOCSS_SINGLE_QUOTE",A="FL:::/Kernel/KernelA.HPP,1119"$
-$LK,"KBD_PORT",A="FL:::/Kernel/KernelA.HPP,2971"$
-$LK,"NUM_COLORS",A="FL:::/Kernel/KernelA.HPP,2946"$
+$LK,"_RIP",A="FL:::/Kernel/KernelA.HPP,3423"$
+$LK,"IEF_REX_ONLY_R8_R15",A="FL:::/Kernel/KernelA.HPP,1731"$
+$LK,"MDF_IMM",A="FL:::/Kernel/KernelA.HPP,1577"$
+$LK,"DOCSS_SINGLE_QUOTE",A="FL:::/Kernel/KernelA.HPP,1125"$
+$LK,"KBD_PORT",A="FL:::/Kernel/KernelA.HPP,2990"$
+$LK,"NUM_COLORS",A="FL:::/Kernel/KernelA.HPP,2965"$
 $LK,"ac",A="FL:::/Kernel/KGlbls.CPP.Z,18"$
 $LK,"_FSTSW",A="FL:::/Kernel/KMathA.CPP.Z,641"$
-$LK,"ARGT_IMM32",A="FL:::/Kernel/KernelA.HPP,1863"$
-$LK,"ARGT_IMM16",A="FL:::/Kernel/KernelA.HPP,1862"$
+$LK,"ARGT_IMM32",A="FL:::/Kernel/KernelA.HPP,1882"$
+$LK,"ARGT_IMM16",A="FL:::/Kernel/KernelA.HPP,1881"$
 $LK,"MouseSpeedSet",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,114",BI=176$
 $LK,"Name2ParentDirCluster",A="FL:::/Kernel/BlkDev/DskStrB.CPP.Z,54",BI=177$
 $LK,"Free",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,383"$
-$LK,"DOCEf_AUX_STR",A="FL:::/Kernel/KernelA.HPP,1047"$
-$LK,"DOCEF_AUX_STR",A="FL:::/Kernel/KernelA.HPP,961"$
+$LK,"DOCEf_AUX_STR",A="FL:::/Kernel/KernelA.HPP,1051"$
+$LK,"DOCEF_AUX_STR",A="FL:::/Kernel/KernelA.HPP,963"$
 $LK,"Char2KeyName",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,201",BI=178$
 $LK,"Mem512Free",A="FL:::/Kernel/Mem/Mem512.CPP.Z,83",BI=179$
 $LK,"blkdev",A="FL:::/Kernel/KGlbls.CPP.Z,19"$
-$LK,"TK_NUM_TK",A="FL:::/Kernel/KernelA.HPP,2088"$
-$LK,"TY_SIB",A="FL:::/Kernel/KernelA.HPP,1565"$
-$LK,"CWinMgrGlbls",A="FL:::/Kernel/KernelA.HPP,1459"$
-$LK,"DOCEf_TREE",A="FL:::/Kernel/KernelA.HPP,1094"$
-$LK,"DOCEF_TREE",A="FL:::/Kernel/KernelA.HPP,1010"$
+$LK,"TK_NUM_TK",A="FL:::/Kernel/KernelA.HPP,2108"$
+$LK,"CWinMgrGlbls",A="FL:::/Kernel/KernelA.HPP,1465"$
+$LK,"DOCEf_TREE",A="FL:::/Kernel/KernelA.HPP,1098"$
+$LK,"DOCEF_TREE",A="FL:::/Kernel/KernelA.HPP,1012"$
 $LK,"MouseUpdatePre",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,124",BI=180$
 $LK,"ISO1FileFind",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,130",BI=181$
-$LK,"TASK_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3276"$
+$LK,"TASK_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3295"$
 $LK,"SysDefinesLoad",A="FL:::/Kernel/KDefine.CPP.Z,97",BI=182$
 $LK,"Mem512TaskAlloc",A="FL:::/Kernel/Mem/Mem512.CPP.Z,114",BI=183$
-$LK,"MEM_MAPPED_SPACE",A="FL:::/Kernel/KernelA.HPP,3439"$
+$LK,"MEM_MAPPED_SPACE",A="FL:::/Kernel/KernelA.HPP,3458"$
 $LK,"D3Norm",A="FL:::/Kernel/KernelB.HPP,164"$
 $LK,"_POW",A="FL:::/Kernel/KMathA.CPP.Z,515"$
-$LK,"MSG_KEY_DOWN",A="FL:::/Kernel/KernelA.HPP,3198"$
-$LK,"ARGT_IMM64",A="FL:::/Kernel/KernelA.HPP,1864"$
-$LK,"TASK_HASH_TABLE_SIZE",A="FL:::/Kernel/KernelA.HPP,2861"$
-$LK,"DOCT_BUTTON",A="FL:::/Kernel/KernelA.HPP,922"$
+$LK,"MSG_KEY_DOWN",A="FL:::/Kernel/KernelA.HPP,3217"$
+$LK,"ARGT_IMM64",A="FL:::/Kernel/KernelA.HPP,1883"$
+$LK,"RTG_MASK",A="FL:::/Kernel/KernelA.HPP,1566"$
+$LK,"TASK_HASH_TABLE_SIZE",A="FL:::/Kernel/KernelA.HPP,2880"$
+$LK,"DOCT_BUTTON",A="FL:::/Kernel/KernelA.HPP,924"$
 $LK,"drv_text_attr",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,279"$
 $LK,"PUT_HEX_U8",A="FL:::/Kernel/StrA.CPP.Z,44"$
-$LK,"_RSI",A="FL:::/Kernel/KernelA.HPP,3400"$
-$LK,"CTRLF_CAPTURE_RIGHT_IP",A="FL:::/Kernel/KernelA.HPP,3066"$
+$LK,"_RSI",A="FL:::/Kernel/KernelA.HPP,3419"$
+$LK,"CTRLF_CAPTURE_RIGHT_IP",A="FL:::/Kernel/KernelA.HPP,3085"$
 $LK,"CPUStructInit",A="FL:::/Kernel/MultiProc.CPP.Z,116",BI=184$
-$LK,"WIf_FOCUS_TASK_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1446"$
-$LK,"WIF_FOCUS_TASK_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1421"$
-$LK,"CIntermediateCode",A="FL:::/Kernel/KernelA.HPP,1633"$
-$LK,"DOC_COLOR_ANCHOR",A="FL:::/Kernel/KernelA.HPP,1128"$
+$LK,"WIf_FOCUS_TASK_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1452"$
+$LK,"WIF_FOCUS_TASK_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1427"$
+$LK,"CIntermediateCode",A="FL:::/Kernel/KernelA.HPP,1653"$
+$LK,"MDF_REG",A="FL:::/Kernel/KernelA.HPP,1578"$
+$LK,"DOC_COLOR_ANCHOR",A="FL:::/Kernel/KernelA.HPP,1134"$
 $LK,"Str2ColorU32",A="FL:::/Kernel/KDefine.CPP.Z,201",BI=185$
 $LK,"Str2ColorU16",A="FL:::/Kernel/KDefine.CPP.Z,157",BI=186$
 $LK,"LinkedLstCnt",A="FL:::/Kernel/KDataTypes.CPP.Z,21",BI=187$
 $LK,"Auto",A="FL:::/Kernel/SrvCmd.CPP.Z,483",BI=188$
-$LK,"CTRLT_VIEWING_ANGLES",A="FL:::/Kernel/KernelA.HPP,3061"$
-$LK,"DOCEf_QUIT",A="FL:::/Kernel/KernelA.HPP,1080"$
-$LK,"DOCEF_QUIT",A="FL:::/Kernel/KernelA.HPP,994"$
+$LK,"CTRLT_VIEWING_ANGLES",A="FL:::/Kernel/KernelA.HPP,3080"$
+$LK,"DOCEf_QUIT",A="FL:::/Kernel/KernelA.HPP,1084"$
+$LK,"DOCEF_QUIT",A="FL:::/Kernel/KernelA.HPP,996"$
 $LK,"Tabs2Spaces",A="FL:::/Kernel/StrB.CPP.Z,1",BI=189$
 $LK,"MaxI64",A="FL:::/Kernel/KernelB.HPP,98"$
 $LK,"SYS_GDT_PTR",A="FL:::/Kernel/KStart.CPP.Z,49"$
-$LK,"_RSP",A="FL:::/Kernel/KernelA.HPP,3403"$
-$LK,"DOCT_INS_BIN_SIZE",A="FL:::/Kernel/KernelA.HPP,932"$
+$LK,"_RSP",A="FL:::/Kernel/KernelA.HPP,3422"$
+$LK,"DOCT_INS_BIN_SIZE",A="FL:::/Kernel/KernelA.HPP,934"$
 $LK,"FSetCluster",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,100",BI=190$
 $LK,"WinDerivedValsUpdate",A="FL:::/Kernel/Display.CPP.Z,93",BI=191$
 $LK,"fp_update_ctrls",A="FL:::/Kernel/KGlbls.CPP.Z,32"$
-$LK,"DSK_CACHE_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2716"$
-$LK,"RS_ATTR_VOL_ID",A="FL:::/Kernel/KernelA.HPP,2505"$
-$LK,"DOCf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1313"$
-$LK,"DOCF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1276"$
-$LK,"DOCT_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,914"$
+$LK,"DSK_CACHE_HASH_SIZE",A="FL:::/Kernel/KernelA.HPP,2735"$
+$LK,"RS_ATTR_VOL_ID",A="FL:::/Kernel/KernelA.HPP,2524"$
+$LK,"DOCf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1319"$
+$LK,"DOCF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1282"$
+$LK,"DOCT_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,916"$
 $LK,"IntDivZero",A="FL:::/Kernel/KInts.CPP.Z,143",BI=192$
 $LK,"_SQR",A="FL:::/Kernel/KMathA.CPP.Z,337"$
-$LK,"DISPLAYf_SILENT",A="FL:::/Kernel/KernelA.HPP,3271"$
-$LK,"REGT_R32",A="FL:::/Kernel/KernelA.HPP,736"$
-$LK,"REGT_R16",A="FL:::/Kernel/KernelA.HPP,735"$
-$LK,"IEF_NOT_IN_64_BIT",A="FL:::/Kernel/KernelA.HPP,1711"$
+$LK,"DISPLAYf_SILENT",A="FL:::/Kernel/KernelA.HPP,3290"$
+$LK,"MDF_SIB",A="FL:::/Kernel/KernelA.HPP,1580"$
+$LK,"REGT_R32",A="FL:::/Kernel/KernelA.HPP,737"$
+$LK,"REGT_R16",A="FL:::/Kernel/KernelA.HPP,736"$
+$LK,"IEF_NOT_IN_64_BIT",A="FL:::/Kernel/KernelA.HPP,1729"$
 $LK,"RedSeaFileFind",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,153",BI=193$
 $LK,"SYS_PCIBIOS_SERVICE_DIR",A="FL:::/Kernel/PCIBIOS.CPP.Z,4"$
 $LK,"tS",A="FL:::/Kernel/KMisc.CPP.Z,122",BI=194$
 $LK,"LBEqu",A="FL:::/Kernel/KernelB.HPP,34"$
 $LK,"ArcDetermineCompressionType",A="FL:::/Kernel/Compress.CPP.Z,102",BI=195$
-$LK,"SYS_SEMA_REFRESH_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,597"$
+$LK,"SYS_SEMA_REFRESH_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,598"$
 $LK,"IntInit1",A="FL:::/Kernel/KInts.CPP.Z,173",BI=196$
-$LK,"CH_CURSOR",A="FL:::/Kernel/KernelA.HPP,3487"$
+$LK,"CH_CURSOR",A="FL:::/Kernel/KernelA.HPP,3506"$
 $LK,"IntInit2",A="FL:::/Kernel/KInts.CPP.Z,188",BI=197$
-$LK,"DOCT_CURSOR",A="FL:::/Kernel/KernelA.HPP,898"$
+$LK,"DOCT_CURSOR",A="FL:::/Kernel/KernelA.HPP,899"$
 $LK,"GetKey",A="FL:::/Kernel/SerialDev/Message.CPP.Z,142",BI=198$
-$LK,"ROP_MONO",A="FL:::/Kernel/KernelA.HPP,2916"$
-$LK,"CFAT32DirEntryLong",A="FL:::/Kernel/KernelA.HPP,2372"$
+$LK,"ROP_MONO",A="FL:::/Kernel/KernelA.HPP,2935"$
+$LK,"CFAT32DirEntryLong",A="FL:::/Kernel/KernelA.HPP,2391"$
 $LK,"Kill",A="FL:::/Kernel/KTask.CPP.Z,28",BI=199$
-$LK,"RS_ATTR_FIXED",A="FL:::/Kernel/KernelA.HPP,2515"$
-$LK,"TK_IFDEF",A="FL:::/Kernel/KernelA.HPP,2077"$
-$LK,"REGT_R64",A="FL:::/Kernel/KernelA.HPP,737"$
+$LK,"RS_ATTR_FIXED",A="FL:::/Kernel/KernelA.HPP,2534"$
+$LK,"TK_IFDEF",A="FL:::/Kernel/KernelA.HPP,2097"$
+$LK,"REGT_R64",A="FL:::/Kernel/KernelA.HPP,738"$
 $LK,"SingleUser",A="FL:::/Kernel/KMisc.CPP.Z,255",BI=200$
 $LK,"Date2Struct",A="FL:::/Kernel/KDate.CPP.Z,39",BI=201$
-$LK,"CFile",A="FL:::/Kernel/KernelA.HPP,2758"$
+$LK,"CFile",A="FL:::/Kernel/KernelA.HPP,2777"$
 $LK,"Fault2",A="FL:::/Kernel/KDbg.CPP.Z,595",BI=202$
 $LK,"Load",A="FL:::/Kernel/KLoad.CPP.Z,181",BI=203$
 $LK,"ip",A="FL:::/Kernel/KGlbls.CPP.Z,24"$
-$LK,"CFreeLst",A="FL:::/Kernel/KernelA.HPP,2681"$
-$LK,"DOCEF_CHECKED_COLLAPSED",A="FL:::/Kernel/KernelA.HPP,999"$
-$LK,"CHash",A="FL:::/Kernel/KernelA.HPP,619"$
+$LK,"CFreeLst",A="FL:::/Kernel/KernelA.HPP,2700"$
+$LK,"DOCEF_CHECKED_COLLAPSED",A="FL:::/Kernel/KernelA.HPP,1001"$
+$LK,"CHash",A="FL:::/Kernel/KernelA.HPP,620"$
 $LK,"RedSeaFreeClusters",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,248",BI=204$
 $LK,"Fault3",A="FL:::/Kernel/KDbg.CPP.Z,561",BI=205$
 $LK,"CompressBuf",A="FL:::/Kernel/Compress.CPP.Z,281",BI=206$
 $LK,"chars_bmp_hex_numeric",A="FL:::/Kernel/StrA.CPP.Z,353"$
-$LK,"CCF_NOT_CONST",A="FL:::/Kernel/KernelA.HPP,2115"$
+$LK,"CCF_NOT_CONST",A="FL:::/Kernel/KernelA.HPP,2135"$
 $LK,"CeilU64",A="FL:::/Kernel/KMathB.CPP.Z,41",BI=207$
-$LK,"BPlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2864"$
-$LK,"BDlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2633"$
-$LK,"TK_OR_EQU",A="FL:::/Kernel/KernelA.HPP,2072"$
+$LK,"BPlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2883"$
+$LK,"BDlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2652"$
+$LK,"TK_OR_EQU",A="FL:::/Kernel/KernelA.HPP,2092"$
 $LK,"sys_neg_pows_lst",A="FL:::/Kernel/StrPrint.CPP.Z,214"$
 $LK,"sys_pos_pows_lst",A="FL:::/Kernel/StrPrint.CPP.Z,213"$
 $LK,"MStrPrint",A="FL:::/Kernel/StrPrint.CPP.Z,915",BI=208$
-$LK,"DVlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2655"$
+$LK,"DVlf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2674"$
 $LK,"SrcFileName",A="FL:::/Kernel/FunSeg.CPP.Z,199",BI=209$
 $LK,"RawD",A="FL:::/Kernel/KDbg.CPP.Z,234",BI=210$
 $LK,"IsSingleUser",A="FL:::/Kernel/KMisc.CPP.Z,260",BI=211$
 $LK,"adam_task",A="FL:::/Kernel/KGlbls.CPP.Z,8"$
 $LK,"_POW10",A="FL:::/Kernel/KMathA.CPP.Z,524"$
-$LK,"SVCRf_LOCKED",A="FL:::/Kernel/KernelA.HPP,3186"$
-$LK,"BDF_LAST_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,2616"$
-$LK,"TY_STK",A="FL:::/Kernel/KernelA.HPP,1569"$
-$LK,"DOCT_CURSOR_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,919"$
-$LK,"SCF_CTRL",A="FL:::/Kernel/KernelA.HPP,3517"$
-$LK,"SCf_CTRL",A="FL:::/Kernel/KernelA.HPP,3502"$
-$LK,"TK_ENDIF",A="FL:::/Kernel/KernelA.HPP,2081"$
-$LK,"RT_UF32",A="FL:::/Kernel/KernelA.HPP,1555"$
-$LK,"CCF_NO_REG_OPT",A="FL:::/Kernel/KernelA.HPP,2116"$
-$LK,"DOCEf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1042"$
-$LK,"DOCEF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1036"$
-$LK,"DOCEt_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,950"$
-$LK,"DOCET_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,944"$
-$LK,"RLf_DOC",A="FL:::/Kernel/KernelA.HPP,446"$
+$LK,"SVCRf_LOCKED",A="FL:::/Kernel/KernelA.HPP,3205"$
+$LK,"BDF_LAST_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,2635"$
+$LK,"DOCT_CURSOR_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,921"$
+$LK,"SCF_CTRL",A="FL:::/Kernel/KernelA.HPP,3536"$
+$LK,"SCf_CTRL",A="FL:::/Kernel/KernelA.HPP,3521"$
+$LK,"TK_ENDIF",A="FL:::/Kernel/KernelA.HPP,2101"$
+$LK,"RT_UF32",A="FL:::/Kernel/KernelA.HPP,1561"$
+$LK,"CCF_NO_REG_OPT",A="FL:::/Kernel/KernelA.HPP,2136"$
+$LK,"DOCEf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1046"$
+$LK,"DOCEF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,1040"$
+$LK,"DOCEt_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,952"$
+$LK,"DOCET_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,946"$
+$LK,"RLf_DOC",A="FL:::/Kernel/KernelA.HPP,447"$
 $LK,"pi",A="FL:::/Kernel/KernelA.HPP,48"$
-$LK,"ICF_ALTERNATE_TEMPLATE",A="FL:::/Kernel/KernelA.HPP,1597"$
-$LK,"ATTRF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,887"$
-$LK,"ATTRf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,892"$
+$LK,"ATTRF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,888"$
+$LK,"ATTRf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,893"$
 $LK,"KbdMouseVarsInit",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,276",BI=212$
-$LK,"DOCF_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1265"$
-$LK,"RT_MASK",A="FL:::/Kernel/KernelA.HPP,1559"$
-$LK,"SYS_SEMA_UPDATE_WIN_Z_BUF",A="FL:::/Kernel/KernelA.HPP,604"$
+$LK,"DOCF_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1271"$
+$LK,"SYS_SEMA_UPDATE_WIN_Z_BUF",A="FL:::/Kernel/KernelA.HPP,605"$
 $LK,"Exit",A="FL:::/Kernel/KTask.CPP.Z,1",BI=213$
-$LK,"TASKf_BREAK_TO_SHIFT_ESC",A="FL:::/Kernel/KernelA.HPP,3264"$
-$LK,"HTT_KEYWORD",A="FL:::/Kernel/KernelA.HPP,687"$
+$LK,"TASKf_BREAK_TO_SHIFT_ESC",A="FL:::/Kernel/KernelA.HPP,3283"$
+$LK,"HTT_KEYWORD",A="FL:::/Kernel/KernelA.HPP,688"$
 $LK,"CopySingleZ",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,1",BI=214$
-$LK,"DCF_NO_TRANSPARENTS",A="FL:::/Kernel/KernelA.HPP,3601"$
-$LK,"HTt_KEYWORD",A="FL:::/Kernel/KernelA.HPP,657"$
-$LK,"SYS_SEMA_IN_DEBUGGER",A="FL:::/Kernel/KernelA.HPP,593"$
-$LK,"RT_UF64",A="FL:::/Kernel/KernelA.HPP,1557"$
-$LK,"DOCf_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1301"$
+$LK,"DCF_NO_TRANSPARENTS",A="FL:::/Kernel/KernelA.HPP,3620"$
+$LK,"HTt_KEYWORD",A="FL:::/Kernel/KernelA.HPP,658"$
+$LK,"SYS_SEMA_IN_DEBUGGER",A="FL:::/Kernel/KernelA.HPP,594"$
+$LK,"RT_UF64",A="FL:::/Kernel/KernelA.HPP,1563"$
+$LK,"DOCf_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1307"$
 $LK,"GetMsg",A="FL:::/Kernel/SerialDev/Message.CPP.Z,95",BI=215$
-$LK,"CMPCrash",A="FL:::/Kernel/KernelA.HPP,3835"$
-$LK,"MEM_NUM_PML1",A="FL:::/Kernel/KernelA.HPP,3440"$
-$LK,"ROPBF_HALF_RANGE_COLOR",A="FL:::/Kernel/KernelA.HPP,2908"$
-$LK,"MEM_NUM_PML2",A="FL:::/Kernel/KernelA.HPP,3441"$
-$LK,"ICF_SHORT_JMP",A="FL:::/Kernel/KernelA.HPP,1584"$
-$LK,"IA32_FS_BASE",A="FL:::/Kernel/KernelA.HPP,518"$
+$LK,"CMPCrash",A="FL:::/Kernel/KernelA.HPP,3854"$
+$LK,"MEM_NUM_PML1",A="FL:::/Kernel/KernelA.HPP,3459"$
+$LK,"ROPBF_HALF_RANGE_COLOR",A="FL:::/Kernel/KernelA.HPP,2927"$
+$LK,"MEM_NUM_PML2",A="FL:::/Kernel/KernelA.HPP,3460"$
+$LK,"ICF_SHORT_JMP",A="FL:::/Kernel/KernelA.HPP,1599"$
+$LK,"IA32_FS_BASE",A="FL:::/Kernel/KernelA.HPP,519"$
 $LK,"Rand",A="FL:::/Kernel/KMathB.CPP.Z,122",BI=216$
-$LK,"MEM_NUM_PML3",A="FL:::/Kernel/KernelA.HPP,3442"$
-$LK,"FAT32_ENTRIES_BITS",A="FL:::/Kernel/KernelA.HPP,2385"$
-$LK,"TK_IDENT",A="FL:::/Kernel/KernelA.HPP,2049"$
+$LK,"MEM_NUM_PML3",A="FL:::/Kernel/KernelA.HPP,3461"$
+$LK,"FAT32_ENTRIES_BITS",A="FL:::/Kernel/KernelA.HPP,2404"$
+$LK,"TK_IDENT",A="FL:::/Kernel/KernelA.HPP,2069"$
 $LK,"ArcCompressBuf",A="FL:::/Kernel/Compress.CPP.Z,110",BI=217$
-$LK,"MEM_NUM_PML4",A="FL:::/Kernel/KernelA.HPP,3443"$
+$LK,"MEM_NUM_PML4",A="FL:::/Kernel/KernelA.HPP,3462"$
+$LK,"MDG_REG_DISP_SIB_RIP",A="FL:::/Kernel/KernelA.HPP,1585"$
 $LK,"ToFileLine",A="FL:::/Kernel/EdLite.CPP.Z,303",BI=218$
 $LK,"D3Unit",A="FL:::/Kernel/KernelB.HPP,168"$
-$LK,"CTRLT_WIN_HSCROLL",A="FL:::/Kernel/KernelA.HPP,3059"$
-$LK,"TK_IFAOT",A="FL:::/Kernel/KernelA.HPP,2079"$
+$LK,"CTRLT_WIN_HSCROLL",A="FL:::/Kernel/KernelA.HPP,3078"$
+$LK,"TK_IFAOT",A="FL:::/Kernel/KernelA.HPP,2099"$
 $LK,"IsDotC",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,31",BI=219$
-$LK,"BDf_LAST_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,2626"$
-$LK,"TK_GREATER_EQU",A="FL:::/Kernel/KernelA.HPP,2063"$
-$LK,"CICArg",A="FL:::/Kernel/KernelA.HPP,1610"$
-$LK,"DOCEf_CENTER_X",A="FL:::/Kernel/KernelA.HPP,1068"$
-$LK,"DOCEF_CENTER_X",A="FL:::/Kernel/KernelA.HPP,982"$
-$LK,"SYS_TIMER_FREQ",A="FL:::/Kernel/KernelA.HPP,548"$
+$LK,"BDf_LAST_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,2645"$
+$LK,"TK_GREATER_EQU",A="FL:::/Kernel/KernelA.HPP,2083"$
+$LK,"CICArg",A="FL:::/Kernel/KernelA.HPP,1629"$
+$LK,"MDF_STK",A="FL:::/Kernel/KernelA.HPP,1576"$
+$LK,"DOCEf_CENTER_X",A="FL:::/Kernel/KernelA.HPP,1072"$
+$LK,"DOCEF_CENTER_X",A="FL:::/Kernel/KernelA.HPP,984"$
+$LK,"SYS_TIMER_FREQ",A="FL:::/Kernel/KernelA.HPP,549"$
 $LK,"HashTablePurge",A="FL:::/Kernel/KHashB.CPP.Z,107",BI=220$
-$LK,"GR_HEIGHT",A="FL:::/Kernel/KernelA.HPP,3590"$
-$LK,"DOCEf_CENTER_Y",A="FL:::/Kernel/KernelA.HPP,1071"$
-$LK,"DOCEF_CENTER_Y",A="FL:::/Kernel/KernelA.HPP,985"$
+$LK,"GR_HEIGHT",A="FL:::/Kernel/KernelA.HPP,3609"$
+$LK,"DOCEf_CENTER_Y",A="FL:::/Kernel/KernelA.HPP,1075"$
+$LK,"DOCEF_CENTER_Y",A="FL:::/Kernel/KernelA.HPP,987"$
 $LK,"Seed",A="FL:::/Kernel/KMathB.CPP.Z,128",BI=221$
 $LK,"DrvsRelease",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,27",BI=222$
-$LK,"TASKf_FILTER_INPUT",A="FL:::/Kernel/KernelA.HPP,3258"$
-$LK,"DOCEF_REFRESH_DATA",A="FL:::/Kernel/KernelA.HPP,1001"$
-$LK,"DOCf_DONT_HIGHLIGHT_CURSOR",A="FL:::/Kernel/KernelA.HPP,1295"$
-$LK,"DOCF_DONT_HIGHLIGHT_CURSOR",A="FL:::/Kernel/KernelA.HPP,1259"$
-$LK,"SYS_SEMA_FLUSH_VGA_IMAGE",A="FL:::/Kernel/KernelA.HPP,598"$
-$LK,"OPTf_NO_REG_VAR",A="FL:::/Kernel/KernelA.HPP,1533"$
-$LK,"CTRLF_SHOW",A="FL:::/Kernel/KernelA.HPP,3063"$
-$LK,"DOCEf_REFRESH_DATA",A="FL:::/Kernel/KernelA.HPP,1087"$
-$LK,"DOCEf_LEFT_EXP",A="FL:::/Kernel/KernelA.HPP,1050"$
-$LK,"DOCEF_LEFT_EXP",A="FL:::/Kernel/KernelA.HPP,964"$
+$LK,"TASKf_FILTER_INPUT",A="FL:::/Kernel/KernelA.HPP,3277"$
+$LK,"DOCEF_REFRESH_DATA",A="FL:::/Kernel/KernelA.HPP,1003"$
+$LK,"DOCf_DONT_HIGHLIGHT_CURSOR",A="FL:::/Kernel/KernelA.HPP,1301"$
+$LK,"DOCF_DONT_HIGHLIGHT_CURSOR",A="FL:::/Kernel/KernelA.HPP,1265"$
+$LK,"SYS_SEMA_FLUSH_VGA_IMAGE",A="FL:::/Kernel/KernelA.HPP,599"$
+$LK,"OPTf_NO_REG_VAR",A="FL:::/Kernel/KernelA.HPP,1539"$
+$LK,"CTRLF_SHOW",A="FL:::/Kernel/KernelA.HPP,3082"$
+$LK,"DOCEf_REFRESH_DATA",A="FL:::/Kernel/KernelA.HPP,1091"$
+$LK,"DOCEf_LEFT_EXP",A="FL:::/Kernel/KernelA.HPP,1054"$
+$LK,"DOCEF_LEFT_EXP",A="FL:::/Kernel/KernelA.HPP,966"$
 $LK,"ISO1FileRead",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,190",BI=223$
 $LK,"ATAPIWaitReady",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,334",BI=224$
-$LK,"SC_PRTSCRN1",A="FL:::/Kernel/KernelA.HPP,3567"$
-$LK,"FUF_ALL",A="FL:::/Kernel/KernelA.HPP,2575"$
+$LK,"SC_PRTSCRN1",A="FL:::/Kernel/KernelA.HPP,3586"$
+$LK,"FUF_ALL",A="FL:::/Kernel/KernelA.HPP,2594"$
 $LK,"STR_LEN",A="FL:::/Kernel/KernelA.HPP,39"$
 $LK,"DskCacheQueIns",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,53",BI=225$
-$LK,"SC_PRTSCRN2",A="FL:::/Kernel/KernelA.HPP,3568"$
+$LK,"SC_PRTSCRN2",A="FL:::/Kernel/KernelA.HPP,3587"$
 $LK,"sys_semas",A="FL:::/Kernel/KernelB.HPP,237"$
 $LK,"InputFilterTask",A="FL:::/Kernel/SerialDev/Message.CPP.Z,1",BI=226$
 $LK,"SYS_HASH_STR",A="FL:::/Kernel/KHashA.CPP.Z,4"$
-$LK,"ATAR0_CMD",A="FL:::/Kernel/KernelA.HPP,2261"$
+$LK,"ATAR0_CMD",A="FL:::/Kernel/KernelA.HPP,2280"$
 $LK,"I_DBG",A="FL:::/Kernel/KernelA.HPP,294"$
 $LK,"FATNameTo",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,130",BI=227$
 $LK,"SrvCmdQueDel",A="FL:::/Kernel/SrvCmd.CPP.Z,7",BI=228$
@@ -996,287 +998,288 @@ $LK,"MaxU64",A="FL:::/Kernel/KernelB.HPP,99"$
 $LK,"CallInd",A="FL:::/Kernel/KernelB.HPP,48"$
 $LK,"EndianI64",A="FL:::/Kernel/KMisc.CPP.Z,25",BI=229$
 $LK,"_MSIZE",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,337"$
-$LK,"AC_MAX_FILLINS",A="FL:::/Kernel/KernelA.HPP,1475"$
-$LK,"GVF_IMPORT",A="FL:::/Kernel/KernelA.HPP,862"$
-$LK,"HTF_IMPORT",A="FL:::/Kernel/KernelA.HPP,700"$
-$LK,"HTf_IMPORT",A="FL:::/Kernel/KernelA.HPP,670"$
-$LK,"NUM_BLKDEVS",A="FL:::/Kernel/KernelA.HPP,2635"$
-$LK,"IEF_PLUS_OPCODE",A="FL:::/Kernel/KernelA.HPP,1708"$
-$LK,"LAPIC_ICR_LOW",A="FL:::/Kernel/KernelA.HPP,491"$
+$LK,"AC_MAX_FILLINS",A="FL:::/Kernel/KernelA.HPP,1481"$
+$LK,"GVF_IMPORT",A="FL:::/Kernel/KernelA.HPP,863"$
+$LK,"HTF_IMPORT",A="FL:::/Kernel/KernelA.HPP,701"$
+$LK,"HTf_IMPORT",A="FL:::/Kernel/KernelA.HPP,671"$
+$LK,"NUM_BLKDEVS",A="FL:::/Kernel/KernelA.HPP,2654"$
+$LK,"IEF_PLUS_OPCODE",A="FL:::/Kernel/KernelA.HPP,1726"$
+$LK,"LAPIC_ICR_LOW",A="FL:::/Kernel/KernelA.HPP,492"$
 $LK,"mouse",A="FL:::/Kernel/KGlbls.CPP.Z,27"$
 $LK,"D3Zero",A="FL:::/Kernel/KernelB.HPP,169"$
-$LK,"ST_WARN_ST",A="FL:::/Kernel/KernelA.HPP,3496"$
-$LK,"FUF_SCAN_PARENTS",A="FL:::/Kernel/KernelA.HPP,2592"$
+$LK,"ST_WARN_ST",A="FL:::/Kernel/KernelA.HPP,3515"$
+$LK,"FUF_SCAN_PARENTS",A="FL:::/Kernel/KernelA.HPP,2611"$
 $LK,"DskCacheInvalidate2",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,97",BI=230$
-$LK,"CCtrl",A="FL:::/Kernel/KernelA.HPP,3085"$
-$LK,"CBlkDev",A="FL:::/Kernel/KernelA.HPP,2637"$
-$LK,"DOCT_SONG",A="FL:::/Kernel/KernelA.HPP,933"$
-$LK,"DOCT_TREE",A="FL:::/Kernel/KernelA.HPP,929"$
+$LK,"CCtrl",A="FL:::/Kernel/KernelA.HPP,3104"$
+$LK,"CBlkDev",A="FL:::/Kernel/KernelA.HPP,2656"$
+$LK,"DOCT_SONG",A="FL:::/Kernel/KernelA.HPP,935"$
+$LK,"DOCT_TREE",A="FL:::/Kernel/KernelA.HPP,931"$
 $LK,"progress1_desc",A="FL:::/Kernel/KernelB.HPP,214"$
-$LK,"BDS_ED_FILENAME_DRV",A="FL:::/Kernel/KernelA.HPP,3243"$
-$LK,"DOCT_TEXT",A="FL:::/Kernel/KernelA.HPP,895"$
+$LK,"BDS_ED_FILENAME_DRV",A="FL:::/Kernel/KernelA.HPP,3262"$
+$LK,"DOCT_TEXT",A="FL:::/Kernel/KernelA.HPP,896"$
 $LK,"CMathODE",A="FL:::/Kernel/KernelA.HPP,242"$
 $LK,"WinInside",A="FL:::/Kernel/Display.CPP.Z,126",BI=231$
 $LK,"RFLAGf_ALIGN_CHECK",A="FL:::/Kernel/KernelA.HPP,319"$
 $LK,"MAllocIdentical",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,407",BI=232$
-$LK,"FUf_SCAN_PARENTS",A="FL:::/Kernel/KernelA.HPP,2566"$
-$LK,"DOCF_ALLOW_UNDO",A="FL:::/Kernel/KernelA.HPP,1261"$
-$LK,"CMemberLst",A="FL:::/Kernel/KernelA.HPP,792"$
-$LK,"DOCf_ALLOW_UNDO",A="FL:::/Kernel/KernelA.HPP,1297"$
+$LK,"FUf_SCAN_PARENTS",A="FL:::/Kernel/KernelA.HPP,2585"$
+$LK,"DOCF_ALLOW_UNDO",A="FL:::/Kernel/KernelA.HPP,1267"$
+$LK,"CMemberLst",A="FL:::/Kernel/KernelA.HPP,793"$
+$LK,"DOCf_ALLOW_UNDO",A="FL:::/Kernel/KernelA.HPP,1303"$
 $LK,"DskCacheQueRem",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,46",BI=233$
 $LK,"_D3_NORM",A="FL:::/Kernel/KMathA.CPP.Z,4"$
-$LK,"DOCEf_BLINK",A="FL:::/Kernel/KernelA.HPP,1039"$
-$LK,"DOCEF_BLINK",A="FL:::/Kernel/KernelA.HPP,1033"$
+$LK,"DOCEf_BLINK",A="FL:::/Kernel/KernelA.HPP,1043"$
+$LK,"DOCEF_BLINK",A="FL:::/Kernel/KernelA.HPP,1037"$
 $LK,"IsDotZ",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,22",BI=234$
 $LK,"HashGenericAdd",A="FL:::/Kernel/KHashB.CPP.Z,140",BI=235$
 $LK,"_TASK_CONTEXT_RESTORE",A="FL:::/Kernel/Sched.CPP.Z,106"$
 $LK,"BFieldOrU32",A="FL:::/Kernel/KernelB.HPP,32"$
-$LK,"TK_IFJIT",A="FL:::/Kernel/KernelA.HPP,2080"$
+$LK,"TK_IFJIT",A="FL:::/Kernel/KernelA.HPP,2100"$
 $LK,"RedSeaFileRead",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,205",BI=236$
 $LK,"MousePktRead",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,1",BI=237$
-$LK,"VGAP_CRTC_DATA",A="FL:::/Kernel/KernelA.HPP,3713"$
-$LK,"ARGT_REL32",A="FL:::/Kernel/KernelA.HPP,1859"$
-$LK,"ARGT_REL16",A="FL:::/Kernel/KernelA.HPP,1858"$
+$LK,"VGAP_CRTC_DATA",A="FL:::/Kernel/KernelA.HPP,3732"$
+$LK,"ARGT_REL32",A="FL:::/Kernel/KernelA.HPP,1878"$
+$LK,"ARGT_REL16",A="FL:::/Kernel/KernelA.HPP,1877"$
 $LK,"cpu_structs",A="FL:::/Kernel/KernelB.HPP,233"$
-$LK,"SC_DELETE",A="FL:::/Kernel/KernelA.HPP,3552"$
+$LK,"SC_DELETE",A="FL:::/Kernel/KernelA.HPP,3571"$
 $LK,"MAX_U64_F64",A="FL:::/Kernel/KernelA.HPP,43"$
 $LK,"CLine",A="FL:::/Kernel/EdLite.CPP.Z,1"$
-$LK,"REGG_C_LOCAL_VARS",A="FL:::/Kernel/KernelA.HPP,1772"$
-$LK,"ACD_MAX_FILLINS",A="FL:::/Kernel/KernelA.HPP,1512"$
-$LK,"REGT_SEG",A="FL:::/Kernel/KernelA.HPP,738"$
+$LK,"ACD_MAX_FILLINS",A="FL:::/Kernel/KernelA.HPP,1518"$
+$LK,"REGT_SEG",A="FL:::/Kernel/KernelA.HPP,739"$
 $LK,"CMass",A="FL:::/Kernel/KernelA.HPP,207"$
 $LK,"GetStr",A="FL:::/Kernel/SerialDev/Message.CPP.Z,193",BI=238$
-$LK,"LTRED",A="FL:::/Kernel/KernelA.HPP,2941"$
-$LK,"FSG_TYPE_MASK",A="FL:::/Kernel/KernelA.HPP,2667"$
+$LK,"LTRED",A="FL:::/Kernel/KernelA.HPP,2960"$
+$LK,"FSG_TYPE_MASK",A="FL:::/Kernel/KernelA.HPP,2686"$
 $LK,"StrIMatch",A="FL:::/Kernel/StrA.CPP.Z,319"$
-$LK,"HTG_TYPE_MASK",A="FL:::/Kernel/KernelA.HPP,695"$
+$LK,"HTG_TYPE_MASK",A="FL:::/Kernel/KernelA.HPP,696"$
 $LK,"Sign",A="FL:::/Kernel/KernelB.HPP,141"$
 $LK,"ExpandBuf",A="FL:::/Kernel/Compress.CPP.Z,250",BI=239$
-$LK,"DOCT_PAGE_LEN",A="FL:::/Kernel/KernelA.HPP,902"$
-$LK,"RLf_RAW",A="FL:::/Kernel/KernelA.HPP,441"$
+$LK,"ICF_ALT_TEMPLATE",A="FL:::/Kernel/KernelA.HPP,1611"$
+$LK,"DOCT_PAGE_LEN",A="FL:::/Kernel/KernelA.HPP,904"$
+$LK,"RLf_RAW",A="FL:::/Kernel/KernelA.HPP,442"$
 $LK,"ToggleZorNotZ",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,255",BI=240$
-$LK,"VGAP_ATTR_INDEX",A="FL:::/Kernel/KernelA.HPP,3702"$
+$LK,"VGAP_ATTR_INDEX",A="FL:::/Kernel/KernelA.HPP,3721"$
 $LK,"D3MulEqu",A="FL:::/Kernel/KernelB.HPP,163"$
-$LK,"BDS_CONST",A="FL:::/Kernel/KernelA.HPP,3241"$
+$LK,"BDS_CONST",A="FL:::/Kernel/KernelA.HPP,3260"$
 $LK,"MP_MAX_PROCESSORS",A="FL:::/Kernel/KernelA.HPP,301"$
 $LK,"SysGlblsInit",A="FL:::/Kernel/KEnd.CPP.Z,1",BI=241$
 $LK,"PutSrcLink",A="FL:::/Kernel/FunSeg.CPP.Z,255",BI=242$
-$LK,"CMenu",A="FL:::/Kernel/KernelA.HPP,3119"$
-$LK,"BDT_ATAPI",A="FL:::/Kernel/KernelA.HPP,2609"$
-$LK,"FUF_MAP",A="FL:::/Kernel/KernelA.HPP,2580"$
-$LK,"CFAT32DirEntry",A="FL:::/Kernel/KernelA.HPP,2356"$
-$LK,"ACD_POS_END",A="FL:::/Kernel/KernelA.HPP,1500"$
-$LK,"DOCT_INVERT",A="FL:::/Kernel/KernelA.HPP,915"$
-$LK,"CMT_HASH_ENTRY",A="FL:::/Kernel/KernelA.HPP,1673"$
-$LK,"RLf_VGA",A="FL:::/Kernel/KernelA.HPP,435"$
-$LK,"WIf_FOCUS_TASK_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1444"$
-$LK,"LAPIC_LVT_PERF",A="FL:::/Kernel/KernelA.HPP,496"$
+$LK,"CMenu",A="FL:::/Kernel/KernelA.HPP,3138"$
+$LK,"BDT_ATAPI",A="FL:::/Kernel/KernelA.HPP,2628"$
+$LK,"FUF_MAP",A="FL:::/Kernel/KernelA.HPP,2599"$
+$LK,"CFAT32DirEntry",A="FL:::/Kernel/KernelA.HPP,2375"$
+$LK,"ACD_POS_END",A="FL:::/Kernel/KernelA.HPP,1506"$
+$LK,"DOCT_INVERT",A="FL:::/Kernel/KernelA.HPP,917"$
+$LK,"CMT_HASH_ENTRY",A="FL:::/Kernel/KernelA.HPP,1691"$
+$LK,"RLf_VGA",A="FL:::/Kernel/KernelA.HPP,436"$
+$LK,"WIf_FOCUS_TASK_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1450"$
+$LK,"LAPIC_LVT_PERF",A="FL:::/Kernel/KernelA.HPP,497"$
 $LK,"MemLowPagesProtect",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,58",BI=243$
-$LK,"SC_F1",A="FL:::/Kernel/KernelA.HPP,3553"$
+$LK,"SC_F1",A="FL:::/Kernel/KernelA.HPP,3572"$
 $LK,"SYS_SEMAS",A="FL:::/Kernel/KStart.CPP.Z,231"$
-$LK,"SC_F2",A="FL:::/Kernel/KernelA.HPP,3554"$
+$LK,"SC_F2",A="FL:::/Kernel/KernelA.HPP,3573"$
 $LK,"SYS_VAR_INIT_FLAG",A="FL:::/Home/Temp.TXT.Z,1"$
 $LK,"SYS_MEM_INIT_FLAG",A="FL:::/Home/Temp.TXT.Z,1"$
-$LK,"SC_F3",A="FL:::/Kernel/KernelA.HPP,3555"$
+$LK,"SC_F3",A="FL:::/Kernel/KernelA.HPP,3574"$
 $LK,"SignI64",A="FL:::/Kernel/KernelB.HPP,103"$
 $LK,"_CALLIND",A="FL:::/Kernel/KUtils.CPP.Z,333"$
-$LK,"SC_F4",A="FL:::/Kernel/KernelA.HPP,3556"$
-$LK,"WSSf_SET_TO_POS",A="FL:::/Kernel/KernelA.HPP,3069"$
-$LK,"RS_ATTR_SYSTEM",A="FL:::/Kernel/KernelA.HPP,2504"$
-$LK,"SYS_SEMA_MUTE",A="FL:::/Kernel/KernelA.HPP,606"$
+$LK,"SC_F4",A="FL:::/Kernel/KernelA.HPP,3575"$
+$LK,"WSSf_SET_TO_POS",A="FL:::/Kernel/KernelA.HPP,3088"$
+$LK,"RS_ATTR_SYSTEM",A="FL:::/Kernel/KernelA.HPP,2523"$
+$LK,"SYS_SEMA_MUTE",A="FL:::/Kernel/KernelA.HPP,607"$
 $LK,"I_BPT",A="FL:::/Kernel/KernelA.HPP,287"$
 $LK,"_TAKE_EXCEPT",A="FL:::/Kernel/KExcept.CPP.Z,20"$
 $LK,"DefineCnt",A="FL:::/Kernel/KDefine.CPP.Z,74",BI=244$
-$LK,"SC_F5",A="FL:::/Kernel/KernelA.HPP,3557"$
-$LK,"WIF_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HPP,1413"$
+$LK,"SC_F5",A="FL:::/Kernel/KernelA.HPP,3576"$
+$LK,"WIF_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HPP,1419"$
 $LK,"RedSeaCd",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,234",BI=245$
 $LK,"C:/Doc/Bit.TXT.Z",A="FL:::/Kernel/KernelB.HPP,9"$
-$LK,"SC_F6",A="FL:::/Kernel/KernelA.HPP,3558"$
+$LK,"SC_F6",A="FL:::/Kernel/KernelA.HPP,3577"$
 $LK,"SysGrInit",A="FL:::/Kernel/KEnd.CPP.Z,64",BI=246$
 $LK,"ArcCtrlDel",A="FL:::/Kernel/Compress.CPP.Z,244",BI=247$
 $LK,"SysBadMAlloc",A="FL:::/Kernel/Mem/Mem512.CPP.Z,6",BI=248$
-$LK,"SC_F7",A="FL:::/Kernel/KernelA.HPP,3559"$
-$LK,"DOCSS_NORMAL",A="FL:::/Kernel/KernelA.HPP,1118"$
-$LK,"GVF_EXTERN",A="FL:::/Kernel/KernelA.HPP,863"$
+$LK,"SC_F7",A="FL:::/Kernel/KernelA.HPP,3578"$
+$LK,"DOCSS_NORMAL",A="FL:::/Kernel/KernelA.HPP,1124"$
+$LK,"GVF_EXTERN",A="FL:::/Kernel/KernelA.HPP,864"$
 $LK,"blkdev_text_attr",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,278"$
 $LK,"SPF_NEG_E",A="FL:::/Kernel/StrPrint.CPP.Z,11"$
-$LK,"SC_F8",A="FL:::/Kernel/KernelA.HPP,3560"$
+$LK,"SC_F8",A="FL:::/Kernel/KernelA.HPP,3579"$
 $LK,"Mute",A="FL:::/Kernel/KMisc.CPP.Z,204",BI=249$
 $LK,"INT_FAULT",A="FL:::/Kernel/KInts.CPP.Z,55"$
 $LK,"progress2_desc",A="FL:::/Kernel/KernelB.HPP,218"$
-$LK,"DCSF_PALETTE_GET",A="FL:::/Kernel/KernelA.HPP,3622"$
-$LK,"SC_F9",A="FL:::/Kernel/KernelA.HPP,3561"$
-$LK,"DOCEF_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,997"$
+$LK,"DCSF_PALETTE_GET",A="FL:::/Kernel/KernelA.HPP,3641"$
+$LK,"SC_F9",A="FL:::/Kernel/KernelA.HPP,3580"$
+$LK,"DOCEF_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,999"$
 $LK,"KbdBuildSC",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,301",BI=250$
-$LK,"IOAPICID",A="FL:::/Kernel/KernelA.HPP,508"$
+$LK,"CInst",A="FL:::/Kernel/KernelA.HPP,1741"$
+$LK,"IOAPICID",A="FL:::/Kernel/KernelA.HPP,509"$
 $LK,"RFLAGf_SIGN",A="FL:::/Kernel/KernelA.HPP,309"$
 $LK,"AMAllocIdentical",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,418",BI=251$
-$LK,"DKGRAY",A="FL:::/Kernel/KernelA.HPP,2937"$
-$LK,"DOCEF_MARGIN_REL_X",A="FL:::/Kernel/KernelA.HPP,990"$
+$LK,"DKGRAY",A="FL:::/Kernel/KernelA.HPP,2956"$
+$LK,"DOCEF_MARGIN_REL_X",A="FL:::/Kernel/KernelA.HPP,992"$
 $LK,"PutDirLink",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,197",BI=252$
 $LK,"EndianU32",A="FL:::/Kernel/KMisc.CPP.Z,15",BI=253$
 $LK,"EndianU16",A="FL:::/Kernel/KMisc.CPP.Z,7",BI=254$
-$LK,"DOCEf_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,1083"$
+$LK,"DOCEf_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,1087"$
 $LK,"SPF_NEG_AUX_FMT_NUM",A="FL:::/Kernel/StrPrint.CPP.Z,12"$
 $LK,"sys_pci_busses",A="FL:::/Kernel/KernelB.HPP,243"$
-$LK,"BOOT_STK_SIZE",A="FL:::/Kernel/KernelA.HPP,3860"$
-$LK,"TTS_LOCKED_CONST",A="FL:::/Kernel/KernelA.HPP,3247"$
-$LK,"CCf_FUN_EXP",A="FL:::/Kernel/KernelA.HPP,2125"$
-$LK,"CCF_FUN_EXP",A="FL:::/Kernel/KernelA.HPP,2124"$
-$LK,"LAPIC_APIC_VERSION",A="FL:::/Kernel/KernelA.HPP,476"$
+$LK,"BOOT_STK_SIZE",A="FL:::/Kernel/KernelA.HPP,3879"$
+$LK,"TTS_LOCKED_CONST",A="FL:::/Kernel/KernelA.HPP,3266"$
+$LK,"CCf_FUN_EXP",A="FL:::/Kernel/KernelA.HPP,2145"$
+$LK,"CCF_FUN_EXP",A="FL:::/Kernel/KernelA.HPP,2144"$
+$LK,"LAPIC_APIC_VERSION",A="FL:::/Kernel/KernelA.HPP,477"$
 $LK,"PutS",A="FL:::/Kernel/KeyDev.CPP.Z,29",BI=255$
-$LK,"DOCEf_MARGIN_REL_X",A="FL:::/Kernel/KernelA.HPP,1076"$
-$LK,"CDocBin",A="FL:::/Kernel/KernelA.HPP,1104"$
-$LK,"LAPIC_BASE",A="FL:::/Kernel/KernelA.HPP,473"$
+$LK,"DOCEf_MARGIN_REL_X",A="FL:::/Kernel/KernelA.HPP,1080"$
+$LK,"CDocBin",A="FL:::/Kernel/KernelA.HPP,1110"$
+$LK,"LAPIC_BASE",A="FL:::/Kernel/KernelA.HPP,474"$
 $LK,"MAX_F64",A="FL:::/Kernel/KernelA.HPP,44"$
 $LK,"StrPrintJoin",A="FL:::/Kernel/StrPrint.CPP.Z,219",BI=256$
-$LK,"IA32_GS_BASE",A="FL:::/Kernel/KernelA.HPP,519"$
+$LK,"IA32_GS_BASE",A="FL:::/Kernel/KernelA.HPP,520"$
 $LK,"log2_e",A="FL:::/Kernel/KernelA.HPP,52"$
 $LK,"CurDir",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,271",BI=257$
 $LK,"MinU64",A="FL:::/Kernel/KernelB.HPP,101"$
 $LK,"_SYS_HLT",A="FL:::/Kernel/KUtils.CPP.Z,469"$
-$LK,"CCF_AOT_COMPILE",A="FL:::/Kernel/KernelA.HPP,2135"$
-$LK,"OPTf_KEEP_PRIVATE",A="FL:::/Kernel/KernelA.HPP,1532"$
+$LK,"CCF_AOT_COMPILE",A="FL:::/Kernel/KernelA.HPP,2155"$
+$LK,"OPTf_KEEP_PRIVATE",A="FL:::/Kernel/KernelA.HPP,1538"$
 $LK,"MAX_I32",A="FL:::/Kernel/KernelA.HPP,31"$
 $LK,"MAX_I16",A="FL:::/Kernel/KernelA.HPP,27"$
-$LK,"HTF_EXPORT",A="FL:::/Kernel/KernelA.HPP,699"$
-$LK,"HTf_EXPORT",A="FL:::/Kernel/KernelA.HPP,669"$
+$LK,"HTF_EXPORT",A="FL:::/Kernel/KernelA.HPP,700"$
+$LK,"HTf_EXPORT",A="FL:::/Kernel/KernelA.HPP,670"$
 $LK,"ATAPIReadBlks2",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,385",BI=258$
 $LK,"_D3_UNIT",A="FL:::/Kernel/KMathA.CPP.Z,305"$
-$LK,"CCf_AOT_COMPILE",A="FL:::/Kernel/KernelA.HPP,2136"$
-$LK,"POP_C_REGS",A="FL:::/Kernel/KernelA.HPP,1746"$
+$LK,"CCf_AOT_COMPILE",A="FL:::/Kernel/KernelA.HPP,2156"$
+$LK,"POP_C_REGS",A="FL:::/Kernel/KernelA.HPP,1764"$
 $LK,"_STRIMATCH",A="FL:::/Kernel/StrA.CPP.Z,262"$
 $LK,"DrvChk",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,118",BI=259$
-$LK,"CSema",A="FL:::/Kernel/KernelA.HPP,583"$
-$LK,"EXT_HEAPLOG_MALLOC",A="FL:::/Kernel/KernelA.HPP,573"$
-$LK,"GR_WIDTH",A="FL:::/Kernel/KernelA.HPP,3589"$
-$LK,"DOCT_SOFT_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,897"$
+$LK,"CSema",A="FL:::/Kernel/KernelA.HPP,584"$
+$LK,"EXT_HEAPLOG_MALLOC",A="FL:::/Kernel/KernelA.HPP,574"$
+$LK,"GR_WIDTH",A="FL:::/Kernel/KernelA.HPP,3608"$
+$LK,"DOCT_SOFT_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,898"$
 $LK,"GetBaseUnit",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,167",BI=260$
 $LK,"MapDrv",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,212",BI=261$
 $LK,"DrvMakeFree",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,38",BI=262$
 $LK,"FixSet",A="FL:::/Kernel/EdLite.CPP.Z,327",BI=263$
 $LK,"IPSet",A="FL:::/Kernel/SerialDev/InputPointer.CPP.Z,43",BI=264$
-$LK,"SYS_SEMA_HEAPLOG_LOCK",A="FL:::/Kernel/KernelA.HPP,596"$
+$LK,"SYS_SEMA_HEAPLOG_LOCK",A="FL:::/Kernel/KernelA.HPP,597"$
 $LK,"sqrt2",A="FL:::/Kernel/KernelA.HPP,55"$
 $LK,"CQueVectU8",A="FL:::/Kernel/KernelA.HPP,161"$
 $LK,"IntFaultHandlersNew",A="FL:::/Kernel/KInts.CPP.Z,159",BI=265$
-$LK,"TASKf_INPUT_FILTER_TASK",A="FL:::/Kernel/KernelA.HPP,3257"$
-$LK,"OM_CB",A="FL:::/Kernel/KernelA.HPP,1848"$
+$LK,"TASKf_INPUT_FILTER_TASK",A="FL:::/Kernel/KernelA.HPP,3276"$
+$LK,"OM_CB",A="FL:::/Kernel/KernelA.HPP,1867"$
 $LK,"MAX_I64",A="FL:::/Kernel/KernelA.HPP,35"$
 $LK,"throw",A="FL:::/Kernel/KExcept.CPP.Z,82",BI=266$
 $LK,"sys_boot_base",A="FL:::/Kernel/KernelB.HPP,37"$
-$LK,"BDF_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HPP,2615"$
-$LK,"TK_AND_AND",A="FL:::/Kernel/KernelA.HPP,2064"$
-$LK,"REG_NONE",A="FL:::/Kernel/KernelA.HPP,1765"$
-$LK,"OC_LOCK_PREFIX",A="FL:::/Kernel/KernelA.HPP,1738"$
-$LK,"WIF_SELF_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1406"$
-$LK,"Ff_INTERRUPT",A="FL:::/Kernel/KernelA.HPP,842"$
-$LK,"CFunSegCache",A="FL:::/Kernel/KernelA.HPP,3825"$
-$LK,"OM_CD",A="FL:::/Kernel/KernelA.HPP,1850"$
-$LK,"AAT_ADD_U8",A="FL:::/Kernel/KernelA.HPP,1945"$
-$LK,"REGT_XMM",A="FL:::/Kernel/KernelA.HPP,741"$
-$LK,"DOCSS_CPP_Z_COMMENT",A="FL:::/Kernel/KernelA.HPP,1122"$
-$LK,"DOCT_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,917"$
+$LK,"BDF_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HPP,2634"$
+$LK,"TK_AND_AND",A="FL:::/Kernel/KernelA.HPP,2084"$
+$LK,"REG_NONE",A="FL:::/Kernel/KernelA.HPP,1784"$
+$LK,"OC_LOCK_PREFIX",A="FL:::/Kernel/KernelA.HPP,1756"$
+$LK,"WIF_SELF_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1412"$
+$LK,"Ff_INTERRUPT",A="FL:::/Kernel/KernelA.HPP,843"$
+$LK,"CFunSegCache",A="FL:::/Kernel/KernelA.HPP,3844"$
+$LK,"OM_CD",A="FL:::/Kernel/KernelA.HPP,1869"$
+$LK,"AAT_ADD_U8",A="FL:::/Kernel/KernelA.HPP,1965"$
+$LK,"REGT_XMM",A="FL:::/Kernel/KernelA.HPP,742"$
+$LK,"DOCSS_CPP_Z_COMMENT",A="FL:::/Kernel/KernelA.HPP,1128"$
+$LK,"DOCT_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,919"$
 $LK,"PutExcept",A="FL:::/Kernel/KExcept.CPP.Z,45",BI=267$
 $LK,"TestExcept",A="FL:::/Kernel/KExcept.CPP.Z,41"$
-$LK,"CColorROPU32",A="FL:::/Kernel/KernelA.HPP,2954"$
-$LK,"CColorROPU16",A="FL:::/Kernel/KernelA.HPP,2950"$
-$LK,"DOCT_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,918"$
-$LK,"HTT_FILE",A="FL:::/Kernel/KernelA.HPP,691"$
-$LK,"HTT_DEFINE_STR",A="FL:::/Kernel/KernelA.HPP,680"$
-$LK,"HTt_FILE",A="FL:::/Kernel/KernelA.HPP,661"$
+$LK,"CColorROPU32",A="FL:::/Kernel/KernelA.HPP,2973"$
+$LK,"CColorROPU16",A="FL:::/Kernel/KernelA.HPP,2969"$
+$LK,"DOCT_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,920"$
+$LK,"HTT_FILE",A="FL:::/Kernel/KernelA.HPP,692"$
+$LK,"HTT_DEFINE_STR",A="FL:::/Kernel/KernelA.HPP,681"$
+$LK,"HTt_FILE",A="FL:::/Kernel/KernelA.HPP,662"$
 $LK,"BootDVDProve",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,1",BI=268$
 $LK,"Push",A="FL:::/Kernel/KernelB.HPP,252"$
-$LK,"SVCf_FREE_ON_COMPLETE",A="FL:::/Kernel/KernelA.HPP,3157"$
-$LK,"ICF_DEL_PREVIOUS_INS",A="FL:::/Kernel/KernelA.HPP,1601"$
-$LK,"HTt_DEFINE_STR",A="FL:::/Kernel/KernelA.HPP,650"$
+$LK,"SVCf_FREE_ON_COMPLETE",A="FL:::/Kernel/KernelA.HPP,3176"$
+$LK,"ICF_DEL_PREVIOUS_INS",A="FL:::/Kernel/KernelA.HPP,1615"$
+$LK,"HTt_DEFINE_STR",A="FL:::/Kernel/KernelA.HPP,651"$
 $LK,"STK_REP_LEN",A="FL:::/Kernel/KDbg.CPP.Z,102"$
 $LK,"I_NMI",A="FL:::/Kernel/KernelA.HPP,286"$
 $LK,"Date2ISO1",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,61",BI=269$
 $LK,"ModU64",A="FL:::/Kernel/KernelB.HPP,102"$
-$LK,"SVCf_EXIT_ON_COMPLETE",A="FL:::/Kernel/KernelA.HPP,3151"$
-$LK,"DOCG_DBL_BUF_FLAGS",A="FL:::/Kernel/KernelA.HPP,952"$
-$LK,"WIf_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HPP,1438"$
-$LK,"WIf_SELF_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1432"$
-$LK,"CTask",A="FL:::/Kernel/KernelA.HPP,3292"$
-$LK,"OC_JMP_REL8",A="FL:::/Kernel/KernelA.HPP,1742"$
+$LK,"SVCf_EXIT_ON_COMPLETE",A="FL:::/Kernel/KernelA.HPP,3170"$
+$LK,"DOCG_DBL_BUF_FLAGS",A="FL:::/Kernel/KernelA.HPP,954"$
+$LK,"WIf_FOCUS_TASK_MENU",A="FL:::/Kernel/KernelA.HPP,1444"$
+$LK,"WIf_SELF_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1438"$
+$LK,"CTask",A="FL:::/Kernel/KernelA.HPP,3311"$
+$LK,"OC_JMP_REL8",A="FL:::/Kernel/KernelA.HPP,1760"$
 $LK,"_HASH_SINGLE_TABLE_FIND",A="FL:::/Kernel/KHashA.CPP.Z,143"$
 $LK,"_D3_ZERO",A="FL:::/Kernel/KMathA.CPP.Z,201"$
 $LK,"Str2F64",A="FL:::/Kernel/StrScan.CPP.Z,55",BI=270$
 $LK,"_YIELD",A="FL:::/Kernel/Sched.CPP.Z,168"$
-$LK,"OM_IB",A="FL:::/Kernel/KernelA.HPP,1852"$
+$LK,"OM_IB",A="FL:::/Kernel/KernelA.HPP,1871"$
 $LK,"progress3_desc",A="FL:::/Kernel/KernelB.HPP,222"$
-$LK,"DCF_SYMMETRY",A="FL:::/Kernel/KernelA.HPP,3606"$
+$LK,"DCF_SYMMETRY",A="FL:::/Kernel/KernelA.HPP,3625"$
 $LK,"DrvNextFree",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,51",BI=271$
-$LK,"OM_ID",A="FL:::/Kernel/KernelA.HPP,1854"$
-$LK,"OM_CP",A="FL:::/Kernel/KernelA.HPP,1851"$
-$LK,"WIF_FOCUS_TASK_IP_L",A="FL:::/Kernel/KernelA.HPP,1415"$
+$LK,"OM_ID",A="FL:::/Kernel/KernelA.HPP,1873"$
+$LK,"OM_CP",A="FL:::/Kernel/KernelA.HPP,1870"$
+$LK,"WIF_FOCUS_TASK_IP_L",A="FL:::/Kernel/KernelA.HPP,1421"$
 $LK,"_ROUND",A="FL:::/Kernel/KMathA.CPP.Z,380"$
 $LK,"RFLAGf_TRAP",A="FL:::/Kernel/KernelA.HPP,310"$
 $LK,"SYS_HASH_BUCKET_FIND",A="FL:::/Kernel/KHashA.CPP.Z,109"$
-$LK,"BOOT_SRC_DVD",A="FL:::/Kernel/KernelA.HPP,3865"$
-$LK,"FUF_RECURSE",A="FL:::/Kernel/KernelA.HPP,2572"$
-$LK,"FUf_RECURSE",A="FL:::/Kernel/KernelA.HPP,2546"$
+$LK,"BOOT_SRC_DVD",A="FL:::/Kernel/KernelA.HPP,3884"$
+$LK,"FUF_RECURSE",A="FL:::/Kernel/KernelA.HPP,2591"$
+$LK,"FUf_RECURSE",A="FL:::/Kernel/KernelA.HPP,2565"$
 $LK,"MemCmp",A="FL:::/Kernel/KernelB.HPP,173"$
-$LK,"SVCf_DONE",A="FL:::/Kernel/KernelA.HPP,3155"$
-$LK,"SC_PAGE_UP",A="FL:::/Kernel/KernelA.HPP,3547"$
+$LK,"SVCf_DONE",A="FL:::/Kernel/KernelA.HPP,3174"$
+$LK,"SC_PAGE_UP",A="FL:::/Kernel/KernelA.HPP,3566"$
 $LK,"User",A="FL:::/Kernel/KTask.CPP.Z,392",BI=272$
-$LK,"WIF_FOCUS_TASK_IP_R",A="FL:::/Kernel/KernelA.HPP,1417"$
-$LK,"DOCEf_RIGHT_EXP",A="FL:::/Kernel/KernelA.HPP,1052"$
-$LK,"DOCEF_RIGHT_EXP",A="FL:::/Kernel/KernelA.HPP,966"$
+$LK,"WIF_FOCUS_TASK_IP_R",A="FL:::/Kernel/KernelA.HPP,1423"$
+$LK,"DOCEf_RIGHT_EXP",A="FL:::/Kernel/KernelA.HPP,1056"$
+$LK,"DOCEF_RIGHT_EXP",A="FL:::/Kernel/KernelA.HPP,968"$
 $LK,"DirEntryDel",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,17",BI=273$
-$LK,"CLexFile",A="FL:::/Kernel/KernelA.HPP,2013"$
-$LK,"OM_CW",A="FL:::/Kernel/KernelA.HPP,1849"$
-$LK,"DOCF_DONT_SWAP_OUT",A="FL:::/Kernel/KernelA.HPP,1267"$
-$LK,"IA32_LAPIC_BASE",A="FL:::/Kernel/KernelA.HPP,516"$
+$LK,"CLexFile",A="FL:::/Kernel/KernelA.HPP,2033"$
+$LK,"OM_CW",A="FL:::/Kernel/KernelA.HPP,1868"$
+$LK,"DOCF_DONT_SWAP_OUT",A="FL:::/Kernel/KernelA.HPP,1273"$
+$LK,"IA32_LAPIC_BASE",A="FL:::/Kernel/KernelA.HPP,517"$
 $LK,"ATACmd",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,59",BI=274$
 $LK,"BusyWait",A="FL:::/Kernel/KMisc.CPP.Z,136",BI=275$
-$LK,"DOCEf_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,1057"$
-$LK,"DOCEG_DONT_EDIT",A="FL:::/Kernel/KernelA.HPP,1027"$
-$LK,"DOCEF_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,971"$
-$LK,"DOCEf_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,1058"$
-$LK,"DOCEF_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,972"$
+$LK,"DOCEf_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,1061"$
+$LK,"DOCEG_DONT_EDIT",A="FL:::/Kernel/KernelA.HPP,1031"$
+$LK,"DOCEF_SHIFTED_X",A="FL:::/Kernel/KernelA.HPP,973"$
+$LK,"DOCEf_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,1062"$
+$LK,"DOCEF_SHIFTED_Y",A="FL:::/Kernel/KernelA.HPP,974"$
 $LK,"Str2I64",A="FL:::/Kernel/StrScan.CPP.Z,1",BI=276$
 $LK,"Sqrt",A="FL:::/Kernel/KernelB.HPP,108"$
 $LK,"NowDateTimeStruct",A="FL:::/Kernel/KDate.CPP.Z,133",BI=277$
 $LK,"YorN",A="FL:::/Kernel/StrB.CPP.Z,87",BI=278$
-$LK,"MT_CD",A="FL:::/Kernel/KernelA.HPP,2519"$
-$LK,"ICF_NO_DEPEND_RESULT",A="FL:::/Kernel/KernelA.HPP,1581"$
+$LK,"MT_CD",A="FL:::/Kernel/KernelA.HPP,2538"$
+$LK,"ICF_NO_DEPEND_RESULT",A="FL:::/Kernel/KernelA.HPP,1596"$
 $LK,"RFLAGf_VINT",A="FL:::/Kernel/KernelA.HPP,320"$
-$LK,"DCF_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3618"$
-$LK,"ACD_DEF",A="FL:::/Kernel/KernelA.HPP,1495"$
-$LK,"DOCEF_BIN_PTR_LINK",A="FL:::/Kernel/KernelA.HPP,969"$
+$LK,"DCF_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3637"$
+$LK,"ACD_DEF",A="FL:::/Kernel/KernelA.HPP,1501"$
+$LK,"DOCEF_BIN_PTR_LINK",A="FL:::/Kernel/KernelA.HPP,971"$
 $LK,"SYS_CPU_STRUCTS",A="FL:::/Kernel/KStart.CPP.Z,223"$
-$LK,"SVCT_MSG",A="FL:::/Kernel/KernelA.HPP,3161"$
-$LK,"ICF_DEPEND_RESULT",A="FL:::/Kernel/KernelA.HPP,1593"$
-$LK,"DOCf_DONT_SWAP_OUT",A="FL:::/Kernel/KernelA.HPP,1303"$
-$LK,"CDocEntryBase",A="FL:::/Kernel/KernelA.HPP,1149"$
-$LK,"MLF_STR_DFT_AVAILABLE",A="FL:::/Kernel/KernelA.HPP,771"$
+$LK,"SVCT_MSG",A="FL:::/Kernel/KernelA.HPP,3180"$
+$LK,"ICF_DEPEND_RESULT",A="FL:::/Kernel/KernelA.HPP,1607"$
+$LK,"DOCf_DONT_SWAP_OUT",A="FL:::/Kernel/KernelA.HPP,1309"$
+$LK,"CDocEntryBase",A="FL:::/Kernel/KernelA.HPP,1155"$
+$LK,"MLF_STR_DFT_AVAILABLE",A="FL:::/Kernel/KernelA.HPP,772"$
 $LK,"ArcCtrlNew",A="FL:::/Kernel/Compress.CPP.Z,221",BI=279$
-$LK,"DCF_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,3613"$
-$LK,"SYS_SEMA_HEAPLOG_ACTIVE",A="FL:::/Kernel/KernelA.HPP,595"$
-$LK,"DOC_SCROLL_SPEED",A="FL:::/Kernel/KernelA.HPP,1116"$
-$LK,"DOCEf_BIN_PTR_LINK",A="FL:::/Kernel/KernelA.HPP,1055"$
+$LK,"DCF_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,3632"$
+$LK,"SYS_SEMA_HEAPLOG_ACTIVE",A="FL:::/Kernel/KernelA.HPP,596"$
+$LK,"DOC_SCROLL_SPEED",A="FL:::/Kernel/KernelA.HPP,1122"$
+$LK,"DOCEf_BIN_PTR_LINK",A="FL:::/Kernel/KernelA.HPP,1059"$
 $LK,"SSF_NO_TENSION",A="FL:::/Kernel/KernelA.HPP,223"$
 $LK,"I32",A="FL:::/Kernel/KernelA.HPP,85"$
 $LK,"I16",A="FL:::/Kernel/KernelA.HPP,71"$
 $LK,"MemCpy",A="FL:::/Kernel/KernelB.HPP,175"$
-$LK,"CT_NONE",A="FL:::/Kernel/KernelA.HPP,3722"$
-$LK,"OM_IW",A="FL:::/Kernel/KernelA.HPP,1853"$
-$LK,"VGAP_DATA",A="FL:::/Kernel/KernelA.HPP,3707"$
-$LK,"OM_NO",A="FL:::/Kernel/KernelA.HPP,1847"$
-$LK,"IET_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,410"$
-$LK,"GVF_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,864"$
+$LK,"CT_NONE",A="FL:::/Kernel/KernelA.HPP,3741"$
+$LK,"OM_IW",A="FL:::/Kernel/KernelA.HPP,1872"$
+$LK,"VGAP_DATA",A="FL:::/Kernel/KernelA.HPP,3726"$
+$LK,"OM_NO",A="FL:::/Kernel/KernelA.HPP,1866"$
+$LK,"IET_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,411"$
+$LK,"GVF_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,865"$
 $LK,"DefineSub",A="FL:::/Kernel/KDefine.CPP.Z,60",BI=280$
-$LK,"WHITE",A="FL:::/Kernel/KernelA.HPP,2944"$
-$LK,"ATA_READ_MULTI_EXT",A="FL:::/Kernel/KernelA.HPP,2242"$
-$LK,"DOCEF_SCROLLING_X",A="FL:::/Kernel/KernelA.HPP,973"$
-$LK,"DOCEf_CHECKED_COLLAPSED",A="FL:::/Kernel/KernelA.HPP,1085"$
-$LK,"ISO1T_SUPPLEMENTARY_DESC",A="FL:::/Kernel/KernelA.HPP,2456"$
-$LK,"DOCEf_SCROLLING_X",A="FL:::/Kernel/KernelA.HPP,1059"$
+$LK,"WHITE",A="FL:::/Kernel/KernelA.HPP,2963"$
+$LK,"ATA_READ_MULTI_EXT",A="FL:::/Kernel/KernelA.HPP,2261"$
+$LK,"DOCEF_SCROLLING_X",A="FL:::/Kernel/KernelA.HPP,975"$
+$LK,"DOCEf_CHECKED_COLLAPSED",A="FL:::/Kernel/KernelA.HPP,1089"$
+$LK,"ISO1T_SUPPLEMENTARY_DESC",A="FL:::/Kernel/KernelA.HPP,2475"$
+$LK,"DOCEf_SCROLLING_X",A="FL:::/Kernel/KernelA.HPP,1063"$
 $LK,"MPInt",A="FL:::/Kernel/MultiProc.CPP.Z,132",BI=281$
-$LK,"BOOT_SRC_RAM",A="FL:::/Kernel/KernelA.HPP,3863"$
-$LK,"TK_AND_EQU",A="FL:::/Kernel/KernelA.HPP,2071"$
+$LK,"BOOT_SRC_RAM",A="FL:::/Kernel/KernelA.HPP,3882"$
+$LK,"TK_AND_EQU",A="FL:::/Kernel/KernelA.HPP,2091"$
 $LK,"I64",A="FL:::/Kernel/KernelA.HPP,103"$
 $LK,"MAX_U32",A="FL:::/Kernel/KernelA.HPP,33"$
 $LK,"MAX_U16",A="FL:::/Kernel/KernelA.HPP,29"$
@@ -1285,125 +1288,125 @@ $LK,"IntEntryGet",A="FL:::/Kernel/KInts.CPP.Z,90",BI=283$
 $LK,"CD2",A="FL:::/Kernel/KernelA.HPP,148"$
 $LK,"KeyDevInit",A="FL:::/Kernel/KeyDev.CPP.Z,199",BI=284$
 $LK,"sys_font_8x8",A="FL:::/Kernel/Font8x8.CPP.Z,3"$
-$LK,"CCF_HAS_RETURN",A="FL:::/Kernel/KernelA.HPP,2120"$
-$LK,"CAsmArg",A="FL:::/Kernel/KernelA.HPP,1824"$
+$LK,"CCF_HAS_RETURN",A="FL:::/Kernel/KernelA.HPP,2140"$
+$LK,"CAsmArg",A="FL:::/Kernel/KernelA.HPP,1843"$
 $LK,"CD3",A="FL:::/Kernel/KernelA.HPP,154"$
 $LK,"progress4_desc",A="FL:::/Kernel/KernelB.HPP,226"$
 $LK,"RFLAGf_ZERO",A="FL:::/Kernel/KernelA.HPP,308"$
 $LK,"DrvFATBlkClean",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,75",BI=285$
-$LK,"CCF_CLASS_IP",A="FL:::/Kernel/KernelA.HPP,2140"$
-$LK,"WIf_FOCUS_TASK_IP_L",A="FL:::/Kernel/KernelA.HPP,1440"$
+$LK,"CCF_CLASS_IP",A="FL:::/Kernel/KernelA.HPP,2160"$
+$LK,"WIf_FOCUS_TASK_IP_L",A="FL:::/Kernel/KernelA.HPP,1446"$
 $LK,"PCIReadU8",A="FL:::/Kernel/PCIBIOS.CPP.Z,163",BI=286$
-$LK,"SYS_SEMA_SYS_DATE",A="FL:::/Kernel/KernelA.HPP,592"$
-$LK,"EXT_WIN_FOCUS",A="FL:::/Kernel/KernelA.HPP,572"$
+$LK,"SYS_SEMA_SYS_DATE",A="FL:::/Kernel/KernelA.HPP,593"$
+$LK,"EXT_WIN_FOCUS",A="FL:::/Kernel/KernelA.HPP,573"$
 $LK,"ClustersAlloc",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,134",BI=287$
-$LK,"WIF_SELF_IP_L",A="FL:::/Kernel/KernelA.HPP,1402"$
+$LK,"WIF_SELF_IP_L",A="FL:::/Kernel/KernelA.HPP,1408"$
 $LK,"MAX_U64",A="FL:::/Kernel/KernelA.HPP,37"$
-$LK,"WIf_SELF_IP_L",A="FL:::/Kernel/KernelA.HPP,1430"$
-$LK,"CHashAC",A="FL:::/Kernel/KernelA.HPP,748"$
-$LK,"DOCf_NO_CURSOR",A="FL:::/Kernel/KernelA.HPP,1286"$
-$LK,"DOCF_NO_CURSOR",A="FL:::/Kernel/KernelA.HPP,1250"$
+$LK,"WIf_SELF_IP_L",A="FL:::/Kernel/KernelA.HPP,1436"$
+$LK,"CHashAC",A="FL:::/Kernel/KernelA.HPP,749"$
+$LK,"DOCf_NO_CURSOR",A="FL:::/Kernel/KernelA.HPP,1292"$
+$LK,"DOCF_NO_CURSOR",A="FL:::/Kernel/KernelA.HPP,1256"$
 $LK,"PrintWarn",A="FL:::/Kernel/StrPrint.CPP.Z,931",BI=288$
 $LK,"LoadOneImport",A="FL:::/Kernel/KLoad.CPP.Z,1",BI=289$
 $LK,"FOpen",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,9",BI=290$
-$LK,"CCF_LAST_WAS_DOT",A="FL:::/Kernel/KernelA.HPP,2134"$
-$LK,"CMF_DEFINED",A="FL:::/Kernel/KernelA.HPP,1676"$
-$LK,"WIf_FOCUS_TASK_IP_R",A="FL:::/Kernel/KernelA.HPP,1442"$
-$LK,"HTG_ALL",A="FL:::/Kernel/KernelA.HPP,710"$
+$LK,"CCF_LAST_WAS_DOT",A="FL:::/Kernel/KernelA.HPP,2154"$
+$LK,"CMF_DEFINED",A="FL:::/Kernel/KernelA.HPP,1694"$
+$LK,"WIf_FOCUS_TASK_IP_R",A="FL:::/Kernel/KernelA.HPP,1448"$
+$LK,"HTG_ALL",A="FL:::/Kernel/KernelA.HPP,711"$
 $LK,"sys_var_init_val",A="FL:::/Kernel/KernelB.HPP,192"$
-$LK,"FUF_REPLACE",A="FL:::/Kernel/KernelA.HPP,2577"$
-$LK,"FUf_REPLACE",A="FL:::/Kernel/KernelA.HPP,2551"$
+$LK,"FUF_REPLACE",A="FL:::/Kernel/KernelA.HPP,2596"$
+$LK,"FUf_REPLACE",A="FL:::/Kernel/KernelA.HPP,2570"$
 $LK,"DrvRep",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,295",BI=291$
 $LK,"BlkDevUnlock",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,15",BI=292$
-$LK,"CMemUsed",A="FL:::/Kernel/KernelA.HPP,2794"$
-$LK,"WIF_SELF_IP_R",A="FL:::/Kernel/KernelA.HPP,1404"$
+$LK,"CMemUsed",A="FL:::/Kernel/KernelA.HPP,2813"$
+$LK,"WIF_SELF_IP_R",A="FL:::/Kernel/KernelA.HPP,1410"$
 $LK,"IntMPCrash",A="FL:::/Kernel/MultiProc.CPP.Z,381",BI=293$
 $LK,"JobQue",A="FL:::/Kernel/MultiProc.CPP.Z,213",BI=294$
 $LK,"TSSBusy",A="FL:::/Kernel/MultiProc.CPP.Z,71",BI=295$
 $LK,"DrvTypeSet",A="FL:::/Kernel/BlkDev/DskFmt.CPP.Z,1",BI=296$
-$LK,"FUF_JUST_AOT",A="FL:::/Kernel/KernelA.HPP,2587"$
-$LK,"FUf_JUST_AOT",A="FL:::/Kernel/KernelA.HPP,2561"$
-$LK,"WIf_SELF_IP_R",A="FL:::/Kernel/KernelA.HPP,1431"$
+$LK,"FUF_JUST_AOT",A="FL:::/Kernel/KernelA.HPP,2606"$
+$LK,"FUf_JUST_AOT",A="FL:::/Kernel/KernelA.HPP,2580"$
+$LK,"WIf_SELF_IP_R",A="FL:::/Kernel/KernelA.HPP,1437"$
 $LK,"DirNameAbs",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,104",BI=297$
-$LK,"DOF_DONT_HOME",A="FL:::/Kernel/KernelA.HPP,1207"$
-$LK,"CH_ESC",A="FL:::/Kernel/KernelA.HPP,3490"$
-$LK,"DOCEf_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,1101"$
-$LK,"DOCEF_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,1017"$
+$LK,"DOF_DONT_HOME",A="FL:::/Kernel/KernelA.HPP,1213"$
+$LK,"CH_ESC",A="FL:::/Kernel/KernelA.HPP,3509"$
+$LK,"DOCEf_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,1105"$
+$LK,"DOCEF_DONT_DRAW",A="FL:::/Kernel/KernelA.HPP,1019"$
 $LK,"DrvFATBlkAlloc",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,65",BI=298$
 $LK,"WildMatch",A="FL:::/Kernel/StrA.CPP.Z,656",BI=299$
-$LK,"CDC",A="FL:::/Kernel/KernelA.HPP,3633"$
-$LK,"SC_CURSOR_LEFT",A="FL:::/Kernel/KernelA.HPP,3545"$
+$LK,"CDC",A="FL:::/Kernel/KernelA.HPP,3652"$
+$LK,"SC_CURSOR_LEFT",A="FL:::/Kernel/KernelA.HPP,3564"$
 $LK,"IsMute",A="FL:::/Kernel/KMisc.CPP.Z,218",BI=300$
-$LK,"DOCT_CLEAR",A="FL:::/Kernel/KernelA.HPP,900"$
+$LK,"DOCT_CLEAR",A="FL:::/Kernel/KernelA.HPP,902"$
 $LK,"DVDImageWrite",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,79",BI=301$
 $LK,"MouseRst",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,37",BI=302$
 $LK,"HashTypeNum",A="FL:::/Kernel/KHashB.CPP.Z,1",BI=303$
-$LK,"CPUf_DYING_TASK_QUE",A="FL:::/Kernel/KernelA.HPP,3416"$
-$LK,"BDf_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2624"$
-$LK,"BDF_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2614"$
-$LK,"DCF_JUST_MIRROR",A="FL:::/Kernel/KernelA.HPP,3610"$
-$LK,"FSt_UNKNOWN",A="FL:::/Kernel/KernelA.HPP,2665"$
-$LK,"WIG_USER_TASK_DFT",A="FL:::/Kernel/KernelA.HPP,1426"$
+$LK,"CPUf_DYING_TASK_QUE",A="FL:::/Kernel/KernelA.HPP,3435"$
+$LK,"BDf_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2643"$
+$LK,"BDF_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2633"$
+$LK,"DCF_JUST_MIRROR",A="FL:::/Kernel/KernelA.HPP,3629"$
+$LK,"FSt_UNKNOWN",A="FL:::/Kernel/KernelA.HPP,2684"$
+$LK,"WIG_USER_TASK_DFT",A="FL:::/Kernel/KernelA.HPP,1432"$
 $LK,"sys_cache_line_width",A="FL:::/Kernel/KernelB.HPP,271"$
 $LK,"XchgI64",A="FL:::/Kernel/KernelB.HPP,266"$
-$LK,"SC_CURSOR_DOWN",A="FL:::/Kernel/KernelA.HPP,3544"$
-$LK,"DOF_DONT_WINMGR_SYNC",A="FL:::/Kernel/KernelA.HPP,1210"$
+$LK,"SC_CURSOR_DOWN",A="FL:::/Kernel/KernelA.HPP,3563"$
+$LK,"DOF_DONT_WINMGR_SYNC",A="FL:::/Kernel/KernelA.HPP,1216"$
 $LK,"I_SINGLE_STEP",A="FL:::/Kernel/KernelA.HPP,285"$
 $LK,"KbdMouseRst",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,212",BI=304$
-$LK,"ATA_WRITE_MULTI",A="FL:::/Kernel/KernelA.HPP,2243"$
-$LK,"DOC_COLOR_KEYWORD",A="FL:::/Kernel/KernelA.HPP,1132"$
+$LK,"ATA_WRITE_MULTI",A="FL:::/Kernel/KernelA.HPP,2262"$
+$LK,"DOC_COLOR_KEYWORD",A="FL:::/Kernel/KernelA.HPP,1138"$
 $LK,"XTalkStr",A="FL:::/Kernel/SrvCmd.CPP.Z,490",BI=305$
-$LK,"FUF_JUST_GRA",A="FL:::/Kernel/KernelA.HPP,2589"$
-$LK,"FUf_JUST_GRA",A="FL:::/Kernel/KernelA.HPP,2563"$
-$LK,"CCF_IN_QUOTES",A="FL:::/Kernel/KernelA.HPP,2117"$
+$LK,"FUF_JUST_GRA",A="FL:::/Kernel/KernelA.HPP,2608"$
+$LK,"FUf_JUST_GRA",A="FL:::/Kernel/KernelA.HPP,2582"$
+$LK,"CCF_IN_QUOTES",A="FL:::/Kernel/KernelA.HPP,2137"$
 $LK,"CFifoU8",A="FL:::/Kernel/KernelA.HPP,169"$
 $LK,"ATAReadNativeMax",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,187",BI=306$
 $LK,"JobResultScan",A="FL:::/Kernel/SrvCmd.CPP.Z,163",BI=307$
-$LK,"RLF_AUTO_COMPLETE",A="FL:::/Kernel/KernelA.HPP,469"$
+$LK,"RLF_AUTO_COMPLETE",A="FL:::/Kernel/KernelA.HPP,470"$
 $LK,"SYS_KERNEL_END",A="FL:::/Kernel/KEnd.CPP.Z,212"$
 $LK,"TakeExcept",A="FL:::/Kernel/KExcept.CPP.Z,42"$
 $LK,"_MALLOC",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,5"$
-$LK,"CHashDefineStr",A="FL:::/Kernel/KernelA.HPP,819"$
+$LK,"CHashDefineStr",A="FL:::/Kernel/KernelA.HPP,820"$
 $LK,"MemSet",A="FL:::/Kernel/KernelB.HPP,177"$
 $LK,"SPF_SLASH",A="FL:::/Kernel/StrPrint.CPP.Z,6"$
 $LK,"_TRUNC",A="FL:::/Kernel/KMathA.CPP.Z,400"$
-$LK,"HTF_IMM",A="FL:::/Kernel/KernelA.HPP,701"$
-$LK,"FUF_IGNORE",A="FL:::/Kernel/KernelA.HPP,2574"$
-$LK,"FUf_IGNORE",A="FL:::/Kernel/KernelA.HPP,2548"$
-$LK,"AAT_SUB_U32",A="FL:::/Kernel/KernelA.HPP,1950"$
-$LK,"AAT_SUB_U16",A="FL:::/Kernel/KernelA.HPP,1948"$
-$LK,"IP_MOUSE",A="FL:::/Kernel/KernelA.HPP,3015"$
+$LK,"HTF_IMM",A="FL:::/Kernel/KernelA.HPP,702"$
+$LK,"FUF_IGNORE",A="FL:::/Kernel/KernelA.HPP,2593"$
+$LK,"FUf_IGNORE",A="FL:::/Kernel/KernelA.HPP,2567"$
+$LK,"AAT_SUB_U32",A="FL:::/Kernel/KernelA.HPP,1970"$
+$LK,"AAT_SUB_U16",A="FL:::/Kernel/KernelA.HPP,1968"$
+$LK,"IP_MOUSE",A="FL:::/Kernel/KernelA.HPP,3034"$
 $LK,"ATAIDDrvs",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,204",BI=308$
 $LK,"UserCmdLine",A="FL:::/Kernel/KTask.CPP.Z,381",BI=309$
-$LK,"GVF_FUN",A="FL:::/Kernel/KernelA.HPP,861"$
-$LK,"IA32F_LME",A="FL:::/Kernel/KernelA.HPP,515"$
-$LK,"LAPICF_APIC_ENABLED",A="FL:::/Kernel/KernelA.HPP,485"$
-$LK,"RLf_AUTO_COMPLETE",A="FL:::/Kernel/KernelA.HPP,450"$
+$LK,"GVF_FUN",A="FL:::/Kernel/KernelA.HPP,862"$
+$LK,"IA32F_LME",A="FL:::/Kernel/KernelA.HPP,516"$
+$LK,"LAPICF_APIC_ENABLED",A="FL:::/Kernel/KernelA.HPP,486"$
+$LK,"RLf_AUTO_COMPLETE",A="FL:::/Kernel/KernelA.HPP,451"$
 $LK,"PCIClassFind",A="FL:::/Kernel/PCIBIOS.CPP.Z,265",BI=310$
-$LK,"RECALCF_HAS_CURSOR",A="FL:::/Kernel/KernelA.HPP,1340"$
+$LK,"RECALCF_HAS_CURSOR",A="FL:::/Kernel/KernelA.HPP,1346"$
 $LK,"ATARep",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,130",BI=311$
 $LK,"KDInputFilterPutS",A="FL:::/Kernel/KeyDev.CPP.Z,115",BI=312$
 $LK,"D3SubEqu",A="FL:::/Kernel/KernelB.HPP,167"$
-$LK,"FUF_JUST_JIT",A="FL:::/Kernel/KernelA.HPP,2588"$
-$LK,"FUf_JUST_JIT",A="FL:::/Kernel/KernelA.HPP,2562"$
-$LK,"CAsmIns",A="FL:::/Kernel/KernelA.HPP,1812"$
+$LK,"FUF_JUST_JIT",A="FL:::/Kernel/KernelA.HPP,2607"$
+$LK,"FUf_JUST_JIT",A="FL:::/Kernel/KernelA.HPP,2581"$
+$LK,"CAsmIns",A="FL:::/Kernel/KernelA.HPP,1831"$
 $LK,"InU32",A="FL:::/Kernel/KernelB.HPP,75"$
 $LK,"InU16",A="FL:::/Kernel/KernelB.HPP,74"$
-$LK,"TK_IF",A="FL:::/Kernel/KernelA.HPP,2076"$
-$LK,"DOCT_BLINK",A="FL:::/Kernel/KernelA.HPP,916"$
+$LK,"TK_IF",A="FL:::/Kernel/KernelA.HPP,2096"$
+$LK,"DOCT_BLINK",A="FL:::/Kernel/KernelA.HPP,918"$
 $LK,"U32",A="FL:::/Kernel/KernelA.HPP,77"$
 $LK,"U16",A="FL:::/Kernel/KernelA.HPP,65"$
 $LK,"_XCHG_I64",A="FL:::/Kernel/KUtils.CPP.Z,184"$
 $LK,"ATANop",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,48",BI=313$
 $LK,"TaskDel",A="FL:::/Kernel/KTask.CPP.Z,405",BI=314$
 $LK,"LXchgU8",A="FL:::/Kernel/KernelB.HPP,262"$
-$LK,"AAT_SUB_U64",A="FL:::/Kernel/KernelA.HPP,1952"$
+$LK,"AAT_SUB_U64",A="FL:::/Kernel/KernelA.HPP,1972"$
 $LK,"HasLower",A="FL:::/Kernel/FunSeg.CPP.Z,1",BI=315$
 $LK,"_CALL",A="FL:::/Kernel/KUtils.CPP.Z,145"$
-$LK,"IA32F_SCE",A="FL:::/Kernel/KernelA.HPP,514"$
+$LK,"IA32F_SCE",A="FL:::/Kernel/KernelA.HPP,515"$
 $LK,"MIN_F64",A="FL:::/Kernel/KernelA.HPP,45"$
-$LK,"__LINE__",A="FL:::/Kernel/KernelA.HPP,2003"$
-$LK,"FUF_FLATTEN_TREE",A="FL:::/Kernel/KernelA.HPP,2593"$
+$LK,"__LINE__",A="FL:::/Kernel/KernelA.HPP,2023"$
+$LK,"FUF_FLATTEN_TREE",A="FL:::/Kernel/KernelA.HPP,2612"$
 $LK,"KeyDescSet",A="FL:::/Kernel/KeyDev.CPP.Z,56",BI=316$
 $LK,"U64",A="FL:::/Kernel/KernelA.HPP,93"$
 $LK,"MIN_I32",A="FL:::/Kernel/KernelA.HPP,30"$
@@ -1412,131 +1415,131 @@ $LK,"FSize",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,1",BI=317$
 $LK,"IntEntrySet",A="FL:::/Kernel/KInts.CPP.Z,102",BI=318$
 $LK,"Mem32DevIns",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,1",BI=319$
 $LK,"SYS_MP_CNT_INITIAL",A="FL:::/Kernel/KStart.CPP.Z,225"$
-$LK,"FUf_FLATTEN_TREE",A="FL:::/Kernel/KernelA.HPP,2567"$
+$LK,"FUf_FLATTEN_TREE",A="FL:::/Kernel/KernelA.HPP,2586"$
 $LK,"_FXRSTOR",A="FL:::/Kernel/KMathA.CPP.Z,658"$
 $LK,"_CEIL",A="FL:::/Kernel/KMathA.CPP.Z,441"$
-$LK,"INVALID_CLUSTER",A="FL:::/Kernel/KernelA.HPP,2276"$
+$LK,"INVALID_CLUSTER",A="FL:::/Kernel/KernelA.HPP,2295"$
 $LK,"TaskEnd",A="FL:::/Kernel/KTask.CPP.Z,413",BI=320$
 $LK,"MIN_I64",A="FL:::/Kernel/KernelA.HPP,34"$
 $LK,"TaskCaller",A="FL:::/Kernel/KDbg.CPP.Z,75",BI=321$
-$LK,"SV_NONE",A="FL:::/Kernel/KernelA.HPP,1722"$
+$LK,"SV_NONE",A="FL:::/Kernel/KernelA.HPP,1740"$
 $LK,"QUE_VECT_U8_CNT",A="FL:::/Kernel/KernelA.HPP,160"$
-$LK,"__DEPTH__",A="FL:::/Kernel/KernelA.HPP,2005"$
-$LK,"RT_I0",A="FL:::/Kernel/KernelA.HPP,1543"$
-$LK,"DOCEF_LEFT_MACRO",A="FL:::/Kernel/KernelA.HPP,965"$
-$LK,"TK_DEREFERENCE",A="FL:::/Kernel/KernelA.HPP,2056"$
-$LK,"ARGT_UIMM8",A="FL:::/Kernel/KernelA.HPP,1866"$
-$LK,"DOCF_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1266"$
-$LK,"DOCEf_LEFT_MACRO",A="FL:::/Kernel/KernelA.HPP,1051"$
+$LK,"__DEPTH__",A="FL:::/Kernel/KernelA.HPP,2025"$
+$LK,"RT_I0",A="FL:::/Kernel/KernelA.HPP,1549"$
+$LK,"DOCEF_LEFT_MACRO",A="FL:::/Kernel/KernelA.HPP,967"$
+$LK,"TK_DEREFERENCE",A="FL:::/Kernel/KernelA.HPP,2076"$
+$LK,"ARGT_UIMM8",A="FL:::/Kernel/KernelA.HPP,1885"$
+$LK,"DOCF_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1272"$
+$LK,"DOCEf_LEFT_MACRO",A="FL:::/Kernel/KernelA.HPP,1055"$
 $LK,"SYS_GDT",A="FL:::/Kernel/KStart.CPP.Z,36"$
 $LK,"CDate2Dos",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,1",BI=322$
 $LK,"SrvCmdRunOne",A="FL:::/Kernel/SrvCmd.CPP.Z,267",BI=323$
-$LK,"MRT_UNUSED",A="FL:::/Kernel/KernelA.HPP,2836"$
+$LK,"MRT_UNUSED",A="FL:::/Kernel/KernelA.HPP,2855"$
+$LK,"MDG_REG_DISP_SIB",A="FL:::/Kernel/KernelA.HPP,1583"$
 $LK,"RedSeaFilesDel",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,456",BI=324$
 $LK,"XchgU32",A="FL:::/Kernel/KernelB.HPP,268"$
 $LK,"XchgU16",A="FL:::/Kernel/KernelB.HPP,267"$
-$LK,"TK_SHL_EQU",A="FL:::/Kernel/KernelA.HPP,2067"$
-$LK,"CCntsGlbls",A="FL:::/Kernel/KernelA.HPP,533"$
+$LK,"TK_SHL_EQU",A="FL:::/Kernel/KernelA.HPP,2087"$
+$LK,"CCntsGlbls",A="FL:::/Kernel/KernelA.HPP,534"$
 $LK,"TEMP_BUF_LEN",A="FL:::/Kernel/StrPrint.CPP.Z,216"$
 $LK,"LastDayOfMon",A="FL:::/Kernel/KDate.CPP.Z,82",BI=325$
-$LK,"RT_I8",A="FL:::/Kernel/KernelA.HPP,1545"$
-$LK,"SVCf_WAKE_MASTER",A="FL:::/Kernel/KernelA.HPP,3149"$
-$LK,"CAsmNum",A="FL:::/Kernel/KernelA.HPP,1797"$
+$LK,"RT_I8",A="FL:::/Kernel/KernelA.HPP,1551"$
+$LK,"SVCf_WAKE_MASTER",A="FL:::/Kernel/KernelA.HPP,3168"$
+$LK,"CAsmNum",A="FL:::/Kernel/KernelA.HPP,1816"$
 $LK,"_REP_OUT_U16",A="FL:::/Kernel/KUtils.CPP.Z,297"$
 $LK,"_REP_OUT_U32",A="FL:::/Kernel/KUtils.CPP.Z,286"$
-$LK,"VGAM_TEXT",A="FL:::/Kernel/KernelA.HPP,3699"$
-$LK,"ACD_POS",A="FL:::/Kernel/KernelA.HPP,1499"$
+$LK,"VGAM_TEXT",A="FL:::/Kernel/KernelA.HPP,3718"$
+$LK,"ACD_POS",A="FL:::/Kernel/KernelA.HPP,1505"$
 $LK,"FirstDayOfMon",A="FL:::/Kernel/KDate.CPP.Z,71",BI=326$
 $LK,"PutChars",A="FL:::/Kernel/KeyDev.CPP.Z,20",BI=327$
 $LK,"_BEQU",A="FL:::/Kernel/KUtils.CPP.Z,89"$
-$LK,"DOCEf_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,1056"$
-$LK,"DOCEF_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,970"$
-$LK,"ansf",A="FL:::/Kernel/KernelA.HPP,3394"$
+$LK,"DOCEf_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,1060"$
+$LK,"DOCEF_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,972"$
+$LK,"ansf",A="FL:::/Kernel/KernelA.HPP,3413"$
 $LK,"BlkDevsInitAll",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,207",BI=328$
 $LK,"SysUntry",A="FL:::/Kernel/KExcept.CPP.Z,75",BI=329$
-$LK,"WIF_FOCUS_TASK_BORDER",A="FL:::/Kernel/KernelA.HPP,1420"$
+$LK,"WIF_FOCUS_TASK_BORDER",A="FL:::/Kernel/KernelA.HPP,1426"$
 $LK,"_MEMCMP",A="FL:::/Kernel/KUtils.CPP.Z,70"$
-$LK,"DISPLAYf_NO_BORDER",A="FL:::/Kernel/KernelA.HPP,3272"$
+$LK,"DISPLAYf_NO_BORDER",A="FL:::/Kernel/KernelA.HPP,3291"$
 $LK,"OFF",A="FL:::/Kernel/KernelA.HPP,21"$
-$LK,"DOCF_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HPP,1268"$
+$LK,"DOCF_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HPP,1274"$
 $LK,"SYS_BOOT_SRC",A="FL:::/Kernel/KStart.CPP.Z,24"$
-$LK,"FUF_JUST_SRC",A="FL:::/Kernel/KernelA.HPP,2586"$
-$LK,"FUf_JUST_SRC",A="FL:::/Kernel/KernelA.HPP,2560"$
-$LK,"OC_CALL",A="FL:::/Kernel/KernelA.HPP,1741"$
+$LK,"FUF_JUST_SRC",A="FL:::/Kernel/KernelA.HPP,2605"$
+$LK,"FUf_JUST_SRC",A="FL:::/Kernel/KernelA.HPP,2579"$
+$LK,"OC_CALL",A="FL:::/Kernel/KernelA.HPP,1759"$
 $LK,"TaskExe",A="FL:::/Kernel/SrvCmd.CPP.Z,39",BI=330$
 $LK,"ThrowBreak",A="FL:::/Kernel/KExcept.CPP.Z,125",BI=331$
 $LK,"FileWrite",A="FL:::/Kernel/BlkDev/DskFile.CPP.Z,94",BI=332$
-$LK,"ARf_CSPRITE_PTS_RECTANGLES",A="FL:::/Kernel/KernelA.HPP,3877"$
+$LK,"ARf_CSPRITE_PTS_RECTANGLES",A="FL:::/Kernel/KernelA.HPP,3896"$
 $LK,"RFLAGf_ID",A="FL:::/Kernel/KernelA.HPP,322"$
-$LK,"SCF_E0_PREFIX",A="FL:::/Kernel/KernelA.HPP,3514"$
-$LK,"SCf_E0_PREFIX",A="FL:::/Kernel/KernelA.HPP,3499"$
+$LK,"SCF_E0_PREFIX",A="FL:::/Kernel/KernelA.HPP,3533"$
+$LK,"SCf_E0_PREFIX",A="FL:::/Kernel/KernelA.HPP,3518"$
 $LK,"ATAWaitNotBUSY",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,24",BI=333$
 $LK,"_XCHG_U16",A="FL:::/Kernel/KUtils.CPP.Z,200"$
 $LK,"_XCHG_U32",A="FL:::/Kernel/KUtils.CPP.Z,192"$
-$LK,"SUF_TO_LOWER",A="FL:::/Kernel/KernelA.HPP,3771"$
-$LK,"ARGT_XMM32",A="FL:::/Kernel/KernelA.HPP,1920"$
-$LK,"WIF_SELF_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1408"$
+$LK,"SUF_TO_LOWER",A="FL:::/Kernel/KernelA.HPP,3790"$
+$LK,"ARGT_XMM32",A="FL:::/Kernel/KernelA.HPP,1939"$
+$LK,"WIF_SELF_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1414"$
 $LK,"LDF_SILENT",A="FL:::/Kernel/KernelA.HPP,367"$
-$LK,"RED",A="FL:::/Kernel/KernelA.HPP,2933"$
-$LK,"RT_U0",A="FL:::/Kernel/KernelA.HPP,1544"$
-$LK,"SYS_SEMA_DEBUG",A="FL:::/Kernel/KernelA.HPP,589"$
+$LK,"RED",A="FL:::/Kernel/KernelA.HPP,2952"$
+$LK,"RT_U0",A="FL:::/Kernel/KernelA.HPP,1550"$
+$LK,"SYS_SEMA_DEBUG",A="FL:::/Kernel/KernelA.HPP,590"$
 $LK,"SrvCmdDel",A="FL:::/Kernel/SrvCmd.CPP.Z,1",BI=334$
-$LK,"VGAR_MAP_MASK",A="FL:::/Kernel/KernelA.HPP,3717"$
-$LK,"CAOTCtrl",A="FL:::/Kernel/KernelA.HPP,2027"$
-$LK,"SCF_NEW_KEY",A="FL:::/Kernel/KernelA.HPP,3522"$
+$LK,"VGAR_MAP_MASK",A="FL:::/Kernel/KernelA.HPP,3736"$
+$LK,"CAOTCtrl",A="FL:::/Kernel/KernelA.HPP,2047"$
+$LK,"SCF_NEW_KEY",A="FL:::/Kernel/KernelA.HPP,3541"$
 $LK,"TASK_CONTEXT_SAVE",A="FL:::/Kernel/Sched.CPP.Z,56"$
-$LK,"SCf_NEW_KEY",A="FL:::/Kernel/KernelA.HPP,3507"$
-$LK,"CDirContext",A="FL:::/Kernel/KernelA.HPP,2742"$
+$LK,"SCf_NEW_KEY",A="FL:::/Kernel/KernelA.HPP,3526"$
+$LK,"CDirContext",A="FL:::/Kernel/KernelA.HPP,2761"$
 $LK,"BootDVDProbeAll",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,28",BI=335$
 $LK,"SysThrowBreak",A="FL:::/Kernel/KExcept.CPP.Z,111",BI=336$
 $LK,"_MEMCPY",A="FL:::/Kernel/KUtils.CPP.Z,55"$
 $LK,"_D3_DIST_SQR",A="FL:::/Kernel/KMathA.CPP.Z,61"$
-$LK,"ARGT_XMM64",A="FL:::/Kernel/KernelA.HPP,1921"$
+$LK,"ARGT_XMM64",A="FL:::/Kernel/KernelA.HPP,1940"$
 $LK,"ATAWriteBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,461",BI=337$
-$LK,"RT_U8",A="FL:::/Kernel/KernelA.HPP,1546"$
-$LK,"DOCEf_USER_DATA",A="FL:::/Kernel/KernelA.HPP,1060"$
-$LK,"DOCEF_USER_DATA",A="FL:::/Kernel/KernelA.HPP,974"$
+$LK,"RT_U8",A="FL:::/Kernel/KernelA.HPP,1552"$
+$LK,"DOCEf_USER_DATA",A="FL:::/Kernel/KernelA.HPP,1064"$
+$LK,"DOCEF_USER_DATA",A="FL:::/Kernel/KernelA.HPP,976"$
 $LK,"COPY_BUF_BLKS",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,22"$
 $LK,"FAT32FileWrite",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,813",BI=338$
-$LK,"CISO1Date",A="FL:::/Kernel/KernelA.HPP,2429"$
-$LK,"EDf_BAIL",A="FL:::/Kernel/KernelA.HPP,1242"$
-$LK,"EDF_BAIL",A="FL:::/Kernel/KernelA.HPP,1236"$
+$LK,"CISO1Date",A="FL:::/Kernel/KernelA.HPP,2448"$
+$LK,"EDf_BAIL",A="FL:::/Kernel/KernelA.HPP,1248"$
+$LK,"EDF_BAIL",A="FL:::/Kernel/KernelA.HPP,1242"$
 $LK,"ChkCodePtr",A="FL:::/Kernel/KDbg.CPP.Z,16",BI=339$
 $LK,"SYS_RAM_REBOOT",A="FL:::/Kernel/KStart.CPP.Z,348"$
-$LK,"ISO1T_BOOT_RECORD",A="FL:::/Kernel/KernelA.HPP,2454"$
+$LK,"ISO1T_BOOT_RECORD",A="FL:::/Kernel/KernelA.HPP,2473"$
 $LK,"FileFind",A="FL:::/Kernel/BlkDev/DskFind.CPP.Z,57",BI=340$
 $LK,"SYS_FIND_PCI_SERVICES",A="FL:::/Kernel/PCIBIOS.CPP.Z,38"$
-$LK,"VGAP_ATTR_DATA_WRITE",A="FL:::/Kernel/KernelA.HPP,3703"$
-$LK,"FUF_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,2595"$
-$LK,"TK_MUL_EQU",A="FL:::/Kernel/KernelA.HPP,2069"$
-$LK,"TK_NOT_EQU",A="FL:::/Kernel/KernelA.HPP,2061"$
+$LK,"VGAP_ATTR_DATA_WRITE",A="FL:::/Kernel/KernelA.HPP,3722"$
+$LK,"FUF_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,2614"$
+$LK,"TK_MUL_EQU",A="FL:::/Kernel/KernelA.HPP,2089"$
+$LK,"TK_NOT_EQU",A="FL:::/Kernel/KernelA.HPP,2081"$
 $LK,"MIN_U32",A="FL:::/Kernel/KernelA.HPP,32"$
 $LK,"MIN_U16",A="FL:::/Kernel/KernelA.HPP,28"$
 $LK,"CFileNameTo",A="FL:::/Kernel/BlkDev/DskStrB.CPP.Z,1",BI=341$
 $LK,"IntNop",A="FL:::/Kernel/KInts.CPP.Z,136",BI=342$
 $LK,"_D3_MUL_EQU",A="FL:::/Kernel/KMathA.CPP.Z,273"$
-$LK,"DISPLAYf_SHOW",A="FL:::/Kernel/KernelA.HPP,3269"$
-$LK,"DOF_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1211"$
-$LK,"HTF_PUBLIC",A="FL:::/Kernel/KernelA.HPP,698"$
-$LK,"HTf_PUBLIC",A="FL:::/Kernel/KernelA.HPP,668"$
+$LK,"DISPLAYf_SHOW",A="FL:::/Kernel/KernelA.HPP,3288"$
+$LK,"DOF_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1217"$
+$LK,"HTF_PUBLIC",A="FL:::/Kernel/KernelA.HPP,699"$
+$LK,"HTf_PUBLIC",A="FL:::/Kernel/KernelA.HPP,669"$
 $LK,"SYS_HASH_SINGLE_TABLE_FIND",A="FL:::/Kernel/KHashA.CPP.Z,41"$
-$LK,"OC_OP_SIZE_PREFIX",A="FL:::/Kernel/KernelA.HPP,1736"$
-$LK,"ICF_NOT_ADDR",A="FL:::/Kernel/KernelA.HPP,1583"$
-$LK,"CCF_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,2122"$
-$LK,"MLF_FUN",A="FL:::/Kernel/KernelA.HPP,772"$
+$LK,"OC_OP_SIZE_PREFIX",A="FL:::/Kernel/KernelA.HPP,1754"$
+$LK,"CCF_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,2142"$
+$LK,"MLF_FUN",A="FL:::/Kernel/KernelA.HPP,773"$
 $LK,"TaskMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,119",BI=343$
 $LK,"RBlks",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,31",BI=344$
-$LK,"DOCEF_ZERO_BASED",A="FL:::/Kernel/KernelA.HPP,1008"$
-$LK,"HTF_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,704"$
+$LK,"DOCEF_ZERO_BASED",A="FL:::/Kernel/KernelA.HPP,1010"$
+$LK,"HTF_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,705"$
 $LK,"FAT32Cd",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,399",BI=345$
-$LK,"DOCEf_ZERO_BASED",A="FL:::/Kernel/KernelA.HPP,1092"$
-$LK,"HTf_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,674"$
-$LK,"CAP16BitInit",A="FL:::/Kernel/KernelA.HPP,521"$
+$LK,"DOCEf_ZERO_BASED",A="FL:::/Kernel/KernelA.HPP,1096"$
+$LK,"HTf_UNRESOLVED",A="FL:::/Kernel/KernelA.HPP,675"$
+$LK,"CAP16BitInit",A="FL:::/Kernel/KernelA.HPP,522"$
 $LK,"ATAPIWriteBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,535",BI=346$
 $LK,"cnts",A="FL:::/Kernel/KGlbls.CPP.Z,20"$
 $LK,"chars_bmp_displayable",A="FL:::/Kernel/StrA.CPP.Z,386"$
 $LK,"SYS_HEAP_INIT_FLAG",A="FL:::/Home/Temp.TXT.Z,1"$
-$LK,"FUF_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,2594"$
+$LK,"FUF_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,2613"$
 $LK,"ScanChar",A="FL:::/Kernel/SerialDev/Message.CPP.Z,110",BI=347$
 $LK,"RepInU32",A="FL:::/Kernel/KernelB.HPP,83"$
 $LK,"RepInU16",A="FL:::/Kernel/KernelB.HPP,81"$
@@ -1544,27 +1547,27 @@ $LK,"loge_2",A="FL:::/Kernel/KernelA.HPP,54"$
 $LK,"MIN_U64",A="FL:::/Kernel/KernelA.HPP,36"$
 $LK,"chars_bmp_white_space",A="FL:::/Kernel/StrA.CPP.Z,356"$
 $LK,"FAT32FileFind",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,298",BI=348$
-$LK,"GSF_SHIFT_ESC_EXIT",A="FL:::/Kernel/KernelA.HPP,3760"$
-$LK,"SFG_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,3781"$
-$LK,"FUf_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,2568"$
-$LK,"DOCf_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HPP,1304"$
-$LK,"DOCf_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1298"$
-$LK,"DOCF_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1262"$
+$LK,"GSF_SHIFT_ESC_EXIT",A="FL:::/Kernel/KernelA.HPP,3779"$
+$LK,"SFG_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,3800"$
+$LK,"FUf_WHOLE_LABELS",A="FL:::/Kernel/KernelA.HPP,2587"$
+$LK,"DOCf_DO_FULL_REFRESH",A="FL:::/Kernel/KernelA.HPP,1310"$
+$LK,"DOCf_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1304"$
+$LK,"DOCF_DONT_SHOW",A="FL:::/Kernel/KernelA.HPP,1268"$
 $LK,"DirTreeDel2",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,49",BI=349$
-$LK,"FUF_JUST_TXT",A="FL:::/Kernel/KernelA.HPP,2585"$
-$LK,"FUf_JUST_TXT",A="FL:::/Kernel/KernelA.HPP,2559"$
-$LK,"DOCT_DFT_BACKGROUND",A="FL:::/Kernel/KernelA.HPP,911"$
-$LK,"DOCT_DFT_FOREGROUND",A="FL:::/Kernel/KernelA.HPP,910"$
-$LK,"BOOT_SRC_HARDDRV",A="FL:::/Kernel/KernelA.HPP,3864"$
+$LK,"FUF_JUST_TXT",A="FL:::/Kernel/KernelA.HPP,2604"$
+$LK,"FUf_JUST_TXT",A="FL:::/Kernel/KernelA.HPP,2578"$
+$LK,"DOCT_DFT_BACKGROUND",A="FL:::/Kernel/KernelA.HPP,913"$
+$LK,"DOCT_DFT_FOREGROUND",A="FL:::/Kernel/KernelA.HPP,912"$
+$LK,"BOOT_SRC_HARDDRV",A="FL:::/Kernel/KernelA.HPP,3883"$
 $LK,"HashFind",A="FL:::/Kernel/KHashA.CPP.Z,255"$
 $LK,"D3Cross",A="FL:::/Kernel/KernelB.HPP,153"$
-$LK,"MAX_PTR_STARS",A="FL:::/Kernel/KernelA.HPP,766"$
-$LK,"DOCEF_ESC",A="FL:::/Kernel/KernelA.HPP,993"$
+$LK,"MAX_PTR_STARS",A="FL:::/Kernel/KernelA.HPP,767"$
+$LK,"DOCEF_ESC",A="FL:::/Kernel/KernelA.HPP,995"$
 $LK,"_FREE",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,224"$
 $LK,"SrcLineNum",A="FL:::/Kernel/FunSeg.CPP.Z,144",BI=350$
 $LK,"ATAPIClose",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,521",BI=351$
-$LK,"DOCT_MACRO",A="FL:::/Kernel/KernelA.HPP,926"$
-$LK,"CH_SHIFT_ESC",A="FL:::/Kernel/KernelA.HPP,3491"$
+$LK,"DOCT_MACRO",A="FL:::/Kernel/KernelA.HPP,928"$
+$LK,"CH_SHIFT_ESC",A="FL:::/Kernel/KernelA.HPP,3510"$
 $LK,"InDbg",A="FL:::/Kernel/KMisc.CPP.Z,265",BI=352$
 $LK,"Dbg",A="FL:::/Kernel/KDbg.CPP.Z,636",BI=353$
 $LK,"Abs",A="FL:::/Kernel/KernelB.HPP,95"$
@@ -1572,97 +1575,99 @@ $LK,"CDATE_YEAR_DAYS",A="FL:::/Kernel/KernelA.HPP,181"$
 $LK,"RFLAGf_OVERFLOW",A="FL:::/Kernel/KernelA.HPP,313"$
 $LK,"SYS_POW",A="FL:::/Kernel/KMathA.CPP.Z,462"$
 $LK,"StrNICmp",A="FL:::/Kernel/StrA.CPP.Z,315"$
-$LK,"DOCf_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1302"$
-$LK,"DOCEf_RIGHT_X",A="FL:::/Kernel/KernelA.HPP,1069"$
-$LK,"DOCEF_RIGHT_X",A="FL:::/Kernel/KernelA.HPP,983"$
-$LK,"DCF_FILL_NOT_COLOR",A="FL:::/Kernel/KernelA.HPP,3616"$
-$LK,"DOCEF_LEN",A="FL:::/Kernel/KernelA.HPP,960"$
+$LK,"DOCf_NULL_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1308"$
+$LK,"DOCEf_RIGHT_X",A="FL:::/Kernel/KernelA.HPP,1073"$
+$LK,"DOCEF_RIGHT_X",A="FL:::/Kernel/KernelA.HPP,985"$
+$LK,"DCF_FILL_NOT_COLOR",A="FL:::/Kernel/KernelA.HPP,3635"$
+$LK,"DOCEF_LEN",A="FL:::/Kernel/KernelA.HPP,962"$
 $LK,"FileAttr",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,228",BI=354$
 $LK,"_MEMSET",A="FL:::/Kernel/KUtils.CPP.Z,3"$
-$LK,"ROP_COLLISION",A="FL:::/Kernel/KernelA.HPP,2915"$
-$LK,"TK_PLUS_PLUS",A="FL:::/Kernel/KernelA.HPP,2054"$
+$LK,"ROP_COLLISION",A="FL:::/Kernel/KernelA.HPP,2934"$
+$LK,"TK_PLUS_PLUS",A="FL:::/Kernel/KernelA.HPP,2074"$
 $LK,"sys_heap_init_val",A="FL:::/Kernel/KernelB.HPP,188"$
-$LK,"DOCEF_DEREF_DATA",A="FL:::/Kernel/KernelA.HPP,1005"$
-$LK,"VGAP_REG_WRITE",A="FL:::/Kernel/KernelA.HPP,3710"$
-$LK,"FUF_EXPAND",A="FL:::/Kernel/KernelA.HPP,2581"$
-$LK,"FUf_EXPAND",A="FL:::/Kernel/KernelA.HPP,2555"$
-$LK,"DOCEf_DEREF_DATA",A="FL:::/Kernel/KernelA.HPP,1089"$
+$LK,"DOCEF_DEREF_DATA",A="FL:::/Kernel/KernelA.HPP,1007"$
+$LK,"VGAP_REG_WRITE",A="FL:::/Kernel/KernelA.HPP,3729"$
+$LK,"FUF_EXPAND",A="FL:::/Kernel/KernelA.HPP,2600"$
+$LK,"FUf_EXPAND",A="FL:::/Kernel/KernelA.HPP,2574"$
+$LK,"DOCEf_DEREF_DATA",A="FL:::/Kernel/KernelA.HPP,1093"$
 $LK,"Del",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,82",BI=355$
 $LK,"IDTET_TASK",A="FL:::/Kernel/KernelA.HPP,278"$
 $LK,"TaskValidate",A="FL:::/Kernel/KTask.CPP.Z,19",BI=356$
-$LK,"LAPIC_ARIBITRATION_PRIORITY",A="FL:::/Kernel/KernelA.HPP,478"$
+$LK,"LAPIC_ARIBITRATION_PRIORITY",A="FL:::/Kernel/KernelA.HPP,479"$
 $LK,"fp_set_std_palette",A="FL:::/Kernel/KGlbls.CPP.Z,34"$
 $LK,"keydev",A="FL:::/Kernel/KGlbls.CPP.Z,26"$
 $LK,"HashBucketFind",A="FL:::/Kernel/KHashA.CPP.Z,260"$
-$LK,"IC_BODY_SIZE",A="FL:::/Kernel/KernelA.HPP,1606"$
-$LK,"TY_DISP",A="FL:::/Kernel/KernelA.HPP,1564"$
-$LK,"TY_RIP_DISP32",A="FL:::/Kernel/KernelA.HPP,1566"$
+$LK,"OCF_ALIAS",A="FL:::/Kernel/KernelA.HPP,1945"$
+$LK,"IC_BODY_SIZE",A="FL:::/Kernel/KernelA.HPP,1620"$
 $LK,"chars_bmp_alpha_numeric",A="FL:::/Kernel/StrA.CPP.Z,330"$
 $LK,"_LOG2",A="FL:::/Kernel/KMathA.CPP.Z,603"$
-$LK,"ROPB_COLLISION",A="FL:::/Kernel/KernelA.HPP,2906"$
-$LK,"HTT_WORD",A="FL:::/Kernel/KernelA.HPP,685"$
-$LK,"HTt_WORD",A="FL:::/Kernel/KernelA.HPP,655"$
-$LK,"FUG_FILE_FIND",A="FL:::/Kernel/KernelA.HPP,2601"$
+$LK,"ROPB_COLLISION",A="FL:::/Kernel/KernelA.HPP,2925"$
+$LK,"HTT_WORD",A="FL:::/Kernel/KernelA.HPP,686"$
+$LK,"HTt_WORD",A="FL:::/Kernel/KernelA.HPP,656"$
+$LK,"FUG_FILE_FIND",A="FL:::/Kernel/KernelA.HPP,2620"$
 $LK,"I_PAGE_FAULT",A="FL:::/Kernel/KernelA.HPP,288"$
 $LK,"DrvUnlock",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,14",BI=357$
-$LK,"CProgress",A="FL:::/Kernel/KernelA.HPP,3883"$
+$LK,"CProgress",A="FL:::/Kernel/KernelA.HPP,3902"$
 $LK,"Arg",A="FL:::/Kernel/KernelB.HPP,121"$
-$LK,"FSt_ISO9660",A="FL:::/Kernel/KernelA.HPP,2661"$
+$LK,"FSt_ISO9660",A="FL:::/Kernel/KernelA.HPP,2680"$
 $LK,"CallExtNum",A="FL:::/Kernel/KernelB.HPP,54"$
 $LK,"DirFile",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,284",BI=358$
-$LK,"DOCEF_TAG",A="FL:::/Kernel/KernelA.HPP,959"$
+$LK,"DOCEF_TAG",A="FL:::/Kernel/KernelA.HPP,961"$
 $LK,"Btc",A="FL:::/Kernel/KernelB.HPP,16"$
-$LK,"CCF_KEEP_NEW_LINES",A="FL:::/Kernel/KernelA.HPP,2110"$
+$LK,"CCF_KEEP_NEW_LINES",A="FL:::/Kernel/KernelA.HPP,2130"$
+$LK,"MDF_RIP_DISP32",A="FL:::/Kernel/KernelA.HPP,1581"$
 $LK,"Dir",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,91",BI=359$
 $LK,"Bsf",A="FL:::/Kernel/KernelB.HPP,10"$
-$LK,"ECF_HAS_PUSH_CMP",A="FL:::/Kernel/KernelA.HPP,1608"$
-$LK,"WIf_SELF_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1434"$
-$LK,"DOCT_PAGE_BREAK",A="FL:::/Kernel/KernelA.HPP,901"$
-$LK,"SYS_SEMA_RECORD_MACRO",A="FL:::/Kernel/KernelA.HPP,590"$
+$LK,"MDf_RIP_DISP32",A="FL:::/Kernel/KernelA.HPP,1573"$
+$LK,"ECF_HAS_PUSH_CMP",A="FL:::/Kernel/KernelA.HPP,1622"$
+$LK,"WIf_SELF_GRAB_SCROLL",A="FL:::/Kernel/KernelA.HPP,1440"$
+$LK,"DOCT_PAGE_BREAK",A="FL:::/Kernel/KernelA.HPP,903"$
+$LK,"SYS_SEMA_RECORD_MACRO",A="FL:::/Kernel/KernelA.HPP,591"$
 $LK,"IPVarsUpdate",A="FL:::/Kernel/SerialDev/InputPointer.CPP.Z,9",BI=360$
-$LK,"MLF_LASTCLASS",A="FL:::/Kernel/KernelA.HPP,770"$
+$LK,"MLF_LASTCLASS",A="FL:::/Kernel/KernelA.HPP,771"$
 $LK,"Fxrstor",A="FL:::/Kernel/KernelB.HPP,133"$
-$LK,"_R8",A="FL:::/Kernel/KernelA.HPP,3405"$
-$LK,"_R9",A="FL:::/Kernel/KernelA.HPP,3406"$
+$LK,"_R8",A="FL:::/Kernel/KernelA.HPP,3424"$
+$LK,"_R9",A="FL:::/Kernel/KernelA.HPP,3425"$
 $LK,"FileRead",A="FL:::/Kernel/BlkDev/DskFile.CPP.Z,1",BI=361$
-$LK,"DOCf_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1308"$
-$LK,"DOCF_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1271"$
-$LK,"DOCT_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,934"$
+$LK,"DOCf_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1314"$
+$LK,"DOCF_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1277"$
+$LK,"DOCT_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,936"$
 $LK,"_FAR_CALL32",A="FL:::/Kernel/PCIBIOS.CPP.Z,69"$
 $LK,"KbdMouseCmdAck",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,65",BI=362$
-$LK,"CAOTHeapGlblRef",A="FL:::/Kernel/KernelA.HPP,1960"$
+$LK,"CAOTHeapGlblRef",A="FL:::/Kernel/KernelA.HPP,1980"$
+$LK,"IEF_IMM_NOT_REL",A="FL:::/Kernel/KernelA.HPP,402"$
 $LK,"FAT32DirFill",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,241",BI=363$
 $LK,"QueCopy",A="FL:::/Kernel/KDataTypes.CPP.Z,53",BI=364$
 $LK,"Carry",A="FL:::/Kernel/KernelB.HPP,246"$
 $LK,"Cos",A="FL:::/Kernel/KernelB.HPP,97"$
 $LK,"Clamp",A="FL:::/Kernel/KMathB.CPP.Z,1",BI=365$
-$LK,"BDF_FMT",A="FL:::/Kernel/KernelA.HPP,2618"$
+$LK,"BDF_FMT",A="FL:::/Kernel/KernelA.HPP,2637"$
 $LK,"Name2DirCluster",A="FL:::/Kernel/BlkDev/DskStrB.CPP.Z,10",BI=366$
 $LK,"Bsr",A="FL:::/Kernel/KernelB.HPP,12"$
 $LK,"SYS_PROGRESS1_MAX",A="FL:::/Kernel/KStart.CPP.Z,209"$
-$LK,"GR_Z_ALL",A="FL:::/Kernel/KernelA.HPP,3595"$
-$LK,"CMasterBoot",A="FL:::/Kernel/KernelA.HPP,2290"$
+$LK,"GR_Z_ALL",A="FL:::/Kernel/KernelA.HPP,3614"$
+$LK,"CMasterBoot",A="FL:::/Kernel/KernelA.HPP,2309"$
 $LK,"Fix",A="FL:::/Kernel/EdLite.CPP.Z,337",BI=367$
 $LK,"Btr",A="FL:::/Kernel/KernelB.HPP,18"$
 $LK,"_LN",A="FL:::/Kernel/KMathA.CPP.Z,614"$
-$LK,"OPTf_WARN_UNUSED_VAR",A="FL:::/Kernel/KernelA.HPP,1528"$
-$LK,"DOCF_SUPERSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1280"$
+$LK,"OPTf_WARN_UNUSED_VAR",A="FL:::/Kernel/KernelA.HPP,1534"$
+$LK,"DOCF_SUPERSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1286"$
 $LK,"RFLAGf_CARRY",A="FL:::/Kernel/KernelA.HPP,305"$
 $LK,"FAT32FileRead",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,367",BI=368$
 $LK,"DirFilesFlatten",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,136",BI=369$
 $LK,"FileExtDot",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,1",BI=370$
 $LK,"IsDbg",A="FL:::/Kernel/KMisc.CPP.Z,270",BI=371$
 $LK,"Bts",A="FL:::/Kernel/KernelB.HPP,20"$
-$LK,"CMemBlk",A="FL:::/Kernel/KernelA.HPP,2830"$
-$LK,"DOCEF_LST",A="FL:::/Kernel/KernelA.HPP,1011"$
+$LK,"CMemBlk",A="FL:::/Kernel/KernelA.HPP,2849"$
+$LK,"DOCEF_LST",A="FL:::/Kernel/KernelA.HPP,1013"$
 $LK,"Man",A="FL:::/Kernel/FunSeg.CPP.Z,284",BI=372$
 $LK,"Mem512Alloc",A="FL:::/Kernel/Mem/Mem512.CPP.Z,11",BI=373$
-$LK,"TK_SHR_EQU",A="FL:::/Kernel/KernelA.HPP,2068"$
-$LK,"CDATE_FREQ",A="FL:::/Kernel/KernelA.HPP,547"$
+$LK,"TK_SHR_EQU",A="FL:::/Kernel/KernelA.HPP,2088"$
+$LK,"CDATE_FREQ",A="FL:::/Kernel/KernelA.HPP,548"$
 $LK,"FilesFind",A="FL:::/Kernel/BlkDev/DskFind.CPP.Z,30",BI=374$
 $LK,"_HASH_FIND",A="FL:::/Kernel/KHashA.CPP.Z,129"$
 $LK,"MSize",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,384"$
-$LK,"CSysFixedArea",A="FL:::/Kernel/KernelA.HPP,3447"$
+$LK,"CSysFixedArea",A="FL:::/Kernel/KernelA.HPP,3466"$
 $LK,"Fmt",A="FL:::/Kernel/BlkDev/DskFmt.CPP.Z,53",BI=375$
 $LK,"ExeCmdLine",A="FL:::/Kernel/KTask.CPP.Z,268",BI=376$
 $LK,"reverse_bits_table",A="FL:::/Kernel/KGlbls.CPP.Z,12"$
@@ -1670,1193 +1675,1203 @@ $LK,"Log10",A="FL:::/Kernel/KernelB.HPP,136"$
 $LK,"FifoI64Flush",A="FL:::/Kernel/KDataTypes.CPP.Z,304",BI=377$
 $LK,"InvlPg",A="FL:::/Kernel/KernelB.HPP,279"$
 $LK,"CallExtStr",A="FL:::/Kernel/KernelB.HPP,45"$
-$LK,"VGAM_GRAPHICS",A="FL:::/Kernel/KernelA.HPP,3698"$
-$LK,"DCF_LOCATE_NEAREST",A="FL:::/Kernel/KernelA.HPP,3612"$
-$LK,"Ff_ARGPOP",A="FL:::/Kernel/KernelA.HPP,844"$
-$LK,"SCF_ALT",A="FL:::/Kernel/KernelA.HPP,3518"$
-$LK,"CViewAngles",A="FL:::/Kernel/KernelA.HPP,3078"$
-$LK,"CArrayDim",A="FL:::/Kernel/KernelA.HPP,777"$
-$LK,"DOCEf_NUM_FLAGS",A="FL:::/Kernel/KernelA.HPP,1102"$
-$LK,"Ff_INTERNAL",A="FL:::/Kernel/KernelA.HPP,846"$
+$LK,"VGAM_GRAPHICS",A="FL:::/Kernel/KernelA.HPP,3717"$
+$LK,"DCF_LOCATE_NEAREST",A="FL:::/Kernel/KernelA.HPP,3631"$
+$LK,"Ff_ARGPOP",A="FL:::/Kernel/KernelA.HPP,845"$
+$LK,"SCF_ALT",A="FL:::/Kernel/KernelA.HPP,3537"$
+$LK,"CViewAngles",A="FL:::/Kernel/KernelA.HPP,3097"$
+$LK,"CArrayDim",A="FL:::/Kernel/KernelA.HPP,778"$
+$LK,"DOCEf_NUM_FLAGS",A="FL:::/Kernel/KernelA.HPP,1108"$
+$LK,"Ff_INTERNAL",A="FL:::/Kernel/KernelA.HPP,847"$
 $LK,"Drv",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,223",BI=378$
 $LK,"Fclex",A="FL:::/Kernel/KernelB.HPP,128"$
-$LK,"MEM_PROTECTED_LOW_LIMIT",A="FL:::/Kernel/KernelA.HPP,3444"$
+$LK,"MEM_PROTECTED_LOW_LIMIT",A="FL:::/Kernel/KernelA.HPP,3463"$
+$LK,"MDF_DISP",A="FL:::/Kernel/KernelA.HPP,1579"$
+$LK,"MDf_DISP",A="FL:::/Kernel/KernelA.HPP,1571"$
 $LK,"Blink",A="FL:::/Kernel/KMisc.CPP.Z,130",BI=379$
-$LK,"CDbgInfo",A="FL:::/Kernel/KernelA.HPP,714"$
-$LK,"IET_ZEROED_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,411"$
+$LK,"CDbgInfo",A="FL:::/Kernel/KernelA.HPP,715"$
+$LK,"IET_ZEROED_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,412"$
 $LK,"RFLAGf_V8086",A="FL:::/Kernel/KernelA.HPP,318"$
 $LK,"IDTET_TRAP",A="FL:::/Kernel/KernelA.HPP,280"$
 $LK,"SetRBP",A="FL:::/Kernel/KernelB.HPP,254"$
-$LK,"LTGREEN",A="FL:::/Kernel/KernelA.HPP,2939"$
-$LK,"DOCf_BLINK",A="FL:::/Kernel/KernelA.HPP,1310"$
-$LK,"DOCF_BLINK",A="FL:::/Kernel/KernelA.HPP,1273"$
-$LK,"DOCEf_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1037"$
-$LK,"DOCEF_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1031"$
+$LK,"LTGREEN",A="FL:::/Kernel/KernelA.HPP,2958"$
+$LK,"DOCf_BLINK",A="FL:::/Kernel/KernelA.HPP,1316"$
+$LK,"DOCF_BLINK",A="FL:::/Kernel/KernelA.HPP,1279"$
+$LK,"DOCEf_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1041"$
+$LK,"DOCEF_HIGHLIGHT",A="FL:::/Kernel/KernelA.HPP,1035"$
 $LK,"SysSymImportsResolve",A="FL:::/Kernel/KLoad.CPP.Z,55",BI=380$
-$LK,"RS_ATTR_HIDDEN",A="FL:::/Kernel/KernelA.HPP,2503"$
-$LK,"TY_MASK",A="FL:::/Kernel/KernelA.HPP,1570"$
+$LK,"RS_ATTR_HIDDEN",A="FL:::/Kernel/KernelA.HPP,2522"$
 $LK,"TaskEndNow",A="FL:::/Kernel/Sched.CPP.Z,296"$
 $LK,"Max",A="FL:::/Kernel/KMathB.CPP.Z,18",BI=381$
 $LK,"SYS_HASH_FIND",A="FL:::/Kernel/KHashA.CPP.Z,89"$
-$LK,"ROPF_DITHER",A="FL:::/Kernel/KernelA.HPP,2924"$
-$LK,"WIG_DBL_CLICK",A="FL:::/Kernel/KernelA.HPP,1423"$
-$LK,"SYS_SEMA_FIX",A="FL:::/Kernel/KernelA.HPP,610"$
+$LK,"ROPF_DITHER",A="FL:::/Kernel/KernelA.HPP,2943"$
+$LK,"WIG_DBL_CLICK",A="FL:::/Kernel/KernelA.HPP,1429"$
+$LK,"SYS_SEMA_FIX",A="FL:::/Kernel/KernelA.HPP,611"$
 $LK,"ToF64",A="FL:::/Kernel/KernelB.HPP,119"$
 $LK,"SYS_PROGRESS2_MAX",A="FL:::/Kernel/KStart.CPP.Z,212"$
-$LK,"CH_SHIFT_SPACE",A="FL:::/Kernel/KernelA.HPP,3492"$
-$LK,"ROPBF_DITHER",A="FL:::/Kernel/KernelA.HPP,2910"$
-$LK,"FF_WRITE",A="FL:::/Kernel/KernelA.HPP,2751"$
+$LK,"CH_SHIFT_SPACE",A="FL:::/Kernel/KernelA.HPP,3511"$
+$LK,"ROPBF_DITHER",A="FL:::/Kernel/KernelA.HPP,2929"$
+$LK,"FF_WRITE",A="FL:::/Kernel/KernelA.HPP,2770"$
 $LK,"SetRAX",A="FL:::/Kernel/KernelB.HPP,253"$
 $LK,"Min",A="FL:::/Kernel/KMathB.CPP.Z,10",BI=382$
 $LK,"mp_cnt",A="FL:::/Kernel/KernelB.HPP,234"$
 $LK,"Exp",A="FL:::/Kernel/KernelB.HPP,127"$
-$LK,"DCF_RECORD_EXTENTS",A="FL:::/Kernel/KernelA.HPP,3617"$
+$LK,"DCF_RECORD_EXTENTS",A="FL:::/Kernel/KernelA.HPP,3636"$
 $LK,"FAT32FilesFind",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,846",BI=383$
 $LK,"ISO1Cd",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,219",BI=384$
 $LK,"_HASH_ADD_AFTER",A="FL:::/Kernel/KHashA.CPP.Z,191"$
 $LK,"QueInit",A="FL:::/Kernel/KernelB.HPP,65"$
 $LK,"SrvTaskCont",A="FL:::/Kernel/KTask.CPP.Z,334",BI=385$
-$LK,"RS_ATTR_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2502"$
-$LK,"ICF_USE_UNSIGNED",A="FL:::/Kernel/KernelA.HPP,1579"$
+$LK,"RS_ATTR_READ_ONLY",A="FL:::/Kernel/KernelA.HPP,2521"$
+$LK,"ICF_USE_UNSIGNED",A="FL:::/Kernel/KernelA.HPP,1594"$
 $LK,"ATAGetDevId",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,163",BI=386$
 $LK,"WBlks",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,68",BI=387$
-$LK,"DOCT_ERROR",A="FL:::/Kernel/KernelA.HPP,936"$
+$LK,"DOCT_ERROR",A="FL:::/Kernel/KernelA.HPP,938"$
 $LK,"CopySingle",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,23",BI=388$
-$LK,"EXT_WIN_TO_TOP",A="FL:::/Kernel/KernelA.HPP,571"$
+$LK,"EXT_WIN_TO_TOP",A="FL:::/Kernel/KernelA.HPP,572"$
 $LK,"MouseIPSet",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,200",BI=389$
 $LK,"ATAPIReadCapacity",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,253",BI=390$
 $LK,"MkDir",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,146",BI=391$
 $LK,"IsDir",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,76",BI=392$
 $LK,"SetMSR",A="FL:::/Kernel/KernelB.HPP,264"$
 $LK,"ToI64",A="FL:::/Kernel/KernelB.HPP,120"$
-$LK,"IET_MAIN",A="FL:::/Kernel/KernelA.HPP,412"$
+$LK,"IET_MAIN",A="FL:::/Kernel/KernelA.HPP,413"$
 $LK,"ScanCode2KeyName",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,248",BI=393$
-$LK,"DOCf_INVERT",A="FL:::/Kernel/KernelA.HPP,1311"$
-$LK,"DOCF_INVERT",A="FL:::/Kernel/KernelA.HPP,1274"$
+$LK,"DOCf_INVERT",A="FL:::/Kernel/KernelA.HPP,1317"$
+$LK,"DOCF_INVERT",A="FL:::/Kernel/KernelA.HPP,1280"$
 $LK,"sys_heap_limit",A="FL:::/Kernel/KernelB.HPP,200"$
 $LK,"FileExtRem",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,10",BI=394$
 $LK,"Tan",A="FL:::/Kernel/KernelB.HPP,117"$
 $LK,"SYS_PROGRESS3_MAX",A="FL:::/Kernel/KStart.CPP.Z,215"$
-$LK,"SUF_REM_LEADING",A="FL:::/Kernel/KernelA.HPP,3766"$
-$LK,"OPTf_USE_IMM64",A="FL:::/Kernel/KernelA.HPP,1537"$
+$LK,"SUF_REM_LEADING",A="FL:::/Kernel/KernelA.HPP,3785"$
+$LK,"OPTf_USE_IMM64",A="FL:::/Kernel/KernelA.HPP,1543"$
 $LK,"Raw",A="FL:::/Kernel/KMisc.CPP.Z,243",BI=395$
 $LK,"Msg",A="FL:::/Kernel/SrvCmd.CPP.Z,257",BI=396$
-$LK,"OPTf_GLBLS_ON_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,1534"$
+$LK,"OPTf_GLBLS_ON_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,1540"$
 $LK,"KbdInit",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,424",BI=397$
 $LK,"chars_bmp_zero_tab_ff_cr_nl_cursor_dollar",A="FL:::/Kernel/StrA.CPP.Z,368"$
 $LK,"ToBool",A="FL:::/Kernel/KernelB.HPP,118"$
-$LK,"TASKf_KILL_AFTER_DBG",A="FL:::/Kernel/KernelA.HPP,3265"$
+$LK,"TASKf_KILL_AFTER_DBG",A="FL:::/Kernel/KernelA.HPP,3284"$
 $LK,"IRQMouse",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,13",BI=398$
 $LK,"PUT_HEX_U16",A="FL:::/Kernel/StrA.CPP.Z,37"$
 $LK,"PUT_HEX_U32",A="FL:::/Kernel/StrA.CPP.Z,30"$
 $LK,"ATAPIStartStop",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,144",BI=399$
 $LK,"_SIGN",A="FL:::/Kernel/KMathA.CPP.Z,347"$
-$LK,"REGT_R8",A="FL:::/Kernel/KernelA.HPP,734"$
+$LK,"REGT_R8",A="FL:::/Kernel/KernelA.HPP,735"$
 $LK,"log10_2",A="FL:::/Kernel/KernelA.HPP,53"$
 $LK,"PrintErr",A="FL:::/Kernel/StrPrint.CPP.Z,923",BI=400$
-$LK,"ROPF_TWO_SIDED",A="FL:::/Kernel/KernelA.HPP,2921"$
-$LK,"BDF_READ_CACHE",A="FL:::/Kernel/KernelA.HPP,2617"$
-$LK,"SCF_INS",A="FL:::/Kernel/KernelA.HPP,3526"$
-$LK,"CPUf_RAN_A_TASK",A="FL:::/Kernel/KernelA.HPP,3415"$
-$LK,"BDf_READ_CACHE",A="FL:::/Kernel/KernelA.HPP,2627"$
+$LK,"ROPF_TWO_SIDED",A="FL:::/Kernel/KernelA.HPP,2940"$
+$LK,"BDF_READ_CACHE",A="FL:::/Kernel/KernelA.HPP,2636"$
+$LK,"SCF_INS",A="FL:::/Kernel/KernelA.HPP,3545"$
+$LK,"CPUf_RAN_A_TASK",A="FL:::/Kernel/KernelA.HPP,3434"$
+$LK,"BDf_READ_CACHE",A="FL:::/Kernel/KernelA.HPP,2646"$
 $LK,"Snd",A="FL:::/Kernel/KMisc.CPP.Z,163",BI=401$
 $LK,"SPF_PAD_ZERO",A="FL:::/Kernel/StrPrint.CPP.Z,1"$
 $LK,"GetChar",A="FL:::/Kernel/SerialDev/Message.CPP.Z,182",BI=402$
 $LK,"Sin",A="FL:::/Kernel/KernelB.HPP,104"$
-$LK,"TK_OR_OR",A="FL:::/Kernel/KernelA.HPP,2065"$
+$LK,"TK_OR_OR",A="FL:::/Kernel/KernelA.HPP,2085"$
 $LK,"SYS_PCIBIOS_SERVICE_CALL",A="FL:::/Kernel/PCIBIOS.CPP.Z,46"$
 $LK,"Now",A="FL:::/Kernel/KDate.CPP.Z,191",BI=403$
 $LK,"Fldcw",A="FL:::/Kernel/KernelB.HPP,129"$
 $LK,"_FXSAVE",A="FL:::/Kernel/KMathA.CPP.Z,650"$
-$LK,"TTS_ED_FILENAME",A="FL:::/Kernel/KernelA.HPP,3249"$
-$LK,"WIf_FOCUS_TASK_BORDER",A="FL:::/Kernel/KernelA.HPP,1445"$
-$LK,"IA32_EFER",A="FL:::/Kernel/KernelA.HPP,517"$
+$LK,"TTS_ED_FILENAME",A="FL:::/Kernel/KernelA.HPP,3268"$
+$LK,"WIf_FOCUS_TASK_BORDER",A="FL:::/Kernel/KernelA.HPP,1451"$
+$LK,"IA32_EFER",A="FL:::/Kernel/KernelA.HPP,518"$
 $LK,"SetRSP",A="FL:::/Kernel/KernelB.HPP,256"$
 $LK,"Pop",A="FL:::/Kernel/KernelB.HPP,251"$
 $LK,"sys_progresses",A="FL:::/Kernel/KernelB.HPP,229"$
-$LK,"CMenuEntry",A="FL:::/Kernel/KernelA.HPP,3110"$
-$LK,"OC_NOP2",A="FL:::/Kernel/KernelA.HPP,1743"$
-$LK,"DOCT_RIGHT_MARGIN",A="FL:::/Kernel/KernelA.HPP,904"$
+$LK,"CMenuEntry",A="FL:::/Kernel/KernelA.HPP,3129"$
+$LK,"OC_NOP2",A="FL:::/Kernel/KernelA.HPP,1761"$
+$LK,"DOCT_RIGHT_MARGIN",A="FL:::/Kernel/KernelA.HPP,906"$
 $LK,"PUT_HEX_U64",A="FL:::/Kernel/StrA.CPP.Z,23"$
 $LK,"SYS_KERNEL",A="FL:::/Kernel/KStart.CPP.Z,18"$
 $LK,"RFLAGf_PARITY",A="FL:::/Kernel/KernelA.HPP,306"$
 $LK,"SYS_PROGRESS4_MAX",A="FL:::/Kernel/KStart.CPP.Z,218"$
-$LK,"SUF_TO_UPPER",A="FL:::/Kernel/KernelA.HPP,3770"$
-$LK,"MBR_PT_REDSEA",A="FL:::/Kernel/KernelA.HPP,2679"$
-$LK,"MBR_PT_NTFS",A="FL:::/Kernel/KernelA.HPP,2678"$
+$LK,"SUF_TO_UPPER",A="FL:::/Kernel/KernelA.HPP,3789"$
+$LK,"MBR_PT_REDSEA",A="FL:::/Kernel/KernelA.HPP,2698"$
+$LK,"MBR_PT_NTFS",A="FL:::/Kernel/KernelA.HPP,2697"$
 $LK,"MouseHandler",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,163",BI=404$
-$LK,"SCF_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3523"$
-$LK,"SCf_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3508"$
-$LK,"MSG_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3201"$
-$LK,"LAPIC_TASK_PRIORITY",A="FL:::/Kernel/KernelA.HPP,477"$
-$LK,"REGT_MM",A="FL:::/Kernel/KernelA.HPP,740"$
-$LK,"DOCEf_POPUP",A="FL:::/Kernel/KernelA.HPP,1097"$
-$LK,"DOCEF_POPUP",A="FL:::/Kernel/KernelA.HPP,1013"$
-$LK,"SYS_SEMA_VGA",A="FL:::/Kernel/KernelA.HPP,603"$
+$LK,"SCF_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3542"$
+$LK,"SCf_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3527"$
+$LK,"MSG_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3220"$
+$LK,"LAPIC_TASK_PRIORITY",A="FL:::/Kernel/KernelA.HPP,478"$
+$LK,"REGT_MM",A="FL:::/Kernel/KernelA.HPP,741"$
+$LK,"DOCEf_POPUP",A="FL:::/Kernel/KernelA.HPP,1101"$
+$LK,"DOCEF_POPUP",A="FL:::/Kernel/KernelA.HPP,1015"$
+$LK,"SYS_SEMA_VGA",A="FL:::/Kernel/KernelA.HPP,604"$
 $LK,"ODEF_PAUSED",A="FL:::/Kernel/KernelA.HPP,239"$
 $LK,"FATNameXSum",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,157",BI=405$
 $LK,"SPF_DOLLAR",A="FL:::/Kernel/StrPrint.CPP.Z,5"$
 $LK,"Pow",A="FL:::/Kernel/KernelB.HPP,138"$
 $LK,"sys_boot_patch_table_base",A="FL:::/Kernel/KernelB.HPP,38"$
-$LK,"WIF_SELF_BORDER",A="FL:::/Kernel/KernelA.HPP,1407"$
-$LK,"DOCF_UNDO_DIRTY",A="FL:::/Kernel/KernelA.HPP,1282"$
+$LK,"WIF_SELF_BORDER",A="FL:::/Kernel/KernelA.HPP,1413"$
+$LK,"DOCF_UNDO_DIRTY",A="FL:::/Kernel/KernelA.HPP,1288"$
 $LK,"MStrUtil",A="FL:::/Kernel/StrB.CPP.Z,58",BI=406$
 $LK,"_D3_CROSS",A="FL:::/Kernel/KMathA.CPP.Z,82"$
-$LK,"VGAP_INPUT_STAT",A="FL:::/Kernel/KernelA.HPP,3714"$
-$LK,"DOCf_UNDO_DIRTY",A="FL:::/Kernel/KernelA.HPP,1319"$
+$LK,"VGAP_INPUT_STAT",A="FL:::/Kernel/KernelA.HPP,3733"$
+$LK,"DOCf_UNDO_DIRTY",A="FL:::/Kernel/KernelA.HPP,1325"$
 $LK,"SYS_HEAP_LIMIT",A="FL:::/Kernel/KStart.CPP.Z,185"$
-$LK,"WIf_SELF_BORDER",A="FL:::/Kernel/KernelA.HPP,1433"$
+$LK,"WIf_SELF_BORDER",A="FL:::/Kernel/KernelA.HPP,1439"$
 $LK,"text",A="FL:::/Kernel/KGlbls.CPP.Z,29"$
-$LK,"ATA_READ_NATIVE_MAX_EXT",A="FL:::/Kernel/KernelA.HPP,2238"$
+$LK,"ATA_READ_NATIVE_MAX_EXT",A="FL:::/Kernel/KernelA.HPP,2257"$
 $LK,"MPrintQ",A="FL:::/Kernel/StrPrint.CPP.Z,69",BI=407$
 $LK,"MHeapCtrl",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,386"$
-$LK,"RECALCt_FIND_CURSOR",A="FL:::/Kernel/KernelA.HPP,1336"$
-$LK,"SYS_SEMA_SND",A="FL:::/Kernel/KernelA.HPP,594"$
-$LK,"CCF_RAX",A="FL:::/Kernel/KernelA.HPP,2131"$
+$LK,"RECALCt_FIND_CURSOR",A="FL:::/Kernel/KernelA.HPP,1342"$
+$LK,"SYS_SEMA_SND",A="FL:::/Kernel/KernelA.HPP,595"$
+$LK,"CCF_RAX",A="FL:::/Kernel/KernelA.HPP,2151"$
 $LK,"DskCacheInvalidate",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,181",BI=408$
-$LK,"DOCG_BL_IV_UL",A="FL:::/Kernel/KernelA.HPP,945"$
+$LK,"DOCG_BL_IV_UL",A="FL:::/Kernel/KernelA.HPP,947"$
 $LK,"HashSingleTableFind",A="FL:::/Kernel/KHashA.CPP.Z,257"$
 $LK,"sys_data_bp",A="FL:::/Kernel/KernelB.HPP,196"$
 $LK,"SYS_PCI_BUSES",A="FL:::/Kernel/KStart.CPP.Z,51"$
 $LK,"sys_heap_base",A="FL:::/Kernel/KernelB.HPP,199"$
 $LK,"_CLAMP_I64",A="FL:::/Kernel/KUtils.CPP.Z,121"$
-$LK,"VGAP_MISC_OUTPUT",A="FL:::/Kernel/KernelA.HPP,3705"$
-$LK,"BDf_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HPP,2625"$
+$LK,"VGAP_MISC_OUTPUT",A="FL:::/Kernel/KernelA.HPP,3724"$
+$LK,"BDf_READ_ONLY_OVERRIDE",A="FL:::/Kernel/KernelA.HPP,2644"$
 $LK,"Spaces2Tabs",A="FL:::/Kernel/StrA.CPP.Z,477",BI=409$
 $LK,"Drv2Let",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,129",BI=410$
-$LK,"ROPBF_TWO_SIDED",A="FL:::/Kernel/KernelA.HPP,2909"$
+$LK,"ROPBF_TWO_SIDED",A="FL:::/Kernel/KernelA.HPP,2928"$
 $LK,"MEM_E820_ENTRY_SIZE",A="FL:::/Kernel/KernelA.HPP,355"$
 $LK,"KDRawPutS",A="FL:::/Kernel/KeyDev.CPP.Z,95",BI=411$
 $LK,"Sqr",A="FL:::/Kernel/KernelB.HPP,105"$
-$LK,"REG_RDI",A="FL:::/Kernel/KernelA.HPP,1762"$
-$LK,"REG_ALLOC",A="FL:::/Kernel/KernelA.HPP,1766"$
-$LK,"DOCf_SUPERSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1317"$
+$LK,"REG_RDI",A="FL:::/Kernel/KernelA.HPP,1780"$
+$LK,"REG_ALLOC",A="FL:::/Kernel/KernelA.HPP,1785"$
+$LK,"DOCf_SUPERSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1323"$
 $LK,"SrvCmdsHandler",A="FL:::/Kernel/SrvCmd.CPP.Z,350",BI=412$
 $LK,"progress1_max",A="FL:::/Kernel/KernelB.HPP,215"$
-$LK,"CCF_ARRAY",A="FL:::/Kernel/KernelA.HPP,2130"$
-$LK,"REG_RBP",A="FL:::/Kernel/KernelA.HPP,1760"$
-$LK,"DOCEF_FILTER_SKIP",A="FL:::/Kernel/KernelA.HPP,1015"$
+$LK,"CCF_ARRAY",A="FL:::/Kernel/KernelA.HPP,2150"$
+$LK,"REG_RBP",A="FL:::/Kernel/KernelA.HPP,1778"$
+$LK,"DOCEF_FILTER_SKIP",A="FL:::/Kernel/KernelA.HPP,1017"$
 $LK,"FifoU8Flush",A="FL:::/Kernel/KDataTypes.CPP.Z,219",BI=413$
-$LK,"MSG_MOVE",A="FL:::/Kernel/KernelA.HPP,3211"$
+$LK,"MSG_MOVE",A="FL:::/Kernel/KernelA.HPP,3230"$
 $LK,"SYS_PROGRESSES",A="FL:::/Kernel/KStart.CPP.Z,208"$
-$LK,"SUF_REM_SPACES",A="FL:::/Kernel/KernelA.HPP,3768"$
-$LK,"CCF_PMT",A="FL:::/Kernel/KernelA.HPP,2103"$
-$LK,"DOCEf_FILTER_SKIP",A="FL:::/Kernel/KernelA.HPP,1099"$
+$LK,"SUF_REM_SPACES",A="FL:::/Kernel/KernelA.HPP,3787"$
+$LK,"CCF_PMT",A="FL:::/Kernel/KernelA.HPP,2123"$
+$LK,"DOCEf_FILTER_SKIP",A="FL:::/Kernel/KernelA.HPP,1103"$
 $LK,"DskCacheHash",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,40",BI=414$
-$LK,"SCF_NUM",A="FL:::/Kernel/KernelA.HPP,3520"$
-$LK,"ACD_DEF_FILENAME",A="FL:::/Kernel/KernelA.HPP,1490"$
+$LK,"SCF_NUM",A="FL:::/Kernel/KernelA.HPP,3539"$
+$LK,"ACD_DEF_FILENAME",A="FL:::/Kernel/KernelA.HPP,1496"$
 $LK,"fp_doc_put",A="FL:::/Kernel/KGlbls.CPP.Z,33"$
 $LK,"DskCacheFind",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,64",BI=415$
 $LK,"IsRaw",A="FL:::/Kernel/KMisc.CPP.Z,250",BI=416$
-$LK,"TK_DBL_COLON",A="FL:::/Kernel/KernelA.HPP,2057"$
+$LK,"TK_DBL_COLON",A="FL:::/Kernel/KernelA.HPP,2077"$
 $LK,"ATAPIReadTrackInfo",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,277",BI=417$
-$LK,"CATARep",A="FL:::/Kernel/KernelA.HPP,2227"$
-$LK,"REG_RAX",A="FL:::/Kernel/KernelA.HPP,1755"$
+$LK,"CATARep",A="FL:::/Kernel/KernelA.HPP,2246"$
+$LK,"REG_RAX",A="FL:::/Kernel/KernelA.HPP,1773"$
 $LK,"ATAReadBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,350",BI=418$
 $LK,"D3AddEqu",A="FL:::/Kernel/KernelB.HPP,149"$
 $LK,"ToUpper",A="FL:::/Kernel/KernelB.HPP,57"$
-$LK,"REGG_C_LOCAL_NON_PTR_VARS",A="FL:::/Kernel/KernelA.HPP,1773"$
-$LK,"REG_RBX",A="FL:::/Kernel/KernelA.HPP,1758"$
+$LK,"REG_RBX",A="FL:::/Kernel/KernelA.HPP,1776"$
 $LK,"SCR_DONE",A="FL:::/Kernel/SrvCmd.CPP.Z,263"$
 $LK,"Fxsave",A="FL:::/Kernel/KernelB.HPP,134"$
-$LK,"ACD_EXTRA_CHAR",A="FL:::/Kernel/KernelA.HPP,1510"$
+$LK,"MDG_MASK",A="FL:::/Kernel/KernelA.HPP,1582"$
+$LK,"ACD_EXTRA_CHAR",A="FL:::/Kernel/KernelA.HPP,1516"$
 $LK,"Reboot",A="FL:::/Kernel/KEnd.CPP.Z,116",BI=419$
 $LK,"acd",A="FL:::/Kernel/KGlbls.CPP.Z,17"$
-$LK,"TK_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,2085"$
-$LK,"REG_RCX",A="FL:::/Kernel/KernelA.HPP,1756"$
-$LK,"Ff_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,848"$
-$LK,"CHashClass",A="FL:::/Kernel/KernelA.HPP,828"$
+$LK,"TK_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,2105"$
+$LK,"REG_RCX",A="FL:::/Kernel/KernelA.HPP,1774"$
+$LK,"Ff_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,849"$
+$LK,"CHashClass",A="FL:::/Kernel/KernelA.HPP,829"$
 $LK,"ZERO_BUF_SIZE",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,1"$
 $LK,"LoadKernel",A="FL:::/Kernel/KLoad.CPP.Z,240",BI=420$
-$LK,"SCF_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3515"$
-$LK,"SCf_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3500"$
-$LK,"MSG_IP_R_D_DOWN",A="FL:::/Kernel/KernelA.HPP,3207"$
-$LK,"REG_RDX",A="FL:::/Kernel/KernelA.HPP,1757"$
+$LK,"SCF_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3534"$
+$LK,"SCf_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3519"$
+$LK,"MSG_IP_R_D_DOWN",A="FL:::/Kernel/KernelA.HPP,3226"$
+$LK,"ICF_BY_VAL",A="FL:::/Kernel/KernelA.HPP,1598"$
+$LK,"REG_RDX",A="FL:::/Kernel/KernelA.HPP,1775"$
 $LK,"ATAPIReadBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,413",BI=421$
-$LK,"REG_RIP",A="FL:::/Kernel/KernelA.HPP,1763"$
-$LK,"DOCEF_FROM_START",A="FL:::/Kernel/KernelA.HPP,995"$
-$LK,"SEMA_STRUCT_SIZE",A="FL:::/Kernel/KernelA.HPP,580"$
+$LK,"REG_RIP",A="FL:::/Kernel/KernelA.HPP,1782"$
+$LK,"DOCEF_FROM_START",A="FL:::/Kernel/KernelA.HPP,997"$
+$LK,"SEMA_STRUCT_SIZE",A="FL:::/Kernel/KernelA.HPP,581"$
 $LK,"SCR_CONT",A="FL:::/Kernel/SrvCmd.CPP.Z,264"$
 $LK,"progress2_max",A="FL:::/Kernel/KernelB.HPP,219"$
-$LK,"DOCEf_FROM_START",A="FL:::/Kernel/KernelA.HPP,1081"$
-$LK,"SYS_SEMA_TMBEAT",A="FL:::/Kernel/KernelA.HPP,609"$
-$LK,"RLF_WINMGR",A="FL:::/Kernel/KernelA.HPP,466"$
-$LK,"RLf_WINMGR",A="FL:::/Kernel/KernelA.HPP,447"$
-$LK,"SUF_SCALE_INDENT",A="FL:::/Kernel/KernelA.HPP,3774"$
-$LK,"CT_7_BIT",A="FL:::/Kernel/KernelA.HPP,3723"$
-$LK,"PUSH_REGS",A="FL:::/Kernel/KernelA.HPP,1748"$
+$LK,"DOCEf_FROM_START",A="FL:::/Kernel/KernelA.HPP,1085"$
+$LK,"SYS_SEMA_TMBEAT",A="FL:::/Kernel/KernelA.HPP,610"$
+$LK,"RLF_WINMGR",A="FL:::/Kernel/KernelA.HPP,467"$
+$LK,"RLf_WINMGR",A="FL:::/Kernel/KernelA.HPP,448"$
+$LK,"SUF_SCALE_INDENT",A="FL:::/Kernel/KernelA.HPP,3793"$
+$LK,"CT_7_BIT",A="FL:::/Kernel/KernelA.HPP,3742"$
+$LK,"PUSH_REGS",A="FL:::/Kernel/KernelA.HPP,1766"$
 $LK,"MAX_I8",A="FL:::/Kernel/KernelA.HPP,23"$
 $LK,"KbdMouseHandler",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,241",BI=422$
 $LK,"Color2Str",A="FL:::/Kernel/KDefine.CPP.Z,126",BI=423$
-$LK,"EDF_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1237"$
-$LK,"LAPIC_DFR",A="FL:::/Kernel/KernelA.HPP,482"$
+$LK,"EDF_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1243"$
+$LK,"LAPIC_DFR",A="FL:::/Kernel/KernelA.HPP,483"$
 $LK,"CDATE_BASE_DAY_OF_WEEK",A="FL:::/Kernel/KernelA.HPP,183"$
 $LK,"StrFirstOcc",A="FL:::/Kernel/StrA.CPP.Z,572",BI=424$
-$LK,"MSG_NULL",A="FL:::/Kernel/KernelA.HPP,3196"$
-$LK,"CCF_QUESTION_HELP",A="FL:::/Kernel/KernelA.HPP,2105"$
-$LK,"TY_NULL",A="FL:::/Kernel/KernelA.HPP,1561"$
-$LK,"EDf_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1243"$
+$LK,"MSG_NULL",A="FL:::/Kernel/KernelA.HPP,3215"$
+$LK,"CCF_QUESTION_HELP",A="FL:::/Kernel/KernelA.HPP,2125"$
+$LK,"EDf_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1249"$
 $LK,"MPrintq",A="FL:::/Kernel/StrPrint.CPP.Z,128",BI=425$
-$LK,"MEM_DFT_STK",A="FL:::/Kernel/KernelA.HPP,2859"$
+$LK,"MEM_DFT_STK",A="FL:::/Kernel/KernelA.HPP,2878"$
 $LK,"SYS_FOCUS_TASK",A="FL:::/Kernel/KStart.CPP.Z,222"$
-$LK,"DYING_JIFFIES",A="FL:::/Kernel/KernelA.HPP,3285"$
+$LK,"DYING_JIFFIES",A="FL:::/Kernel/KernelA.HPP,3304"$
 $LK,"dbg",A="FL:::/Kernel/KGlbls.CPP.Z,21"$
 $LK,"QSort",A="FL:::/Kernel/QSort.CPP.Z,85",BI=426$
 $LK,"OutU32",A="FL:::/Kernel/KernelB.HPP,78"$
 $LK,"OutU16",A="FL:::/Kernel/KernelB.HPP,77"$
-$LK,"SYS_SEMA_JUST_PUMP_MSGS",A="FL:::/Kernel/KernelA.HPP,608"$
-$LK,"LAPIC_ICR_HIGH",A="FL:::/Kernel/KernelA.HPP,492"$
-$LK,"LMF_IGNORE_CASE",A="FL:::/Kernel/KernelA.HPP,3784"$
-$LK,"SFF_IGNORE_CASE",A="FL:::/Kernel/KernelA.HPP,3778"$
+$LK,"SYS_SEMA_JUST_PUMP_MSGS",A="FL:::/Kernel/KernelA.HPP,609"$
+$LK,"LAPIC_ICR_HIGH",A="FL:::/Kernel/KernelA.HPP,493"$
+$LK,"LMF_IGNORE_CASE",A="FL:::/Kernel/KernelA.HPP,3803"$
+$LK,"SFF_IGNORE_CASE",A="FL:::/Kernel/KernelA.HPP,3797"$
 $LK,"HashRemDel",A="FL:::/Kernel/KHashA.CPP.Z,264"$
-$LK,"REG_RSI",A="FL:::/Kernel/KernelA.HPP,1761"$
+$LK,"REG_RSI",A="FL:::/Kernel/KernelA.HPP,1779"$
 $LK,"HashAdd",A="FL:::/Kernel/KHashA.CPP.Z,262"$
 $LK,"mp_cnt_lock",A="FL:::/Kernel/KernelB.HPP,236"$
-$LK,"MLF_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,773"$
+$LK,"MLF_DOT_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,774"$
 $LK,"IsSuspended",A="FL:::/Kernel/KTask.CPP.Z,59",BI=427$
 $LK,"CAlloc",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,395",BI=428$
-$LK,"BDF_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2613"$
-$LK,"ATAR0_SELECT",A="FL:::/Kernel/KernelA.HPP,2259"$
-$LK,"CAsmUnresolvedRef",A="FL:::/Kernel/KernelA.HPP,1833"$
-$LK,"BDf_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2623"$
-$LK,"DOCT_SPRITE",A="FL:::/Kernel/KernelA.HPP,930"$
+$LK,"BDF_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2632"$
+$LK,"ATAR0_SELECT",A="FL:::/Kernel/KernelA.HPP,2278"$
+$LK,"CAsmUnresolvedRef",A="FL:::/Kernel/KernelA.HPP,1852"$
+$LK,"BDf_INITIALIZED",A="FL:::/Kernel/KernelA.HPP,2642"$
+$LK,"DOCT_SPRITE",A="FL:::/Kernel/KernelA.HPP,932"$
 $LK,"WClustersBlks",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,92",BI=429$
 $LK,"RClustersBlks",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,46",BI=430$
 $LK,"sys_neg_pows_lets",A="FL:::/Kernel/StrPrint.CPP.Z,212"$
 $LK,"progress3_max",A="FL:::/Kernel/KernelB.HPP,223"$
 $LK,"SqrI64",A="FL:::/Kernel/KernelB.HPP,106"$
-$LK,"BDF_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,2619"$
-$LK,"OPTF_ECHO",A="FL:::/Kernel/KernelA.HPP,1539"$
-$LK,"OPTf_ECHO",A="FL:::/Kernel/KernelA.HPP,1526"$
-$LK,"LAPIC_EOI",A="FL:::/Kernel/KernelA.HPP,480"$
+$LK,"BDF_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,2638"$
+$LK,"OPTF_ECHO",A="FL:::/Kernel/KernelA.HPP,1545"$
+$LK,"OPTf_ECHO",A="FL:::/Kernel/KernelA.HPP,1532"$
+$LK,"LAPIC_EOI",A="FL:::/Kernel/KernelA.HPP,481"$
 $LK,"sys_pos_pows_lets",A="FL:::/Kernel/StrPrint.CPP.Z,211"$
 $LK,"QueSize",A="FL:::/Kernel/KDataTypes.CPP.Z,76",BI=431$
 $LK,"C:/Doc/Que.TXT.Z",A="FL:::/Kernel/KernelB.HPP,64"$
-$LK,"CT_8_BIT",A="FL:::/Kernel/KernelA.HPP,3724"$
-$LK,"REG_RSP",A="FL:::/Kernel/KernelA.HPP,1759"$
+$LK,"CT_8_BIT",A="FL:::/Kernel/KernelA.HPP,3743"$
+$LK,"REG_RSP",A="FL:::/Kernel/KernelA.HPP,1777"$
 $LK,"CtrlAltDel",A="FL:::/Kernel/KeyDev.CPP.Z,126",BI=432$
-$LK,"CTRLF_CAPTURE_LEFT_IP",A="FL:::/Kernel/KernelA.HPP,3065"$
-$LK,"LFSF_DEFINE",A="FL:::/Kernel/KernelA.HPP,2012"$
-$LK,"BLK_SIZE_BITS",A="FL:::/Kernel/KernelA.HPP,2272"$
-$LK,"AOT_BIN_BLK_BITS",A="FL:::/Kernel/KernelA.HPP,1775"$
-$LK,"HTT_FUN",A="FL:::/Kernel/KernelA.HPP,684"$
+$LK,"CTRLF_CAPTURE_LEFT_IP",A="FL:::/Kernel/KernelA.HPP,3084"$
+$LK,"LFSF_DEFINE",A="FL:::/Kernel/KernelA.HPP,2032"$
+$LK,"BLK_SIZE_BITS",A="FL:::/Kernel/KernelA.HPP,2291"$
+$LK,"AOT_BIN_BLK_BITS",A="FL:::/Kernel/KernelA.HPP,1794"$
+$LK,"HTT_FUN",A="FL:::/Kernel/KernelA.HPP,685"$
 $LK,"I_DIV_ZERO",A="FL:::/Kernel/KernelA.HPP,284"$
 $LK,"SrvCtrlInit",A="FL:::/Kernel/SrvCmd.CPP.Z,18",BI=433$
-$LK,"DOCEF_DEFINE",A="FL:::/Kernel/KernelA.HPP,962"$
+$LK,"DOCEF_DEFINE",A="FL:::/Kernel/KernelA.HPP,964"$
 $LK,"SPF_LEFT_JUSTIFY",A="FL:::/Kernel/StrPrint.CPP.Z,2"$
-$LK,"DOCEf_DEFINE",A="FL:::/Kernel/KernelA.HPP,1048"$
+$LK,"DOCEf_DEFINE",A="FL:::/Kernel/KernelA.HPP,1052"$
 $LK,"HeapCtrlInit",A="FL:::/Kernel/Mem/HeapCtrl.CPP.Z,1",BI=434$
 $LK,"progress1",A="FL:::/Kernel/KernelB.HPP,212"$
 $LK,"Floor",A="FL:::/Kernel/KernelB.HPP,130"$
-$LK,"CIPStateGlbls",A="FL:::/Kernel/KernelA.HPP,3016"$
-$LK,"SYSf_CTRL_ALT_C",A="FL:::/Kernel/KernelA.HPP,614"$
+$LK,"CIPStateGlbls",A="FL:::/Kernel/KernelA.HPP,3035"$
+$LK,"SYSf_CTRL_ALT_C",A="FL:::/Kernel/KernelA.HPP,615"$
 $LK,"progress2",A="FL:::/Kernel/KernelB.HPP,216"$
 $LK,"_CLAMP_U64",A="FL:::/Kernel/KUtils.CPP.Z,133"$
 $LK,"progress3",A="FL:::/Kernel/KernelB.HPP,220"$
-$LK,"MPN_VECT",A="FL:::/Kernel/KernelA.HPP,501"$
+$LK,"MPN_VECT",A="FL:::/Kernel/KernelA.HPP,502"$
 $LK,"MAX_U8",A="FL:::/Kernel/KernelA.HPP,25"$
 $LK,"RAWDR_COL",A="FL:::/Kernel/KDbg.CPP.Z,289"$
 $LK,"progress4",A="FL:::/Kernel/KernelB.HPP,224"$
 $LK,"CtrlAltCBSet",A="FL:::/Kernel/KeyDev.CPP.Z,176",BI=435$
 $LK,"SysTimerRead",A="FL:::/Kernel/KMisc.CPP.Z,61",BI=436$
 $LK,"dev",A="FL:::/Kernel/KGlbls.CPP.Z,22"$
-$LK,"MSG_IP_L_D_UP",A="FL:::/Kernel/KernelA.HPP,3204"$
+$LK,"MSG_IP_L_D_UP",A="FL:::/Kernel/KernelA.HPP,3223"$
 $LK,"FunSegCacheFind",A="FL:::/Kernel/FunSeg.CPP.Z,82",BI=437$
-$LK,"HTT_REG",A="FL:::/Kernel/KernelA.HPP,690"$
+$LK,"HTT_REG",A="FL:::/Kernel/KernelA.HPP,691"$
 $LK,"StrFirstRem",A="FL:::/Kernel/StrA.CPP.Z,582",BI=438$
 $LK,"SYS_VAR_INIT_VAL",A="FL:::/Home/Temp.TXT.Z,1"$
-$LK,"DCF_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,3599"$
-$LK,"ans",A="FL:::/Kernel/KernelA.HPP,3393"$
-$LK,"LAPIC_LDR",A="FL:::/Kernel/KernelA.HPP,483"$
+$LK,"DCF_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,3618"$
+$LK,"ans",A="FL:::/Kernel/KernelA.HPP,3412"$
+$LK,"LAPIC_LDR",A="FL:::/Kernel/KernelA.HPP,484"$
 $LK,"BptFind",A="FL:::/Kernel/KDbg.CPP.Z,344",BI=439$
 $LK,"kbd",A="FL:::/Kernel/KGlbls.CPP.Z,25"$
 $LK,"progress4_max",A="FL:::/Kernel/KernelB.HPP,227"$
 $LK,"MouseUpdatePost",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,131",BI=440$
 $LK,"HashDel",A="FL:::/Kernel/KHashB.CPP.Z,59",BI=441$
-$LK,"CKbdStateGlbls",A="FL:::/Kernel/KernelA.HPP,2973"$
+$LK,"CKbdStateGlbls",A="FL:::/Kernel/KernelA.HPP,2992"$
 $LK,"LinkedLstCopy",A="FL:::/Kernel/KDataTypes.CPP.Z,11",BI=442$
-$LK,"IP_NULL",A="FL:::/Kernel/KernelA.HPP,3014"$
-$LK,"SYS_SEMA_DEV_MEM",A="FL:::/Kernel/KernelA.HPP,602"$
-$LK,"ICF_A1_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1589"$
+$LK,"IP_NULL",A="FL:::/Kernel/KernelA.HPP,3033"$
+$LK,"MDF_NULL",A="FL:::/Kernel/KernelA.HPP,1575"$
+$LK,"SYS_SEMA_DEV_MEM",A="FL:::/Kernel/KernelA.HPP,603"$
+$LK,"ICF_A1_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1603"$
 $LK,"Let2Drv",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,149",BI=443$
 $LK,"fat_long_name_map",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,183"$
 $LK,"DskCacheInit",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,1",BI=444$
-$LK,"CCF_NO_ABSS",A="FL:::/Kernel/KernelA.HPP,2137"$
-$LK,"DOC_COLOR_MACRO",A="FL:::/Kernel/KernelA.HPP,1127"$
-$LK,"LAPIC_LOG_DST",A="FL:::/Kernel/KernelA.HPP,481"$
-$LK,"RLF_ADAM_SERVER",A="FL:::/Kernel/KernelA.HPP,470"$
+$LK,"CCF_NO_ABSS",A="FL:::/Kernel/KernelA.HPP,2157"$
+$LK,"DOC_COLOR_MACRO",A="FL:::/Kernel/KernelA.HPP,1133"$
+$LK,"LAPIC_LOG_DST",A="FL:::/Kernel/KernelA.HPP,482"$
+$LK,"RLF_ADAM_SERVER",A="FL:::/Kernel/KernelA.HPP,471"$
 $LK,"RClusters",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,87",BI=445$
 $LK,"ISO1CDirFill",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,116",BI=446$
-$LK,"RLf_ADAM_SERVER",A="FL:::/Kernel/KernelA.HPP,451"$
+$LK,"RLf_ADAM_SERVER",A="FL:::/Kernel/KernelA.HPP,452"$
 $LK,"SCR_EXIT",A="FL:::/Kernel/SrvCmd.CPP.Z,265"$
 $LK,"QueDel",A="FL:::/Kernel/KDataTypes.CPP.Z,41",BI=447$
-$LK,"ICF_DONT_RESTORE",A="FL:::/Kernel/KernelA.HPP,1603"$
+$LK,"ICF_DONT_RESTORE",A="FL:::/Kernel/KernelA.HPP,1617"$
 $LK,"RedSeaDirNew",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,350",BI=448$
-$LK,"IET_REL64_EXPORT",A="FL:::/Kernel/KernelA.HPP,405"$
-$LK,"IET_REL32_EXPORT",A="FL:::/Kernel/KernelA.HPP,403"$
-$LK,"CExcept",A="FL:::/Kernel/KernelA.HPP,3136"$
+$LK,"IET_REL64_EXPORT",A="FL:::/Kernel/KernelA.HPP,406"$
+$LK,"IET_REL32_EXPORT",A="FL:::/Kernel/KernelA.HPP,404"$
+$LK,"CExcept",A="FL:::/Kernel/KernelA.HPP,3155"$
 $LK,"QueInsRev",A="FL:::/Kernel/KernelB.HPP,69"$
-$LK,"SYSf_CTRL_ALT_X",A="FL:::/Kernel/KernelA.HPP,615"$
+$LK,"SYSf_CTRL_ALT_X",A="FL:::/Kernel/KernelA.HPP,616"$
 $LK,"SYS_EXTERN_TABLE",A="FL:::/Kernel/KStart.CPP.Z,202"$
-$LK,"FUF_CLUSTER_ORDER",A="FL:::/Kernel/KernelA.HPP,2591"$
-$LK,"DOCT_HTML_CODE",A="FL:::/Kernel/KernelA.HPP,935"$
-$LK,"LAPIC_IRR",A="FL:::/Kernel/KernelA.HPP,490"$
+$LK,"FUF_CLUSTER_ORDER",A="FL:::/Kernel/KernelA.HPP,2610"$
+$LK,"DOCT_HTML_CODE",A="FL:::/Kernel/KernelA.HPP,937"$
+$LK,"LAPIC_IRR",A="FL:::/Kernel/KernelA.HPP,491"$
 $LK,"chars_bmp_getkey",A="FL:::/Kernel/StrA.CPP.Z,371"$
 $LK,"sys_run_level",A="FL:::/Kernel/KernelB.HPP,40"$
-$LK,"JIFFY_FREQ",A="FL:::/Kernel/KernelA.HPP,546"$
+$LK,"JIFFY_FREQ",A="FL:::/Kernel/KernelA.HPP,547"$
 $LK,"COrder2D3",A="FL:::/Kernel/KernelA.HPP,199"$
 $LK,"TaskRegAddr",A="FL:::/Kernel/KDbg.CPP.Z,266",BI=449$
-$LK,"DCSF_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,3621"$
-$LK,"LAPIC_ISR",A="FL:::/Kernel/KernelA.HPP,488"$
+$LK,"DCSF_COMPRESSED",A="FL:::/Kernel/KernelA.HPP,3640"$
+$LK,"LAPIC_ISR",A="FL:::/Kernel/KernelA.HPP,489"$
 $LK,"c32_eflags",A="FL:::/Kernel/PCIBIOS.CPP.Z,158"$
 $LK,"Pow10",A="FL:::/Kernel/KernelB.HPP,139"$
-$LK,"ATA_WRITE_MULTI_EXT",A="FL:::/Kernel/KernelA.HPP,2244"$
-$LK,"CCF_PREDEC",A="FL:::/Kernel/KernelA.HPP,2129"$
+$LK,"ATA_WRITE_MULTI_EXT",A="FL:::/Kernel/KernelA.HPP,2263"$
+$LK,"CCF_PREDEC",A="FL:::/Kernel/KernelA.HPP,2149"$
 $LK,"inf",A="FL:::/Kernel/KernelA.HPP,46"$
 $LK,"MIN_I8",A="FL:::/Kernel/KernelA.HPP,22"$
 $LK,"XTalk",A="FL:::/Kernel/SrvCmd.CPP.Z,446",BI=450$
-$LK,"DOCEf_LEFT_AUTO",A="FL:::/Kernel/KernelA.HPP,1064"$
-$LK,"DOCEF_LEFT_AUTO",A="FL:::/Kernel/KernelA.HPP,978"$
+$LK,"DOCEf_LEFT_AUTO",A="FL:::/Kernel/KernelA.HPP,1068"$
+$LK,"DOCEF_LEFT_AUTO",A="FL:::/Kernel/KernelA.HPP,980"$
 $LK,"eps",A="FL:::/Kernel/KernelA.HPP,56"$
 $LK,"LstSub",A="FL:::/Kernel/StrA.CPP.Z,402",BI=451$
-$LK,"RLF_PATCHED",A="FL:::/Kernel/KernelA.HPP,456"$
+$LK,"RLF_PATCHED",A="FL:::/Kernel/KernelA.HPP,457"$
 $LK,"FRBlks",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,130",BI=452$
 $LK,"TaskDerivedValsUpdate",A="FL:::/Kernel/KTask.CPP.Z,252",BI=453$
 $LK,"_HASH_ADD",A="FL:::/Kernel/KHashA.CPP.Z,170"$
-$LK,"__TIME__",A="FL:::/Kernel/KernelA.HPP,2002"$
-$LK,"RLf_PATCHED",A="FL:::/Kernel/KernelA.HPP,437"$
-$LK,"FUf_CLUSTER_ORDER",A="FL:::/Kernel/KernelA.HPP,2565"$
-$LK,"ACD_WORD_FILENAME",A="FL:::/Kernel/KernelA.HPP,1489"$
-$LK,"ATTRf_BLINK",A="FL:::/Kernel/KernelA.HPP,889"$
-$LK,"ATTRF_BLINK",A="FL:::/Kernel/KernelA.HPP,884"$
+$LK,"__TIME__",A="FL:::/Kernel/KernelA.HPP,2022"$
+$LK,"RLf_PATCHED",A="FL:::/Kernel/KernelA.HPP,438"$
+$LK,"FUf_CLUSTER_ORDER",A="FL:::/Kernel/KernelA.HPP,2584"$
+$LK,"ACD_WORD_FILENAME",A="FL:::/Kernel/KernelA.HPP,1495"$
+$LK,"ATTRf_BLINK",A="FL:::/Kernel/KernelA.HPP,890"$
+$LK,"ATTRF_BLINK",A="FL:::/Kernel/KernelA.HPP,885"$
 $LK,"XchgU8",A="FL:::/Kernel/KernelB.HPP,269"$
-$LK,"TTS_TASK_NAME",A="FL:::/Kernel/KernelA.HPP,3248"$
-$LK,"CKernel",A="FL:::/Kernel/KernelA.HPP,415"$
+$LK,"TTS_TASK_NAME",A="FL:::/Kernel/KernelA.HPP,3267"$
+$LK,"CKernel",A="FL:::/Kernel/KernelA.HPP,416"$
 $LK,"IET_IMM_I64",A="FL:::/Kernel/KernelA.HPP,401"$
 $LK,"log2_10",A="FL:::/Kernel/KernelA.HPP,51"$
 $LK,"TaskTotalTime",A="FL:::/Kernel/KMisc.CPP.Z,80",BI=454$
-$LK,"LTBLUE",A="FL:::/Kernel/KernelA.HPP,2938"$
+$LK,"LTBLUE",A="FL:::/Kernel/KernelA.HPP,2957"$
 $LK,"FAT32AllocClusters",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,456",BI=455$
-$LK,"DOCEf_TOP_Y",A="FL:::/Kernel/KernelA.HPP,1070"$
-$LK,"DOCEF_TOP_Y",A="FL:::/Kernel/KernelA.HPP,984"$
+$LK,"DOCEf_TOP_Y",A="FL:::/Kernel/KernelA.HPP,1074"$
+$LK,"DOCEF_TOP_Y",A="FL:::/Kernel/KernelA.HPP,986"$
 $LK,"_CALLEXTNUM",A="FL:::/Kernel/KUtils.CPP.Z,362"$
-$LK,"SCF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3528"$
-$LK,"SCf_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3513"$
-$LK,"MSG_CMD",A="FL:::/Kernel/KernelA.HPP,3197"$
+$LK,"SCF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3547"$
+$LK,"SCf_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,3532"$
+$LK,"MSG_CMD",A="FL:::/Kernel/KernelA.HPP,3216"$
 $LK,"IDTET_IRQ",A="FL:::/Kernel/KernelA.HPP,279"$
-$LK,"CCF_LOCAL",A="FL:::/Kernel/KernelA.HPP,2123"$
+$LK,"CCF_LOCAL",A="FL:::/Kernel/KernelA.HPP,2143"$
 $LK,"QueCnt",A="FL:::/Kernel/KDataTypes.CPP.Z,65",BI=456$
 $LK,"chars_bmp_alpha",A="FL:::/Kernel/StrA.CPP.Z,325"$
 $LK,"SwapI64",A="FL:::/Kernel/KernelB.HPP,110"$
 $LK,"SqrU64",A="FL:::/Kernel/KernelB.HPP,107"$
-$LK,"OPTf_NO_BUILTIN_CONST",A="FL:::/Kernel/KernelA.HPP,1536"$
-$LK,"HTG_SRC_SYM",A="FL:::/Kernel/KernelA.HPP,708"$
-$LK,"LAPIC_LVT_THERMAL",A="FL:::/Kernel/KernelA.HPP,495"$
+$LK,"OPTf_NO_BUILTIN_CONST",A="FL:::/Kernel/KernelA.HPP,1542"$
+$LK,"HTG_SRC_SYM",A="FL:::/Kernel/KernelA.HPP,709"$
+$LK,"LAPIC_LVT_THERMAL",A="FL:::/Kernel/KernelA.HPP,496"$
 $LK,"RFLAGf_IOPL0",A="FL:::/Kernel/KernelA.HPP,314"$
 $LK,"IntsInit",A="FL:::/Kernel/KInts.CPP.Z,122",BI=457$
 $LK,"_XCHG_U8",A="FL:::/Kernel/KUtils.CPP.Z,208"$
-$LK,"DOCEF_CHECK_COLLAPSABLE",A="FL:::/Kernel/KernelA.HPP,1000"$
+$LK,"DOCEF_CHECK_COLLAPSABLE",A="FL:::/Kernel/KernelA.HPP,1002"$
 $LK,"RFLAGf_IOPL1",A="FL:::/Kernel/KernelA.HPP,315"$
 $LK,"FAT32FilesDel",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,726",BI=458$
-$LK,"DOCT_MENU_VAL",A="FL:::/Kernel/KernelA.HPP,927"$
+$LK,"DOCT_MENU_VAL",A="FL:::/Kernel/KernelA.HPP,929"$
 $LK,"Bcd2Bin",A="FL:::/Kernel/KDate.CPP.Z,123",BI=459$
 $LK,"CAllocAligned",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,434",BI=460$
 $LK,"MAllocAligned",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,423",BI=461$
 $LK,"ext",A="FL:::/Kernel/KernelB.HPP,52"$
-$LK,"FUN_SEG_CACHE_SIZE",A="FL:::/Kernel/KernelA.HPP,3824"$
-$LK,"ACf_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,1474"$
+$LK,"FUN_SEG_CACHE_SIZE",A="FL:::/Kernel/KernelA.HPP,3843"$
+$LK,"ACf_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,1480"$
 $LK,"RawDm",A="FL:::/Kernel/KDbg.CPP.Z,250",BI=462$
-$LK,"ICf_DONT_POP_FLOAT0",A="FL:::/Kernel/KernelA.HPP,1596"$
+$LK,"ICf_DONT_POP_FLOAT0",A="FL:::/Kernel/KernelA.HPP,1610"$
 $LK,"DskCacheAdd",A="FL:::/Kernel/BlkDev/DskCache.CPP.Z,76",BI=463$
 $LK,"MPNMInt",A="FL:::/Kernel/MultiProc.CPP.Z,159",BI=464$
 $LK,"_MSIZE2",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,353"$
-$LK,"LTPURPLE",A="FL:::/Kernel/KernelA.HPP,2942"$
+$LK,"LTPURPLE",A="FL:::/Kernel/KernelA.HPP,2961"$
 $LK,"RawDr",A="FL:::/Kernel/KDbg.CPP.Z,291",BI=465$
 $LK,"StrICmp",A="FL:::/Kernel/StrA.CPP.Z,311"$
-$LK,"ATAR0_DATA",A="FL:::/Kernel/KernelA.HPP,2253"$
+$LK,"ATAR0_DATA",A="FL:::/Kernel/KernelA.HPP,2272"$
 $LK,"MIN_U8",A="FL:::/Kernel/KernelA.HPP,24"$
-$LK,"DVD_FILE_OFFSET",A="FL:::/Kernel/KernelA.HPP,2275"$
-$LK,"OPTf_TRACE",A="FL:::/Kernel/KernelA.HPP,1527"$
-$LK,"HTG_FLAGS_MASK",A="FL:::/Kernel/KernelA.HPP,706"$
+$LK,"DVD_FILE_OFFSET",A="FL:::/Kernel/KernelA.HPP,2294"$
+$LK,"OPTf_TRACE",A="FL:::/Kernel/KernelA.HPP,1533"$
+$LK,"HTG_FLAGS_MASK",A="FL:::/Kernel/KernelA.HPP,707"$
 $LK,"DirFilesSort",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,92",BI=466$
 $LK,"HashLstAdd",A="FL:::/Kernel/KHashB.CPP.Z,185",BI=467$
 $LK,"ACAlloc",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,402",BI=468$
 $LK,"SYS_RUN_LEVEL",A="FL:::/Kernel/KStart.CPP.Z,26"$
-$LK,"SCF_SCROLL",A="FL:::/Kernel/KernelA.HPP,3521"$
-$LK,"SCf_SCROLL",A="FL:::/Kernel/KernelA.HPP,3506"$
-$LK,"CCF_DONT_MAKE_RESULT",A="FL:::/Kernel/KernelA.HPP,2141"$
-$LK,"BDf_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,2629"$
-$LK,"TK_SUB_EQU",A="FL:::/Kernel/KernelA.HPP,2075"$
-$LK,"TK_DIV_EQU",A="FL:::/Kernel/KernelA.HPP,2070"$
-$LK,"OC_BPT",A="FL:::/Kernel/KernelA.HPP,1740"$
-$LK,"DOCF_HIDE_CURSOR",A="FL:::/Kernel/KernelA.HPP,1258"$
-$LK,"IOREDTAB",A="FL:::/Kernel/KernelA.HPP,511"$
+$LK,"SCF_SCROLL",A="FL:::/Kernel/KernelA.HPP,3540"$
+$LK,"SCf_SCROLL",A="FL:::/Kernel/KernelA.HPP,3525"$
+$LK,"CCF_DONT_MAKE_RESULT",A="FL:::/Kernel/KernelA.HPP,2161"$
+$LK,"BDf_INIT_IN_PROGRESS",A="FL:::/Kernel/KernelA.HPP,2648"$
+$LK,"TK_SUB_EQU",A="FL:::/Kernel/KernelA.HPP,2095"$
+$LK,"TK_DIV_EQU",A="FL:::/Kernel/KernelA.HPP,2090"$
+$LK,"OC_BPT",A="FL:::/Kernel/KernelA.HPP,1758"$
+$LK,"DOCF_HIDE_CURSOR",A="FL:::/Kernel/KernelA.HPP,1264"$
+$LK,"IOREDTAB",A="FL:::/Kernel/KernelA.HPP,512"$
 $LK,"Fstcw",A="FL:::/Kernel/KernelB.HPP,131"$
-$LK,"MSG_IP_L_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3214"$
-$LK,"LAPIC_TMR",A="FL:::/Kernel/KernelA.HPP,489"$
+$LK,"MSG_IP_L_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3233"$
+$LK,"LAPIC_TMR",A="FL:::/Kernel/KernelA.HPP,490"$
 $LK,"C32_EFLAGS",A="FL:::/Kernel/PCIBIOS.CPP.Z,64"$
 $LK,"sys_compile_time",A="FL:::/Kernel/KernelB.HPP,207"$
 $LK,"_D3_DIV_EQU",A="FL:::/Kernel/KMathA.CPP.Z,289"$
 $LK,"_D3_SUB_EQU",A="FL:::/Kernel/KMathA.CPP.Z,256"$
-$LK,"TASKf_SUSPENDED",A="FL:::/Kernel/KernelA.HPP,3255"$
-$LK,"FUF_DIFF",A="FL:::/Kernel/KernelA.HPP,2573"$
-$LK,"FUf_DIFF",A="FL:::/Kernel/KernelA.HPP,2547"$
-$LK,"DOCf_HIDE_CURSOR",A="FL:::/Kernel/KernelA.HPP,1294"$
-$LK,"CHashImport",A="FL:::/Kernel/KernelA.HPP,759"$
-$LK,"CMT_LABEL",A="FL:::/Kernel/KernelA.HPP,1666"$
+$LK,"TASKf_SUSPENDED",A="FL:::/Kernel/KernelA.HPP,3274"$
+$LK,"FUF_DIFF",A="FL:::/Kernel/KernelA.HPP,2592"$
+$LK,"FUf_DIFF",A="FL:::/Kernel/KernelA.HPP,2566"$
+$LK,"DOCf_HIDE_CURSOR",A="FL:::/Kernel/KernelA.HPP,1300"$
+$LK,"CHashImport",A="FL:::/Kernel/KernelA.HPP,760"$
+$LK,"CMT_LABEL",A="FL:::/Kernel/KernelA.HPP,1684"$
 $LK,"C32_ADD",A="FL:::/Kernel/PCIBIOS.CPP.Z,122"$
-$LK,"MEM_PAGE_BITS",A="FL:::/Kernel/KernelA.HPP,2848"$
-$LK,"MBS_USED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2828"$
+$LK,"MEM_PAGE_BITS",A="FL:::/Kernel/KernelA.HPP,2867"$
+$LK,"MBS_USED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2847"$
 $LK,"HeapCtrlDel",A="FL:::/Kernel/Mem/HeapCtrl.CPP.Z,15",BI=469$
 $LK,"_CALLEXTSTR",A="FL:::/Kernel/KUtils.CPP.Z,393"$
-$LK,"FF_USE_OLD_DATETIME",A="FL:::/Kernel/KernelA.HPP,2756"$
-$LK,"CCf_PAREN",A="FL:::/Kernel/KernelA.HPP,2139"$
-$LK,"CCF_PAREN",A="FL:::/Kernel/KernelA.HPP,2138"$
-$LK,"ACD_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,1503"$
+$LK,"FF_USE_OLD_DATETIME",A="FL:::/Kernel/KernelA.HPP,2775"$
+$LK,"CCf_PAREN",A="FL:::/Kernel/KernelA.HPP,2159"$
+$LK,"CCF_PAREN",A="FL:::/Kernel/KernelA.HPP,2158"$
+$LK,"ACD_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,1509"$
 $LK,"CSysLimitBase",A="FL:::/Kernel/KernelA.HPP,347"$
-$LK,"DVD_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,2274"$
+$LK,"DVD_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,2293"$
 $LK,"QueIns",A="FL:::/Kernel/KernelB.HPP,67"$
-$LK,"CGrSym",A="FL:::/Kernel/KernelA.HPP,3626"$
-$LK,"ATAR0_FEAT",A="FL:::/Kernel/KernelA.HPP,2254"$
-$LK,"RLF_HOME",A="FL:::/Kernel/KernelA.HPP,468"$
-$LK,"RLf_HOME",A="FL:::/Kernel/KernelA.HPP,449"$
+$LK,"CGrSym",A="FL:::/Kernel/KernelA.HPP,3645"$
+$LK,"ATAR0_FEAT",A="FL:::/Kernel/KernelA.HPP,2273"$
+$LK,"RLF_HOME",A="FL:::/Kernel/KernelA.HPP,469"$
+$LK,"RLf_HOME",A="FL:::/Kernel/KernelA.HPP,450"$
 $LK,"snd",A="FL:::/Kernel/KGlbls.CPP.Z,28"$
-$LK,"SC_ENTER",A="FL:::/Kernel/KernelA.HPP,3536"$
-$LK,"LTCYAN",A="FL:::/Kernel/KernelA.HPP,2940"$
-$LK,"FUF_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,2596"$
-$LK,"CCF_PREINC",A="FL:::/Kernel/KernelA.HPP,2128"$
-$LK,"HTT_IMPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,679"$
-$LK,"HTT_EXPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,678"$
+$LK,"SC_ENTER",A="FL:::/Kernel/KernelA.HPP,3555"$
+$LK,"LTCYAN",A="FL:::/Kernel/KernelA.HPP,2959"$
+$LK,"FUF_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,2615"$
+$LK,"CCF_PREINC",A="FL:::/Kernel/KernelA.HPP,2148"$
+$LK,"HTT_IMPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,680"$
+$LK,"HTT_EXPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,679"$
 $LK,"FunSegCacheAdd",A="FL:::/Kernel/FunSeg.CPP.Z,60",BI=470$
-$LK,"CTRLT_GENERIC",A="FL:::/Kernel/KernelA.HPP,3058"$
-$LK,"CCF_KEEP_AT_SIGN",A="FL:::/Kernel/KernelA.HPP,2113"$
-$LK,"RS_ATTR_DIR",A="FL:::/Kernel/KernelA.HPP,2506"$
-$LK,"CCF_POSTDEC",A="FL:::/Kernel/KernelA.HPP,2127"$
+$LK,"CTRLT_GENERIC",A="FL:::/Kernel/KernelA.HPP,3077"$
+$LK,"CCF_KEEP_AT_SIGN",A="FL:::/Kernel/KernelA.HPP,2133"$
+$LK,"RS_ATTR_DIR",A="FL:::/Kernel/KernelA.HPP,2525"$
+$LK,"CCF_POSTDEC",A="FL:::/Kernel/KernelA.HPP,2147"$
 $LK,"DirContextDel",A="FL:::/Kernel/BlkDev/DskDirContext.CPP.Z,1",BI=471$
 $LK,"StrPrintFlags",A="FL:::/Kernel/StrB.CPP.Z,177",BI=472$
-$LK,"TK_IFNDEF",A="FL:::/Kernel/KernelA.HPP,2078"$
-$LK,"CMT_FLOAT_CONSTS",A="FL:::/Kernel/KernelA.HPP,1671"$
+$LK,"TK_IFNDEF",A="FL:::/Kernel/KernelA.HPP,2098"$
+$LK,"CMT_FLOAT_CONSTS",A="FL:::/Kernel/KernelA.HPP,1689"$
 $LK,"CBinFile",A="FL:::/Kernel/KernelA.HPP,370"$
 $LK,"SpawnQue",A="FL:::/Kernel/MultiProc.CPP.Z,248",BI=473$
-$LK,"LAPIC_SVR",A="FL:::/Kernel/KernelA.HPP,486"$
-$LK,"CMouseStateGlbls",A="FL:::/Kernel/KernelA.HPP,2994"$
+$LK,"LAPIC_SVR",A="FL:::/Kernel/KernelA.HPP,487"$
+$LK,"CMouseStateGlbls",A="FL:::/Kernel/KernelA.HPP,3013"$
 $LK,"StrPrintFunSeg",A="FL:::/Kernel/FunSeg.CPP.Z,102",BI=474$
-$LK,"ISO1_ATTR_DIR",A="FL:::/Kernel/KernelA.HPP,2498"$
+$LK,"ISO1_ATTR_DIR",A="FL:::/Kernel/KernelA.HPP,2517"$
 $LK,"HashVal",A="FL:::/Kernel/KHashB.CPP.Z,9",BI=475$
 $LK,"C:/Doc/MultiCore.TXT.Z",A="FL:::/Kernel/KernelB.HPP,233"$
+$LK,"DOCEF_DFT_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,1021"$
 $LK,"IET_IMM_U32",A="FL:::/Kernel/KernelA.HPP,399"$
 $LK,"IET_IMM_U16",A="FL:::/Kernel/KernelA.HPP,397"$
 $LK,"QueRem",A="FL:::/Kernel/KernelB.HPP,71"$
-$LK,"TASKf_DISABLE_BPTS",A="FL:::/Kernel/KernelA.HPP,3260"$
-$LK,"BDT_NULL",A="FL:::/Kernel/KernelA.HPP,2606"$
+$LK,"TASKf_DISABLE_BPTS",A="FL:::/Kernel/KernelA.HPP,3279"$
+$LK,"BDT_NULL",A="FL:::/Kernel/KernelA.HPP,2625"$
 $LK,"FarCall32",A="FL:::/Kernel/PCIBIOS.CPP.Z,161"$
-$LK,"SCF_NO_SHIFT",A="FL:::/Kernel/KernelA.HPP,3527"$
-$LK,"SCf_NO_SHIFT",A="FL:::/Kernel/KernelA.HPP,3512"$
-$LK,"ARGT_MOFFS32",A="FL:::/Kernel/KernelA.HPP,1893"$
-$LK,"ARGT_MOFFS16",A="FL:::/Kernel/KernelA.HPP,1892"$
+$LK,"SCF_NO_SHIFT",A="FL:::/Kernel/KernelA.HPP,3546"$
+$LK,"SCf_NO_SHIFT",A="FL:::/Kernel/KernelA.HPP,3531"$
+$LK,"ARGT_MOFFS32",A="FL:::/Kernel/KernelA.HPP,1912"$
+$LK,"ARGT_MOFFS16",A="FL:::/Kernel/KernelA.HPP,1911"$
 $LK,"sys_heap_dbg",A="FL:::/Kernel/KernelB.HPP,186"$
-$LK,"FUF_SINGLE",A="FL:::/Kernel/KernelA.HPP,2582"$
-$LK,"FUf_SINGLE",A="FL:::/Kernel/KernelA.HPP,2556"$
+$LK,"FUF_SINGLE",A="FL:::/Kernel/KernelA.HPP,2601"$
+$LK,"FUf_SINGLE",A="FL:::/Kernel/KernelA.HPP,2575"$
+$LK,"DOCEf_DFT_RAW_TYPE",A="FL:::/Kernel/KernelA.HPP,1107"$
 $LK,"DVDImageWriteTask",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,49",BI=476$
-$LK,"LTGRAY",A="FL:::/Kernel/KernelA.HPP,2936"$
+$LK,"LTGRAY",A="FL:::/Kernel/KernelA.HPP,2955"$
 $LK,"CoreAPSethInit",A="FL:::/Kernel/MultiProc.CPP.Z,276",BI=477$
 $LK,"IRQKbd",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,411",BI=478$
 $LK,"QueVectU8Del",A="FL:::/Kernel/KDataTypes.CPP.Z,132",BI=479$
 $LK,"SwapU32",A="FL:::/Kernel/KernelB.HPP,114"$
 $LK,"SwapU16",A="FL:::/Kernel/KernelB.HPP,112"$
-$LK,"ARf_MESH_ED",A="FL:::/Kernel/KernelA.HPP,3876"$
-$LK,"CAsmUndefHash",A="FL:::/Kernel/KernelA.HPP,1791"$
-$LK,"HTt_IMPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,649"$
-$LK,"HTt_EXPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,648"$
+$LK,"ARf_MESH_ED",A="FL:::/Kernel/KernelA.HPP,3895"$
+$LK,"CAsmUndefHash",A="FL:::/Kernel/KernelA.HPP,1810"$
+$LK,"HTt_IMPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,650"$
+$LK,"HTt_EXPORT_SYS_SYM",A="FL:::/Kernel/KernelA.HPP,649"$
 $LK,"C32_EDI",A="FL:::/Kernel/PCIBIOS.CPP.Z,63"$
 $LK,"pow10_I64",A="FL:::/Kernel/KGlbls.CPP.Z,15"$
 $LK,"sys_num_spawned_tasks",A="FL:::/Kernel/KGlbls.CPP.Z,9"$
-$LK,"LAPIC_LVT_LINT0",A="FL:::/Kernel/KernelA.HPP,497"$
+$LK,"LAPIC_LVT_LINT0",A="FL:::/Kernel/KernelA.HPP,498"$
 $LK,"Cluster2Blk",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,32",BI=480$
 $LK,"ArcFinishCompression",A="FL:::/Kernel/Compress.CPP.Z,155",BI=481$
-$LK,"LAPIC_LVT_LINT1",A="FL:::/Kernel/KernelA.HPP,498"$
+$LK,"LAPIC_LVT_LINT1",A="FL:::/Kernel/KernelA.HPP,499"$
 $LK,"sys_winmgr_task",A="FL:::/Kernel/KGlbls.CPP.Z,11"$
-$LK,"SC_CAPS",A="FL:::/Kernel/KernelA.HPP,3540"$
+$LK,"SC_CAPS",A="FL:::/Kernel/KernelA.HPP,3559"$
 $LK,"SYS_RAM_REBOOT_END",A="FL:::/Kernel/KStart.CPP.Z,373"$
-$LK,"CMT_ARRAY_DIM",A="FL:::/Kernel/KernelA.HPP,1672"$
-$LK,"ACD_POS_CHAR",A="FL:::/Kernel/KernelA.HPP,1509"$
-$LK,"REGT_FSTK",A="FL:::/Kernel/KernelA.HPP,739"$
-$LK,"ARGT_MOFFS64",A="FL:::/Kernel/KernelA.HPP,1894"$
-$LK,"DOCF_COLOR_NAMES",A="FL:::/Kernel/KernelA.HPP,1253"$
-$LK,"CRAXRBCRCXRDX",A="FL:::/Kernel/KernelA.HPP,564"$
+$LK,"REG_R8",A="FL:::/Kernel/KernelA.HPP,1781"$
+$LK,"CMT_ARRAY_DIM",A="FL:::/Kernel/KernelA.HPP,1690"$
+$LK,"ACD_POS_CHAR",A="FL:::/Kernel/KernelA.HPP,1515"$
+$LK,"REGT_FSTK",A="FL:::/Kernel/KernelA.HPP,740"$
+$LK,"ARGT_MOFFS64",A="FL:::/Kernel/KernelA.HPP,1913"$
+$LK,"DOCF_COLOR_NAMES",A="FL:::/Kernel/KernelA.HPP,1259"$
+$LK,"CRAXRBCRCXRDX",A="FL:::/Kernel/KernelA.HPP,565"$
 $LK,"_SAVE_EXCEPT_REGS",A="FL:::/Kernel/KExcept.CPP.Z,26"$
-$LK,"DOCf_COLOR_NAMES",A="FL:::/Kernel/KernelA.HPP,1289"$
+$LK,"MDf_IMM",A="FL:::/Kernel/KernelA.HPP,1569"$
+$LK,"DOCf_COLOR_NAMES",A="FL:::/Kernel/KernelA.HPP,1295"$
 $LK,"RoundI64",A="FL:::/Kernel/KMathB.CPP.Z,47",BI=482$
-$LK,"CSndGlbls",A="FL:::/Kernel/KernelA.HPP,3816"$
-$LK,"EXT_HEAPLOG_FREE",A="FL:::/Kernel/KernelA.HPP,574"$
+$LK,"CSndGlbls",A="FL:::/Kernel/KernelA.HPP,3835"$
+$LK,"EXT_HEAPLOG_FREE",A="FL:::/Kernel/KernelA.HPP,575"$
 $LK,"DrvSerialNum",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,248",BI=483$
 $LK,"Fstsw",A="FL:::/Kernel/KernelB.HPP,132"$
-$LK,"TASKf_TASK_LOCK",A="FL:::/Kernel/KernelA.HPP,3253"$
-$LK,"BDT_ATA",A="FL:::/Kernel/KernelA.HPP,2608"$
+$LK,"TASKf_TASK_LOCK",A="FL:::/Kernel/KernelA.HPP,3272"$
+$LK,"BDT_ATA",A="FL:::/Kernel/KernelA.HPP,2627"$
 $LK,"RFLAGf_RESUME",A="FL:::/Kernel/KernelA.HPP,317"$
 $LK,"C32_EAX",A="FL:::/Kernel/PCIBIOS.CPP.Z,58"$
 $LK,"PortNop",A="FL:::/Kernel/KMisc.CPP.Z,1",BI=484$
 $LK,"StrNCmp",A="FL:::/Kernel/StrA.CPP.Z,313"$
-$LK,"FUF_PUBLIC",A="FL:::/Kernel/KernelA.HPP,2579"$
-$LK,"FUf_PUBLIC",A="FL:::/Kernel/KernelA.HPP,2553"$
-$LK,"CFAT32FileInfoSect",A="FL:::/Kernel/KernelA.HPP,2345"$
+$LK,"FUF_PUBLIC",A="FL:::/Kernel/KernelA.HPP,2598"$
+$LK,"FUf_PUBLIC",A="FL:::/Kernel/KernelA.HPP,2572"$
+$LK,"CFAT32FileInfoSect",A="FL:::/Kernel/KernelA.HPP,2364"$
 $LK,"SYS_HEAP_INIT_VAL",A="FL:::/Home/Temp.TXT.Z,1"$
-$LK,"CATAPITrack",A="FL:::/Kernel/KernelA.HPP,2397"$
+$LK,"CATAPITrack",A="FL:::/Kernel/KernelA.HPP,2416"$
 $LK,"C32_EBX",A="FL:::/Kernel/PCIBIOS.CPP.Z,59"$
-$LK,"CCF_HAS_MISC_DATA",A="FL:::/Kernel/KernelA.HPP,2119"$
-$LK,"LFSF_DOC",A="FL:::/Kernel/KernelA.HPP,2011"$
-$LK,"ACD_PRONUNCIATION_CHAR",A="FL:::/Kernel/KernelA.HPP,1508"$
-$LK,"ACD_PRONUNCIATION",A="FL:::/Kernel/KernelA.HPP,1497"$
+$LK,"CCF_HAS_MISC_DATA",A="FL:::/Kernel/KernelA.HPP,2139"$
+$LK,"LFSF_DOC",A="FL:::/Kernel/KernelA.HPP,2031"$
+$LK,"ACD_PRONUNCIATION_CHAR",A="FL:::/Kernel/KernelA.HPP,1514"$
+$LK,"ACD_PRONUNCIATION",A="FL:::/Kernel/KernelA.HPP,1503"$
 $LK,"C32_ECX",A="FL:::/Kernel/PCIBIOS.CPP.Z,60"$
 $LK,"FifoU8Peek",A="FL:::/Kernel/KDataTypes.CPP.Z,205",BI=485$
 $LK,"C32_EDX",A="FL:::/Kernel/PCIBIOS.CPP.Z,61"$
 $LK,"LoadPass1",A="FL:::/Kernel/KLoad.CPP.Z,67",BI=486$
 $LK,"LoadPass2",A="FL:::/Kernel/KLoad.CPP.Z,154",BI=487$
-$LK,"ARf_MANAGE_SLIDER",A="FL:::/Kernel/KernelA.HPP,3878"$
-$LK,"CSndData",A="FL:::/Kernel/KernelA.HPP,3809"$
-$LK,"SC_PAGE_DOWN",A="FL:::/Kernel/KernelA.HPP,3548"$
-$LK,"OC_NOP",A="FL:::/Kernel/KernelA.HPP,1739"$
+$LK,"ARf_MANAGE_SLIDER",A="FL:::/Kernel/KernelA.HPP,3897"$
+$LK,"CSndData",A="FL:::/Kernel/KernelA.HPP,3828"$
+$LK,"SC_PAGE_DOWN",A="FL:::/Kernel/KernelA.HPP,3567"$
+$LK,"OC_NOP",A="FL:::/Kernel/KernelA.HPP,1757"$
 $LK,"SPF_AUX_FMT_NUM",A="FL:::/Kernel/StrPrint.CPP.Z,8"$
-$LK,"MSG_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3199"$
-$LK,"SYS_SEMA_SINGLE_USER",A="FL:::/Kernel/KernelA.HPP,599"$
+$LK,"MSG_KEY_UP",A="FL:::/Kernel/KernelA.HPP,3218"$
+$LK,"SYS_SEMA_SINGLE_USER",A="FL:::/Kernel/KernelA.HPP,600"$
 $LK,"TimeStampFreqCal",A="FL:::/Kernel/KMisc.CPP.Z,85",BI=488$
 $LK,"QueVectU8Get",A="FL:::/Kernel/KDataTypes.CPP.Z,140",BI=489$
-$LK,"DOCF_CARRIAGE_RETURN",A="FL:::/Kernel/KernelA.HPP,1251"$
+$LK,"DOCF_CARRIAGE_RETURN",A="FL:::/Kernel/KernelA.HPP,1257"$
 $LK,"PostMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,240",BI=490$
-$LK,"SVCT_CALL",A="FL:::/Kernel/KernelA.HPP,3164"$
+$LK,"SVCT_CALL",A="FL:::/Kernel/KernelA.HPP,3183"$
+$LK,"MDf_REG",A="FL:::/Kernel/KernelA.HPP,1570"$
 $LK,"ATAPISeek",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,131",BI=491$
 $LK,"MPrintDate",A="FL:::/Kernel/StrPrint.CPP.Z,62",BI=492$
-$LK,"SC_F10",A="FL:::/Kernel/KernelA.HPP,3562"$
-$LK,"SC_F11",A="FL:::/Kernel/KernelA.HPP,3563"$
-$LK,"SYS_SEMA_TT",A="FL:::/Kernel/KernelA.HPP,605"$
+$LK,"SC_F10",A="FL:::/Kernel/KernelA.HPP,3581"$
+$LK,"SC_F11",A="FL:::/Kernel/KernelA.HPP,3582"$
+$LK,"SYS_SEMA_TT",A="FL:::/Kernel/KernelA.HPP,606"$
 $LK,"Silent",A="FL:::/Kernel/KMisc.CPP.Z,223",BI=493$
-$LK,"SC_F12",A="FL:::/Kernel/KernelA.HPP,3564"$
-$LK,"WIF_FOCUS_TASK_CTRLS",A="FL:::/Kernel/KernelA.HPP,1414"$
-$LK,"CCF_POSTINC",A="FL:::/Kernel/KernelA.HPP,2126"$
-$LK,"CCF_IN_IF",A="FL:::/Kernel/KernelA.HPP,2108"$
+$LK,"SC_F12",A="FL:::/Kernel/KernelA.HPP,3583"$
+$LK,"WIF_FOCUS_TASK_CTRLS",A="FL:::/Kernel/KernelA.HPP,1420"$
+$LK,"CCF_POSTINC",A="FL:::/Kernel/KernelA.HPP,2146"$
+$LK,"CCF_IN_IF",A="FL:::/Kernel/KernelA.HPP,2128"$
 $LK,"HashStr",A="FL:::/Kernel/KHashA.CPP.Z,254"$
-$LK,"CHashExport",A="FL:::/Kernel/KernelA.HPP,754"$
+$LK,"CHashExport",A="FL:::/Kernel/KernelA.HPP,755"$
 $LK,"FifoU8Del",A="FL:::/Kernel/KDataTypes.CPP.Z,167",BI=494$
 $LK,"DrvIsWritable",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,169",BI=495$
+$LK,"MDf_SIB",A="FL:::/Kernel/KernelA.HPP,1572"$
 $LK,"FWBlks",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,182",BI=496$
 $LK,"chars_bmp_printable",A="FL:::/Kernel/StrA.CPP.Z,381"$
-$LK,"RLF_COMPILER",A="FL:::/Kernel/KernelA.HPP,464"$
-$LK,"RLf_COMPILER",A="FL:::/Kernel/KernelA.HPP,445"$
-$LK,"TASK_NAME_LEN",A="FL:::/Kernel/KernelA.HPP,3277"$
-$LK,"COLORROP_COLORS_MASK",A="FL:::/Kernel/KernelA.HPP,2958"$
+$LK,"RLF_COMPILER",A="FL:::/Kernel/KernelA.HPP,465"$
+$LK,"RLf_COMPILER",A="FL:::/Kernel/KernelA.HPP,446"$
+$LK,"TASK_NAME_LEN",A="FL:::/Kernel/KernelA.HPP,3296"$
+$LK,"COLORROP_COLORS_MASK",A="FL:::/Kernel/KernelA.HPP,2977"$
 $LK,"C32_ESI",A="FL:::/Kernel/PCIBIOS.CPP.Z,62"$
 $LK,"BlkPoolsInit",A="FL:::/Kernel/Mem/BlkPool.CPP.Z,29",BI=497$
 $LK,"SYS_DATA_BP",A="FL:::/Kernel/KStart.CPP.Z,205"$
-$LK,"VGAP_PALETTE_DATA",A="FL:::/Kernel/KernelA.HPP,3711"$
-$LK,"ATAR0_HCYL",A="FL:::/Kernel/KernelA.HPP,2258"$
+$LK,"VGAP_PALETTE_DATA",A="FL:::/Kernel/KernelA.HPP,3730"$
+$LK,"ATAR0_HCYL",A="FL:::/Kernel/KernelA.HPP,2277"$
 $LK,"sys_code_bp",A="FL:::/Kernel/KernelB.HPP,195"$
 $LK,"RepOutU32",A="FL:::/Kernel/KernelB.HPP,89"$
 $LK,"RepOutU16",A="FL:::/Kernel/KernelB.HPP,87"$
-$LK,"TK_SUBSCRIPT",A="FL:::/Kernel/KernelA.HPP,2047"$
-$LK,"WIG_TASK_DFT",A="FL:::/Kernel/KernelA.HPP,1424"$
-$LK,"ARf_PSALMODY_JUKEBOX",A="FL:::/Kernel/KernelA.HPP,3875"$
-$LK,"DOCEf_HTML_LINK",A="FL:::/Kernel/KernelA.HPP,1049"$
-$LK,"DOCEF_HTML_LINK",A="FL:::/Kernel/KernelA.HPP,963"$
+$LK,"TK_SUBSCRIPT",A="FL:::/Kernel/KernelA.HPP,2067"$
+$LK,"WIG_TASK_DFT",A="FL:::/Kernel/KernelA.HPP,1430"$
+$LK,"ARf_PSALMODY_JUKEBOX",A="FL:::/Kernel/KernelA.HPP,3894"$
+$LK,"DOCEf_HTML_LINK",A="FL:::/Kernel/KernelA.HPP,1053"$
+$LK,"DOCEF_HTML_LINK",A="FL:::/Kernel/KernelA.HPP,965"$
 $LK,"NORMAL_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,3"$
 $LK,"LinkedLstSize",A="FL:::/Kernel/KDataTypes.CPP.Z,31",BI=498$
 $LK,"SSF_NO_COMPRESSION",A="FL:::/Kernel/KernelA.HPP,222"$
 $LK,"DirContextNew",A="FL:::/Kernel/BlkDev/DskDirContext.CPP.Z,21",BI=499$
 $LK,"_SET_MSR",A="FL:::/Kernel/KUtils.CPP.Z,459"$
-$LK,"HClf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2876"$
+$LK,"HClf_LOCKED",A="FL:::/Kernel/KernelA.HPP,2895"$
 $LK,"SPF_QUESTION",A="FL:::/Kernel/StrPrint.CPP.Z,7"$
-$LK,"ACD_EXTRA_END",A="FL:::/Kernel/KernelA.HPP,1502"$
+$LK,"ACD_EXTRA_END",A="FL:::/Kernel/KernelA.HPP,1508"$
 $LK,"SetRFlags",A="FL:::/Kernel/KernelB.HPP,255"$
 $LK,"GetRFlags",A="FL:::/Kernel/KernelB.HPP,249"$
-$LK,"DOCEF_RIGHT_MACRO",A="FL:::/Kernel/KernelA.HPP,967"$
-$LK,"MSG_IP_MOVE",A="FL:::/Kernel/KernelA.HPP,3200"$
-$LK,"SVCT_TEXT_INPUT",A="FL:::/Kernel/KernelA.HPP,3160"$
-$LK,"DOClf_LOCKED",A="FL:::/Kernel/KernelA.HPP,1322"$
+$LK,"DOCEF_RIGHT_MACRO",A="FL:::/Kernel/KernelA.HPP,969"$
+$LK,"MSG_IP_MOVE",A="FL:::/Kernel/KernelA.HPP,3219"$
+$LK,"SVCT_TEXT_INPUT",A="FL:::/Kernel/KernelA.HPP,3179"$
+$LK,"DOClf_LOCKED",A="FL:::/Kernel/KernelA.HPP,1328"$
 $LK,"CallStkGrow",A="FL:::/Kernel/KTask.CPP.Z,78",BI=500$
-$LK,"ATAR0_NSECT",A="FL:::/Kernel/KernelA.HPP,2255"$
-$LK,"DOCEf_RIGHT_MACRO",A="FL:::/Kernel/KernelA.HPP,1053"$
-$LK,"RLF_DOC",A="FL:::/Kernel/KernelA.HPP,465"$
+$LK,"ATAR0_NSECT",A="FL:::/Kernel/KernelA.HPP,2274"$
+$LK,"DOCEf_RIGHT_MACRO",A="FL:::/Kernel/KernelA.HPP,1057"$
+$LK,"RLF_DOC",A="FL:::/Kernel/KernelA.HPP,466"$
 $LK,"chars_bmp_macro",A="FL:::/Kernel/StrA.CPP.Z,376"$
 $LK,"OutU8",A="FL:::/Kernel/KernelB.HPP,79"$
-$LK,"DCF_ALIAS",A="FL:::/Kernel/KernelA.HPP,3614"$
+$LK,"DCF_ALIAS",A="FL:::/Kernel/KernelA.HPP,3633"$
 $LK,"CoreAPSethTask",A="FL:::/Kernel/MultiProc.CPP.Z,194",BI=501$
-$LK,"Ff_HASERRCODE",A="FL:::/Kernel/KernelA.HPP,843"$
-$LK,"DOCF_PLAIN_TEXT",A="FL:::/Kernel/KernelA.HPP,1248"$
+$LK,"Ff_HASERRCODE",A="FL:::/Kernel/KernelA.HPP,844"$
+$LK,"REGG_LOCAL_NON_PTR_VARS",A="FL:::/Kernel/KernelA.HPP,1792"$
+$LK,"DOCF_PLAIN_TEXT",A="FL:::/Kernel/KernelA.HPP,1254"$
 $LK,"RawPutChar",A="FL:::/Kernel/Display.CPP.Z,1",BI=502$
 $LK,"FifoU8Cnt",A="FL:::/Kernel/KDataTypes.CPP.Z,227",BI=503$
 $LK,"C:/Doc/TimeHPET.TXT.Z",A="FL:::/Kernel/KernelB.HPP,289"$
-$LK,"DOCf_PLAIN_TEXT",A="FL:::/Kernel/KernelA.HPP,1284"$
-$LK,"CArcEntry",A="FL:::/Kernel/KernelA.HPP,3725"$
-$LK,"AOT_BIN_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,1776"$
-$LK,"DOCf_FORM",A="FL:::/Kernel/KernelA.HPP,1292"$
-$LK,"DOCF_FORM",A="FL:::/Kernel/KernelA.HPP,1256"$
-$LK,"CHashTable",A="FL:::/Kernel/KernelA.HPP,638"$
+$LK,"DOCf_PLAIN_TEXT",A="FL:::/Kernel/KernelA.HPP,1290"$
+$LK,"CArcEntry",A="FL:::/Kernel/KernelA.HPP,3744"$
+$LK,"AOT_BIN_BLK_SIZE",A="FL:::/Kernel/KernelA.HPP,1795"$
+$LK,"DOCf_FORM",A="FL:::/Kernel/KernelA.HPP,1298"$
+$LK,"DOCF_FORM",A="FL:::/Kernel/KernelA.HPP,1262"$
+$LK,"CHashTable",A="FL:::/Kernel/KernelA.HPP,639"$
 $LK,"QueVectU8New",A="FL:::/Kernel/KDataTypes.CPP.Z,87",BI=504$
-$LK,"MEM_INTERRUPT_STK",A="FL:::/Kernel/KernelA.HPP,2858"$
-$LK,"BDT_RAM",A="FL:::/Kernel/KernelA.HPP,2607"$
-$LK,"CMF_POP_CMP",A="FL:::/Kernel/KernelA.HPP,1675"$
-$LK,"ICF_POP_CMP",A="FL:::/Kernel/KernelA.HPP,1592"$
-$LK,"DOCf_CARRIAGE_RETURN",A="FL:::/Kernel/KernelA.HPP,1287"$
-$LK,"MLMF_IS_STR",A="FL:::/Kernel/KernelA.HPP,783"$
-$LK,"SYS_TIMER0_PERIOD",A="FL:::/Kernel/KernelA.HPP,549"$
+$LK,"MEM_INTERRUPT_STK",A="FL:::/Kernel/KernelA.HPP,2877"$
+$LK,"BDT_RAM",A="FL:::/Kernel/KernelA.HPP,2626"$
+$LK,"CMF_POP_CMP",A="FL:::/Kernel/KernelA.HPP,1693"$
+$LK,"ICF_POP_CMP",A="FL:::/Kernel/KernelA.HPP,1606"$
+$LK,"DOCf_CARRIAGE_RETURN",A="FL:::/Kernel/KernelA.HPP,1293"$
+$LK,"MLMF_IS_STR",A="FL:::/Kernel/KernelA.HPP,784"$
+$LK,"SYS_TIMER0_PERIOD",A="FL:::/Kernel/KernelA.HPP,550"$
 $LK,"SET_FS_BASE",A="FL:::/Kernel/KUtils.CPP.Z,446"$
-$LK,"CISO1PriDesc",A="FL:::/Kernel/KernelA.HPP,2460"$
+$LK,"CISO1PriDesc",A="FL:::/Kernel/KernelA.HPP,2479"$
 $LK,"PutHex",A="FL:::/Kernel/StrA.CPP.Z,12",BI=505$
 $LK,"PopUp",A="FL:::/Kernel/SrvCmd.CPP.Z,377",BI=506$
-$LK,"SCF_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3524"$
-$LK,"SCf_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3509"$
-$LK,"MSG_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3205"$
-$LK,"SVCT_EXE_STR",A="FL:::/Kernel/KernelA.HPP,3162"$
-$LK,"DOCF_OVERSTRIKE",A="FL:::/Kernel/KernelA.HPP,1278"$
-$LK,"IOAPICARB",A="FL:::/Kernel/KernelA.HPP,510"$
-$LK,"DOCf_OVERSTRIKE",A="FL:::/Kernel/KernelA.HPP,1315"$
+$LK,"SCF_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3543"$
+$LK,"SCf_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3528"$
+$LK,"MSG_IP_R_DOWN",A="FL:::/Kernel/KernelA.HPP,3224"$
+$LK,"SVCT_EXE_STR",A="FL:::/Kernel/KernelA.HPP,3181"$
+$LK,"DOCF_OVERSTRIKE",A="FL:::/Kernel/KernelA.HPP,1284"$
+$LK,"IOAPICARB",A="FL:::/Kernel/KernelA.HPP,511"$
+$LK,"DOCf_OVERSTRIKE",A="FL:::/Kernel/KernelA.HPP,1321"$
 $LK,"COREAP_16BIT_INIT_END",A="FL:::/Kernel/MultiProc.CPP.Z,27"$
-$LK,"SCF_SHIFT",A="FL:::/Kernel/KernelA.HPP,3516"$
-$LK,"SCf_SHIFT",A="FL:::/Kernel/KernelA.HPP,3501"$
-$LK,"WIF_SELF_FOCUS",A="FL:::/Kernel/KernelA.HPP,1399"$
+$LK,"SCF_SHIFT",A="FL:::/Kernel/KernelA.HPP,3535"$
+$LK,"SCf_SHIFT",A="FL:::/Kernel/KernelA.HPP,3520"$
+$LK,"WIF_SELF_FOCUS",A="FL:::/Kernel/KernelA.HPP,1405"$
 $LK,"StrLastOcc",A="FL:::/Kernel/StrA.CPP.Z,599",BI=507$
-$LK,"WIf_SELF_FOCUS",A="FL:::/Kernel/KernelA.HPP,1428"$
+$LK,"WIf_SELF_FOCUS",A="FL:::/Kernel/KernelA.HPP,1434"$
 $LK,"FClose",A="FL:::/Kernel/BlkDev/DskCFile.CPP.Z,74",BI=508$
-$LK,"IEF_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,1934"$
-$LK,"CMT_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,1668"$
+$LK,"MDf_STK",A="FL:::/Kernel/KernelA.HPP,1568"$
+$LK,"IEF_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,1954"$
+$LK,"CMT_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,1686"$
 $LK,"mon_start_days1",A="FL:::/Kernel/KDate.CPP.Z,3"$
-$LK,"HTF_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,702"$
+$LK,"HTF_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,703"$
 $LK,"mon_start_days2",A="FL:::/Kernel/KDate.CPP.Z,5"$
-$LK,"FONT_HEIGHT",A="FL:::/Kernel/KernelA.HPP,3586"$
-$LK,"SVCf_FOCUS_MASTER",A="FL:::/Kernel/KernelA.HPP,3150"$
-$LK,"HTf_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,672"$
-$LK,"DFT_CACHE_LINE_WIDTH",A="FL:::/Kernel/KernelA.HPP,579"$
-$LK,"ATAR0_LCYL",A="FL:::/Kernel/KernelA.HPP,2257"$
+$LK,"FONT_HEIGHT",A="FL:::/Kernel/KernelA.HPP,3605"$
+$LK,"SVCf_FOCUS_MASTER",A="FL:::/Kernel/KernelA.HPP,3169"$
+$LK,"HTf_GOTO_LABEL",A="FL:::/Kernel/KernelA.HPP,673"$
+$LK,"DFT_CACHE_LINE_WIDTH",A="FL:::/Kernel/KernelA.HPP,580"$
+$LK,"ATAR0_LCYL",A="FL:::/Kernel/KernelA.HPP,2276"$
 $LK,"MemPagePresentMark",A="FL:::/Kernel/Mem/PageTables.CPP.Z,170",BI=509$
-$LK,"ICf_DONT_PUSH_FLOAT0",A="FL:::/Kernel/KernelA.HPP,1595"$
+$LK,"ICf_DONT_PUSH_FLOAT0",A="FL:::/Kernel/KernelA.HPP,1609"$
 $LK,"Sleep",A="FL:::/Kernel/KMisc.CPP.Z,155",BI=510$
 $LK,"RedSeaMkDir",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,602",BI=511$
 $LK,"PutKey",A="FL:::/Kernel/KeyDev.CPP.Z,1",BI=512$
 $LK,"_HASH_STR",A="FL:::/Kernel/KHashA.CPP.Z,120"$
-$LK,"FUf_ALL",A="FL:::/Kernel/KernelA.HPP,2549"$
+$LK,"FUf_ALL",A="FL:::/Kernel/KernelA.HPP,2568"$
 $LK,"sys_macro_task",A="FL:::/Kernel/KGlbls.CPP.Z,5"$
-$LK,"CArcCompress",A="FL:::/Kernel/KernelA.HPP,3751"$
-$LK,"CHashOpcode",A="FL:::/Kernel/KernelA.HPP,1926"$
+$LK,"CArcCompress",A="FL:::/Kernel/KernelA.HPP,3770"$
+$LK,"CHashOpcode",A="FL:::/Kernel/KernelA.HPP,1946"$
 $LK,"FifoU8Ins",A="FL:::/Kernel/KDataTypes.CPP.Z,173",BI=513$
-$LK,"CGridGlbls",A="FL:::/Kernel/KernelA.HPP,3041"$
+$LK,"CGridGlbls",A="FL:::/Kernel/KernelA.HPP,3060"$
 $LK,"FATFromName",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,168",BI=514$
-$LK,"AAT_ADD_U32",A="FL:::/Kernel/KernelA.HPP,1949"$
-$LK,"AAT_ADD_U16",A="FL:::/Kernel/KernelA.HPP,1947"$
-$LK,"SC_PAUSE",A="FL:::/Kernel/KernelA.HPP,3565"$
-$LK,"TRANSPARENT",A="FL:::/Kernel/KernelA.HPP,2928"$
+$LK,"AAT_ADD_U32",A="FL:::/Kernel/KernelA.HPP,1969"$
+$LK,"AAT_ADD_U16",A="FL:::/Kernel/KernelA.HPP,1967"$
+$LK,"SC_PAUSE",A="FL:::/Kernel/KernelA.HPP,3584"$
+$LK,"TRANSPARENT",A="FL:::/Kernel/KernelA.HPP,2947"$
 $LK,"XTalkStrWait",A="FL:::/Kernel/SrvCmd.CPP.Z,497",BI=515$
-$LK,"CArcCtrl",A="FL:::/Kernel/KernelA.HPP,3733"$
-$LK,"SC_CTRL",A="FL:::/Kernel/KernelA.HPP,3538"$
-$LK,"RS_ATTR_LONG_NAME_MASK",A="FL:::/Kernel/KernelA.HPP,2510"$
-$LK,"ATAR1_CTRL",A="FL:::/Kernel/KernelA.HPP,2262"$
-$LK,"ICF_A1_TO_F64",A="FL:::/Kernel/KernelA.HPP,1574"$
-$LK,"RECALCF_ADD_CURSOR",A="FL:::/Kernel/KernelA.HPP,1341"$
-$LK,"DOC_COLOR_BIN",A="FL:::/Kernel/KernelA.HPP,1131"$
-$LK,"Ff_NOARGPOP",A="FL:::/Kernel/KernelA.HPP,845"$
+$LK,"CArcCtrl",A="FL:::/Kernel/KernelA.HPP,3752"$
+$LK,"SC_CTRL",A="FL:::/Kernel/KernelA.HPP,3557"$
+$LK,"RS_ATTR_LONG_NAME_MASK",A="FL:::/Kernel/KernelA.HPP,2529"$
+$LK,"ATAR1_CTRL",A="FL:::/Kernel/KernelA.HPP,2281"$
+$LK,"ICF_A1_TO_F64",A="FL:::/Kernel/KernelA.HPP,1589"$
+$LK,"RECALCF_ADD_CURSOR",A="FL:::/Kernel/KernelA.HPP,1347"$
+$LK,"DOC_COLOR_BIN",A="FL:::/Kernel/KernelA.HPP,1137"$
+$LK,"Ff_NOARGPOP",A="FL:::/Kernel/KernelA.HPP,846"$
 $LK,"EdLiteFileLine",A="FL:::/Kernel/EdLite.CPP.Z,316",BI=516$
 $LK,"FifoU8New",A="FL:::/Kernel/KDataTypes.CPP.Z,155",BI=517$
-$LK,"SC_HOME",A="FL:::/Kernel/KernelA.HPP,3549"$
+$LK,"SC_HOME",A="FL:::/Kernel/KernelA.HPP,3568"$
 $LK,"ATAPIWritePktWord",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,106",BI=518$
 $LK,"FilesFindMatch",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,40",BI=519$
 $LK,"BlkDevsRelease",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,77",BI=520$
-$LK,"DOC_COLOR_LINK",A="FL:::/Kernel/KernelA.HPP,1126"$
-$LK,"AAT_ADD_U64",A="FL:::/Kernel/KernelA.HPP,1951"$
-$LK,"HTT_CLASS",A="FL:::/Kernel/KernelA.HPP,682"$
-$LK,"HTt_CLASS",A="FL:::/Kernel/KernelA.HPP,652"$
+$LK,"DOC_COLOR_LINK",A="FL:::/Kernel/KernelA.HPP,1132"$
+$LK,"AAT_ADD_U64",A="FL:::/Kernel/KernelA.HPP,1971"$
+$LK,"HTT_CLASS",A="FL:::/Kernel/KernelA.HPP,683"$
+$LK,"HTt_CLASS",A="FL:::/Kernel/KernelA.HPP,653"$
 $LK,"Cd2DirEntry",A="FL:::/Kernel/BlkDev/DskStrA.CPP.Z,211",BI=521$
 $LK,"IET_IMM_U0",A="FL:::/Kernel/KernelA.HPP,393"$
 $LK,"FifoU8Rem",A="FL:::/Kernel/KDataTypes.CPP.Z,190",BI=522$
 $LK,"StrLastRem",A="FL:::/Kernel/StrA.CPP.Z,609",BI=523$
 $LK,"RedSeaDrvInit",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,58",BI=524$
 $LK,"BlkDevAdd",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,23",BI=525$
-$LK,"ROPF_HALF_RANGE_COLOR",A="FL:::/Kernel/KernelA.HPP,2920"$
+$LK,"REGG_CLOBBERED",A="FL:::/Kernel/KernelA.HPP,1788"$
+$LK,"ROPF_HALF_RANGE_COLOR",A="FL:::/Kernel/KernelA.HPP,2939"$
 $LK,"DirLongNameFill",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,199",BI=526$
 $LK,"QueVectU8Put",A="FL:::/Kernel/KDataTypes.CPP.Z,96",BI=527$
 $LK,"StrFind",A="FL:::/Kernel/StrA.CPP.Z,624",BI=528$
-$LK,"CMemRange",A="FL:::/Kernel/KernelA.HPP,2840"$
-$LK,"WIf_FOCUS_TASK_CTRLS",A="FL:::/Kernel/KernelA.HPP,1439"$
+$LK,"CMemRange",A="FL:::/Kernel/KernelA.HPP,2859"$
+$LK,"WIf_FOCUS_TASK_CTRLS",A="FL:::/Kernel/KernelA.HPP,1445"$
 $LK,"C32_RSP",A="FL:::/Kernel/PCIBIOS.CPP.Z,66"$
 $LK,"OutStr",A="FL:::/Kernel/StrPrint.CPP.Z,33",BI=529$
-$LK,"DOCEf_CHECK_COLLAPSABLE",A="FL:::/Kernel/KernelA.HPP,1086"$
-$LK,"DOCEF_PAGE_REL_Y",A="FL:::/Kernel/KernelA.HPP,989"$
+$LK,"DOCEf_CHECK_COLLAPSABLE",A="FL:::/Kernel/KernelA.HPP,1090"$
+$LK,"DOCEF_PAGE_REL_Y",A="FL:::/Kernel/KernelA.HPP,991"$
 $LK,"TimersInit",A="FL:::/Kernel/KEnd.CPP.Z,83",BI=530$
-$LK,"ATAR0_SECT",A="FL:::/Kernel/KernelA.HPP,2256"$
-$LK,"WIF_SELF_CTRLS",A="FL:::/Kernel/KernelA.HPP,1401"$
-$LK,"DOCEf_PAGE_REL_Y",A="FL:::/Kernel/KernelA.HPP,1075"$
+$LK,"ATAR0_SECT",A="FL:::/Kernel/KernelA.HPP,2275"$
+$LK,"WIF_SELF_CTRLS",A="FL:::/Kernel/KernelA.HPP,1407"$
+$LK,"DOCEf_PAGE_REL_Y",A="FL:::/Kernel/KernelA.HPP,1079"$
 $LK,"IET_IMM_U8",A="FL:::/Kernel/KernelA.HPP,395"$
-$LK,"SC_ALT",A="FL:::/Kernel/KernelA.HPP,3539"$
-$LK,"ARGT_MOFFS8",A="FL:::/Kernel/KernelA.HPP,1891"$
-$LK,"WIf_SELF_CTRLS",A="FL:::/Kernel/KernelA.HPP,1429"$
-$LK,"EXT_NUM_ENTRIES",A="FL:::/Kernel/KernelA.HPP,576"$
+$LK,"SC_ALT",A="FL:::/Kernel/KernelA.HPP,3558"$
+$LK,"ARGT_MOFFS8",A="FL:::/Kernel/KernelA.HPP,1910"$
+$LK,"REGG_STK_TEMP",A="FL:::/Kernel/KernelA.HPP,1790"$
+$LK,"WIf_SELF_CTRLS",A="FL:::/Kernel/KernelA.HPP,1435"$
+$LK,"EXT_NUM_ENTRIES",A="FL:::/Kernel/KernelA.HPP,577"$
 $LK,"DefineMatch",A="FL:::/Kernel/KDefine.CPP.Z,85",BI=531$
-$LK,"CLexHashTableContext",A="FL:::/Kernel/KernelA.HPP,2090"$
-$LK,"RLF_RAW",A="FL:::/Kernel/KernelA.HPP,460"$
+$LK,"CLexHashTableContext",A="FL:::/Kernel/KernelA.HPP,2110"$
+$LK,"RLF_RAW",A="FL:::/Kernel/KernelA.HPP,461"$
 $LK,"WZeroBlks",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,2",BI=532$
 $LK,"ATAPISetMaxSpeed",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,118",BI=533$
 $LK,"StkRep",A="FL:::/Kernel/KDbg.CPP.Z,104",BI=534$
 $LK,"SwapU8",A="FL:::/Kernel/KernelB.HPP,116"$
-$LK,"FUN_SEG_CACHE_STR_LEN",A="FL:::/Kernel/KernelA.HPP,3832"$
-$LK,"DCF_TRANSFORMATION",A="FL:::/Kernel/KernelA.HPP,3603"$
-$LK,"FF_CONTIGUOUS",A="FL:::/Kernel/KernelA.HPP,2755"$
-$LK,"TTS_CONST",A="FL:::/Kernel/KernelA.HPP,3246"$
-$LK,"ISO1T_VOL_DRV_DESC",A="FL:::/Kernel/KernelA.HPP,2457"$
+$LK,"FUN_SEG_CACHE_STR_LEN",A="FL:::/Kernel/KernelA.HPP,3851"$
+$LK,"DCF_TRANSFORMATION",A="FL:::/Kernel/KernelA.HPP,3622"$
+$LK,"FF_CONTIGUOUS",A="FL:::/Kernel/KernelA.HPP,2774"$
+$LK,"TTS_CONST",A="FL:::/Kernel/KernelA.HPP,3265"$
+$LK,"ISO1T_VOL_DRV_DESC",A="FL:::/Kernel/KernelA.HPP,2476"$
 $LK,"SaveExceptRegs",A="FL:::/Kernel/KExcept.CPP.Z,43"$
-$LK,"SC_END",A="FL:::/Kernel/KernelA.HPP,3550"$
-$LK,"CAOTHeapGlbl",A="FL:::/Kernel/KernelA.HPP,1966"$
+$LK,"SC_END",A="FL:::/Kernel/KernelA.HPP,3569"$
+$LK,"CAOTHeapGlbl",A="FL:::/Kernel/KernelA.HPP,1986"$
 $LK,"ArcExpandBuf",A="FL:::/Kernel/Compress.CPP.Z,165",BI=535$
-$LK,"FUf_MAP",A="FL:::/Kernel/KernelA.HPP,2554"$
-$LK,"DOCf_MORE",A="FL:::/Kernel/KernelA.HPP,1300"$
-$LK,"DOCF_MORE",A="FL:::/Kernel/KernelA.HPP,1264"$
+$LK,"FUf_MAP",A="FL:::/Kernel/KernelA.HPP,2573"$
+$LK,"DOCf_MORE",A="FL:::/Kernel/KernelA.HPP,1306"$
+$LK,"DOCF_MORE",A="FL:::/Kernel/KernelA.HPP,1270"$
 $LK,"chars_bmp_non_eol_white_space",A="FL:::/Kernel/StrA.CPP.Z,359"$
-$LK,"CISO1PathEntry",A="FL:::/Kernel/KernelA.HPP,2445"$
-$LK,"REGG_SAVED",A="FL:::/Kernel/KernelA.HPP,1770"$
-$LK,"SF_ARG1",A="FL:::/Kernel/KernelA.HPP,555"$
-$LK,"RLF_VGA",A="FL:::/Kernel/KernelA.HPP,454"$
-$LK,"COLOR_MONO",A="FL:::/Kernel/KernelA.HPP,2948"$
-$LK,"ACD_END_CHAR",A="FL:::/Kernel/KernelA.HPP,1505"$
-$LK,"WIF_FOCUS_TASK_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1419"$
-$LK,"DOCET_INVERT",A="FL:::/Kernel/KernelA.HPP,942"$
-$LK,"SF_ARG2",A="FL:::/Kernel/KernelA.HPP,556"$
-$LK,"SC_SCROLL",A="FL:::/Kernel/KernelA.HPP,3542"$
-$LK,"DISPLAYf_NOT_RAW",A="FL:::/Kernel/KernelA.HPP,3270"$
-$LK,"DOCEt_INVERT",A="FL:::/Kernel/KernelA.HPP,948"$
-$LK,"ATTRf_INVERT",A="FL:::/Kernel/KernelA.HPP,890"$
-$LK,"ATTRF_INVERT",A="FL:::/Kernel/KernelA.HPP,885"$
-$LK,"SF_ARG3",A="FL:::/Kernel/KernelA.HPP,557"$
-$LK,"ACD_PRONUNCIATION_END",A="FL:::/Kernel/KernelA.HPP,1498"$
-$LK,"SF_ARG4",A="FL:::/Kernel/KernelA.HPP,558"$
-$LK,"SF_ARG5",A="FL:::/Kernel/KernelA.HPP,559"$
+$LK,"CISO1PathEntry",A="FL:::/Kernel/KernelA.HPP,2464"$
+$LK,"REGG_SAVED",A="FL:::/Kernel/KernelA.HPP,1789"$
+$LK,"SF_ARG1",A="FL:::/Kernel/KernelA.HPP,556"$
+$LK,"RLF_VGA",A="FL:::/Kernel/KernelA.HPP,455"$
+$LK,"COLOR_MONO",A="FL:::/Kernel/KernelA.HPP,2967"$
+$LK,"ACD_END_CHAR",A="FL:::/Kernel/KernelA.HPP,1511"$
+$LK,"WIF_FOCUS_TASK_IP_WHEEL",A="FL:::/Kernel/KernelA.HPP,1425"$
+$LK,"DOCET_INVERT",A="FL:::/Kernel/KernelA.HPP,944"$
+$LK,"SF_ARG2",A="FL:::/Kernel/KernelA.HPP,557"$
+$LK,"SC_SCROLL",A="FL:::/Kernel/KernelA.HPP,3561"$
+$LK,"DISPLAYf_NOT_RAW",A="FL:::/Kernel/KernelA.HPP,3289"$
+$LK,"DOCEt_INVERT",A="FL:::/Kernel/KernelA.HPP,950"$
+$LK,"ATTRf_INVERT",A="FL:::/Kernel/KernelA.HPP,891"$
+$LK,"ATTRF_INVERT",A="FL:::/Kernel/KernelA.HPP,886"$
+$LK,"SF_ARG3",A="FL:::/Kernel/KernelA.HPP,558"$
+$LK,"ACD_PRONUNCIATION_END",A="FL:::/Kernel/KernelA.HPP,1504"$
+$LK,"SF_ARG4",A="FL:::/Kernel/KernelA.HPP,559"$
+$LK,"SF_ARG5",A="FL:::/Kernel/KernelA.HPP,560"$
 $LK,"ODEF_STARTED",A="FL:::/Kernel/KernelA.HPP,240"$
 $LK,"TaskFocusNext",A="FL:::/Kernel/Sched.CPP.Z,38",BI=536$
 $LK,"Print",A="FL:::/Kernel/StrPrint.CPP.Z,907",BI=537$
-$LK,"SFF_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,3779"$
-$LK,"FUF_RISKY",A="FL:::/Kernel/KernelA.HPP,2578"$
-$LK,"FUf_RISKY",A="FL:::/Kernel/KernelA.HPP,2552"$
-$LK,"CAOTAbsAddr",A="FL:::/Kernel/KernelA.HPP,1953"$
-$LK,"SF_ARG6",A="FL:::/Kernel/KernelA.HPP,560"$
-$LK,"SC_ESC",A="FL:::/Kernel/KernelA.HPP,3533"$
-$LK,"ACD_WORD_CHAR",A="FL:::/Kernel/KernelA.HPP,1506"$
-$LK,"SF_ARG7",A="FL:::/Kernel/KernelA.HPP,561"$
+$LK,"SFF_WHOLE_LABELS_BEFORE",A="FL:::/Kernel/KernelA.HPP,3798"$
+$LK,"FUF_RISKY",A="FL:::/Kernel/KernelA.HPP,2597"$
+$LK,"FUf_RISKY",A="FL:::/Kernel/KernelA.HPP,2571"$
+$LK,"CAOTAbsAddr",A="FL:::/Kernel/KernelA.HPP,1973"$
+$LK,"SF_ARG6",A="FL:::/Kernel/KernelA.HPP,561"$
+$LK,"SC_ESC",A="FL:::/Kernel/KernelA.HPP,3552"$
+$LK,"ACD_WORD_CHAR",A="FL:::/Kernel/KernelA.HPP,1512"$
+$LK,"SF_ARG7",A="FL:::/Kernel/KernelA.HPP,562"$
 $LK,"FAT32DrvValidate",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,48",BI=538$
 $LK,"StrCmp",A="FL:::/Kernel/StrA.CPP.Z,309"$
-$LK,"MSG_RESIZE",A="FL:::/Kernel/KernelA.HPP,3210"$
-$LK,"DOF_INTERCEPT_TASK_END",A="FL:::/Kernel/KernelA.HPP,1206"$
-$LK,"SF_ARG8",A="FL:::/Kernel/KernelA.HPP,562"$
-$LK,"ST_ERR_ST",A="FL:::/Kernel/KernelA.HPP,3495"$
+$LK,"MSG_RESIZE",A="FL:::/Kernel/KernelA.HPP,3229"$
+$LK,"DOF_INTERCEPT_TASK_END",A="FL:::/Kernel/KernelA.HPP,1212"$
+$LK,"SF_ARG8",A="FL:::/Kernel/KernelA.HPP,563"$
+$LK,"ST_ERR_ST",A="FL:::/Kernel/KernelA.HPP,3514"$
 $LK,"BlkDevChk",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,119",BI=539$
-$LK,"MSG_IP_L_UP",A="FL:::/Kernel/KernelA.HPP,3202"$
-$LK,"FSt_REDSEA",A="FL:::/Kernel/KernelA.HPP,2659"$
-$LK,"CPCIDev",A="FL:::/Kernel/KernelA.HPP,2217"$
+$LK,"MSG_IP_L_UP",A="FL:::/Kernel/KernelA.HPP,3221"$
+$LK,"FSt_REDSEA",A="FL:::/Kernel/KernelA.HPP,2678"$
+$LK,"CPCIDev",A="FL:::/Kernel/KernelA.HPP,2236"$
+$LK,"DOCEf_DFT_LEN",A="FL:::/Kernel/KernelA.HPP,1106"$
+$LK,"DOCEF_DFT_LEN",A="FL:::/Kernel/KernelA.HPP,1020"$
 $LK,"RepOutU8",A="FL:::/Kernel/KernelB.HPP,91"$
-$LK,"DOCEF_RIGHT_AUTO",A="FL:::/Kernel/KernelA.HPP,980"$
+$LK,"DOCEF_RIGHT_AUTO",A="FL:::/Kernel/KernelA.HPP,982"$
 $LK,"sys_macro_root",A="FL:::/Kernel/KGlbls.CPP.Z,4"$
-$LK,"VGAP_PALETTE_MASK",A="FL:::/Kernel/KernelA.HPP,3708"$
-$LK,"DOCEf_RIGHT_AUTO",A="FL:::/Kernel/KernelA.HPP,1066"$
-$LK,"NUM_SYS_SEMAS",A="FL:::/Kernel/KernelA.HPP,611"$
+$LK,"VGAP_PALETTE_MASK",A="FL:::/Kernel/KernelA.HPP,3727"$
+$LK,"DOCEf_RIGHT_AUTO",A="FL:::/Kernel/KernelA.HPP,1070"$
+$LK,"NUM_SYS_SEMAS",A="FL:::/Kernel/KernelA.HPP,612"$
 $LK,"ATAPISync",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,501",BI=540$
 $LK,"TO_UPPER",A="FL:::/Kernel/StrA.CPP.Z,110"$
 $LK,"RFLAGG_NORMAL",A="FL:::/Kernel/KernelA.HPP,325"$
-$LK,"KERNEL_MODULE_NAME",A="FL:::/Kernel/KernelA.HPP,712"$
-$LK,"SYS_SEMA_DSK_CACHE",A="FL:::/Kernel/KernelA.HPP,600"$
-$LK,"MEM_PAGE_SIZE",A="FL:::/Kernel/KernelA.HPP,2849"$
+$LK,"KERNEL_MODULE_NAME",A="FL:::/Kernel/KernelA.HPP,713"$
+$LK,"SYS_SEMA_DSK_CACHE",A="FL:::/Kernel/KernelA.HPP,601"$
+$LK,"MEM_PAGE_SIZE",A="FL:::/Kernel/KernelA.HPP,2868"$
 $LK,"SleepUntil",A="FL:::/Kernel/KMisc.CPP.Z,147",BI=541$
 $LK,"Spawn",A="FL:::/Kernel/KTask.CPP.Z,208",BI=542$
-$LK,"CTaskDying",A="FL:::/Kernel/KernelA.HPP,3286"$
-$LK,"MSG_IP_R_D_UP",A="FL:::/Kernel/KernelA.HPP,3208"$
-$LK,"CRedSeaBoot",A="FL:::/Kernel/KernelA.HPP,2299"$
-$LK,"WIF_SELF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,1411"$
+$LK,"CTaskDying",A="FL:::/Kernel/KernelA.HPP,3305"$
+$LK,"MSG_IP_R_D_UP",A="FL:::/Kernel/KernelA.HPP,3227"$
+$LK,"CRedSeaBoot",A="FL:::/Kernel/KernelA.HPP,2318"$
+$LK,"WIF_SELF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,1417"$
 $LK,"SET_GS_BASE",A="FL:::/Kernel/KUtils.CPP.Z,434"$
 $LK,"RFLAGf_VINT_PENDING",A="FL:::/Kernel/KernelA.HPP,321"$
 $LK,"DirEntryDel2",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,26",BI=543$
 $LK,"DefineLoad",A="FL:::/Kernel/KDefine.CPP.Z,1",BI=544$
 $LK,"INT_FAULT_ERR_CODE_BITMAP",A="FL:::/Kernel/KInts.CPP.Z,87"$
-$LK,"ICF_NO_RIP",A="FL:::/Kernel/KernelA.HPP,1600"$
-$LK,"SUF_REM_CTRL_CHARS",A="FL:::/Kernel/KernelA.HPP,3765"$
-$LK,"SC_SHIFT",A="FL:::/Kernel/KernelA.HPP,3537"$
-$LK,"ATA_SET_MAX_EXT",A="FL:::/Kernel/KernelA.HPP,2240"$
+$LK,"ICF_NO_RIP",A="FL:::/Kernel/KernelA.HPP,1614"$
+$LK,"SUF_REM_CTRL_CHARS",A="FL:::/Kernel/KernelA.HPP,3784"$
+$LK,"SC_SHIFT",A="FL:::/Kernel/KernelA.HPP,3556"$
+$LK,"ATA_SET_MAX_EXT",A="FL:::/Kernel/KernelA.HPP,2259"$
 $LK,"StrOcc",A="FL:::/Kernel/StrA.CPP.Z,467",BI=545$
 $LK,"StrCpy",A="FL:::/Kernel/StrA.CPP.Z,321"$
-$LK,"DOCT_INS_BIN",A="FL:::/Kernel/KernelA.HPP,931"$
+$LK,"DOCT_INS_BIN",A="FL:::/Kernel/KernelA.HPP,933"$
 $LK,"StrMatch",A="FL:::/Kernel/StrA.CPP.Z,317"$
 $LK,"FlushMsgs",A="FL:::/Kernel/SerialDev/Message.CPP.Z,87",BI=546$
-$LK,"CMT_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1670"$
-$LK,"RLF_MP",A="FL:::/Kernel/KernelA.HPP,463"$
-$LK,"SC_GUI",A="FL:::/Kernel/KernelA.HPP,3566"$
-$LK,"RLF_INTERRUPTS",A="FL:::/Kernel/KernelA.HPP,461"$
+$LK,"CMT_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1688"$
+$LK,"RLF_MP",A="FL:::/Kernel/KernelA.HPP,464"$
+$LK,"SC_GUI",A="FL:::/Kernel/KernelA.HPP,3585"$
+$LK,"RLF_INTERRUPTS",A="FL:::/Kernel/KernelA.HPP,462"$
 $LK,"StrLen",A="FL:::/Kernel/KernelB.HPP,60"$
-$LK,"ATA_READ_NATIVE_MAX",A="FL:::/Kernel/KernelA.HPP,2237"$
-$LK,"PUSH_C_REGS",A="FL:::/Kernel/KernelA.HPP,1745"$
-$LK,"IEF_REX_XOR_LIKE",A="FL:::/Kernel/KernelA.HPP,1714"$
-$LK,"WIf_SELF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,1437"$
-$LK,"RLf_INTERRUPTS",A="FL:::/Kernel/KernelA.HPP,442"$
+$LK,"ATA_READ_NATIVE_MAX",A="FL:::/Kernel/KernelA.HPP,2256"$
+$LK,"PUSH_C_REGS",A="FL:::/Kernel/KernelA.HPP,1763"$
+$LK,"IEF_REX_XOR_LIKE",A="FL:::/Kernel/KernelA.HPP,1732"$
+$LK,"WIf_SELF_KEY_DESC",A="FL:::/Kernel/KernelA.HPP,1443"$
+$LK,"RLf_INTERRUPTS",A="FL:::/Kernel/KernelA.HPP,443"$
 $LK,"ISO1DateStruct2CDate",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,74",BI=547$
-$LK,"RLF_REGISTRY",A="FL:::/Kernel/KernelA.HPP,467"$
-$LK,"RLf_REGISTRY",A="FL:::/Kernel/KernelA.HPP,448"$
-$LK,"SC_INS",A="FL:::/Kernel/KernelA.HPP,3551"$
-$LK,"TK_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,2084"$
-$LK,"RT_NUM_IT",A="FL:::/Kernel/KernelA.HPP,1558"$
+$LK,"RLF_REGISTRY",A="FL:::/Kernel/KernelA.HPP,468"$
+$LK,"RLf_REGISTRY",A="FL:::/Kernel/KernelA.HPP,449"$
+$LK,"SC_INS",A="FL:::/Kernel/KernelA.HPP,3570"$
+$LK,"TK_DOT_DOT",A="FL:::/Kernel/KernelA.HPP,2104"$
+$LK,"RT_NUM_IT",A="FL:::/Kernel/KernelA.HPP,1564"$
 $LK,"AbsI64",A="FL:::/Kernel/KernelB.HPP,96"$
-$LK,"SC_TAB",A="FL:::/Kernel/KernelA.HPP,3535"$
+$LK,"SC_TAB",A="FL:::/Kernel/KernelA.HPP,3554"$
 $LK,"SPF_DECIMAL",A="FL:::/Kernel/StrPrint.CPP.Z,9"$
-$LK,"IOAPICVER",A="FL:::/Kernel/KernelA.HPP,509"$
-$LK,"LAPIC_LVT_TIMER",A="FL:::/Kernel/KernelA.HPP,494"$
+$LK,"IOAPICVER",A="FL:::/Kernel/KernelA.HPP,510"$
+$LK,"LAPIC_LVT_TIMER",A="FL:::/Kernel/KernelA.HPP,495"$
 $LK,"sys_mem_init_flag",A="FL:::/Kernel/KernelB.HPP,189"$
-$LK,"RWF_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3572"$
-$LK,"DISPLAYf_CHILDREN_NOT_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3274"$
+$LK,"RWF_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,3591"$
+$LK,"DISPLAYf_CHILDREN_NOT_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3293"$
 $LK,"RedSeaFmt",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,94",BI=548$
 $LK,"sys_var_init_flag",A="FL:::/Kernel/KernelB.HPP,191"$
-$LK,"IOAPIC_DATA",A="FL:::/Kernel/KernelA.HPP,506"$
+$LK,"IOAPIC_DATA",A="FL:::/Kernel/KernelA.HPP,507"$
 $LK,"SysGetStr2",A="FL:::/Kernel/KDbg.CPP.Z,337",BI=549$
 $LK,"fp_getstr2",A="FL:::/Kernel/KGlbls.CPP.Z,31"$
 $LK,"KDRawPutKey",A="FL:::/Kernel/KeyDev.CPP.Z,86",BI=550$
-$LK,"DOCF_SUBSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1281"$
+$LK,"DOCF_SUBSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1287"$
 $LK,"Dos2CDate",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,9",BI=551$
 $LK,"ATABlkSelect",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,1",BI=552$
 $LK,"SYS_START_CR0",A="FL:::/Kernel/KernelA.HPP,303"$
 $LK,"QSortI64",A="FL:::/Kernel/QSort.CPP.Z,1",BI=553$
 $LK,"RawPrint",A="FL:::/Kernel/KDbg.CPP.Z,217",BI=554$
-$LK,"CTextGlbls",A="FL:::/Kernel/KernelA.HPP,3577"$
-$LK,"CDevGlbls",A="FL:::/Kernel/KernelA.HPP,2893"$
+$LK,"CTextGlbls",A="FL:::/Kernel/KernelA.HPP,3596"$
+$LK,"CDevGlbls",A="FL:::/Kernel/KernelA.HPP,2912"$
 $LK,"chars_bmp_zero_cr_nl_cursor",A="FL:::/Kernel/StrA.CPP.Z,362"$
 $LK,"AreYouSure",A="FL:::/Kernel/StrB.CPP.Z,109",BI=555$
 $LK,"C:/Doc/D3.TXT.Z",A="FL:::/Kernel/KernelB.HPP,146"$
-$LK,"DOCf_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,1316"$
-$LK,"DOCF_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,1279"$
+$LK,"DOCf_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,1322"$
+$LK,"DOCF_IN_DOLLAR",A="FL:::/Kernel/KernelA.HPP,1285"$
 $LK,"_REP_IN_U16",A="FL:::/Kernel/KUtils.CPP.Z,264"$
 $LK,"_REP_IN_U32",A="FL:::/Kernel/KUtils.CPP.Z,253"$
-$LK,"CH_FORM_FEED",A="FL:::/Kernel/KernelA.HPP,3489"$
-$LK,"MP_VECT_ADDR",A="FL:::/Kernel/KernelA.HPP,502"$
+$LK,"CH_FORM_FEED",A="FL:::/Kernel/KernelA.HPP,3508"$
+$LK,"MP_VECT_ADDR",A="FL:::/Kernel/KernelA.HPP,503"$
 $LK,"I_WAKE",A="FL:::/Kernel/KernelA.HPP,293"$
 $LK,"Yield",A="FL:::/Kernel/Sched.CPP.Z,295"$
-$LK,"CKeyDevGlbls",A="FL:::/Kernel/KernelA.HPP,3797"$
-$LK,"MRT_DEV",A="FL:::/Kernel/KernelA.HPP,2838"$
-$LK,"CBlkDevGlbls",A="FL:::/Kernel/KernelA.HPP,2728"$
-$LK,"CMBRPrt",A="FL:::/Kernel/KernelA.HPP,2278"$
+$LK,"CKeyDevGlbls",A="FL:::/Kernel/KernelA.HPP,3816"$
+$LK,"MRT_DEV",A="FL:::/Kernel/KernelA.HPP,2857"$
+$LK,"CBlkDevGlbls",A="FL:::/Kernel/KernelA.HPP,2747"$
+$LK,"CMBRPrt",A="FL:::/Kernel/KernelA.HPP,2297"$
 $LK,"StrNew",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,446",BI=556$
-$LK,"HTT_GLBL_VAR",A="FL:::/Kernel/KernelA.HPP,681"$
-$LK,"HTt_GLBL_VAR",A="FL:::/Kernel/KernelA.HPP,651"$
-$LK,"REGG_C_CLOBBERED",A="FL:::/Kernel/KernelA.HPP,1769"$
-$LK,"WIF_FOCUS_TASK_IP_L_D",A="FL:::/Kernel/KernelA.HPP,1416"$
-$LK,"HTT_HELP_FILE",A="FL:::/Kernel/KernelA.HPP,693"$
-$LK,"HTt_HELP_FILE",A="FL:::/Kernel/KernelA.HPP,663"$
+$LK,"HTT_GLBL_VAR",A="FL:::/Kernel/KernelA.HPP,682"$
+$LK,"HTt_GLBL_VAR",A="FL:::/Kernel/KernelA.HPP,652"$
+$LK,"WIF_FOCUS_TASK_IP_L_D",A="FL:::/Kernel/KernelA.HPP,1422"$
+$LK,"HTT_HELP_FILE",A="FL:::/Kernel/KernelA.HPP,694"$
+$LK,"HTt_HELP_FILE",A="FL:::/Kernel/KernelA.HPP,664"$
 $LK,"Round",A="FL:::/Kernel/KernelB.HPP,140"$
 $LK,"TaskRstAwaitingMsg",A="FL:::/Kernel/SrvCmd.CPP.Z,25",BI=557$
-$LK,"MSG_IP_L_D_DOWN",A="FL:::/Kernel/KernelA.HPP,3203"$
-$LK,"ATAR0_STAT",A="FL:::/Kernel/KernelA.HPP,2260"$
-$LK,"DOC_COLOR_PMT",A="FL:::/Kernel/KernelA.HPP,1130"$
-$LK,"HPET_GEN_CONF",A="FL:::/Kernel/KernelA.HPP,530"$
+$LK,"MSG_IP_L_D_DOWN",A="FL:::/Kernel/KernelA.HPP,3222"$
+$LK,"ATAR0_STAT",A="FL:::/Kernel/KernelA.HPP,2279"$
+$LK,"DOC_COLOR_PMT",A="FL:::/Kernel/KernelA.HPP,1136"$
+$LK,"HPET_GEN_CONF",A="FL:::/Kernel/KernelA.HPP,531"$
 $LK,"MPHalt",A="FL:::/Kernel/MultiProc.CPP.Z,164",BI=558$
 $LK,"UnusedStk",A="FL:::/Kernel/KDbg.CPP.Z,46",BI=559$
 $LK,"DirEntryCompareName",A="FL:::/Kernel/BlkDev/DskDirA.CPP.Z,62",BI=560$
 $LK,"BFieldExtU32",A="FL:::/Kernel/KernelB.HPP,30"$
-$LK,"DOCf_SUBSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1318"$
-$LK,"ATAS_DF",A="FL:::/Kernel/KernelA.HPP,2249"$
-$LK,"ROPBF_PROBABILITY_DITHER",A="FL:::/Kernel/KernelA.HPP,2911"$
+$LK,"DOCf_SUBSCRIPT_MODE",A="FL:::/Kernel/KernelA.HPP,1324"$
+$LK,"ATAS_DF",A="FL:::/Kernel/KernelA.HPP,2268"$
+$LK,"ROPBF_PROBABILITY_DITHER",A="FL:::/Kernel/KernelA.HPP,2930"$
 $LK,"StrScan",A="FL:::/Kernel/StrScan.CPP.Z,212",BI=561$
 $LK,"CONSERVATIVE_16MEG_SIZE",A="FL:::/Kernel/Mem/PageTables.CPP.Z,123"$
-$LK,"ICF_PREVIOUS_DELETED",A="FL:::/Kernel/KernelA.HPP,1602"$
-$LK,"ACD_DEF_FILENAME_Z",A="FL:::/Kernel/KernelA.HPP,1491"$
+$LK,"ICF_PREVIOUS_DELETED",A="FL:::/Kernel/KernelA.HPP,1616"$
+$LK,"ACD_DEF_FILENAME_Z",A="FL:::/Kernel/KernelA.HPP,1497"$
 $LK,"ATARepFind",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,194",BI=562$
 $LK,"QSort2a",A="FL:::/Kernel/QSort.CPP.Z,32",BI=563$
 $LK,"num_lock_map",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,179"$
 $LK,"QSort2b",A="FL:::/Kernel/QSort.CPP.Z,55",BI=564$
-$LK,"KDF_HAS_DESCS",A="FL:::/Kernel/KernelA.HPP,3788"$
-$LK,"CBlkPool",A="FL:::/Kernel/KernelA.HPP,2865"$
-$LK,"SC_NUM",A="FL:::/Kernel/KernelA.HPP,3541"$
-$LK,"MSG_IP_R_UP",A="FL:::/Kernel/KernelA.HPP,3206"$
-$LK,"IEF_DONT_SWITCH_MODES",A="FL:::/Kernel/KernelA.HPP,1709"$
+$LK,"KDF_HAS_DESCS",A="FL:::/Kernel/KernelA.HPP,3807"$
+$LK,"CBlkPool",A="FL:::/Kernel/KernelA.HPP,2884"$
+$LK,"SC_NUM",A="FL:::/Kernel/KernelA.HPP,3560"$
+$LK,"MSG_IP_R_UP",A="FL:::/Kernel/KernelA.HPP,3225"$
+$LK,"IEF_DONT_SWITCH_MODES",A="FL:::/Kernel/KernelA.HPP,1727"$
 $LK,"I_TIMER",A="FL:::/Kernel/KernelA.HPP,290"$
 $LK,"IRQ_TIMER",A="FL:::/Kernel/KInts.CPP.Z,12"$
-$LK,"DOC_COLOR_TREE",A="FL:::/Kernel/KernelA.HPP,1129"$
-$LK,"DOCEf_HAS_BIN",A="FL:::/Kernel/KernelA.HPP,1054"$
-$LK,"DOCEF_HAS_BIN",A="FL:::/Kernel/KernelA.HPP,968"$
+$LK,"DOC_COLOR_TREE",A="FL:::/Kernel/KernelA.HPP,1135"$
+$LK,"DOCEf_HAS_BIN",A="FL:::/Kernel/KernelA.HPP,1058"$
+$LK,"DOCEF_HAS_BIN",A="FL:::/Kernel/KernelA.HPP,970"$
 $LK,"SYS_BOOT_BASE",A="FL:::/Kernel/KStart.CPP.Z,31"$
-$LK,"VGAP_CRTC_INDEX",A="FL:::/Kernel/KernelA.HPP,3712"$
+$LK,"VGAP_CRTC_INDEX",A="FL:::/Kernel/KernelA.HPP,3731"$
 $LK,"BlkDevNextFree",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,88",BI=565$
-$LK,"SFF_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,3780"$
-$LK,"CDIR_FILENAME_LEN",A="FL:::/Kernel/KernelA.HPP,2528"$
+$LK,"SFF_WHOLE_LABELS_AFTER",A="FL:::/Kernel/KernelA.HPP,3799"$
+$LK,"CDIR_FILENAME_LEN",A="FL:::/Kernel/KernelA.HPP,2547"$
 $LK,"CFifoI64",A="FL:::/Kernel/KernelA.HPP,174"$
 $LK,"PCIReadU32",A="FL:::/Kernel/PCIBIOS.CPP.Z,201",BI=566$
 $LK,"PCIReadU16",A="FL:::/Kernel/PCIBIOS.CPP.Z,182",BI=567$
 $LK,"YearStartDate",A="FL:::/Kernel/KDate.CPP.Z,8",BI=568$
-$LK,"ACD_H1_END",A="FL:::/Kernel/KernelA.HPP,1494"$
+$LK,"ACD_H1_END",A="FL:::/Kernel/KernelA.HPP,1500"$
 $LK,"_REP_IN_U8",A="FL:::/Kernel/KUtils.CPP.Z,275"$
 $LK,"SHIFT_KEY_SCAN_DECODE_TABLE",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,9"$
-$LK,"DOCF_BREAK_UNLOCKED",A="FL:::/Kernel/KernelA.HPP,1269"$
-$LK,"REG_UNDEF",A="FL:::/Kernel/KernelA.HPP,1767"$
+$LK,"DOCF_BREAK_UNLOCKED",A="FL:::/Kernel/KernelA.HPP,1275"$
+$LK,"REG_UNDEF",A="FL:::/Kernel/KernelA.HPP,1786"$
 $LK,"VGAFlush",A="FL:::/Kernel/Display.CPP.Z,88",BI=569$
-$LK,"FILEMASK_AOT",A="FL:::/Kernel/KernelA.HPP,2266"$
+$LK,"FILEMASK_AOT",A="FL:::/Kernel/KernelA.HPP,2285"$
 $LK,"SysDbg",A="FL:::/Kernel/KMisc.CPP.Z,233",BI=570$
 $LK,"FramePtrAdd",A="FL:::/Kernel/KHashB.CPP.Z,225",BI=571$
-$LK,"DCF_SCREEN_BITMAP",A="FL:::/Kernel/KernelA.HPP,3615"$
-$LK,"FF_NEEDS_WRITE",A="FL:::/Kernel/KernelA.HPP,2754"$
-$LK,"WIF_FOCUS_TASK_IP_R_D",A="FL:::/Kernel/KernelA.HPP,1418"$
-$LK,"DOCF_DBL_DOLLARS",A="FL:::/Kernel/KernelA.HPP,1252"$
-$LK,"LAPIC_APIC_ID",A="FL:::/Kernel/KernelA.HPP,475"$
+$LK,"DCF_SCREEN_BITMAP",A="FL:::/Kernel/KernelA.HPP,3634"$
+$LK,"FF_NEEDS_WRITE",A="FL:::/Kernel/KernelA.HPP,2773"$
+$LK,"WIF_FOCUS_TASK_IP_R_D",A="FL:::/Kernel/KernelA.HPP,1424"$
+$LK,"DOCF_DBL_DOLLARS",A="FL:::/Kernel/KernelA.HPP,1258"$
+$LK,"LAPIC_APIC_ID",A="FL:::/Kernel/KernelA.HPP,476"$
 $LK,"MPrintTime",A="FL:::/Kernel/StrPrint.CPP.Z,55",BI=572$
 $LK,"CatPrint",A="FL:::/Kernel/StrPrint.CPP.Z,898",BI=573$
-$LK,"TK_CHAR_CONST",A="FL:::/Kernel/KernelA.HPP,2052"$
-$LK,"TASKf_AWAITING_MSG",A="FL:::/Kernel/KernelA.HPP,3261"$
-$LK,"ICF_A1_TO_INT",A="FL:::/Kernel/KernelA.HPP,1575"$
-$LK,"TY_RIP_DISP32_IMPORT",A="FL:::/Kernel/KernelA.HPP,1568"$
-$LK,"DOCf_DBL_DOLLARS",A="FL:::/Kernel/KernelA.HPP,1288"$
-$LK,"EDF_UNCOLLAPSE",A="FL:::/Kernel/KernelA.HPP,1238"$
-$LK,"DOCEG_HAS_ALLOC",A="FL:::/Kernel/KernelA.HPP,1019"$
-$LK,"CHashSrcSym",A="FL:::/Kernel/KernelA.HPP,720"$
+$LK,"TK_CHAR_CONST",A="FL:::/Kernel/KernelA.HPP,2072"$
+$LK,"TASKf_AWAITING_MSG",A="FL:::/Kernel/KernelA.HPP,3280"$
+$LK,"ICF_A1_TO_INT",A="FL:::/Kernel/KernelA.HPP,1590"$
+$LK,"DOCf_DBL_DOLLARS",A="FL:::/Kernel/KernelA.HPP,1294"$
+$LK,"EDF_UNCOLLAPSE",A="FL:::/Kernel/KernelA.HPP,1244"$
+$LK,"DOCEG_HAS_ALLOC",A="FL:::/Kernel/KernelA.HPP,1023"$
+$LK,"CHashSrcSym",A="FL:::/Kernel/KernelA.HPP,721"$
 $LK,"HashPublic",A="FL:::/Kernel/KHashB.CPP.Z,170",BI=574$
-$LK,"HEAP_CTRL_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2878"$
-$LK,"EDf_UNCOLLAPSE",A="FL:::/Kernel/KernelA.HPP,1244"$
-$LK,"CDocSettings",A="FL:::/Kernel/KernelA.HPP,1137"$
+$LK,"HEAP_CTRL_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2897"$
+$LK,"EDf_UNCOLLAPSE",A="FL:::/Kernel/KernelA.HPP,1250"$
+$LK,"CDocSettings",A="FL:::/Kernel/KernelA.HPP,1143"$
 $LK,"BlkDevInit",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,31",BI=575$
-$LK,"CTaskStk",A="FL:::/Kernel/KernelA.HPP,3278"$
-$LK,"CWinMgrTimingGlbls",A="FL:::/Kernel/KernelA.HPP,1448"$
-$LK,"FAT32_ENTRIES_PER_BLK",A="FL:::/Kernel/KernelA.HPP,2384"$
+$LK,"CTaskStk",A="FL:::/Kernel/KernelA.HPP,3297"$
+$LK,"CWinMgrTimingGlbls",A="FL:::/Kernel/KernelA.HPP,1454"$
+$LK,"FAT32_ENTRIES_PER_BLK",A="FL:::/Kernel/KernelA.HPP,2403"$
 $LK,"ATARBlks",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,442",BI=576$
-$LK,"GVF_ALIAS",A="FL:::/Kernel/KernelA.HPP,865"$
-$LK,"CTaskSettings",A="FL:::/Kernel/KernelA.HPP,3221"$
-$LK,"IEF_ENDING_ZERO",A="FL:::/Kernel/KernelA.HPP,1716"$
+$LK,"GVF_ALIAS",A="FL:::/Kernel/KernelA.HPP,866"$
+$LK,"CTaskSettings",A="FL:::/Kernel/KernelA.HPP,3240"$
+$LK,"IEF_ENDING_ZERO",A="FL:::/Kernel/KernelA.HPP,1734"$
 $LK,"PUT_CHARS",A="FL:::/Kernel/StrA.CPP.Z,51"$
 $LK,"CMemE820",A="FL:::/Kernel/KernelA.HPP,356"$
 $LK,"ATAGetResult",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,67",BI=577$
-$LK,"FILEMASK_GRA",A="FL:::/Kernel/KernelA.HPP,2269"$
-$LK,"ATAS_DRQ",A="FL:::/Kernel/KernelA.HPP,2248"$
-$LK,"DOCF_BORDER_DOC",A="FL:::/Kernel/KernelA.HPP,1255"$
+$LK,"FILEMASK_GRA",A="FL:::/Kernel/KernelA.HPP,2288"$
+$LK,"ATAS_DRQ",A="FL:::/Kernel/KernelA.HPP,2267"$
+$LK,"DOCF_BORDER_DOC",A="FL:::/Kernel/KernelA.HPP,1261"$
 $LK,"DrvEnable",A="FL:::/Kernel/BlkDev/DskAddDev.CPP.Z,151",BI=578$
 $LK,"BlkDevLock",A="FL:::/Kernel/BlkDev/DskBlkDev.CPP.Z,1",BI=579$
-$LK,"BDT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,2610"$
-$LK,"DOCf_BORDER_DOC",A="FL:::/Kernel/KernelA.HPP,1291"$
-$LK,"MRT_RAM",A="FL:::/Kernel/KernelA.HPP,2837"$
-$LK,"FSt_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,2666"$
-$LK,"ATAS_BSY",A="FL:::/Kernel/KernelA.HPP,2251"$
-$LK,"DOCf_SELECTED",A="FL:::/Kernel/KernelA.HPP,1312"$
-$LK,"DOCF_SELECTED",A="FL:::/Kernel/KernelA.HPP,1275"$
-$LK,"HTt_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,665"$
-$LK,"ICF_R_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1588"$
-$LK,"DOCf_BREAK_UNLOCKED",A="FL:::/Kernel/KernelA.HPP,1305"$
+$LK,"BDT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,2629"$
+$LK,"DOCf_BORDER_DOC",A="FL:::/Kernel/KernelA.HPP,1297"$
+$LK,"MRT_RAM",A="FL:::/Kernel/KernelA.HPP,2856"$
+$LK,"FSt_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,2685"$
+$LK,"ATAS_BSY",A="FL:::/Kernel/KernelA.HPP,2270"$
+$LK,"DOCf_SELECTED",A="FL:::/Kernel/KernelA.HPP,1318"$
+$LK,"DOCF_SELECTED",A="FL:::/Kernel/KernelA.HPP,1281"$
+$LK,"HTt_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,666"$
+$LK,"ICF_R_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1602"$
+$LK,"DOCf_BREAK_UNLOCKED",A="FL:::/Kernel/KernelA.HPP,1311"$
 $LK,"sys_mem_init_val",A="FL:::/Kernel/KernelB.HPP,190"$
-$LK,"SYS_SEMA_FORCE_WINMGR",A="FL:::/Kernel/KernelA.HPP,607"$
-$LK,"ATAS_ERR",A="FL:::/Kernel/KernelA.HPP,2247"$
+$LK,"SYS_SEMA_FORCE_WINMGR",A="FL:::/Kernel/KernelA.HPP,608"$
+$LK,"ATAS_ERR",A="FL:::/Kernel/KernelA.HPP,2266"$
 $LK,"Struct2Date",A="FL:::/Kernel/KDate.CPP.Z,14",BI=580$
-$LK,"ISO1T_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,2458"$
-$LK,"SF_RBP",A="FL:::/Kernel/KernelA.HPP,553"$
+$LK,"ISO1T_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,2477"$
+$LK,"SF_RBP",A="FL:::/Kernel/KernelA.HPP,554"$
 $LK,"SYS_MP_CNT",A="FL:::/Kernel/KStart.CPP.Z,224"$
-$LK,"CMF_U8_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1678"$
-$LK,"CMF_I8_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1677"$
+$LK,"CMF_U8_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1696"$
+$LK,"CMF_I8_JMP_TABLE",A="FL:::/Kernel/KernelA.HPP,1695"$
 $LK,"EdLiteUpdate",A="FL:::/Kernel/EdLite.CPP.Z,7",BI=581$
 $LK,"_ARC_ENTRY_GET",A="FL:::/Kernel/Compress.CPP.Z,43"$
-$LK,"DOCT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,938"$
+$LK,"DOCT_NUM_TYPES",A="FL:::/Kernel/KernelA.HPP,940"$
 $LK,"SYS_CTRL_ALT_FLAGS",A="FL:::/Kernel/KStart.CPP.Z,201"$
-$LK,"BOOT_RAM_BASE",A="FL:::/Kernel/KernelA.HPP,3858"$
-$LK,"MT_DVD",A="FL:::/Kernel/KernelA.HPP,2520"$
-$LK,"DOCEf_SELECTED",A="FL:::/Kernel/KernelA.HPP,1041"$
-$LK,"DOCEF_SELECTED",A="FL:::/Kernel/KernelA.HPP,1035"$
-$LK,"DOCEt_SELECTED",A="FL:::/Kernel/KernelA.HPP,949"$
-$LK,"DOCET_SELECTED",A="FL:::/Kernel/KernelA.HPP,943"$
-$LK,"ATTRF_SELECTED",A="FL:::/Kernel/KernelA.HPP,886"$
+$LK,"BOOT_RAM_BASE",A="FL:::/Kernel/KernelA.HPP,3877"$
+$LK,"MT_DVD",A="FL:::/Kernel/KernelA.HPP,2539"$
+$LK,"DOCEf_SELECTED",A="FL:::/Kernel/KernelA.HPP,1045"$
+$LK,"DOCEF_SELECTED",A="FL:::/Kernel/KernelA.HPP,1039"$
+$LK,"DOCEt_SELECTED",A="FL:::/Kernel/KernelA.HPP,951"$
+$LK,"DOCET_SELECTED",A="FL:::/Kernel/KernelA.HPP,945"$
+$LK,"ATTRF_SELECTED",A="FL:::/Kernel/KernelA.HPP,887"$
 $LK,"FramePtrDel",A="FL:::/Kernel/KHashB.CPP.Z,240",BI=582$
 $LK,"chars_bmp_filename",A="FL:::/Kernel/StrA.CPP.Z,345"$
-$LK,"ICF_A2_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1590"$
-$LK,"ATTRf_SELECTED",A="FL:::/Kernel/KernelA.HPP,891"$
-$LK,"FILEMASK_JIT",A="FL:::/Kernel/KernelA.HPP,2265"$
-$LK,"ATAS_DRDY",A="FL:::/Kernel/KernelA.HPP,2250"$
-$LK,"ARGT_AL",A="FL:::/Kernel/KernelA.HPP,1896"$
-$LK,"CIntermediateCodeBase",A="FL:::/Kernel/KernelA.HPP,1624"$
-$LK,"CAutoCompleteDictGlbls",A="FL:::/Kernel/KernelA.HPP,1513"$
+$LK,"CICType",A="FL:::/Kernel/KernelA.HPP,1624"$
+$LK,"ICF_A2_WAS_STK",A="FL:::/Kernel/KernelA.HPP,1604"$
+$LK,"ATTRf_SELECTED",A="FL:::/Kernel/KernelA.HPP,892"$
+$LK,"FILEMASK_JIT",A="FL:::/Kernel/KernelA.HPP,2284"$
+$LK,"ATAS_DRDY",A="FL:::/Kernel/KernelA.HPP,2269"$
+$LK,"ARGT_AL",A="FL:::/Kernel/KernelA.HPP,1915"$
+$LK,"CIntermediateCodeBase",A="FL:::/Kernel/KernelA.HPP,1644"$
+$LK,"CAutoCompleteDictGlbls",A="FL:::/Kernel/KernelA.HPP,1519"$
 $LK,"SYS_CODE_BP",A="FL:::/Kernel/KStart.CPP.Z,204"$
 $LK,"WClusters",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,129",BI=583$
 $LK,"LXchgI64",A="FL:::/Kernel/KernelB.HPP,259"$
-$LK,"MSG_KEY_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3213"$
-$LK,"TASKf_NONTIMER_RAND",A="FL:::/Kernel/KernelA.HPP,3266"$
-$LK,"ARGT_CL",A="FL:::/Kernel/KernelA.HPP,1901"$
-$LK,"ARGT_M8",A="FL:::/Kernel/KernelA.HPP,1881"$
+$LK,"MSG_KEY_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3232"$
+$LK,"TASKf_NONTIMER_RAND",A="FL:::/Kernel/KernelA.HPP,3285"$
+$LK,"ARGT_CL",A="FL:::/Kernel/KernelA.HPP,1920"$
+$LK,"ARGT_M8",A="FL:::/Kernel/KernelA.HPP,1900"$
 $LK,"ChkOnStk",A="FL:::/Kernel/KDbg.CPP.Z,31",BI=584$
 $LK,"TaskQueInsChild",A="FL:::/Kernel/Sched.CPP.Z,325",BI=585$
-$LK,"TK_F64",A="FL:::/Kernel/KernelA.HPP,2053"$
-$LK,"RLF_BOOT_HEAP",A="FL:::/Kernel/KernelA.HPP,458"$
-$LK,"RLf_BOOT_HEAP",A="FL:::/Kernel/KernelA.HPP,439"$
+$LK,"TK_F64",A="FL:::/Kernel/KernelA.HPP,2073"$
+$LK,"RLF_BOOT_HEAP",A="FL:::/Kernel/KernelA.HPP,459"$
+$LK,"RLf_BOOT_HEAP",A="FL:::/Kernel/KernelA.HPP,440"$
 $LK,"I_USER",A="FL:::/Kernel/KernelA.HPP,299"$
 $LK,"FAT32CDirFill",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,226",BI=586$
 $LK,"BlkPoolAdd",A="FL:::/Kernel/Mem/BlkPool.CPP.Z,1",BI=587$
 $LK,"sys_task_being_screen_updated",A="FL:::/Kernel/KGlbls.CPP.Z,11"$
-$LK,"TK_INTEGER",A="FL:::/Kernel/KernelA.HPP,2051"$
-$LK,"TK_NORMALSCRIPT",A="FL:::/Kernel/KernelA.HPP,2048"$
-$LK,"SF_RIP",A="FL:::/Kernel/KernelA.HPP,554"$
-$LK,"IOAPIC_REG",A="FL:::/Kernel/KernelA.HPP,505"$
+$LK,"TK_NORMALSCRIPT",A="FL:::/Kernel/KernelA.HPP,2068"$
+$LK,"SF_RIP",A="FL:::/Kernel/KernelA.HPP,555"$
+$LK,"IOAPIC_REG",A="FL:::/Kernel/KernelA.HPP,506"$
 $LK,"Complex",A="FL:::/Kernel/KernelA.HPP,114"$
 $LK,"Trunc",A="FL:::/Kernel/KernelB.HPP,142"$
-$LK,"ROPB_EQU",A="FL:::/Kernel/KernelA.HPP,2904"$
-$LK,"HTf_IMM",A="FL:::/Kernel/KernelA.HPP,671"$
+$LK,"ROPB_EQU",A="FL:::/Kernel/KernelA.HPP,2923"$
+$LK,"HTf_IMM",A="FL:::/Kernel/KernelA.HPP,672"$
 $LK,"sys_pci_services",A="FL:::/Kernel/PCIBIOS.CPP.Z,159"$
-$LK,"CStreamBlk",A="FL:::/Kernel/KernelA.HPP,1987"$
-$LK,"ARGT_M32",A="FL:::/Kernel/KernelA.HPP,1883"$
-$LK,"ARGT_M16",A="FL:::/Kernel/KernelA.HPP,1882"$
-$LK,"MEM_EXTRA_HASH2_PAGES",A="FL:::/Kernel/KernelA.HPP,2854"$
-$LK,"ARGT_CS",A="FL:::/Kernel/KernelA.HPP,1911"$
-$LK,"ICF_R_TO_F64",A="FL:::/Kernel/KernelA.HPP,1572"$
-$LK,"DOC_COLOR_QUOTE",A="FL:::/Kernel/KernelA.HPP,1135"$
-$LK,"DOCSS_DBL_QUOTE",A="FL:::/Kernel/KernelA.HPP,1120"$
+$LK,"CStreamBlk",A="FL:::/Kernel/KernelA.HPP,2007"$
+$LK,"ARGT_M32",A="FL:::/Kernel/KernelA.HPP,1902"$
+$LK,"ARGT_M16",A="FL:::/Kernel/KernelA.HPP,1901"$
+$LK,"MEM_EXTRA_HASH2_PAGES",A="FL:::/Kernel/KernelA.HPP,2873"$
+$LK,"ARGT_CS",A="FL:::/Kernel/KernelA.HPP,1930"$
+$LK,"ICF_R_TO_F64",A="FL:::/Kernel/KernelA.HPP,1587"$
+$LK,"DOC_COLOR_QUOTE",A="FL:::/Kernel/KernelA.HPP,1141"$
+$LK,"DOCSS_DBL_QUOTE",A="FL:::/Kernel/KernelA.HPP,1126"$
 $LK,"SYS_PCI_SERVICES",A="FL:::/Kernel/PCIBIOS.CPP.Z,5"$
 $LK,"_STRCMP",A="FL:::/Kernel/StrA.CPP.Z,86"$
-$LK,"ARGT_AX",A="FL:::/Kernel/KernelA.HPP,1897"$
-$LK,"LAPIC_PROCESSOR_PRIORITY",A="FL:::/Kernel/KernelA.HPP,479"$
+$LK,"ARGT_AX",A="FL:::/Kernel/KernelA.HPP,1916"$
+$LK,"LAPIC_PROCESSOR_PRIORITY",A="FL:::/Kernel/KernelA.HPP,480"$
 $LK,"Core0Init",A="FL:::/Kernel/MultiProc.CPP.Z,355",BI=588$
-$LK,"ARGT_DS",A="FL:::/Kernel/KernelA.HPP,1906"$
-$LK,"ARGT_R8",A="FL:::/Kernel/KernelA.HPP,1871"$
+$LK,"ARGT_DS",A="FL:::/Kernel/KernelA.HPP,1925"$
+$LK,"ARGT_R8",A="FL:::/Kernel/KernelA.HPP,1890"$
 $LK,"AStrNew",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,461",BI=589$
-$LK,"ARGT_ES",A="FL:::/Kernel/KernelA.HPP,1907"$
-$LK,"ICF_A2_TO_F64",A="FL:::/Kernel/KernelA.HPP,1576"$
-$LK,"DOCF_PLAIN_TEXT_TABS",A="FL:::/Kernel/KernelA.HPP,1249"$
-$LK,"Cf_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,826"$
+$LK,"ARGT_ES",A="FL:::/Kernel/KernelA.HPP,1926"$
+$LK,"ICF_A2_TO_F64",A="FL:::/Kernel/KernelA.HPP,1591"$
+$LK,"DOCF_PLAIN_TEXT_TABS",A="FL:::/Kernel/KernelA.HPP,1255"$
+$LK,"Cf_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,827"$
 $LK,"FAT32DrvInit",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,22",BI=590$
-$LK,"DOCT_ANCHOR",A="FL:::/Kernel/KernelA.HPP,920"$
+$LK,"DOCT_ANCHOR",A="FL:::/Kernel/KernelA.HPP,922"$
 $LK,"KbdPktRead",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,388",BI=591$
 $LK,"KbdCmdRead",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,36",BI=592$
 $LK,"D3DivEqu",A="FL:::/Kernel/KernelB.HPP,159"$
-$LK,"ARGT_FS",A="FL:::/Kernel/KernelA.HPP,1908"$
-$LK,"ARGT_DX",A="FL:::/Kernel/KernelA.HPP,1902"$
-$LK,"ARGT_M64",A="FL:::/Kernel/KernelA.HPP,1884"$
-$LK,"DOCE_LEN_DFT",A="FL:::/Kernel/KernelA.HPP,1169"$
-$LK,"DOC_COLOR_KEYWORD2",A="FL:::/Kernel/KernelA.HPP,1133"$
+$LK,"ARGT_FS",A="FL:::/Kernel/KernelA.HPP,1927"$
+$LK,"ARGT_DX",A="FL:::/Kernel/KernelA.HPP,1921"$
+$LK,"ARGT_M64",A="FL:::/Kernel/KernelA.HPP,1903"$
+$LK,"DOCE_LEN_DFT",A="FL:::/Kernel/KernelA.HPP,1175"$
+$LK,"DOC_COLOR_KEYWORD2",A="FL:::/Kernel/KernelA.HPP,1139"$
 $LK,"CD2I32",A="FL:::/Kernel/KernelA.HPP,136"$
 $LK,"DrvLock",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,1",BI=593$
-$LK,"ARGT_GS",A="FL:::/Kernel/KernelA.HPP,1910"$
-$LK,"CICTreeLinks",A="FL:::/Kernel/KernelA.HPP,1617"$
-$LK,"DOC_COLOR_COMMENT",A="FL:::/Kernel/KernelA.HPP,1134"$
+$LK,"ARGT_GS",A="FL:::/Kernel/KernelA.HPP,1929"$
+$LK,"CICTreeLinks",A="FL:::/Kernel/KernelA.HPP,1637"$
+$LK,"DOC_COLOR_COMMENT",A="FL:::/Kernel/KernelA.HPP,1140"$
 $LK,"SYS_MEM_E801",A="FL:::/Kernel/KStart.CPP.Z,32"$
-$LK,"ATA_NOP",A="FL:::/Kernel/KernelA.HPP,2234"$
-$LK,"SVCf_DONT_FILTER",A="FL:::/Kernel/KernelA.HPP,3152"$
+$LK,"ATA_NOP",A="FL:::/Kernel/KernelA.HPP,2253"$
+$LK,"SVCf_DONT_FILTER",A="FL:::/Kernel/KernelA.HPP,3171"$
 $LK,"IET_REL_I0",A="FL:::/Kernel/KernelA.HPP,392"$
-$LK,"OC_ADDR_SIZE_PREFIX",A="FL:::/Kernel/KernelA.HPP,1737"$
+$LK,"OC_ADDR_SIZE_PREFIX",A="FL:::/Kernel/KernelA.HPP,1755"$
 $LK,"SYS_MEM_E820",A="FL:::/Kernel/KStart.CPP.Z,33"$
-$LK,"SUF_SINGLE_SPACE",A="FL:::/Kernel/KernelA.HPP,3769"$
+$LK,"SUF_SINGLE_SPACE",A="FL:::/Kernel/KernelA.HPP,3788"$
 $LK,"RFLAGG_START",A="FL:::/Kernel/KernelA.HPP,324"$
-$LK,"CKeyDevEntry",A="FL:::/Kernel/KernelA.HPP,3789"$
-$LK,"MSG_IP_R_D_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3217"$
-$LK,"MSG_IP_L_D_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3215"$
+$LK,"CKeyDevEntry",A="FL:::/Kernel/KernelA.HPP,3808"$
+$LK,"MSG_IP_R_D_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3236"$
+$LK,"MSG_IP_L_D_DOWN_UP",A="FL:::/Kernel/KernelA.HPP,3234"$
 $LK,"XTalkWait",A="FL:::/Kernel/SrvCmd.CPP.Z,455",BI=594$
 $LK,"MemPageTable",A="FL:::/Kernel/Mem/PageTables.CPP.Z,162",BI=595$
-$LK,"CCF_KEEP_NUM_SIGN",A="FL:::/Kernel/KernelA.HPP,2112"$
-$LK,"ARGT_MM",A="FL:::/Kernel/KernelA.HPP,1915"$
+$LK,"CCF_KEEP_NUM_SIGN",A="FL:::/Kernel/KernelA.HPP,2132"$
+$LK,"ARGT_MM",A="FL:::/Kernel/KernelA.HPP,1934"$
 $LK,"chars_bmp_alpha_numeric_no_at",A="FL:::/Kernel/StrA.CPP.Z,335"$
 $LK,"SysHlt",A="FL:::/Kernel/KernelB.HPP,265"$
-$LK,"FUF_JUST_DIRS",A="FL:::/Kernel/KernelA.HPP,2583"$
+$LK,"FUF_JUST_DIRS",A="FL:::/Kernel/KernelA.HPP,2602"$
 $LK,"CD2I64",A="FL:::/Kernel/KernelA.HPP,140"$
 $LK,"CD3I32",A="FL:::/Kernel/KernelA.HPP,126"$
 $LK,"_STRCPY",A="FL:::/Kernel/StrA.CPP.Z,65"$
 $LK,"RedSeaDrvValidate",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,82",BI=596$
-$LK,"YELLOW",A="FL:::/Kernel/KernelA.HPP,2943"$
-$LK,"FUf_JUST_DIRS",A="FL:::/Kernel/KernelA.HPP,2557"$
+$LK,"YELLOW",A="FL:::/Kernel/KernelA.HPP,2962"$
+$LK,"FUf_JUST_DIRS",A="FL:::/Kernel/KernelA.HPP,2576"$
 $LK,"RedSeaFreeFreeLst",A="FL:::/Kernel/BlkDev/FileSysRedSea.CPP.Z,3",BI=597$
 $LK,"IPVarsInit",A="FL:::/Kernel/SerialDev/InputPointer.CPP.Z,68",BI=598$
-$LK,"ARGT_NO",A="FL:::/Kernel/KernelA.HPP,1856"$
+$LK,"ARGT_NO",A="FL:::/Kernel/KernelA.HPP,1875"$
 $LK,"IET_REL_I8",A="FL:::/Kernel/KernelA.HPP,394"$
 $LK,"MouseGetDevType",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,26",BI=599$
-$LK,"ARGT_R32",A="FL:::/Kernel/KernelA.HPP,1873"$
-$LK,"ARGT_R16",A="FL:::/Kernel/KernelA.HPP,1872"$
-$LK,"DOC_DFT",A="FL:::/Kernel/KernelA.HPP,1147"$
-$LK,"CMemberLstMeta",A="FL:::/Kernel/KernelA.HPP,784"$
-$LK,"DISPLAYf_WIN_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3273"$
-$LK,"CAutoCompleteGlbls",A="FL:::/Kernel/KernelA.HPP,1476"$
-$LK,"CAOTImportExport",A="FL:::/Kernel/KernelA.HPP,1935"$
-$LK,"MEM_SETH_STK",A="FL:::/Kernel/KernelA.HPP,2857"$
-$LK,"DOCEF_HAS_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,1007"$
+$LK,"ARGT_R32",A="FL:::/Kernel/KernelA.HPP,1892"$
+$LK,"ARGT_R16",A="FL:::/Kernel/KernelA.HPP,1891"$
+$LK,"DOC_DFT",A="FL:::/Kernel/KernelA.HPP,1153"$
+$LK,"CMemberLstMeta",A="FL:::/Kernel/KernelA.HPP,785"$
+$LK,"DISPLAYf_WIN_ON_TOP",A="FL:::/Kernel/KernelA.HPP,3292"$
+$LK,"CAutoCompleteGlbls",A="FL:::/Kernel/KernelA.HPP,1482"$
+$LK,"CAOTImportExport",A="FL:::/Kernel/KernelA.HPP,1955"$
+$LK,"MEM_SETH_STK",A="FL:::/Kernel/KernelA.HPP,2876"$
+$LK,"DOCEF_HAS_TERMINATOR",A="FL:::/Kernel/KernelA.HPP,1009"$
 $LK,"CD3I64",A="FL:::/Kernel/KernelA.HPP,144"$
 $LK,"c32_edi",A="FL:::/Kernel/PCIBIOS.CPP.Z,157"$
-$LK,"PURPLE",A="FL:::/Kernel/KernelA.HPP,2934"$
-$LK,"TASKf_BREAK_LOCKED",A="FL:::/Kernel/KernelA.HPP,3262"$
-$LK,"FILEMASK_SRC",A="FL:::/Kernel/KernelA.HPP,2267"$
-D&9Æ9ÆCÆWÆYÆgÆ}ƌƦÆÕÆÙÆÙÆÞÆDVc»»¿ÎÚæò%&*@4@kksw�§¿ÎÚèïüý,š¡#M#M,MEGGP^DŽ›ÓÓáïþ


+
+
4
ˆ/M²¢²¢¢Í¢Ø¢ߢߢ£££*£7£<£B£Q£W£^£^£b£b£b£b£o£r£‚£	0ÎÖµˆµˆÏˆçˆúˆüˆüˆ‰
 Ì;x3x3�3–3°3³3¿3Ô3Ú3à3æ34
-444 4&4+4P4V4X4g4k4z4€4ƒ4…4”4˜4§4­4°4²4Â4Æ4Ú4Ý4à4â4ñ4ô45Ä¥Ò11"1,1/1?1W1a1g1j1m1p1¬1¯1²1´1Ç1Ê1Í1Õ1Û1à1à1æ1ò1ô1ý1ý1ý1ý122222(2ˆCa"ª"ªHªLªTªZªcªkªqªtª€ª€ªªª·ªÁªĪǪΪÖªܪéªéªÿª
4æïM‰M‰g‰u‰�‰ ‰¢‰¢‰¬‰`FZÀ[À[Î[Ñ[Þ[ë[ò[ù[\\\#\5\D\L\U\W\W\_\44=PCPC^CzCzC}C”C”CšC TXqáqáá�á(-3##+AFZ\fHÜê‘e‘e±e¾eÃeÏeéeïeõeffff(Z`öÌöÌÍ"Í*Í0Í8Í$üdzdzmzuz{z€z0ƒ‹Ê¼ʼà¼ë¼ü¼þ¼½8ž¨@^@^N^U^`^e^g^~^~^‡^�^P|ŒP]P]^]e]p]u]~]�]“]š]œ]Ÿ]ª]°]€Zv¯¯H¯L¯P¯g¯w¯�¯£¯µ¯µ¯ѯÖ¯â¯è¯ë¯ò¯ö¯ú¯þ¯°°°¿°à:.ÂtÂtÛtãtþt	uuu*u7uKu^u{u†u”u¤u­u°uºu¾uÙuÞuåuíuÿuvv v0v6vJKKSZgv…𮽯èì`ˆœss�Ž˜˜«³ÆÈÛÛßéîîô|w’j‘j‘Б𑥑ª‘¬‘²‘đ֑æ‘÷‘’	’	’	’’(’E’U’W’W’`’l’XÓå“(“(Ÿ(¡(°(Æ(Ò(Ù(ð(ò(	)	)))) @8D„{„{’{”{¶{Ã{Ã{Í{ |ýY	Y	Š	�	›	¤	¤	»	Ì	á	æ	ù	ý	
-!
-*
-:
-B
-R
-a
-d
-™
-!4ÑÚ#`#`7`I`X`i`|`‚`‹`"¬(FdFd`dqdƒd’d¢d¶dÁdÇdßdßdëdýdeeee'e'e-e-e”e™e™eÁeÁeÏeÒeÕeãeéeòef#,Ûâ‹`‹`™`¼`§`Ì`Ò`ù`$ †ŠpVpVyV†V‹V%H—¥NòNòiòkò|òˆò�ò™ò™ò�ò§ò&Œ¬Ë¶é¶é×éÚéãéÿéêêê"ê*êDêLê_êiênêzê€ê‡ê”ê—ê ê£ê¦ê«êÒê' }�^¼^¼r¼€¼†¼(Dævævwwww,w9w?wBwNw)p¼Ô.ó.ó<óJó`óoótó„ó†óŒó•ó�ó¨óÂóÒóáóáóèóèóèóÜô*h#9 h h¶h¸hÇhÛhÝhæhèhèhëhiGiTi^inixiƒi†i”i+$glkkk,k7kRk,œd‡++AJWdq‰�Ÿ³³»ÐÝÝêò/AI]ddn-|9¨Z¨Z²Z¿ZÐZÚZáZèZñZùZ[[ [)[1[8[?[G[M[X[\[^[^[b[.X ΘΘí˜ð˜õ˜ø˜™™ ™)™1™5™8™8™>™A™O™/D*7ÄJÄJØJèJïJýJKKKK0 
-‹‹‹,‹F‹1”9ÙòÙòáòóó ó+ó9óKóYóaóoóƒó¶ó¸ó¼ó¼óÇóÒóáóðóôô#ô5ô<ô<ôNôOôSô2Xßñ>õLõZõZõrõxõ�õ‰õ”õžõ¥õ½õ½õ½õÄõÄõÅõËõ3P„z„z˜z¨z®z³z³zÁzÅzÊzÊzÒz4 $(ÐBÐBÞBòBøB5Œ¡Àj†j†‰†…†˜†¨†µ†¹†½†à†í†ù†‡‡‡X‡`‡‡–‡¤‡«‡²‡¹‡Ú‡à‡ç‡ê‡ˆ6Œþâ·â·ì·î·¸¸1¸:¸h¸k¸t¸¢¸¥¸©¸®¸º¸Á¸ã¸æ¸è¸ï¸¹¹¹¹"¹)¹0¹7@8DKK$K-K4K;KBKCKKK8<ðûüyüyzz)z:zBzJzRzUz]z9,ZaEEECESEyE†EˆE:,JQøCøCüC3DCDiDwDyD;”£ÄYãYãtã~ãˆãŸãµãºãÇãÌãèãääää6äKäMägä|ä|äƒäƒäƒä(å<$ˆ�CCLZpu=<‰”JÁJÁTÁjÁyÁÁŽÁ”Á£Á©Á«Á°Á>H!ÔzÔzâzîzózóz{{{{{?LïþŠŠŠŠ Š)Š/Š<ŠPŠPŠoŠoŠŒŠ�Š”ŠšŠ@ ƒ‡þþA\˜«éé"é0é5é;éFéOéOé_ékéoé‡éŽé‘é“é¶éB4ˆ‘$4UjjjnC,jqFFFCFSFyFƒF…FD¸�Ƕ!¶!¾!Æ!Ñ!ð!ù!"#"-"9"D"D"S"t"•"¢"ª"À"Ë"Ó"Ó"â"#$#1#9#O#Z#l#l#z#�#“#“#¡#¡#¢#µ#E ’–nnrƒF —›††Š­±Gp]uÀÀ,À>ÀZÀZÀaÀcÀcÀqÀsÀsÀÀÀ…À�À‘ÀœÀ´ÀÎÀÎÀÎÀÛÀHì<©å©å±å½åÝåñåõåæææ,ædædæ“æ°æºæÉæÇæóæóæç&ç&ç5çDçXç}ç�çƒçƒç�ç�ç‘ç‘ç¡ç­ç­ç±ç¶ç¿çÑçØçåçôç è(è:è:è@è‹éI|XsYêYêqê{ê‚êŽê‘êŸê¢ê¦ê¨ê«ê®ê¶ê¹êÁêÕêßêõêûêþêëëëJ4•ž²k²k¼k¾kÅkËkÝkÞkãkK,'.fÜfÜpÜrÜzܔܙܟÜLP��°]°]Â]Å]Ð]Õ]â]í]ü]^^%^.^1^;^M�[{`\`\z\…\Š\“\¦\¾\Æ\Î\Û\å\ì\ó\÷\û\]]]]"](]+]9];]I]Né%ðð+ð2ðCðFðgðzð‡ð•ð¾ðÚðæðíðïðòðøðüð
ñññ ñ#ñ%ñ1ñAñIñOñ\ñ_ñbñpñ�ñ‘ñ�ñŸñ¯ñ¼ñÂñÏñãñæñéñññññññùñòòòò-òO œ ¶¶ºÏÓP„
*NÊNÊhÊkÊ~ʋʧʪʰʹÊÅÊÇÊÚÊíÊñÊË
-ËËË)Ë+Ë+Ë;Ë>ËTËQˆ !Í!Í)Í4ÍDÍSÍ_̓̓̓͋Í�Í�Í´ÍÃÍäÍüÍÎÎÎÎÎ$Î+Î+Î=ÎBÎJÎR,æí)) )8)?)A)SL@O^^�ˆ’–šž¨¨²ÅÈÖT ¡¥ÖÖÚéíU äèæâæâêâããVHú¡f¡fÁfÎfÓfßfùfÿfgggg(gWHëùff9fFfKfWfqfwf}fŠf“f”f fX ¦ªîîò÷ûY «¯þþZ<ÈÓzÃzË×ÛçéõüÃÂÃÊÃ[d^sÃJÃJËJÏJÏJÞJKKK!K9KKKTK[K~K‡KŽKšKœK\°¥Í>=>=I=Y=j=y=„=“= =¹=Ð=Ô=Ø=à=è=ñ=>>.>2>6>:>B>J>S>q>„>�>ž>¥>¥>¶>¿>]0&¶“¶“¿“¿“Ö“ó“ó“ø“^8°(°(Ê(Î(Ñ(Ü(ú(þ())_ ëMëMôMÿMN`D»È__*_A_N_N_X_r_|_aL™¨ûPûP	QQQ Q!Q/Q:QCQCQDQJQb,biˆEˆEŒEÃEÓEùEFFc,RY€D€D„D»DËDñDÿDEd0ÁɈˆˆUˆ\ˆbˆoˆ‚ˆŽˆeY™
-™
-¡
-¬
-´
-Õ
-ä
-í
-$1DbkxƒŽ“°µµÂÌßì'CNVq|‘¯»ÄÉæïû
-

8
C
K
V
V
V
[
i
t
{
†
‹
’
f,ryˆFˆFŒFÃFÓFùFGGg$û#W#WCWPWVWbWh$+0VËVË_Ëp˂˾Ëi<$/*”*”8”@”H”U”`”j”™”›”¡”jô–Ï“C“C§C¶CÅCÏCÞCíCíCD$D/D6DRD_DmD{D‰D—D·D­DÃDÕDàDòDEEEE#E+E;ECESE]E”E£E«E®E¼Ek@nz¶–¶–Ö˖Ζܖà–ä–ç–õ–ü–—l$bJoJo]ocoro|o�o�o�o”o™o£o´oÅoÙoÛoöo&p=pSp^p~p€p‹p•p pªpµp¿pÊpØpßpípíp÷pq8qCqZq_qaqkq‡q�q˜q³qmdÆÛÃUÃUÑUÖUæUëUúUÿUVVVVV,V7V;VAVnD/<¦Ü¦Ü¯ÜÄÜÐÜÛÜäÜòÜýÜÝ
-Ýo<²½K^K^a^t^ˆ^Ž^¨^¯^Å^Ë^Ñ^_p,ããç+Tbdq<bmn–n–{–ƒ–†–”–˜–œ–ª–®–³–r|0vúvú‡ú‘úŸú·úÏúäúÿúûû û+û2ûCûMûMû^ûfûkûrû|û�û›ûsL𩵆µ†Ñ†Ø†ß†ë†ô†‡‡‡'‡=‡L‡V‡V‡k‡t8ÃQÃQÙQæQøQRR#R-Ru 6ä6ä:äSävÔ,]1ÿ1ÿ9ÿAÿOÿbÿqÿ{ÿ‡ÿ’ÿ ÿ¯ÿÀÿÜÿäÿðÿøÿ
".@T†—¤¿ÜÞðùù 22@@EIw4¨±Ë]Ë]ß]ñ]÷]^^.^4^G^x0DLBBB)B4BCB]BeByPZjõ„õ„………%…*…-…3…6…;…F…L…V…zd¦»®ò®òÇòÊòØòØòáòìòñòôòóóóóóó!ó-ó{H<Jææææ'æ0æ3æ@æIæIæMæPæXæ|$PUÖÖßíóø}4ÕÞÞôÞôìôúôõ
õ&õ+õ2õ8õ~¬LsÂhÂhÔhãhéhýhi'i:iQidi{i’i©iÁiÅiÌiÒiÖièijjj,j0j7j=jAjSjljyjj‚jŒj?6&6&>&F&W&f&p&|&|&€&ˆ&Œ&¥&ß&ñ&','5'>'>'C'V'['f'|'�'—'È'þ'( (5(I(P(�(·(È(Ø(Ø(ß(ñ(ñ(ÿ(ÿ())) )$)()€P—§+]+]A]T]c]|]†]ˆ]”]­]¸]¾]Â]Ê]�0jrfftƒŽ”––œ‚<KVjj!j+j;j=jpjwjwjwjzjƒ˜òÎõÎõÔõÒõâõoú„4ŠÓ>Â>ÂVÂ^ÂlÂwÂ{Â�‡•ª¯µÂÌÂÑÂ×ÂîÂóÂùÂÃÃÃ)Ã-ÃIÃ\ÃlÃqÀÃ�Ã�ìùÃÌÃÒÃÙÃÛÃîÃÄÄÄ,Ä,Ä?ÄAÄTÄVÄiÄkÄ~Ä~ĚıķĽÄÈÄìÄ…HVäVä_äzäƒäŽä�ä’ä¡ä¡ä°ä²ä²ä·ä†\ÜïCVCVSVaVlVnVuVV•V V¢V§V©VªVªV²V‡( ¦éÛéÛôÛÜÜ܈D¾Ëöáöáââ"â.â5âDâPâPâVâ‰d9×9×I×d×d×f×f×f×n×׈יץרת׭ׯׯׯ׻׊D-:{A{A�AžAžA¦A¼AÀAÀAÄAÌA‹Ô
-;nn n#n&n0n6nBnInPnYnfntn}n€n†nŒn“nšnœn¦n«n´nÂnÈn×nãnænénñnönooooooo!o)o1o=o@oRoŒ81;¾Ë¾ËÌËãËîËîËùËýËýËÌ�$<�ññù	+:CQ^eoz�œ¤¸ÅÙæú"6@Taany„˜¿ÍÛèóþ$9ISdu†—ÊØí)2A\s|‡Ž™£¬¼Ž0t|£K£K§K´KÐKåKêKL�02:½ƒ½ƒÑƒÜƒîƒöƒùƒ„�¼KvRR R@RRRYRfRrRzR…R�R˜R£RÇRÖRÝRäRõR÷RÿR
-SS$S+S.S0S6SH>HXH[HaHmHoH~H…H‹H´H»HèHïHóHII4I=I=I=IJIƒI�I›I¨I»IÉIÚIíIúIJ$J+J6JRJRJ^J`J`JlJnJnJzJ|J|JŒJ�J�J›J§JÀJÊJÓJÞJôJKKKK,K3K:K@KCK�K“Pîþ®u®uÎuáuíuùuvv v&v+v-vFv”4#ˆBˆB‘B¦B¦B³BÈBÈBÍB• ÌÐÖêÖêäêíêóê–0ÊÒ’ˆ’ˆ¦ˆåˆìˆòˆ
-‰
‰‰—0HPæïæïôïð
-ð-ðFðnð˜€ÞAÞAòAùAB	B%B%B3B5B5BEBGBGBUBWBWBgBoBoBxB„B¡B¡B³B³B·BÞB™XðƒOƒO�O¡O²O½OÙOÜOêOðOóOP P#Pš@$01à1à?àDàGàYà_àbàdàjà›HªÅªÅ¿ÅËÅÎÅ×ÅãÅëÅÆÆÆ Æ,Æœ îò.ã.ã2ã@ãBã�ä{°ØkØkökÿk"l,l>lAlIlLlRlUlalsl€l†l“lžl£l©l»l»lÊlÍl×lÚlælølmmm#m(m.m@m@m@m@mKmKmYmž Ñõ+;+;J;L;];b;p;‘;Ÿ;©;´;Ì;Ó;Õ;Õ;ç;í;ó;õ;û;<<
-<<<!<'<'<'<.<?<ŸT…–ÆñÆñêñíñûñûñò ò*ò0ò;ò;ò;ò?òMò `p„.ñ.ñKñQñ_ñ_ñsñ~ñ‚ñ‰ñŒñ–ñ�ñ­ñ±ñ±ñ±ñµñÁñ¡HïýR·R·y·”·¢·­·±·µ·¹·÷Í·Í·Ï·Ý·¢D"/${${2{>{C{C{T{Y{Y{_{£t¹Òc'c'k'|' '§'¸'Ü'ê'ø'(((%(3(I(_(a(w(�(�(�(�(¤X{�k8k8„8”8¬8¸8Ä8Ä8Ö8Ü8Ü8è8ô8ö8ö8þ8¥XÞð222#212G2O2b2l2ƒ2ˆ2�2�2¤2¬2±2¦8w�°°ȰưÖ°ñ°ý°ÿ°ÿ°ƒ±§8>H C C®C´C»CÑCÑCØCïCïCõC¨<u€r¡r¡Š¡˜¡Ÿ¡£¡¦¡ª¡±¡Ñ¡á¡©`«¿"l"l&l/lWl}lˆl—l¦l«l±l³lªL)ß)ßDß`ß`ßmßmßzßzߊߎߎߞߠߠß×ß«d@Õ.).)9)O)V)t)…)”)¡)°)Ä)Ü)ô)**(*J*e*€*¥*ª*Ã*Ø*ø*+ +!+W+®++}+Í+Þ+å+,,4,4,[,[,z,�,½,Ë,+-ü,ú,J-Q-V-h-p-p-•-¥-Â-.Õ-Ý-È-1.c.k.k.‹. .½.Ç.Þ.æ.Ñ.:/:/:/?/?/P/k/y/‘/ª/Ã/Þ/ö/0$020=0=0P0i0}0’0¬0°0®0þ011*1B1]1h1€1–1–1í1¾1¼122*2E2]2s2u2¿2�2Ž2Þ2Þ2ç2ð233332323C3C3F3J3¬4
-”t”t¢t§tªt°t³tµt»t­,szˆkˆkŒk‘k›k«k«k×k®T©º�^�^ž^«^¸^Ö^Ù^à^ç^õ^ù^û^_
_¯Ô%V[6[6{6‰6Ž6˜6˜6Ÿ6­6°6·6·6¾6Ì6Ï6Ó6ß6ß6ë6ñ6þ6777777"7"7.7G7J7]7]7`7c7s7°4r{ó,ó,ý,ý,--C--�-‘-±À6b1Õ1Õ<Õ@ÕdÕoÕ~ÕŠÕšÕ¹ÕÁÕÙÕéÕ
Ö
Ö1Ö3Ö3ÖWÖYÖYÖ}ÖÖÖ‹Ö‹Ö“Ö“ÖŸÖ³ÖÃÖËÖËÖÝÖäÖäÖöÖ××2ײÈÉ÷ûû..@EEW\\nss…ŠŠœ¡¡¡¡¨­­¿ÄÄÖÛÛò"33ELS\kγˆSq“O“O©O®OºOºOÆOÎOÖOáOêOòO÷OùOýOPP P'P(P(P2P´(|‚“-“-œ-£-Ã-Ê-Í-µü‚½‘ë‘ë™ë�ë¾ëÉëÒëèëüëì ì3ìTìŠì¬ìÁìÊìÌìÔìÜìóìûìííííí0í7íJíZíaíví‹í�í‘í‘í‘í�í©í©í®í·íÉíÐíÐíâíèíýí¶€a}>Í>ÍBÍQÍQÍ`Í`ÍoÍoÍ~Í�Í�͜ͰͫͺͺÍÉÍÉÍØÍ/Ò·¨r˜3P3PMPePzP�PŒP’P’P•PœP§P«P°P¶PÀPÆPÉPËPÎPÑPÑPÖPåPèPúP¸Ltƒ’j’j¦j³j¶jºjÈjÓjÜjûjkkkk+k¹TÉÚ¶Õ¶ÕÄÕËÕÖÕùÕÖÖÖ!Ö&Ö4Ö:Ö=ÖCÖº¼�ÈæÓæÓøÓþÓÔÔ)Ô3ÔKÔOÔgÔkÔ…Ô…Ô˜Ô¡Ô¬ÔµÔÂÔËÔÝÔçÔôÔýÔÿÔÕÕÕ9Õ<ÕTÕdÕuÕyÕ}ՈՈՌՌՌյջ4uuuuuu u$u*u¼(ãéû`û`a-a?aEa`a½”"€g€gšg¹gÅgØgÞgïg÷gûghh%h+h.h1h4h9h;h?hKh\hkhqhthwhzhzh„h‡h™h¾„d�®Y®YÑYÕYâYçYëYþY Z)Z)Z?ZKZRZeZjZnZ�Z¢Z¬Z¬ZÀZÀZÃZÑZ¿�]}†Ù†Ù�Ù�Ù�ÙµÙËÙÚÙóÙÚÚ7ÚSÚYÚgÚuÚƒÚ‘Ú“Ú©Ú¿ÚÕÚëÚëÚìÚñÚÀL�ž�>�L�[�b�h�z�z�����¤�³�Æ�Ò�é�ë�‘‘‘
-‘
-‘‘‘‘!‘!‘%‘0‘6‘B‘J‘l‘‚‘“‘ª‘±‘·‘º‘Ò‘ÌÜø+ÙüÙüáüåüðüþüýý1ý;ýGýRý`ýoý�ý©ýÁýÅýÞýöýþ	þþ þ+þ:þIþlþzþ‰þ²þ¿þÃþÐþâþâþðþ÷þ	ÿ	ÿÿÿÿ,ÿÍ”1Ržûžû¬û¸ûØûãûôûü ü5üJüSüXüXühütüzü†ü�üÀüÐüÐüÙüÞüäüåü*ý΀5í�í�
‚‚%‚)‚-‚<‚P‚X‚^‚r‚�‚�‚™‚�‚ ‚¢‚´‚‚ƂЂԂ݂ã‚ö‚Ï$).øBøBC
C!C'CÐ,“š½½½/½:½@½C½K½Ñ¨Çívtvt�t“t«t¶tÆtØtÜtêtótuuu'u2u@uJuRuVuVuVuYu[u_u_uduru€uŽu“u•u•u«uÒLêùîëîë
-ìì1ì<ìIì]ìcìoìÓ ÞãÞãâãðãòãÔ`(‹3‹3�3¦3¶3Æ3Ù3à3÷344(494J4k4Œ4£4®4¹4ó4ÕTë?ë?ï?@@)@.@D@K@]@p@ƒ@�@­@²@²@´@Ö`¶_Ï_Ñ_Ù_õ_þ_` `%`8`O`U`a`q`q`ƒ`Ã`×H_m«7«7Ë7Ù7ß7ó7ù7þ78	88Ø$zGGG#G1GîTîhîqî…î¬îÂîÜîäîïïï.ï9ï@ïKïPïeïàLN]2 2 ; ; J Y j n { ‘ • • š á85?r�r�‚�¡�­�±�µ�¹�Á�É�âœ$ó4ó4û4555<5U5U5a5r5}5‰5‰5–5¨5­5Ô5Û5è5ò5÷5÷5÷5676Q6V6[6ãx‚œÁÁÕßåñ!$-0Bhpyy«°¶Ãä8CPCPSPVP[P^PlPrPuPwPPåD&ÜÜÜ&Ü.Ü6Ü>ÜFÜNÜVÜ^ÜbÜfÜædavÊ�Ê�Ú�æ�ñ�ö�‘‘‘‘‘$‘,‘4‘S‘V‘a‘a‘i‘çH~ŒöÚöÚÛ Û0Û5ÛAÛ_ÛeÛqÛ�Û•Û•Û¡Ûè8—¡èVèVþVWWW%W(W2Wé(.42�2�;�I�X�g�l�ê0ª€ª€¸€Ѐ	�����ëDŒ™-†-†Y†g†r†v†z†~†‚†Ž†›†ž†®†ì€ÍéÉúÉúÔúÜúçúòúýúûû0û9ûMûtûŠû¤û¬ûÈûÓûÞûöûüüüü,üí<C)C)K)i)z)Š)›)§)Á)Ù)Û)Ý)îLÁЫ:«:Å:Ø:í:ó:ù:;;;;$;ïˆú���?�Q�Q�c�j�€�€���’�’�’�£�®�µ�¹�Á�Å�Í�Ó�Ù�Ù�Ü�ê�ð8ÿ	šŠšŠ¨Š³Š¾ŠÝŠóŠöŠ‹ñ?æwæwïwûwxx)x7xExZxaxtx‡x™x¡x¿xÓxÖxÞxîxÿx&y9yKy€y‚y“yŸy¤y¬yÎyáyíyzòHÿ
FvFv`vsvŒv¡v§v­v­vµv·vãvó<:Eh[h[y[{[€[‰[ª[³[¸[À[ô8JTvÌv̛̦̦̱̹̹̄̿ÌõDê÷1ü1üCüOüeüüŠüŠü›ü«ü­üØüöX@Rzzz+z>zVz_zjzuz–z˜z£z®z·zÀzÑzäzäzæz÷$ôùå€å€î€÷€ý€�ø 
-NNN'N8NùDÌÙVâVâeâjâsâ…â†âšâ�â£âúh-ƒ“!“!»!½!Æ!Ú!Ý!â!æ!"""."6"="V"_"a"z"ƒ"ƒ"ƒ"ˆ"¾"È"Ò"Ü"æ"í"ù"####0#0#9#;#;#D#F#F#O#Q#Q#V#X#X#]#]#]#a#|#’#�#²#»#À#È#Ô#Þ#ê#ý#$&$*$5$K$Y${$˜$¶$¶$¶$¶$¶$À$É$Ð$P%û ¢¦8W8WAWNWSWü@ÅÑ)å)å7å>åCåYå[ådåvå|å§åý4ÞÛÞÛæÛîÛöÛþÛÜÜÜÜþ,¶Û¶Û¾ÛÆÛÎÛÖÛÚÛÞÛÿx7..BGQXk„„“©²ÁÈÈËÕëòô÷ùù”
-Û|f f ‡ ‰   © ´ ¿ Á Ô â í ø ¡¡¡ ¡$¡'¡-¡1¡4¡7¡J¡_¡g¡j¡‚¡’¡•¡›¡ž¡±¡Æ¡Î¡Ñ¡é¡ù¡þ¡þ¡¢¢)¢)¢)¢-¢/¢/¢3¢5¢5¢9¢;¢;¢?¢?¢?¢B¢D¢D¢G¢L¢R¢U¢Y¢[¢a¢d¢|¢�¢•¢›¢ž¢£¢¶¢Ñ¢Ó¢é¢é¢é¢î¢î¢ð¢ð¢õ¢ø¢£££6£<£S£b£q£†£˜£½£Â£Â£Ú£ø£ý£ý£¤3¤5¤5¤M¤i¤k¤k¤ƒ¤Ÿ¤Ÿ¤½¤É¤Î¤Î¤æ¤ý¤¥¥¥6¥;¥;¥?¥W¥u¥y¥{¥{¥¥—¥µ¥¹¥¹¥×¥Ü¥Ü¥ô¥¦¦¦¦/¦F¦M¦[¦k¦�¦–¦˜¦˜¦¦¦®¦×¦Ù¦Ù¦ñ¦ñ¦§7§V§[§[§s§s§Œ§¡§Ã§·§Û§ú§¨¨#¨#¨;¨R¨\¨a¨r¨r¨x¨ƒ¨˜¨�¨§¨·¨·¨í¨û¨©©©%©%©1©5©5©>©M©V©V©_©i©…©š©·©Æ©Ì©á©é©õ©ÿ©ÿ©ªª$ª<ª>ª^ª^ªcªcª™ª§ª°ª°ª¼ªÀªÀªÉªØªáªáªêªðª««/«1«<«T«V«r«r«r«‚«£«¥«¥«½«Ô«Ù«Ù«ñ«¬¬¬-¬-¬D¬D¬P¬T¬Z¬c¬r¬{¬{¬„¬�¬§¬©¬Å¬Ð¬ë¬í¬í¬ö¬­­/­<­D­e­g­o­‰­Œ­•­š­»­Å­Å­à­ê­õ­®$®7®?®I®I®R®V®i®¡®¬®¬®¬®À®É®Í®à®¯¯¯¯2¯<¯D¯D¯M¯Q¯d¯œ¯­¯³¯Æ¯Î¯Û¯à¯à¯é¯í¯°8°I°R°W°W°b°f°~°•°Ÿ°¤°º°Ò°Ò°ü°±±#±'±:±B±I±T±Y±`±`±e±˜±¬±Æ±Ù±ã±í±í±ý±#²3²E²Q²U²o²�²�²‘²‘²‘²‘²•²š²š²¥²©²Á²Ø²â²ç²ý²³³?³I³k³p³p³p³{³³—³®³¸³½³Ó³Ó³ë³ë³´'´D´K´V´[´€´†´ ´²´º´¼´Ò´à´ý´
µ
µ:µ<µfµhµ€µ‹µ•µŸµ¦µÀµÉµÉµòµ
-¶
¶(¶(¶(¶-¶2¶e¶y¶“¶¦¶«¶µ¶¿¶è¶ü¶ÿ¶···· ·6·I·S·X·X·p·‡·‘·¡·¡·½·Ñ·Ô·æ·÷·ý·¸¸!¸&¸&¸&¸B¸V¸Y¸k¸„¸‰¸‰¸¡¸¸¸Â¸Ò¸Ò¸î¸¹¹¹(¹.¹A¹I¹R¹W¹W¹W¹s¹‡¹Š¹œ¹µ¹º¹º¹º¹Ò¹é¹ó¹ºº(º9ºJºPºcºkºtºyºyºyºžº¯ºÈºÍºÍºâºâºâºþºþº» »\¼@J‹J‹^‹l‹l‹y‹ž‹©‹­‹»‹¾‹Æ‹|�œâ¡â¡ÿ¡¢¢¢¢0¢X¢{¢‰¢™¢¼¢¤¢Ö¢ö¢££££"£%£1£8v€âÀâÀñÀÿÀÁÁÁÁÁ Á¬§Î!Ü!Ü1ÜGÜ]Ü[ÜkÜsÜzÜ~܆ܖܤܹܳÜÁÜÍÜÓÜÓÜÚÜÞÜÞÜàÜGÞ8ÔÞÊÃÊÃÙÃïÃþÃÄÄ#Ä%Ä%Ä+Ä@&2
-¾
-¾¾2¾@¾L¾`¾m¾t¾w¾¾4GP22F\glz‡�¡p+C33Sdk|ƒƒ™™§¯½ÅÅè.;YYffft	DŸ¬ürürs s*s0s6sÁ@Á`ÁeÁlÁuÁ{Á�ÁˆÁ‹Á‹Á›Á©Á«ÁÓÁõÁ÷ÁþÁÂÂ Â$Â$Â:ÂD3@‚¾‚¾‘¾¨¾¶¾¾¾Ö¾ë¾÷¾¿¿¿@ˆ”‹L‹L¡LÃLÉLÎLáLîLôL÷LÿL0ÙßÙßâßçßðßößößûß,;B"•"•1•=•K•T•Y•_•8ˆ’ÖßÖßäßðßà%à'à.à6à8à>àä6.¾.¾L¾O¾R¾f¾n¾u¾‰¾Œ¾Ž¾±¾±¾´¾Ä¾Æ¾Æ¾É¾Ë¾Ë¾Î¾å¾ú¾¿ ¿)¿1¿1¿1¿3¿3¿8¿W¿]¿l¿y¿�¿š¿œ¿®¿»¿À¿À¿Ì¿Ì¿Ù¿Ü¿Ü¿Àô…¾N—N—`—c—m—z—~—„—„—ˆ—�—‘—•—œ—¢—©—¯—¶—¼—×ɗЗ֗ݗã—ê—ð—ù—ÿ—˜˜˜˜˜˜.˜A˜C˜S˜Z˜e˜p˜{˜†˜‘˜œ˜œ˜¦˜LWf€j€j‰j™j™j·j½jÍjÓjÙjéjëjëjëjkhÝó%€%€:€I€N€^€f€f€t€~€�€•€¡€°€¼€Ç€Í€Ø€Û€ã€D<IÌÌÌ6ÌDÌTÌVÌXÌcÌgÌgÌoÌP„”2k2kAkJkTkVkhkhkhkjkqkwk—k¥k¦k¬k0Ž–Û\Û\ñ\]]] ]']<ZeÔpÔpâpópûpÿpqqqq\ÇÚ..2EXkvŠ›½ßú0Kf�œfTK\j¿j¿x¿Š¿�¿š¿²¿¸¿º¿Å¿Ý¿é¿ÀÀÀÀÀ
ÀX£µÉcÉcécöcûcd!d'd4dAdHdQdUdad X†˜yÒyҔҜҧÒÃÒÃÒÌÒÌÒÑÒâÒëÒöÒöÒÓÓ ,£ª¾½¾½Ò½ä½é½ú½'¾!ä6ŠŠ/Š2Š5Š;ŠOŠVŠYŠtŠ~ŠƒŠŠŠ�Š�Š Š’Š®ŠÅŠÑŠåŠîŠöŠ‹‹‹‹‹%‹'‹2‹8‹W‹g‹o‹�‹Š‹›‹£‹µ‹¸‹¸‹¸‹¸‹Ä‹Œ"	IFVFVfVuV�VŒV—V«V¾VÉVÕVæVïVûVWW
W"W.W.WIW[WoW}W’W˜W¼WÄWÄWÐWÔWØWðWþW)XX8XCXZX^XeXpXuXuXuXŠX�X¯X´X´XÀXÆXÌXÎXÞX#œ'JáÆáÆõÆÇÇ&Ç*Ç3Ç:Ç@ÇBÇUÇ]ǪDžÇgǺÇÉÇÚÇàÇïÇÈÈÈ&È7ÈAÈåÈ$Lйй™¹¡¹¡¹®¹À¹̹Թڹ߹å¹ç¹ç¹í¹%<}ˆrrrr€r‹r–r�rÇr¥rÕr!s&˜Õ÷2m2m\mmmmŒmœm¤m¨m¬m°m´m¼mÄmÖmämîmómnn!n'n+n=n' GK’h’h¡h»hÁh(Ü4®j®jÌjØjájÿjÿjkkkk k-k@kIkUkXk]kyk”k”k¦k¨k¨kºk¼k¼kÈkÈkÙkêkðkókókökûklll!l2l5lQlQlVlVlVlql)ðh „„„2„B„B„V„`„d„h„u„†„�„“„¢„µ„»„„фԄ߄… …,…4…>…L…]…p…}…Ž…¡…©…´…ʅ؅؅䅆† †&†,†3†<†?†d†*4AJ¿¿¿#¿/¿@¿H¿P¿c¿h¿+ �´h7h7‚7ˆ7ˆ7—7£7ª7°7°7º7Ã7Ã7É7Í7Ð7Ú7å7å7ô7ý7ý78
88888 8 8 8 8 8.8, ÚÞ¦â¦âªâ¸âºâ-¤O´öföfgg g1g5gIg[gig{g„gŠg�g¦g¯gÇg×g×gägògþgh h h$h*h2h\fyqq>qBqNq_qkqtq“qŸq¨q®q²qÀq?€�Y�Y Y§YºYÆYíY÷YZ	ZZZ%Z7ZIZcZoZxZ†ZŒZ’Z•ZœZ¤Z@X�ï3M3M?MHMQMWMcMoMwM}MƒM‹M™M¤M¬MÅM×MâMëMëMðMõMN
-NNNNN!N-N5N>N>NFNUNYNfNsNxN‚N‚N‹N’NžN©NÅNÅNÅNÍNÔNÛNâNéNðN÷NþNOOOO!O4OEOdOsOvO|OA|Kf^æ^æ}æ‹æ›æ§æ­æ¶æ½æÄæÉæÕæÙæãæãæêæíæóæóæýæçççç çB,		!,Rv~CX]›W›W£W®WÀWÆWÎWØWûWûW
XX.X;XCXQXŒXšXÒX×X×XéXöX
-YYY+Y`YgYtYzYYY‘YžY²Y¿YÄYÓYZZZ!Z#Z#Z+Z+Z8ZMZSZfZ�ZšZªZ¯ZµZÂZÍZÓZÞZÞZäZíZøZ[
[/[<[I[N[N[R[k[DàÈü	)8BK\lŒŸ½ÆÓÞééö%7Vhhˆ”ɵÚßñõýý		$	+	6	D	D	I	U	ELRa––#–+–.–<–?–F–J–M–Q–_–f–k–F8GQÎ•Î•Û•ã•æ•ô•ø•–
-––G0#').HXÏáIÞIÞSÞfÞyÞ�Þ²Þß'ßI(KQóóû			$	&	Jœ'JóPóP
Q.Q@QGQTQ`QhQsQ~Q‹QšQ£QªQ®Q®Q´QºQÒQÛQáQêQïQïQïQóQýQK8}‡û
-û
-!!(7>>CLÄ^‹6T6T\T_TmTˆT–T�TªT­T±T»TÈTèTîTèTUUUU&U(U(U8U:U:UJUJUnUuU~UˆUŒU¥U§UÌUÕUÛUâU$VM<#²“²“À“È“ГÝ“è“ò“!”#”)”N$#P#P,P5P;P@POY²¬²¬Ƭͬݬä¬ä¬ú¬­-­L­k­w­ˆ­Œ­’­ ­¤­ª­¸­¸­¸­×­ö­
-® ®#®)®7®;®A®S®S®S®S®V®[®`®f®w®{®�®Œ®�®–®¡®¡®¡®¦®¬®½®Á®Ç®Ò®Ö®Ü®å®å®å®¯PDo|“
-“
-—
-§
-½
+444 4&4+4P4V4X4g4k4z4€4ƒ4…4”4˜4§4­4°4²4Â4Æ4Ú4Ý4à4â4ñ4ô45Ä¥Ò11"1,1/1?1W1a1g1j1m1p1¬1¯1²1´1Ç1Ê1Í1Õ1Û1à1à1æ1ò1ô1ý1ý1ý1ý122222(2ˆCa’­’­¸­¼­Ä­Ê­Ó­Û­á­ä­ð­ð­®+®5®8®;®B®J®P®]®]®s®
4æï�‰�‰§‰µ‰Í‰à‰â‰â‰ì‰`FZÐ[Ð[Þ[á[î[û[\	\\\\3\E\T\\\e\g\g\o\44=PCPC^CzCzC}C—C—C�C TX	å	åå%å(-3ËËÓíõ
+HÜêahah�hŽh“hŸh¿hÅhËhØháhâhîh(Z`îÍîÍÎÎ"Î(Î0Î$ü”z”z�z¥z«z°z0ƒ‹RÀRÀhÀsÀ„À†ÀŽÀ8ž¨P^P^^^e^p^u^w^Ž^Ž^—^�^P|Œ`]`]n]u]€]…]Ž]�]£]ª]¬]¯]º]À]€Zv¢²¢²вÔ²زï²ÿ²³+³=³=³Y³^³j³p³s³z³~³‚³†³гггG´à:.ºwºwÓwÛwöwxxx"x/xCxVxtxx�x�x¦x©x³x·xÒx×xÞxæxøxûx	yy)y/y5yAyPyhylyqy„y¡y°y·y¾y¾yÅyÍyÚyÜyîyöyøyz	z	z	zzz"z-z9zGz]zŒzŒz°z°z·zÁz×zùzþzþz{
{#{E{J{J{M{l{o{{{~{�{Ÿ{Ÿ{¤{¤{¬{±{µ{Å{È{á{á{æ{æ{ù{|
+| |>|A|C|C|V|]|e|{|™|œ|ž|ž|¹|¼|Ü|÷|}	}
}}!}!}>}>}>}C}C}C}O}b}m}~}�}„}‰}‰}Ž}¦}©}Ï}Ó}î}~~~~+~1~4~9~9~I~L~O~]~f~l~o~t~t~ˆ~”~ ~°~È~í~ú~þ~.@IMPP`fx}…Œ˜µ¸ºËÒÞ÷€€€€€+€>€E€S€S€S€Z€f€p€~€‡€�€”€Ÿ€¨€·€Æ€Õ€õ€þ€h�4×à
‰
‰!‰/‰G‰R‰T‰T‰\‰@>J›	›	£	ª	·	Æ	Õ	ê	þ	
+
+5
+9
+`ˆœ33ANXXks†ˆ››Ÿ©®®´|w’ДДª”º”Ŕʔ̔Ҕä”ö”••'•)•)•)•/•H•e•u•w•w•€•Œ•XÓås*s**�*�*¦*²*¹*Ð*Ò*é*é*ë*î*ô* @8D¼{¼{Ê{Ì{î{û{û{| |ý

2
5
C
L
L
c
t
‰
Ž
¡
¥
¶
É
Ò
â
ê
ú
	A!4ÑÚÛbÛbïbcc!c4c:cCc"¬(¶h¶hÐháhóhii&i1i7iOiOi[imiwi†i‹i‹i—i—i�i�ijjj4j4jBjEjHjVj\jej�j#,ÛâCcCcQctc_c„cŠc±c$ †ŠxVxV�VŽV“V%H—¥ŽóŽó©ó«ó¼óÈóÍóÙóÙóÝóçó&Œ¬Ëþêþê ë"ë+ëGëZëZëeëjërëŒë”ë§ë±ë¶ëÂëÈëÏëÜëßëèëëëîëóëì' }�6½6½J½X½^½(Dv{v{’{”{§{¬{¼{É{Ï{Ò{Þ{)p¼Ônônô|ôŠô ô¯ô´ôÄôÆôÌôÕôÝôèôõõ!õ!õ(õ(õ(õö*h#9¸h¸hÎhÐhßhóhõhþhiii i_ilivi†i�i›iži¬i+$gl0k0k4kDkOkjk,œd‡ëë
+$1I]_ss{���ª²ÁÓÛï	$$.-|9¸Z¸ZÂZÏZàZêZñZøZ[	[![([/[9[A[H[O[W[][h[l[n[n[r[.X 6™6™U™X™]™`™i™t™‡™‘™™™�™ ™ ™¦™©™·™/D*7ÄJÄJØJèJïJýJKKKK0 
+"Ž"Ž&ŽOŽiŽ1”9qöqöyö�ö¬ö¸öÃöÑöãöñöùö÷÷N÷P÷T÷T÷_÷j÷y÷ˆ÷¨÷³÷¸÷Ê÷Ñ÷Ñ÷ã÷ä÷è÷2Xßñ~öŒöšöšö²ö¸öÁöÉöÔöÞöåöýöýöýö÷÷÷÷3P´z´zÈzØzÞzãzãzôzøzýzýz{4 $(ÐBÐBÞBòBøB5Œ¡Àr‰r‰‘‰�‰ ‰°‰½‰Á‰ʼnè‰õ‰ŠŠŠ!Š`ŠhŠ‡ŠžŠ¬Š³ŠºŠÁŠâŠèŠïŠòŠ‹6Œþj»j»t»v»Ž»œ»¹»»ð»ó»ü»*¼-¼1¼6¼B¼I¼k¼n¼p¼w¼™¼œ¼œ¼Ÿ¼ª¼±¼¸¼7@8DKK$K-K4K;KBKCKKK8<ðû,z,z@zNzYzjzrzzz‚z…z�z9,ZaEEECESEyE†EˆE:,JQøCøCüC3DCDiDwDyD;”£Äñæñæçç ç7çMçRç_çdç€çŸç¤ç¯ç´çÎçãçåçÿçèèèèèÀè<$ˆ�››¤²ÈÍ=<‰”ÒÄÒÄÜÄòÄÅÅÅÅ+Å1Å3Å8Å>H!{{{&{+{+{<{N{S{S{Y{?Lïþ�� �#�/�9�?�L�`�`�‚�‚�Ÿ�£�§�­�@ ƒ‡FFJY]A\˜«VêVêjêxê}êƒêŽê—ê—ê§ê³ê·êÏêÖêÙêÛêþêB4ˆ‘^^bl|�²²²¶C,jqFFFCFSFyFƒF…FD¸�ÇÖ%Ö%Þ%æ%ñ%&&/&C&M&Y&d&d&s&”&¹&Æ&Î&ä&ï&÷&÷&'''L'Y'a'w'‚'”'”'¢'©'»'»'É'É'Ê'Ý'E ’–¶¶ºÇËF —›ÎÎÒõùGp]ušÃšÃ´ÃÆÃâÃâÃéÃëÃëÃùÃûÃûÃÄÄ
ÄÄÄ$Ä<ÄVÄVÄVÄcÄHì<AéAéIéUéué‰é�éœé¨é¶éÅéýéýé)êFêPê_ê]êŒêŒêšêÀêÀêÏêÞêòêëëëë)ë)ë+ë+ë;ëGëGëKëPëYëkërë€ë�ëºëÃëÕëÕëÛë&íI|Xsñíñí	îîî&î)î7î:î>î@îCîFîNîQîYîmîwî�î“î–î˜îžîªîJ4•žªnªn´n¶n¾nÅn×nØnÝnK,'.nÝnÝxÝz݂ݜݡݧÝLP��À]À]Ò]Õ]à]å]ò]ý]^ ^*^3^<^?^I^M�[{p\p\Š\•\š\£\¶\Î\Ö\Þ\ë\õ\ü\]]]]]%])]2]8];]I]K]Y]Né%©ó©óÃóÊóÛóÞóÿóô ô-ôVôoô{ô‚ô„ô‡ô�ô‘ô¢ô¬ô²ôµô¸ôºôÆôÖôÞôäôñôôô÷ôõõ&õ2õ4õDõQõWõdõxõ{õ~õ†õ†õ†õŽõ•õœõœõªõÂõO œ þþP„
*>Ë>ËXË[ËnË{˗˚ˠ˩˵˷ËÍËãËçËýËÌÌÌ Ì!Ì!Ì1Ì4ÌJÌQˆ ±Ð±Ð¹ÐÄÐÔÐãÐïÐÑÑÑÑ Ñ ÑDÑSÑtьєііѢѢѴѻѻÑÍÑÒÑÚÑR,æíû*û*ÿ*+ +!+SL@O¦¦ÉÐÚÞâæððú
T ¡¥"15U äè&ä&ä*äAäCäVHú�i�i¡i®i³i¿ißiåiëiøijjjWHëùñhñhii#i/iOiUi[ihiqiri~iX ¦ª66:?CY «¯FFJY]Z<ÈÓÇÇÇ Ç#Ç/Ç1Ç=ÇDÇJÇRÇ[d^skMkMsMwMwM†M¥M´M½MÆMÞMðMùMN$N-N4N@NBN\°¥ÍŽAŽA™A©AºAÉAÔAãAðA	B B$B(B0B8BAB_BgB~B‚B†BŠB’BšB£BÁBÔBÝBîBõBõBCC]0&””””&”I”I”N”^8°(°(Ê(Î(Ñ(Ü(ù(ý())_ ëMëMôMÿMN`D»È _ _:_Q_^_^_h_ˆ_’_aL™¨QQQQQ'Q)Q7QBQKQKQLQRQb,biˆEˆEŒEÃEÓEùEFFc,RY€D€D„D»DËDñDÿDEd0ÁÉ
+‹
+‹‹]‹d‹j‹w‹Š‹–‹eYAAIT\}Œ•©¹ÌÙì
+ ,8=Z__lvŠ—°¿Òïú(=[gpu’›¨·Ìæñù	")49@f,ryˆFˆFŒFÃFÓFùFGGg$ûÃYÃYãYðYöYZh$+0NÌNÌWÌhÌz̶Ìi<$/Z—Z—h—p—x—ˆ—”—ž—Í—Ï—Õ—jô–Ï#F#F7FFFUF_FnF}F}FŸF´F¿FÆFâFïFýFGG'GGG=GSGeGpG‚G”G›G¢G¯G¶G¾GÎGÖGæGðG'H6H>HAHOHk@nz———#—&—4—8—<—?—M—T—Y—l$bBrBrUr[rjrtryryr…rŒr‘r›r¬r½rÑrÓrîrs5sKsVstsvs�s‹s–s s«sµsÀsÎsÕsãsãsíst.t9tPtUtWtat}t†tŽt©tmdÆÛcXcXqXvX†X‹XšXŸX¡X§X¶X»X½XÌX×XÛXáXnD/<®Ý®Ý·ÝÌÝØÝãÝìÝúÝÞ
ÞÞo<²½aaa,a@aIacaja€a†aŒaÂap,;
;
?
h
ƒ
¬
º
¼
q<bmÆ–Æ–Ó–Û–Þ–ì–ð–ô–———r|0¶û¶ûÇûÑûßû÷ûü$ü?üFüWüdüoüvü‡ü‘ü‘ü¢üªü¯ü¶üÃü×üâüsLš©õ†õ†‡‡ ‡+‡4‡N‡Y‡^‡g‡}‡Œ‡–‡–‡«‡t8ËQËQáQîQRR(R1R;Ru våvåzå“åvÔ,]ÉÉÑÙçú	 *8GXt|ˆ�˜˜£¥ºÆØì/<Wtvˆ‘‘££±¸ÊÊØØÝáw4¨±ƒ`ƒ`—`©`²`Ì`Ó`é`ï`ax0DL“D“D›D±D¼DËDåDíDyPZj5…5…G…N…W…e…j…m…s…v…{…†…Œ…–…zd¦»îóîóô
+ôôô!ô,ô1ô4ôDôOôUôXô[ô]ôaômô{H<JFçFçVç\çgçpçsç€ç‰ç‰ç�ç�ç˜ç|$PU'5;@}4ÕÞöö,ö:öBöMöfököröxö~¬LsºkºkÌkÛkákõkl l2lIl\lslŠl¡l¼lÀlÇlÍlÑlãlül	mm*m.m5m;m?mQmjmwm}m€mŠm?n*n*v*~*�*ž*¨*´*´*¸*À*Ä*Ý*+)+=+a+j+s+s+x+‹+�+›+±+Å+Ì+þ+1,B,R,h,|,ƒ,µ,è,ù,	-	--"-"-0-0-1-C-C-Q-U-Y-€P—§Û_Û_ñ_``/`9`;`G```k`q`u`}`�0jr®®¼ËÖÜÞÞä‚<KV0j0j9jCjSjUjˆj�j�j�j’jƒ˜ò÷÷÷÷"÷¯û„4ŠÓ&Ã&Ã>ÃFÃTÃ_ÃcÃiÃoÃ}Ò×Ã�ôùÿÃÖÃÛÃáÃøÃýÃÄÄÄ1ÄDÄWÄ\ÄkÄxĈėĤķĽÄÄÄÆÄÙÄóÄúÄÅÅÅ-Å/ÅBÅDÅWÅYÅlÅlňşťūŶÅÚÅ…H–å–åŸåºåÃåÏåÑåÓåâåâåñåóåóåøå†\ÜïãXãXóXYYYY Y5Y@YBYGYIYJYJYRY‡( ¦�ß�ߌߠ߱߳߈D¾Ë6ã6ãEãSãbãnãuã„ã�ã�ã–ã‰dÉÚÉÚÙÚôÚôÚöÚöÚöÚþÚÛÛ)Û5Û8Û:Û=Û?Û?Û?ÛKÛŠD-:DDD&D&D.DDDHDHDLDTD‹Ô
+;–r–r°r³r¶rÀrÆrÒrÙràrérörs
ssss#s*s,s6s;sDsRsXsgsssvsys�s†sœs¨s«s®s®s®s®s±s¹sÁsÍsÐsâsŒ81;¶Ì¶ÌÄÌÛÌæÌæÌñÌõÌõÌûÌ�$<�¡¡©¹ÉÛêó!-BPXmz�œ±»ÐÚïù*6BV}Œ›©µÁÒçü
);M_’ µÚñú	$;DOVakt„Ž0t|CNCNGNXNtN‰NŽN¨N�02:ýƒýƒ„„.„6„9„A„�¼Kv£T£T¿TàTòTùTUUU%U-U8UCUgUvU}U„U•U—UŸUªUµUÄUËUÎUÐUÖUÜUôUýUýUVV‘,ÑØ>ì>ìLìXìoìsìuì‰ì’8K–L–L°L³L¹LÅLÇLÖLÝLãLMM@MGMKMcMoMŒM•M•M•M¢MÛMçMóMNN!N2NENRNcN|NƒNŽNªNªN¶N¸N¸NÄNÆNÆNÒNÔNÔNäNçNçNóNÿNO"O+O6OLOZOZOZOkO„O‹O’O˜O›OçO“Pîþ>z>z^zqz}z‰zŸz¥z°z¶z»z½zÖz”4#ˆBˆB‘B¦B¦B³BÈBÈBÍB• ÌÐìì,ì5ì;ì–0ÊÒš‹š‹®‹í‹ô‹ú‹ŒŒ!Œ—0HP&ñ&ñ4ñBñJñmñ†ñ®ñ˜€6F6FJFQFYFaF}F}F‹F�F�F�FŸFŸF­F¯F¯F¿FÇFÇFÐFÜFùFùFGGG6G™Xð#R#R-RARRR]RyR|RŠR�R“R¤R¿RÃRš@$0ÉãÉã×ãÜãßãñã÷ãúãüãä›H2É2ÉGÉSÉVÉ_ÉkÉsÉ�ɟɥɨɴɜ îònänärä€ä‚ä�ä{°ðkðkll:lDlVlYlaldljlmlyl‹l˜lžl«l¶l»lÁlÓlÓlâlålïlòlþlmm#m0m;m@mFmXmXmXmXmcmcmqmž Ñõƒ=ƒ=¢=¤=µ=º=È=é=÷=>>(>/>1>1>C>I>O>Q>W>]>`>f>h>q>€>†>†>†>�>ž>ŸT…–óó*ó-ó;ó;óOó_ójópó{ó{ó{óó�ó `p„nònò‹ò‘òŸòŸò³ò¾òÂòÉòÌòÖòÝòíòñòñòñòõòó¡HïýÚºÚº» »-»8»<»@»D»N»X»X»Z»h»¢D"/\{\{j{v{{{{{Œ{‘{‘{—{£t¹ÒC)C)K)\)€)‡)˜)¼)Ê)Ø)á)ô)û)**)*?*A*W*m*m*m*o*¤X{�³:³:Ì:Ü:ô:;;;;$;$;0;<;>;>;F;¥XÞð+444;4Q4_4u4}4”4ž4»4À4Ç4Õ4Ü4ä4é4¦8w�J´J´P´N´^´|´ˆ´Š´Š´µ§8>H C C®C´C»CÑCÑCØCòCòCøC¨<u€ʤʤâ¤ð¤÷¤û¤þ¤¥	¥-¥=¥©`«¿ooo'oOouo€o�ožo£o©o«oªLÁâÁâÜâøâøâãããã"ã&ã&ã6ã8ã8ãoã«d@Õ^-^-i--†-¤-µ-Ä-Ñ-à-ô-.$.7.M.X.z.•.².×.Ü.õ.
+/*/A/Q/S/‰/à/±/¯/ÿ/0070L0f0f0�0�0¬0³0ï0ý0]1.1,1|1ƒ1ˆ1ž1¦1¦1Ë1Û1ü1B2222k2�2¥2¥2Å2Ú2û233$33x3x3x3}3}3Ž3©3·3Ï3è34444J4b4p4{4{4Ž4§4»4Ð4î4ò4ð4@5N5^5l5„5Ÿ5ª5Â5Ø5Ø5/66þ5N6\6l6‡6Ÿ6µ6·67Ò6Ð6 7 7)727G7G7X7_7t7t7…7…7ˆ7Œ7¬4
+¬t¬tºt¿tÂtÈtËtÍtÓt­,sz k k¤k©k³kÃkÃkïk®T©º ^ ^®^»^È^æ^é^ð^÷^_	____¯Ô%V£8£8Ã8Ñ8Ö8à8à8ç8õ8ø8ÿ8ÿ89999'9'93999F9T9V9V9V9Y9^9j9j9v9�9’9¥9¥9¨9«9»9°4r{û.û.//5/K/‡/•/™/±À6bÁØÁØÌØÐØôØÿØÙÙ*ÙIÙQÙiÙyÙ�Ù�ÙÁÙÃÙÃÙçÙéÙéÙ
ÚÚÚÚÚ#Ú#Ú/ÚCÚSÚ[Ú[ÚmÚtÚtÚ†Ú“ÚŸÚÂÚ²ÈÉ÷»»ÓÝîî.33EJJ\aaaahmm„„–››²â÷÷	 /’³ˆSq“O“O©O®OºOºOÆOÎOÖOáOêOòO÷OùOýOPP P'P(P(P2P´(|‚›/›/¤/«/Ë/Ò/Õ/µü‚½)ï)ï1ï5ïVïaïjï€ï”ï ï¸ïËïìï"ðDðYðbðdðlðtð‹ð“ðžð«ð¯ð³ðµðÈðÏðâðòðùðñ%ñ'ñ+ñ+ñ+ñ7ñCñCñHñQñcñjñjñ|ñ‚ñ—ñ¶€a}6Î6Î:ÎIÎIÎXÎXÎgÎgÎv΅΅ΔΨΣββÎÁÎÁÎÐÎ'Ó·¨r˜3P3PMPePzP�PŒP’P’P•PœP§P«P°P¶PÃPÉPÌPÎPÑPÔPÔPÙPèPëPýP¸LtƒŠmŠmžm«m®m²mÀmËmÔmómn
+nnn#n¹TÉÚ¶Ö¶ÖÄÖËÖÖÖùÖ×××!×&×4×:×=×C׺¼�ÈÞÔÞÔðÔöÔÕÕ!Õ+ÕCÕGÕ_ÕcÕ}Õ}Õ�Õ™Õ¤Õ­ÕºÕÃÕØÕâÕïÕøÕúÕÖ	ÖÖ4Ö7ÖOÖ_ÖpÖtÖxÖƒÖƒÖ‡Ö‡Ö‡Ö°Ö»4uu*u,u1u4u7uýGýTý`ýlýlýyýƒý“ý©ý¿ý×ýðýôýöýûýþ	þþ"þ"þ4þ:þaþÂ,z�>à>àBà|à“à“à�àÃ,fmÍ|Í|Û|á|í|ù|ý|}ÄH­»|s|s…s‘s¤s¯sÇsÉsÏsÚsÞsâsåsÅd¼Ñìsìsõs
tt4t6tLtbtut‹t¥t©tƬ޵K;K;g;i;ƒ;’;¿;É;Î;ý;<<<< <*</<2<A<F<U<n<u<u<‡<“<—<¡<ÇP,{C{C�C¤C¯CÁCÊCÕCÚCßCðCöCøCDÈ ÿöäöäåååÉŒ'FN”N”^”b”k”†”””™”œ”ª”¯”Δ֔••$•&•.•X•\•|•†•�•£•¾•Ú•ö•––!–ʰS{vþvþ’þ™þ£þ¨þ»þÆþÜþæþûþÿ
+ÿÿÿÿ,ÿJÿdÿZÿtÿŽÿ²ÿ¸ÿ¿ÿÓÿÛÿâÿéÿðÿ÷ÿ

ƒËøµï-�-�K�\�q�w�~�~�Œ�›�¢�¨�º�º�Í�Ý�ä�ó�‘‘)‘+‘C‘E‘H‘J‘J‘N‘N‘Z‘a‘a‘e‘p‘v‘‚‘Š‘¯‘ő֑í‘ô‘ú‘ý‘’ÌÜø+qqy}ˆ–ŸµÉÓßêø'D\`y‘ ¤¯»ÆÕä!MZ^k}}‹’¤¤²²³ÇÍ”1Ræüæüôüý ý+ý<ýPýhý}ý’ý›ý ý ý°ý¼ýÂýÎýåýþþþ!þ&þ,þ-þrþ΀5-‚-‚M‚Y‚e‚i‚m‚|‚�‚˜‚ž‚²‚Á‚͂ق݂à‚â‚ô‚ƒƒƒƒƒ#ƒ6ƒÏ$).øBøBC
C!C'CÐ,“šÞ½Þ½ô½¾¾¾¾#¾Ñ¨Çíyy y#y;yFyVyhylyzyƒy¥y«y«y·yÂyÐyÚyâyæyæyæyéyëyïyïyôyzzz#z%z%z;zÒLêù6í6íRí^íyí„í‘í¥í«í·íÓ åå"å0å2åÔ`(Ë5Ë5Ï5æ5ö566 676G6W6h6y6Š6«6Ì6ã6î6ù637ÕTsBsBwB“B¢B´B¹BÏBÖBèBûBC(C8C=C=C?CÖ`&d?dAdIdednd�d�d•d¨d¿dÅdÑdádádód3e×H_mó9ó9:!:':;:A:F:N:Q:]:Ø$zGGG&G4G?GÙÀnš}}}$},}A}J}J}e}k}k}u}|}‡}Œ}–}ª}¬}·}·}Æ}Î}Ù}Ý}â}æ}ñ}÷}ú}ý}~	~~#~Ú@/;j�j�ˆ�”�¡�¬�¸�Å�Ë�Î�Ñ�ã�Û0 '"„"„0„H„�„‡„‰„‰„�„Ü�k‹�…�…³…¶…Â…Â…Ä…Ñ…ß…ä…ç…ò…õ…ú…†"†-†9†C†F†H†K†M†P†U†Z†^†l†Ý<€‹@G@GNG\GaGgGsGsGyG�G“GÞ8%BÁBÁLÁTÁhÁ}Á…ÁˆÁŠÁŽÁ߀¾Ú™ñ™ñ¤ñ¬ñ·ñÂñÍñÖñìñò	òòDòZòtò|ò˜ò¤ò¯òÇòÒòÙòäòéòþòàLN]‚£‚£‹£‹£š£©£º£¾£Σå£é£é£î£á85?’’’’¢’¾’Ê’Î’Ò’Ö’Þ’æ’âœ$3737;7A7R7a7€7™7™7¥7¶7Á7Í7Í7Ú7ì7ñ78 808:8?8?8?8_88™8ž8£8ãx‚œ‰‰�§­¹ÉÌÐÙéìõø
+08AAGsx~‹ä8ãRãRóRöRûRþRSSSS SåD&ÝÝ&Ý.Ý6Ý>ÝFÝNÝVÝ^ÝfÝjÝnÝædavê“ê“ú“”””#”,”0”6”<”D”L”T”p”s”~”~”†”çH~ŒþÛþÛÜ'Ü8Ü=ÜIÜgÜmÜyÜ—Ü�Ü�Ü©Üè8—¡ðVðVWWW$W-W0W:Wé(.4R’R’[’i’x’‡’Œ’ê0²ƒ²ƒÀƒ؃„„„„ „ëDŒ™m†m†™†§†²†¶†º†¾†Â†Î†Û†Þ†î†ì€ÍéaþaþlþtþþŠþ•þžþ´þÈþÑþåþÿ"ÿ<ÿDÿ`ÿlÿwÿ�ÿšÿ¡ÿ¬ÿ±ÿÅÿí<#+#+++I+Z+j+{+Š+¤+¼+¾+À+îLÁÐ===0=E=K=Q=`=n=n=q=|=ïˆú=�=�S�w�‰�‰�›�¦�¼�¼�Ì�Î�Î�Î�ß�ê�ñ�õ�ý�‚	‚‚‚‚‚&‚ð8ÿ	²�²�À�Ë�Ö�ù�ŽŽŽñ?v|v||‹|›|¨|¹|Ç|Õ|ê|ñ|}})}1}R}f}i}q}�}’}¹}Ì}Þ}~~&~2~7~?~a~t~€~¨~òHÿ
ÖzÖzðz{{1{7{={={E{G{s{ó<:Ex[x[‰[‹[�[™[º[Ã[È[Ð[ô8JTnÍnÍ|͓ͩ͞͞ͱͱͷÍõDê÷ÉÿÉÿÛÿçÿýÿ""3CEpöX@R®~®~²~Ã~Ö~î~÷~
.0;FOXi||~÷$ôù��&�/�5�:�ø 
+NNN'N8NùDÌÙ–ã–ã¥ãªã³ãÅãÆãÚãÝãããúh-ƒS#S#{#}#†#š#�#¢#¦#Å#Ù#Ü#î#ö#ý#$%$'$F$O$O$O$T$Š$”$ž$¨$²$¹$Å$Ñ$Û$Û$Û$ü$ü$%%%%%%%%%"%$%$%)%)%)%-%H%^%i%€%‰%Ž%˜%¤%°%¼%Ï%æ%ø%ü%&&.&P&m&‹&‹&‹&‹&‹&•&ž&¥&%'û ¢¦@W@WIWVW[Wü@ÅÑÁèÁèÏèÖèÛèñèóèüèéé?éý4æÜæÜîÜöÜþÜÝÝÝÝÝþ,¾Ü¾ÜÆÜÎÜÖÜÞÜâÜæÜÿx7vvŠ�™ ³ÌÌÛñú	3:<?AAM”
+Û|ΠΠï ñ ¡¡¡'¡)¡<¡J¡U¡`¡t¡¡‚¡ˆ¡Œ¡�¡•¡™¡œ¡Ÿ¡²¡Ç¡Ï¡Ò¡ê¡ú¡ý¡¢¢¢.¢6¢9¢Q¢a¢f¢f¢n¢n¢‘¢‘¢‘¢•¢—¢—¢›¢�¢�¢¡¢£¢£¢§¢§¢§¢ª¢¬¢¬¢¯¢´¢º¢½¢Á¢Ã¢É¢Ì¢ä¢ø¢ý¢££££9£;£Q£Q£Q£V£V£X£X£]£`£†£†£†£ž£¤£»£Ê£Ù£î£¤%¤*¤*¤B¤`¤e¤e¤}¤›¤�¤�¤µ¤Ñ¤Ó¤Ó¤ë¤¥¥%¥1¥6¥6¥N¥e¥j¥j¥‚¥ž¥£¥£¥§¥¿¥Ý¥á¥ã¥ã¥ç¥ÿ¥¦!¦!¦?¦D¦D¦\¦s¦z¦¦¦—¦®¦µ¦Ã¦Ó¦÷¦þ¦§§§§?§A§A§Y§Y§~§Ÿ§¾§Ã§Ã§Û§Û§ô§	¨+¨ ¨C¨b¨ƒ¨†¨‹¨‹¨£¨º¨Ä¨É¨Ú¨Ú¨à¨ë¨©©© © ©U©c©i©€©ˆ©‘©‘©�©¡©¡©ª©¹©Â©Â©Ë©Õ©ñ©ª,ª;ªAªVª^ªjªtªtªŒªŽª™ª±ª³ªÓªÓªØªØª««%«%«1«5«5«>«M«V«V«_«e«�«Œ«¤«¦«±«É«Ë«ç«ç«ç«÷«¬¬¬2¬I¬N¬N¬f¬}¬‡¬Œ¬¢¬¢¬¹¬¹¬Å¬É¬Ï¬Ø¬ç¬ð¬ð¬ù¬­­­:­E­`­b­b­k­ƒ­Ž­¤­±­¹­Ú­Ü­ä­þ­®
+®®0®:®:®U®_®j®†®™®°®¸®Â®Â®Ë®Ï®æ®¯)¯)¯)¯=¯F¯J¯a¯™¯™¯›¯›¯·¯Á¯É¯É¯Ò¯Ö¯í¯%°6°<°S°[°h°m°m°v°z°‘°É°Ú°ã°è°è°ó°÷°±&±0±5±K±c±c±�±—±—±´±¸±Ë±Ó±Ú±å±ê±ñ±ñ±ö±)²=²[²r²|²†²†²–²À²Ð²â²î²ò²³³*³.³.³.³.³2³7³7³B³F³^³u³³„³š³²³²³Ü³æ³´´´´´ ´7´N´X´]´s´s´‹´‹´½´Ç´ä´ë´ö´û´ µ&µFµXµ`µbµ{µ‰µ¦µ¶µ¶µãµåµ¶¶-¶8¶B¶L¶S¶p¶y¶y¶¦¶¾¶Á¶Ü¶Ü¶Ü¶á¶æ¶·-·K·b·g·q·{·¨·¼·¿·Ö·Ö·Ö·Ö·à·ö·
¸¸¸¸4¸K¸U¸e¸e¸�¸•¸˜¸ª¸»¸Á¸Ø¸à¸í¸ò¸ò¸ò¸¹"¹%¹7¹P¹U¹U¹m¹„¹Ž¹ž¹ž¹º¹Î¹Ñ¹ã¹ô¹ú¹ºº&º+º+º+ºGº[º^ºpº‰ºŽºŽºŽº¦º½ºÇº×º×ºüº
»»$»;»C»L»Q»Q»Q»v»‡» »¥»¥»º»º»º»Ö»Ö»ð»÷»4½@jŽjŽ~ŽŒŽŒŽ™Ž¾ŽÉŽÍŽÛŽÞŽæŽ|�œB¥B¥_¥a¥o¥o¥}¥�¥¸¥Û¥é¥ù¥¦¦6¦V¦k¦p¦p¦p¦‚¦…¦‘¦8v€jÄjÄyćĘĜĜġġħĬ§Î¹ß¹ßÉßßßõßóßààààà.à<àKàQàYàeàkàkàràvàvàxàßá8ÔÞRÇRÇaÇwdžǤǨǮǰǰǶÇ@&2’Á’Á£ÁºÁÈÁÔÁèÁõÁüÁÿÁÂ4GP:‚:‚N‚d‚o‚t‚‚‚�‚˜‚©‚p+C££ÃÔÛìóó		 -55`‹¶Ãááîîîü	DŸ¬ss s7sBsHsNsTsjsqsvs|s
+xRls
+s
+Š
+”
+¤
 ¿
-Í
-Ô
-Ù
-Þ
-å
-÷
-÷
-ù
-Q¬Íô:¥:¥\¥a¥j¥j¥v¥…¥’¥–¥ ¥²¥²¥Â¥Î¥Ó¥Ó¥è¥ó¥û¥¦¦¦¦¦(¦6¦@¦C¦H¦U¦b¦b¦t¦R�-Mö7ö7#8&848=8=8T8e8z88’8Ÿ8¤8¨8¹8ß8ç8ë8ð8ø8
-999P9SH¾ä¾äÇäÜäåäðäòäôäååååååT¸9£~C~CŸC¢C¥CÂCæCíCøCDD&D.D4DADQDeDjDyDŒD¬DµD¬DÇDÉDÒDÉDäDæDïDæDEEEEE!E2E7EcEŠEŠE�E“E¸EÀEÆEÓEãE÷EüEFFAFMF`F€F�F€F›F F­F F»FÀFÍFÀFÛFàFàFðFðFGGGEGGGlGlGrGuGƒGˆG›G¦GµGµG¾G:HU0	ÓÓ Ó)Ó/Ó8Ó?ÓCÓIÓV(ˆŽrrrr"r-r6rW¼w¢{S{S¥S¨SÄSÖSÝSêSöST	T
TT T.T7TPTPTWT]TdTqT|T‹T‘T“T•T›T¡T¹TÂTÂTÉTäTçTùTX  CÙÉÙÉáÉåÉñÉÊÊÊ'Ê0ÊEÊnÊzÊzÊ�ʞʩÊÇÊÇÊîÊðÊðÊðÊËËË!Ë;Ë;Ë;ËMËTËTËfËlËtËYD�œ!! !,!B!\!g!g!x!ˆ!Š!´!Z¼Bú§ú§¨¨"¨.¨<¨L¨t¨—¨¦¨ѨÕ¨ݨ稩2©@©P©[©†©–©›©£©ΩÒ©ä©é©ö©ªªªª"ª[@nz88#8D8H8[8d8h8j8\ *nvv�…�®»Ì×àö	2>Vfy��²½Åêïù$3@UMpˆŒ‘‘¢¢µÇÚðòò 
 
 
     ( : A A S Y  ]@1=qàqàà„à‡à™àŸà¢à¤àªà^è�ƶr¶rÐrèrôrssss&s)s:s:s:sAsNsQsVsSs°sÇsÊsÌsãsæsèsðstt	tt&t6tDtMtTtYtYtYt_tst_D	J§J§^§†§©§¶§çΧê§ò§ú§` 	
öãöãäääa4|…>ÿ>ÿLÿUÿ\ÿeÿb8äЉÖ‰߉å‰ë‰ô‰÷‰ý‰ctRk>c>cccec~cžc¤cžc»c½cÃc½cÚcÜcÜcìcîcîcþcþcdBdd0»@»@Ä@Ö@ä@è@ì@ì@ñ@e@b½b½q½y½�½—½Ÿ½§½¬½²½´½´½º½fØNʋʋà‹ï‹ú‹Œ#Œ#Œ4ŒLŒYŒlŒxŒƒŒ“ŒµŒ·ŒÔŒáŒáŒáŒòŒ�%�.�4�;�A�F�L�P�W�b�h�’�gè[‘LL-L/L>LJLVLkLpLyL|L�L‹L‹L•L˜L®LÆLÂLÔLÙL÷LMMM M$MHMJMfM`M’M’M¢M²M¹M¿MÂMÇM×MÞMáM³Nh”	*kk�²×ü
-
G
„
Á
Ã
Ñ
ß
í
í
!>P`uŽ °ÅÞåì$0i€]6P6PJPLP\PjPtP˜P¼PÄPÖPäPîPÿPQQ"Q'Q@Q`QjQ`Q�QƒQ�QƒQ¤Q¦Q°Q¦QÇQÉQÉQÙQÙQßQâQçQýQR
-R#RFRRRyRƒRyRšRœR¦RœR½RÂRÌRÂRãRèRèRøRøRSSS$S4STS@S`S`SlSpS|SŠS“S§S»SÂSÉSÌS4Tj`AU!))1@Lgpw|‰š¬°µ·kðñ)¦¦ÄÇÊÔâí
:GR`q~‰²·½ãíóö-=Edio‹�¤¼ÏâùI_btl<5@¬u¬uÄuÓuÚußuêuÿuvvvm0	BBB(B(Bã@ã@ãGãJãVãr0	€€(€2€I€O€Q€W€s ää"ä0ä2ätL+NwNwfwhwrw›w©w«wÀwËwÑwæwu,R;N;NSNUNaNaNmNzN‡N�N”NšNœN N°N¾NÎNÙNÞNÞNåNåNðNðNOO(O*O0O2O4O6O6OAOCOKOQOSOSO_OiOlOlOlOlOwOOƒO�Ovx8ÞBÞBôBCC$C3C9C=CRC`CfClCoCyCw¨5[vlvlšl¥l­l¼lÁlÆlÖlÛlölölýlm	mm m%m'm'm.m4m:mBmPmVmXmXmhmjmjmzmÄmxMÃGÃGÝGëGHH"H/HAHVHfHmH}HˆH—H¢H¾H¾HÂHÍHÙHÛHÛHÛHáHáHäHîHîH	IIII+I>IDIMIWIdItI˜I¥I°I°IÂIÂIÂIØIåIüIJJJ J J$J$J;Jy,07d{d{m{w{x{}{zpß÷2Ä2ÄCÄOÄ]ÄiÄuÄ�Ä�Ä�Ä�Ä—Ä£ÄÀÄÜÄÜÄÜÄÜÄâÄâÄòÄôÄôÄÅ{$‚‡~ß~ß‚ß�ßÄßÐß|<7B
Œ
Œ!Œ!Œ=ŒEŒUŒ\Œ^ŒfŒ},hBhBlB€B„B„BˆB~,
-HBHBLB`BdBdBhBhN¤V9V9a9l9|9„9¥9´9Å9Î9â9ú9
-::-:5:Q:f:q:y:ž:£:­:º:Ì:å:ô:ô:;*;4;Q;\;d;;Š;Ÿ;¨;Â;Ñ;Ý;æ;ë;<<<4<0<J<U<]<h<h<h<s<s<„<„<—<©<¼<Å<Å<Ø<è<ð<ð<ð<þ<	====0=4=;=€DÛèiïiï{ï‡ï�ï·ïÂïÂïÓïãïåïð�LN];J;JDJIJPJPJoJ’J™J¨J·J¼J¾JÀJÀJ‚l£º*™*™>™J™X™g™g™�™²™½™Ç™ЙÝ™è™õ™ššš#š'š/šƒœDgyËyË�˅ˑˡˬ˻ËÇËÐËèËúËÌ8ÌDÌOÌmÌm̖̖̖̮̮̔ÌÀÌÇÌáÌáÌáÌóÌúÌúÌÍÍ„øQÆ`ä`þ`aa.a7a@aGaPaYaqa€a˜a«a´a½aËaãaöaÿabbb&b,b7b9b�G�X�€�£�²�¿�Ê�ç�ú�
ž
žžž*ž<žFžNž‡œ’µ¶N¶NÈNÊNØNäNýNOO,O1OGOCOSOsOsOˆOŠOŠOŸO¡O¡O±O³O³OÃOÃOÊOÊOÐO0PˆHLZ–K–KªK¿KÉKÝKäKéKíKóKúKýKL‰àø,ÓÓæí))GGez†°¶»àý7TqŽ«Èå <Yv“°Íê$A^{˜²Ìæ    ' �!Š<
-Z€Z€n€}€�€�€’€š€�€¥€‹(óùFãFãPãZã„ã‰ãŒ$cWcW}W™W�P¨¸Ã&Ã&Ç&Ö&Û&ç&ó&ÿ&''' '-'D'V'X'Ž@
ã)ã)ï)ö)ü)*** *%*0*�X�¢r˜r˜‡˜‘˜•˜•˜½˜à˜ë˜	™™™™$™�,›¢N½N½b½t½y½Š½�½·½‘x£½ÖàÖàßàìàûàáá=áRáXá^áeáráŽáŽá¢á¬á´á½áÕáÞáÞáóá’8¶ÀK:K:g:t:y:�:’:§:“(¿Å¦˜¦˜®˜¸˜Ë˜” £Ç»/»/É/Î/Ö/Þ/ë/ý/00030I0_0u0‡0Ž0Ž0¤0±0±0Ç0Ö0Ö0Ý0ä0ë0ð0ø0•8�§ÉÉ×ßç'-–P:J˜i˜i°i¼iÄiËiÔiÚiÝiÝiñiþijjj—øE››(›8›?›G›N›j›…›…›‹›”›�›¦›¯›±›º›Ã›Å›Å›Î›Ý›â›â›ë›ô›ù›ù›œœœœœ"œ'œ'œ'œ0œ9œ>œ>œJœSœXœoœsœsœ�œ�œ�œ�œ¡œ�˜XµÇ¢Â¢ÂªÂ¶ÂÁÂÐÂÜÂåÂìÂúÂÃFÃFÃXÃ_Ã_ÃqÃrÃvÙÈÝp2p2Œ2’2œ2Ÿ2Ÿ2¨2³2½2Ç2Ó2Õ2Û2â2å2è2ð2ü233
3333#3)32323:3C3I3R3R3R3R3X3`3c3s3š,�ˆ"Á"Á+Á7Á?ÁDÁIÁ›8_i&&4>HS[]]cœx^xk[k[�[ˆ[–[–[¢[­[Ü[Ü[ß[á[á[æ[æ[è[è[è[ê[ê[ê[ó[ö[ù[\�,ÛâŒyŒy•yŸy y¥yž$(-����*�0�Ÿ<@KÊ�Ê�à�ê�î�ó�ÿ�����  úþŽãŽã’ã³ãµã¡t.RžRžbžnžwžˆž°žÓžâžïžŸúž$Ÿ8Ÿ>Ÿ@ŸBŸHŸJŸWŸZŸbŸ¢h^tš š ¼  Ë Ë Ô ã ð ¡&¡.¡0¡B¡B¡B¡S¡`¡`¡n¡£Ht‚î{î{÷{ü{ý{||| |#|'|7|<|?|¤<ðûÕ‘Õ‘ê‘Ù‘ù‘!’¥€�¹2£2£P£a£i£|£Ž£™£¤£º£¾£Σà£è£è£2¤7¤7¤Y¤Y¤p¤�¤–¤¸¤¦˜ñ³2³2Ã2Í2Ò2×2×2æ2ë23
-33333 3*3,3;3=3I3S3a3f3u3|3~3~3~3„3§€~š6Ò6Ò?ÒBÒYÒYÒpÒ„Ò¢Ò¤Ò¼ÒÏÒÚÒëÒÓÓÓ-ÓKÓMÓeÓxÓxÓ{ÓÔÓ¨4<E5550525=5?5?5G5©X€Ò��2�B�I�Q�X�t�x�—�—�¹�¹�¹�Â�Ä�Ä�Í�Ï�Ï�Ø�Ú�Ú�ã�å�å�î�ð�ð�ù�û�û�žžžžžžžžžžžž7žGž[žkžkžmžmžvžyž~ž~ž‡ž‡žŒžŒž•ž¢ž§ž§ž°žÄžÇžÌžÌžÕžÕžãžçžÀŸª`Ui{?{?›?¦?¬?·?¹?Ê?×?Ý?Ý?é?«0;CÓAÓAÜAêAðABBB	B¬(‹‘�V�V¤V¯V¸V»VÃV­ \€ÉÐÉÐÑÐÜÐìÐûÐÑ+Ñ+Ñ@ÑHÑMÑMÑZÑpÑ|фьўÑËÑ×ÑêÑòÑ÷Ñ÷ÑÒÒÒÒÒ.Ò3Ò:Ò®°.V±Î±Î¹ÎÄÎÔÎãÎïÎÏÏ@ÏeÏjÏjÏχόόϳϻÏÃÏÕÏÐÐ!Ð)Ð.ÐCÐEÐEÐQÐQÐcÐjÐjÐ|Ð�Ð�Я8LVDvDvTvWvYv^vgvjvovwv° ~‚ææêùý±(ƒPƒPŒP–P¡P©P®P²DÐXÐXäXöXýXYYYY'Y*Y2Y³h°Æ8OYj€¤»»Ñô*´X=OÝÝÝÝ/Ý7ÝUÝYÝeÝeÝy݂݆݊ݵ\ReFpFp\pcprpyp‚p‚p˜p£p«p¿pÈpÎpÙpÙp÷p¶PFVH5H5f5l5q5�5“5˜5¶5¸5Æ5Ì5Ï5Ý5·lXo¦ð¦ðÇðÊðØðØðäðëðððóðùðüðñ	ñ	ñññññ'ñ¸Œƒ¢Ó-Ó-Ü-...W.¡.®.°.È.È./ /!/9/9/I/i/p/u//¦/­/¯/´/·/¹ˆ;Y„„„„„(„5„>„G„P„Y„m„m„x„~„€„�„—„¦„¯„¸„ՄՄׄç„í„ò„º4¼t¼tÐtßtätòtõtûtu»\•¨²Á²ÁÈÁÔÁÖÁäÁúÁ	  Â;ÂCÂK¼¨'’�’�¤�¯�´�Â�Î�Ú�ã�î�ù�Ž	ŽŽ%Ž3ŽLŽWŽ^ŽrŽ‘Ž™Ž¡Ž¬Ž®Ž¿ŽÊŽÑŽߎêŽìŽõŽÿ޽ W[‘БЫнÐÇоDt�ëë-ë7ëIëPëWëgërë€ëƒë‹ë¿<)4\u\usuvu{u~u‘u—ušuœu¦uÀ´^ÇIITu|‹˜¤³Ç×íú
.=JSSl�­àåÿ/:ZckxŠœ¼Ñäþ-9KPbtŒœ¨»»îù,8DDIXf©°µÕÜ$2\^^c~…��ž³³ÄËààññôüÁh
- öìöìí í+í7íCíLíUí^ígípíyí‚í‹í”í�í¦í¯í¸í¸íÐíÂ0¾Æ__)_E_\_h_n_t_“_ÃX’¤ 0 0®0·0Ã0É0Ì0Ñ0×0Ú0ß0ß0ì0ð0ó0ó0ù0ÄÜ‚µÖZÖZüZ[[%[%[;[B[R[a[a[f[�[„[‰[—[«[²[¼[¼[Ñ[Ñ[ç[õ[û[\\,\6\9\<\A\O\e\o\r\u\}\‹\¡\«\®\®\µ\¹\Ë\ÅLüSGSGbGpGpGzG„G¡G¬GµG»G¼GÂGÆ PTŽÝŽÝ’ݾÝÀÝÇôȶ#¶#¾#Â#Ê#Û#ê#ô#$;$M$_$_$c$r$|$�$—$›$ª$Ç$Ì$Ì$â$ê$ý$%-%:%B%G%Z%i%Š%—%¢%´%Æ%á%è%ú%ú%&&	&&&)&-&1&È8AKvv$v'v)v.v1v4v9vAvÉDz‡ÄqÄqÈqÎqÔqÚqàqæqìqòqøqþqrrÊhÖ,N3N3Y3q3‚3‘3›3¤3µ3Í3å3õ344,4A4W4_4„4‰4“4¤4¶4Í4Í4ñ455585G5O5O5n5~5˜5Ø5«5³5ž5þ56 6 696N6h6r6…6�6x6Ø6Ø6Ø677 7 727D7L7_7w7Š7’7’7 7©7´7Â7É7Ô7â7â7ç7ó7Ë4{„———— —4—;—@—H—Ì<²½ÈWÈWìWðWXX$X.X1XAXÍ8§±XWXW|W€W–WªW´W·WÇWÎLú	vìvì’ìžì¹ìÂìÏìãìéìõìÏ`L`��:�F�Q�V�d�o�~�„�•�™���£�¦�­�¸�¸�Ä�Ð Ÿ£êkêkîkùkûkÑ #GÖíÖíëíòíüí
-î
-îî+îNîPîrî‰î«îÑîóîýîïï-ïEïNïNïgïqïŠï˜ïšï¡ï¨ïáïÒ¼\‡‘á‘á­á°á¹áÂáÌáÞáááäáéáùáüáââ#â%â%â9â9â<â?âMâQâgâmâtâ{â~âƒâ˜â›â�â�â²â²â²âÄâÓ`¹Íí‡í‡	ˆˆˆˆ ˆ%ˆ1ˆ9ˆEˆIˆQˆ]ˆ_ˆ_ˆbˆnˆÔ ’–ÈVÈVÑVÞVãVÕ\"8Y8YHYMYWY_YhYkYrYuY}Y„YŒYÖd<QVoVonowo’o¡o¶o¼oÄoæoôop(p.p7p7pCp×\Æ>Æ>Ô>Þ>å>ë>ô>?
???(?E?N?W?]?e?Ø<±¼`m`mtmwm€m�m•m©mºmÙ|øBnBnxnlnˆnŽn�n¢n³n·n»nÅnÊnÚnànçnênünÚ´f�þpþpq!q*q>qHqSqUqiqvqqƒqƒqŒqžq£q·qÜqõqüqþq"r:r:roCoEoÞ@›§k&k&y&€&‡&‘&˜&š&¬&±&¾&ß,„‹¬w¬wµwºwÂwÈwÈwÍwàD -QÎQÎ_Îg΃΃ΈΈΈΕΕΡΡΫÎá4›¤í}í}ö}~~ ~&~(~(~-~â /3(C(C6CJCPCãHø"Å"Å7ÅCÅFÅOÅ[ÅcÅ€Å�ŕŘŤÅä$¦Û¦ÛªÛ®Û°ÛåDÍÚTyTybynysysy€y…y…y‹yæhC™mŒmŒ‡Œ‰Œ¢Œ®Œ²ŒÎŒéŒéŒéŒéŒéŒõŒ����%�5�?�D�D�M�]�b�b�s�x�{�‡�˜�¨�ª�ª�ª�Ç�É�É�æ�æ�ì�ø�ŽŽŽ Ž"Ž.Ž?ŽPŽRŽRŽhŽjŽjŽ€Ž€Ž†Ž’ŽžŽ¥Ž©Ž¹Ž¼ŽÈŽÙŽëŽíŽíŽíŽòŽ6�çxš´=�=�U�d�j�m�ˆ�£�£�­�¯�¯�¹�»�»�»�Æ�È�È�È�Ó�Ó�Ó�Ø�ê�è UyÞÝÞÝçÝ÷ÝÞ&Þ8Þ:ÞXÞgÞgÞ|Þ~Þ”Þ¬Þ³Þ³Þ´Þ´ÞÂÞÍÞÜÞÞÞêÞõÞß
ß ßéHŒšÔwÔwèwïwxxxx%x(x-x/x7xê8ðú³V³VÓVÞVìVäVÿVWWWWë@ƒ�——Зø—˜(˜5˜@˜b˜j˜p˜ì(>D¦š¦š³šÈšôš›í ßã¾â¾âÈâÛâàâî$§¬œxœx¥x­x³x¸xï<©´RÂRÂhÂ~Â�““˜˜ Âðd¶Î\Î\ð\ô\ü\
]
]#]+];];]G]V][]t]w]|]�]‘]œ]£]§]«]¹]Í]Ô]Þ]ä]ç]õ]û]^"^$^'^'^)^C^O^U^^^j^‹^�^›^¢^©^¯^²^À^Ö^Ö^Ö^Û^ç^ÿ^______+_A_A_A_I_U_m_q_|__†_—_—_ž_´_ñÀI3R3RGRTRZRbRoRqR‡R�R�R™R²RÀRÉRÔRßRâRéRîRöRûRS
S S&SLSOSjSjSjSnSsS�Sò4 (,u,u:u7I7M7M7V7Y7g7d!6V™V™~™†™ ™«™®™´™¼™Ð™à™í™ï™ý™
-šš.š0š0š@š�Ssæzæzðzözýz{{>{S{S{X{_{w{�{©{®{²{Á{Ã{Î{Ù{ä{ä{è{ UYÆÌÆÌÚÌéÌñÌ€éÈéÈÉÉ,É>ÉSÉYÉ^ÉdÉgÉuÉ�ɄɇɓɘɡɦɭÉÃÉÃÉÙÉ@v‚———C—f—s—€—‹—®—¶—»—Ìh—&ç&çAçKçYç_çiçiçvç|ç€çƒç…çŒç“ç�ç©ç²çÆçÛçøçèç
è
èèAèCèPèWènèzè‚è„èžè¹èÅèÒèéì¥Ü-~-~G~O~W~f~w~y~�~¢~ž~±~Á~Ç~Í~Ô~Ý~û~÷~
-1BEJPp†“𥩮¹ÄÊÍÓâóø€€!€L&5˜G˜G¢G©G´GÀGÇGÇGÍGÔGäGæGíGòGöG,‹’μμâ¼ô¼ú¼½½<0;‰‰›«Ëßåççí<w‚r¼r¼�¼†¼¡¼¸¼¼¼¼¼Á¼Á¼Ǽ\õz¦z¦ˆ¦�¦•¦œ¦¡¦ɦì¦ù¦§§.§6§=§=§@§F§,“š>à>àLàgàqàvà‰à�à¼ÐûÃEÃEïEõEF&F-F9FEFIFWFvFvF•FŸF§F®F¶FÀFÈFÜFíFþFGG#G)G1G1G5GRG 4#àà
-ààà!à'à'à,à <ÆÉÆÉÚÉíÉúÉÊÊ*Ê:Ê=ÊMÊ!4ÓÜ(2(2<2>2G2G2T2\2a2i2",W^s7s7�7ƒ7•7�7¢7¨7#DJWñéñéþéêêê*ê2ê:êBêJêTêYê$ø^˜ùõùõöö#ö2ö;öIöVöaöqö†ö›ö²öÁöáöðö÷÷&÷=÷F÷U÷q÷ˆ÷˜÷¥÷²÷½÷Ò÷á÷ó÷ø÷øøø0øBøYøbømøtøø‰ø’ø–ø%(QWnðnðyð�ðœð ð&0V^þþ  $'@	��•£±»ÌÝçñû(hr’r’{’‰’˜’£’³’Ã’Ó’ã’ò’““!“B“D“S“b“r“‚“«“«“°“)ˆ C<C<c<m<p<x<ˆ<ˆ<™<£<¶<À<Â<á<æ<ô<=
==)=3=3=3=C=*PÙéFëFëdëwëƒëžë¯ë¼ëÐë×ëÝëìë+$mrXkXk\klkqk�k,H¾ÌHXHX^XcX|X‡X�X’XžX¡X¤X®X-D&³P³P¼PÊPÊPÌPÒPÝPÝPìPíPòP.(¤ªlllll l"l/D.;žåžå¬åºåºåÂåáåûåûåÿåæ0d>S±à±àÊàÎàÚàÚàæàæàóàóàáá á2áGáQá`á`ájá1ÔTîÄîÄÅÅÅ$Å7ÅAÅGÅKÅNÅPÅVÅZÅ]ÅcÅfÅyőřŜŭÅÁÅÈÅÒÅÖÅéÅìÅøÅýÅÆÆÆ8Æ@ÆCÆTÆlÆsÆsÆ‚Æ�ƪƶÆÕÆÕÆæÆþÆÇÇÇ!Ç5Ç<ÇAÇAÇRÇfÇ}ǂǂLjǙǭÇÌÇÑÇÑÇ×ÇèÇüÇÈ È È1ÈEÈRÈWÈWÈhÈ|ȉȎȎȟȳÈÀÈÂÈÂÈÂÈÂÈÂÈÓÈëÈúÈüÈüÈ
É!É*É*É0É0É9É9ÉÂÉ24ÂËÒµÒµàµåµðµóµ÷µýµ3l 7C=C=a=d=l=€=€=’=œ=°=º=¼=Û=à=î=ü=>>#>->->;>4ˆ7U;>;>a>e>h>{>—>—>§>°>Â>Ë>Ò>×>á>ê>ô>÷>ú>ÿ>? ?0?D?R?b?b?t?5ˆXvº»º»Ñ»Ô»Ô»å»î»ø»ü»ÿ»¼¼¼ ¼ ¼%¼,¼0¼9¼9¼B¼G¼S¼e¼g¼q¼6XÉÛùdùde&e+e7eQeWedeoeveeƒe�e7X¶Èadad�dŽd“dŸd¹d¿dÌdÙdàdédídùd8$
V’V’l’¦’¼’Ê’9 X\vÙvÙzكمÙ: éíããã#ã(ã; á剉1‰C‰K‰<(7=FšFšSšhš�š¡š=0‚І¼†¼ ¼£¼£¼¬¼½¼À¼È¼>Hª¸m‡m‡ˆ‡¥‡¯‡¶‡¶‡Õ‡Ú‡Ü‡Ü‡æ‡?Ä Lò¹ò¹ººº!º&ºDºDºMºbºwº~ºŠº–º¢º²º·º¼º¼ºúʺÓºÕºÕºܺ纻»»»&»7»7»7»B»I»N»U»X»d»@XºÌº¤º¤ܤà¤æ¤é¤ô¤ô¤¥¥¥ ¥"¥(¥6¥A¨Cib•b•‹•�•𕤕®•º•º••ë•ô•ù•––
-–
-–"–7–:–=–C–J–N–}–�–‰–‹–––––›–›–ª–º–B0—Ÿ‘Û‘Û§Û³ÛÞÛàÛàÛèÛCD2¹2¹;¹C¹C¹P¹b¹j¹o¹{¹�¹ƒ¹ƒ¹ˆ¹DLÎ’Î’Þ’ì’ü’ÿ’*“N“_“¤“¨“°“EØ9"s"s&O&g&i&i&k&P0$,ËËÓéî
 Q@

-½
-½½½$½8½B½G½S½Y½[½[½`½R4ÇГ_“_±_Í_ä_ð_ö_ü_`"`S,¢©KMKMTMqMƒMƒMˆMT<R]‰õ‰õ›õ«õËõêõðõòõòõøõU`1ò1ò9òHòTòhòyò„ò�ò•ò—ò©ò»òÂòÂòÔòÕòÙòVTDU{{–­¸ÃÞ-4;FVgnW8$3*3*<*L*T*a*c*p*p*s*
\ No newline at end of file
+Ú
+í
+þ
+)EJU_lv„Š–�©Þ(-3+	+	/	I	m	˜	xz®z®Œ®›®ž®¿®â®ò®¯+¯8¯j¯w¯‡¯�¯�¯�¯¯¯²¯·¯·¯ǯͯЯ3°
@=I)í)í;íFíSí[ícíkísí{íƒí‰íX7‰îÀîÀÁÁÁ)Á0Á8Á>ÁEÁ[ÁiÁmÁrÁxÁ†Á‰ÁŽÁ‘Á‘Á¡Á²Á´ÁÆÁÈÁÕÁÚÁáÁãÁðÁòÁòÁÂÂÂÂ$Â&ÂFÂKÂRÂ[ÂaÂgÂnÂqÂqÂ�’”¿ÂáÂãÂêÂìÂøÂøÂÃÃÃ&ÃD3@
+Â
+ÂÂ0Â>ÂJÂJÂ_Ât€ŒŽ”Â@ˆ”3O3OIOkOqOvO‰O–OœOŸO§O0qãqãzããˆãŽãŽã“ã,;BZ˜Z˜i˜u˜ƒ˜Œ˜‘˜—˜8ˆ’öàöàáá>áNáPáWá_áaágáä6¿¿$¿'¿*¿>¿F¿M¿a¿d¿f¿‰¿‰¿Œ¿œ¿ž¿ž¿¡¿£¿£¿¦¿½¿Ò¿í¿÷¿À	À	À	ÀÀÀÀ/À5ÀDÀTÀhÀxÀzÀŒÀœÀ¡À¡À­À­ÀºÀ½À½ÀèÀô…¾¦—¦—¸—»—Å—Ò—Ö—Ü—Ü—ã—é—í—ñ—ø—þ—˜˜˜˜ ˜%˜,˜2˜9˜?˜F˜L˜Y˜_˜f˜o˜w˜w˜€˜�˜’˜¥˜§˜·˜¾˜É˜Ô˜ß˜ê˜õ˜™™
+™LWf˜j˜j¡j±j±jÏjÕjåjëjñjkkkk*khÝó]€]€r€�€†€–€ž€ž€¬€¶€Å€Í€Ù€è€ô€ÿ€����D<IþÌþÌÍ.Í<ÍLÍNÍPÍ[Í_Í_ÍgÍP„”*n*n9nBnLnNn`n`n`nbnjnqn”n¢n£n©n0Ž–‹_‹_¡_´_Æ_Ì_Ï_×_<Zeìpìpúpqqq#q(q,q2q\ÇÚ~~‚•¨»ÆÚë
/Je€›¶Ñì¶TK\òÂòÂÃÃÃ"Ã:Ã@ÃBÃMÃeÃqÉÃ�Ã�Ã�Ã�ÕÃX£µ�f�f¡f®f³f¿fßfåfòfÿfggg g X†˜	Ö	Ö$Ö,Ö7ÖSÖSÖ\Ö\ÖaÖrÖ{Ö†Ö†Ö’ÖŸÖ ,£ª–¾–¾ª¾¼¾Á¾Ò¾ÿ¾!ä6UŠUŠoŠrŠuŠ{Š�ЖЙдоŠÃŠÊŠÏŠÏŠàŠÒŠîŠ‹‹%‹.‹6‹G‹G‹G‹P‹W‹e‹g‹r‹x‹—‹§‹¯‹Á‹Ê‹Û‹ã‹õ‹ø‹ø‹ø‹ø‹ŒGŒ"	IžZžZ¾ZÍZÙZäZïZ[[![-[>[G[S[X[\[e[~[Š[Š[¥[·[Ê[Ø[í[ó[\ \ \+\/\3\K\Y\„\_\“\ž\µ\¹\À\Ë\Ð\Ð\Ð\å\ë\
+]]]]!]'])]9]#œ'JiÊiÊ}Ê�ʡʮʲʻÊÂÊÈÊÊÊÝÊåÊ2Ë
ËïÊBËQËbËhËwˈˎˎˮ˿ËÉËmÌ$L½½!½)½)½6½H½T½\½b½g½m½o½o½u½%<}ˆbubupu{u†u�u·u•uÅuv&˜Õ÷*p*pTpepwp„p”pœp p¤p¨p¬p´p¼pÎpÜpæpëpûpqq q#q5q' GK‚k‚k‘k®k´k(Ü4.o.oLoXoaooo�oˆoˆo™o o­oÀoÉoÕoØoÝoýopp.p0p0pFpHpHpTpTpipzp€pƒpƒp†p‹p“p¤p«p±pÂpÅpâpâpçpçpçpq)ðh 
+‡
+‡‡:‡J‡J‡^‡h‡l‡p‡}‡އ—‡›‡ª‡½‡ÇʇÙ‡܇燈(ˆ4ˆ<ˆFˆTˆeˆxˆ…ˆ–ˆ©ˆ±ˆ¼ˆÒˆàˆàˆìˆ‰‰'‰.‰4‰;‰D‰G‰l‰*4AJšÂšÂ£Â«Â·ÂÈÂÐÂØÂëÂðÂ+ �´h7h7‚7ˆ7ˆ7—7£7ª7°7°7º7Ã7Ã7É7Í7Ð7Ú7å7å7ô7ý7ý78
88888 8 8 8 8 8.8, ÚÞæãæãêãøãúã-¤O´nknk„k�k˜k©k­kÁkÓkákóküklll'l?lOlOl\ljlvl†l˜l˜lœl¢lªl´l´l¸l¼lËlÛlßlmmmmm#m5mJmTmcmhmhmtmtm‚m‹m‹mšmÈmÌmÏmÓmÚmåmûmn n.n9n;nAnNnTn[nhnnnnnun‹n�n˜n n©n°n¹n(o.@%q[,[,c,g,n,u,},‹,œ,¤,«,«,½,½,Ì,Ñ,Ý,é,ù,-"-'-/-6-G-a-u-|-�-Ž-±-¶-È-Í-ð-ô-ý-..-.4.E.F.J.l.}.’.�.ª.ª.±.Ó.ä.ê.ô./,=ƒ=ƒFƒaƒgƒgƒlƒ04ÔÝã3ã3ç3ì3ø3444"4$41(êðdd5dGdSdYdad2»üz�z�ˆ���•�›�Ã�æ�î�ö�žžž)ž2ž7žfžmžužwž€ž�ž–ž½ž½žÆžÝžìž
ŸŸ(Ÿ8ŸHŸXŸgŸwŸ‡Ÿ—Ÿ±Ÿ¶Ÿ¾Ÿ¾ŸßÑŸàŸ   + ; K e e e q w 3˜£Å›W›W³WÂWÐWàWæWæWñWüWÿWXXX#X$X0X6X\fy4q4qVqZqfqwqƒqŒq«q·qÀqÆqÊqØq?€ Y Y°Y·YÊYÖYýYZZZ!Z)Z5ZGZYZsZZˆZ–ZœZ¢Z¥Z¬Z´Z@X�ïÛOÛOçOðOùOÿOPP P%P+P3PAPLPTPmPPŠP“P“P˜P�P«P²P·P·P½PÄPÉPÕPÝPæPæPîPýPQQQ Q*Q*Q3Q:QFQQQmQmQmQuQ|QƒQŠQ‘Q˜QŸQ¦Q­Q´QºQÃQÉQÜQíQ	RRR!RA|Kfžçžç½çËçÛçççíçöçýçè	èèè#è#è*è-è3è3è=èKèRèRèRè`èB,±±ÉÔú&CX];Z;ZCZNZ`ZfZnZxZ›Z›Z­ZºZÎZÛZãZñZ,[:[r[w[w[‰[–[ª[·[¼[Ë[\\\\#\#\5\B\V\c\h\w\«\²\Ã\É\Ë\Ë\Ó\Ó\à\õ\û\]2]?]O]T]Z]g]r]x]ƒ]ƒ]‰]’]�]­]²]Ñ]Þ]ë]ð]ð]ô]
^DàÈü¡
+¡
+©
+É
+Ø
+â
+ë
+ü
+ ,?]fs‹‹˜¢ÈÛú

-:o[€…—›££±¼ÊÑÜêêïûELRan–n–{–ƒ–†–”–—–ž–¢–¥–©–·–¾–ÖF8GQ&–&–3–;–>–L–P–^–b–g–G0NNW\koqvHXÏáááááëáþáââJâ¶â¿âI(KQ;
+;
+C
+Q
+c
+l
+n
+Jœ'J“S“S­SÎSàSçSôSTTTT+T:TCTJTNTNTTTZTrT{T�TŠT�T�T�T“T�TK8}‡SS\lyy€�––›LÄ^‹ŽXŽX´X·XÅXàXîXõXYY	YY Y@YFY@Y^Y`YfY`Y~Y€Y€Y�Y’Y’Y¢Y¢YÆYÍYÖYàYäYýYÿY$Z-Z3Z:Z|ZM<#Ú–Ú–è–ð–ø–———M—O—U—N$ÃRÃRÌRÕRÛRàROY:°:°N°U°e°l°l°‚°ްµ°Ô°ó°ÿ°±±±(±,±2±@±@±@±_±~±’±§±«±±±¿±ñɱÛ±Û±Û±Û±Þ±ã±è±î±ÿ±²	²²²²)²)²)².²4²E²I²O²Z²^²d²m²m²m²¢²PDo|ããç÷
 ',18JJLQ¬Íô¢¨¢¨ĨɨÒ¨Ò¨Þ¨í¨ú¨þ¨©©©.©:©?©?©X©c©k©p©‚©‚©‚©Š©˜©¦©°©³©¸©Å©Ò©Ò©ä©R�-MF<F<s<v<„<�<�<¤<µ<Ê<Ï<â<ï<ô<ø<	=3=;=?=D=L=^=m=p=¤=SHþåþåææ%æ1æ3æ5æDæDæSæUæUæZæT¸9£ÖGÖG÷GúGýGH>HEHPH^HhH~H†HŒH™H©H½HÂHÑHäHI
II I!I*I!IIGI>IYI[I[IkIkIyIŠI�I»IâIâIèIëIJJJ+J;JOJTJcJvJ™J¥J¸JØJåJØJóJøJKøJKK%KK3K8K8KHKHK[KlKqK�KŸKÄKÄKÊKÍKÛKàKóKþK
L
LL’LU0	¡Ö¡Ö¯Ö¹Ö¿ÖÈÖÏÖÓÖÙÖV(ˆŽ$r$r0r6r­B­T­Y­f­p­~­~­ˆ­’­[@nzc:c:k:Œ:�:£:¬:°:²:\ *n– – ¡ ¥ ­ Î Û ì ÷ !!)!>!R!^!v!†!™!¡!½!Ò!Ý!ç!"""-"F"U"b"w"o"’"ª"®"³"³"Ä"Ä"×"é"ü"###'#/#/#/#A#A#J#\#c#c#u#{#¡#]@1=	ä	äää ä1ä7ä:ä<äBä^è�ÆFwFw`wxw„w”w¦wªw­w¶w¹wÊwÊwÊwÑwÞwáwæwãw@xWxZx\xsxvxxx€x�x�x™x¨x¶xÆxÔxÝxäxéxéxéxïxy_D	ºªºªΪöª«&«3«>«Z«b«j«` 	
6å6å@åSåXåa4|…††”�¤­b8äîÒŒÒŒàŒæŒïŒõŒûŒ��
�ctRk®g®gÓgÕgîghhh+h-h3h-hJhLhLh\h^h^hnhnhth²hd0CCCCLC^ClCpCtCtCyCe@êÀêÀùÀÁÁ Á'Á/Á4Á:Á<Á<ÁBÁfØNêŽêŽ���,�C�C�T�l�y�Œ�˜�£�³�Õ�×�ô�����>�E�N�T�[�a�f�l�p�w�‚�ˆ�²�gè[‘fPfP…P‡P–P¢P®PÃPÈPÑPÔPÙPãPãPíPðPQQQ,Q1QOQhQqQtQwQ|Q Q¢Q¾Q¸QêQêQúQ
+RRRR R/R6R9RSh”	*Ã
Ã
å

5]k®ñ46DR``z”±ÃÓè#8QX_{—£i€]ŽTŽT¢T¤T´TÂTÌTðTUU.U > j € ƒ • l<5@ÄuÄuÜuëuòu÷uvvv v+vm0	BBB(B(B×]×uׅץץׯ×È×È×é×ë×ë×ØØØØØ"Ø"Ø.ØBØRØZØZØlØsØs؅ؒ؞آØÁØo\Qdª‚ª‚º‚¼‚ǂ̂߂è‚í‚ò‚ƒƒƒƒ ƒpŒoަ#¦#±#¹#Ä#Ï#Ú#ã#ù#
$$*$Q$g$�$‰$Ÿ$§$Å$Ñ$Ü$ô$ÿ$%%%)%qxˆ¢aæaæ}æ‚æ…æ’æ˜æ›æ£æ¬æ»æÃæÃæÎæÎæÖæØæØæßæâæîær0	"ƒ"ƒ0ƒ:ƒQƒWƒYƒ_ƒs ^å^åbåpåråtL+Þ{Þ{ö{ø{|+|9|;|P|[|a|v|u,R;N;NSNUNaNaNmNzN‡N�N”NšNœN N°N¾NÎNÙNÞNÞNåNåNðNðNOO(O*O0O2O4O6O6OAOCOKOQOSOSO_OiOlOlOlOlOwOOƒO�Ovx86G6GLGiGpG|G‹G‘G•GªG¸G¾GÄGÇGÑGw¨5[qq*q5q=qLqQqVqfqkq†q†q�q“q™q¡q¯qµq·q·q¾qÄqÊqÒqàqæqèqèqøqúqúq
+rTrxMSJSJmJ{J”JŸJ¶JÃJÕJêJúJKKK,K7KSKSKWKbKnKpKpKpKvKvKyKƒKƒKžK«K«K°KÀKÓKÙKâKìKüKL8LILTLTLfLfLfL|LŒL£L¬L²LÂLÆLÆLËLËLãLy,07œ{œ{¥{¯{°{µ{zpß÷ºÇºÇËÇ×ÇåÇñÇýÇ	È	ÈÈÈ"È.ÈKÈgÈgÈgÈgÈmÈmÈ}ÈÈȨÈ{$‚‡žàžà¢à¯àåàñà|<7BMŒMŒaŒaŒ}Œ…Œ•ŒœŒžŒ¦Œ},hBhBlB€B„B„BˆB~,
+HBHBLB`BdBdBhBhN¤¦=¦=±=¼=Ì=Ô=õ=>>>2>J>Z>m>}>…>¡>¶>Á>Ë>ð>õ>ÿ>??7?F?F?m?|?†?£?®?¶?Ñ?Ü?ñ?ú?@#@/@8@=@Z@g@m@†@‚@œ@§@¯@º@º@º@Å@Å@Ö@Ö@é@û@AAA*A:ABABABAPA[AbAmAnA‚A†A�A€DÛèóóó ó5óOóZóZókó{ó}ó©ó�LN]ãLãLìLñLøLøLM:MAMPM_MdMfMhMhM‚l£ºjœjœ~œŠœ˜œ§œ§œÏœòœýœ�� �,�9�U�[�_�g�k�s�ƒœDg	Ï	ÏÏÏ!Ï1Ï<ÏKÏWÏ`Ï|ÏŽÏ£ÏÌÏØÏãÏÐÐ)Ð+Ð+Ð+ÐCÐCÐUÐ]ÐxÐxÐxЊББУбЄøQ6eTeneˆeŒeže§e°e·eÀeÉeáeðeff$f-f;fSfffofƒf‡f�f–fœf§f©f¬f´fÉfÞfáfìfòfúfþfggg#g)g9g?gQgXgZgªg…<ÈÓ33;3K3P3v3œ3Â3É3Ð3Õ3á3†lýz z Ž — ¨ Рó ¡¡¡7¡J¡]¡]¡m¡m¡z¡Œ¡–¡ž¡‡œ’µSS S"S0S2S2i22•2§2®2®2Ä2Ñ2Ñ2ç2ö2ö2ý23333•8�§‘‘Ÿ§¯Ðæïõ–P:J°i°iÈiÔiÜiãiìiòiõiõi	jjj j+j—øEv›v›�› ›§›¯›¶›Ò›í›í›ó›ü›œœœœ"œ+œ-œ-œ6œEœJœJœSœ\œaœaœjœsœxœxœ�œŠœ�œ�œ�œ˜œ¡œ¦œ¦œ²œ»œÀœ×œÛœÛœõœ÷œ÷œ�	�{�˜XµÇ*Æ*Æ2Æ>ÆIÆXÆdÆmÆuƄơÆÒÆÒÆäÆëÆëÆýÆþÆÇ™ÈÝp2p2Œ2’2œ2Ÿ2Ÿ2¨2³2½2Ç2Ó2Õ2Û2â2å2è2ð2ü233
3333#3)32323:3C3I3R3R3R3R3X3`3c3s3š,�ˆªÄªÄ³Ä¿ÄÇÄÌÄÑÄ›8_inn|†�›£¥¥«œx^x^^)^0^>^>^J^U^‡^‡^Š^Œ^Œ^‘^‘^“^“^“^•^•^•^ž^¡^¤^±^�,Ûâ¼y¼yÅyÏyÐyÕyž$(-"’"’0’8’J’P’Ÿ<@Kê’ê’“
+“““ “$“(“,“6“  úþÎäÎäÒäóäõä¡t.¢¡¢¡²¡¾¡Ç¡Ø¡¢#¢2¢?¢S¢J¢t¢ˆ¢Ž¢�¢’¢˜¢š¢§¢ª¢²¢¢h^tò£ò£¤¤#¤#¤,¤;¤H¤w¤‚¤ФŒ¤ž¤ž¤ž¤¯¤¼¤¼¤ʤ£Ht‚†€†€�€”€•€¤€¬€±€·€»€¿€Õ€Ú€Ý€¤<ðû’’*’’9’a’¥€�¹’¦’¦°¦Á¦ɦܦî¦ù¦§§§.§D§L§L§š§Ÿ§Ÿ§Á§Á§اø§þ§ ¨¦˜ñë4ë4û45
+5555#5<5E5P5R5S5S5_5j5l5{5}5‰5“5¡5¦5µ5¼5¾5¾5¾5Ä5§€~š.Ó.Ó7Ó:ÓQÓQÓhÓ|ӚӜӴÓÇÓÒÓãÓúÓúÓÔ%ÔCÔEÔ]ÔpÔpÔsÔÌÔ¨4<E5550525=5?5?5G5©X€Ò~�~�š�ª�±�¹�À�Ü�à�ÿ�ÿ�!ž!ž!ž*ž,ž,ž5ž7ž7ž@žBžBžKžMžMžVžXžXžažcžcžlžnžnžwžwžzžžžž‚ž…ž…žŸž¯žÆžÙžÙžÛžÛžäžçžìžìžõžõžúžúžŸŸŸŸŸ2Ÿ5Ÿ:Ÿ:ŸCŸCŸQŸUŸ. ª`UiBB#B.B4B?BABRB_BeBeBqB«0;C[D[DdDrDxDŠDŒDŒD‘D¬(‹‘˜V˜V¬V·VÀVÃVËV­ \€YÔYÔaÔlÔ|Ô‹Ô—Ô»Ô»ÔÐÔØÔÝÔÝÔêÔÕÕÕÕ.Õ[ÕgÕzÕ‚Õ‡Õ‡Õ“Õ“Õ¥Õ¬Õ¬Õ¾ÕÃÕÊÕ®°.VAÒAÒIÒTÒdÒsÒÒ£Ò£ÒÐÒõÒúÒúÒÓÓÓÓCÓKÓSÓeÓ’ÓžÓ±Ó¹Ó¾ÓÓÓÕÓÕÓáÓáÓóÓúÓúÓÔÔÔ¯8LV\v\vlvovqvvvv‚v‡v�v° ~‚..2AE±(#S#S,S6SASISNS²DàXàXôXY
YYY Y'Y7Y:YBY³h°Æ^^€—¡µËï		 B\\oo{´X=OÞÞ Þ"Þ7Þ?Þ`ÞgÞtÞtދޔޘޜ޵\ReÖtÖtìtótu	uuu,u7u?uSu\ubumumu‹u¶PFVH5H5f5l5q5�5“5˜5¶5¸5Æ5Ì5Ï5Ý5·lXoæñæñò
+òòò$ò+ò0ò3ò9ò<òDòIòIòNòQòSòWògò¸Œƒ¢Û/Û/ä/0:0e0´0Á0Ã0Û0Û0*17191Q1Q1a1�1ˆ1�1—1Ä1Ë1Í1Ò1Õ1¹ˆ;YE„E„N„X„X„h„u„~„‡„�„™„­„­„¸„¾„À„τׄæ„ï„ø„………*…0…5…º4ÔtÔtèt÷tüt
+u
uuu»\•¨:Å:ÅPÅ\Å^ÅlłőŢŨŨÅÃÅËÅÓż¨'²�²�Ä�Ï�Ô�â�î�ú�‘‘‘$‘)‘7‘E‘S‘r‘}‘„‘˜‘´‘¼‘đϑёâ‘í‘ô‘’
’’’"’½ W[!Ô!Ô;ÔMÔWÔ¾Dt�±î±îÅîÏîáîèîïîÿî
+ïïï#ï¿<)4tutu‹uŽu“u–u©u¯u²u´u¾uÀ´^Çááì
#0=L`p†“¦ÇÖãìì(I|�›¯ËÖöÿ&8Xm€š¯ÉÕçìþ(8DWWŠ• ºÈÔààåõ		F	M	R	r	y	ž	ž	Á	Ð	ú	ü	ü	
+
+#
+.
+.
+<
+Q
+Q
+b
+i
+~
+~
+�
+�
+’
+š
+Áh
+ >î>îLîgîsîî‹î”î�î¦î¯î¸îÁîÊîÓîÜîåîîî÷îïïïÂ0¾ÆÃaÃaáaýab b&b,bKbÃX’¤ 0 0®0·0Ã0É0Ì0Ñ0×0Ú0ß0ß0ì0ð0ó0ó0ù0ÄÜ‚µ6_6_\_d_p_…_…_›_£_³_Â_Â_Ç_å_è_í_û_`` ` `5`5`K`Y`_`g`r`�`š`�` `¥`³`É`Ó`Ö`Ù`á`ï`aaaaaa/aÅLüãIãIòIJJ
+JJ1JD›››0›\›p›í ßãþãþãää äî$§¬ÄxÄxÍxÕxÛxàxï<©´ÚÅÚÅðÅÆÆÆÆ Æ Æ(Æðd¶6a6aXa\adauaua‹a”a¤a¤a°a¿aÄaàaãaèaíaýabbbb%b9b@bJbPbSbabgbwbŽb�b“b“b•b¯b»bÁbÊbÖb÷bûbccccc,cBcBcBcGcSckcoczc}c€c†c‰c—c­c­c­cµcÁcÙcÝcècëcòcdd
+d dñÀI;R;ROR\RbRjRwRyR�R—R—R¡RºRÈRÑRÜRçRêRñRöRþRSSS'S.STSWSrSrSrSvS{S‰Sò4 (DuDuRuTuYubueujupuóT¾C¾CÙCßCøCDD D0D3D@DmDpDtDDŠDœD¤D·DÅDÔDæDïDüDE!E(E9E9EEEPEPEcEfEvEƒEŒEœEžE±E»EËEÔEäEðEðEðEöEýEFF
+F/Fô$N“óDóDûDEE E3EHEaEzE‚E¡E´EÈEFFFõXÂÔ²o²o»oËoËoÌoÑoÑoÛoîoþoppp'p)p)pöhWF×F×^×g×m×v×~ׇ×�ההלססש׷׷׽×Ä×Ä×Ú×â×é×ð×÷ר	Ø Ø/Ø1ØEØm؃Ø�ØÓØ»ØìØÙ+Ù5ÙOÙRÙVÙ[ÙdÙm٤ٕÙ�ٵٰÙËÙáÙïÙùÙùÙÚÚ Ú4Ú=ÚTÚXÚ_ÚaÚbÚiÚiÚyÚ÷@ãïÜyÜyêyìyzzz z%zø0W_”v”v¢v±v¸vÈvÌvÏvÕvù, ) )2)=)P)e)n)ú`y�³^³^Ï^ô^ù^____$_3_;_G_[_c_o_s_s_‡_û4W`à5à5ö5ø56666'6ütJc>]>]L]U]Z]s]w]|]“]¡]¡]½]Ö]Ü]ê]ê]ö]ÿ]^^^ý<ªµ‹M‹M¢M¬M´MÃMÑM×MäMþ,›¢ÆáÆáÏáÙáÿáÿáâÿ”Z{AAIbq~�—°¾Ðßî +7FUgzƒ‘˜˜¦¯X®®ÂÌÓâûû'<>ACCCKP­½äxäxùx	yyyyy"y'y'y/yH¨¶ùù)2I`n~ˆŸ±¸Ä,ñøcdcd}d�d›d¡d¯d8<Fê�ê�þ�‚ ‚)‚,‚4‚<›¦dxdxxx†x‘xœx¤x¬x´x·x¿x<juò™ò™š
šš š5šAšGšMš(g’„’„¬„Þ„………….…?…G…U…W…Z…]…]…j…|……„…Ž…”…¥…¨…­…­…º…Á…Ó…Ö…Û…â…ô…÷…ù…†††††0†3†5†<†N†Q†S†Y†Y†Y†Y†^†^†e†l†s†y†|†	‡8MWò¾ò¾ü¾¿¿*¿2¿5¿7¿;¿	PÓã"Œ"Œ6Œ?ŒXŒiŒŽŒ‘Œ«ŒµŒÂŒÂŒÄŒÌŒ
+H¾Ì4y4yByNySySy`yrywywy}yHao(6(6B6S6c6f6h6u6y6|6†6l:Qé÷é÷ô÷øø-ø?øKøYøbøqøƒø¢ø´øÙøâø÷øþøþøùùù
–QÛQÛsÛvÛ}Û“Û¦ÛªÛ¶ÛÔÛÔÛáÛçÛïÛûÛÜÜÜ
ÜÜÜ%Ü,Ü3Ü<ÜHÜZÜ_ÜbÜiÜiÜ{܋ܒܟܾÜÔÜçÜëÜ
+Ý"ÝVÝVÝ]ÝfÝlÝnÝnÝnÝnÝnÝnÝn݂݉݌ݜݢݪݰݲݲݹÝÂÝÄÝÄÝÄÝÇÝÉÝÉÝÐÝÓÝÙÝÙÝÜÝáÝìÝÞÞ
Þ"Þ%ÞEÞEÞJÞJÞJÞQÞZÞbÞbÞbÞmÞyÞ|Þ#ßxÇáÖÖòõú
*5<Ckks“ž££«×âççëúœ`ƒÜvÜv÷vþv	wwwww w3w8w;w@wIwIwIwMwWwfwnwƒwŽw¤w¨wªw¿wÃwÃwÃwÍwŒp�ˆ6ˆ6¦6©6Á6Á6Ã6Ô6á6æ6ì6	77777 7;7>7I7M7M7V7Y7g7d!6¾™¾™æ™î™šššš$š8šHšUšWšešrš‚š–š˜š˜š¨š�Ss~~ˆŽ•›´Ùííòù€*€C€H€L€[€]€h€s€~€~€‚€ UY¾Í¾ÍÒÍáÍéÍ€qÌqÌ�̵̞ÌÇÌÜÌâÌçÌíÌðÌþÌ
+Í
ÍÍÍ!Í*Í/Í6ÍLÍLÍbÍ@v‚RšRš[šƒš¦š³šÀšËšîšöšûšÌh—fèfè�è‹è™èŸè©è©è¶è¼èÀèÃèÅèÌèÓèÝèéèòèéé;é+éPéPé^é†éˆé•éœé³é¿éÇéÉéãéþé
+êêPêì¥Üe~e~~‡~�~ž~¯~±~È~Ú~Ö~é~ù~ÿ~3/BRiz}‚ˆ¨¾ËÒÝáæñü€€€€+€0€<€G€Y€L&5˜G˜G¢G©G´GÀGÇGÇGÍGÔGäGæGíGòGöG,‹’¦½¦½º½Ì½Ò½Ø½Þ½<0;99K[{�•——�<w‚ú¿ú¿	ÀÀ)À@ÀDÀDÀIÀIÀOÀ\õê©ê©ø©ý©ªªª9ª\ªiªvª�ªžª¦ª­ª­ª°ª¶ª,“šnáná|á—á¤á©á¼áÂá¼ÐûSHSHH…HžH¶H½HÉHÕHÙHçHII%I/I7I>IFIPIXIlI}IŽI£IªI³I¹IÁIÁIÅIâI 4#™ã™ã¢ã§ã°ã¹ã¿ã¿ãÄã <¶Ê¶ÊÊÊÝÊêÊöÊþÊË*Ë-Ë=Ë!4ÓÜ(2(2<2>2G2G2T2\2a2i2",W^»9»9É9Ë9Ý9å9ê9ð9#DJW‰í‰í–í¤í¬í´íÂíÊíÒíÚíâíìíñí$ø^˜‰ù‰ù‘ù¡ù³ùÂùËùÙùçùóùúú.úEúTútúƒú–ú¤ú¹úÐúÙúèúûû+û8ûFûRûgûvûˆû�û™û¥û³ûÈûÚûñûúûüüü!ü*ü.ü%(QW®ñ®ñ¹ñÍñÜñàñ&0V^FFOY_eggl'@	))=KYct…�™£©(h’•’•›•©•¸•ÕÓ•ã•ó•––!–1–A–b–d–s–‚–’–¢–ΖΖÓ–)ˆ £>£>Ã>Í>Ð>Ø>è>è>ü>??&?(?G?L?]?k?v?‡?•?Ÿ?Ÿ?Ÿ?¯?*PÙéŽìŽì¬ì¿ìËìæì÷ìíí í%í4í+$mrpkpktk„k‰k™k,H¾ÌXXXXnXsXŒX—X X¢X®X±X´X¾X-D&SSSS\SjSjSlSrS}S}SŒS�S’S.(¤ªúnúnþn	oooo/D.;ÞæÞæìæúæúæç!ç;ç;ç?çEç0d>SIäIäbäfärärä~ä~ä‹ä‹äšä©ä¸äÊäßäéäøäøäå1ÔTÞÅÞÅüÅÆÆÆ'Æ1Æ7Æ;Æ>Æ@ÆFÆJÆMÆSÆVÆiÆ�ƉƌÆ�ƱƸÆÂÆÆÆÙÆÜÆèÆíÆóÆûÆÇ(Ç0Ç3ÇDÇ\ÇcÇcÇrÇ€ÇšÇ§ÇÆÇÆÇ×ÇïÇüÇÈÈÈ&È-È2È2ÈCÈWÈnÈsÈsÈyȊȞȽÈÂÈÂÈÈÈÙÈíÈÉÉÉ"É6ÉCÉHÉHÉYÉmÉzÉÉÉ�ɤɱɳɳɳɳɳÉÄÉÜÉëÉíÉíÉþÉÊÊÊ!Ê!Ê*Ê*ʳÊ24ÂËZ¹Z¹h¹m¹x¹{¹¹…¹3l 7³?³?Ñ?Ô?Ü?ð?ð?@@&@0@2@Q@V@g@u@€@‘@Ÿ@©@©@·@4ˆ7U»@»@á@å@è@ø@AA$A-ABAKARAWAaAjAtAwAzAA—A¥A¶AÐAÞAîAîAB5ˆXvB¿B¿Y¿\¿\¿m¿v¿€¿„¿‡¿”¿�¿�¿§¿§¿­¿´¿¸¿Á¿Á¿Ê¿Ï¿Û¿í¿ï¿ù¿6XÉÛÁgÁgágîgógÿg h%h2h=hDhMhQh]h7X¶È!g!gAgNgSg_gg…g’gŸg¦g¯g³g¿g8$
–’–’¬’æ’““9 X\~Ú~Ú‚Ú‹Ú�Ú: éíFäFäPäcähä; áå]‰]‰q‰ƒ‰‹‰<(7=®š®š»šÐšõš	›=0‚Š^½^½x½{½{½„½•½˜½ ½>Hª¸­‡­‡È‡å‡ï‡ö‡ö‡ˆˆˆˆ&ˆ?Ä Lz½z½н›½�½©½®½̽̽Õ½ê½ÿ½¾¾¾*¾:¾?¾D¾D¾K¾R¾[¾]¾]¾d¾o¾޾޾ž¾¥¾®¾¿¾¿¾¿¾ʾѾÖ¾ݾà¾ì¾@XºÌ"¨"¨D¨H¨N¨Q¨\¨\¨m¨z¨„¨‡¨Ѝ�¨ž¨A¨Ciš˜š˜ØȘÒ˜ܘæ˜ò˜ò˜ú˜#™,™1™:™=™B™B™Z™o™r™u™{™‚™†™µ™¹™Á™ÙΙΙÓ™Ó™â™ò™B0—Ÿ)ß)ß?ßKßvßxßx߀ßCDº¼º¼ü˼˼ؼê¼ò¼÷¼½	½½½½DL““&“4“D“J“u“™“ª“õ“ù“”EØ9vv,v3v7v;vFvWvevyv…vˆv‘vœv³v¸vÁvÄvÎvÖvÙvÜvðvww&w-w6w9w;wKwNwPwWwgwkwrwuw›w¢w´wF<ðûí‰í‰ŠŠŠ0Š4ŠDŠQŠG �…ÑÕÑÕëÕýÕÖHH -^æ^ærætæ{æ‰æ±æ¶æÍæÒæÒæÖæÞæI@EQLKLK\KiKpK~K…KŒK•KJHâðþþ%5JQZwz„KPSQSQgQ‰Q‰Q•Q Q¤Q«Q¶QºQÂQÃQËQLtc|ªtªt²t¾tÔtßtítûtu4uIuNuUuZuZu\uM ÍÑÀXÀXÉXÛXNt/©©´ÃÒàûAbs–©ºÃÐç348Oh„š;';'C'a'r'‚'‰'­'¾'Ñ'Ø'é'(((('(?(A(A(C(P0$,cck…�¥±ºÄQ@
’À’À›À£À¬ÀÀÀÊÀÏÀÛÀáÀãÀãÀèÀR4ÇÐKbKbib…bœb¨b®b´b»bÚbS,¢©KMKMTMqMƒMƒMˆMT<R]ùù+ù;ù[ùzù€ù‚ù‚ùˆùU`ÉõÉõÑõàõìõööö%ö-ö/öAöSöZöZölömöqöVTDU5@Kf�šµ¼ÃÎÞïöW8$,,$,4,<,I,K,X,X,[,
\ No newline at end of file
diff --git a/Kernel/KernelA.HPP b/Kernel/KernelA.HPP
index 8c84531..9990246 100644
--- a/Kernel/KernelA.HPP
+++ b/Kernel/KernelA.HPP
@@ -399,6 +399,7 @@ class CPatchTableAbsAddr
 #define IET_IMM_U32		9
 #define IET_REL_I64		10
 #define IET_IMM_I64		11
+#define IEF_IMM_NOT_REL			1
 //reserved
 #define IET_REL32_EXPORT	16
 #define IET_IMM32_EXPORT	17
@@ -896,46 +897,47 @@ public class CHashGlblVar:CHashSrcSym
 #define DOCT_NEW_LINE		1
 #define DOCT_SOFT_NEW_LINE	2
 #define DOCT_CURSOR		3
-#define DOCT_TAB		4
-#define DOCT_CLEAR		5
-#define DOCT_PAGE_BREAK		6
-#define DOCT_PAGE_LEN		7
-#define DOCT_LEFT_MARGIN	8
-#define DOCT_RIGHT_MARGIN	9
-#define DOCT_HEADER		10
-#define DOCT_FOOTER		11
-#define DOCT_INDENT		12
-#define DOCT_FOREGROUND		13
-#define DOCT_BACKGROUND		14
-#define DOCT_DFT_FOREGROUND	15
-#define DOCT_DFT_BACKGROUND	16
-#define DOCT_PMT		17
-#define DOCT_WORD_WRAP		18
-#define DOCT_UNDERLINE		19
-#define DOCT_INVERT		20
-#define DOCT_BLINK		21
-#define DOCT_SHIFTED_X		22
-#define DOCT_SHIFTED_Y		23
-#define DOCT_CURSOR_MOVEMENT	24
-#define DOCT_ANCHOR		25
-#define DOCT_LINK		26
-#define DOCT_BUTTON		27
-#define DOCT_DATA		28
-#define DOCT_CHECK_BOX		29
-#define DOCT_LST		30
-#define DOCT_MACRO		31
-#define DOCT_MENU_VAL		32
-#define DOCT_HEX_ED		33
-#define DOCT_TREE		34
-#define DOCT_SPRITE		35
-#define DOCT_INS_BIN		36
-#define DOCT_INS_BIN_SIZE	37
-#define DOCT_SONG		38
-#define DOCT_HIGHLIGHT		39
-#define DOCT_HTML_CODE		40
-#define DOCT_ERROR		41
+#define DOCT_MARKER		4
+#define DOCT_TAB		5
+#define DOCT_CLEAR		6
+#define DOCT_PAGE_BREAK		7
+#define DOCT_PAGE_LEN		8
+#define DOCT_LEFT_MARGIN	9
+#define DOCT_RIGHT_MARGIN	10
+#define DOCT_HEADER		11
+#define DOCT_FOOTER		12
+#define DOCT_INDENT		13
+#define DOCT_FOREGROUND		14
+#define DOCT_BACKGROUND		15
+#define DOCT_DFT_FOREGROUND	16
+#define DOCT_DFT_BACKGROUND	17
+#define DOCT_PMT		18
+#define DOCT_WORD_WRAP		19
+#define DOCT_UNDERLINE		20
+#define DOCT_INVERT		21
+#define DOCT_BLINK		22
+#define DOCT_SHIFTED_X		23
+#define DOCT_SHIFTED_Y		24
+#define DOCT_CURSOR_MOVEMENT	25
+#define DOCT_ANCHOR		26
+#define DOCT_LINK		27
+#define DOCT_BUTTON		28
+#define DOCT_DATA		29
+#define DOCT_CHECK_BOX		30
+#define DOCT_LST		31
+#define DOCT_MACRO		32
+#define DOCT_MENU_VAL		33
+#define DOCT_HEX_ED		34
+#define DOCT_TREE		35
+#define DOCT_SPRITE		36
+#define DOCT_INS_BIN		37
+#define DOCT_INS_BIN_SIZE	38
+#define DOCT_SONG		39
+#define DOCT_HIGHLIGHT		40
+#define DOCT_HTML_CODE		41
+#define DOCT_ERROR		42
 
-#define DOCT_NUM_TYPES		42
+#define DOCT_NUM_TYPES		43
 
 //CDocEntry.type flags upper bits
 #define DOCET_BLINK		ATTRF_BLINK
@@ -1015,6 +1017,8 @@ public class CHashGlblVar:CHashSrcSym
 #define DOCEF_FILTER_SKIP	0x200000000000000
 #define DOCEF_NO_CLICK_ON	0x400000000000000
 #define DOCEF_DONT_DRAW		0x800000000000000 //only works on sprites
+#define DOCEF_DFT_LEN		0x1000000000000000
+#define DOCEF_DFT_RAW_TYPE	0x2000000000000000
 
 #define DOCEG_HAS_ALLOC		(DOCEF_TAG|DOCEF_AUX_STR|DOCEF_DEFINE|\
   DOCEF_HTML_LINK|DOCEF_LEFT_MACRO|DOCEF_RIGHT_MACRO|DOCEF_BIN_PTR_LINK|\
@@ -1099,7 +1103,9 @@ public class CHashGlblVar:CHashSrcSym
 #define DOCEf_FILTER_SKIP	57
 #define DOCEf_NO_CLICK_ON	58
 #define DOCEf_DONT_DRAW		59 //only works on sprites
-#define DOCEf_NUM_FLAGS		60
+#define DOCEf_DFT_LEN		60
+#define DOCEf_DFT_RAW_TYPE	61
+#define DOCEf_NUM_FLAGS		62
 
 public class CDocBin
 {
@@ -1213,9 +1219,9 @@ public class CDocEntry:CDocEntryBase
 
 class CEdFindText
 {
-  U8	find_text[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,"
+  U8	find_text[STR_LEN] fmtstr "$$DA-P,"
 	"A=\"Find        :%s\"$$\n",
-	replace_text[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,"
+	replace_text[STR_LEN] fmtstr "$$DA-P,"
 	"A=\"Replace     :%s\"$$\n";
   Bool	replace			fmtstr "$$CB,\"Replace\"$$\n",
 	scan_fwd		fmtstr "$$CB,\"Fwd\"$$\n",
@@ -1556,18 +1562,27 @@ public class CAutoCompleteDictGlbls
 #define RT_F64		14
 #define RT_UF64		15 //Fictitious
 #define RT_NUM_IT	16
-#define RT_MASK		0x0F
+#define RTF_UNSIGNED	1
+#define RTG_MASK	0xFF
 
-#define TY_NULL			0x00
-#define TY_IMM			0x10
-#define TY_REG			0x20
-#define TY_DISP			0x30
-#define TY_SIB			0x40
-#define TY_RIP_DISP32		0x50
-//Not implemented.  Requires storage for glblvar struct in intermediate code.
-#define TY_RIP_DISP32_IMPORT	0x60
-#define TY_STK			0x70
-#define TY_MASK			0xF0
+#define MDf_STK		8
+#define MDf_IMM		9
+#define MDf_REG		10
+#define MDf_DISP	11
+#define MDf_SIB		12
+#define MDf_RIP_DISP32	13
+
+#define MDF_NULL	0x0000
+#define MDF_STK		0x0100
+#define MDF_IMM		0x0200
+#define MDF_REG		0x0400
+#define MDF_DISP	0x0800
+#define MDF_SIB		0x1000
+#define MDF_RIP_DISP32	0x2000
+#define MDG_MASK	0xFF00
+#define MDG_REG_DISP_SIB	(MDF_REG|MDF_DISP|MDF_SIB)
+#define MDG_DISP_SIB_RIP	(MDF_DISP|MDF_SIB|MDF_RIP_DISP32)
+#define MDG_REG_DISP_SIB_RIP	(MDF_REG|MDG_DISP_SIB_RIP)
 
 #define ICF_R_TO_F64			0x000000001
 #define ICF_R_TO_INT			0x000000002
@@ -1580,37 +1595,42 @@ public class CAutoCompleteDictGlbls
 #define ICF_USE_INT			0x000000100 //highest priority
 #define ICF_NO_DEPEND_RESULT		0x000000200
 #define ICF_CODE_FINAL			0x000000400
-#define ICF_NOT_ADDR			0x000000800
+#define ICF_BY_VAL			0x000000800 //By value, not ref.
 #define ICF_SHORT_JMP			0x000001000
-#define ICF_A1_FIRST			0x000002000
-#define ICF_PUSH_RESULT			0x000004000
-#define ICF_PASS_TRACE			0x000008000
-#define ICF_R_WAS_STK			0x000010000
-#define ICF_A1_WAS_STK			0x000020000
-#define ICF_A2_WAS_STK			0x000040000
-#define ICF_PUSH_CMP			0x000080000 //for 50hash_table);
 
 #help_index "Misc"
 //Use Dbg("Type 'G;'"); to debug before window mgr is running.
-public F64 os_version=4.040;//Operating system version.
+public F64 os_version=4.050;//Operating system version.
 
 #include "/Adam/MakeAdam"