TempleOSCD_140715.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:46:09 +02:00
1 parent 7ef616a20e
commit 64f679eeb9
1095 files changed
+24814 -221011

No files matched your search

+44 -45
View File
@@ -30,23 +30,21 @@ U0 AsmUnresolvedAdd(CLex *lx,U8 *ex,I64 type,I64 ip,I64 rel_ip,
U0 AsmLineLst(CLex *lx)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
CLexFile *tempf=lx->cur_lfn;
CDocEntry *doc_e=tempf->line_start,*doc_e2;
if (a->lst && a->last_lfn==tempf && doc_e) {
if (doc_e2=a->last_line_lsted) {
if (tempf->flags& LFSF_DOC) {
while (doc_e2->y<doc_e->y) {
Spaces(24-a->display_col);
"%h*c%08X ",24-a->display_col,CH_SPACE,a->last_ip;
a->display_col=0;
"%08X ",a->last_ip;
doc_e2=LexPutLine(lx,doc_e2);
}
} else {
while (*doc_e2(U8 *) && doc_e2!=doc_e) {
Spaces(24-a->display_col);
"%h*c%08X ",24-a->display_col,CH_SPACE,a->last_ip;
a->display_col=0;
"%08X ",a->last_ip;
doc_e2=LexPutLine(lx,doc_e2);
}
}
@@ -62,7 +60,7 @@ U0 AsmLineLst(CLex *lx)
U0 AsmStoreCodeU8(CLex *lx,U8 b)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
I64 i=a->ip>>ASM_CODE_BLK_BITS;
CAsmCodeBlk *tempc=a->cb;
while (i--)
@@ -79,7 +77,7 @@ U0 AsmStoreCodeU8(CLex *lx,U8 b)
tempc->body[a->ip++ & (ASM_CODE_BLK_SIZE-1)]=b;
if (a->lst) {
if (a->display_col>=24) {
NewLine;
'\n';
a->display_col=0;
}
"%02X ",b;
@@ -91,7 +89,7 @@ U0 AsmStoreCodeU8(CLex *lx,U8 b)
U0 AsmStoreCodeU32(CLex *lx,U32 d)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
I64 i=a->ip>>ASM_CODE_BLK_BITS,
j=(a->ip+sizeof(U32))>>ASM_CODE_BLK_BITS;
U32 *_d;
@@ -117,7 +115,7 @@ U0 AsmStoreCodeU32(CLex *lx,U32 d)
a->ip+=sizeof(U32);
if (a->lst) {
if (a->display_col>=24) {
NewLine;
'\n';
a->display_col=0;
}
"%08X ",d;
@@ -130,7 +128,7 @@ U0 AsmStoreCodeU32(CLex *lx,U32 d)
U0 AsmStoreCodeU64(CLex *lx,U64 q)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
I64 i=a->ip>>ASM_CODE_BLK_BITS,
j=(a->ip+sizeof(I64))>>ASM_CODE_BLK_BITS,
*_q;
@@ -156,7 +154,7 @@ U0 AsmStoreCodeU64(CLex *lx,U64 q)
a->ip+=sizeof(I64);
if (a->lst) {
if (a->display_col>=24) {
NewLine;
'\n';
a->display_col=0;
}
"%016X ",q;
@@ -169,7 +167,7 @@ U0 AsmStoreCodeU64(CLex *lx,U64 q)
U0 AsmStoreCodeU8At(CLex *lx,I64 ip,...)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
CAsmCodeBlk *tempc;
I64 i,j;
for (j=0;j<argc;j++) {
@@ -226,7 +224,7 @@ U0 AsmResolve(CLex *lx,CAsmUnresolvedRef *tempu,U8 *label,Bool undefined)
}
templu=templu->next; //Technically, more than one won't work.
}
} else if (!(tempu->type & 1)) { //Rel?
} else if (!(tempu->type & 1)) {//Rel?
r-=tempu->rel_ip;
if (tempu->type==EIT_REL_I8 && !(MIN_I8<=r<=MAX_I8) ||
tempu->type==EIT_REL_I16 && !(MIN_I16<=r<=MAX_I16)) {
@@ -251,7 +249,7 @@ U0 AsmResolve(CLex *lx,CAsmUnresolvedRef *tempu,U8 *label,Bool undefined)
U0 AsmLocalsResolve(CLex *lx)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
CAsmUnresolvedRef *tempu=a->local_unresolved,*tempu1;
CLexUndef *templu;
Bool undefined;
@@ -285,7 +283,7 @@ U0 AsmLocalsResolve(CLex *lx)
U0 AsmGlblsResolve(CLex *lx,CExe *tempx)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
CHashFun *tempf;
CAsmUnresolvedRef *tempu=a->glbl_unresolved,*tempu1;
I64 j;
@@ -374,7 +372,7 @@ U0 AsmGlblsResolve(CLex *lx,CExe *tempx)
}
if (tempex->type & HTF_EXPORT) {
tempe=CAlloc(sizeof(CExeImportExport));
tempe->type=EIT_REL_EXPORT;
tempe->type=EIT_REL32_EXPORT;
if (tempex->type & HTT_FUN)
tempe->ip=tempf->executable_addr;
else if (tempex->type & HTT_GLBL_VAR)
@@ -477,7 +475,7 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
} else {
if ((temph->type&HTG_TYPE_MASK==HTT_CLASS||
temph->type&HTG_TYPE_MASK==HTT_INTERNAL_TYPE) &&
(temph1=HashFind(lx->cur_str,asm_hash,HTT_ASM_KEYWORD)))
(temph1=HashFind(lx->cur_str,cmp.asm_hash,HTT_ASM_KEYWORD)))
temph=temph1;
if (temph->type&HTG_TYPE_MASK==HTT_ASM_KEYWORD) {
switch (temph->user_data0) {
@@ -547,7 +545,7 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
arg->scale=lx->cur_i64;
Lex(lx); //skip scale
if (arg->reg2!=REG_NONE)
SwapU64(&arg->reg1,&arg->reg2);
SwapI64(&arg->reg1,&arg->reg2);
} else if (lx->token=='+') {
Lex(lx); //skip '+'
} else {
@@ -568,10 +566,9 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
}
}
U0 AsmMakeArgMask(CLex *lx,CAsmArg *arg,I64 *_mask)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
if (arg->just_seg) {
switch (arg->seg) {
case 0: *_mask=1<<ARGT_ES|1<<ARGT_SREG; break;
@@ -616,9 +613,9 @@ U0 AsmMakeArgMask(CLex *lx,CAsmArg *arg,I64 *_mask)
*_mask&=0x000FFF0000;
} else {
if (arg->imm_or_off_present)
*_mask&=0x000F00F0FE;
*_mask&=0x000F000FFE;
else
*_mask&=0x3F0FFF0F00;
*_mask&=0x3F0FFFF000;
}
if (arg->seg!=REG_NONE)
*_mask&=0x00FFFF0000;
@@ -627,31 +624,31 @@ U0 AsmMakeArgMask(CLex *lx,CAsmArg *arg,I64 *_mask)
*_mask&=0x00FFFF0000;
else if (arg->num.i<0) {
if (arg->num.i>=MIN_I8)
*_mask&=0xF08E;
*_mask&=0x8FE;
else if (arg->num.i>=MIN_I16)
*_mask&=0xE08E;
*_mask&=0x8EE;
else if (arg->num.i>=MIN_I32)
*_mask&=0xC08E;
*_mask&=0x8CE;
else
*_mask&=0x808E;
*_mask&=0x88E;
} else {
if (arg->num.i<=MAX_I8)
*_mask&=0xF0FE;
*_mask&=0xFFE;
else if (arg->num.i<=MAX_U8)
*_mask&=0xE0FE;
*_mask&=0xFEE;
else if (arg->num.i<=MAX_I16)
*_mask&=0xE0EE;
*_mask&=0xEEE;
else if (arg->num.i<=MAX_U16)
*_mask&=0xC0EE;
*_mask&=0xECE;
else if (arg->num.i<=MAX_I32)
*_mask&=0xC0CE;
*_mask&=0xCCE;
else if (arg->num.i<=MAX_U32)
*_mask&=0x80CE;
*_mask&=0xC8E;
else
*_mask&=0x808E;
*_mask&=0x88E;
}
} else {
*_mask&= 0x3F00FF0F00;
*_mask&= 0x3F00FFF000;
if (!arg->indirect) //M8-M64
*_mask&=0xFFFF0FFFFF;
}
@@ -665,7 +662,7 @@ U0 AsmMakeArgMask(CLex *lx,CAsmArg *arg,I64 *_mask)
Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
I64 i;
CExeAbsAddr *tempa;
@@ -783,7 +780,7 @@ U8 asm_seg_prefixes[6]={0x26,0x2E,0x36,0x3E,0x64,0x65};
Bool PrsAsmInstruction(CLex *lx,CHashOpcode *tempo,I64 argcnt)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
I64 i,j,a1,a2,om,seg,arg1mask,arg2mask;
CAsmArg *tempa1,*tempa2;
Bool ModrM_complete,U8_avail=FALSE,found_second_possible=FALSE;
@@ -862,7 +859,7 @@ Bool PrsAsmInstruction(CLex *lx,CHashOpcode *tempo,I64 argcnt)
cur.REX|=1;
if (tempa1->reg1>=20) //RBPu8,RSPu8,RSIu8,RDIu8?
cur.has_REX=TRUE;
} else { //SV_I_REG
} else {//SV_I_REG
if (tempa1->fstk!=REG_NONE)
cur.last_opcode_U8+=tempa1->fstk;
}
@@ -977,7 +974,7 @@ Bool PrsAsmInstruction(CLex *lx,CHashOpcode *tempo,I64 argcnt)
if (tempa1->reg1>=20) //RBPu8,RSPu8,RSIu8,RDIu8?
cur.has_REX=TRUE;
}
} else { //SV_I_REG
} else {//SV_I_REG
if (tempa1->fstk!=REG_NONE)
cur.last_opcode_U8|=tempa1->fstk;
if (tempa2->fstk!=REG_NONE)
@@ -1188,7 +1185,6 @@ Bool PrsAsmInstruction(CLex *lx,CHashOpcode *tempo,I64 argcnt)
LexExcept(lx,"invalid instruction at ");
}
U0 PrsAsmDefine(CLex *lx,I64 U8_cnt)
{
Bool is_dup;
@@ -1205,7 +1201,7 @@ U0 PrsAsmDefine(CLex *lx,I64 U8_cnt)
i=lx->cur_str_len-1;
while (i--)
AsmStoreCodeU8(lx,*ptr++);
Lex(lx); //Skip Str
Lex(lx); //Skip Str
} else {
is_dup=FALSE;
lx->abs_cnts=0;
@@ -1280,7 +1276,7 @@ U0 PrsBinFile(CLex *lx)
U0 PrsAsmBlk(CLex *lx,I64 cmp_flags)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
I64 i,j,k,argcnt,
old_flags=lx->flags & LF_ASM_EXPRESSIONS;
CHashOpcode *tempo;
@@ -1335,14 +1331,16 @@ U0 PrsAsmBlk(CLex *lx,I64 cmp_flags)
if (lx->htc.local_var_lst)
LexExcept(lx,"ALIGN not allowed in fun asm blk ");
i=AsmLexExpression(lx);
if (Bsf(i)!=Bsr(i))
j=Bsf(i);
if (!i || j!=Bsr(i))
LexExcept(lx,"ALIGN must be power of two at ");
if (!(lx->flags&LF_AOT_COMPILE) && i>8)
LexExcept(lx,"In JIT mode, max ALIGN is 8 ");
if (i>a->max_align) a->max_align=i;
if (j>a->max_align_bits) a->max_align_bits=j;
i=CeilU64(a->ip,i);
if (lx->token==',')
Lex(lx);
if (lx->token!=',')
LexExcept(lx,"expecting ',' at ");
Lex(lx);
k=AsmLexExpression(lx);
for (j=a->ip;j<i;j++)
AsmStoreCodeU8(lx,k);
@@ -1477,6 +1475,7 @@ U0 PrsAsmBlk(CLex *lx,I64 cmp_flags)
break;
}
AsmLocalsResolve(lx);
a->lst=FALSE;
lx->flags&=lx->flags&~LF_ASM_EXPRESSIONS|old_flags;
}
+9 -10
View File
@@ -5,9 +5,9 @@ U0 ICAddEct(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
Bool swap=FALSE;
if (r3!=result_reg) {
swap^=TRUE;
SwapU64(&t2,&t3);
SwapU64(&r2,&r3);
SwapU64(&d2,&d3);
SwapI64(&t2,&t3);
SwapI64(&r2,&r3);
SwapI64(&d2,&d3);
}
if (t2&RT_MASK>=RT_I64 && r2!=result_reg &&
TY_REG<=t2&TY_MASK<=TY_RIP_DISP32) {
@@ -95,7 +95,7 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
}
}
if (op.u8[0]==0x03 && MIN_I32<=d<=MAX_I32 &&
!Bt(&non_ptr_vars_mask,r2)) {
!Bt(&cmp.non_ptr_vars_mask,r2)) {
i=ICModr1(r1,TY_DISP+RT_I64,r2,d);
i.u8[1]|=0x48;
ICU24(tempi,i.u8[2]<<16+0x8D00+i.u8[1]);
@@ -215,9 +215,9 @@ U0 ICSub(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
Bool swap=FALSE;
if (r3!=REG_RAX) {
swap=TRUE;
SwapU64(&t2,&t3);
SwapU64(&r2,&r3);
SwapU64(&d2,&d3);
SwapI64(&t2,&t3);
SwapI64(&r2,&r3);
SwapI64(&d2,&d3);
}
if (t2&RT_MASK>=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) {
@@ -410,7 +410,6 @@ U0 ICMulEqual(CIntermediateCode *tempi,I64 ip)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,TY_REG+RT_I64,r,0,ip);
}
U0 ICDiv(CIntermediateCode *tempi,I64 ip)
{
if (tempi->ic_flags & ICF_A1_FIRST) {
@@ -589,7 +588,7 @@ U0 ICAddSubEctEqual(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64
ICSlashOp(tempi,TY_DISP+type_pointed,r2,0,0x838000+op.u8[4],ip);
ICU8(tempi,d3);
done=TRUE;
} else if (op.u8[2]==0x24) { //AND
} 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,REG_RCX,0,ip);
result_reg=REG_RAX;
@@ -599,7 +598,7 @@ U0 ICAddSubEctEqual(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64
ICU32(tempi,d3);
ICMov(tempi,TY_DISP+type_pointed,REG_RCX,0,TY_REG+RT_I64,result_reg,0,ip);
done=TRUE;
} else if (type_pointed&RT_MASK<RT_I64) { //OR/XOR
} else if (type_pointed&RT_MASK<RT_I64) {//OR/XOR
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,REG_RCX,0,ip);
result_reg=REG_RAX;
+1 -3
View File
@@ -243,7 +243,7 @@ U0 ICCmp(CIntermediateCode *tempi,I64 us,I64 is,I64 ip)
U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2,CIntermediateCode *tempi2,
I64 op,I64 op_imm,I64 ip)
{ //TODO:not fully utilizing Modr
{//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) {
@@ -448,7 +448,6 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
}
}
U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
{
I64 r;
@@ -573,7 +572,6 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
}
}
U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
I64 us,I64 is,I64 not_us,I64 not_is,
U8 *buf,I64 ip2)
+3 -4
View File
@@ -204,7 +204,6 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip)
}
}
U0 ICBrBitOps(CIntermediateCode *tempi,I64 ip,I64 op,I64 op_imm,I64 is,U8 *buf,I64 ip2)
{
I64 i,t,r1,r2,d1,d2,t1,t2;
@@ -325,7 +324,7 @@ U0 ICBrBitOps(CIntermediateCode *tempi,I64 ip,I64 op,I64 op_imm,I64 is,U8 *buf,I
} else
t=t1;
i=ICModr1(r2,t,r1,d1);
SwapU64(&a1,&a2);
SwapI64(&a1,&a2);
} else {
if (a1->type&TY_MASK==TY_IMM && a1->disp<32) {
if (op==0xA30F && a1->disp<8) {
@@ -338,7 +337,7 @@ U0 ICBrBitOps(CIntermediateCode *tempi,I64 ip,I64 op,I64 op_imm,I64 is,U8 *buf,I
i=ICModr1(r1,t,r2,d2);
}
ICRex(tempi,i.u8[1]);
if (op_imm==0xF6) { //TEST
if (op_imm==0xF6) {//TEST
ICU16(tempi,i.u8[2]<<8+op_imm);
ICModr2(tempi,i,a2->disp,ip2+5);
ICU8(tempi,1<<a1->disp);
@@ -664,7 +663,7 @@ U0 ICSwap(CIntermediateCode *tempi,I64 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);
break;
case IC_SWAP_U64:
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);
+8 -8
View File
@@ -239,7 +239,7 @@ U0 ICFUnaryMinus(CLex *lx,CIntermediateCode *tempi,U8 *buf2,I64 ip)
}
U0 ICFMod(CLex *lx,CIntermediateCode *tempi,I64 ip)
{ //for MOD
{//for MOD
Bool dont_push_float,dont_pop_float;
CmpSetFloatOpPushPop(lx,tempi,&dont_push_float,&dont_pop_float);
if (dont_push_float) {
@@ -269,7 +269,7 @@ U0 ICFMod(CLex *lx,CIntermediateCode *tempi,I64 ip)
}
U0 ICFPow(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
{ //for POW
{//for POW
I64 i;
CExeImportExport *tempe;
CHashExport *tempex=HashFind("SYS_POW",lx->htc.hash_table_lst,HTT_EXPORT_SYS_SYM);
@@ -315,7 +315,7 @@ U0 ICFPow(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
tempex->ie_lst=tempe;
}
}
} else { //Kernel
} else {//Kernel
if (tempex->type&HTF_UNRESOLVED)
throw('Compiler');
else {
@@ -348,7 +348,7 @@ U0 ICFPow(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
}
U0 ICFOp(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
{ //for ADD,SUB,DIV,MUL
{//for ADD,SUB,DIV,MUL
CICArg *a1,*a2;
Bool dont_push_float,dont_pop_float,alt;
I64 rsp_size=0,builtin1=0,builtin2=0,
@@ -507,10 +507,10 @@ U0 ICFOp(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
if (!dont_push_float) {
if (builtin2 && !builtin1) {
alt=!alt;
SwapU64(&t1,&t2);
SwapU64(&r1,&r2);
SwapU64(&d1,&d2);
SwapU64(&builtin1,&builtin2);
SwapI64(&t1,&t2);
SwapI64(&r1,&r2);
SwapI64(&d1,&d2);
SwapI64(&builtin1,&builtin2);
}
if (builtin1)
ICU16(tempi,builtin1);
+1 -2
View File
@@ -1,5 +1,5 @@
U0 ICFOpEqual(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
{ //for ADD,SUB,DIV,MUL
{//for ADD,SUB,DIV,MUL
CICArg *a1=&tempi->a1,
*a2=&tempi->a2;
Bool dont_push_float,dont_pop_float,p1_mem;
@@ -600,7 +600,6 @@ U0 ICFCmpAndBranch(CLex *lx,CIntermediateCode *tempi,I64 ip,
}
}
U0 ICFMul(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
{
if (tempi->a1.type&TY_MASK==TY_IMM &&
+6 -11
View File
@@ -1,6 +1,4 @@
/*Intermediate Code
To
Machine Code
/*Intermediate Code to Machine Code
RAX,RBX,RCX and RDX can be clobbered by
each intermediate code's output code.
@@ -14,7 +12,6 @@ Internal calculations take place on
64-bit vals, so anything which has
found it's way into a reg has been
sign or zero extended to 64-bits.
*/
U0 ICU8(CIntermediateCode *tempi,U8 b)
@@ -141,11 +138,10 @@ extern U0 ICMov(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64
#define MDR_RIP_REL 7
I64 ICModr1(I64 r,I64 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
{//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);
@@ -422,7 +418,7 @@ U0 ICTest(CIntermediateCode *tempi,I64 r)
}
I64 ICBuiltInFloatConst(F64 d)
{ //Returns 2-byte opcode for FLD const or zero
{//Returns 2-byte opcode for FLD const or zero
if (!d)
return 0xEED9;
else if (d==1.0)
@@ -443,7 +439,6 @@ I64 ICBuiltInFloatConst(F64 d)
return 0;
}
U0 ICMov(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2,I64 ip)
{
I64 i,j,last_cnt=tempi->ic_cnt;
+61 -66
View File
@@ -1,77 +1,72 @@
#help_index "Compiler/Lex"
#help_file "::/Doc/Lex"
public extern CLex *LexNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL);
public extern U0 LexDel(CLex *lx);
public extern I64 LexSize(CLex *lx);
public extern U0 LexPutToken(CLex *lx);
public extern I64 LexGetChar(CLex *lx);
public extern U0 LexSkipEol(CLex *lx);
public extern U0 LexPush(CLex *lx);
public extern U0 LexPop(CLex *lx);
public extern I64 Lex(CLex *lx);
public extern U8 *LexExtStr(CLex *lx,I64 *_size=NULL);
public extern U0 LexPutLine(CLex *lx,U8 *start);
public extern U0 LexPutPos(CLex *lx);
public extern I64 PrsKeyWord(CLex *lx);
public extern U0 LexWarn(CLex *lx,U8 *str=NULL);
public extern U0 LexExcept(CLex *lx,U8 *str=NULL);
public extern U8 *LexExpression2Bin(CLex *lx,I64 *_type=NULL);
public extern U8 *LexStatement2Bin(CLex *lx,I64 *_type,I64 cmp_flags=CMPF_PRS_SEMICOLON);
public extern I64 IsLexExpression2Bin(CLex *lx,U8 **ex); //FALSE=no err
public extern I64 LexExpression(CLex *lx);
public extern I64 MemberMetaData(U8 *st,CMemberLst *ml);
extern U0 MemberLstDel(CHashClass *c);
public extern CMemberLstMeta *MemberMetaFind(U8 *st,CMemberLst *ml);
public extern CMemberLst *MemberFind(U8 *needle_str,CHashClass *haystack_class);
public extern CMemberLst *MemberFind2(CHashClass *needle_class,CHashClass *haystack_class);
public extern U0 LexAttachDoc(CLex *lx,CLexFile *tempf=NULL,
CDoc *doc=NULL,U8 *abs_filename=NULL,CDocEntry *doc_e=NULL,I64 col=0);
public extern CHashClass *OptClassFwd(CHashClass *tempc);
#help_index "Compiler"
extern U0 CmpInit(Bool first);
public extern I64 ExeFile(U8 *name,Bool just_load=FALSE);
public extern I64 ExeFile2(U8 *name,Bool just_load=FALSE);
public extern I64 ExePrint(U8 *fmt,...);
public extern I64 ExePrint2(U8 *fmt,...);
public extern I64 ExePutS(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE,
CLexHashTableContext *htc=NULL);
public extern I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE);
public extern CCmpGlbls cmp;
#help_index "Compiler/Directive"
#help_file "::/Doc/Directives"
public extern U0 StreamPrint(U8 *fmt,...);
public extern I64 StreamExePrint(U8 *fmt,...);
public extern Bool CTrace(Bool val);
public extern Bool Echo(Bool val);
public extern Bool GetOpt(I64 num);
public extern I64 IncludeDepth();
public extern Bool OTrace(Bool val);
public extern I64 OTraceMask(I64 i=0b1001111101);
public extern Bool OptEqu(I64 num,Bool val);
public extern Bool OptOn(I64 num);
public extern Bool OptOff(I64 num);
public extern Bool GetOpt(I64 num);
public extern Bool CTrace(Bool val);
public extern Bool Echo(Bool val);
public extern U0 ImportHashTable(CHashTable *tempht);
public extern I64 IncludeDepth();
public extern Bool OptOn(I64 num);
public extern I64 StreamExePrint(U8 *fmt,...);
public extern U0 StreamPrint(U8 *fmt,...);
#help_index "Compiler/Lex"
#help_file "::/Doc/Lex"
public extern I64 IsLexExpression2Bin(CLex *lx,U8 **ex); //FALSE=no err
public extern I64 Lex(CLex *lx);
public extern U0 LexAttachDoc(CLex *lx,CLexFile *tempf=NULL,
CDoc *doc=NULL,U8 *abs_filename=NULL,CDocEntry *doc_e=NULL,I64 col=0);
public extern CD2I32 *LexD2I32(CLex *lx,CD2I32 *p);
public extern CD3I32 *LexD3I32(CLex *lx,CD3I32 *p);
public extern U0 LexDel(CLex *lx);
public extern U0 LexExcept(CLex *lx,U8 *str=NULL);
public extern I64 LexExpression(CLex *lx);
public extern U8 *LexExpression2Bin(CLex *lx,I64 *_type=NULL);
public extern F64 LexExpressionF64(CLex *lx);
public extern I64 LexExpressionI64(CLex *lx);
public extern U8 *LexExtStr(CLex *lx,I64 *_size=NULL);
public extern U8 *LexFirstRem(CLex *lx,U8 *marker,I64 _len=NULL);
public extern I64 LexGetChar(CLex *lx);
public extern CLex *LexNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL);
public extern U0 LexPop(CLex *lx);
public extern U0 LexPush(CLex *lx);
public extern U0 LexPutLine(CLex *lx,U8 *start);
public extern U0 LexPutPos(CLex *lx);
public extern U0 LexPutToken(CLex *lx);
public extern I64 LexSize(CLex *lx);
public extern U0 LexSkipEol(CLex *lx);
public extern U8 *LexStatement2Bin(CLex *lx,I64 *_type,I64 cmp_flags=CMPF_PRS_SEMICOLON);
public extern U0 LexWarn(CLex *lx,U8 *str=NULL);
public extern CMemberLst *MemberFind(U8 *needle_str,CHashClass *haystack_class);
public extern CMemberLst *MemberFind2(CHashClass *needle_class,CHashClass *haystack_class);
extern U0 MemberLstDel(CHashClass *c);
public extern I64 MemberMetaData(U8 *st,CMemberLst *ml);
public extern CMemberLstMeta *MemberMetaFind(U8 *st,CMemberLst *ml);
public extern CHashClass *OptClassFwd(CHashClass *tempc);
public extern I64 PrsKeyWord(CLex *lx);
#help_index "Compiler;Cmd Line (Typically)"
extern I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0);
#help_index "Debugging/Unassemble"
public extern U8 *U(U8 *ip,I64 cnt=20,I64 seg_size=64);
public extern U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE);
public extern I64 Un(U8 *ip,I64 cnt=0x80,I64 seg_size=64);
extern CUasmGlbls uasm;
#help_index "Hash"
extern CHashSrcSym *HashEntryImportCopy(CHashSrcSym *temph);
extern U0 HashTableImport(CHashTable *src,CHashTable *dst);
public extern I64 HashEntrySize(CHashSrcSym *temph);
public extern I64 HashEntrySize2(CHashSrcSym *temph);
public extern I64 HashTableSize2(CHashTable *table);
#help_index "Compiler;Cmd Line (Typically)"
public extern I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0);
#help_index "Compiler"
public extern I64 ExePutS(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE,
CLexHashTableContext *htc=NULL);
public extern I64 ExePrint(U8 *fmt,...);
public extern I64 ExeFile(U8 *name,Bool just_load=FALSE);
public extern I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE);
public extern I64 ExePrint2(U8 *fmt,...);
public extern I64 ExeFile2(U8 *name,Bool just_load=FALSE);
extern CHashTable *asm_hash;
extern U0 CmpInit(Bool first);
extern I64 compiled_lines,compiled_funs,compiled_bytes;
//The following is for benchmarking
extern Bool cmp_do_not_write_to_dsk;
#help_index "Debugging/Dump"
public extern U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE);
public extern U8 *U(U8 *ip,I64 cnt=20,I64 seg_size=64);
public extern I64 Un(U8 *ip,I64 cnt=0x80,I64 seg_size=64);
#help_index ""
+5 -5
View File
@@ -1,6 +1,6 @@
asm {
USE64
// ************************************
//************************************
CMP_TEMPLATES::
DU32 @@05,@@10,@@15,@@25,@@30,
@@35,@@40,@@45,@@55,@@60,
@@ -174,7 +174,7 @@ CMP_TEMPLATES::
@@135:
// ************************************
//************************************
CMP_TEMPLATES_DONT_POP::
DU32 @@05,@@10,@@15,@@20,@@25,
@@30,@@35,@@40,@@45,@@50,
@@ -263,7 +263,7 @@ CMP_TEMPLATES_DONT_POP::
ADD RSP,8
@@115:
// ************************************
//************************************
CMP_TEMPLATES_DONT_PUSH::
DU32 @@05,@@10,@@15,@@20,@@30,
@@35,@@40,@@50,@@55,@@60,
@@ -390,7 +390,7 @@ CMP_TEMPLATES_DONT_PUSH::
POP RAX
@@125:
// ************************************
//************************************
CMP_TEMPLATES_DONT_PUSH_POP::
DU32 @@05,@@10,@@15,@@20,@@25,
@@30,@@35,@@40,@@45,@@50,
@@ -454,7 +454,7 @@ CMP_TEMPLATES_DONT_PUSH_POP::
JNZ @@105
@@110:
// ************************************
//************************************
CMP_TEMPLATES_DONT_PUSH2::
DU32 @@05,@@10,@@15,@@20,@@25,
@@35,@@45,@@50,@@55,@@60,
+2 -2
View File
@@ -203,7 +203,7 @@
#define IC_SWAP_U8 0xAD
#define IC_SWAP_U16 0xAE
#define IC_SWAP_U32 0xAF
#define IC_SWAP_U64 0xB0
#define IC_SWAP_I64 0xB0
#define IC_ABS_I64 0xB1
#define IC_SIGN_I64 0xB2
@@ -381,7 +381,7 @@
class COptReg
{
I64 offset;
I64 offset;
CMemberLst *m;
};
+24 -28
View File
@@ -1,45 +1,41 @@
import U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e);
import U0 DocDel(CDoc *doc);
import U0 DocLoad(CDoc *doc,U8 *src2,I64 size);
import CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL);
import U0 DocDel(CDoc *doc);
import CDocEntry *DocPutLine(CDoc *doc,CDocEntry *doc_e);
import I64 DocSize(CDoc *doc);
import U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e);
import U0 Who(U8 *flags=NULL,CHashTable *h=NULL,
U8 *outname=NULL,U8 mapfile_drv=0,U8 *index=NULL,CDoc *_doc=NULL);
extern I64 LexExpression(CLex *lx);
extern Bool IsLexExpression2Bin(CLex *lx,U8 **_ex);
extern I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempad,
I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec);
extern I64 PrsUnaryModifier(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempad,I64 *unary_post_prec);
extern CExe *CmpJoin(CLex *lx,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv=0);
extern U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx);
U8 *outname=NULL,U8 mapfile_drv=0,U8 *index=NULL,CDoc *_doc=NULL);
extern U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx);
extern U0 PrsStreamBlk(CLex *lx);
extern CHashClass *PrsClass(CLex *lx,I64 keyword,I64 fsp_flags,Bool is_extern);
extern CHashClass *PrsType(CLex *lx,CHashClass **tempc1,
I64 *_mode,CMemberLst *tempm,U8 **_ident,CHashFun **_fun_ptr,
CHashExport **_tempex,CArrayDim *tempad,I64 fsp_flags);
extern U0 PrsVarInit2(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_addr_ip,U8 **_base,Bool data_heap,I64 pass);
extern CHashFun *PrsFunJoin(CLex *lx,CHashClass *temp_return,U8 *name,I64 fsp_flags);
extern Bool PrsStatement(CLex *lx,I64 try_cnt=0,
CLexCodeMisc *lb_break=NULL,I64 cmp_flags=CMPF_PRS_SEMICOLON);
extern CIntermediateCode *OptPass012(CLex *lx);
extern U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx);
extern CExe *CmpJoin(CLex *lx,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv=0);
extern I64 HashEntrySize2(CHashSrcSym *temph);
extern Bool IsLexExpression2Bin(CLex *lx,U8 **_ex);
extern U0 LexExcept(CLex *lx,U8 *str=NULL);
extern I64 LexExpression(CLex *lx);
extern U0 LexWarn(CLex *lx,U8 *str=NULL);
extern CLexCodeMisc *OptLabelFwd(CLexCodeMisc *lb);
extern CIntermediateCode *OptPass012(CLex *lx);
extern U0 OptPass3(CLex *lx,COptReg *reg_offsets);
extern U0 OptPass4(CLex *lx,COptReg *reg_offsets,I64 *_type);
extern U0 OptPass5(CLex *lx);
extern U0 OptPass6(CLex *lx);
extern I64 OptPass789(CLex *lx,COptReg *reg_offsets,U8 *buf,CDbgInfo **_dbg);
extern CHashClass *PrsClass(CLex *lx,I64 keyword,I64 fsp_flags,Bool is_extern);
extern CHashFun *PrsFunJoin(CLex *lx,CHashClass *temp_return,U8 *name,I64 fsp_flags);
extern I64 PrsKeyWord(CLex *lx);
extern I64 HashEntrySize2(CHashSrcSym *temph);
extern U0 LexWarn(CLex *lx,U8 *str=NULL);
extern U0 LexExcept(CLex *lx,U8 *str=NULL);
extern CHashSrcSym *HashEntryImportCopy(CHashSrcSym *temph);
extern U0 HashTableImport(CHashTable *src,CHashTable *dst);
extern Bool PrsStatement(CLex *lx,I64 try_cnt=0,
CLexCodeMisc *lb_break=NULL,I64 cmp_flags=CMPF_PRS_SEMICOLON);
extern U0 PrsStreamBlk(CLex *lx);
extern CHashClass *PrsType(CLex *lx,CHashClass **tempc1,
I64 *_mode,CMemberLst *tempm,U8 **_ident,CHashFun **_fun_ptr,
CHashExport **_tempex,CArrayDim *tempad,I64 fsp_flags);
extern I64 PrsUnaryModifier(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempad,I64 *unary_post_prec);
extern I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempad,
I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec);
extern U0 PrsVarInit2(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_addr_ip,U8 **_base,Bool data_heap,I64 pass);
_extern CMP_TEMPLATES U32 cmp_templates[1];
_extern CMP_TEMPLATES_DONT_POP U32 cmp_templates_dont_pop[1];
_extern CMP_TEMPLATES_DONT_PUSH2 U32 cmp_templates_dont_push2[1];
_extern CMP_TEMPLATES_DONT_PUSH U32 cmp_templates_dont_push[1];
_extern CMP_TEMPLATES_DONT_PUSH_POP U32 cmp_templates_dont_push_pop[1];
_extern CMP_TEMPLATES_DONT_PUSH2 U32 cmp_templates_dont_push2[1];
-21
View File
@@ -1,21 +0,0 @@
CHashTable *asm_hash;
Bool cmp_do_not_write_to_dsk;
CHashClass *sys_internal_types[RT_NUM_IT];
CIntermediateCode opt_nop;
U32 *dual_U16_tokens1,*dual_U16_tokens2,*dual_U16_tokens3;
U32 *binary_ops_table;
U8 *cmp_arg_cnt,*cmp_result_cnt;
U8 *ic_bitmap_deref,*ic_bitmap_assign,*ic_bitmap_not_const,*ic_bitmap_cmp,*ic_bitmap_fpop;
I64 num_stk_temps,num_reg_vars,num_non_ptr_vars;
I64 stk_temps_mask,reg_vars_mask,non_ptr_vars_mask;
U8 *to_stk_temps_map_odd;
U8 *to_stk_temps_map_even;
U8 *to_reg_vars_map,*to_non_ptr_vars_map;
I64 compiled_lines,compiled_funs,compiled_bytes;
//Unassembler
CInstruction **unasm_table;
I64 unasm_table_entries;
I64 uasm_ins64_mask,uasm_signed_arg_mask,uasm_mem_mask;
+89 -56
View File
@@ -76,7 +76,7 @@ U0 AsmHashLoad()
CInstruction *tempi;
CHashClass *tempc;
asm_hash=HashTableNew(2048);
cmp.asm_hash=HashTableNew(2048);
size1=offset(CHashOpcode.ins)+sizeof(CInstruction)<<5;
tempo=MAlloc(size1);
@@ -140,9 +140,9 @@ U0 AsmHashLoad()
tempo1=MAlloc(size);
MemCpy(tempo1,tempo,size);
tempo1->use_cnt=0;
if (HashFind(tempo1->str,asm_hash,HTT_OPCODE))
if (HashFind(tempo1->str,cmp.asm_hash,HTT_OPCODE))
LexExcept(lx,"Duplicate OPCODE entry ");
HashAdd(tempo1,asm_hash);
HashAdd(tempo1,cmp.asm_hash);
break;
case 9: //KEYWORD
case 10: //ASM_KEYWORD
@@ -157,7 +157,7 @@ U0 AsmHashLoad()
temph->type=HTT_KEYWORD;
else
temph->type=HTT_ASM_KEYWORD;
HashAdd(temph,asm_hash);
HashAdd(temph,cmp.asm_hash);
Lex(lx); //Skip INT
break;
case REGT_R8:
@@ -177,7 +177,7 @@ U0 AsmHashLoad()
tempr->type=HTT_REG;
tempr->reg_type=i;
tempr->reg_num=lx->cur_i64;
HashAdd(tempr,asm_hash);
HashAdd(tempr,cmp.asm_hash);
Lex(lx); //Skip INT
break;
}
@@ -195,16 +195,17 @@ U0 AsmHashLoad()
Bts(&tempc->flags,Cf_INTERNAL_TYPE);
tempc->size=tempit->size;
tempc->str=AStrNew(tempit->name);
HashAdd(tempc,asm_hash);
sys_internal_types[tempc->raw_type]=tempc;
HashAdd(tempc,cmp.asm_hash);
cmp.internal_types[tempc->raw_type]=tempc;
}
adam_task->hash_table->next=asm_hash;
adam_task->hash_table->next=cmp.asm_hash;
}
U0 CmpLoadDefines()
{
DefineLstLoad("ST_IT_TYPES","I0\0U0\0I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0F64\0uF64\0");
DefineLstLoad("ST_RAW_TYPES",
" \0 \0I0\0U0\0I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0"
"F32\0UF32\0F64\0UF64\0");
DefineLstLoad("ST_TY_TYPES","NULL\0IMM\0REG\0DISP\0SIB\0RIP\0STK\0");
DefineLstLoad("ST_U8_REGS","AL\0CL\0DL\0BL\0AH\0CH\0DH\0BH\0"
"R8u8\0R9u8\0R10u8\0R11u8\0R12u8\0R13u8\0R14u8\0R15u8\0");
@@ -219,12 +220,10 @@ U0 CmpLoadDefines()
DefineLstLoad("ST_MM_REGS","MM0\0MM1\0MM2\0MM3\0MM4\0MM5\0MM6\0MM7\0");
DefineLstLoad("ST_XMM_REGS","XMM0\0XMM1\0XMM2\0XMM3\0XMM4\0XMM5\0XMM6\0XMM7\0");
DefineLstLoad("ST_OPCODE_MODIFIERS","NO\0CB\0CW\0CD\0CP\0IB\0IW\0ID\0");
DefineLstLoad("ST_ARG_TYPES",
"NO\0REL8\0REL16\0REL32\0UIMM8\0UIMM16\0UIMM32\0UIMM64\0"
"R8\0R16\0R32\0R64\0"
"IMM8\0IMM16\0IMM32\0IMM64\0RM8\0RM16\0RM32\0RM64\0"
"M8\0M16\0M32\0M64\0"
"M1632\0M16N32\0M16N16\0M32N32\0"
DefineLstLoad("ST_ARG_TYPES","NO\0REL8\0REL16\0REL32\0"
"IMM8\0IMM16\0IMM32\0IMM64\0UIMM8\0UIMM16\0UIMM32\0UIMM64\0"
"R8\0R16\0R32\0R64\0RM8\0RM16\0RM32\0RM64\0"
"M8\0M16\0M32\0M64\0M1632\0M16N32\0M16N16\0M32N32\0"
"MOFFS8\0MOFFS16\0MOFFS32\0MOFFS64\0"
"AL\0AX\0EAX\0RAX\0CL\0DX\0 \0SREG\0"
"SS\0DS\0ES\0FS\0GS\0CS\0ST0\0STI\0"
@@ -448,58 +447,92 @@ U0 CmpFillTables()
I64 i,k;
U32 *d;
ic_bitmap_assign =CAlloc((IC_NUM_ENTRIES+7)>>3);
ic_bitmap_deref =CAlloc((IC_NUM_ENTRIES+7)>>3);
ic_bitmap_cmp =CAlloc((IC_NUM_ENTRIES+7)>>3);
ic_bitmap_not_const =CAlloc((IC_NUM_ENTRIES+7)>>3);
ic_bitmap_fpop =CAlloc((IC_NUM_ENTRIES+7)>>3);
cmp_arg_cnt =CAlloc(IC_NUM_ENTRIES);
cmp_result_cnt =CAlloc(IC_NUM_ENTRIES);
cmp.ic_bitmap_assign =CAlloc((IC_NUM_ENTRIES+7)>>3);
cmp.ic_bitmap_deref =CAlloc((IC_NUM_ENTRIES+7)>>3);
cmp.ic_bitmap_cmp =CAlloc((IC_NUM_ENTRIES+7)>>3);
cmp.ic_bitmap_not_const=CAlloc((IC_NUM_ENTRIES+7)>>3);
cmp.ic_bitmap_fpop =CAlloc((IC_NUM_ENTRIES+7)>>3);
cmp.arg_cnt =CAlloc(IC_NUM_ENTRIES);
cmp.result_cnt =CAlloc(IC_NUM_ENTRIES);
st=Define("ST_INTERMEDIATE_CODE");
for (i=0;i<IC_NUM_ENTRIES;i++) {
cmp_arg_cnt[i]=*st-'0';
cmp_result_cnt[i]=st[1]-'0';
cmp.arg_cnt[i]=*st-'0';
cmp.result_cnt[i]=st[1]-'0';
if (st[2]=='*')
Bts(ic_bitmap_deref,i);
Bts(cmp.ic_bitmap_deref,i);
else if (st[2]=='=')
Bts(ic_bitmap_assign,i);
Bts(cmp.ic_bitmap_assign,i);
else if (st[2]=='^')
Bts(ic_bitmap_cmp,i);
Bts(cmp.ic_bitmap_cmp,i);
if (st[3]=='P')
Bts(ic_bitmap_fpop,i);
Bts(cmp.ic_bitmap_fpop,i);
if (st[4]=='N')
Bts(ic_bitmap_not_const,i);
Bts(cmp.ic_bitmap_not_const,i);
st+=StrLen(st)+1;
//See $LK,"ICPut",A="FF:::/Compiler/ICLCC.CPP,ST_INTERMEDIATE_CODE"$.
}
to_reg_vars_map=CAlloc(NUM_REGS*sizeof(U8));
num_reg_vars=0;
reg_vars_mask=REG_VARS_MASK;
cmp.to_reg_vars_map=CAlloc(NUM_REGS*sizeof(U8));
cmp.num_reg_vars=0;
cmp.reg_vars_mask=REG_VARS_MASK;
for (i=0;i<NUM_REGS;i++)
if (Bt(&reg_vars_mask,i))
to_reg_vars_map[num_reg_vars++]=i;
if (Bt(&cmp.reg_vars_mask,i))
cmp.to_reg_vars_map[cmp.num_reg_vars++]=i;
to_non_ptr_vars_map=CAlloc(NUM_REGS*sizeof(U8));
num_non_ptr_vars=0;
non_ptr_vars_mask=REG_NON_PTR_MASK;
cmp.non_ptr_vars_map=CAlloc(NUM_REGS*sizeof(U8));
cmp.num_non_ptr_vars=0;
cmp.non_ptr_vars_mask=REG_NON_PTR_MASK;
for (i=0;i<NUM_REGS;i++)
if (Bt(&non_ptr_vars_mask,i))
to_non_ptr_vars_map[num_non_ptr_vars++]=i;
to_stk_temps_map_odd=CAlloc(NUM_REGS*sizeof(U8));
to_stk_temps_map_even=CAlloc(NUM_REGS*sizeof(U8));
num_stk_temps=0;
stk_temps_mask=REG_STK_TEMPS_MASK;
for (i=0;i<NUM_REGS;i++)
if (Bt(&stk_temps_mask,i))
to_stk_temps_map_even[num_stk_temps++]=i;
k=num_stk_temps;
for (i=0;i<NUM_REGS;i++)
if (Bt(&stk_temps_mask,i))
to_stk_temps_map_odd[--k]=i;
if (Bt(&cmp.non_ptr_vars_mask,i))
cmp.non_ptr_vars_map[cmp.num_non_ptr_vars++]=i;
dual_U16_tokens1=d=CAlloc(sizeof(U32)*TK_NUM_TK);
/* STK TEMP ALLOCATION: See $LK,"::/Compiler/OptPass6.CPP.Z"$.
Expressions are evaluated with a stack machine.
1+(2+3)*4
STK[2]: 1 1 1 1 1 1 21
STK[1]: 2 2 5 5 20
STK[0]: 3 4
The top of the stack is stored in RAX.
STK[2]: RAX 1 1 1 1 1 RAX
STK[1]: RAX 2 RAX 5 RAX
STK[0]: RAX RAX
Two regs are allocated for stk temps.
STK[0]:
R9 : RAX R9 R9 R9 R9 R9 RAX
R8 : RAX R8 RAX R8 RAX
: RAX RAX
Every other funtion, the regs are reversed. This is to reduce
pushes before function calls. R8 is used in even numbered functions
while R9 is used in odd, so maybe we can avoid pushes if only one
stk temp reg is used.
STK[0]:
R9 : RAX R8 R8 R8 R8 R8 RAX
R8 : RAX R9 RAX R9 RAX
: RAX RAX
*/
cmp.to_stk_temps_map_odd =CAlloc(NUM_REGS*sizeof(U8));
cmp.to_stk_temps_map_even=CAlloc(NUM_REGS*sizeof(U8));
cmp.num_stk_temps=0;
cmp.stk_temps_mask=REG_STK_TEMPS_MASK;
for (i=0;i<NUM_REGS;i++)
if (Bt(&cmp.stk_temps_mask,i))
cmp.to_stk_temps_map_even[cmp.num_stk_temps++]=i;
k=cmp.num_stk_temps;
for (i=0;i<NUM_REGS;i++)
if (Bt(&cmp.stk_temps_mask,i))
cmp.to_stk_temps_map_odd[--k]=i;
cmp.dual_U16_tokens1=d=CAlloc(sizeof(U32)*TK_NUM_TK);
d['!']=TK_NOT_EQUAL<<16+'=';
d['&']=TK_AND_AND<<16+'&';
d['*']=TK_MUL_EQUAL<<16+'=';
@@ -514,7 +547,7 @@ U0 CmpFillTables()
d['|']=TK_OR_OR<<16+'|';
d['%']=TK_MOD_EQUAL<<16+'=';
dual_U16_tokens2=d=CAlloc(sizeof(U32)*TK_NUM_TK);
cmp.dual_U16_tokens2=d=CAlloc(sizeof(U32)*TK_NUM_TK);
d['&']=TK_AND_EQUAL<<16+'=';
d['+']=TK_ADD_EQUAL<<16+'=';
d['-']=TK_MINUS_MINUS<<16+'-';
@@ -524,11 +557,11 @@ U0 CmpFillTables()
d['^']=TK_XOR_XOR<<16+'^';
d['|']=TK_OR_EQUAL<<16+'=';
dual_U16_tokens3=d=CAlloc(sizeof(U32)*TK_NUM_TK);
cmp.dual_U16_tokens3=d=CAlloc(sizeof(U32)*TK_NUM_TK);
d['-']=TK_SUB_EQUAL<<16+'=';
d['/']=TK_DIV_EQUAL<<16+'=';
binary_ops_table=d=CAlloc(sizeof(U32)*TK_NUM_TK);
cmp.binary_ops=d=CAlloc(sizeof(U32)*TK_NUM_TK);
d['`'] =(PREC_EXP+ASSOCF_RIGHT)<<16+IC_POWER;
d[TK_SHL] =(PREC_EXP+ASSOCF_LEFT)<<16+IC_SHL;
d[TK_SHR] =(PREC_EXP+ASSOCF_LEFT)<<16+IC_SHR;
+64 -63
View File
@@ -1,13 +1,10 @@
U0 StreamPrint(U8 *fmt,...)
//Inserts text into the stream of
//characters being compiled. Called
//from withing #exe{} block.
{
U8 *buf=SPrintJoin(NULL,fmt,argc,argv),*st;
{//Injects text into the compile stream. Used in #exe{} blocks.
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv),*st;
CLex *lx=Fs->last_lex;
CStreamBlk *tempe=lx->last_stream_blk;
if (tempe!=&lx->next_stream_blk) {
st=MPrint("%s%s",tempe->body,buf);
st=MStrPrint("%s%s",tempe->body,buf);
Free(tempe->body);
tempe->body=st;
} else
@@ -16,7 +13,7 @@ U0 StreamPrint(U8 *fmt,...)
}
U8 *LexStatement2Bin(CLex *lx,I64 *_type,I64 cmp_flags=0)
{
{//Compile one lx statement to bin code.
I64 size,i,j,k,*result=INVALID_PTR;
CLexCodeCtrl *tempcbh;
if (_type) *_type=RT_I64;
@@ -42,17 +39,15 @@ U8 *LexStatement2Bin(CLex *lx,I64 *_type,I64 cmp_flags=0)
} else //TODO: too dangerous to del Misc?
QueDel(&lx->lcc.lcc_root.next);
if (lx->a_depth==2) {
progress1++;
tempcbh=LCCPopNoFree(lx);
LCCAppend(lx,tempcbh);
}
return result;
}
CExe *CmpJoin(CLex *lx,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv=0)
{
CAsmCtrl *a,*old_a=lx->a;
CAOTCtrl *a,*old_a=lx->a;
I64 i,j,l;
U8 *buf;
CAsmCodeBlk *tempc;
@@ -68,11 +63,11 @@ CExe *CmpJoin(CLex *lx,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv=0)
lx->exe=result;
result->next_ie=result->last_ie=&result->next_ie;
lx->a=a=CAlloc(sizeof(CAsmCtrl));
lx->a=a=CAlloc(sizeof(CAOTCtrl));
lx->a_depth++;
a->cb=CAlloc(sizeof(CAsmCodeBlk));
a->max_align=1;
a->max_align_bits=0;
a->module_org=INVALID_PTR;
MemCpy(htc,&lx->htc,sizeof(CLexHashTableContext));
@@ -83,7 +78,7 @@ CExe *CmpJoin(CLex *lx,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv=0)
if (lx->flags&LF_AOT_COMPILE) {
lx->htc.define_hash_table=lx->htc.glbl_hash_table;
if (lx->a_depth<=1)
lx->htc.glbl_hash_table->next=asm_hash;
lx->htc.glbl_hash_table->next=cmp.asm_hash;
else
lx->htc.glbl_hash_table->next=htc->glbl_hash_table;
} else
@@ -127,7 +122,7 @@ CExe *CmpJoin(CLex *lx,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv=0)
LinkedLstDel(a->cb);
result=NULL;
} else {
if (map_name && !cmp_do_not_write_to_dsk)
if (map_name && !cmp.dont_write_to_dsk)
Who("-r",lx->htc.glbl_hash_table,map_name,mapfile_drv);
HashTableDel(lx->htc.local_hash_table);
HashTableDel(lx->htc.glbl_hash_table);
@@ -160,7 +155,7 @@ CExe *CmpJoin(CLex *lx,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv=0)
LinkedLstDel(a->cb);
result->abss=a->abss;
result->heap_glbls=a->heap_glbls;
result->max_align =a->max_align;
result->max_align_bits=a->max_align_bits;
result->module_org=a->module_org;
}
lx->exe=parent;
@@ -223,13 +218,15 @@ U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx)
str=tempe->str;
}
switch (tempe->type) {
case EIT_REL_EXPORT:
case EIT_IMM_EXPORT:
case EIT_REL32_EXPORT:
case EIT_IMM32_EXPORT:
case EIT_REL64_EXPORT:
case EIT_IMM64_EXPORT:
tempex=CAlloc(sizeof(CHashExport));
tempex->str=str;
str=NULL;
tempex->type=HTT_EXPORT_SYS_SYM|HTF_IMM;
if (tempe->type==EIT_IMM_EXPORT)
if (tempe->type==EIT_IMM32_EXPORT||tempe->type==EIT_IMM64_EXPORT)
tempex->val=tempe->ip;
else
tempex->val=tempe->ip+ip2;
@@ -238,7 +235,7 @@ U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx)
HashAdd(tempex,Fs->hash_table);
SysSymImportsResolve(tempex->str);
break;
case EIT_REL_I8...EIT_IMM_U64:
case EIT_REL_I0...EIT_IMM_U64:
if (tempe->str) {
if (tempe->flags&EIF_GOTO_LABEL) {
if(!(g_lb=LCCGoToLabelFind(lx,str)))
@@ -266,6 +263,9 @@ U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx)
if (tempex || g_lb) {
ptr=tempe->ip+ip2;
nobound_switch (tempe->type) {
case EIT_REL_I0:
case EIT_IMM_U0:
break;
case EIT_REL_I8:
if (!(MIN_I8<=i-ptr-1<=MAX_I8))
LexExcept(lx,"branch out of range at ");
@@ -313,7 +313,7 @@ U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx)
U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
{
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
I64 i,ip2=tempx->ip+lx->a->ip;
U8 *ptr;
CLexCodeMisc *g_lb=NULL;
@@ -360,7 +360,7 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
while (tempe!=&tempx->next_ie) {
tempe1=tempe->next;
QueRem(tempe);
if (EIT_REL_I8<=tempe->type<=EIT_IMM_U64) {
if (EIT_REL_I0<=tempe->type<=EIT_IMM_U64) {
if (tempe->str) {
if (tempe->flags&EIF_GOTO_LABEL) {
if(!(g_lb=LCCGoToLabelFind(lx,tempe->str)))
@@ -379,6 +379,9 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
if (g_lb) {
i=g_lb->addr+tempx->buf;
nobound_switch (tempe->type) {
case EIT_REL_I0:
case EIT_IMM_U0:
break;
case EIT_REL_I8:
if (!(MIN_I8<=i-ptr-1<=MAX_I8))
LexExcept(lx,"branch out of range at ");
@@ -415,12 +418,16 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
} else {
switch (tempe->type) {
sub_switch_start:
case EIT_REL_EXPORT:
case EIT_IMM_EXPORT:
case EIT_REL32_EXPORT:
case EIT_IMM32_EXPORT:
case EIT_REL64_EXPORT:
case EIT_IMM64_EXPORT:
case EIT_IMM_U0:
case EIT_IMM_U8:
case EIT_IMM_U16:
case EIT_IMM_U32:
case EIT_IMM_U64:
case EIT_REL_I0:
break;
case EIT_REL_I8:
*ptr(U8 *) -=ip2;
@@ -446,7 +453,7 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
}
I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
{ //Compile file, returns err_cnt
{//AOT Compile CPP or PRJ file a and output BIN file. Returns err_cnt.
U8 *ptr,*fbuf=NULL,*fbuf2=NULL,*fbuf3=NULL,
*patch_table=MAlloc(0x20000);
CExe *tempx;
@@ -458,23 +465,14 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
CExeHeapGlbl *temphg,*temphg1;
fbuf=DftExt(filename,"PRJ.Z");
fbuf2=MPrint("#include \"%s\"",fbuf);
fbuf2=MStrPrint("#include \"%s\"",fbuf);
if (map_name)
fbuf3=DftExt(map_name,"MAP.Z");
if (tempx=CmpBuf(fbuf2,fbuf3,&error_cnt,&warning_cnt,mapfile_drv)) {
ex_U8s=tempx->ex_U8s;
ptr=patch_table;
//See $LK,"CBinFilePatchTableWithoutOrg",A="MN:CBinFilePatchTableWithoutOrg"$
*ptr++=EIT_MODULE_ALIGNMENT; //See $LK,"Load",A="MN:Load"$() and $LK,"BinRep",A="MN:BinRep"$()
*ptr(U32 *)++=tempx->max_align;
*ptr++=0;
if (tempx->module_org!=INVALID_PTR) {
//See $LK,"CBinFilePatchTableWithOrg",A="MN:CBinFilePatchTableWithOrg"$
*ptr++=EIT_MODULE_ORG;
*ptr(U32 *)++=tempx->module_org;
*ptr++=0;
}
//See $LK,"Load",A="MN:Load"$()
cnt=0;
tempa=tempx->abss;
while (tempa) {
@@ -505,7 +503,7 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
temphgr=temphgr->next;
}
if (cnt) {
*ptr++=EIT_HEAP_GLBL;
*ptr++=EIT_DATA_HEAP;
*ptr(U32 *)++=cnt;
if (temphg->str) {
i=StrLen(temphg->str);
@@ -531,7 +529,7 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
tempe=tempx->next_ie;
while (tempe!=&tempx->next_ie) {
tempe1=tempe->next;
if (tempe->type<=EIT_IMM_EXPORT) {
if (!tempe->type || EIT_REL32_EXPORT<=tempe->type<=EIT_IMM64_EXPORT) {
QueRem(tempe);
*ptr++=tempe->type;
*ptr(U32 *)++=tempe->ip;
@@ -577,8 +575,11 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
bfh=MAlloc(size);
bfh->jmp=0xEB+256*(sizeof(CBinFile)-2);
#assert sizeof(CBinFile)-2<=MAX_I8
bfh->type=0; //Reserved. Allow other types, maybe. Must be 16 bytes, anyway.
bfh->loader_patch_table_offset=sizeof(CBinFile)+ex_U8s;
bfh->reserved=0;
bfh->bin_signature=BIN_SIGNATURE_VAL;
bfh->module_org=tempx->module_org;
bfh->module_align_bits=tempx->max_align_bits;
bfh->patch_table_offset=sizeof(CBinFile)+ex_U8s;
bfh->file_size=size;
MemCpy(bfh(U8 *)+sizeof(CBinFile),tempx->buf,ex_U8s);
MemCpy(bfh(U8 *)+sizeof(CBinFile)+ex_U8s,patch_table,size-ex_U8s-sizeof(CBinFile));
@@ -587,7 +588,7 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
fbuf2=DftExt(out_name,"BIN.Z");
else
fbuf2=ChgExt(fbuf,"BIN.Z");
if (!cmp_do_not_write_to_dsk)
if (!cmp.dont_write_to_dsk)
FileWrite(fbuf2,bfh,size);
Free(bfh);
Free(tempx->buf);
@@ -603,12 +604,12 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
}
I64 ExePutS(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE,CLexHashTableContext *htc=NULL)
{
{//JIT Compile and execute text from a puts("").
I64 result;
Bool okay=TRUE;
CLex *lx;
if (!filename)
filename=sys_temp_filename;
filename=dsk.temp_filename;
lx=LexNew(buf,LF_DONT_FREE_BUF,filename);
if (just_load)
lx->flags|=LF_JUST_LOAD;
@@ -638,19 +639,19 @@ I64 ExePutS(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE,CLexHashTableContext
}
I64 ExePrint(U8 *fmt,...)
{
{//JIT Compile and execute text from a printf().
I64 result;
U8 *buf=SPrintJoin(NULL,fmt,argc,argv);
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
result=ExePutS(buf);
Free(buf);
return result;
}
I64 ExeFile(U8 *name,Bool just_load=FALSE)
{
{//JIT Compile and execute a file.
I64 result;
U8 *name2=DftExt(name,"CPP.Z"),
*st=MPrint("#include \"%s\";",name2);
*st=MStrPrint("#include \"%s\";",name2);
result=ExePutS(st,name,just_load);
Free(st);
Free(name2);
@@ -658,11 +659,11 @@ I64 ExeFile(U8 *name,Bool just_load=FALSE)
}
I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE)
{ //throws exceptions
{//throws exceptions
I64 result;
CLex *lx;
if (!filename)
filename=sys_temp_filename;
filename=dsk.temp_filename;
lx=LexNew(buf,LF_DONT_FREE_BUF,filename);
if (just_load)
lx->flags|=LF_JUST_LOAD;
@@ -677,19 +678,19 @@ I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE)
}
I64 ExePrint2(U8 *fmt,...)
{ //throws exceptions
{//throws exceptions
I64 result;
U8 *buf=SPrintJoin(NULL,fmt,argc,argv);
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
result=ExePutS2(buf);
Free(buf);
return result;
}
I64 ExeFile2(U8 *name,Bool just_load=FALSE)
{ //throws exceptions
{//throws exceptions
I64 result;
U8 *name2=DftExt(name,"CPP.Z"),
*st=MPrint("#include \"%s\";",name2);
*st=MStrPrint("#include \"%s\";",name2);
result=ExePutS2(st,name,just_load);
Free(st);
Free(name2);
@@ -697,8 +698,8 @@ I64 ExeFile2(U8 *name,Bool just_load=FALSE)
}
I64 StreamExePrint(U8 *fmt,...)
{//Suppose you want a value from the stream to be used in an #exe block...
U8 *buf=SPrintJoin(NULL,fmt,argc,argv);
{//Suppose you want a value from the stream to be used in an #exe{} block...
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
I64 result=0;
CLexHashTableContext *htc;
CLex *lx=Fs->last_lex;
@@ -716,20 +717,20 @@ I64 StreamExePrint(U8 *fmt,...)
U0 CmpInit()
{
compiled_lines=0;
compiled_funs=0;
compiled_bytes=0;
cmp_do_not_write_to_dsk=FALSE;
cmp.compiled_lines=0;
cmp.compiled_funs=0;
cmp.compiled_bytes=0;
cmp.dont_write_to_dsk=FALSE;
CmpLoadDefines;
CmpFillTables;
MemSet(&opt_nop,0,sizeof(CIntermediateCode));
QueInit(&opt_nop);
opt_nop.ic_class=sys_internal_types[RT_I64];
opt_nop.ic_code=IC_NOP1;
MemSet(&cmp.ic_nop,0,sizeof(CIntermediateCode));
QueInit(&cmp.ic_nop);
cmp.ic_nop.ic_class=cmp.internal_types[RT_I64];
cmp.ic_nop.ic_code=IC_NOP1;
AsmHashLoad;
UnasmHashLoad;
UasmHashLoad;
}
CmpInit;
Binary file not shown.
+458 -496
View File
@@ -1,498 +1,460 @@
$LK,"AsmGlblsResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,286",BI=1$00000082C8 0001 0000000404 Funct Export Res
$LK,"AsmHashLoad ",A="FL:D:/Compiler/CmpInit.CPP.Z,68",BI=2$0000029492 0001 00000005BF Funct Export Res
$LK,"AsmLexExpression ",A="FL:D:/Compiler/Assembler.CPP.Z,191",BI=3$0000007EA0 0004 00000000B7 Funct Export Res
$LK,"AsmLineLst ",A="FL:D:/Compiler/Assembler.CPP.Z,31",BI=4$0000007908 0001 0000000146 Funct Export Res
$LK,"AsmLocalsResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,252",BI=5$00000081A0 0003 0000000127 Funct Export Res
$LK,"AsmMakeArgMask ",A="FL:D:/Compiler/Assembler.CPP.Z,572",BI=6$0000008C30 0002 0000000444 Funct Export Res
$LK,"AsmPrsInsFlags ",A="FL:D:/Compiler/CmpInit.CPP.Z,18",BI=7$0000029252 0001 000000023B Funct Export Res
$LK,"AsmResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,211",BI=8$0000007F58 0002 0000000245 Funct Export Res
$LK,"AsmStoreCodeU32 ",A="FL:D:/Compiler/Assembler.CPP.Z,92",BI=9$0000007B58 0001 0000000145 Funct Export Res
$LK,"AsmStoreCodeU64 ",A="FL:D:/Compiler/Assembler.CPP.Z,131",BI=10$0000007CA0 0005 0000000146 Funct Export Res
$LK,"AsmStoreCodeU8 ",A="FL:D:/Compiler/Assembler.CPP.Z,63",BI=11$0000007A50 001D 0000000103 Funct Export Res
$LK,"AsmStoreCodeU8At ",A="FL:D:/Compiler/Assembler.CPP.Z,170",BI=12$0000007DE8 0007 00000000B7 Funct Export Res
$LK,"AsmStoreNum ",A="FL:D:/Compiler/Assembler.CPP.Z,666",BI=13$0000009078 0004 00000004A6 Funct Export Res
$LK,"AsmUnresolvedAdd ",A="FL:D:/Compiler/Assembler.CPP.Z,1",BI=14$00000077F8 0004 000000010C Funct Export Res
$LK,"CInternalType ",A="FL:D:/Compiler/CmpInit.CPP.Z,4"$007FC80928 0002 000000000A Class
$LK,"CMP_TEMPLATES ",A="FL:D:/Compiler/CmpAsm.CPP.Z,5"$0000000000 0001 ExportSysSym Export
$LK,"CMP_TEMPLATES_DONT_POP ",A="FL:D:/Compiler/CmpAsm.CPP.Z,179"$000000018B 0001 ExportSysSym Export
$LK,"CMP_TEMPLATES_DONT_PUSH ",A="FL:D:/Compiler/CmpAsm.CPP.Z,268"$0000000257 0001 ExportSysSym Export
$LK,"CMP_TEMPLATES_DONT_PUSH2 ",A="FL:D:/Compiler/CmpAsm.CPP.Z,459"$0000000421 0001 ExportSysSym Export
$LK,"AsmGlblsResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,284",BI=1$0000007F30 0001 0000000404 Funct Export Res
$LK,"AsmHashLoad ",A="FL:D:/Compiler/CmpInit.CPP.Z,68",BI=2$000002939A 0001 00000005BF Funct Export Res
$LK,"AsmLexExpression ",A="FL:D:/Compiler/Assembler.CPP.Z,189",BI=3$0000007B08 0004 00000000B7 Funct Export Res
$LK,"AsmLineLst ",A="FL:D:/Compiler/Assembler.CPP.Z,31",BI=4$0000007570 0001 0000000148 Funct Export Res
$LK,"AsmLocalsResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,250",BI=5$0000007E08 0003 0000000127 Funct Export Res
$LK,"AsmMakeArgMask ",A="FL:D:/Compiler/Assembler.CPP.Z,569",BI=6$0000008898 0002 0000000444 Funct Export Res
$LK,"AsmPrsInsFlags ",A="FL:D:/Compiler/CmpInit.CPP.Z,18",BI=7$000002915A 0001 000000023B Funct Export Res
$LK,"AsmResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,209",BI=8$0000007BC0 0002 0000000245 Funct Export Res
$LK,"AsmStoreCodeU32 ",A="FL:D:/Compiler/Assembler.CPP.Z,90",BI=9$00000077C0 0001 0000000145 Funct Export Res
$LK,"AsmStoreCodeU64 ",A="FL:D:/Compiler/Assembler.CPP.Z,129",BI=10$0000007908 0005 0000000146 Funct Export Res
$LK,"AsmStoreCodeU8 ",A="FL:D:/Compiler/Assembler.CPP.Z,61",BI=11$00000076B8 001D 0000000103 Funct Export Res
$LK,"AsmStoreCodeU8At ",A="FL:D:/Compiler/Assembler.CPP.Z,168",BI=12$0000007A50 0007 00000000B7 Funct Export Res
$LK,"AsmStoreNum ",A="FL:D:/Compiler/Assembler.CPP.Z,663",BI=13$0000008CE0 0004 00000004A6 Funct Export Res
$LK,"AsmUnresolvedAdd ",A="FL:D:/Compiler/Assembler.CPP.Z,1",BI=14$0000007460 0004 000000010C Funct Export Res
$LK,"CInternalType ",A="FL:D:/Compiler/CmpInit.CPP.Z,3"$003FD4FE40 0002 000000000A Class
$LK,"CMP_TEMPLATES ",A="FL:D:/Compiler/CmpAsm.CPP.Z,5"$0000000000 0001 ExportSysSym Export
$LK,"CMP_TEMPLATES_DONT_POP",A="FL:D:/Compiler/CmpAsm.CPP.Z,179"$000000018B 0001 ExportSysSym Export
$LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:D:/Compiler/CmpAsm.CPP.Z,268"$0000000257 0001 ExportSysSym Export
$LK,"CMP_TEMPLATES_DONT_PUSH2",A="FL:D:/Compiler/CmpAsm.CPP.Z,459"$0000000421 0001 ExportSysSym Export
$LK,"CMP_TEMPLATES_DONT_PUSH_POP",A="FL:D:/Compiler/CmpAsm.CPP.Z,395"$0000000391 0001 ExportSysSym Export
$LK,"CN_A1 ",A="FL:D:/Compiler/BackF1a.CPP.Z,2"$1 0006 0000000008 DefineStr
$LK,"CN_A2 ",A="FL:D:/Compiler/BackF1a.CPP.Z,1"$0 0005 0000000008 DefineStr
$LK,"CN_MAIN ",A="FL:D:/Compiler/BackF1a.CPP.Z,3"$2 0022 0000000008 DefineStr
$LK,"CN_R ",A="FL:D:/Compiler/BackF1a.CPP.Z,4"$3 0003 0000000008 DefineStr
$LK,"COptMemberVar ",A="FL:D:/Compiler/OptLib.CPP.Z,572"$007FC9EFB0 0005 0000000028 Class
$LK,"CSubSwitch ",A="FL:D:/Compiler/StmtParser.CPP.Z,1367"$007FC9C050 0004 0000000020 Class
$LK,"CSwitchCase ",A="FL:D:/Compiler/StmtParser.CPP.Z,1372"$007FD7B8B8 0004 0000000020 Class
$LK,"CTrace ",A="FL:D:/Compiler/ICLCC.CPP.Z,33",BI=15$0000002878 0000 0000000017 Funct Export Res
$LK,"CVI2 ",A="FL:D:/Compiler/StmtParser.CPP.Z,217"$007FC9C330 0003 0000000010 Class
$LK,"Cmp ",A="FL:D:/Compiler/CmpMain.CPP.Z,448",BI=16$000002C002 0000 0000000589 Funct Export Res
$LK,"CmpBuf ",A="FL:D:/Compiler/CmpMain.CPP.Z,175",BI=17$000002B6F2 0001 00000000B6 Funct Export Res
$LK,"CmpF1PushPop ",A="FL:D:/Compiler/OptLib.CPP.Z,554",BI=18$000000C04E 0002 0000000031 Funct Export Res
$LK,"CmpF2PushPop ",A="FL:D:/Compiler/OptLib.CPP.Z,560",BI=19$000000C086 0005 0000000074 Funct Export Res
$LK,"CmpFillTables ",A="FL:D:/Compiler/CmpInit.CPP.Z,445",BI=20$000002A962 0001 000000051A Funct Export Res
$LK,"CmpFixUpAOTAsm ",A="FL:D:/Compiler/CmpMain.CPP.Z,314",BI=21$000002BC22 0000 00000003DD Funct Export Res
$LK,"CmpFixUpJITAsm ",A="FL:D:/Compiler/CmpMain.CPP.Z,192",BI=22$000002B7AA 0000 0000000473 Funct Export Res
$LK,"CmpInit ",A="FL:D:/Compiler/CmpMain.CPP.Z,717",BI=23$000002CA8A 0001 0000000081 Funct Export Res
$LK,"CmpJoin ",A="FL:D:/Compiler/CmpMain.CPP.Z,53",BI=24$000002B06A 0001 0000000682 Funct Export Res
$LK,"CmpLoadDefines ",A="FL:D:/Compiler/CmpInit.CPP.Z,205",BI=25$0000029A52 0001 0000000F0A Funct Export Res
$LK,"CmpNoteFloatOp ",A="FL:D:/Compiler/BackF1a.CPP.Z,6",BI=26$000001B4EE 000E 000000020D Funct Export Res
$LK,"CmpOffset2Reg ",A="FL:D:/Compiler/OptLib.CPP.Z,83",BI=27$000000B406 0005 0000000046 Funct Export Res
$LK,"CmpPmt ",A="FL:D:/Compiler/Lex.CPP.Z,1",BI=28$0000003998 0001 000000023E Funct Export Res
$LK,"CmpRawType ",A="FL:D:/Compiler/OptLib.CPP.Z,534",BI=29$000000BFEE 0006 0000000025 Funct Export Res
$LK,"CmpRawTypePointed ",A="FL:D:/Compiler/OptLib.CPP.Z,543",BI=30$000000C016 0005 0000000033 Funct Export Res
$LK,"CmpSetFloatOpPushPop ",A="FL:D:/Compiler/BackF1a.CPP.Z,57",BI=31$000001B6FE 000C 0000000075 Funct Export Res
$LK,"Echo ",A="FL:D:/Compiler/ICLCC.CPP.Z,38",BI=32$0000002890 0000 0000000017 Funct Export Res
$LK,"ExeFile ",A="FL:D:/Compiler/CmpMain.CPP.Z,649",BI=33$000002C78A 0000 000000007B Funct Export Res
$LK,"ExeFile2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,688",BI=34$000002C91A 0000 0000000079 Funct Export Res
$LK,"ExePrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,640",BI=35$000002C73A 0000 0000000049 Funct Export Res
$LK,"ExePrint2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,679",BI=36$000002C8D2 0000 0000000047 Funct Export Res
$LK,"ExePutS ",A="FL:D:/Compiler/CmpMain.CPP.Z,605",BI=37$000002C592 0003 00000001A1 Funct Export Res
$LK,"ExePutS2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,660",BI=38$000002C80A 0002 00000000C8 Funct Export Res
$LK,"FBO1_F64 ",A="FL:D:/Compiler/OptLib.CPP.Z,94"$2 0002 0000000008 DefineStr
$LK,"FBO1_INT ",A="FL:D:/Compiler/OptLib.CPP.Z,93"$1 0013 0000000008 DefineStr
$LK,"FBO1_NOT_CONST ",A="FL:D:/Compiler/OptLib.CPP.Z,92"$0 0004 0000000008 DefineStr
$LK,"GetOpt ",A="FL:D:/Compiler/ICLCC.CPP.Z,16",BI=39$00000027F0 0004 000000002C Funct Export Res
$LK,"HashEntryImportCopy ",A="FL:D:/Compiler/Hash1b.CPP.Z,1",BI=40$00000072B0 0002 0000000157 Funct Export Res
$LK,"HashEntrySize ",A="FL:D:/Compiler/Hash1b.CPP.Z,67",BI=41$00000074D8 0000 0000000103 Funct Export Res
$LK,"HashEntrySize2 ",A="FL:D:/Compiler/Hash1b.CPP.Z,98",BI=42$00000075E0 0002 00000001A4 Funct Export Res
$LK,"HashTableImport ",A="FL:D:/Compiler/Hash1b.CPP.Z,40",BI=43$0000007408 0000 00000000CD Funct Export Res
$LK,"HashTableSize2 ",A="FL:D:/Compiler/Hash1b.CPP.Z,135",BI=44$0000007788 0000 000000006F Funct Export Res
$LK,"ICAddEct ",A="FL:D:/Compiler/Back1a.CPP.Z,1",BI=45$000001F156 0005 00000002F3 Funct Export Res
$LK,"ICAddRSP ",A="FL:D:/Compiler/BackLib.CPP.Z,72",BI=46$0000019E96 0017 00000002A7 Funct Export Res
$LK,"ICAddSubEctEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,506",BI=47$0000020A56 0005 0000000673 Funct Export Res
$LK,"ICAddSubEctImm ",A="FL:D:/Compiler/Back1a.CPP.Z,57",BI=48$000001F44E 000D 000000067F Funct Export Res
$LK,"ICAndAnd ",A="FL:D:/Compiler/Back1b.CPP.Z,30",BI=49$00000216F6 0001 000000014B Funct Export Res
$LK,"ICAndBranch ",A="FL:D:/Compiler/Back1c.CPP.Z,1",BI=50$000002398E 0002 00000006E4 Funct Export Res
$LK,"ICAndEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,676",BI=51$000002586E 0001 000000010D Funct Export Res
$LK,"ICArgPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,93",BI=52$0000002AA8 0003 00000002D3 Funct Export Res
$LK,"ICAssign ",A="FL:D:/Compiler/Back1c.CPP.Z,159",BI=53$0000024076 0001 0000000301 Funct Export Res
$LK,"ICAssignPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,535",BI=54$0000022D4E 0002 0000000210 Funct Export Res
$LK,"ICBitOps ",A="FL:D:/Compiler/Back1b.CPP.Z,244",BI=55$0000021FEE 0007 00000004F1 Funct Export Res
$LK,"ICBrBitOps ",A="FL:D:/Compiler/Back1c.CPP.Z,208",BI=56$000002437E 0008 00000009FB Funct Export Res
$LK,"ICBuiltInFloatConst ",A="FL:D:/Compiler/BackLib.CPP.Z,424",BI=57$000001A9CE 000F 00000000BD Funct Export Res
$LK,"ICClassPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,68",BI=58$00000029D0 0001 00000000D3 Funct Export Res
$LK,"ICCmp ",A="FL:D:/Compiler/Back1b.CPP.Z,124",BI=59$0000021B06 0006 00000004E6 Funct Export Res
$LK,"ICCmpAndBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,577",BI=60$0000022F5E 000C 0000000737 Funct Export Res
$LK,"ICCopyTemplate ",A="FL:D:/Compiler/BackF1a.CPP.Z,69",BI=61$000001B776 0013 000000021D Funct Export Res
$LK,"ICDeref ",A="FL:D:/Compiler/BackLib.CPP.Z,661",BI=62$000001B42E 0001 00000000B9 Funct Export Res
$LK,"ICDerefPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,492",BI=63$0000022B56 0002 00000001F1 Funct Export Res
$LK,"ICDiv ",A="FL:D:/Compiler/Back1a.CPP.Z,414",BI=64$0000020586 0001 00000000F1 Funct Export Res
$LK,"ICDivEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,433",BI=65$000002067E 0002 00000002DE Funct Export Res
$LK,"ICFAdd ",A="FL:D:/Compiler/BackF1b.CPP.Z,634",BI=66$000001EB16 0001 00000001FF Funct Export Res
$LK,"ICFCmp ",A="FL:D:/Compiler/BackF1a.CPP.Z,549",BI=67$000001CAEE 0004 000000018B Funct Export Res
$LK,"ICFCmpAndBranch ",A="FL:D:/Compiler/BackF1b.CPP.Z,325",BI=68$000001DF4E 0004 00000009F7 Funct Export Res
$LK,"ICFCvt ",A="FL:D:/Compiler/BackF1a.CPP.Z,115",BI=69$000001B996 000C 000000017F Funct Export Res
$LK,"ICFCvt2 ",A="FL:D:/Compiler/BackF1a.CPP.Z,163",BI=70$000001BB16 0010 0000000116 Funct Export Res
$LK,"ICFDiv ",A="FL:D:/Compiler/BackF1b.CPP.Z,622",BI=71$000001EA66 0001 00000000A9 Funct Export Res
$LK,"ICFMod ",A="FL:D:/Compiler/BackF1a.CPP.Z,241",BI=72$000001BE0E 0001 0000000145 Funct Export Res
$LK,"ICFModEqual ",A="FL:D:/Compiler/BackF1a.CPP.Z,589",BI=73$000001CC7E 0001 00000003D7 Funct Export Res
$LK,"ICFMul ",A="FL:D:/Compiler/BackF1b.CPP.Z,604",BI=74$000001E946 0001 000000011B Funct Export Res
$LK,"ICFOp ",A="FL:D:/Compiler/BackF1a.CPP.Z,350",BI=75$000001C24E 0004 000000089D Funct Export Res
$LK,"ICFOpEqual ",A="FL:D:/Compiler/BackF1b.CPP.Z,1",BI=76$000001D056 0004 0000000EF7 Funct Export Res
$LK,"ICFPostIncDec ",A="FL:D:/Compiler/BackF1b.CPP.Z,717",BI=77$000001EF4E 0002 0000000151 Funct Export Res
$LK,"ICFPow ",A="FL:D:/Compiler/BackF1a.CPP.Z,271",BI=78$000001BF56 0001 00000002F7 Funct Export Res
$LK,"ICFPreIncDec ",A="FL:D:/Compiler/BackF1b.CPP.Z,695",BI=79$000001EE3E 0002 000000010A Funct Export Res
$LK,"ICFSub ",A="FL:D:/Compiler/BackF1b.CPP.Z,672",BI=80$000001ED16 0001 0000000124 Funct Export Res
$LK,"ICFTemplateFun ",A="FL:D:/Compiler/BackF1b.CPP.Z,745",BI=81$000001F0A6 0007 00000000AA Funct Export Res
$LK,"ICFUnaryMinus ",A="FL:D:/Compiler/BackF1a.CPP.Z,190",BI=82$000001BC2E 0001 00000001E0 Funct Export Res
$LK,"ICFlagBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,805",BI=83$0000023886 0004 0000000106 Funct Export Res
$LK,"ICLastIns ",A="FL:D:/Compiler/BackLib.CPP.Z,62",BI=84$0000019E56 0002 0000000040 Funct Export Res
$LK,"ICLea ",A="FL:D:/Compiler/BackLib.CPP.Z,627",BI=85$000001B27E 0004 00000001AA Funct Export Res
$LK,"ICLocalVarInit ",A="FL:D:/Compiler/Back1c.CPP.Z,909",BI=86$000002628E 0001 0000000078 Funct Export Res
$LK,"ICMinMax ",A="FL:D:/Compiler/Back1c.CPP.Z,497",BI=87$0000025146 0004 00000002AB Funct Export Res
$LK,"ICMod ",A="FL:D:/Compiler/Back1a.CPP.Z,487",BI=88$000002095E 0001 00000000F1 Funct Export Res
$LK,"ICModU64 ",A="FL:D:/Compiler/Back1c.CPP.Z,576",BI=89$0000025446 0001 00000001B7 Funct Export Res
$LK,"ICModr1 ",A="FL:D:/Compiler/BackLib.CPP.Z,143",BI=90$000001A13E 0017 00000002FE Funct Export Res
$LK,"ICModr2 ",A="FL:D:/Compiler/BackLib.CPP.Z,234",BI=91$000001A43E 0016 00000000A6 Funct Export Res
$LK,"ICMov ",A="FL:D:/Compiler/BackLib.CPP.Z,447",BI=92$000001AA8E 019A 00000007EC Funct Export Res
$LK,"ICMul ",A="FL:D:/Compiler/Back1a.CPP.Z,289",BI=93$000001FEC6 0001 00000002B8 Funct Export Res
$LK,"ICMulEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,346",BI=94$000002017E 0001 0000000406 Funct Export Res
$LK,"ICNot ",A="FL:D:/Compiler/Back1b.CPP.Z,10",BI=95$00000215F6 0001 00000000FF Funct Export Res
$LK,"ICOpSizeRex ",A="FL:D:/Compiler/BackLib.CPP.Z,31",BI=96$0000019D6E 0006 0000000040 Funct Export Res
$LK,"ICOrEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,699",BI=97$000002597E 0001 000000010D Funct Export Res
$LK,"ICOrOr ",A="FL:D:/Compiler/Back1b.CPP.Z,59",BI=98$0000021846 0001 0000000162 Funct Export Res
$LK,"ICPop ",A="FL:D:/Compiler/BackLib.CPP.Z,365",BI=99$000001A7D6 0009 00000000EA Funct Export Res
$LK,"ICPopRegs ",A="FL:D:/Compiler/BackLib.CPP.Z,392",BI=100$000001A8C6 000C 0000000057 Funct Export Res
$LK,"ICPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,452",BI=101$0000022956 0002 00000001FF Funct Export Res
$LK,"ICPreIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,415",BI=102$0000022776 0004 00000001DB Funct Export Res
$LK,"ICPreempt ",A="FL:D:/Compiler/Back1b.CPP.Z,348",BI=103$00000224E6 0001 0000000122 Funct Export Res
$LK,"ICPush ",A="FL:D:/Compiler/BackLib.CPP.Z,314",BI=104$000001A62E 001F 000000014E Funct Export Res
$LK,"ICPushRegs ",A="FL:D:/Compiler/BackLib.CPP.Z,352",BI=105$000001A77E 0006 0000000054 Funct Export Res
$LK,"ICPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,138",BI=106$0000002D80 0008 00000003B2 Funct Export Res
$LK,"ICQueInit ",A="FL:D:/Compiler/Back1c.CPP.Z,385",BI=107$0000024D7E 0001 0000000070 Funct Export Res
$LK,"ICQueIns ",A="FL:D:/Compiler/Back1c.CPP.Z,399",BI=108$0000024DEE 0001 0000000162 Funct Export Res
$LK,"ICQueInsRev ",A="FL:D:/Compiler/Back1c.CPP.Z,440",BI=109$0000024F56 0001 0000000162 Funct Export Res
$LK,"ICQueRem ",A="FL:D:/Compiler/Back1c.CPP.Z,481",BI=110$00000250BE 0001 0000000088 Funct Export Res
$LK,"ICRex ",A="FL:D:/Compiler/BackLib.CPP.Z,25",BI=111$0000019D3E 0016 000000002D Funct Export Res
$LK,"ICShift ",A="FL:D:/Compiler/Back1a.CPP.Z,644",BI=112$00000210CE 0004 00000001A3 Funct Export Res
$LK,"ICShiftEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,677",BI=113$0000021276 0002 000000030E Funct Export Res
$LK,"ICSlashOp ",A="FL:D:/Compiler/BackLib.CPP.Z,286",BI=114$000001A4E6 0027 0000000143 Funct Export Res
$LK,"ICSqr ",A="FL:D:/Compiler/Back1c.CPP.Z,569",BI=115$00000253F6 0002 000000004A Funct Export Res
$LK,"ICSub ",A="FL:D:/Compiler/Back1a.CPP.Z,211",BI=116$000001FACE 0001 00000003F5 Funct Export Res
$LK,"ICSwap ",A="FL:D:/Compiler/Back1c.CPP.Z,618",BI=117$00000255FE 0001 000000026E Funct Export Res
$LK,"ICSwitch ",A="FL:D:/Compiler/Back1c.CPP.Z,745",BI=118$0000025B96 0002 00000006F2 Funct Export Res
$LK,"ICTest ",A="FL:D:/Compiler/BackLib.CPP.Z,414",BI=119$000001A97E 000C 000000004E Funct Export Res
$LK,"ICTestAndBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,757",BI=120$0000023696 0002 00000001EC Funct Export Res
$LK,"ICToBool ",A="FL:D:/Compiler/Back1b.CPP.Z,400",BI=121$00000226FE 0001 0000000075 Funct Export Res
$LK,"ICToF64 ",A="FL:D:/Compiler/Back1b.CPP.Z,395",BI=122$00000226BE 0001 000000003D Funct Export Res
$LK,"ICToI64 ",A="FL:D:/Compiler/Back1b.CPP.Z,390",BI=123$000002267E 0001 000000003D Funct Export Res
$LK,"ICToUpper ",A="FL:D:/Compiler/Back1b.CPP.Z,379",BI=124$000002260E 0001 000000006B Funct Export Res
$LK,"ICU16 ",A="FL:D:/Compiler/BackLib.CPP.Z,38",BI=125$0000019DAE 0092 0000000029 Funct Export Res
$LK,"ICU24 ",A="FL:D:/Compiler/BackLib.CPP.Z,44",BI=126$0000019DDE 0063 0000000026 Funct Export Res
$LK,"ICU32 ",A="FL:D:/Compiler/BackLib.CPP.Z,50",BI=127$0000019E06 0054 0000000026 Funct Export Res
$LK,"ICU64 ",A="FL:D:/Compiler/BackLib.CPP.Z,56",BI=128$0000019E2E 0009 0000000028 Funct Export Res
$LK,"ICU8 ",A="FL:D:/Compiler/BackLib.CPP.Z,20",BI=129$0000019D16 0063 0000000028 Funct Export Res
$LK,"ICUnaries ",A="FL:D:/Compiler/Back1b.CPP.Z,1",BI=130$0000021586 0002 0000000069 Funct Export Res
$LK,"ICXorEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,722",BI=131$0000025A8E 0001 0000000107 Funct Export Res
$LK,"ICXorXor ",A="FL:D:/Compiler/Back1b.CPP.Z,91",BI=132$00000219AE 0001 0000000155 Funct Export Res
$LK,"ICZero ",A="FL:D:/Compiler/BackLib.CPP.Z,405",BI=133$000001A91E 0017 000000005E Funct Export Res
$LK,"ImportHashTable ",A="FL:D:/Compiler/ICLCC.CPP.Z,42",BI=134$00000028A8 0000 00000000F1 Funct Export Res
$LK,"IncludeDepth ",A="FL:D:/Compiler/ICLCC.CPP.Z,62",BI=135$00000029A0 0000 0000000030 Funct Export Res
$LK,"InstEntriesCompare ",A="FL:D:/Compiler/Unassembler.CPP.Z,1",BI=136$0000000718 0001 00000002A9 Funct Export Res
$LK,"InstEntryFind ",A="FL:D:/Compiler/Unassembler.CPP.Z,73",BI=137$00000009C8 0002 00000003C9 Funct Export Res
$LK,"IsLexExpression2Bin ",A="FL:D:/Compiler/ExpParser.CPP.Z,1154",BI=138$000000F016 0000 0000000029 Funct Export Res
$LK,"LCCAdd ",A="FL:D:/Compiler/ICLCC.CPP.Z,220",BI=139$00000031B0 00A9 000000009F Funct Export Res
$LK,"LCCAppend ",A="FL:D:/Compiler/ICLCC.CPP.Z,259",BI=140$00000032D8 0003 00000000A6 Funct Export Res
$LK,"LCCCompile ",A="FL:D:/Compiler/ICLCC.CPP.Z,376",BI=141$0000003708 0006 000000028B Funct Export Res
$LK,"LCCDel ",A="FL:D:/Compiler/ICLCC.CPP.Z,319",BI=142$00000034F8 0001 0000000164 Funct Export Res
$LK,"LCCFloatConstFind ",A="FL:D:/Compiler/ICLCC.CPP.Z,297",BI=143$0000003430 000F 00000000C6 Funct Export Res
$LK,"LCCGoToLabelFind ",A="FL:D:/Compiler/ICLCC.CPP.Z,285",BI=144$00000033D8 0005 0000000057 Funct Export Res
$LK,"LCCHeaderPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,362",BI=145$0000003660 000A 00000000A2 Funct Export Res
$LK,"LCCInit ",A="FL:D:/Compiler/ICLCC.CPP.Z,212",BI=146$0000003170 000A 000000003A Funct Export Res
$LK,"LCCMiscNew ",A="FL:D:/Compiler/ICLCC.CPP.Z,276",BI=147$0000003380 0021 0000000055 Funct Export Res
$LK,"LCCPop ",A="FL:D:/Compiler/ICLCC.CPP.Z,254",BI=148$00000032B8 0008 000000001A Funct Export Res
$LK,"LCCPopNoFree ",A="FL:D:/Compiler/ICLCC.CPP.Z,247",BI=149$0000003288 0003 000000002E Funct Export Res
$LK,"LCCPush ",A="FL:D:/Compiler/ICLCC.CPP.Z,240",BI=150$0000003250 000E 0000000037 Funct Export Res
$LK,"LCCQuePut ",A="FL:D:/Compiler/ICLCC.CPP.Z,202",BI=151$0000003138 0001 0000000037 Funct Export Res
$LK,"Lex ",A="FL:D:/Compiler/Lex.CPP.Z,742",BI=152$0000005668 00E6 0000001866 Funct Export Res
$LK,"LexAttachDoc ",A="FL:D:/Compiler/Lex.CPP.Z,378",BI=153$0000004AF0 0001 0000000163 Funct Export Res
$LK,"LexBackupLastChar ",A="FL:D:/Compiler/Lex.CPP.Z,132",BI=154$0000003F8C 0003 0000000041 Funct Export Res
$LK,"LexDel ",A="FL:D:/Compiler/Lex.CPP.Z,67",BI=155$0000003D10 0004 00000000A5 Funct Export Res
$LK,"LexDocRead ",A="FL:D:/Compiler/Lex.CPP.Z,361",BI=156$0000004A68 0001 0000000087 Funct Export Res
$LK,"LexDollar ",A="FL:D:/Compiler/Lex.CPP.Z,143",BI=157$0000003FD4 0003 0000000070 Funct Export Res
$LK,"LexExcept ",A="FL:D:/Compiler/Lex.CPP.Z,1615",BI=158$00000071E8 00AE 00000000C1 Funct Export Res
$LK,"LexExpression ",A="FL:D:/Compiler/ExpParser.CPP.Z,1159",BI=159$000000F046 0007 000000003F Funct Export Res
$LK,"LexExpression2Bin ",A="FL:D:/Compiler/ExpParser.CPP.Z,1136",BI=160$000000EF7E 0004 0000000094 Funct Export Res
$LK,"LexExtStr ",A="FL:D:/Compiler/Lex.CPP.Z,1532",BI=161$0000006ED0 0004 00000000C5 Funct Export Res
$LK,"LexGetChar ",A="FL:D:/Compiler/Lex.CPP.Z,157",BI=162$0000004044 0030 000000094F Funct Export Res
$LK,"LexInStr ",A="FL:D:/Compiler/Lex.CPP.Z,644",BI=163$0000005338 0001 000000032A Funct Export Res
$LK,"LexIncludeStr ",A="FL:D:/Compiler/Lex.CPP.Z,334",BI=164$00000049C4 0003 0000000091 Funct Export Res
$LK,"LexNew ",A="FL:D:/Compiler/Lex.CPP.Z,37",BI=165$0000003BD8 0004 0000000136 Funct Export Res
$LK,"LexPop ",A="FL:D:/Compiler/Lex.CPP.Z,435",BI=166$0000004CE0 0004 0000000074 Funct Export Res
$LK,"LexPush ",A="FL:D:/Compiler/Lex.CPP.Z,423",BI=167$0000004C58 000F 0000000081 Funct Export Res
$LK,"LexPutLine ",A="FL:D:/Compiler/Lex.CPP.Z,1557",BI=168$0000006F98 0003 000000009B Funct Export Res
$LK,"LexPutPos ",A="FL:D:/Compiler/Lex.CPP.Z,1585",BI=169$0000007038 0003 00000000CA Funct Export Res
$LK,"LexPutToken ",A="FL:D:/Compiler/Lex.CPP.Z,109",BI=170$0000003E58 0001 000000012B Funct Export Res
$LK,"LexSize ",A="FL:D:/Compiler/Lex.CPP.Z,89",BI=171$0000003DB8 0000 000000009B Funct Export Res
$LK,"LexSkipEol ",A="FL:D:/Compiler/Lex.CPP.Z,327",BI=172$0000004994 0004 000000002B Funct Export Res
$LK,"LexStatement2Bin ",A="FL:D:/Compiler/CmpMain.CPP.Z,18",BI=173$000002AF2A 0001 000000013C Funct Export Res
$LK,"LexWarn ",A="FL:D:/Compiler/Lex.CPP.Z,1599",BI=174$0000007108 0009 00000000D9 Funct Export Res
$LK,"MDR_D32_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,137"$3 0002 0000000008 DefineStr
$LK,"MDR_D8_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,136"$2 0002 0000000008 DefineStr
$LK,"MDR_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,135"$1 0002 0000000008 DefineStr
$LK,"MDR_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,134"$0 0002 0000000008 DefineStr
$LK,"MDR_RIP_REL ",A="FL:D:/Compiler/BackLib.CPP.Z,141"$7 0004 0000000008 DefineStr
$LK,"MDR_SIB_D32_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,140"$6 0003 0000000008 DefineStr
$LK,"MDR_SIB_D8_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,139"$5 0002 0000000008 DefineStr
$LK,"MDR_SIB_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,138"$4 0002 0000000008 DefineStr
$LK,"MemberAdd ",A="FL:D:/Compiler/Lex.CPP.Z,504",BI=175$0000004E90 0004 00000001BA Funct Export Res
$LK,"MemberFind ",A="FL:D:/Compiler/Lex.CPP.Z,469",BI=176$0000004DE0 0005 0000000067 Funct Export Res
$LK,"MemberFind2 ",A="FL:D:/Compiler/Lex.CPP.Z,489",BI=177$0000004E48 0001 0000000044 Funct Export Res
$LK,"MemberLstCopy ",A="FL:D:/Compiler/Lex.CPP.Z,589",BI=178$0000005148 0001 000000011F Funct Export Res
$LK,"MemberLstDel ",A="FL:D:/Compiler/Lex.CPP.Z,552",BI=179$0000005050 0001 00000000F3 Funct Export Res
$LK,"MemberLstNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,78",BI=180$000000F1F6 0003 000000002A Funct Export Res
$LK,"MemberLstSize ",A="FL:D:/Compiler/Lex.CPP.Z,617",BI=181$0000005268 0002 00000000CF Funct Export Res
$LK,"MemberMetaData ",A="FL:D:/Compiler/Lex.CPP.Z,447",BI=182$0000004D58 0000 0000000041 Funct Export Res
$LK,"MemberMetaFind ",A="FL:D:/Compiler/Lex.CPP.Z,458",BI=183$0000004DA0 0000 0000000040 Funct Export Res
$LK,"NUM_INTERNAL_TYPES ",A="FL:D:/Compiler/CmpInit.CPP.Z,1"$17 0002 0000000008 DefineStr
$LK,"OTrace ",A="FL:D:/Compiler/ICLCC.CPP.Z,21",BI=184$0000002820 0000 0000000017 Funct Export Res
$LK,"OTraceMask ",A="FL:D:/Compiler/ICLCC.CPP.Z,26",BI=185$0000002838 0000 0000000039 Funct Export Res
$LK,"OptBrNotZero ",A="FL:D:/Compiler/OptLib.CPP.Z,362",BI=186$000000BB46 0004 0000000403 Funct Export Res
$LK,"OptBrZero ",A="FL:D:/Compiler/OptLib.CPP.Z,213",BI=187$000000B73E 0006 0000000403 Funct Export Res
$LK,"OptClassFwd ",A="FL:D:/Compiler/OptLib.CPP.Z,9",BI=188$000000B266 0013 000000002B Funct Export Res
$LK,"OptEqu ",A="FL:D:/Compiler/ICLCC.CPP.Z,1",BI=189$0000002790 0005 000000002E Funct Export Res
$LK,"OptFixSizeOf ",A="FL:D:/Compiler/OptLib.CPP.Z,510",BI=190$000000BF4E 0003 000000009B Funct Export Res
$LK,"OptFixupBinaryOp1 ",A="FL:D:/Compiler/OptLib.CPP.Z,96",BI=191$000000B44E 0013 00000001CB Funct Export Res
$LK,"OptFixupBinaryOp2 ",A="FL:D:/Compiler/OptLib.CPP.Z,162",BI=192$000000B61E 0001 0000000054 Funct Export Res
$LK,"OptFixupUnaryOp ",A="FL:D:/Compiler/OptLib.CPP.Z,178",BI=193$000000B676 0003 00000000C8 Funct Export Res
$LK,"OptFree ",A="FL:D:/Compiler/OptLib.CPP.Z,33",BI=194$000000B316 0023 0000000024 Funct Export Res
$LK,"OptIC4 ",A="FL:D:/Compiler/OptPass4.CPP.Z,1",BI=195$0000017ABE 0001 00000005CD Funct Export Res
$LK,"OptIC6 ",A="FL:D:/Compiler/OptPass6.CPP.Z,1",BI=196$00000193D6 0001 0000000128 Funct Export Res
$LK,"OptLabelFwd ",A="FL:D:/Compiler/OptLib.CPP.Z,1",BI=197$000000B23E 0010 0000000028 Funct Export Res
$LK,"OptLag ",A="FL:D:/Compiler/OptLib.CPP.Z,40",BI=198$000000B33E 000E 000000002A Funct Export Res
$LK,"OptLag1 ",A="FL:D:/Compiler/OptLib.CPP.Z,51",BI=199$000000B36E 0006 0000000031 Funct Export Res
$LK,"OptLag2 ",A="FL:D:/Compiler/OptLib.CPP.Z,62",BI=200$000000B3A6 0003 000000002A Funct Export Res
$LK,"OptLead1 ",A="FL:D:/Compiler/OptLib.CPP.Z,73",BI=201$000000B3D6 0004 0000000030 Funct Export Res
$LK,"OptMVCompare ",A="FL:D:/Compiler/OptLib.CPP.Z,577",BI=202$000000C0FE 0001 000000001A Funct Export Res
$LK,"OptOff ",A="FL:D:/Compiler/ICLCC.CPP.Z,11",BI=203$00000027D8 0000 0000000016 Funct Export Res
$LK,"OptOn ",A="FL:D:/Compiler/ICLCC.CPP.Z,6",BI=204$00000027C0 0000 0000000016 Funct Export Res
$LK,"OptPass012 ",A="FL:D:/Compiler/OptPass012.CPP.Z,24",BI=205$0000013C8E 0000 00000027CC Funct Export Res
$LK,"OptPass3 ",A="FL:D:/Compiler/OptPass3.CPP.Z,1",BI=206$000001645E 0000 0000001659 Funct Export Res
$LK,"OptPass4 ",A="FL:D:/Compiler/OptPass4.CPP.Z,171",BI=207$000001808E 0000 0000000F05 Funct Export Res
$LK,"OptPass5 ",A="FL:D:/Compiler/OptPass5.CPP.Z,1",BI=208$0000018F96 0000 000000043F Funct Export Res
$LK,"OptPass6 ",A="FL:D:/Compiler/OptPass6.CPP.Z,111",BI=209$0000019826 0000 00000004EA Funct Export Res
$LK,"OptPass6Lag ",A="FL:D:/Compiler/OptPass6.CPP.Z,28",BI=210$00000194FE 0001 0000000327 Funct Export Res
$LK,"OptPass789 ",A="FL:D:/Compiler/OptPass789.CPP.Z,1",BI=211$0000026306 0000 0000002E9E Funct Export Res
$LK,"OptSetNOP1 ",A="FL:D:/Compiler/OptLib.CPP.Z,17",BI=212$000000B296 0079 000000003A Funct Export Res
$LK,"OptSetNOP2 ",A="FL:D:/Compiler/OptLib.CPP.Z,25",BI=213$000000B2D6 000D 000000003C Funct Export Res
$LK,"PE_CHECK_BINARY_OPS1 ",A="FL:D:/Compiler/ExpParser.CPP.Z,43"$5 0001 0000000008 DefineStr
$LK,"PE_CHECK_BINARY_OPS2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,44"$6 0001 0000000008 DefineStr
$LK,"PE_DEREFERENCE ",A="FL:D:/Compiler/ExpParser.CPP.Z,42"$4 0003 0000000008 DefineStr
$LK,"PE_DO_BINARY_OP ",A="FL:D:/Compiler/ExpParser.CPP.Z,46"$8 0001 0000000008 DefineStr
$LK,"PE_DO_UNARY_OP ",A="FL:D:/Compiler/ExpParser.CPP.Z,45"$7 0001 0000000008 DefineStr
$LK,"PE_MAYBE_MODIFIERS ",A="FL:D:/Compiler/ExpParser.CPP.Z,40"$2 000A 0000000008 DefineStr
$LK,"PE_POP_ALL1 ",A="FL:D:/Compiler/ExpParser.CPP.Z,49"$11 0001 0000000008 DefineStr
$LK,"PE_POP_ALL2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,50"$12 0001 0000000008 DefineStr
$LK,"PE_POP_HIGHER ",A="FL:D:/Compiler/ExpParser.CPP.Z,47"$9 0001 0000000008 DefineStr
$LK,"PE_PUSH_LOWER ",A="FL:D:/Compiler/ExpParser.CPP.Z,48"$10 0001 0000000008 DefineStr
$LK,"PE_UNARY_MODIFIERS ",A="FL:D:/Compiler/ExpParser.CPP.Z,41"$3 0009 0000000008 DefineStr
$LK,"PE_UNARY_TERM1 ",A="FL:D:/Compiler/ExpParser.CPP.Z,38"$0 0001 0000000008 DefineStr
$LK,"PE_UNARY_TERM2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,39"$1 0003 0000000008 DefineStr
$LK,"ParenWarning ",A="FL:D:/Compiler/ExpParser.CPP.Z,1",BI=214$000000C11E 0004 000000004C Funct Export Res
$LK,"PrsAddOp ",A="FL:D:/Compiler/ExpParser.CPP.Z,52",BI=215$000000C266 0002 00000001EE Funct Export Res
$LK,"PrsArrayDims ",A="FL:D:/Compiler/StmtParser.CPP.Z,345",BI=216$000000FC7E 0001 000000012D Funct Export Res
$LK,"PrsAsmArg ",A="FL:D:/Compiler/Assembler.CPP.Z,430",BI=217$0000008808 0002 0000000424 Funct Export Res
$LK,"PrsAsmBlk ",A="FL:D:/Compiler/Assembler.CPP.Z,1281",BI=218$000000A97E 0002 00000008C0 Funct Export Res
$LK,"PrsAsmDefine ",A="FL:D:/Compiler/Assembler.CPP.Z,1192",BI=219$000000A61E 0004 000000029D Funct Export Res
$LK,"PrsAsmImm ",A="FL:D:/Compiler/Assembler.CPP.Z,396",BI=220$00000086D0 0006 0000000131 Funct Export Res
$LK,"PrsAsmInstruction ",A="FL:D:/Compiler/Assembler.CPP.Z,784",BI=221$0000009526 0001 00000010F3 Funct Export Res
$LK,"PrsBinFile ",A="FL:D:/Compiler/Assembler.CPP.Z,1265",BI=222$000000A8BE 0001 00000000BB Funct Export Res
$LK,"PrsClass ",A="FL:D:/Compiler/StmtParser.CPP.Z,822",BI=223$0000010CF6 0002 000000023E Funct Export Res
$LK,"PrsClassNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,1",BI=224$000000F086 0003 00000000B7 Funct Export Res
$LK,"PrsDoWhile ",A="FL:D:/Compiler/StmtParser.CPP.Z,1306",BI=225$000001204E 0001 0000000137 Funct Export Res
$LK,"PrsDotDotDot ",A="FL:D:/Compiler/StmtParser.CPP.Z,382",BI=226$000000FDAE 0001 0000000111 Funct Export Res
$LK,"PrsExpression ",A="FL:D:/Compiler/ExpParser.CPP.Z,298",BI=227$000000CABE 0010 0000000149 Funct Export Res
$LK,"PrsExpression2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,102",BI=228$000000C456 0001 0000000667 Funct Export Res
$LK,"PrsFor ",A="FL:D:/Compiler/StmtParser.CPP.Z,1330",BI=229$0000012186 0001 0000000162 Funct Export Res
$LK,"PrsFun ",A="FL:D:/Compiler/StmtParser.CPP.Z,944",BI=230$000001110E 0001 00000003B7 Funct Export Res
$LK,"PrsFunCall ",A="FL:D:/Compiler/ExpParser.CPP.Z,409",BI=231$000000CF5E 0003 000000082D Funct Export Res
$LK,"PrsFunJoin ",A="FL:D:/Compiler/StmtParser.CPP.Z,883",BI=232$0000010F36 0005 00000001D6 Funct Export Res
$LK,"PrsFunNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,43",BI=233$000000F13E 0001 00000000B7 Funct Export Res
$LK,"PrsGlblInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,305",BI=234$000000FABE 0002 000000007C Funct Export Res
$LK,"PrsGlblVarLst ",A="FL:D:/Compiler/StmtParser.CPP.Z,1006",BI=235$00000114C6 0007 0000000962 Funct Export Res
$LK,"PrsIf ",A="FL:D:/Compiler/StmtParser.CPP.Z,1256",BI=236$0000011E2E 0001 000000012C Funct Export Res
$LK,"PrsKeyWord ",A="FL:D:/Compiler/StmtParser.CPP.Z,85",BI=237$000000F226 000C 0000000040 Funct Export Res
$LK,"PrsNoUnusedWarn ",A="FL:D:/Compiler/StmtParser.CPP.Z,1578",BI=238$0000012B7E 0001 000000008F Funct Export Res
$LK,"PrsOffsetOf ",A="FL:D:/Compiler/ExpParser.CPP.Z,379",BI=239$000000CE16 0002 0000000148 Funct Export Res
$LK,"PrsPop ",A="FL:D:/Compiler/ExpParser.CPP.Z,13",BI=240$000000C196 0017 0000000022 Funct Export Res
$LK,"PrsPop2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,23",BI=241$000000C1F6 0001 000000002D Funct Export Res
$LK,"PrsPopDeref ",A="FL:D:/Compiler/ExpParser.CPP.Z,28",BI=242$000000C226 0004 000000003F Funct Export Res
$LK,"PrsPush ",A="FL:D:/Compiler/ExpParser.CPP.Z,8",BI=243$000000C16E 0017 0000000028 Funct Export Res
$LK,"PrsPush2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,18",BI=244$000000C1BE 0004 0000000033 Funct Export Res
$LK,"PrsSizeOf ",A="FL:D:/Compiler/ExpParser.CPP.Z,331",BI=245$000000CC0E 0001 0000000207 Funct Export Res
$LK,"PrsStatement ",A="FL:D:/Compiler/StmtParser.CPP.Z,1689",BI=246$000001307E 0004 0000000C09 Funct Export Res
$LK,"PrsStaticInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,314",BI=247$000000FB3E 0002 000000013E Funct Export Res
$LK,"PrsStreamBlk ",A="FL:D:/Compiler/StmtParser.CPP.Z,1592",BI=248$0000012C0E 0000 00000001B2 Funct Export Res
$LK,"PrsSwitch ",A="FL:D:/Compiler/StmtParser.CPP.Z,1379",BI=249$00000122EE 0002 000000088F Funct Export Res
$LK,"PrsTryBlk ",A="FL:D:/Compiler/StmtParser.CPP.Z,1628",BI=250$0000012DC6 0001 00000002B7 Funct Export Res
$LK,"PrsType ",A="FL:D:/Compiler/StmtParser.CPP.Z,417",BI=251$000000FEC6 0002 000000034B Funct Export Res
$LK,"PrsUnaryModifier ",A="FL:D:/Compiler/ExpParser.CPP.Z,981",BI=252$000000E71E 0000 0000000859 Funct Export Res
$LK,"PrsUnaryTerm ",A="FL:D:/Compiler/ExpParser.CPP.Z,618",BI=253$000000D78E 0000 0000000F8E Funct Export Res
$LK,"PrsVarInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,106",BI=254$000000F2F6 0001 00000004C8 Funct Export Res
$LK,"PrsVarInit2 ",A="FL:D:/Compiler/StmtParser.CPP.Z,223",BI=255$000000F7BE 0004 00000002FE Funct Export Res
$LK,"PrsVarLst ",A="FL:D:/Compiler/StmtParser.CPP.Z,506",BI=256$0000010216 0006 0000000ADC Funct Export Res
$LK,"PrsWhile ",A="FL:D:/Compiler/StmtParser.CPP.Z,1284",BI=257$0000011F5E 0001 00000000EF Funct Export Res
$LK,"SLASH_OP_DEC ",A="FL:D:/Compiler/BackLib.CPP.Z,266"$0x052B0000 0006 0000000018 DefineStr
$LK,"SLASH_OP_DIV ",A="FL:D:/Compiler/BackLib.CPP.Z,271"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_FADD ",A="FL:D:/Compiler/BackLib.CPP.Z,275"$0x0000C1DE 0002 0000000018 DefineStr
$LK,"SLASH_OP_FDIV ",A="FL:D:/Compiler/BackLib.CPP.Z,279"$0x0000F9DE 0002 0000000018 DefineStr
$LK,"SLASH_OP_FDIVR ",A="FL:D:/Compiler/BackLib.CPP.Z,280"$0x0000F1DE 0003 0000000018 DefineStr
$LK,"SLASH_OP_FILD ",A="FL:D:/Compiler/BackLib.CPP.Z,284"$0x00000000 0002 0000000018 DefineStr
$LK,"SLASH_OP_FISTTP ",A="FL:D:/Compiler/BackLib.CPP.Z,283"$0x00000000 0002 0000000018 DefineStr
$LK,"SLASH_OP_FLD ",A="FL:D:/Compiler/BackLib.CPP.Z,281"$0x00000000 0008 0000000018 DefineStr
$LK,"SLASH_OP_FMUL ",A="FL:D:/Compiler/BackLib.CPP.Z,278"$0x0000C9DE 0002 0000000018 DefineStr
$LK,"SLASH_OP_FSTP ",A="FL:D:/Compiler/BackLib.CPP.Z,282"$0x00000000 000D 0000000018 DefineStr
$LK,"SLASH_OP_FSUB ",A="FL:D:/Compiler/BackLib.CPP.Z,276"$0x0000E9DE 0002 0000000018 DefineStr
$LK,"SLASH_OP_FSUBR ",A="FL:D:/Compiler/BackLib.CPP.Z,277"$0x0000E1DE 0003 0000000018 DefineStr
$LK,"SLASH_OP_IMUL ",A="FL:D:/Compiler/BackLib.CPP.Z,270"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_INC ",A="FL:D:/Compiler/BackLib.CPP.Z,265"$0x00030000 0004 0000000018 DefineStr
$LK,"SLASH_OP_MOV ",A="FL:D:/Compiler/BackLib.CPP.Z,272"$0x00000000 0002 0000000018 DefineStr
$LK,"SLASH_OP_MUL ",A="FL:D:/Compiler/BackLib.CPP.Z,269"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_NEG ",A="FL:D:/Compiler/BackLib.CPP.Z,268"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_NOT ",A="FL:D:/Compiler/BackLib.CPP.Z,267"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_POP ",A="FL:D:/Compiler/BackLib.CPP.Z,274"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_PUSH ",A="FL:D:/Compiler/BackLib.CPP.Z,273"$0x00000000 0001 0000000018 DefineStr
$LK,"StrMatchBits ",A="FL:D:/Compiler/Unassembler.CPP.Z,226",BI=258$0000000EA8 0002 0000000073 Funct Export Res
$LK,"StreamExePrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,699",BI=259$000002C99A 0000 00000000EC Funct Export Res
$LK,"StreamPrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,1",BI=260$000002AE82 0000 00000000A8 Funct Export Res
$LK,"U ",A="FL:D:/Compiler/Unassembler.CPP.Z,647",BI=261$00000025E0 0000 00000000CF Funct Export Res
$LK,"Ui ",A="FL:D:/Compiler/Unassembler.CPP.Z,239",BI=262$0000000F20 0002 00000016C0 Funct Export Res
$LK,"Un ",A="FL:D:/Compiler/Unassembler.CPP.Z,663",BI=263$00000026B0 0008 00000000DA Funct Export Res
$LK,"UnasmHashLoad ",A="FL:D:/Compiler/Unassembler.CPP.Z,188",BI=264$0000000D98 0001 0000000110 Funct Export Res
$LK,"UndefinedExtern ",A="FL:D:/Compiler/StmtParser.CPP.Z,94",BI=265$000000F266 0001 0000000048 Funct Export Res
$LK,"UnusedExternWarning ",A="FL:D:/Compiler/StmtParser.CPP.Z,100",BI=266$000000F2AE 0004 0000000043 Funct Export Res
$LK,"asm_hash ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,2"$00000004E0 000D 0000000008 GlbVar Export
$LK,"asm_seg_prefixes ",A="FL:D:/Compiler/Assembler.CPP.Z,782"$0000009520 0001 0000000006 GlbVar Export
$LK,"binary_ops_table ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,8"$0000000648 0002 0000000008 GlbVar Export
$LK,"cmp_arg_cnt ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,8"$0000000650 0009 0000000008 GlbVar Export
$LK,"cmp_do_not_write_to_dsk ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,3"$00000004E8 0003 0000000001 GlbVar Export
$LK,"cmp_result_cnt ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,9"$0000000658 0005 0000000008 GlbVar Export
$LK,"cmp_templates ",A="FL:D:/Compiler/CmpExts.CPP.Z,42"$0000000000 0002 0000000004 GlbVar Export
$LK,"cmp_templates_dont_pop ",A="FL:D:/Compiler/CmpExts.CPP.Z,43"$000000018B 0002 0000000004 GlbVar Export
$LK,"cmp_templates_dont_push ",A="FL:D:/Compiler/CmpExts.CPP.Z,44"$0000000257 0002 0000000004 GlbVar Export
$LK,"cmp_templates_dont_push2 ",A="FL:D:/Compiler/CmpExts.CPP.Z,46"$0000000421 0002 0000000004 GlbVar Export
$LK,"cmp_templates_dont_push_pop",A="FL:D:/Compiler/CmpExts.CPP.Z,45"$0000000391 0002 0000000004 GlbVar Export
$LK,"compiled_bytes ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,16"$00000006E8 0002 0000000008 GlbVar Export
$LK,"compiled_funs ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,15"$00000006E0 0002 0000000008 GlbVar Export
$LK,"compiled_lines ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,15"$00000006D8 0003 0000000008 GlbVar Export
$LK,"doc_type_flags_src_code ",A="FL:D:/Compiler/Lex.CPP.Z,353"$0000004A60 0001 0000000008 GlbVar Export
$LK,"dual_U16_tokens1 ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,6"$0000000630 0002 0000000008 GlbVar Export
$LK,"dual_U16_tokens2 ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,6"$0000000638 0002 0000000008 GlbVar Export
$LK,"dual_U16_tokens3 ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,7"$0000000640 0002 0000000008 GlbVar Export
$LK,"ic_bitmap_assign ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,9"$0000000668 0003 0000000008 GlbVar Export
$LK,"ic_bitmap_cmp ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,9"$0000000678 0004 0000000008 GlbVar Export
$LK,"ic_bitmap_deref ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,9"$0000000660 0004 0000000008 GlbVar Export
$LK,"ic_bitmap_fpop ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,10"$0000000680 0005 0000000008 GlbVar Export
$LK,"ic_bitmap_not_const ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,9"$0000000670 0003 0000000008 GlbVar Export
$LK,"internal_types_table ",A="FL:D:/Compiler/CmpInit.CPP.Z,8"$00000291A8 0001 00000000AA GlbVar Export
$LK,"lex_zeros ",A="FL:D:/Compiler/Lex.CPP.Z,130"$0000003F88 000A 0000000004 GlbVar Export
$LK,"non_ptr_vars_mask ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,12"$00000006B0 0006 0000000008 GlbVar Export
$LK,"num_non_ptr_vars ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,11"$0000000698 0005 0000000008 GlbVar Export
$LK,"num_reg_vars ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,10"$0000000690 0006 0000000008 GlbVar Export
$LK,"num_stk_temps ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,10"$0000000688 0004 0000000008 GlbVar Export
$LK,"opt_nop ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,5"$0000000550 000B 00000000E0 GlbVar Export
$LK,"reg_vars_mask ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,11"$00000006A8 0002 0000000008 GlbVar Export
$LK,"stk_temps_mask ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,11"$00000006A0 0003 0000000008 GlbVar Export
$LK,"sys_internal_types ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,4"$00000004F0 0067 0000000060 GlbVar Export
$LK,"to_non_ptr_vars_map ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,15"$00000006D0 0004 0000000008 GlbVar Export
$LK,"to_reg_vars_map ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,14"$00000006C8 0004 0000000008 GlbVar Export
$LK,"to_stk_temps_map_even ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,14"$00000006C0 0007 0000000008 GlbVar Export
$LK,"to_stk_temps_map_odd ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,13"$00000006B8 0007 0000000008 GlbVar Export
$LK,"uasm_ins64_mask ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,20"$0000000700 000D 0000000008 GlbVar Export
$LK,"uasm_mem_mask ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,21"$0000000710 0003 0000000008 GlbVar Export
$LK,"uasm_signed_arg_mask ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,20"$0000000708 0003 0000000008 GlbVar Export
$LK,"unasm_table ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,19"$00000006F0 0006 0000000008 GlbVar Export
$LK,"unasm_table_entries ",A="FL:D:/Compiler/CmpGlbls.CPP.Z,20"$00000006F8 0003 0000000008 GlbVar Export
ÈŒȂȂà‚ë‚ö‚ÿ‚ƒ
ƒƒƒƒ/ƒ3ƒ9ƒGƒdƒqƒ€ƒ…ƒ‘ƒ–ƒ�ƒ©ƒ®ƒ±ƒ»ƒ³ƒËƒÔƒãƒÛƒóƒüƒ„„„„'„0„9„@„D„I„T„a„o„‹„—„—„¯„À„À„Ç„ã„ï„÷„
……%….…5…9…D…I…P…m…š…¡…¥…§…²…¾…Â…×…Ù…ê…ô…ÿ… ††'†C†C†G†L†Ì†4DÍ’”’”¨”»”ÔÑ”ñ”ü”••$•7•H•N•c•�•�•–•›•£•«•±•ɕܕç•ë•õ•
––– –!–3–3–:–>–B–P–c–g–p–…–‰–‰–œ–¯–µ–¹––ß–ã–ã–ã–ã–è–ú– ——&—A—Q—a—f—f—f—r—z—‚—ˆ—�—¥—³—½—Ë—Ñ—Ó—Ó—Ó—Ó—Ó—Ó—Ó—Ó—Ó—ß—ç—ï—õ—
˜˜˜˜,˜2˜2˜2˜D˜J˜V˜\˜i˜„˜”˜ ˜¦˜³˜ŘÓ˜ò˜™Qš`¿Ó ~ ~®~°~»~Ã~Î~Ù~ä~æ~þ~þ~%(W� ?yyy#y*y.yRyeyly}yŽy™y°y»y½yÈyÙyäyûyzzzzz%z,z6zNz˜ü � �¸�¿�Æ�É�Ò�Õ�Ø�Ü�á�‚î�‚‚!‚$‚&‚6‚?‚H‚N‚Q‚b‚y‚Š‚•‚Ç‚ˆ<š0Œ0ŒJŒQŒ\Œ{Œ�ŒŸŒ±ŒÃŒÕŒâŒâŒçŒîŒ���6�E�T�c�r����Ÿ�Ÿ�µ�Ç�Ë�Ù�è�í�í�ô�
ŽŽŽ3ŽKŽKŽKŽaŽlŽ‚Ž�Ž¢Ž§Ž¿ŽÄŽÜŽðŽõŽ
��'�,�D�I�a�f�~�€�™�ª�ª�¬�Â�É�ß�ß�ú��*�B�X�X�t�ØDR’R’f’f’Œ’Œ’©’­’²’²’²’¾’ÒӒؒؒؒݒݒó’ú’␍““$“4“=“?“?“?“?“F“M“T“[“b“i“p“w“~“~“€“€“†“‹“�”´ÓüXX{ˆ�‘š§³¾ÉÑÜäçóû€;€5€K€T€‰€u€™€™€±€¼€Ø€ß€�<�<�<�<��� ¬\ƒX{X{n{u{|{Š{›{­{¯{¶{¼{Ì{×{á{ì{|||| |0|:|D|K|V|k|s|s|‰|‰|‰|�|
¬ƒª | |¶|½|Ä|Ò|ã|õ|÷|þ|}} })}4}K}N}P}b}i}y}ƒ}�}”}Ÿ}³}»}»}Ñ}Ñ}Ñ}æ} „?\PzPzizpzwz~z„z”zŸz©z´zËzÎzÐzëzõzÿz{{#{+{+{A{A{S{ dª¿è}è}~~~"~,~7~?~N~X~[~~�~‘~‘~Ÿ~␍àšx�x���¤�»�Ç�Ò�ä�ä�‘0‘<‘C‘I‘U‘_‘f‘m‘q‘s‘y‘…‘�‘–‘�‘¡‘¡‘«‘°‘»‘͑͑þ‘ ’+’2’8’D’N’U’\’`’b’h’t’~’…’Œ’�’�’�’«’»’Í’Í’þ’ “+“2“8“D“N“U“\“`“b“h“t“~“…“Œ“�“�“š“ª“¼“¼“í“ô“ú“””””"”$”*”6”@”G”N”R”R”\”s”Œ”˜”œ”œ”Ÿ”¨”•ˆ øwøw+x7x?xGxKxOxZx^xbxfxnxsxwxˆx™x›xŸx°xÁxÎxáxèxòxòxòxòxy$!&x(‚(Š(�(„À]ÀÀÀ3ÀCÀcÀuÀ�À¨À¨ÀÒÀÚÀÞÀäÀîÀôÀÁ
ÁÁÁÁ!Á&Á0Á3Á:Á@ÁGÁMÁQÁVÁ`ÁqÁxÁÁ�Á…ÁŽÁ˜Á›ÁŸÁ¤Á§ÁªÁµÁ»ÁÂÁËÁäÁõÁþÁÂÂÂÂ#Â-Â7Â>ÂEÂGÂNÂUÂZÂ^ÂkÂrÂ}ܥ٬ÂÁÂÒÂÛÂäÂìÂõÂûÂÿÂÃÃÃÃ*Ã4ÃIÃSÃ\ÃuÆÃ�ØàéïóøþÃÈÃÒÃîÃýÃÄÄ&Ä5ÄKÄnÄwĒĦĦÄÇÄÐÄÙÄâÄéÄòÄûÄÅ␍Å-Å1Å‹ÅT¯Àò¶ò¶··+·1·O·^·m·|·Š·•·˜·¨·(*0NÀNÀ\ÀtÀyÀyÀÀ<0;†À†ÀšÀ¨À®ÀÆÀÌÀæÀìÀòÀòÀúÀ½?b©b©p©€©�© ©°©À©Ó©æ©ó©ªª-ª?ªAªSªUªgªgªyªyª‹ª©ª®ª¾ªÔªܪæªþª««)«1«;«S«X«h«x«Ž«–« «¸«Ä«Ì«Ö«æ«ë«¬ ¬¬ ¬)¬3¬=¬G¬Q¬[¬e¬o¬y¬ƒ¬™¬£¬­¬·¬Á¬ˬÕ¬߬é¬ÿ¬ ­­)­3­=­G­Q­[­e­o­y­ƒ­�­—­¡­«­µ­¿­É­Ó­Ý­ç­ñ­û­®®®#®-®7®A®K®U®|®(:À"¼"¼@¼K¼\¼_¼c¼l¼s¼�¼�¼¦¼¦¼µ¼·¼·¼ƼȼȼؼÚ¼Ú¼ê¼ì¼ì¼ù¼û¼û¼½
½
½½½½*½*½8½<½@½E½I½V½]½k½½ˆ½޽œ½µ½·½»½ŽŽʽʽʽϽϽÞ½ç½ï½¾¾¾&¾1¾6¾6¾9¾>¾>¾Z¾f¾s¾u¾u¾y¾{¾{¾—¾£¾¯¾±¾±¾´¾¶¾¶¾þžžȾȾѾ×¾ܾø¾ø¾ø¾ø¾ø¾ø¾ø¾ø¾ú¾ú¾ ¿ ¿ ¿¿¿¿*¿,¿,¿;¿;¿?¿?¿G¿c¿g¿l¿ÿ¿øÀ:ª·ª·Ä·Ï·Ó·Ü·ã·ê·¸¸"¸4¸F¸U¸d¸u¸„¸„¸‹¸�¸˜¸¥¸¬¸µ¸¼¸À¸à¸à¸à¸ì¸ð¸ó¸û¸
¹¹ ¹'¹8¹C¹H¹H¹U¹[¹j¹�¹ƒ¹޹›¹ª¹­¹¯¹ǹÞ¹à¹î¹ð¹þ¹ºº º ºº%º;º;ºPº^ºiºnºnºqºvºvº’º º­º¯º¯º³ºµºµºѺߺëºíºíºðºòºòºÿº»»»»»»»␍»»»#»C»P»^»e»¼XÍߊʊʎʙʤʯʶʻÊÀÊ×ÊèÊöÊÿÊË Ë Ëø5¯j°j°r°�°…°’°Ÿ°³°°â°ï°±#±C±Q±m±±—±®±¹±Ú±ø±²"²-²H²a²a²|²¥²¿²Ú²ì²û²
³
³³(³9³L³\³i³t³ƒ³£³£³¯³¯³¯³À³ͳÔ³ó³ü³ ´␍´´ ´8´P´Y´i´q´v´‰´­´½´Í´Ø´ì´ñ´ù´ µ!µ,µ_µyµyµ‘µ µ¨µ·µÀµȵÚµùµ&¶>¶V¶n¶†¶˜¶¯¶¸¶Á¶Ó¶á¶å¶ì¶ÐͽRšRšVšeštštšƒšƒš’š’š¡š¡š°š°š¿šΚÝšñšìšìšûš
››››(›\©Ü9î´î´µµNµ_µ_µzµ€µ…µ…µ µ¦µ«µ«µ´µµεÕµÛµàµ#¶-¶4¶:¶<¶<¶O¶U¶U¶U¶Z¶v¶…¶—¶œ¶œ¶œ¶£¶ª¶±¶ƶͶé¶é¶û¶DS`´´´"´/´9´D´L´ %˜9˜9«9Ñ9å90:‘:”:ª:¼:Ã:Ê:Þ:å:ï:ø:; ;,;/;H;K;P;g;s;;ƒ;‘;˜;›;Ö;4 î¿î¿÷¿ü¿À ÀÀÀ< *ÀÀ À$À2À;ÀBÀDÀIÀ @9Eþ¶þ¶·"·&·*·/·1·M·i·i·s· &*�(š(¢(§(!<‰”ŠÇŠÇ£Ç²ÇÆÇÕÇÛÇáÇäÇÈ"<°»ÉÉ3ÉBÉVÉcÉiÉoÉrÉ“É#4€‰:Ç:ÇPÇcÇrÇxÇ{ǃÇ$4§°ÒÈÒÈèÈûÈÉÉÉÉ%œ]€’Å’ÅšÅžÅ³ÅÆÅÙÅöÅÆ Æ1ÆXÆoÆoƑƠƩƶƽÆïÆüÆÇÇÇÇ+Ç/Ç3Ç&\”§
È
È'È7ÈDÈNÈeȂȠȦȯȽÈÃÈÆÈÒÈ'$ð'ù'(((¬(°r°r¾rÉrØrßrçrïr÷rÿr
sss&s-s5s;s@sOsTsZsZsjsys~s„s‰s‘s“s¢s§sçsçsésþstt)ŒCbØtØtèt u uuuuu u u'uRuZuZueueusuƒuƒu‘u—u—u¯u¯uµuÛu*¤b‡àuàuðuùu vv%v1v=vIv`v`vovzvƒvŠv“v½vÂvÔvãvïvww-w-w/wBwDw^wjwmw„w+|(Ctt"t,t9tGtLtYtgtgt~t‡t—t™tœtžt±tºtºt½tÂtÇtÕt,T‡˜ˆwˆwšw�w¦w¯w½wÂwËwÎwÓwáwêw÷w-ð9VñVñ€ñƒñ†ñŒñ‘ñ¨ñ¿ñÖñèñò5ò8òQòhòzò‡òšò­ò²òºòÄòÌòÌòÓòÜòÜòçòó)ó/óHóaócó}óƒóœóµó½óÈóÈóÒóÒóäó"ô7ôIô.H„–ž–žµžÑžÖž÷žŸ$ŸBŸVŸnŸuŸzŸ›Ÿ¹ŸÈŸåŸöŸ␍       ) , 6 < Y \ \ \ a g ƒ ‘ � ¦ º  Ë ç ò þ ¡¡¡*¡/¡/¡=¡/8ú„V
V
ˆ
“
Æ
 
Ì
ú
ÿ
ÿ
 ␍  4 ; I K S m ˆ š § ¿ Ó Ø ß      / M _ l „ š  º º Å Ì Þ á ã é ␍␍ ␍7␍I␍L␍N␍T␍p␍p␍p␍‚␍‚␍�␍š␍»␍×␍×␍Ü␍à␍ü␍#@JN^qˆ‹�±»ÒÖìÿ+5IS\s}“�´¸¸¸ÃÊÝõ÷"9?QYz‘‘‘··É0x9ÓNôNô„ô‹ô“ôœô­ôºôÏôÒôÕôÙôâôðôúôÿô
õ'õ,õ9õeõjõwõ—õœõ«õ×õßõäõùõ%ö-ö2ö2öEöXöhölö‹öœö¡ö¡öÃöÃöÃöÃöÃöÓöèöëöîöòöòö÷ö÷ ÷$÷-÷:÷B÷]÷o÷|÷‡÷¥÷¥÷¥÷²÷É÷Ë÷Ë÷Ë÷Ø÷ï÷ñ÷ñ÷þ÷øø&ø+ø4øKø]øoø�ø�ø�øšø±ø³ø³ø³øÀø×øÙøÙøæøýøýøùùù'ùAùSùeùƒùƒùƒù�ù§ù©ù©ù¶ùÍùÍùâùäùëù␍ú+ú0ú7úEúOúQúQúQúmúuúwúwú™úÍú1„;öö
-LRYxz™¥µÔÚááéñü9A2ˆŸŽ9Ž9¬9¾9Ä9Ë9Ò9Ô9×9Þ9å9å9:: : :#:7:H:H:P:t:”:µ:º:Û:à:ì:÷:ü: ; ;C;T;Y;_;a;g;j;{;€;ƒ;‹;”;¯;Ï;æ;ù;þ;<$<7<<<S<f<k<o<‘<¬<Ì<ß<ä<õ<ú<ý<ÿ<= ==!='=/=/=9=B=Y=l=q=u=—=²=Ò=å=ê=>%><>O>T>X>z>�>�>¨>¨>¨>¶>Î>Ð>Ð>Ð>Þ>ö>ø>ø>???0?0?9?F?\?|?–?�?§?º?¾?¾?¾?Å?Ë?å?ì?ö?@@@0@7@A@O@Z@Z@r@3l¤»nXnX„X�X¦X³X½XÌXåXéXïXYY Y!Y!YRY@Y!YqY{Y4Ä]Ѝ*¨*±*Ø*Æ*¸*ù* +û**+M+M+]+b+b+v+{+{+—+œ+œ+¼+Á+Á+Õ+Ú+Ú+÷+÷+,),O,o,�,“,¥,µ,µ,µ,µ,µ,{-5ÔŸÐv@v@Š@©@•@Ï@Ü@è@î@(A-AYAYA^AtA†AœA²AåAôA,BBGBTB€B…B¬B´BÎBºBéBCîB"CC6CCCoCoCoCoCwC6¸AN-N-d-o-z-†-‘-“-¼-Â-Â-é-ö-!.L.F.:.d.†.ž.‹.±.ª.Ð.½.ä.ñ./5///#/A/T/T/T/^/7°ô\î î  4 < G V _ c n y Ž “ ­ Ì Ò × ê  !6!<!D!G!L!_!‰!Ÿ!¥!­!°!»!Ð!Õ!ò!"" " "$"*"-"8"C"X"]"w"–"œ"¡"¬"Á"Ê"Ï"î"ö"û"##$#&#E#M#X#m#r#Œ#«#±#¶#¶#¶#¶#Ã#Ê#ß#ß#÷#$$"$:$N$_$i$k$$�$•$ $Í$Í$Í$ß$8ÔÐ�~C~CœC¬C·CÂCD.DLDvD|D‚DŠDŒD”D¯D²D½DÉDE5ESE}EƒE‰E‘E–EžE¹E¼EÇEÓEØEFDFbFŒF’F˜F F¢FªFÅFÈFÓFßF$GKGiG“G™GŸG§G¬G´GÏGÒGÝGéGéGîGôGúGH
HH'H6HeH�H•HšH¬H»HíHII%I*I<IKIzI¤IªI¯IÁIÐIÿI)J/J4J4J4JEJPJ[J�J™J¤J¬J¹J¹J¾JÑJèJíJK+K6K>KKKKKPKcKpKzKŽK¥K¾KÐKÝKLL3LALCLWLnLnLwLƒL™L²LÅLÑLäLèLèLèLïLôLMM*M,M1MDMPM]MgMgMyM9l¨¿ΩΩÒ©å©å©ÿ©ªªª)ª)ª@ª@ªWªWªnªnª…ª‡ª‡ª‹ª:tD]Ð)Ð)Þ)è)ï)** *␍**#*4*Q*S*c*c*h*j*q*£*;ð|ô(2etŠ®³·¿È×Þçì19;Zbqx„‰�˜ž ¬¼ÁÃãééñú (/1PWWWkƒ‘¤œ¼ÁÌÓÛáãïÿ&,,8HMRrx}‰™ž ÀÆÍÕÛÝéùþ  & & & . 7 7 A A Y ‰ � ¡ ¯  º Ú Ú ì <àAõ^/^/|/„/’/–/¼/Ç/Ï/×/ë/ó/ó/÷/)0b0P0G0z00Š0•0—0¶0¼0Å0Ì0Ô0Ü0è0ð0ø0 111"1B1J1L1V1e1…1�1�1¯1·1·1·1Â1Ë1ß1ç1ð1ð1õ1ù122 2202L2h2‡2Š2Ÿ2¬2À2Ó2×2ä2
3&393X3^3`33‚3‚3—3¤3¸3Ë3Ö3Ú3å3ð3û344'4*454@4E4d4j4o4z4…4‡4¦4©4´4¿4Á4à4æ4æ4æ4ð4ð4û4,575757575@5L5b5{5Ž5•5¡5¨5¨5»5¿5¿5¿5Æ5Ë5Þ5å5ñ5ø5ø5666)606<6C6C6P6Z6Z6ƒ6ƒ6•6=ÈEsv·v·¢·¥·ª···¼·ηзÔ·Ø·Û·î·¸)¸2¸=¸D¸]¸¸„¸�¸¿¸ĸ˸丹¹!¹C¹C¹C¹X¹r¹�¹“¹>T•¦.´.´B´O´^´^´j´p´š´°´œ´Ç´¼´ß´ç´?¼ìV+V+n+r+€+�+š+¦+±+³+Ü+â+â+,3,, ,U,Z,�,†,’,�,Ÿ,È,Î,Î,á,ú,ô,è,---;-;-G-@\ž±††”›ºÙÛú'/:<GRqwAè±ç~~“ž¥Òñó?MU`bmxx}ª¯Üáè&13RqqŒš¢­¯ºÅÅå   3 T T T \ B¨z ëë4ëEëQëhëoëˆë€ë ëÀë¬ëÌëÝëâëìïëì,ìCìJìcì[ì{ì›ì‡ì§ì¸ìÎìºìæìóìóì í ííC°%MîÊîÊ ËË%Ë,Ë;Ë@Ë_Ë_Ëd˃ˈË�˞ˠ˿˿ËÞËóËàËÿËÌÌ/Ì/Ì/Ì/Ì>ÌWÌPÌoÌyÌDlE\NßNßlß߆ß�ߔߘߚߡߨ߬߬ߴßÍß×ß×ßëßößàààà)à:àKàbàfàoàsàxà‰à¦à¦à´àÈàÍàæà÷àûàûàûàá.áCáJá]áaáfáqá‚á“áªá²á»á¿áÄáÕáçá÷á â␍â&â9â=â=â=âHâYâjâ�â…âŽâ’â—â¨âÅâÅâÓâçâìâããã,ã,ã,ã1ã@ãBãaãaã€ã‹ã‘ã§ã¸ã½ãÒãÝãîãÿãää#ä'ä,ä=äVäVädäxäzä“ä¤ä¨ä¨ä¯äÂäÆäØäÝäèäùä
å!å)å2å6å;åLåbårå†å‹å¤å·å»åÍåÍåÍåÍåååÒåñåææ!æ,æ2æHæYæYæYæ`æsæŒæŒæŒæ›æ›æ®æÅæÐæáæææìæöæøæçç çç+ç-ç8çMçYç[çfçrç‚ç‰ç�çšç¢ç¦çªç¬ç±ç¹ç½çÏçÑçÖçÞçâçäçäçíçúçè0èJèVèbèièiè|è€è€è€è‡èŒè¦è²è¾èÅèÅèÜèÞèãèýè éééé)é3é3éEéEÐs£–¹–¹À¹ùʹйÖ¹عÞ¹ä¹ä¹ö¹ººº"º5ºDºXº^º`ºgºmºwºwºˆºŠº‘º—º¡º¡º¡º¸ºʺѺàºâºôº»»»F|£¾»»@»C»J»P»V»X»^»d»k»x»…»˜»¥»´»º»¼»»Ì»Û»í»ü»¼,¼G@nzfêfê€êŒêžê´êÕêÂêíêëëëHˆñ¾¾&¾8¾?¾F¾e¾j¾‰¾޾¨¾•¾Ǿ´¾Ó¾è¾Õ¾¿ô¾¿¿%¿,¿K¿K¿S¿IM�~Ì~̨̖̳ÌÛ̺ÌçÌÍ2ÍÍ>ÍXÍXÍwÍŒÍy͹͘ÍÅÍßÍßÍñÍ Î Î8ÎEÎ~΃ΊθΩÎÄÎâÎîÎ Ï␍Ï;Ï,ÏGÏeÏzÏgφϴϥÏÀÏÚÏÚÏìÏÐ!Ð.ÐMÐMÐUÐJX\nFéFé`élé~é”éµé¢éÍéÞéðéê'êê?êWêWêaêK,^%NÂNÂt‡Â�–Â�£¥¬³¶¶ÂÈÂÈÂÛÂæÂñÂÃÃ*Ã2Ã;ÃCÃHÃYÃoÃÑÖðÃÈÃÌÃÌÃÑÃýÃÄÄ.Ä?ÄVÄ^ÄgÄoÄtąėħĹĻÄÕÄíÄñÄñÄüÄ␍ÅÅ5Å=ÅFÅNÅSÅdÅzŊŜšŻÅÓÅ×ÅêÅêÅêÅÆïÅ"ÆÆ/Æ;ÆAÆYÆqÆvƋƖƧƸÆÏÆׯàÆèÆíÆþÆÇ Ç2Ç4ÇNÇfÇjÇjÇudžǗǮǶǿÇÇÇÌÇÝÇóÇÈÈÈ4ÈLÈPÈcÈcÈcÈ{ÈhțȈȨȴȺÈÒÈêÈêÈêÈöÈüÈÉÉ$É4ÉKÉbÉyÉ�É�ɤÉÀÉÀÉÀÉáÉáÉïÉñÉñÉÿÉÿÉÊÊ!Ê<ÊKÊRÊbÊdÊ�ʉʦʷÊÒÊÒÊëÊL EVÐVÐtÐ{ЂÐ�ЕЮЮÐÂÐÛÐÛÐæÐêÐõÐÑüÐ)Ñ?ÑMÑcÑgÑlÑ~Ñ�ѦѽÑÂÑÊÑÎÑÓÑúÑÒÒÒ$ÒaÒ@ÒmÒŠÒŠÒ©Ò´ÒºÒÐÒáÒæÒøÒ Ó Ó7Ó<ÓDÓHÓJÓqÓ‡Ó‹Ó–Ó§Ó¸ÓÏÓ×ÓÜÓàÓåÓöÓ ÔÔ.Ô3ÔLÔ]ÔaÔsÔsÔsÔsÔxÔ§Ô”ÔÔÔ³ÔàÔýÔÕÕ$Õ5Õ:ÕEÕVÕgÕ~Õ†Õ‹Õ�Õ”Õ¥Õ·ÕÅÕÙÕÛÕôÕÖ Ö Ö ÖÖ,ÖCÖZÖ_ÖgÖkÖmÖ”ÖªÖ®Ö»Ö»Ö»Ö»ÖÎÖÔÖÞÖåÖøÖ××+×+×9×;×;×I×I×_×o×}הק׬×È×Ð×ì×üרØ/Ø'ØTØ}Ø}Ø}ØŠØÃØÈØÓØÙØäØÙÙ
Ù&Ù<ÙJÙbÙxÙ|ٌ٫Ù×ÙÇÙãÙÚÚ Ú*Ú0ÚFÚWÚ\ÚrڈڌڗڨڹÚÐÚØÚÝÚáÚæÚ÷Ú␍ÛÛ/Û4ÛMÛ^ÛbÛtÛtÛtÛtÛyÛ¨Û•Û´ÛãÛÓÛïÛ ÜÜÜ3ÜDÜIÜTÜeÜvÜ�Ü•ÜšÜžÜ£Ü´ÜÆÜÔÜèÜêÜÝÝÝÝ7ÝMÝcÝgÝtÝtÝt݇Ý�ݗݞݱÝÈÝÈÝÈÝäÝäÝòÝôÝôÝÞÞÞ(Þ6ÞQÞdÞiÞ…Þ�Þ©Þ¹ÞÇÞäÞßß␍ß-ß-ß-ßMßM€ÍéNïNïhï�ïsïœï©ï¼ïÕïÎïíïðòïðð$ð1ðDð]ðVðiðiðvð•ð•ðŸðNL^V¿V¿z¿’¿­¿™¿Í¿¹¿Ù¿ï¿Û¿Àû¿À'À,À8ÀHÀOÀ\ÀgÀsÀ~À†À‹À—ÀœÀ°À·À»ÀÆÀËÀÖÀïÀøÀÁ ÁÁ$Á(Á(Á-ÁFÁKÁdÁyÁ‹Á�Á›Á£Á£Á£Á¥Á¾ÁÓÁÞÁèÁóÁõÁÂÂÂÂ␍Â-ÂMÂOh·Í>î>îXî|î_îˆî¡îšî¹îÎî»îáîÚîíîïÿîïï ï>ï>ïHïPl ·íí4í@íWíhíoíˆí€í íÀí¬íÌíÝíóíßí îîî0î0î:îQLéø¦ð¦ðÄðÖðÝðüðüðñ!ñ.ñ'ñFñPñRܾñ.¼.¼P¼W¼b¼x¼x¼м•¼ ¼±¼¼Ù¼ݼâ¼æ¼è¼ù¼ ½½)½+½D½S½W½W½W½j½½½‹½‘½›½¦½´½»½ʽ̽â½ü½ü½¾S�%E†8†8¤8¬8¸8Î8ã8ñ8ü8 999999)949J9L9Q9_9j9w9~9Œ9T8>HVžVž_žkžŠž�ž‘ž‘ž–žU˜s•~²~²°²Ó²Ó²æ²ê² ³³"³"³/³7³?³T³`³q³v³‡³›³ ³¢³»³Ó³Õ³Õ³î³´´(´V<�˜ŽbŽb—b¢b­b¸bÃbÍbëböbcW0ñ9FQFQbQhQsQ„Q‰Q�Q’Q–Q–Q¶Q»QñQÝQýQRR"R;R'RGRNRSR]R`RdRiR‚RnRŽRŽRŽR“R¤R©R¯R²R¶R¶RÖRÛRSýRS6S"SBSXSDSdSkSpSvSyS}SS˜S„S¤S¤S¤S¤S¼SåSñSX\çú^ ^ l s ’ ± ³ Ò ñ ÿ 



*
I
O
Y¸@jFTFT^TiTŒT¤T©T®T²T´TºTÀTÖTÃTâTâTUUU%UHU`UeUjUnUpUvU|U’UUžUžU±U¹UËUåUÞUñUýUZ|�ê>¡>¡V¡^¡k¡‹¡�¡¤¡®¡´¡º¡¾¡¡ä¡ä¡ë¡î¡ó¡¢¢¢3¢7¢<¢<¢C¢F¢K¢W¢e¢i¢z¢‰¢�¢�¢ž¢¢¢¢¢´¢Ä¢È¢Í¢Í¢á¢ä¢ð¢ú¢£'£2£6£;£q£ˆ£“£—£¨£³£·£¹£Ä£È£È£È£Ö£â£æ£è£è£ó£÷£¤¤¤¤¤¤<¤[àê>¤>¤R¤h¤h¤h¤j¤j¤q¤s¤s¤z¤|¤|¤‰¤‹¤‹¤˜¤Ÿ¤¡¤¡¤®¤µ¤·¤·¤ϤÔ¤Ô¤Ô¤ä¤\à¿sŽªŽªĪͪÛªýªýª««9«A«n«s«œ«¹«Õ«Û«ß«¬(¬-¬V¬p¬–¬­¬³¬·¬Ьجݬî¬ö¬­­ ­8­@­_­d­u­}­œ­¡­©­¯­³­·­É­Ñ­Ý­ñ­ö­®␍®®#®6®C®W®b®k®�®îì®ñ®ñ®ñ®¯¯¯#¯E¯E¯\¯a¯a¯x¯z¯z¯ޝ�¯�¯§¯©¯©¯À¯¯¯Ù¯Ù¯ê¯ï¯ï¯ÿ¯$°6°;°;°;°;°B°v°‡°¥°¥°¥°²°ɰ˰˰˰ذï°ñ°ñ°þ°±±*±,±E±c±c±c±g±i±i±i±n±p±p±u±u±±„±„±¢±¢±¢±ª±¬±¬±¬±´±¶±¶±¾±¾±À±DZã±å±ø± ² ² ² ² ² ²7²?²?²z²]ô!ZÆþÆþäþçþùþÿÿ ÿÿÿÿ ÿ2ÿdÿkÿ–ÿ›ÿ¼ÿ¼ÿÈÿÐÿßÿKSXalt{š ¿Áàë!'..47;Ll~^ Zž~~–�¯âíù((4<K…‡´¼¼éî␍(.=RT_g‚‡�›£®µâ"O^W„‰�¯ÎÐï)1LLLxx„_`
öö2N[r…�’±¹Ä×Ðïõ`, &n�n�}���¨�¨�®�al»Ò~Y~Y”Y Y¶YÃYÇYÖYõYùYÿYZZ/Z1Z1ZbZPZ1Z�Z‹Zb�;[FF\biu…¥ª±ÑÓóÿ/4;;;ADHPhs~ž¨c|mˆÖ§Ö§ö§¨¨"¨'¨'¨F¨S¨U¨U¨U¨U¨b¨j¨}¨‘¨“¨“¨›¨®¨®¨À¨dDˆ•ƨƨÔ¨ߨ権©©©©©e°ÄìV)V)n)y)„)²)‘)Ê)Ñ)*ä)Ø)**/*Z*_*k*’*—*™*¸*¾*Ú*Ë*ò*ù*+ ++.+0+I+I+I+U+f¤ŸÄv'v'Ž'™'¤'Þ'¾'²'((1(1(>(w(|(ˆ(“(•(´(º(Á(â(Ô(È(ö(ø()))E)E)E)Q)gŒ\{æ$æ$ú$ý$%%"%1%1%E%R%]%b%‚%‘%™%¤%¬%·%Â%Í%Ø%ã%î%î%&&&h¨:`.¦.¦N¦p¦p¦�¦Ÿ¦¤¦¤¦³¦Ŧߦç¦î¦ð¦§ § § §␍§␍§␍§␍§+§+§+§+§=§?§?§?§?§R§]§|§iD`m~§~§Œ§”§›§º§ǧǧʧ̧Ò§jŠÊ€-€-�-•-¾-­-©-Î-Û-å-õ-õ- ..*.1.:.Q.Q.g.g.}.}.“.“.©.©.¿.¿.Õ.Õ.ë.ë.////////F/F/]/]/t/t/‹/‹/¢/¢/º/Â/Í/Þ/é/ú/ý/ÿ/00021kH��~M~M’MžM´M MÀMÂMÔMæMîMl´�¸îMîMN NN!N6N#NBNHNHNTNlNYNxN{N}N‹N�N¥N’N±N´N´NÀNÕNÂNáNçNçNúN␍O O3OFOPOm´¸áVOVOlOsO„O‰OžO‹OªO°O°O¼OÔOÁOàOãOåOóOøO␍PúOPPP(P=P*PIPOPOPbPuPˆP›P®P¸PnPáñ¾P¾PÒPÞPôPàPQQQ(Q3Q>QFQo( >�>�M�e�e�k�p”„¥ÎÎü+/88=J`Š�³»ÀÇÝóõ !E_qq¥èvv¨¼ÄÏÖÝæèë
,.5PW`be„„„’œ©ÉËåíí (-4JQlnu�¦½ÀÈÕõ÷5LLr„r€:æ¤æ¤
¥¥)¥>¥\¥g¥…¥…¥…¥’¥ª¥¬¥¬¥¬¥¹¥Ñ¥Ó¥Ó¥á¥î¥¦¦¦)¦s,9@öSöST
T)T8T@TtHÓ!ÎúÎúöúûûûû,ûCûZûšû¶ûÐûÕûÚûåûüûüü.üDüXü]ühüˆü�ü�üªüÄüÌüÔüÙüóü␍ýýý"ý<ýDýIýiýnýqý‹ý¥ý­ýµý·ýÑýëýóýûýýýþ þ þ$þ)þ4þ4þ?þ?þKþKþ]þ�þ³þ³þÃþuøj¤þUþUV V+V0V<VGVLVSVXVcVhVhV‡V¦V¨V­V¸V½V½VÜVûV"W"W5WHW[WnWsWsW†W™W¬W¿WÄWÄW×WêWýWXXX%X8XKX^X^X^XlXv é�–[–[´[Ø[Þ[å[å[ì[ \\'\?\+\K\Z\l\u\}\…\Ÿ\±\º\Â\Ê\ã\Ï\ï\] ]]]3] ]S]?]_]u]a]•]�]¡]³]½]Å]Å]Î]Ö]ì]^^&^*^*^1^6^T^V^[^f^|^|^|^€^Œ^­^»^É^Ö^÷^____._=_L_O_s_w_�_¡_È_Ì_ï_ó_ó_ó_ù_``*`0`;`G`I`Q`W`p`{`‰`“`¬`¯`·`Ã`Å`Í`Ð`é`ë`÷`ù`aa a8aDaYa^apaa˜a©a©a´a¿a×aãaøaýabb7bHbHbNbYbabobvbˆbw8ž¨~©~©’©—©�©¡©¥©Ä©Ì©xÐõ%–6–6¸6Î6Ú6ø67!787K7V7X7x7€7€7�7�7—7£7¹7Î7Ý7è7û78888 88%8<8>8C8R8]8j8t8t8‚8yL�Ÿþ&þ&'')'?'+'K'M'T'_'k's'z$‹�¾&¾&Ò&ó&û&{$†‹~&~&’&³&»&|<{†&&/&&;&F&Q&\&g&s&y&}(&,®�®�½�Ì�Ñ�×�~(,2Þ�Þ�ë�ù�þ�ž(28žžž!ž&ž,ž€(8>.ž.ž<žKžPžVž�$��%�8�>�‚4
††­š¹ÏÈçïƒlÒéŽZŽZ¤Z°ZÆZÓZ×ZæZÿZ[ [([[9[;[;[l[Z[;[‹[•[„”[|®®ÂÉÛú&(GYx~……�• «³»ÆÑÜû…4•ž©©,©2©6©U©v©v©|©†`*>¨(¨(¶(À(Í(â(ä(ë(ö(û()()*)C)F)H)H)™)‡(>D ) )©)³)Í)Ð)ˆ0I6FPPZZdvƒ†ˆ‘žž¸¿¿Ùàöö"888HHZZhvŒŒÅþ  " 0 C C v © ¯ ¯ ¯ Á ‰ÜI¼È È â å ô ô 





"
+
6
<
K
^
c
x
$LK,"CN_A1 ",A="FL:D:/Compiler/BackF1a.CPP.Z,2"$1 0006 0000000008 DefineStr
$LK,"CN_A2 ",A="FL:D:/Compiler/BackF1a.CPP.Z,1"$0 0005 0000000008 DefineStr
$LK,"CN_MAIN ",A="FL:D:/Compiler/BackF1a.CPP.Z,3"$2 0022 0000000008 DefineStr
$LK,"CN_R ",A="FL:D:/Compiler/BackF1a.CPP.Z,4"$3 0003 0000000008 DefineStr
$LK,"COptMemberVar ",A="FL:D:/Compiler/OptLib.CPP.Z,570"$003FC79988 0005 0000000028 Class
$LK,"CSubSwitch ",A="FL:D:/Compiler/StmtParser.CPP.Z,1342"$003FC769B0 0004 0000000020 Class
$LK,"CSwitchCase ",A="FL:D:/Compiler/StmtParser.CPP.Z,1347"$003FD576B8 0004 0000000020 Class
$LK,"CTrace ",A="FL:D:/Compiler/ICLCC.CPP.Z,33",BI=15$0000002898 0000 0000000017 Funct Export Res
$LK,"CVI2 ",A="FL:D:/Compiler/StmtParser.CPP.Z,175"$003FC76C90 0003 0000000010 Class
$LK,"Cmp ",A="FL:D:/Compiler/CmpMain.CPP.Z,455",BI=16$000002BF32 0000 000000059C Funct Export Res
$LK,"CmpBuf ",A="FL:D:/Compiler/CmpMain.CPP.Z,170",BI=17$000002B5FA 0001 00000000B6 Funct Export Res
$LK,"CmpF1PushPop ",A="FL:D:/Compiler/OptLib.CPP.Z,553",BI=18$000000BCE6 0002 0000000031 Funct Export Res
$LK,"CmpF2PushPop ",A="FL:D:/Compiler/OptLib.CPP.Z,559",BI=19$000000BD1E 0005 0000000074 Funct Export Res
$LK,"CmpFillTables ",A="FL:D:/Compiler/CmpInit.CPP.Z,444",BI=20$000002A872 0001 000000051A Funct Export Res
$LK,"CmpFixUpAOTAsm ",A="FL:D:/Compiler/CmpMain.CPP.Z,314",BI=21$000002BB42 0000 00000003EA Funct Export Res
$LK,"CmpFixUpJITAsm ",A="FL:D:/Compiler/CmpMain.CPP.Z,187",BI=22$000002B6B2 0000 000000048F Funct Export Res
$LK,"CmpInit ",A="FL:D:/Compiler/CmpMain.CPP.Z,718",BI=23$000002C9DA 0001 0000000081 Funct Export Res
$LK,"CmpJoin ",A="FL:D:/Compiler/CmpMain.CPP.Z,48",BI=24$000002AF72 0001 0000000682 Funct Export Res
$LK,"CmpLoadDefines ",A="FL:D:/Compiler/CmpInit.CPP.Z,204",BI=25$000002995A 0001 0000000F18 Funct Export Res
$LK,"CmpNoteFloatOp ",A="FL:D:/Compiler/BackF1a.CPP.Z,6",BI=26$000001B3EE 000E 000000020D Funct Export Res
$LK,"CmpOffset2Reg ",A="FL:D:/Compiler/OptLib.CPP.Z,83",BI=27$000000B09E 0005 0000000046 Funct Export Res
$LK,"CmpPrompt ",A="FL:D:/Compiler/Lex.CPP.Z,1",BI=28$00000038D8 0001 00000001B5 Funct Export Res
$LK,"CmpRawType ",A="FL:D:/Compiler/OptLib.CPP.Z,533",BI=29$000000BC86 0006 0000000025 Funct Export Res
$LK,"CmpRawTypePointed ",A="FL:D:/Compiler/OptLib.CPP.Z,542",BI=30$000000BCAE 0005 0000000033 Funct Export Res
$LK,"CmpSetFloatOpPushPop",A="FL:D:/Compiler/BackF1a.CPP.Z,57",BI=31$000001B5FE 000C 0000000075 Funct Export Res
$LK,"Echo ",A="FL:D:/Compiler/ICLCC.CPP.Z,38",BI=32$00000028B0 0000 0000000017 Funct Export Res
$LK,"ExeFile ",A="FL:D:/Compiler/CmpMain.CPP.Z,650",BI=33$000002C6D2 0000 000000007B Funct Export Res
$LK,"ExeFile2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,689",BI=34$000002C86A 0000 0000000079 Funct Export Res
$LK,"ExePrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,641",BI=35$000002C682 0000 0000000049 Funct Export Res
$LK,"ExePrint2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,680",BI=36$000002C822 0000 0000000047 Funct Export Res
$LK,"ExePutS ",A="FL:D:/Compiler/CmpMain.CPP.Z,606",BI=37$000002C4D2 0003 00000001A9 Funct Export Res
$LK,"ExePutS2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,661",BI=38$000002C752 0002 00000000CC Funct Export Res
$LK,"FBO1_F64 ",A="FL:D:/Compiler/OptLib.CPP.Z,94"$2 0002 0000000008 DefineStr
$LK,"FBO1_INT ",A="FL:D:/Compiler/OptLib.CPP.Z,93"$1 0013 0000000008 DefineStr
$LK,"FBO1_NOT_CONST ",A="FL:D:/Compiler/OptLib.CPP.Z,92"$0 0004 0000000008 DefineStr
$LK,"GetOpt ",A="FL:D:/Compiler/ICLCC.CPP.Z,16",BI=39$0000002810 0004 000000002C Funct Export Res
$LK,"HashEntrySize ",A="FL:D:/Compiler/Hash1b.CPP.Z,1",BI=40$0000007158 0000 0000000103 Funct Export Res
$LK,"HashEntrySize2 ",A="FL:D:/Compiler/Hash1b.CPP.Z,32",BI=41$0000007260 0002 00000001A4 Funct Export Res
$LK,"HashTableSize2 ",A="FL:D:/Compiler/Hash1b.CPP.Z,69",BI=42$0000007408 0000 0000000054 Funct Export Res
$LK,"ICAddEct ",A="FL:D:/Compiler/Back1a.CPP.Z,1",BI=43$000001F056 0005 00000002F3 Funct Export Res
$LK,"ICAddRSP ",A="FL:D:/Compiler/BackLib.CPP.Z,69",BI=44$0000019D86 0017 00000002A7 Funct Export Res
$LK,"ICAddSubEctEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,505",BI=45$000002095E 0005 0000000673 Funct Export Res
$LK,"ICAddSubEctImm ",A="FL:D:/Compiler/Back1a.CPP.Z,57",BI=46$000001F34E 000D 0000000685 Funct Export Res
$LK,"ICAndAnd ",A="FL:D:/Compiler/Back1b.CPP.Z,30",BI=47$00000215FE 0001 000000014B Funct Export Res
$LK,"ICAndBranch ",A="FL:D:/Compiler/Back1c.CPP.Z,1",BI=48$0000023896 0002 00000006E6 Funct Export Res
$LK,"ICAndEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,675",BI=49$0000025776 0001 000000010D Funct Export Res
$LK,"ICArgPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,73",BI=50$00000029D0 0003 00000002D6 Funct Export Res
$LK,"ICAssign ",A="FL:D:/Compiler/Back1c.CPP.Z,159",BI=51$0000023F7E 0001 0000000301 Funct Export Res
$LK,"ICAssignPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,534",BI=52$0000022C56 0002 0000000210 Funct Export Res
$LK,"ICBitOps ",A="FL:D:/Compiler/Back1b.CPP.Z,244",BI=53$0000021EF6 0007 00000004F1 Funct Export Res
$LK,"ICBrBitOps ",A="FL:D:/Compiler/Back1c.CPP.Z,207",BI=54$0000024286 0008 00000009FB Funct Export Res
$LK,"ICBuiltInFloatConst ",A="FL:D:/Compiler/BackLib.CPP.Z,420",BI=55$000001A8C6 000F 00000000BD Funct Export Res
$LK,"ICClassPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,49",BI=56$00000028F8 0001 00000000D3 Funct Export Res
$LK,"ICCmp ",A="FL:D:/Compiler/Back1b.CPP.Z,124",BI=57$0000021A0E 0006 00000004E6 Funct Export Res
$LK,"ICCmpAndBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,575",BI=58$0000022E66 000C 0000000737 Funct Export Res
$LK,"ICCopyTemplate ",A="FL:D:/Compiler/BackF1a.CPP.Z,69",BI=59$000001B676 0013 000000021D Funct Export Res
$LK,"ICDeref ",A="FL:D:/Compiler/BackLib.CPP.Z,656",BI=60$000001B32E 0001 00000000B9 Funct Export Res
$LK,"ICDerefPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,491",BI=61$0000022A5E 0002 00000001F1 Funct Export Res
$LK,"ICDiv ",A="FL:D:/Compiler/Back1a.CPP.Z,413",BI=62$000002048E 0001 00000000F1 Funct Export Res
$LK,"ICDivEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,432",BI=63$0000020586 0002 00000002DE Funct Export Res
$LK,"ICFAdd ",A="FL:D:/Compiler/BackF1b.CPP.Z,633",BI=64$000001EA16 0001 00000001FF Funct Export Res
$LK,"ICFCmp ",A="FL:D:/Compiler/BackF1a.CPP.Z,549",BI=65$000001C9EE 0004 000000018B Funct Export Res
$LK,"ICFCmpAndBranch ",A="FL:D:/Compiler/BackF1b.CPP.Z,325",BI=66$000001DE4E 0004 00000009F7 Funct Export Res
$LK,"ICFCvt ",A="FL:D:/Compiler/BackF1a.CPP.Z,115",BI=67$000001B896 000C 000000017F Funct Export Res
$LK,"ICFCvt2 ",A="FL:D:/Compiler/BackF1a.CPP.Z,163",BI=68$000001BA16 0010 0000000116 Funct Export Res
$LK,"ICFDiv ",A="FL:D:/Compiler/BackF1b.CPP.Z,621",BI=69$000001E966 0001 00000000A9 Funct Export Res
$LK,"ICFMod ",A="FL:D:/Compiler/BackF1a.CPP.Z,241",BI=70$000001BD0E 0001 0000000145 Funct Export Res
$LK,"ICFModEqual ",A="FL:D:/Compiler/BackF1a.CPP.Z,589",BI=71$000001CB7E 0001 00000003D7 Funct Export Res
$LK,"ICFMul ",A="FL:D:/Compiler/BackF1b.CPP.Z,603",BI=72$000001E846 0001 000000011B Funct Export Res
$LK,"ICFOp ",A="FL:D:/Compiler/BackF1a.CPP.Z,350",BI=73$000001C14E 0004 000000089D Funct Export Res
$LK,"ICFOpEqual ",A="FL:D:/Compiler/BackF1b.CPP.Z,1",BI=74$000001CF56 0004 0000000EF7 Funct Export Res
$LK,"ICFPostIncDec ",A="FL:D:/Compiler/BackF1b.CPP.Z,716",BI=75$000001EE4E 0002 0000000151 Funct Export Res
$LK,"ICFPow ",A="FL:D:/Compiler/BackF1a.CPP.Z,271",BI=76$000001BE56 0001 00000002F7 Funct Export Res
$LK,"ICFPreIncDec ",A="FL:D:/Compiler/BackF1b.CPP.Z,694",BI=77$000001ED3E 0002 000000010A Funct Export Res
$LK,"ICFSub ",A="FL:D:/Compiler/BackF1b.CPP.Z,671",BI=78$000001EC16 0001 0000000124 Funct Export Res
$LK,"ICFTemplateFun ",A="FL:D:/Compiler/BackF1b.CPP.Z,744",BI=79$000001EFA6 0007 00000000AA Funct Export Res
$LK,"ICFUnaryMinus ",A="FL:D:/Compiler/BackF1a.CPP.Z,190",BI=80$000001BB2E 0001 00000001E0 Funct Export Res
$LK,"ICFlagBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,803",BI=81$000002378E 0004 0000000106 Funct Export Res
$LK,"ICLastIns ",A="FL:D:/Compiler/BackLib.CPP.Z,59",BI=82$0000019D46 0002 0000000040 Funct Export Res
$LK,"ICLea ",A="FL:D:/Compiler/BackLib.CPP.Z,622",BI=83$000001B17E 0004 00000001AA Funct Export Res
$LK,"ICLocalVarInit ",A="FL:D:/Compiler/Back1c.CPP.Z,908",BI=84$0000026196 0001 0000000078 Funct Export Res
$LK,"ICMinMax ",A="FL:D:/Compiler/Back1c.CPP.Z,496",BI=85$000002504E 0004 00000002AB Funct Export Res
$LK,"ICMod ",A="FL:D:/Compiler/Back1a.CPP.Z,486",BI=86$0000020866 0001 00000000F1 Funct Export Res
$LK,"ICModU64 ",A="FL:D:/Compiler/Back1c.CPP.Z,575",BI=87$000002534E 0001 00000001B7 Funct Export Res
$LK,"ICModr1 ",A="FL:D:/Compiler/BackLib.CPP.Z,140",BI=88$000001A02E 0017 00000002FE Funct Export Res
$LK,"ICModr2 ",A="FL:D:/Compiler/BackLib.CPP.Z,230",BI=89$000001A32E 0016 00000000A6 Funct Export Res
$LK,"ICMov ",A="FL:D:/Compiler/BackLib.CPP.Z,442",BI=90$000001A986 019A 00000007F4 Funct Export Res
$LK,"ICMul ",A="FL:D:/Compiler/Back1a.CPP.Z,289",BI=91$000001FDCE 0001 00000002B8 Funct Export Res
$LK,"ICMulEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,346",BI=92$0000020086 0001 0000000406 Funct Export Res
$LK,"ICNot ",A="FL:D:/Compiler/Back1b.CPP.Z,10",BI=93$00000214FE 0001 00000000FF Funct Export Res
$LK,"ICOpSizeRex ",A="FL:D:/Compiler/BackLib.CPP.Z,28",BI=94$0000019C5E 0006 0000000040 Funct Export Res
$LK,"ICOrEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,698",BI=95$0000025886 0001 000000010D Funct Export Res
$LK,"ICOrOr ",A="FL:D:/Compiler/Back1b.CPP.Z,59",BI=96$000002174E 0001 0000000162 Funct Export Res
$LK,"ICPop ",A="FL:D:/Compiler/BackLib.CPP.Z,361",BI=97$000001A6CE 0009 00000000EA Funct Export Res
$LK,"ICPopRegs ",A="FL:D:/Compiler/BackLib.CPP.Z,388",BI=98$000001A7BE 000C 0000000057 Funct Export Res
$LK,"ICPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,451",BI=99$000002285E 0002 00000001FF Funct Export Res
$LK,"ICPreIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,415",BI=100$000002267E 0004 00000001DB Funct Export Res
$LK,"ICPreempt ",A="FL:D:/Compiler/Back1b.CPP.Z,348",BI=101$00000223EE 0001 0000000122 Funct Export Res
$LK,"ICPush ",A="FL:D:/Compiler/BackLib.CPP.Z,310",BI=102$000001A51E 001F 0000000152 Funct Export Res
$LK,"ICPushRegs ",A="FL:D:/Compiler/BackLib.CPP.Z,348",BI=103$000001A676 0006 0000000054 Funct Export Res
$LK,"ICPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,118",BI=104$0000002CA8 0008 00000003B2 Funct Export Res
$LK,"ICQueInit ",A="FL:D:/Compiler/Back1c.CPP.Z,384",BI=105$0000024C86 0001 0000000070 Funct Export Res
$LK,"ICQueIns ",A="FL:D:/Compiler/Back1c.CPP.Z,398",BI=106$0000024CF6 0001 0000000162 Funct Export Res
$LK,"ICQueInsRev ",A="FL:D:/Compiler/Back1c.CPP.Z,439",BI=107$0000024E5E 0001 0000000162 Funct Export Res
$LK,"ICQueRem ",A="FL:D:/Compiler/Back1c.CPP.Z,480",BI=108$0000024FC6 0001 0000000088 Funct Export Res
$LK,"ICRex ",A="FL:D:/Compiler/BackLib.CPP.Z,22",BI=109$0000019C2E 0016 000000002D Funct Export Res
$LK,"ICShift ",A="FL:D:/Compiler/Back1a.CPP.Z,643",BI=110$0000020FD6 0004 00000001A3 Funct Export Res
$LK,"ICShiftEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,676",BI=111$000002117E 0002 000000030E Funct Export Res
$LK,"ICSlashOp ",A="FL:D:/Compiler/BackLib.CPP.Z,282",BI=112$000001A3D6 0027 0000000145 Funct Export Res
$LK,"ICSqr ",A="FL:D:/Compiler/Back1c.CPP.Z,568",BI=113$00000252FE 0002 000000004A Funct Export Res
$LK,"ICSub ",A="FL:D:/Compiler/Back1a.CPP.Z,211",BI=114$000001F9D6 0001 00000003F5 Funct Export Res
$LK,"ICSwap ",A="FL:D:/Compiler/Back1c.CPP.Z,617",BI=115$0000025506 0001 000000026E Funct Export Res
$LK,"ICSwitch ",A="FL:D:/Compiler/Back1c.CPP.Z,744",BI=116$0000025A9E 0002 00000006F2 Funct Export Res
$LK,"ICTest ",A="FL:D:/Compiler/BackLib.CPP.Z,410",BI=117$000001A876 000C 000000004E Funct Export Res
$LK,"ICTestAndBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,755",BI=118$000002359E 0002 00000001EC Funct Export Res
$LK,"ICToBool ",A="FL:D:/Compiler/Back1b.CPP.Z,400",BI=119$0000022606 0001 0000000075 Funct Export Res
$LK,"ICToF64 ",A="FL:D:/Compiler/Back1b.CPP.Z,395",BI=120$00000225C6 0001 000000003D Funct Export Res
$LK,"ICToI64 ",A="FL:D:/Compiler/Back1b.CPP.Z,390",BI=121$0000022586 0001 000000003D Funct Export Res
$LK,"ICToUpper ",A="FL:D:/Compiler/Back1b.CPP.Z,379",BI=122$0000022516 0001 000000006B Funct Export Res
$LK,"ICU16 ",A="FL:D:/Compiler/BackLib.CPP.Z,35",BI=123$0000019C9E 0092 0000000029 Funct Export Res
$LK,"ICU24 ",A="FL:D:/Compiler/BackLib.CPP.Z,41",BI=124$0000019CCE 0063 0000000026 Funct Export Res
$LK,"ICU32 ",A="FL:D:/Compiler/BackLib.CPP.Z,47",BI=125$0000019CF6 0054 0000000026 Funct Export Res
$LK,"ICU64 ",A="FL:D:/Compiler/BackLib.CPP.Z,53",BI=126$0000019D1E 0009 0000000028 Funct Export Res
$LK,"ICU8 ",A="FL:D:/Compiler/BackLib.CPP.Z,17",BI=127$0000019C06 0063 0000000028 Funct Export Res
$LK,"ICUnaries ",A="FL:D:/Compiler/Back1b.CPP.Z,1",BI=128$000002148E 0002 0000000069 Funct Export Res
$LK,"ICXorEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,721",BI=129$0000025996 0001 0000000107 Funct Export Res
$LK,"ICXorXor ",A="FL:D:/Compiler/Back1b.CPP.Z,91",BI=130$00000218B6 0001 0000000155 Funct Export Res
$LK,"ICZero ",A="FL:D:/Compiler/BackLib.CPP.Z,401",BI=131$000001A816 0017 000000005E Funct Export Res
$LK,"IncludeDepth ",A="FL:D:/Compiler/ICLCC.CPP.Z,43",BI=132$00000028C8 0000 0000000030 Funct Export Res
$LK,"InstEntriesCompare ",A="FL:D:/Compiler/Unassembler.CPP.Z,1",BI=133$0000000738 0001 00000002A9 Funct Export Res
$LK,"InstEntryFind ",A="FL:D:/Compiler/Unassembler.CPP.Z,72",BI=134$00000009E8 0002 00000003C9 Funct Export Res
$LK,"IsLexExpression2Bin ",A="FL:D:/Compiler/ExpParser.CPP.Z,1153",BI=135$000000ECAE 0000 0000000029 Funct Export Res
$LK,"LCCAdd ",A="FL:D:/Compiler/ICLCC.CPP.Z,200",BI=136$00000030D8 00A9 000000009F Funct Export Res
$LK,"LCCAppend ",A="FL:D:/Compiler/ICLCC.CPP.Z,239",BI=137$0000003200 0003 00000000A6 Funct Export Res
$LK,"LCCCompile ",A="FL:D:/Compiler/ICLCC.CPP.Z,356",BI=138$0000003630 0006 00000002A7 Funct Export Res
$LK,"LCCDel ",A="FL:D:/Compiler/ICLCC.CPP.Z,299",BI=139$0000003420 0001 0000000164 Funct Export Res
$LK,"LCCFloatConstFind ",A="FL:D:/Compiler/ICLCC.CPP.Z,277",BI=140$0000003358 000F 00000000C6 Funct Export Res
$LK,"LCCGoToLabelFind ",A="FL:D:/Compiler/ICLCC.CPP.Z,265",BI=141$0000003300 0005 0000000057 Funct Export Res
$LK,"LCCHeaderPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,342",BI=142$0000003588 000B 00000000A2 Funct Export Res
$LK,"LCCInit ",A="FL:D:/Compiler/ICLCC.CPP.Z,192",BI=143$0000003098 000A 000000003A Funct Export Res
$LK,"LCCMiscNew ",A="FL:D:/Compiler/ICLCC.CPP.Z,256",BI=144$00000032A8 0021 0000000055 Funct Export Res
$LK,"LCCPop ",A="FL:D:/Compiler/ICLCC.CPP.Z,234",BI=145$00000031E0 0008 000000001A Funct Export Res
$LK,"LCCPopNoFree ",A="FL:D:/Compiler/ICLCC.CPP.Z,227",BI=146$00000031B0 0003 000000002E Funct Export Res
$LK,"LCCPush ",A="FL:D:/Compiler/ICLCC.CPP.Z,220",BI=147$0000003178 000E 0000000037 Funct Export Res
$LK,"LCCQuePut ",A="FL:D:/Compiler/ICLCC.CPP.Z,182",BI=148$0000003060 0001 0000000037 Funct Export Res
$LK,"Lex ",A="FL:D:/Compiler/Lex.CPP.Z,725",BI=149$00000054C8 00ED 0000001881 Funct Export Res
$LK,"LexAttachDoc ",A="FL:D:/Compiler/Lex.CPP.Z,393",BI=150$0000004A70 0001 0000000163 Funct Export Res
$LK,"LexBackupLastChar ",A="FL:D:/Compiler/Lex.CPP.Z,131",BI=151$0000003E4C 0003 0000000041 Funct Export Res
$LK,"LexD2I32 ",A="FL:D:/Compiler/ExpParser.CPP.Z,1198",BI=152$000000EDCE 0000 00000000A6 Funct Export Res
$LK,"LexD3I32 ",A="FL:D:/Compiler/ExpParser.CPP.Z,1214",BI=153$000000EE76 0000 00000000D9 Funct Export Res
$LK,"LexDel ",A="FL:D:/Compiler/Lex.CPP.Z,66",BI=154$0000003BD0 0004 00000000A5 Funct Export Res
$LK,"LexDocRead ",A="FL:D:/Compiler/Lex.CPP.Z,372",BI=155$00000049DC 0001 0000000087 Funct Export Res
$LK,"LexDollar ",A="FL:D:/Compiler/Lex.CPP.Z,142",BI=156$0000003E94 0003 0000000070 Funct Export Res
$LK,"LexExcept ",A="FL:D:/Compiler/Lex.CPP.Z,1601",BI=157$0000007068 00B8 00000000ED Funct Export Res
$LK,"LexExpression ",A="FL:D:/Compiler/ExpParser.CPP.Z,1186",BI=158$000000ED8E 0002 000000003F Funct Export Res
$LK,"LexExpression2Bin ",A="FL:D:/Compiler/ExpParser.CPP.Z,1135",BI=159$000000EC16 0006 0000000094 Funct Export Res
$LK,"LexExpressionF64 ",A="FL:D:/Compiler/ExpParser.CPP.Z,1172",BI=160$000000ED36 0000 0000000054 Funct Export Res
$LK,"LexExpressionI64 ",A="FL:D:/Compiler/ExpParser.CPP.Z,1158",BI=161$000000ECDE 000A 0000000054 Funct Export Res
$LK,"LexExtStr ",A="FL:D:/Compiler/Lex.CPP.Z,1518",BI=162$0000006D50 0004 00000000C5 Funct Export Res
$LK,"LexFirstRem ",A="FL:D:/Compiler/Lex.CPP.Z,332",BI=163$0000004884 0000 00000000BC Funct Export Res
$LK,"LexGetChar ",A="FL:D:/Compiler/Lex.CPP.Z,156",BI=164$0000003F04 0031 000000094F Funct Export Res
$LK,"LexInStr ",A="FL:D:/Compiler/Lex.CPP.Z,628",BI=165$0000005198 0001 000000032A Funct Export Res
$LK,"LexIncludeStr ",A="FL:D:/Compiler/Lex.CPP.Z,354",BI=166$0000004944 0003 0000000098 Funct Export Res
$LK,"LexNew ",A="FL:D:/Compiler/Lex.CPP.Z,35",BI=167$0000003A90 0004 000000013D Funct Export Res
$LK,"LexPop ",A="FL:D:/Compiler/Lex.CPP.Z,450",BI=168$0000004C60 0004 0000000074 Funct Export Res
$LK,"LexPush ",A="FL:D:/Compiler/Lex.CPP.Z,438",BI=169$0000004BD8 000F 0000000081 Funct Export Res
$LK,"LexPutLine ",A="FL:D:/Compiler/Lex.CPP.Z,1543",BI=170$0000006E18 0003 000000009B Funct Export Res
$LK,"LexPutPos ",A="FL:D:/Compiler/Lex.CPP.Z,1571",BI=171$0000006EB8 0003 00000000CA Funct Export Res
$LK,"LexPutToken ",A="FL:D:/Compiler/Lex.CPP.Z,108",BI=172$0000003D18 0001 000000012B Funct Export Res
$LK,"LexSize ",A="FL:D:/Compiler/Lex.CPP.Z,88",BI=173$0000003C78 0000 000000009B Funct Export Res
$LK,"LexSkipEol ",A="FL:D:/Compiler/Lex.CPP.Z,325",BI=174$0000004854 0004 000000002B Funct Export Res
$LK,"LexStatement2Bin ",A="FL:D:/Compiler/CmpMain.CPP.Z,15",BI=175$000002AE3A 0001 0000000131 Funct Export Res
$LK,"LexWarn ",A="FL:D:/Compiler/Lex.CPP.Z,1585",BI=176$0000006F88 0009 00000000D9 Funct Export Res
$LK,"MDR_D32_INDIRECT_REG",A="FL:D:/Compiler/BackLib.CPP.Z,134"$3 0002 0000000008 DefineStr
$LK,"MDR_D8_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,133"$2 0002 0000000008 DefineStr
$LK,"MDR_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,132"$1 0002 0000000008 DefineStr
$LK,"MDR_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,131"$0 0002 0000000008 DefineStr
$LK,"MDR_RIP_REL ",A="FL:D:/Compiler/BackLib.CPP.Z,138"$7 0004 0000000008 DefineStr
$LK,"MDR_SIB_D32_INDIRECT_REG",A="FL:D:/Compiler/BackLib.CPP.Z,137"$6 0003 0000000008 DefineStr
$LK,"MDR_SIB_D8_INDIRECT_REG",A="FL:D:/Compiler/BackLib.CPP.Z,136"$5 0002 0000000008 DefineStr
$LK,"MDR_SIB_INDIRECT_REG",A="FL:D:/Compiler/BackLib.CPP.Z,135"$4 0002 0000000008 DefineStr
$LK,"MemberAdd ",A="FL:D:/Compiler/Lex.CPP.Z,519",BI=177$0000004E10 0004 00000001BA Funct Export Res
$LK,"MemberFind ",A="FL:D:/Compiler/Lex.CPP.Z,484",BI=178$0000004D60 0005 0000000067 Funct Export Res
$LK,"MemberFind2 ",A="FL:D:/Compiler/Lex.CPP.Z,504",BI=179$0000004DC8 0001 0000000044 Funct Export Res
$LK,"MemberLstDel ",A="FL:D:/Compiler/Lex.CPP.Z,567",BI=180$0000004FD0 0001 00000000F3 Funct Export Res
$LK,"MemberLstNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,38",BI=181$000000F026 0003 000000002A Funct Export Res
$LK,"MemberLstSize ",A="FL:D:/Compiler/Lex.CPP.Z,601",BI=182$00000050C8 0002 00000000CF Funct Export Res
$LK,"MemberMetaData ",A="FL:D:/Compiler/Lex.CPP.Z,462",BI=183$0000004CD8 0000 0000000041 Funct Export Res
$LK,"MemberMetaFind ",A="FL:D:/Compiler/Lex.CPP.Z,473",BI=184$0000004D20 0000 0000000040 Funct Export Res
$LK,"NUM_INTERNAL_TYPES ",A="FL:D:/Compiler/CmpInit.CPP.Z,1"$17 0002 0000000008 DefineStr
$LK,"OTrace ",A="FL:D:/Compiler/ICLCC.CPP.Z,21",BI=185$0000002840 0000 0000000017 Funct Export Res
$LK,"OTraceMask ",A="FL:D:/Compiler/ICLCC.CPP.Z,26",BI=186$0000002858 0000 0000000039 Funct Export Res
$LK,"OptBrNotZero ",A="FL:D:/Compiler/OptLib.CPP.Z,361",BI=187$000000B7DE 0004 0000000403 Funct Export Res
$LK,"OptBrZero ",A="FL:D:/Compiler/OptLib.CPP.Z,213",BI=188$000000B3D6 0006 0000000403 Funct Export Res
$LK,"OptClassFwd ",A="FL:D:/Compiler/OptLib.CPP.Z,9",BI=189$000000AEFE 0013 000000002B Funct Export Res
$LK,"OptEqu ",A="FL:D:/Compiler/ICLCC.CPP.Z,1",BI=190$00000027B0 0005 000000002E Funct Export Res
$LK,"OptFixSizeOf ",A="FL:D:/Compiler/OptLib.CPP.Z,509",BI=191$000000BBE6 0003 000000009B Funct Export Res
$LK,"OptFixupBinaryOp1 ",A="FL:D:/Compiler/OptLib.CPP.Z,96",BI=192$000000B0E6 0013 00000001CB Funct Export Res
$LK,"OptFixupBinaryOp2 ",A="FL:D:/Compiler/OptLib.CPP.Z,162",BI=193$000000B2B6 0001 0000000054 Funct Export Res
$LK,"OptFixupUnaryOp ",A="FL:D:/Compiler/OptLib.CPP.Z,178",BI=194$000000B30E 0003 00000000C8 Funct Export Res
$LK,"OptFree ",A="FL:D:/Compiler/OptLib.CPP.Z,33",BI=195$000000AFAE 0023 0000000024 Funct Export Res
$LK,"OptIC4 ",A="FL:D:/Compiler/OptPass4.CPP.Z,1",BI=196$00000179AE 0001 00000005CD Funct Export Res
$LK,"OptIC6 ",A="FL:D:/Compiler/OptPass6.CPP.Z,1",BI=197$00000192C6 0001 0000000128 Funct Export Res
$LK,"OptLabelFwd ",A="FL:D:/Compiler/OptLib.CPP.Z,1",BI=198$000000AED6 0010 0000000028 Funct Export Res
$LK,"OptLag ",A="FL:D:/Compiler/OptLib.CPP.Z,40",BI=199$000000AFD6 000E 000000002A Funct Export Res
$LK,"OptLag1 ",A="FL:D:/Compiler/OptLib.CPP.Z,51",BI=200$000000B006 0006 0000000031 Funct Export Res
$LK,"OptLag2 ",A="FL:D:/Compiler/OptLib.CPP.Z,62",BI=201$000000B03E 0003 000000002A Funct Export Res
$LK,"OptLead1 ",A="FL:D:/Compiler/OptLib.CPP.Z,73",BI=202$000000B06E 0004 0000000030 Funct Export Res
$LK,"OptMVCompare ",A="FL:D:/Compiler/OptLib.CPP.Z,576",BI=203$000000BD96 0001 000000001A Funct Export Res
$LK,"OptOff ",A="FL:D:/Compiler/ICLCC.CPP.Z,11",BI=204$00000027F8 0000 0000000016 Funct Export Res
$LK,"OptOn ",A="FL:D:/Compiler/ICLCC.CPP.Z,6",BI=205$00000027E0 0000 0000000016 Funct Export Res
$LK,"OptPass012 ",A="FL:D:/Compiler/OptPass012.CPP.Z,23",BI=206$0000013B76 0000 00000027CC Funct Export Res
$LK,"OptPass3 ",A="FL:D:/Compiler/OptPass3.CPP.Z,1",BI=207$0000016346 0000 0000001663 Funct Export Res
$LK,"OptPass4 ",A="FL:D:/Compiler/OptPass4.CPP.Z,171",BI=208$0000017F7E 0000 0000000F05 Funct Export Res
$LK,"OptPass5 ",A="FL:D:/Compiler/OptPass5.CPP.Z,1",BI=209$0000018E86 0000 000000043F Funct Export Res
$LK,"OptPass6 ",A="FL:D:/Compiler/OptPass6.CPP.Z,112",BI=210$0000019716 0000 00000004EA Funct Export Res
$LK,"OptPass6Lag ",A="FL:D:/Compiler/OptPass6.CPP.Z,28",BI=211$00000193EE 0001 0000000327 Funct Export Res
$LK,"OptPass789 ",A="FL:D:/Compiler/OptPass789.CPP.Z,1",BI=212$000002620E 0000 0000002E9E Funct Export Res
$LK,"OptSetNOP1 ",A="FL:D:/Compiler/OptLib.CPP.Z,17",BI=213$000000AF2E 0079 000000003A Funct Export Res
$LK,"OptSetNOP2 ",A="FL:D:/Compiler/OptLib.CPP.Z,25",BI=214$000000AF6E 000D 000000003C Funct Export Res
$LK,"PE_CHECK_BINARY_OPS1",A="FL:D:/Compiler/ExpParser.CPP.Z,43"$5 0001 0000000008 DefineStr
$LK,"PE_CHECK_BINARY_OPS2",A="FL:D:/Compiler/ExpParser.CPP.Z,44"$6 0001 0000000008 DefineStr
$LK,"PE_DEREFERENCE ",A="FL:D:/Compiler/ExpParser.CPP.Z,42"$4 0003 0000000008 DefineStr
$LK,"PE_DO_BINARY_OP ",A="FL:D:/Compiler/ExpParser.CPP.Z,46"$8 0001 0000000008 DefineStr
$LK,"PE_DO_UNARY_OP ",A="FL:D:/Compiler/ExpParser.CPP.Z,45"$7 0001 0000000008 DefineStr
$LK,"PE_MAYBE_MODIFIERS ",A="FL:D:/Compiler/ExpParser.CPP.Z,40"$2 000A 0000000008 DefineStr
$LK,"PE_POP_ALL1 ",A="FL:D:/Compiler/ExpParser.CPP.Z,49"$11 0001 0000000008 DefineStr
$LK,"PE_POP_ALL2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,50"$12 0001 0000000008 DefineStr
$LK,"PE_POP_HIGHER ",A="FL:D:/Compiler/ExpParser.CPP.Z,47"$9 0001 0000000008 DefineStr
$LK,"PE_PUSH_LOWER ",A="FL:D:/Compiler/ExpParser.CPP.Z,48"$10 0001 0000000008 DefineStr
$LK,"PE_UNARY_MODIFIERS ",A="FL:D:/Compiler/ExpParser.CPP.Z,41"$3 0009 0000000008 DefineStr
$LK,"PE_UNARY_TERM1 ",A="FL:D:/Compiler/ExpParser.CPP.Z,38"$0 0001 0000000008 DefineStr
$LK,"PE_UNARY_TERM2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,39"$1 0003 0000000008 DefineStr
$LK,"ParenWarning ",A="FL:D:/Compiler/ExpParser.CPP.Z,1",BI=215$000000BDB6 0004 000000004C Funct Export Res
$LK,"PrsAddOp ",A="FL:D:/Compiler/ExpParser.CPP.Z,52",BI=216$000000BEFE 0002 00000001EE Funct Export Res
$LK,"PrsArrayDims ",A="FL:D:/Compiler/StmtParser.CPP.Z,303",BI=217$000000FAAE 0001 000000012D Funct Export Res
$LK,"PrsAsmArg ",A="FL:D:/Compiler/Assembler.CPP.Z,428",BI=218$0000008470 0002 0000000424 Funct Export Res
$LK,"PrsAsmBlk ",A="FL:D:/Compiler/Assembler.CPP.Z,1277",BI=219$000000A5E6 0002 00000008ED Funct Export Res
$LK,"PrsAsmDefine ",A="FL:D:/Compiler/Assembler.CPP.Z,1188",BI=220$000000A286 0004 000000029D Funct Export Res
$LK,"PrsAsmImm ",A="FL:D:/Compiler/Assembler.CPP.Z,394",BI=221$0000008338 0006 0000000131 Funct Export Res
$LK,"PrsAsmInstruction ",A="FL:D:/Compiler/Assembler.CPP.Z,781",BI=222$000000918E 0001 00000010F3 Funct Export Res
$LK,"PrsBinFile ",A="FL:D:/Compiler/Assembler.CPP.Z,1261",BI=223$000000A526 0001 00000000BB Funct Export Res
$LK,"PrsClass ",A="FL:D:/Compiler/StmtParser.CPP.Z,785",BI=224$0000010B76 0002 0000000264 Funct Export Res
$LK,"PrsClassNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,1",BI=225$000000EF56 0003 0000000068 Funct Export Res
$LK,"PrsDoWhile ",A="FL:D:/Compiler/StmtParser.CPP.Z,1281",BI=226$0000011F36 0001 0000000137 Funct Export Res
$LK,"PrsDotDotDot ",A="FL:D:/Compiler/StmtParser.CPP.Z,340",BI=227$000000FBDE 0001 0000000111 Funct Export Res
$LK,"PrsExpression ",A="FL:D:/Compiler/ExpParser.CPP.Z,298",BI=228$000000C756 0010 0000000149 Funct Export Res
$LK,"PrsExpression2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,102",BI=229$000000C0EE 0001 0000000667 Funct Export Res
$LK,"PrsFor ",A="FL:D:/Compiler/StmtParser.CPP.Z,1305",BI=230$000001206E 0001 0000000162 Funct Export Res
$LK,"PrsFun ",A="FL:D:/Compiler/StmtParser.CPP.Z,914",BI=231$0000010FC6 0001 00000003B7 Funct Export Res
$LK,"PrsFunCall ",A="FL:D:/Compiler/ExpParser.CPP.Z,409",BI=232$000000CBF6 0003 000000082D Funct Export Res
$LK,"PrsFunJoin ",A="FL:D:/Compiler/StmtParser.CPP.Z,851",BI=233$0000010DDE 0005 00000001E8 Funct Export Res
$LK,"PrsFunNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,22",BI=234$000000EFBE 0001 0000000068 Funct Export Res
$LK,"PrsGlblInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,263",BI=235$000000F8EE 0002 000000007C Funct Export Res
$LK,"PrsGlblVarLst ",A="FL:D:/Compiler/StmtParser.CPP.Z,976",BI=236$000001137E 0007 0000000991 Funct Export Res
$LK,"PrsIf ",A="FL:D:/Compiler/StmtParser.CPP.Z,1231",BI=237$0000011D16 0001 000000012C Funct Export Res
$LK,"PrsKeyWord ",A="FL:D:/Compiler/StmtParser.CPP.Z,45",BI=238$000000F056 000C 0000000040 Funct Export Res
$LK,"PrsNoUnusedWarn ",A="FL:D:/Compiler/StmtParser.CPP.Z,1553",BI=239$0000012A66 0001 000000008F Funct Export Res
$LK,"PrsOffsetOf ",A="FL:D:/Compiler/ExpParser.CPP.Z,379",BI=240$000000CAAE 0002 0000000148 Funct Export Res
$LK,"PrsPop ",A="FL:D:/Compiler/ExpParser.CPP.Z,13",BI=241$000000BE2E 0017 0000000022 Funct Export Res
$LK,"PrsPop2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,23",BI=242$000000BE8E 0001 000000002D Funct Export Res
$LK,"PrsPopDeref ",A="FL:D:/Compiler/ExpParser.CPP.Z,28",BI=243$000000BEBE 0004 000000003F Funct Export Res
$LK,"PrsPush ",A="FL:D:/Compiler/ExpParser.CPP.Z,8",BI=244$000000BE06 0017 0000000028 Funct Export Res
$LK,"PrsPush2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,18",BI=245$000000BE56 0004 0000000033 Funct Export Res
$LK,"PrsSizeOf ",A="FL:D:/Compiler/ExpParser.CPP.Z,331",BI=246$000000C8A6 0001 0000000207 Funct Export Res
$LK,"PrsStatement ",A="FL:D:/Compiler/StmtParser.CPP.Z,1664",BI=247$0000012F66 0004 0000000C09 Funct Export Res
$LK,"PrsStaticInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,272",BI=248$000000F96E 0002 000000013E Funct Export Res
$LK,"PrsStreamBlk ",A="FL:D:/Compiler/StmtParser.CPP.Z,1567",BI=249$0000012AF6 0000 00000001B2 Funct Export Res
$LK,"PrsSwitch ",A="FL:D:/Compiler/StmtParser.CPP.Z,1354",BI=250$00000121D6 0002 000000088F Funct Export Res
$LK,"PrsTryBlk ",A="FL:D:/Compiler/StmtParser.CPP.Z,1603",BI=251$0000012CAE 0001 00000002B7 Funct Export Res
$LK,"PrsType ",A="FL:D:/Compiler/StmtParser.CPP.Z,375",BI=252$000000FCF6 0002 000000039A Funct Export Res
$LK,"PrsUnaryModifier ",A="FL:D:/Compiler/ExpParser.CPP.Z,980",BI=253$000000E3B6 0000 0000000859 Funct Export Res
$LK,"PrsUnaryTerm ",A="FL:D:/Compiler/ExpParser.CPP.Z,617",BI=254$000000D426 0000 0000000F8E Funct Export Res
$LK,"PrsVarInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,66",BI=255$000000F126 0001 00000004C8 Funct Export Res
$LK,"PrsVarInit2 ",A="FL:D:/Compiler/StmtParser.CPP.Z,181",BI=256$000000F5EE 0004 00000002FE Funct Export Res
$LK,"PrsVarLst ",A="FL:D:/Compiler/StmtParser.CPP.Z,469",BI=257$0000010096 0006 0000000ADC Funct Export Res
$LK,"PrsWhile ",A="FL:D:/Compiler/StmtParser.CPP.Z,1259",BI=258$0000011E46 0001 00000000EF Funct Export Res
$LK,"SLASH_OP_DEC ",A="FL:D:/Compiler/BackLib.CPP.Z,262"$0x052B0000 0006 0000000018 DefineStr
$LK,"SLASH_OP_DIV ",A="FL:D:/Compiler/BackLib.CPP.Z,267"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_FADD ",A="FL:D:/Compiler/BackLib.CPP.Z,271"$0x0000C1DE 0002 0000000018 DefineStr
$LK,"SLASH_OP_FDIV ",A="FL:D:/Compiler/BackLib.CPP.Z,275"$0x0000F9DE 0002 0000000018 DefineStr
$LK,"SLASH_OP_FDIVR ",A="FL:D:/Compiler/BackLib.CPP.Z,276"$0x0000F1DE 0003 0000000018 DefineStr
$LK,"SLASH_OP_FILD ",A="FL:D:/Compiler/BackLib.CPP.Z,280"$0x00000000 0002 0000000018 DefineStr
$LK,"SLASH_OP_FISTTP ",A="FL:D:/Compiler/BackLib.CPP.Z,279"$0x00000000 0002 0000000018 DefineStr
$LK,"SLASH_OP_FLD ",A="FL:D:/Compiler/BackLib.CPP.Z,277"$0x00000000 0008 0000000018 DefineStr
$LK,"SLASH_OP_FMUL ",A="FL:D:/Compiler/BackLib.CPP.Z,274"$0x0000C9DE 0002 0000000018 DefineStr
$LK,"SLASH_OP_FSTP ",A="FL:D:/Compiler/BackLib.CPP.Z,278"$0x00000000 000D 0000000018 DefineStr
$LK,"SLASH_OP_FSUB ",A="FL:D:/Compiler/BackLib.CPP.Z,272"$0x0000E9DE 0002 0000000018 DefineStr
$LK,"SLASH_OP_FSUBR ",A="FL:D:/Compiler/BackLib.CPP.Z,273"$0x0000E1DE 0003 0000000018 DefineStr
$LK,"SLASH_OP_IMUL ",A="FL:D:/Compiler/BackLib.CPP.Z,266"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_INC ",A="FL:D:/Compiler/BackLib.CPP.Z,261"$0x00030000 0004 0000000018 DefineStr
$LK,"SLASH_OP_MOV ",A="FL:D:/Compiler/BackLib.CPP.Z,268"$0x00000000 0002 0000000018 DefineStr
$LK,"SLASH_OP_MUL ",A="FL:D:/Compiler/BackLib.CPP.Z,265"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_NEG ",A="FL:D:/Compiler/BackLib.CPP.Z,264"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_NOT ",A="FL:D:/Compiler/BackLib.CPP.Z,263"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_POP ",A="FL:D:/Compiler/BackLib.CPP.Z,270"$0x00000000 0001 0000000018 DefineStr
$LK,"SLASH_OP_PUSH ",A="FL:D:/Compiler/BackLib.CPP.Z,269"$0x00000000 0001 0000000018 DefineStr
$LK,"StrMatchBits ",A="FL:D:/Compiler/Unassembler.CPP.Z,225",BI=259$0000000EC8 0002 0000000073 Funct Export Res
$LK,"StreamExePrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,700",BI=260$000002C8EA 0000 00000000EC Funct Export Res
$LK,"StreamPrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,1",BI=261$000002AD92 0000 00000000A8 Funct Export Res
$LK,"U ",A="FL:D:/Compiler/Unassembler.CPP.Z,643",BI=262$0000002600 0000 00000000CF Funct Export Res
$LK,"UasmHashLoad ",A="FL:D:/Compiler/Unassembler.CPP.Z,187",BI=263$0000000DB8 0001 0000000110 Funct Export Res
$LK,"Ui ",A="FL:D:/Compiler/Unassembler.CPP.Z,238",BI=264$0000000F40 0002 00000016C0 Funct Export Res
$LK,"Un ",A="FL:D:/Compiler/Unassembler.CPP.Z,658",BI=265$00000026D0 0008 00000000DA Funct Export Res
$LK,"UndefinedExtern ",A="FL:D:/Compiler/StmtParser.CPP.Z,54",BI=266$000000F096 0001 0000000048 Funct Export Res
$LK,"UnusedExternWarning ",A="FL:D:/Compiler/StmtParser.CPP.Z,60",BI=267$000000F0DE 0004 0000000043 Funct Export Res
$LK,"asm_seg_prefixes ",A="FL:D:/Compiler/Assembler.CPP.Z,779"$0000009188 0001 0000000006 GlbVar Export
$LK,"cmp ",A="FL:D:/Compiler/Compiler.PRJ.Z,13"$00000004E0 00E2 0000000229 GlbVar Export
$LK,"cmp_templates ",A="FL:D:/Compiler/CmpExts.CPP.Z,37"$0000000000 0002 0000000004 GlbVar Export
$LK,"cmp_templates_dont_pop",A="FL:D:/Compiler/CmpExts.CPP.Z,38"$000000018B 0002 0000000004 GlbVar Export
$LK,"cmp_templates_dont_push",A="FL:D:/Compiler/CmpExts.CPP.Z,40"$0000000257 0002 0000000004 GlbVar Export
$LK,"cmp_templates_dont_push2",A="FL:D:/Compiler/CmpExts.CPP.Z,39"$0000000421 0002 0000000004 GlbVar Export
$LK,"cmp_templates_dont_push_pop",A="FL:D:/Compiler/CmpExts.CPP.Z,41"$0000000391 0002 0000000004 GlbVar Export
$LK,"cmp_type_flags_src_code",A="FL:D:/Compiler/Lex.CPP.Z,390"$0000004A68 0001 0000000008 GlbVar Export
$LK,"internal_types_table",A="FL:D:/Compiler/CmpInit.CPP.Z,8"$00000290B0 0001 00000000AA GlbVar Export
$LK,"lex_zeros ",A="FL:D:/Compiler/Lex.CPP.Z,129"$0000003E48 000A 0000000004 GlbVar Export
$LK,"uasm ",A="FL:D:/Compiler/Compiler.PRJ.Z,14"$0000000710 001C 0000000028 GlbVar Export
ÈŠ00HS^gory}†—›¡¯ÌÙèíùþ€€€€#€€3€<€K€C€[€d€j€j€x€{€�€˜€¡€¨€¬€±€¼€É€×€ó€ÿ€ÿ€�(�(�/�K�W�_�r�y���–���¡�¬�±�¸�Õ�‚ ‚␍‚‚‚&‚*‚?‚A‚R‚\‚g‚q‚€‚�‚«‚«‚¯‚´‚4ƒ0DÌš“š“°“Ó˓ٓù“”
””,”?”P”V”k”‰”‰”ž”£”«”³”¹”Ñ”ä”ï”ó”ý”•••'•)•;•;•B•F•J•X•k•o•x•�•‘•‘•¤•·•½•Á•Ê•ç•ë•ë•ë•ë•ð•–– –.–I–Y–i–n–n–n–z–‚–Š–�–¥–­–»–Å–Ó–Ù–Û–Û–Û–Û–Û–Û–Û–Û–Û–ç–ï–÷–ý–———&—4—:—:—:—L—R—^—d—q—Œ—œ—¨—®—»—Í—Û—ú—˜Y™`½Ñ{{{{#{+{6{A{L{N{f{f{x{„{�{�{¿{ˆ =pupu„u‹u’u–uºuÍuÔuåu
vv v"v-vRv]vhvjvqvzv|v‡vŽv˜v¸v˜ú~~ ~'~.~1~:~=~@~D~I~i~V~y~�~‰~Œ~Ž~ž~§~°~¶~¹~Ê~á~ò~ý~/ˆ9—˜ˆ˜ˆ²ˆ¹ˆÄˆãˆõˆ‰‰+‰=‰J‰J‰O‰V‰l‰~‰ƒ‰ž‰­‰¼‰Ë‰Ú‰ç‰ç‰ç‰ŠŠŠ/Š3ŠAŠPŠUŠUŠ\ŠrŠƒŠ…Š›Š³Š³Š³ŠÉŠÔŠêŠõŠ
‹‹'‹,‹D‹X‹]‹r‹w‹�‹”‹¬‹±‹É‹Î‹æ‹è‹ŒŒŒŒ*Œ1ŒGŒGŒbŒzŒ’ŒªŒÀŒÀŒÜŒØDZ‘Z‘n‘n‘”‘”‘±‘µ‘º‘º‘º‘Ƒˑۑà‘à‘à‘å‘å‘û‘’’#’,’<’E’G’G’G’G’N’U’\’c’j’q’x’’†’†’ˆ’ˆ’Ž’“’•“´ÑúÀ{À{ã{ð{õ{ù{|||&|1|9|D|L|O|[|c|}|£|�|³|¼|ñ|Ý|}}}$}@}G}k}¤}¤}¤}¤}~ ¬Z�ÀwÀwÖwÝwäwòwxxxx$x4x?xIxTxkxnxpx‚xˆx˜x¢x¬x³x¾xÓxÛxÛxñxñxñxy
¬�¨yyy%y,y:yKy]y_yfyly|y‡y‘yœy³y¶y¸yÊyÑyáyëyõyüyzz#z#z9z9z9zNz „=Z¸v¸vÑvØvßvævìvüvwww3w6w8wSw]wgwnwyw‹w“w“w©w©w»w d¨½PzPzpzwzzŠz”zŸz§z¶zÀzÃzçzézùzùz{␍à— àŒàŒ� �#�/�:�L�L�}�˜�¤�«�±�½�Ç�Î�Õ�Ù�Û�á�í�÷�þ�Ž Ž ŽŽŽ#Ž5Ž5ŽfŽ‡Ž“ŽšŽ Ž¬Ž¶Ž½ŽÄŽÈŽÊŽÐŽÜŽæŽíŽôŽøŽøŽ��#�5�5�f�‡�“�š� �¬��½�Ä�È�Ê�Ð�Ü�æ�í�ô�ø�ø���$�$�U�\�b�n�x��†�Š�Œ�’�ž�¨�¯��º�º�Ä�Û�ô�‘‘‘‘‘†‘ˆ `t`t“tŸt§t¯t³t·tÂtÆtÊtÎtÖtÛtßtðtuuuu)u6uIuPuZuZuZuZulu$!&˜(˜(¢(ª(¯(lÇ^2¿2¿K¿c¿s¿“¿¥¿½¿Ø¿Ø¿À
ÀÀÀÀÀ$À'À.À4À;ÀAÀEÀJÀTÀeÀlÀsÀuÀyÀ‚ÀŒÀ�ÀšÀ¦À©ÀºÀÅÀËÀÒÀÛÀôÀÁÁÁ Á*Á5ÁAÁRÁcÁoÁ}ÁÁ†Á�Á’Á–Á£ÁªÁÍÁÛÁåÁïÁøÁÂ"Â+Â4Â<ÂEÂKÂOÂTÂXÂeÂlÂz„™£¬ÂÅÂÖÂßÂèÂðÂùÂÿÂÃÃÃÃ"Ã>ÃLÃRÃWÃ_ÃgÃoÃ|ÄÖõþÃÙÃíÃíà ÄÄÄ%Ä,Ä5Ä>ÄGÄPÄpÄtÄÎÄTª»úµúµ#¶%¶3¶9¶W¶f¶u¶„¶’¶� ¶°¶()/æ¼æ¼ô¼ ½½½½</:½½2½@½F½^½d½~½„½Š½Š½’½ ¼`r¨r¨€¨�¨ ¨°¨À¨Шã¨ö¨©©'©=©O©Q©c©e©w©w©‰©‰©›©¹©¾©Ωä©ì©ö©ªª#ª9ªAªKªcªhªxªˆªžª¦ª°ªȪÔªܪæªöªûª««%«/«9«C«M«W«a«k«u««‰«“«©«³«½«Ç«Ñ«Û«å«ï«ù«¬¬#¬9¬C¬M¬W¬a¬k¬u¬¬‰¬“¬�¬§¬±¬»¬ŬϬÙ¬ã¬í¬÷¬­ ­­ ­)­3­=­G­Q­[­e­Œ­D:ÇB»B»`»k»|»»ƒ»Œ»“»¡»°»Æ»Æ»Õ»×»×»æ»è»è»ø»ú»ú»
¼ ¼ ¼¼¼¼(¼*¼*¼9¼;¼;¼J¼J¼X¼\¼`¼e¼i¼v¼}¼‹¼Ÿ¼¨¼®¼¼¼Õ¼×¼Û¼å¼å¼ê¼ê¼ê¼ï¼ï¼þ¼½½%½%½%½*½*½?½K½V½[½[½^½c½c½½‹½˜½š½š½ž½ ½ ½¼½ȽÔ½Ö½Ö½Ù½Û½Û½è½ê½ê½í½í½ö½ü½¾¾¾¾¾¾¾¾¾¾¾¾¾ ¾ ¾.¾0¾0¾@¾B¾B¾O¾Q¾Q¾`¾`¾d¾d¾l¾ˆ¾Œ¾‘¾,¿ »:²¶²¶̶×¶Û¶ä¶ë¶ò¶··*·<·N·]·l·}·Œ·Œ·“·—· ·­·´·½·Ä·È·è·è·è·è·è·ô·ø·û·¸¸¸&¸.¸6¸G¸R¸W¸W¸d¸j¸y¸�¸’¸�¸ª¸¹¸¼¸¾¸Ö¸í¸ï¸ý¸ÿ¸␍¹¹¹¹¹-¹4¹J¹J¹J¹O¹O¹d¹r¹}¹‚¹‚¹…¹йй¦¹´¹Á¹ùùǹɹɹå¹ó¹ÿ¹ººººººººººººº!º'º+º7ºWºdºrºyºA»XÎàÚÉÚÉÞÉéÉôÉÿÉÊ ÊÊ'Ê8ÊFÊOÊTÊYÊ[Êø0ªr¯r¯z¯‰¯�¯š¯§¯»¯ʯê¯÷¯ °+°K°Y°u°‡°Ÿ°¶°Á°â°±±*±5±P±i±i±„±­±DZâ±ô±²²²²0²A²T²d²q²|²‹²«²«²·²·²·²ȲÕ²ܲû²³³³³(³@³X³a³q³y³~³‘³µ³ųÕ³à³ô³ù³´'´)´4´g´�´�´™´¨´°´¿´È´дâ´µ µµµµ.µFµ^µvµ޵ µ·µÀµɵÛµéµíµôµÐ̼Z™Z™c™^™^™m™|™|™‹™‹™š™š™©™©™¸™¸™Ç™Ö™å™ô™ô™šš&š!š!š0šr¨Ü9î³î³´´N´_´_´z´€´…´…´ ´¦´«´«´´´´δÕ´Û´à´#µ-µ4µ:µ<µ<µOµUµUµUµZµvµ…µ—µœµœµœµ£µªµ±µƵ͵éµéµûµDS`ž°ž°²°º°Ç°Ñ°Ü°ä°˜#Ø8Ø8ë8ö8 9P9a9s9z9�9•9œ9ª9³9Ë9Ú9ç9ê9:: :":.:::>:L:S:V:�:4†¼†¼�¼”¼�¼¤¼¦¼«¼<)®¼®¼·¼¼¼Ê¼Ó¼Ú¼Ü¼á¼ @9Eþµþµ"¶&¶*¶/¶1¶M¶i¶i¶s¶ $&+°(°(º(Â(Ç(!<Š•ÒÆÒÆëÆúÆÇÇ#Ç)Ç,ÇMÇ"<±¼jÈjȃȒȦȳȹȿÈÂÈãÈ#4�Š‚Æ‚Æ˜Æ«ÆºÆÀÆÃÆËÆ$4¨±"È"È8ÈKÈXÈ^ÈaÈiÈ%œ^�ÒÄÒÄÚÄÞÄûÄÅ!Å>Å_ÅhÅyÅ Å·Å·ÅÙÅèÅñÅþÅÆ7ÆDÆHÆPÆPÆcÆsÆwÆ{Æ&\•¨RÇRÇoǃÇ�ǚDZÇÎÇìÇòÇûÇ ÈÈÈÈ'$(((7(<((Œ XqXqhq‰q‰q—q—q—q—q q q§qÒqÚqÚqåqåqóqrrrrr/r/r5r[r)¤ E`r`rpryrŒr™r¥r±r½rÉràràrïrúrs
ss=sBsTscsos„s„s­s­s¯sÂsÄsÞsêsíst*LETtttt#t't,t6t:tHtQt\t+ð9VðVð€ðƒð†ðŒð‘ð¨ð¿ðÖðèðñ5ñ8ñQñhñzñ‡ñšñ­ñ²ñºñÄñÌñÌñÓñÜñÜñçñò)ò/òHòaòcò}òƒòœòµò½òÈòÈòÒòÒòäò"ó7óIó,E�†�†�¥�Á�Æ�ç�žž2žFž^žežjž‹ž©ž¸žÕžæžýžŸŸŸ
ŸŸŸŸ&Ÿ,ŸIŸLŸLŸLŸQŸWŸsŸ�Ÿ�Ÿ–ŸªŸ²Ÿ»ŸןâŸîŸ÷Ÿ         - -8ùƒ^ ^ � › Î ¨ Ô 




!
<
C
Q
S
[
u
�
¢
¯
Ç
Û
à
ç
    $ 7 U g t Œ ¢ ¾   Í Ô æ é ë ñ ␍ % ' ? Q T V \ x x x Š Š ˜ ¢ à ß ß ä è ␍␍+␍H␍R␍V␍f␍y␍�␍“␍¥␍¹␍Ã␍Ú␍Þ␍ô␍!3=Q[d{…‡›¥¼ÀÀÀËÒåýÿ*AGYa‚™™™¿¿Ñ.x9ÓNóNó„ó‹ó“óœó­óºóÏóÒóÕóÙóâóðóúóÿó
ô'ô,ô9ôeôjôwô—ôœô«ô×ôßôäôùô%õ-õ2õ2õEõXõhõlõ‹õœõ¡õ¡õÃõÃõÃõÃõÃõÓõèõëõîõòõòõ÷õö ö$ö-ö:öBö]öoö|ö‡ö¥ö¥ö¥ö²öÉöËöËöËöØöïöñöñöþö÷÷&÷+÷4÷K÷]÷o÷�÷�÷�÷š÷±÷³÷³÷³÷À÷×÷Ù÷Ù÷æ÷ý÷ý÷øøø'øAøSøeøƒøƒøƒø�ø§ø©ø©ø¶øÍøÍøâøäøëø␍ù+ù0ù7ùEùOùQùQùQùmùuùwùwù™ùÓù/„;þþ%5TZa€‚¡­½Üâééñù "AI0ˆŸ–8–8´8Æ8Ì8Ó8Ú8Ü8ß8æ8í8í8 9␍999+9?9P9P9X9|9œ9½9Â9ã9è9ô9ÿ9:::K:\:a:g:i:o:r:ƒ:ˆ:‹:“:œ:·:×:î:;;
;,;?;D;[;n;s;w;™;´;Ô;ç;ì;ý;<<<␍<<$<)</<7<7<A<J<a<t<y<}<Ÿ<º<Ú<í<ò<␍=-=D=W=\=`=‚=•=•=°=°=°=¾=Ö=Ø=Ø=Ø=æ=þ=>>>&>&>8>8>A>N>d>„>ž>¥>¯>Â>Æ>Æ>Æ>Í>Ó>í>ô>þ>???8???I?W?b?b?|?1l£ºvWvWŒW˜W®W»WÅWÔWíWñW÷WX
X'X)X)XZXHX)XyXƒX2ÄIvÐ)Ð)Ù)*î)à)!*1*#*R*u*u*…*Š*Š*ž*£*£*¿*Ä*Ä*ä*é*é*ý*++ + +-+Q+w+—+©+»+Í+Ý+Ý+Ý+Ý+Ý+¦,3ПÏ~?~?’?±?�?×?ä?ð?ö?0@5@a@a@f@|@Ž@¤@º@í@ü@4A AOA\AˆA�A´A¼AÖAÂAñA
BöA*BB>BKBwBwBwBwBB4´?V,V,l,w,‚,Ž,™,›,Ä,Ê,Ê,ñ,þ,)-T-N-B-l-Ž-¦-“-¹-²-Ø-Å-ì-ù-$.=.7.+.I.\.\.\.f.5°ô\öö < D O ^ g k v � – › µ Ô Ú ß ò ( > D L O T g ‘ § ­ µ ¸ Ã Ø Ý ú ! !'!'!,!2!5!@!K!`!e!!ž!¤!©!´!É!Ò!×!ö!þ!""#","."M"U"`"u"z"”"³"¹"¾"¾"¾"¾"Ë"Ò"ç"ç"ÿ"
##*#B#V#g#q#s#‡#˜#�#¨#Õ#Õ#Õ#ç#6ÔÏ€†B†B¤B´B¿BÊBC6CTC~C„CŠC’C”CœC·CºCÅCÑCD=D[D…D‹D‘D™DžD¦DÁDÄDÏDÛDàD%ELEjE”EšE E¨EªE²EÍEÐEÛEçE,FSFqF›F¡F§F¯F´F¼F×FÚFåFñFñFöFüFG
GGG/G>GmG—G�G¢G´GÃGõG H%H-H2HDHSH‚H¬H²H·HÉHØHI1I7I<I<I<IMIXIcI‰I¡I¬I´IÁIÁIÆIÙIðIõIJ3J>JFJSJSJXJkJxJ‚J–J­JÆJØJåJK$K;KIKKK_KvKvKK‹K¡KºKÍKÙKìKðKðKðK÷KüKLL2L4L9LLLXLeLoLoL�L7h¤ºƨƨʨݨݨ÷¨þ¨
©
©!©!©8©8©O©O©f©f©}©©©ƒ©8p1Iø(ø())).).)3)5)A)K)\)y){)‹)‹)�)’)™)Ë)9ð|ô0:m|’»¿ÇÐßæïô 9ACbjy€Œ‘˜ ¦¨´ÄÉËëññù079X___s‡‹™¬¤ÄÉÔÛãéë÷ .44@PUZz€…‘¡¦¨ÈÎÕÝãåñ(...6??IIa‘¥©·ÊÂââô:à?óf.f.„.Œ.š.ž.Ä.Ï.×.ß.ó.û.û.ÿ.1/j/X/O/‚/‡/’/�/Ÿ/¾/Ä/Í/Ô/Ü/ä/ð/ø/000 0*0J0R0T0^0m0�0•0—0·0¿0¿0¿0Ê0Ó0ç0ï0ø0ø0ý01 111181T1p1�1’1§1´1È1Û1ß1ì12.2A2`2f2h2‡2Š2Š2Ÿ2¬2À2Ó2Þ2â2í2ø2333/323=3H3M3l3r3w3‚3�3�3®3±3¼3Ç3É3è3î3î3î3ø3ø3444?4?4?4?4H4T4j4ƒ4–4�4©4°4°4Ã4Ç4Ç4Ç4Î4Ó4æ4í4ù4555551585D5K5K5X5b5b5‹5‹5�5;ÈEsv¶v¶¢¶¥¶ª¶·¶¼¶ζжÔ¶ضÛ¶î¶·)·2·=·D·]··„·�·¿·Ä·Ë·ä·¸¸!¸C¸C¸C¸X¸r¸�¸“¸<T�¡.³.³B³O³^³^³j³p³š³°³œ³dz¼³ß³ç³=¼ë^*^*v*z*ˆ*—*¢*®*¹*»*ä*ê*ê* +;+ ++]+b+‰+Ž+š+¥+§+Ð+Ö+Ö+é+,ü+ð+,!,!,C,C,O,>\�°ŽŽœ£Âáã!/7BDOZy?è°æ††›¦­ÚùûGU]hju€€…²·äéð.9;Zyy”¢ªµ·ÂÍÍí

;\\\d@¨yŸêê4êEêQêhêoêˆê€ê êÀê¬êÌêÝêâêëïêë,ëCëJëcë[ë{ë›ë‡ë§ë¸ëÎëºëæëóëóë ì ììA°%MîÉîÉ ÊÊ%Ê,Ê;Ê@Ê_Ê_ÊdʃʈÊ�ʞʠʿʿÊÞÊóÊàÊÿÊËË/Ë/Ë/Ë/Ë>ËWËPËoËyËBhE[NÞNÞlÞÞ†Þ�Þ”Þ˜ÞšÞ¡Þ¨Þ¬Þ¬Þ´ÞÍÞ×Þ×ÞëÞöÞßßßß)ß:ßKßbßfßoßsßx߉ߦߦߴßÈßÍßæß÷ßûßûßûßà.àCàJà]àaàfàqà‚à“àªà²à»à¿àÄàÕàçà÷à á␍á&á9á=á=á=áHáYájá�á…áŽá’á—á¨áÅáÅáÓáçáìáâââ,â,â,â1â@âBâaâaâ€â‹â‘â§â¸â½âÒâÝâîâÿâãã#ã'ã,ã=ãVãVãdãxãzã“ã¤ã¨ã¨ã¯ãÂãÆãØãÝãèãùã
ä!ä)ä2ä6ä;äLäbärä†ä‹ä¤ä·ä»äÍäÍäÍäÍäåäÒäñäåå!å,å2åHåYåYåYå`åsåŒåŒåŒå›å›å®åÅåÐåáåæåìåöåøåææ ææ+æ-æ8æMæYæ[æfæræ‚æ‰æ�æšæ¢æ¦æªæ¬æ±æ¹æ½æÏæÑæÖæÞæâæäæäæíæúæç0çJçVçbçiçiç|ç€ç€ç€ç‡çŒç¦ç²ç¾çÅçÅçÜçÞçãçýç èèèè)è3è3èEèCÐs£–¸–¸À¸øʸиÖ¸ظÞ¸ä¸ä¸ö¸¹¹¹"¹5¹D¹X¹^¹`¹g¹m¹w¹w¹ˆ¹й‘¹—¹¡¹¡¹¡¹¸¹ʹѹà¹â¹ô¹ºººD|£¾ºº@ºCºJºPºVºXº^ºdºkºxº…º˜º¥º´ººº¼ºº̺Ûºíºüº»,»E@myféfé€éŒéžé´éÕéÂéíéêêêFˆñ½½&½8½?½F½e½j½‰½޽¨½•½ǽ´½Ó½è½Õ½¾ô½¾¾%¾,¾K¾K¾S¾GM�~Ë~˖˨˳ËÛ˺ËçËÌ2ÌÌ>ÌXÌXÌwÌŒÌy̹̘ÌÅÌßÌßÌñÌ Í Í8ÍEÍ~̓͊͸ͩÍÄÍâÍîÍ Î␍Î;Î,ÎGÎeÎzÎgΆδΥÎÀÎÚÎÚÎìÎÏ!Ï.ÏMÏMÏUÏHX[mFèFè`èlè~è”èµè¢èÍèÞèðèé'éé?éWéWéaéI,^%NÁNÁtÁ‡Á�Á–Á�Á£Á¥Á¬Á³Á¶Á¶ÁÈÁÈÁÛÁæÁñÁÂÂ*Â2Â;ÂCÂHÂYÂo‘–°ÂÈÂÌÂÌÂÑÂýÂÃÃ.Ã?ÃVÃ^ÃgÃoÃtÅ×çùûÃÕÃíÃñÃñÃüÃ␍ÄÄ5Ä=ÄFÄNÄSÄdÄzĊĜġĻÄÓÄ×ÄêÄêÄêÄÅïÄ"ÅÅ/Å;ÅAÅYÅqÅvŋŖŧŸÅÏÅ×ÅàÅèÅíÅþÅÆ Æ2Æ4ÆNÆfÆjÆjÆuƆƗƮƶƿÆÇÆÌÆÝÆóÆÇÇÇ4ÇLÇPÇcÇcÇcÇ{ÇhǛLjǨǴǺÇÒÇêÇêÇêÇöÇüÇÈÈ$È4ÈKÈbÈyÈ�È�ȤÈÀÈÀÈÀÈáÈáÈïÈñÈñÈÿÈÿÈÉÉ!É<ÉKÉRÉbÉdÉ�ɉɦɷÉÒÉÒÉëÉJ EVÏVÏtÏ{Ï‚Ï�ϕϮϮÏÂÏÛÏÛÏæÏêÏõÏÐüÏ)Ð?ÐMÐcÐgÐlÐ~Ð�ЦнÐÂÐÊÐÎÐÓÐúÐÑÑÑ$ÑaÑ@ÑmъъѩѴѺÑÐÑáÑæÑøÑ Ò Ò7Ò<ÒDÒHÒJÒqÒ‡Ò‹Ò–Ò§Ò¸ÒÏÒ×ÒÜÒàÒåÒöÒ ÓÓ.Ó3ÓLÓ]ÓaÓsÓsÓsÓsÓxÓ§Ó”ÓÔÓ³ÓàÓýÓÔÔ$Ô5Ô:ÔEÔVÔgÔ~Ô†Ô‹Ô�Ô”Ô¥Ô·ÔÅÔÙÔÛÔôÔÕ Õ Õ ÕÕ,ÕCÕZÕ_ÕgÕkÕmÕ”ÕªÕ®Õ»Õ»Õ»Õ»ÕÎÕÔÕÞÕåÕøÕÖÖ+Ö+Ö9Ö;Ö;ÖIÖIÖ_ÖoÖ}Ö”Ö§Ö¬ÖÈÖÐÖìÖüÖ××/×'×T×}×}×}׊×Ã×È×Ó×Ù×äרØ
Ø&Ø<ØJØbØxØ|،ثØרÇØãØÙÙ Ù*Ù0ÙFÙWÙ\Ùrوٌٗ٨ٹÙÐÙØÙÝÙáÙæÙ÷Ù␍ÚÚ/Ú4ÚMÚ^ÚbÚtÚtÚtÚtÚyÚ¨Ú•Ú´ÚãÚÓÚïÚ ÛÛÛ3ÛDÛIÛTÛeÛvÛ�Û•ÛšÛžÛ£Û´ÛÆÛÔÛèÛêÛÜÜÜÜ7ÜMÜcÜgÜtÜtÜt܇Ü�ܗܞܱÜÈÜÈÜÈÜäÜäÜòÜôÜôÜÝÝÝ(Ý6ÝQÝdÝiÝ…Ý�ݩݹÝÇÝäÝÞÞ␍Þ-Þ-Þ-ÞMÞK€ÌèNîNîhî�îsîœî©î¼îÕîÎîíîïòîïï$ï1ïDï]ïVïiïiïvï•ï•ïŸïLL^V¾V¾z¾’¾­¾™¾;¹¾Ù¾ï¾Û¾¿û¾¿'¿,¿8¿H¿O¿\¿g¿s¿~¿†¿‹¿—¿œ¿°¿·¿»¿Æ¿Ë¿Ö¿ï¿ø¿À ÀÀ$À(À(À-ÀFÀKÀdÀyÀ‹À�À›À£À£À£À¥À¾ÀÓÀÞÀèÀóÀõÀÁÁÁÁ␍Á-ÁMÁMhÌ>í>íXí|í_íˆí¡íší¹íÎí»íáíÚíííîÿíîî î>î>îHîNlŸìì4ì@ìWìhìoìˆì€ì ìÀì¬ìÌìÝìóìßì ííí0í0í:íOLè÷¦ï¦ïÄïÖïÝïüïüïð!ð.ð'ðFðPðPܾñ.».»P»W»b»x»x»Š»•» »±»»Ù»Ý»â»æ»è»ù» ¼¼)¼+¼D¼S¼W¼W¼W¼j¼¼¼‹¼‘¼›¼¦¼´¼»¼ʼ̼â¼ü¼ü¼½Q�#CŽ7Ž7¬7´7À7Ö7ë7ù7888888#818<8R8T8Y8g8r88†8”8R8;EF�F�O�[�z������†�S˜n�~±~±°±Ó±Ó±æ±ê± ²²"²"²/²7²?²T²`²q²v²‡²›² ²¢²»²Ó²Õ²Õ²î²³³(³T<Œ—–a–aŸaªaµaÀaËaÕaóaþabU0ð8NPNPjPpP{PŒP‘P—PšPžPžP¾PÃPùPåPQQ
Q*QCQ/QOQVQ[QeQhQlQqQŠQvQ–Q–Q–Q›Q¬Q±Q·QºQ¾Q¾QÞQãQRR%R>R*RJR`RLRlRsRxR~R�R…R‡R RŒR¬R¬R¬R¬RÄRíRùRV\æùfft{š¹»Úù    ' 2 Q W W¸?iNSNSfSqS”S¬S±S¶SºS¼SÂSÈSÞSËSêSêS T!TT-TPThTmTrTvTxT~T„TšT‡T¦T¦T¹TÁTÓTíTæTùTUXxŒæ. . F N [ { � ” ž ¤ ª ® ² Ô Ô Û Þ ã ò ö ¡#¡'¡,¡,¡3¡6¡;¡G¡U¡Y¡j¡y¡}¡¡Ž¡’¡’¡¤¡´¡¸¡½¡½¡Ñ¡Ô¡à¡ê¡ñ¡¢"¢&¢+¢a¢x¢ƒ¢‡¢˜¢£¢§¢©¢´¢¸¢¸¢¸¢Æ¢Ò¢Ö¢Ø¢Ø¢ã¢ç¢õ¢££££ £,£Yàæ.£.£B£X£X£X£Z£Z£a£c£c£j£l£l£y£{£{£ˆ£�£‘£‘£ž£¥£§£§£¿£Ä£Ä£Ä£Ô£Zàºn†©†©¼©Å©Ó©õ©õ©ªª1ª9ªfªkª”ª±ªͪÓªתúª «%«N«h«Ž«¥«««¯«È«ЫÕ«æ«î«␍¬¬¬0¬8¬W¬\¬m¬u¬”¬™¬¡¬§¬«¬¯¬Á¬ɬÕ¬é¬î¬­­­­.­;­O­Z­c­‡­»­ä­é­é­é­ù­®®®=®=®T®Y®Y®p®r®r®†®ˆ®ˆ®Ÿ®¡®¡®¸®º®º®Ñ®Ñ®â®ç®ç®÷®¯.¯3¯3¯3¯3¯:¯n¯¯�¯�¯�¯ª¯Á¯ïïïЯç¯é¯é¯ö¯␍°␍°"°$°=°[°[°[°_°a°a°a°f°h°h°m°m°w°|°|°š°š°š°¢°¤°¤°¤°¬°®°®°¶°¶°¸°¿°Û°ݰð°±±±±±±/±7±7±z±[ô!ZÎýÎýìýïýþþþþþþ$þ(þ:þlþsþžþ£þÄþÄþÐþØþçþ!ÿ&ÿSÿ[ÿ`ÿiÿtÿ|ÿƒÿ¢ÿ¨ÿÇÿÉÿèÿóÿ
)/66<?CTt†\Z�††ž¥·êõ00<DS��¼ÄÄñö06EZ\goŠ�˜£«½ê  *Wf_Œ‘˜·ÖØ÷19TTT€€Œ]`
þþ:Vcz�˜š¹ÁÌߨ÷ý^,#^œ^œmœ€œ˜œ˜œžœ_lºÑ†X†XœX¨X¾XËXÏXÞXýXYY&YY7Y9Y9YjYXY9Y‰Y“Y`�;[NNdjq}�­²¹ÙÛû7<CCCILPXp{†¦°a|i„ΦΦ§§ § §>§K§M§M§M§M§Z§b§u§‰§‹§‹§“§¦§¦§¸§bD„‘¾§¾§̧×§Þ§ý§
¨
¨␍¨¨¨c°Ãë^(^(v(�(Œ(º(™(Ò(Ù( )ì(à(2)7)b)g)s)š)Ÿ)¡)À)Æ)â)Ó)ú)*"***6*8*Q*Q*Q*]*d ŸÃ~&~&–&¡&¬&æ&Æ&º& ''9'9'F''„'�'›'�'¼'Â'É'ê'Ü'Ð'þ'(((&(M(M(M(Y(eŒ\{î#î#$$$ $*$9$9$M$Z$e$j$Š$™$¡$¬$´$¿$Ê$Õ$à$ë$ö$ö$%%%f¨6\¥¥>¥`¥`¥¥�¥”¥”¥£¥µ¥Ï¥×¥Þ¥à¥ó¥û¥û¥û¥ý¥ý¥ý¥ý¥¦¦¦¦-¦/¦/¦/¦/¦B¦M¦p¦gD\iv¦v¦„¦Œ¦“¦²¦¿¦¿¦¦Ħʦhv¨,¨,¸,½,æ,Õ,Ñ,ö,-␍---4-;-R-Y-b-y-y-�-�-¥-¥-»-»-Ñ-Ñ-ç-ç-ý-ý-..).).@.@.W.W.n.n.….….œ.œ.³.³.Ê.Ê.â.ê.õ.//"/%/'/>/E/E/Z0iH€Ž†L†LšL¦L¼L¨LÈLÊLÜLîLöLj´Ž·öLöL MM$M)M>M+MJMPMPM\MtMaM€MƒM…M“M˜M­MšM¹M¼M¼MÈMÝMÊMéMïMïMNN(N;NNNXNk´·à^N^NtN{NŒN‘N¦N“N²N¸N¸NÄNÜNÉNèNëNíNûNOOO!O$O$O0OEO2OQOWOWOjO}O�O£O¶OÀOlPàðÆOÆOÚOæOüOèOP
PP0P;PFPNPm(.œ.œ=œUœUœ[œn”ƒ¤ÖÖ %37@@ERh’—»ÃÈÏåûý)Mgyo¤ç~~°ÄÌ×Þåîðó46=X_hjmŒŒŒš¤±ÑÓíõõ05<RYtv}˜®ÅÈÐÝýÿ!!=TTzŒp€6Ö£Ö£ú£¤¤.¤L¤W¤u¤u¤u¤‚¤š¤œ¤œ¤œ¤©¤Á¤ääѤÞ¤ö¤ö¤¥¥q,8?þRþR%SS1S@SHSrHÓ!ÖùÖùþù úúúú4úKúbú¢ú¾úØúÝúâúíúûû#û6ûLû`ûeûpû�û•û˜û²ûÌûÔûÜûáûûûüü%ü*üDüLüQüqüvüyü“ü­üµü½ü¿üÙüóüûüýý ý'ý'ý,ý1ý<ý<ýGýGýSýSýeý¥ý»ý»ýËýsøi£UUU(U3U8UDUOUTU[U`UkUpUpU�U®U°UµUÀUÅUÅUäUV*V*V=VPVcVvV{V{VŽV¡V´VÇVÌVÌVßVòVWWWW-W@WSWfWfWfWtWt èŒžZžZ¼ZàZæZíZíZôZ[[/[G[3[S[b[t[}[…[�[§[¹[Â[Ê[Ò[ë[×[÷[ \\\ \;\'\[\G\g\}\i\�\‰\©\»\Å\Í\Í\Ö\Þ\ô\␍] ].]2]2]9]>]\]^]c]n]„]„]„]ˆ]”]µ]Ã]Ñ]Þ]ÿ]␍^^^^6^E^T^W^{^^¥^©^Ð^Ô^÷^û^û^û^___2_8_C_O_Q_Y___x_ƒ_‘_›_´_·_¿_Ë_Í_Õ_Ø_ñ_ó_ÿ_` ``(`@`L`a`f`x`‡` `±`±`¼`Ç`ß`ë`aaa&a?aPaPaVaaaiawa~a�au8š¤v¨v¨Ѝ�¨•¨™¨�¨¼¨ĨvÐó#ž5ž5À5Ö5â566)6@6S6^6`6€6ˆ6ˆ6—6—6Ÿ6«6Á6Ö6å6ð67 7 7 777"7-7D7F7K7Z7e7r7|7|7Š7wL�Ÿ&&&&&1&G&3&S&U&\&g&s&{&x$‹�Æ%Æ%Ú%û%&y$†‹†%†%š%»%Ã%z<{†%%7%$%C%N%Y%d%o%{%�%{(#)žœžœ­œ¼œÁœÇœ|()/ΜΜÛœéœîœôœ}(/5öœöœ����~(5;��,�;�@�F�$œœœ(œ.œ€4
ŽŽµ¢Á×Ðï÷�lÑè–Y–Y¬Y¸YÎYÛYßYîYZ ZZ0Z$ZAZCZCZtZbZCZ“Z�Z‚”[|ÊÑã.0Oa€†��•�¨³»ÃÎÙä ƒ4‘š¨¨$¨*¨.¨M¨n¨n¨t¨„(+1È(È(Ñ(Û(õ(ø(…,H88Vfppzz„–£¦¨±¾¾Øßßù$3BXXXhhzzˆ–¬¬å 4 4 B P c c – É Ï Ï Ï á †ÜH»è è 


!
2
5
8
8
=
B
K
V
\
k
~
ƒ
�
�
Á
Ì
õ
' - 2 = [ b g { µ º À Æ Í Ò Ò Ø Þ ã ã û ! ' , J Q Q Q V Y _ e l q q w } ‚ ‚ ˜ ² À Õ Û ë ÷ ý ␍␍␍.␍5␍5␍5␍5␍5␍5␍;␍@␍D␍F␍I␍T␍`␍c␍e␍i␍i␍n␍n␍␍‘␍Š$‚‡ðð$ð9ð?ð‹`Üð°1°1Ð1ß1è1ñ1õ1ù122 2 22!2(2@2C2O2ŒTØ2Ø2æ2ó2333,393G3Y3d3r3x3~3�x»77-797C7I7S7Y7c7q7{7�7—7�7§7­7·7¾7Ê7Ð7Ù78888"87878:8D8Y8^8n8y8~8’8¥8¯8Ä8Ë8Ù8â8ê8ø8 99*97979D9D9L9“9޼?jø4ø4555"5/525L5L5L5R5V5^5i5}5‰5‹5‹5”5–5–5Ÿ5¡5¡5ª5¬5¬5µ5µ5¾5Ä5Ç5Ñ5â5è5ô5ô5\6�h)?0404@4G4S4Y4a4o4‚4Ž4¥4²4²4µ4Ã4Ó4ê4î4ö4�@)Ø3Ø3ì3ó3ÿ3 44 4#4'4/4‘Hjx`6`6u6|6�6�6¤6ª6¶6Ç6Ç6Î67’0ÔÜp1p1~1ˆ1“1ž1¤1ª1“4€3€3”3 3®3²3Ê3Í3Õ3”$þ¸2¸2Á2Í2Ò2•,÷þˆ2ˆ2–2�2­2°2¶2–,ð÷P2P2^2j2z2�2‡2—8ÊÔ8181F1M1W1d1g1i1o1˜h æühVhV…V”V”V”V®V®V½V½VÃVÅVÅVËVÍVÍVÓVÕVÕVÜVàVåVåVåVåVåVåVíVWW WWW$W1WFWHWcWeW€W…W W¥W«W«WÀWÃWêW÷W XX/X/X8X=X[XIXaXpXuX|X…X˜X X¨X­X­X­X¶XÏXÕXÕXîXüXY,Y.Y6Y<YDYIYIYOYOYXYiYkY€Y‚YŠY�Y˜Y�Y�Y£Y£Y¬Y»YÏYÑYÙYßYçYìYìYìYìYúYZZ$Z$Z,Z2Z:Z?ZHZPZYZ_ZeZgZgZgZoZoZ}Z‘Z•Z—Z£Z¥ZÀZÆZÎZÓZÜZçZêZðZöZÿZ[[[[ [C[`[f[n[s[|[~[~[ƒ[…[�[�[¨[º[¿[Ë[Ñ[Ô[ë[í[ð[\\ \\#\1\7\?\D\L\Q\Q\Z\g\l\t\‹\•\½\½\Ã\È\È\Î\Ó\Ó\Ù\Þ\Þ\ä\é\é\ï\ô\ô\ú\ÿ\ÿ\]
]
]
]]]+]9]S]i]i]k]k]t]z]]]]‡]‡]�]Ÿ]²]´]´]½]Ã]È]È]È]Ð]Ò]Ò]Û]Û]Û]ä]ó]^ ^ ^^^^^ ^&^&^.^7^=^I^I^P^d^f^i^n^v^~^ƒ^ƒ^‰^�^’^¡^¦^°^º^º^Ç^î^î^ô^__ _&_4_C_[_a_f_f_k_~_Š_’_¢_ª_³_Á_È_Ê_Ó_Ó_Ù_ç_ó_``-`3`5`H`M`M`j`j`|`‚`‹`‘`š`¨`­`­`À`Æ`È`Ó`å`ø`ø` aa*a/a;aAaDa[a]a`apaza}a}aŒaŸa±a¶aÂaÈaËaâaäaça÷aûabbbbb!b)b.b.b4b4bBbHbNbXbbb…bˆbŠb”b”b–bžb£b¨b­b­b³b»bÀbÀbÅbÐbÕbÚbåbêbcccc!c&c+c0c5c5c:c?c[c�c“c›c›c©c¯cµc¿cÉcìcïcñcûc
dddddd%d%d*d*d0d8d=d=dBdMdRdWd\dkdkd|d‚d‚d�d–dœd¦d°dÓdÖdØdâdñdödödödþde eeee e$e$e)e4e9e>eCeReReceieiewe}eƒe�e—eºe½e¿eÉeØeÝeÝeÝeåeêeóeøeøeþef f ffff,f2f8fBfLfofrftf~f�f’f’f’fšfŸf¨f­f­f³f»fÀfÀfÍfÓfÓfáfçfíf÷fg$g'g)g3gBgGgGgGgOgTg]gbgbglgtgygygygg‰g�g£g¨g¨g®g¸g¾gÃgÃgÉg×gàgègðgõgõgûg hh&h3h:hBhJhXhXh]h]hhhhhhhlhqhqhwh{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úhúhúhii"i(i0i5i:iCiNiWi_idididijiriwiwi{i€i€i‰i—i£i°i¶i¶i¿iÓiÓiÙiâiöiöiÿijjj$j$j-j-j-j2j7j7j?jDjDjajoj{j„jŠj”jœj¡j¡j¡jµj¾jÄjÖjàjàjèjèjðjòjòj kkk k k k&k*k,k,k,k,k1k7k=kAkÎn™Äz§ðJðJK'K,K3KBKBKJK]KaKfK{K}K€K„K‹KŸK£K¯K¶KºKÁKÉKËKÓKàKîKöKøKûK LL#L+L3LALELSLš<„�Œ?Œ?š?¡?¬?´?»?Á?Ç?Ç?Í?›hCY== ='=3=:=F=N=W=[=i=r=€=Œ=•=ž=§=­=µ=œTizhJhJ~JŠJ’J–J©J·J½JÉJÑJÜJâJåJïJ�H��Ô?Ô?î?õ?þ?
@ @'@-@3@5@5@D@žPO_èqèqöqrrr'r,rIrOrVr]rkrwr©rŸ<‡’FðFðVðgðpðvðzð…ð Xp‚~ï~ï”ï¢ï¨ï®ï¿ïÍïÛïíïñï÷ïððð¡tüÐnÐnînònönþno ooo!o%o-o6oBoWohooovovo€oƒo•o¢¸�GD@D@Z@f@f@|@ƒ@…@¡@¡@¡@¨@²@¶@º@½@½@Æ@Ê@à@à@A"A3ACAYA^AaAfAfAfA~A…A’A™A¬A´A¼AÁAÁAÙAåAíAòAòA
BB B$B$B<BHBQBYBaBmBƒBŽB±BµBÃBËBÐBÐBèBC CC C%C%CDCPCaCfC~CŠC™CžC­CºC¿C¿C¿CÂCÇCÇCÇCæCòCDDD␍D␍D␍DD)D0D?DHDPDWDcDlDtD|DƒD‡D’D�D£D±D¿D¿DÅDÍDæDëDëDþDEEEEE␍E␍EEEE%E)E<EDEDEDEDEDESESExE�E�E…E“I£˜„æ8S8S\S_ScSpSyS„S�S˜S¢SÊSÊSÖSØSØSäSéSéSõSúSúST T TTTT(T-T-T9T>T>T>T@T@TYTgT{T‹T‹T�T�T™TŸT¤T¤T¤T¦T¦T¯T¾TËTÍTÍTÙTßTäTäTäTæTèTèTïTïTïTøTUUUU#U)U.U.U4U@U@UKUWUdUyU�U‡U‡U˜U˜U¡U¤UbV¤XN`ÄIÄIåIìIûIþIJ
JJJJ,JBJIJUJ¥ˆ%CØ;Ø;ô;<␍<<!<0<F<l<‚<“<š<¨<º<Ð<Ð<â<÷<ÿ<==¦@³¿àLàLðL÷LM!M/M:MBMLMTM§@§³XLXLhLoLŽL£L©L¶LÀLÙL¨€1˜o˜o®o·oÂoÛoÛoÞoíoóoüoþop␍ppp p&p)p)p3p©H1?8p8pApGpbpgp’p”p±p×pÞpïpqªdm‚X>X>a>h>|>�>•>³>¸>Ö>Ø>ö>ø>?#?,?.?B?R?ƒ?«`Ym¸=¸=Ê=Ñ=Ó=ß=æ=õ=> >>>0><>F>I>S>¬,GN”I”I¢I«I¹I¿I­œ5*¯*¯L¯V¯b¯g¯w¯}¯’¯¦¯´¯¯Ù¯á¯ë¯ú¯°°°°°°°+°5°@°I°Q°T°f°®P?Oqqq'q3qNqSqsquq�q«q«q³qºqáq¯Ðø(�N�N°N´NõNO O#OBOPOPOUOYO`OkOvOƒOŒOŒO‘O–O�O¨OµO·OÄOÆOÈOÈOÈOÐOÐOÐOØOàOèOðOôOþOJP°`ÕéàMàMöMöMúMÿMNNNN$N*N*N;N=NGN±LéøHNHN\N`NeNpNpNzN€N€N„NŒN²€MiHQHQ\QkQoQxQ†Q•Q¤Q¿Q¿QRR RRR&R5RJRMRRR[RgR³¤(MPPPPdPhPqPtP}P†P˜P˜PÁPÅPÊPÍPÖPæPíPðPøPûPQQQ Q'Q7Q7QCQ´,NUöñöñòòòò òµ|i„hRhRzR|R€R‰R•R¡R¶R¶RâRæRëR÷R
SSS"S%S-S7S<¿ÊXMXMlMpMuMMŠM�M‘M™M·<ÊÕ M M´M¸M½MÇMÑMÔMØMàM¸$ (*(2(7(¹,!8(F(W(h(k(q(º`jþF»F»`»i»‰»‰»�»—»Ÿ»§»¯»µ»Â»Â»È»Í»Í»Ó»Ø»Ø»Þ»ã»ã»é»î»î»ô»ù»ù»ÿ»¼¼
¼¼¼¼¼¼ ¼%¼%¼=¼P¼V¼[¼[¼d¼ˆ¼ˆ¼ˆ¼�¼‘¼‘¼˜¼š¼š¼¡¼£¼£¼ª¼¬¼¬¼³¼µ¼µ¼¼¼Â¼Ä¼Ä¼Ë¼Ñ¼Ó¼Ó¼Ú¼à¼à¼è¼î¼ô¼ü¼ü¼ü¼ü¼½½½ ½(½0½8½>½V½e½o½r½r½|½‚½ˆ½ˆ½Œ½”½›½£½«½¯½µ½½½Ä½Ì½Ô½Ø½Þ½é½ï½ü½¾¾¾¾!¾)¾1¾5¾;¾C¾J¾R¾Z¾^¾d¾o¾t¾Š¾›¾ ¾£¾I¿»dÕj>·>·X·a·�·�·‡·�·—·Ÿ·§·­·º·º·À·Å·Å·Ë·Ð·Ð·Ö·Û·Û·á·æ·æ·ì·ñ·ñ·÷·ü·ü·¸¸¸␍¸¸¸¸¸¸5¸H¸N¸S¸S¸\¸€¸€¸€¸‡¸‰¸‰¸�¸’¸’¸™¸›¸›¸¢¸¤¸¤¸«¸­¸­¸´¸º¸¼¸¼¸Ã¸É¸Ë¸Ë¸Ò¸Ø¸Ø¸à¸æ¸ì¸ô¸ô¸ô¸ô¸¹¹¹¹ ¹(¹0¹6¹N¹]¹g¹j¹j¹t¹z¹€¹€¹„¹Œ¹“¹—¹Ÿ¹§¹­¹µ¹¼¹Ä¹Ì¹Ð¹Ö¹á¹ç¹ô¹ººººº!º)º-º3º;ºBºJºRºVº\ºgºlº‚º“º˜º›ºA»¼0 f²f²t²~²†²‹²‘²½$�'Ÿ'¸'¾'¾pþN¿N¿b¿x¿…¿�¿”¿›¿¢¿«¿º¿¼¿¼¿Ð¿Ò¿Û¿á¿á¿á¿á¿é¿¿`¢N´N´l´p´}´´Œ´Ž´š´š´§´©´¶´¸´Ä´Ä´Ú´ã´ã´î´õ´µµµµµ(µ/µ>µIµOµTµVµbµbµiµµ‹µ‘µ—µ�µ¡µ¡µÎµÕµëµ÷µýµ ÀP¢²4¶7¶:¶G¶M¶MZ¶]¶`¶f¶h¶r¶Á”²Óv¶v¶’¶ž¶¢¶¦¶­¶´¶Ã¶Î¶Ô¶Ù¶Û¶ç¶î¶ö¶ü¶·····$·*·0·2·2·>·Â,!(³³ ³-³3³5³:³Ã¸«¾z¾zØzçzçzêzózÿzÿz { {A{S{e{i{y{™{«{±{Ä{Í{Ñ{×{à{à{|||"|@|R|X|k|}|‰|‹|—|Ÿ|£|©|²|²|²|²|Ä|Ú|à|ì|}}}}1}8}8}8}F}T}^}a}o}y}|}Ž}“}˜}¨}«}°}À}Ã}Ç}Ð}Ø}ê}ò}û}~~#~8~?~G~Y~_~n~~~†~†~†~”~¢~¬~¯~½~Ç~Ê~Ü~á~æ~ö~ù~þ~&8@IITkƒ‡“«³¹ÅÎÒÚãããü€
€!€*€2€8€>€>€>€E€W€c€k€q€w€w€y€‹€Ä|Ö“Ö“ä“ù“” ”-”a”}”�”£”©”µ”¾”Æ”ΔД֔ܔè”ð”ö”ø”þ”Å0 >²>²L²S²[²`²f²Æ<(3>³>³G³G³U³Y³`³c³h³Ç<3>n³n³w³w³…³‰³—³š³Ÿ³È<>I¦³¦³¯³¯³½³Á³È³Ë³Ð³É8ISֳֳ߳߳â³ð³þ³´´Ê AEþÀþÀ ÁÁË$ Ø'á'é'î'Ì$ À'É'Ñ'Ö'ÍT)Ž<Ž<«<³<Å<á<ì<þ<===&=)=7=V=V=k=m=m=y=�=…=’=’=ž=¦=ª=·=·=·=Ä=Ê=Û=Û=à=ø=> >>>">">'>?>N>S>Y>d>i>i>w>€>Œ>”>œ>¤>§>­>²>»>Í>Ö>ç>÷>÷>ü>? ??????? ?#?*?5?o?†?“?›?£?¯?»?Á?È?Ñ?Õ?Ø?ä?ê?ñ?ö?ö?@@@!@!@)@1@:@I@N@N@U@`@f@n@t@@„@„@“@ž@°@¶@¾@Ä@É@Ô@æ@ì@ô@ú@ÿ@ÿ@AA$A*A,A<ABABAdA‹A�A�A¤AªAÀAÑA×AÜAõAûA BBB!B&B&B:B@BVBgBmBrB‹B‘B¡B©B±B·B¼B¼BÒBØBîBÿBC
CC C0C8C@CFCMCRCRChCnC„C•C›C�C¬C²C¼CÄCÌCÒCÙCÙCÙCëCôCDDDDD(D0DADTD[DaDiDoDD…D�D“D“D“D˜D˜D˜D˜D˜D·DÃDÈDÈDÞDçDòDûDEEEE,E2EHEYE_EdEvE|E�EšE¸E¸E½E½EÉEÑEÔEÚEàEåEåE FFF)F/F5F5FFFdFdFiFiFuF}F€F‡F�F’F’F²FºFÊFÐF×FõFG G$G,G/G6G<GTG\GtG|GG†GŒGŒGŒG«G»GÇGÏGÒGÙGßGïGþG
H%H-H0H7H=HUHaH|H„H‡HŽH”H”H”H”H™H™H²HÈHÎHæHùHÿHIII!I=ICIOIWIZIaIgI�I˜I¨I®IµIµIµIºIºIÛIñI÷IJ"J(J-JXJ^JqJºJÖJÞJäJéJéJKKK&K&K+K+KEKQK]KhKhKmKmK‡K“KŸKªKªK¯K¯KÅKËK×KÝKâKôKúKÿKLL&L,L2L9LLLWL`LlLtLwL}LƒLˆLœL«L³LËLÓLÖLÜLâLúLM"M<MDMGMMMSMSMdMmMyM�M„M‹M‘M–M¨M·M¿M×MßMâMéMïMNN.NHNPNSNZN`N`NpNyN…N�N�N–NœN¡NµNÄNÌNæNîNñN÷NýNOO?O[OcOfOlOrOrOƒOŒO˜O O£OªO°OµOÇOÖOÞOùOPP PP)P1PSPpPxP{P‚PˆPˆPˆPˆPˆP�P�P£P©PµP»PÀPÒPØPÝPëP÷PQ QQQQ$Q)Q;QJQRQjQrQuQ|Q‚QšQ¢QÁQÛQãQæQíQóQóQóQR␍RR!R$R+R1R6RHRWRcR~R†R‰R�R–R®RºRÜRùRSS SSSSSSSS)SDSJSUSZSZSmSƒS‰S”S–S–S©SÌSÒSÝSÝSïSøS TT T0T0T5T5THT^TdTrT�T†T†T™T¯TµTÃTÒT×T×TíTóTU(U*URUXU]UiUrU�U�U†U†UœU¢U¿U×UÙUVV VV!V0V0V5V5VKVQVnV†VˆV°V¶V»VÇVÐVßVßVäVäVúVWW5W7W_WeWgWsW|W‡W‡W‡W‡WŒWšW£W´W¶WÈWÕWÕWÕWåWõWúWX*X+X0XEXbXrX–X¦X¬X¬X¬X±X¶XËXÞXY,Y2Y4Y9YJYYY‹Y“Y™Y›Y Y§Y§Y°YÂYÕYÞYíYíYòY÷YZZZZ%Z0Z0ZQZXZ^ZfZqZwZ‡Z�Z•Z Z¦Z¦Z«Z°Z·Z¾ZÅZÌZÕZäZäZäZéZéZéZûZ[[[[%[-[3[3[3[8[8[C[T[W[c[l[x[[…[Š[Š[•[¦[©[µ[¾[Ê[Ñ[×[Ü[Ü[Ü[Ü[á[æ[æ[í[ñ[ñ[ý[\ \ \\\(\/\5\D\O\Z\`\i\m\m\y\‚\…\…\�\’\¤\«\±\¹\Ä\Ï\Õ\ß\â\æ\æ\î\õ\ø\ú\] ]]]] ]"]:]A]L]W]Z]`]e]e]l]p]p]|]…]ˆ]ˆ]“]•]§]®]´]Ã]Î]Ù]ß]è]ì]ì]ø]^^^^^#^*^0^8^C^N^T^^^a^e^e^m^t^w^y^„^ˆ^‘^”^”^Ÿ^¡^¹^À^Ë^Ö^Ù^ß^ä^ä^ö^ú^ú^_____ _1_8_>_P_[_f_l_q_q_|_�_�_Œ_‘_‘_‘_‘_‘_‘_‘_–_›_›_¦_©_­_´_¹_¾_Ã_Ã_×_Ü_Ü_é_í_þ_`
``%`)`)`6`B`J`P```d`u`‡`’`–`–`£`«`³`¹`¹`¹`¹`¹`»`»`É`Ð`Ý`é`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`÷`ù`ù`aa"a"a6aDa_aaamazaza’aŸaªa³a¼aÇaÎaÎaØaØaÛaía bbbZdÎt Z^d^d{dƒd†d”d¢d·dÀdØdîde ee e2e5e@eIeUehe™ete©e½eÎeÚeèeff<fMfOfVf‹f‹fŽf“f–f–f�f´f»fÈfÍfÜféfüfüfgg4g4gLgQgQgagigygƒg“g�g­g¹g¾g¾gÎgÖgægðgh
hh&h+h+h+h?hMhWh\hih~h~hƒh�hœh¡h§h¬h¬h±h»hÊhÏhÕhÚhÚhàhæhëhëhúh ii&i2iEiMiSi\isi‡i˜i¥iªiÂiÕiìiùijjj"j+j4j4j9j9j9j9j9jEjEjEjNjgj|j„jŸj°j½j¿jÓjØjØjØjãjñjöjöjýj kk(k4kFkRkXkgkkktk}kšk¦k¬k²kÅkÍkÕkll l"l0l0l5l5l<lJlOlblnlzl€l„l�l’l’l’l’l’lªl¯l¯l¯l¯l¯lÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÉlâl÷lÿlm+m8m:mNmZm_m_m_mhm‚mŽmµmÁmÁmÆmÆmÆmÆmÆmÆmÆmÆmÛmàmàmàmñmümnnn,n5nFnJnbnrnzn‚n·nÀnÄnÜnìnìnìnìnìnoGoPoToZo_ohoqovovovovo…o™o·oÂoÇoÍoÒoÒoåoùo p*p2p8p8p=p=pLp`p~p‰pŽp”p™p™p¬pÀpæpñpùpÿpÿpqqq q&q;qCq^qoq|q~q�q�q�q�q�q�q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q£q²qÁqÌqÎqÎq×qÙqÙqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqíqïqïqr rrrr1rarpr|r’r¬r¯r¹rÅrër s+sOsQsdsjs­s­s°sÀsÈsãsôs÷st t+tCtCtntqt€t”tµtÆtâtÎtþtu.uau_uIu:uouououruwuzu”u¢uÐuòuòuv v/vCvdvuv‘v}v­vËvþvüvæv×v w w wwwww+wLwXw·zÏð«ãހހ§€«€¶€½€È€Ü€Ü€ç€ø€ÿ€ ��%�-�>�>�G�L�T�h�v�…���£�£���Ì�ë�ë�ÿ�‚‚ ‚‚‚"‚*‚*‚4‚<‚<‚<‚M‚M‚M‚Q‚Y‚_‚d‚d‚h‚p‚t‚z‚‚‚‹‚ ‚°‚º‚͂҂ڂڂ߂߂æ‚ò‚ƒƒ!ƒ)ƒ/ƒBƒGƒOƒUƒUƒZƒaƒlƒ”ƒŸƒ®ƒ¸ƒÀƒƃ؃Þƒãƒãƒãƒãƒãƒãƒãƒãƒãƒîƒúƒ„„„%„8„=„E„J„R„W„W„W„_„g„p„x„}„…„Š„‘„œ„Ąτׄæ„ð„…… …………+…3…F…N…V…k…m…x…€…•…•…±…¹…À…Æ…Ê…Î…Ý…î…†††-†9†>†J†U†Z†Z†{†•†š†¢†±†¹†Á†Ö†Û†æ†î†‡‡‡*‡6‡>‡S‡_‡d‡p‡{‡€‡€‡€‡€‡€‡€‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡‹‡–‡¶‡Ó‡ã‡é‡ñ‡ˆ ˆˆˆˆ#ˆ6ˆ<ˆDˆLˆNˆnˆvˆˆ‡ˆ�ˆ”ˆ™ˆ ˆ«ˆÓˆÞˆæˆõˆÿˆ‰‰%‰*‰*‰*‰3‰<‰?‰I‰W‰i‰k‰}‰�‰�‰�‰š‰Ÿ‰¼‰Á‰Á‰ʉωωωωωωωωωωωωωωωωωωωωωωÚ‰æ‰ò‰Š%Š-ŠMŠRŠZŠaŠnŠvŠŠ‡ŠŽŠ“Š“Š›Š£Š¿ŠÇŠÊŠÌŠÜпппŠèŠûŠ ‹‹‹‹ ‹ ‹(‹-‹5‹<‹I‹b‹i‹n‹†‹�‹«‹Ä‹Ì‹Ù‹ò‹ù‹ù‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹þ‹ŒŒŒ+Œ0Œ0Œ8Œ@ŒMŒRŒRŒRŒVŒ[Œ[ŒkŒpŒpŒpŒ†Œ’Œ¤Œ·Œ½ŒÅŒÚŒáŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒéŒëŒëŒ� ��� �*�1�?�L�L�L�P�[�y�‡�“�Ðø{–�–�¬�·�¾�É�Ô�ë�ö�ý� � �&�&�5�O�V�_�f�i�u�~�…�ˆ���£�­�¿�Å�Ñ�æ�í�õ�‘‘‘‘‘+‘9‘C‘F‘T‘^‘a‘s‘x‘}‘�‘�‘•‘¥‘¨‘¬‘µ‘½‘Ï‘בבבí‘÷‘ ’’’0’7’?’Q’W’f’w’w’~’~’~’Œ’š’¤’§’µ’¿’Â’Ô’Ù’Þ’î’ñ’ö’“ “ “““0“8“8“D“R“R“U“`“~“Œ“Õ“Ñ´oØ&˜&˜@˜X˜_˜f˜q˜�˜¢˜¥˜®˜µ˜½˜Иá˜í˜Line truncated
d!d(d3dKdQdTdidndyd„džd¹dÍdîdþde eee'e-eNeReXe`eeemeŽe’e˜e e¥e¥e²e¸eÓe¿eßeãeéeñeöeff!f)f8fSf?f_fcfifqfvf—f›f¡f©f©f®f»fÁfâfæfìfôfüfg!g'g/g/g<gBgcgggmgug}gžg¢g¨g°g°g°gÅgÅgÅgÅgÐgÚgãghh h%h6hJhOhOhZhbhjhsh“h h¯h¾hØhÝhÝhèhðhýhii i:iLi^iiininiyi�i¤i°iÁiÆi×iëiëióiëi jjj j$j$j3j8j8jIjNjNj_jdjdjwj†j‹j‹jžj­j²j²jÔjÙjÙjûjkk"k'k'kIkNkNkkk’k—k—k¹k¾k¾kÛklll)l.l.lKlrlwlwl™lžlžl»lâlçlçl mmm)m.m.m.mImNmNmNmimnmnmnm‰mŽmŽm©m®m®m®mÉmÎmÎmÎmémîmîmîm nnn n$n$n5n:n:nFnQnfnknknwn�n•n¸n¿nÉnÎnßnénþn oo o*o2o7o7o;o?oFoPoZoZomorororovo�o˜o˜o»oÀoÀoÈoÜoåoÿo pp"p-p?pKpTpYpYpYpjp‡p’pœp§p¬p·p¿pÄpÄpÏp×pàpëpûpq+q?qDqDqOqbqlqwq˜q¤qµqºqËqÏqÔqÔqäqïq÷qüqrr r9rKr]rhrmrxr€r…r�r�r¨rÂrÔrærærærærërðrðrür␍s3sQsQs[sosys{s‡s�s¬s½sÇsÒsõst(t3tKt[t`t`tktptptxtƒtˆtˆt�t›t t t¨tÆt°tÞtãtãtët uót!u&u:u&uRuWuWuduiuiuquvuvu‚u“u¥uªuªu¾uªuÖuÛuÛuãuèuèuûuvvvvv2vBvGvGvavqvvvvv�v v¥v¥v¿vÏvÔvëvÔvwwwwwTwBwwlwqw­w›wqwÅwÊwÊwÙwéwîwîwýw␍xxx!x/x4x\xJx4xtxyx¡x�xyx¹x¾xæxÔx¾xþxyy y
yJyZy_y_yzyfy¤y´y¹y¹yÅyÊyÊyÖyÛyÛyîyþyzzz&z+z+z>zNzSzSzfzvz{z{zƒzˆzˆz�z•z•z�z¢z¢zªz¯z¯zÂzÇzÇzÚzßz-{{ {ßz:{?{�{{{i{?{š{Ÿ{Ÿ{®{É{Î{Î{ß{ú{ÿ{ÿ{||#|#|+|0|0|8|=|=|E|J|J|‚|p|Q|¡|¼|Á|Á|ù|ç|È|}3}8}j}X}8}‚}‡}¹}§}‡}Ñ}Ö}ð}Ö}~␍~*~␍~B~G~G~S~l~|~�~³~µ~Ë~Ñ~í~ú~+mJy����’’¥°º¿ÊÔÙÙóøø€€€€%€0€5€I€5€U€`€e€e€p€~€ƒ€ƒ€Ž€™€ž€ž€¯€´€´€Å€Ê€Ê€ä€ï€ô€ü€ô€�␍�!�␍�-�2�:�2�F�K�_�K�k�p�p�„�p�����•�¡�•�´�¹�¹�Å�¹�Ø�Ý�Ý�é�Ý�ü�‚‚␍‚‚ ‚%‚9‚%‚E‚Q‚\‚g‚l‚€‚l‚Œ‚˜‚£‚®‚³‚Ç‚³‚Ó‚ä‚é‚é‚ñ‚ö‚ö‚þ‚ƒƒ ƒƒƒƒ ƒ ƒ(ƒ-ƒ-ƒ8ƒ=ƒ=ƒHƒMƒMƒXƒ]ƒ]ƒhƒmƒmƒxƒ}ƒ}ƒˆƒ�ƒ�ƒ˜ƒ�ƒ±ƒ�ƒ½ƒȃÓƒÞƒãƒãƒíƒòƒòƒüƒ„„ „„„„ „ „'„,„,„9„>„>„K„P„P„P„P„P„X„]„]„e„j„j„r„w„w„„„„„„Œ„‘„¥„‘„±„„DŽDŽل䄅 … …*…C…/…O…Z…e…j…j…|…‡…§…¬…Â…Í…æ…Ò…ò…ý…†␍†␍† †*†J†O†e†p†‰†u†•† †«†°†°†Ö††â†‡‡‡(‡-‡H‡4‡h‡T‡t‡Їv‡ª‡–‡¶‡Á‡ƇƇì‡؇ø‡ˆˆ3ˆ>ˆCˆ^ˆJˆ~ˆjˆŠˆ ˆŒˆÀˆ¬ˆ̈׈܈܈‰îˆ‰.‰3‰I‰T‰Y‰t‰`‰”‰€‰ ‰¶‰¢‰Ö‰‰â‰í‰ò‰ò‰ŠŠŠŠŠŠŠ Š%Š%Š%Š/Š1Š1Š;ŠHŠhŠjŠjŠtŠtŠtŠtŠtŠtŠtŠvŠvŠ�Š“ŠžŠžŠ«Š±Š¸ŠÊΊÙŠäŠéŠ‹
‹*‹2‹[‹S‹s‹s‹s‹{‹„‹Š‹•‹•‹£‹¶‹¶‹΋؋싌ŒŒ'Œ7ŒLŒ^ŒnŒnŒ–Œ�ŒŸŒ¥Œ«Œ«ŒºŒÌŒÐŒÕŒÜŒìŒ � ��&�-�2�2�6�A�M�[�ˆ�‘�¢�°�ã�ï�ô�
Ž"Ž.Ž?ŽDŽUŽtŽ¢ŽÈŽËŽÛŽÝŽÝŽáŽ� � ���J�j�j�j�¤‘Ô0–²–²Ÿ²¥²­²¼²Ë²Ð²Õ0!Ö²Ö²ä²ê²î²ý² ³³Ö,ÁÁ'Á1ÁAÁLÁLÁjÁר4ffÂfÂ|ƒ†ªªÂÇÂÚÂíÂÃÃÃ#Ã1ÃDÃWÃ_Ã_ÃaÃaÃaÃtÃvÃvÃvÃ}Ã�ãããõÃÁÃÔÃêÃïÃöÃýÃÄ%Ä,Ä,Ä/ÄTÄØ¤Y~~ü~ü˜üžü¥ü­üµü¸üÃü×üÞüáüãüìüýüýüýýý!ý/ý2ý5ý<ý@ýHýVýhýnývý«ýÙH®<ˆˆ ˆJˆRˆRˆ`ˆsˆŒˆ�ˆ«ˆ«ˆ«ˆ³ˆµˆµˆ½ˆ¿ˆ¿ˆÇˆÉˆÉˆÑˆÑˆÚˆàˆåˆåˆîˆúˆþˆ‰ ‰‰‰‰ ‰%‰*‰*‰/‰;‰S‰r‰u‰Š‰©‰©‰©‰±‰³‰³‰³‰»‰½‰½‰½‰Å‰Ç‰Ç‰Ç‰Ï‰Ñ‰Ñ‰Ü‰Ü‰â‰ç‰î‰ù‰ Š Š Š ŠŠŠ+Š+Š6Š:Š@ŠXŠfŠyЅТХЬоЯŠÏŠÚŠÚŠåŠëŠðŠ÷Š‹‹‹‹%‹+‹@‹H‹N‹p‹|‹‚‹‡‹Ž‹™‹™‹ž‹°‹¶‹¸‹¸‹¿‹Ê‹Õ‹Õ‹Õ‹Õ‹,ŒÚ8Ë~©~©˜©Ÿ©¬©·©¼©Â©Ô©Ú©ò©ø©ª*ª5ª;ª]ª]ªmª‚ª„ª‡ª“ª›ª£ª«ª¹ª¿ªÅªÑªÑªÓªåªëªðªðª««%«%«8«E«J«J«a«j«…«•«£«®«¾«Ë«Ø«â«î«û«ý«ý«¬
¬
¬¬¬¬ ¬$¬$¬,¬1¬1¬7¬<¬<¬C¬H¬H¬O¬T¬T¬_¬d¬d¬o¬t¬t¬¬„¬„¬�¬�¬¤¬«¬±¬´¬»¬¾¬É¬Ð¬Ó¬å¬ç¬í¬ø¬ø¬ø¬­­/­?­P­V­g­m­r­|­�­ž­­­³­Ä­Ï­Ù­è­õ­û­® ®!®'®8®C®I®Y®Y®i®|®ˆ®�® ®§®­®¾®É®Î®ë®¯¯¯*¯<¯G¯V¯X¯j¯r¯w¯~¯‚¯�¯š¯ ¯¨¯®¯¹¯¿¯Á¯Î¯Û¯å¯
°
°°>²Û4¨ñ¦¦8¦<¦T¦\¦d¦n¦r¦y¦¦“¦›¦ ¦£¦®¦¹¦Á¦Ì¦×¦Ù¦ñ¦ø¦ÿ¦
§§§"§-§/§;§D§D§Z§{§�§‡§˜§ž§§§¹§¿§¿§Ç§Ë§Ö§Û§í§ø§ü§
¨ ¨¨ ¨ ¨ ¨0¨0¨5¨G¨M¨»¨Ü˜Œ®ІІކð†ô†ü†‡‡‡"‡-‡8‡=‡U‡\‡c‡n‡y‡{‡†‡‘‡“‡Ÿ‡ª‡µ‡¾‡Æ‡Æ‡Ê‡ˆÝp¨&•&•C•J•R•]•u•••—•¡•¼•Ò•à•ä•–– –"–;–E–V–X–i–i–p–w–€–…–Š–‘–˜–²–¹–É–Í–Í–×–í–ñ–ñ–——+—+—2—=—D—M—X—_—h—s—z—z—…—£—§—°—Ú—Ú—à—ç—ö—þ— ˜˜˜˜+˜+˜+˜=˜E˜k˜y˜y˜}˜’˜š˜ª˜µ˜Ê˜Ï˜Ý˜ì˜ô˜™␍™™™™"™1™3™B™D™S™U™d™k™q™…™�™›™¢™¦™¶™Á™Æ™ä™ì™ú™šš␍šš"š&šBšJšUš[š[š[šdšošš¡š©š´šÃšËšÖšÛšãšîšúšþš ›› ›(›3›3›3›3›A›P›m›y›�›‘›¡›¿›Ã›ò›Ø›œœ œœ"œ1œ9œGœNœRœTœcœkœyœ€œ„œ„œ†œ˜œ˜œªœªœªœ°œ¼œÎœÖœîœ�(�,�J�Q�X�c�y�{�‚�•���«�²��¸�Ë�Ó�á�è�ì�ì�ì�ì�ú�žžž*ž5ž9ž9ž>žFžJžYž[žjžlž{ž}žŒž“ž™ž­žµžÃžÊžÎžÞžéžîž ŸŸ"Ÿ)Ÿ-Ÿ5ŸCŸJŸNŸjŸrŸ}ŸƒŸƒŸƒŸŒŸ¡Ÿ»ŸËŸÖŸëŸðŸûŸ  - 5 @ O W b g o z † Š • š ¬ ´ ¿ ¿ ¿ ¿ Ó ã ø ¡ ¡¡.¡C¡P¡T¡b¡w¡‡¡ž¡·¡Ð¡Ò¡Ý¡å¡å¡î¡¢¢+¢D¢]¢_¢j¢r¢r¢r¢Œ¢š¢¨¢½¢Ú¢é¢£££,£@£Z£Z£^£t£ƒ£ž£©£À£È£È£ê£ê£ý£¤!¤6¤V¤e¤‘¤Ÿ¤µ¤Î¤Þ¤ö¤ö¤¥¥¥2¥J¥S¥S¥S¥_¥p¥ˆ¥‘¥‘¥˜¥¡¥§¥³¥¦ÞPñ¾¨¾¨Ð¨å¨ö¨ ©©©(©0©A©G©y©ß6sö ö ␍.␍3␍;␍C␍K␍X␍^␍e␍k␍p␍x␍”␍š␍œ␍ž␍«␍«␍­␍É␍Ï␍Ñ␍Ó␍à␍à␍à␍å␍î␍÷␍ù␍ $/6=Igny�—ŸŸ³ÃËÎ4à¸+†ð†ð�ð¤ð§ð¶ðºð¾ðÌðÐðØðÜðêðîðöðúðñ ñññ&ñ*ñ2ñ6ñ9ñ=ñáp2N N d o z ˆ “ ™ ª ° Á Ç Ó ê ê ü ␍!! !1!7!…!âœ~¡®ý®ýÊýÏýÖýàýæýñýþ þþþ!þ+þ1þ<þLþTþdþkþsþ{þƒþ‹þ�þ›þ©þ©þ¿þã”*K¾Ê¾ÊÆÊÊÊÖÊçÊéÊùÊËË!Ë,ËSËSËlËpË}Ë}ˇˎˡ˪˸ËÉËåËêËÌä f*VÄVÄxĀĆĎÄ�Ä�ġġġĩıÄÃÄÃÄçÄéÄéÄÅÅÅÅÅ/Å4Å4Å4ÅIÅKÅXÅZÅgÅiÅvÅ~ņÅ�ŜũūſÅÌÅÌÅÌÅÕÅçÅúÅÆÆ
ÆÆÆ,Æ,Æ,Æ7ÆAÆYÆ^Æ^Æ^ÆlÆrÆwÆƊƜƧƬƬƳƷÆÅÆÌÆÕÆÜÆîÆõÆüÆÇ!Ç&Ç&Ç&Ç&Ç.Ç9ÇGÇGÇgÇgÇgÇnÇ|Ç‹ÇžÇ±Ç³Ç³Ç³ÇÆÇÆÇÍÇÔÇÙÇßÇñÇûÇÈ?ÈEÈEÈYÈ^ÈpÈwȃȕȢȭȴȸȸȸȸÈÃÈÍÈÛÈýÈÉ%É/É/É=ÉgÉzɋɢɵɺɺɺÉÂÉÍÉßÉêÉïÉïÉïÉÊ.Ê4Ê4Ê4Ê?ÊIÊUÊ`ÊbÊbÊbÊgÊsÊsʽÊå¤2W†!†!ž!°!¶!Â!Í!Û!ç!þ! ""+"1"7"="P"V"_"e"w"}"ˆ"�"ž"«"è"æ°î,:MRpv{��–¥ªÔßòù0<Wo‹”£«¸ÁÆ×
+=MS^gm³ŽÃþÙ1ÅçT™j^Ï^Ï|ςυώϘϰÏÀÏÉÏÏÏÓÏ×ÏÙÏñÏÐÐÐÐÐÐ"Ð&Ð&ÐIÐMÐSÐSÐZÐ|БФзнÐÄÐÏÐÙÐÝÐàÐçÐíÐóÐøÐ ÑÑÑÑ(Ñ*Ñ<Ñ>ÑCÑPÑRÑdÑdÑdÑdÑdцёÑ�Ñ·Ñ·ÑÌÑØÑõÑÒ3Ò8ÒOÒTÒbÒyÒ~Ò„Ò•ÒªÒ°ÒÀÒÍÒåÒìÒøÒÓÓÓÓÓ"Ó%Ó(ÓAÓGÓ[ÓaÓhÓsÓsÓxÓ…Ó’Ó’Ó˜Ó¦Ó½ÓÃÓÆÓÉÓÐÓ×ÓÞÓÞÓãÓðÓýÓýÓÔÔ(Ô.Ô1Ô4Ô;Ô;ÔLÔQÔ^ÔkÔkÔrÔ|ÔƒÔ‰Ô�Ô›Ô¯Ô¯ÔÉÔÎÔÕÔÝÔäÔóÔ÷ÔÕÕÕFÕQÕXÕ`ÕyÕ�Õ�Õ¨ÕªÕÂÕ×ÕÞÕÖÖ7Ö9ÖCÖeÖeÖeÖ~֌ֲֶ֚֋×ès°66Zafnˆ‘“  ¢¼ÂÄÆÓÓÓÓ׿ïøÿ#'9LRfkxxŒ“𡝏ØÞâçìïùü éœ+N>ñ>ñHñ_ñnñrñvñ„ñˆñ�ñ”ñ¢ñ¦ñ®ñ²ñÀñÄñÌñÐñÞñâñêñîñññõñê41:¾ú¾úÖúûûãúáú2û:ûëøîèÆÆãîî))9BIPYYaeƒ�›¡¬ÎÎáìòùþþ'.@EEUZZZmr…‹’§»»ÀÀÐÕÕÚáéðòú#*-OOWfqxzŽ ¥ªªª½ÂÑØßô␍␍+0DKPP\k}ŒŸ£²ÀÎÝú
07>NP^np~‹›¢·¾ÊÛòô ␍␍,<DFZov†’³ºÆçççïúþ
#=BIT]ejjy†”Ÿª¸¾ÄÊÓÚìù␍24=HJVw}ƒ‰’£ÍÖàí -BBOTfllll(ì€è..L^dp‡‡™ŸªºÆÏÕÛæô ␍  * * Z í4U^&ò&ò4òTòZò`ò`òfòîH*8~+~+Œ+–+ +°+µ+»+Ç+É+Û+Û+Ý+␍,ïˆ{™ÎÎ(Î=ÎGÎPÎRÎYÎiÎtÎvÎ€Î€Î†Î—ÎšÎšÎ»ÎÆÎÈÎáÎèÎìÎøÎ Ï^Ïð$␍–Á–ÁŸÁ³Á¸Áñ$öÁöÁÿÁÂ#Âòp4&Â&Â4Â>ÂGÂNÂUÂ_Â_ÂeÂó$␍nÁnÁ|Á�Á–Áô$¾Á¾ÁÌÁëÁñÁõÐK{ÌÌ"Ì7ÌFÌJÌXÌ^ÌmÌmÌ|̇̒Ì�̴̤ÌÞÌäÌéÌíÌýÌýÌÍÍ Í@ÍKÍMÍfÍjÍxÍ}Í}Í„Í�ͫ͘ÍÎöø™Ó~0~0œ0Ÿ0¥0¹0Á0Ò0ß0å0ê0ê0÷0111$171>1J1V1V1d1w1‚1†1—1—1—1œ1œ1¨1·1Ê1Ð1Õ1é1ï1÷1 222 2-23292>2D2J2Q2]2d2f2k2s2u2z2†2ˆ2�2•2—2œ2¤2¦2«2³2µ2º2Ä2Æ2Ë2Õ2Õ2Õ2å2å2å2ü23333 393?3J3N3T3_3x3ƒ3Ž3”3¡3¦3«3«3À3È3Ð3î3ù34
44"4'4,4A4H4Q4]4c4o4s4x4ˆ4“4ž4 4¦4³4¸4½4Ö4á4ì4ì4ò4ÿ4555(535>5D5Q5Q5U5Z5Z5k5m5m5€5‚5‚5•5—5—5ª5¬5¬5¿5Á5Á5Ó5Ó5Ù5Þ5Þ5õ5 6þ566%6,646G6I6b6b6|66�6�6Ÿ6¯6»6Ò6ì6ñ677(7-7-737G7Y7d7l7t7x7†7Œ7‘7‘7—7«7»7À7À7Æ7Ì7Ñ7Ñ7Ñ7×7æ7ù78
8888888(848N8d8p8p8v8ƒ8…8�8œ8«8¾8¾8Ë8×8×8×8×8Û8à8ñ89999 92979E9Q9W9d9d9{9‹9‹9Ÿ9«9­9¶9Â9Ù9Ù9ß9ì9î9:: : : : : :‡<÷Œ:Y>û>û^ûfûjûxû~û„û±ûÇûÛûéûüüüü%üDüMü]ü_üfüfülülü|üø 8\,,,*,6,F,^,d,r,ƒ,‹,’,¨,Î,è,õ,----+-M-T-Z-h-p-†-‘-—-�-À-ù,c*î"î" ###.#@#F#Q#h#w#‚#†#‘#�#¨#´#Ë#â#õ# $!$1$1$C$I$Z$`$p$p$ˆ$ˆ$­$­$²$²$¸$Ä$Ñ$Ý$ò$ %%#%5%A%X%p%‘%‘%š%Ÿ%Ÿ%Ÿ%Ÿ%¯%¸%À%Å%Ó%á%ñ%ö%ö%&&&&&(&:&@&L&\&g&q&u&~&—&š&ª&·&Ç&×&Þ&ä&ð&ø&'
''!'''4'?'E'U'e'e'’'´'À'È'Ó'Ú'å'ç'ò'ò'(((((.(4(B(O(\(f(j(s(Œ(�(Ÿ(¦(«(«(¿(¿(Ä(È(Ø(á(ó(ù(û(û( )))&),)8)H)H)H)M)e)e)t)w)‹)©)´)Ý)ï)ú) ****.*>*V*]*a*g*o*z*}+ú\™Æ-Æ-â-é-..#.....3.>.J.U.c.s.ƒ.Š.‘.¦.».».Ï.ç.ô./////=/K/R/Y/n/ƒ/ƒ/—/¤/²/Â/È/Ù/Ù/ß/í/þ/ 00}0ût¡úÆþÆþèþóþúþÿÿÿÿ ÿ ÿ'ÿ.ÿ5ÿ;ÿAÿHÿJÿSÿ_ÿeÿ‹ÿ’ÿ•ÿ¥ÿ­ÿ²ÿ²ÿ¹ÿ¿ÿÐÿÖÿÜÿåÿçÿîÿîÿóÿýÿ )@CR^kkkkqƒ‰š»Ïãêôü "2===Qeuxü|Õpçç@çGçVçaç‡ç‡ç�ç’ç’ç™çÃçÍçÍçÜçëçè è èè!è1è7èUè`èbè{è�èŒèœè®è·èÂèÇèÍèÔèùèþè éééé+éBéBéQéWékéréyé~é‰é�é—é½éÆéÍéÒéÝéééøé êêê%ê7ê7êNêUê]êmêê…êŽêŽê�ê£ê·êÀêÐêßêôêýê␍ë ë+ë?ë`ëwë{ë‡ëžëºëÌëÒëÝëéëùë ìììì)ì-ì9ìPìlì~ì„ì�ì›ì«ì»ìÍìÓìÓìØìÚìÚìßìßìîìôìúìúìþìwïý¼jՎ׎׬׷×Â×è×è×ê×þ× ØØ Ø/Ø>ØKØKØQØVØ[ØnØ�ØŒØ�آسػØÂØÝØëØëØëØöØÙýØ#ÙÙ-Ù/ÙKÙ7ÙSÙaÙaÙcÙÙنٌٕٜٟٶÙÁÙÕÙÈÙÝÙãÙìÙìÙìÙÿÙÚÚ Ú ÚÚ,Ú5Ú5Ú5Ú5ÚQÚhÚnÚsÚsÚˆÚŽÚ“Ú“ÚŸÚ¼ÚÚÚßÚäÚäÚðÚ␍ÛÛ+Û3Û8Û>ÛCÛCÛJÛQÛtÛ‘Û“Û°ÛÅÛÅÛËÛËÛßÛèÛèÛÜ Ü%Ü9ÜDÜLÜTÜdÜ{Ü{܋܋Ü�Ü£ÜËÜÔÜÔÜÖÜÝÜâÜâÜöÜÝÝÝÝ#Ý7ÝIÝTÝbÝkÝpݗݠݫݰݷݿÝÒÝçÝìÝóÝÞÞÞ.Þ5Þ;ÞDÞDÞgÞnÞsÞ�Þ‘ÞŸÞŸÞ¥Þ¬ÞµÞµÞÈÞÚÞÝÞÝÞîÞöÞþÞ
ß'ß.ß;ß=ßDßXßgßgßgߎߎߎߢߢ߷ßÂßÔßáßìßúßààà5àHàJàYànàpà~à“à“à™à¢à¢à¶à¼àÎàÎàâàåàðàá ááá!á(á3á8áMáRálá�á�á�áƒáŠá‘á¥á³áÈáÈáÎáÕáÞáãáâ␍â␍ââââ;â;âOâRâXâaâiâtâ†âŒâ—â—â«â®â´â½âÅâÐâââèâóâóâã
ãããã=ãPãeãkãvãˆãŽã–ã–ã–ã–ã¡ãçþÈjØöòöòó#ó*ó3óCóUó\óbóhómó’óŸó¢ó«ó½óÃóÈóëóþóôô ô&ô4ô:ôFôPôUô\ôuôôˆô˜ôšô¡ô¦ô®ôÍôÛôçôõ õ'õ1õ@õFõLõRõXõnõ�õ£õ¯õÆõÑõÚõíõúõöö0ö=öHö]ö€ö’ö©ö²ö¸öÄöÉöÐöçöòöÿö÷÷÷#÷%÷3÷B÷T÷T÷\÷÷Š÷¾÷ÿXß1¾÷¾÷é÷ó÷øø#ø1ø8øGøNøVøløtø‡øœø¬ø¶ø¸øÈøØøáøçøìøóøúøùùùù ù&ù@ùHùbùwù„ù‡ù�ù“ù¥ù´ù¿ùÇùÞù÷ùûùú úú%ú,ú0ú9ú;úMúdúrúxú|ú~ú‹ú‹ú‹ú�ú¤úªúªú¼úú68@FShv||||‰‹– §³¾ÄÎÕææñûû␍#).55V\k~„‡���•›���®¸½½ÒÜÜðùÿ ':>>FLR\cjs……ª®µ»ÊÝãçîôúúü␍CTTkx|„™¹¹¿ÂÆÌÌÞï 15FJPikq~€Œª±¼ßêðöü !2:>OSYrtz‡‰•³¹¿ÅÎÕå 055<CUZZZtv�’¬²º¾Åèîô   $ 0 5 5 < @ G U W _ d l w } ‰ Ž ” ™ ¡ ¦ µ Ð à í ü 

6
6
=
R
W
`
m
r
y
~
~
…
‰
�
ž
 
¨
¬
°
º
Æ
Í
Ñ
Ù
á
é
ø
      A A O U Z ^ c c c c i k k Ž ” š · ¹ ¹ ¹ Ä Ä Ä É ì ò h^ ^ t † Œ — ¥ ± È È Ú à ë û   ! M Dâ﨨±¼ÇÒÝèóþ  X»ÍšÉšÉ´ÉÇÉÉÉÓÉàÉõÉ÷É ÊÊ(Ê(Ê/Ê2ʆÊT‚®‚®œ®¯®¹®À®Ì®å®î®ò®¯ ¯*¯P‡—à%à%÷%␍&&$&;&V&h&l&¯&pï‡  9DT�¤¸¿ÇÏØàèêòú'?HH}§°Òì 3?acjqq—×W—×&388GTVV^^^m†Ÿ¸ººÁÁÏÒßíüLSSS[x†¤­Òàú3A]{{{†‰¸ÏÕæïñþ␍@BIZcesuƒ…““³³³³ÀÓæ-59AESackos{‰——±¼Òä&07P\c||Ž“•›¬½ÌÓäíïýÿ␍AA^elo{~Œ�ž¢°´´ÍÔÙçøÿ5HWYhjyƒƒ‘š°·Üá
:?MO]f€‚„‹œ¥§µ·ÅÇÕÕõõõõõ ;`y~~~ ¥¥¥ÅÊÊÊéîîõøý8LQQY\a€œ°µµ¼¿Äãÿ3@BQZtvv{vœžž¡ßßßþþþ $ $ $ F K K K k p p p � ” ” ¯ ½ ¿ Î × ñ ó ó ø ó     \ \ \ g g ‘ ‘ » Ó ë ö !!1!I!]!w!y!Š!¤!»!Â!à%P—§°&°&É&Ë&Ò&è&ø&þ&'-'0'B'Š'¨¼â˜␍˜␍¨␍ª␍µ␍À␍Ñ␍Ü␍ç␍ò␍û␍ 2=FOVcw~€„†ž¨ (^dfòfòjò‚ò”ò®ò
(dj®ò®ò¼òÐò×òñò
˜
£
­
­
Ö
á
ì
 ) G M R ] { ‚ ‡ › Õ Ú à æ í ò ò ø þ    A G L j q q q v y  … Œ ‘ ‘ — � ¢ ¢ ¸ Ò à õ û ␍␍␍+␍2␍4␍N␍U␍U␍U␍U␍U␍U␍[␍`␍d␍f␍i␍t␍€␍ƒ␍…␍‰␍‰␍Ž␍Ž␍Ÿ␍±␍‡$�†®ì®ì¼ìÑì×ìˆ`ÈÜØ0Ø0ø01111!1*1/14141E1I1P1h1k1w1‰Tï2222)2;2F2T2a2o2�2Œ2š2 2¦2Š$d©0606U6a6k6q6{6�6‹6™6£6µ6¿6Å6Ï6Õ6ß6æ6ò6ø67,7;7>7@7J7\7f7{7{7~7ˆ7�7¢7²7½7Â7Ö7é7ó7888&8.8<8M8]8n8{8{8ˆ8ˆ8�8×8‹¼+V 4 484:4F4J4W4Z4t4t4t4z4~4†4‘4¥4±4³4³4¼4¾4¾4Ç4É4É4Ò4Ô4Ô4Ý4Ý4æ4ì4ï4ù4
5555„5Œh+X3X3h3o3{3�3‰3—3ª3¶3Í3Ú3Ú3Ý3ë3û3444�@ 3333'333C3H3K3O3W3ŽHVdˆ5ˆ5�5¤5©5·5Ì5Ò5Þ5ï5ï5ö5*6�0ÀȘ0˜0¦0°0»0Æ0Ì0Ò0�4 ¨2¨2¼2È2Ö2Ú2ò2õ2ý2‘$êïà1à1é1õ1ú1’,ãê°1°1¾1Å1Õ1Ø1Þ1“,Üãx1x1†1’1¢1©1¯1”8À`0`0n0u00Œ0�0‘0—0•t ÕîÈTÈTåTôTôTôTUUUU#U%U%U+U-U-U3U5U5U<U@UEUEUEUEUEUEUMUbUbUlUqUzU„U‘U¦U¨UÃUÅUàUåUVV V V V#VJVWVVoV�V�V˜V�V»V©VÁVÐVÕVÜVåVøVWW␍W␍W␍WW/W5W5WNW\WvWŒWŽW–WœW¤W©W©W¯W¯W¸WÉWËWàWâWêWðWøWýWýWXX XX/X1X9X?XGXLXLXLXLXZXnXpX„X„XŒX’XšXŸX¨X°X¹X¿XÅXÇXÇXÇXÏXÏXÝXñXõX÷XYY Y&Y.Y3Y<YGYJYPYVY_YbYbYpY~Y€Y£YÀYÆYÎYÓYÜYÞYÞYãYåYíYíYZZ Z+Z1Z4ZKZMZPZ`ZdZkZtZƒZ‘Z—ZŸZ¤Z¬Z±Z±ZºZÇZÌZÔZëZõZ[[#[([([.[3[3[9[>[>[D[I[I[O[T[T[Z[_[_[e[j[j[j[r[r[‹[™[³[É[É[Ë[Ë[Ô[Ú[ß[ß[ß[ç[ç[ð[ÿ[\\\\#\(\(\(\0\2\2\;\;\;\D\S\g\i\i\r\x\z\z\€\†\†\Ž\—\�\©\©\°\Ä\Æ\É\Î\Ö\Þ\ã\ã\é\í\ò\]]]]]']N]N]T]b]s]]†]”]£]»]Á]Æ]Æ]Ë]Þ]ê]ò]^ ^^#^*^,^5^5^;^I^U^h^{^�^•^—^ª^¯^¯^Ì^Ì^Þ^ä^í^ó^ü^
___"_(_*_5_G_Z_Z_n_z_Œ_‘_�_£_¦_½_¿_Â_Ò_Ü_ß_ß_î_```$`*`-`D`F`I`Y`]`e`s`x`}`}`ƒ`‹`�`�`–`–`¤`ª`°`º`Ä`ç`ê`ì`ö`ö`ø`aa
aaaaa"a"a'a2a7a<aGaLarataya~aƒaˆa�a’a—a—aœa¡a½aïaõaýaýa bbb!b+bNbQbSb]blbqbqbqbyb~b‡b‡bŒbŒb’bšbŸbŸb¤b¯b´b¹b¾bÍbÍbÞbäbäbòbøbþbcc5c8c:cDcScXcXcXc`cecncscscyc�c†c†c‹c–c›c c¥c´c´cÅcËcËcÙcßcåcïcùcd d!d+d:d?d?d?dGdLdUdZdZd`dhdmdmdzd€d€dŽd”dšd¤d®dÑdÔdÖdàdïdôdôdôdüde
eeeee"e"e/e5e5eCeIeOeYece†e‰e‹e•e¤e©e©e©e±e¶e¿eÄeÄeÎeÖeÛeÛeÛeáeëeñef
f
fff f%f%f+f9fBfJfWfafifnfnftf‚fŽfŸf¬f³f»fÅfÓfÓfØfØfãfãfãfçfìfìfòföfûfg g gg#g+g0g6g6g>gDgRg]gbghgpgugugugugugugugugugugŽg”g�g£g«g°gµg¾gÉgÒgÚgßgßgßgågígògògögûgûghhh+h1h1h:hNhNhTh]hqhqhzh|h‚h‹hŸhŸh¨h¨h¨h­h²h²hºh¿h¿hÜhêhöhÿhiiiiii0i9i?iQi[i[icicikimimi†i�i™i›i›i›i¡i¥i§i§i§i§i¬i²i¸i¼iIm–ĉpJpJ–J§J¬J³JÂJÂJÊJÝJáJæJûJýJKK K K#K/K6K:KAKIKKKSK`KnKvKxK{K‰K•K£K«K³KÁKÅKÓK—<ƒŽL>L>Z>a>l>t>{>�>‡>‡>�>˜P®¾ÎíÎíÜíîíôíüíîîî/î5î8îtî™\¾Ñvîvî„î–îœî¤î¶î¼îÅî×îÝîæîøîþîOïšhBXÐ;Ð;à;ç;ó;ú;<<<<)<2<@<L<U<^<g<m<u<›Xt†ÜIÜIòIþIJ
JJ+J1J=JEJPJVJYJcJœHŽœ”>”>®>µ>¾>Ê>ß>ç>í>ó>õ>õ>?�TARhphpvp„p�p–p¦p·p¼pÙpßpæpípûpqUqž@¢®ŽíŽíží¯í¸í¾íÂíÅíÍíŸXo�ìì,ì:ì@ìFìWìeìsì…ì‰ì�ì�ì ìªì H”¢6í6íFíZícíií{í{íí‚íŠí¡H†”ÞìÞìîìí íí#í#í'í*í2í¢tîPmPmnmrmvm~mˆm‹mŽm�m¡m¥m­m¶mÂm×mèmïmömömnnn£hLb„H„H¦H°H³H³H½HÐHÒHßHáHìHIIII#I+I.I@I¤´œE???&?&?<?C?E?a?a?a?h?r?v?z?}?}?†?Š? ? ?Ö?â?ó?@@@!@&@&@&@>@E@R@Y@l@t@|@�@�@™@¥@­@²@²@Ê@×@ß@ä@ä@ü@AAA!A-ACANAqAuAƒA‹A�A�A¨AÂAÌAØAàAåAåABB!B&B>BJBYB^BmBzBBBB‚B‡B‡B‡B¦B²BÃBÅBÈBÍBÍBÍB×BéBðBÿBCCC#C,C4C<CCCGCRC]CcCqCCC…C�C¦C«C«C¾CÆCÆCÈCÈCÈCÍCÍCÔCÚCÞCåCéCüCDDDDDDD8DADADEDSH¥”tÕ˜Q˜Q¼Q¿QÃQÐQÙQäQðQøQR*R*R6R8R8RDRIRIRURZRZRfRkRkRwR|R|RˆR�R�R™RžRžRžR R R¹RÇRÛRëRëRíRíRùRÿRSSSSSSS+S-S-S9S?SDSDSDSFSHSHSOSOSOSXSgSuSwSwSƒS‰SŽSŽS”S S S«S·SÄSÙSáSçSçSøSøSTTÂT¦XbtDIDIeIlI{I~I‚IŠIŽI’IšI¬IÉIÐIÜI§Œ#B�:�:¬:»:Å:Ò:Ù:è:þ:$;:;K;R;`;r;�;�;¡;¶;¾;Á;Í;¨@ÂÎ`L`LpLwL–L¡L¯LºLÂLÌLÔL©@ÂØKØKèKïKL#L)L6L@LYLª€#nn.n7nBn[n[n^nmnsn|n~n„n�n�n•nŸn¦n©n©n³n«H#1¸n¸nÁnÇnânçnoo1oWo^ooo‚o¬dl�==!=(=<=P=U=s=x=–=˜=¶=¸=Ï=ã=ì=î=>>C>­`Xlx<x<Š<‘<“<Ÿ<¦<µ<À<Ì<Ð<Þ<ð<ü<= ==®,ELTHTHbHkHyHH¯”0:®:®\®f®r®w®‡®�®¢®¶®Ä®Ò®é®ñ®û®
¯¯ ¯'¯*¯*¯*¯,¯;¯E¯N¯V¯Y¯k¯°P1Aˆoˆo–o§o³oÎoÓoóoõop+p+p3p:pap±Ð7NN0N4NuNƒN‰N£NÂNÐNÐNÕNÙNàNëNöNO O OOOO(O5O7ODOFOHOHOHOPOPOPOXO`OhOpOtO~OÊO²`äø`M`MvMvMzMM’M•MšMšM¤MªMªM»M½MÇM³LøÈMÈMÜMàMåMðMðMúMNNN N´˜7YÐOÐOäOèOñOôOýOPPPAPEPJPMPVPfPmPpPxP{PˆP�P˜P P§P·P·PÃPµ,&-&ð&ð4ðCðGðJðPð|YtÈPÈPÚPÜPàPéPõPQQQBQFQKQWQjQtQwQ‚Q…Q�Q—Q·<ÎÙØLØLìLðLõLÿL
M␍MMM¸<Ùä M M4M8M=MGMQMTMXM`M¹$@(@(J(R(W(º,!X(X(f(w(ˆ(‹(‘(»`iýÞ·Þ·ø·¸!¸!¸'¸/¸7¸?¸G¸M¸Z¸Z¸`¸e¸e¸k¸p¸p¸v¸{¸{¸�¸†¸†¸Œ¸‘¸‘¸—¸œ¸œ¸¢¸§¸§¸­¸²¸²¸¸¸½¸½¸Õ¸è¸î¸ó¸ó¸ü¸ ¹ ¹ ¹'¹)¹)¹0¹2¹2¹9¹;¹;¹B¹D¹D¹K¹M¹M¹T¹Z¹\¹\¹c¹i¹k¹k¹r¹x¹x¹€¹†¹Œ¹”¹”¹”¹”¹ ¹¨¹°¹¸¹À¹È¹Ð¹Ö¹î¹ý¹º
º
ººº º º$º,º3º;ºCºGºMºUº\ºdºlºpºvº�º‡º”º º¦º®º²º¹ºÁºÉºÍºÓºÛºâºêºòºöºüº» »"»3»8»;»á»¼`ÕiÖ³Ö³ð³ù³´´ ´'´/´7´?´E´R´R´X´]´]´c´h´h´n´s´s´y´~´~´„´‰´‰´�´”´”´š´Ÿ´Ÿ´¥´ª´ª´°´µ´µ´Í´à´æ´ë´ë´ô´µµµ µ!µ!µ(µ*µ*µ1µ3µ3µ:µ<µ<µCµEµEµLµRµTµTµ[µaµcµcµjµpµpµxµ~µ„µŒµŒµŒµŒµ˜µ µ¨µ°µ¸µÀµÈµÎµæµõµÿµ $¶+¶/¶7¶?¶E¶M¶T¶\¶d¶h¶n¶y¶Œ¶˜¶ž¶¦¶ª¶±¶¹¶Á¶Å¶Ë¶Ó¶Ú¶â¶ê¶î¶ô¶ÿ¶··+·0·3·Ù·½0 þ®þ® ¯¯¯#¯)¯¾$°'°'¿'Ø'Þ'¿pýæ»æ»ú»¼¼(¼,¼3¼:¼C¼R¼T¼T¼h¼j¼s¼y¼y¼y¼y¼�¼À`¢æ°æ°±±±±$±&±2±2±?±A±N±P±\±\±r±{±{±†±�±œ±§±­±²±´±À±Ç±Ö±á±ç±ì±î±ú±ú±²²#²)²/²5²9²9²f²m²ƒ²�²•²›²¡²£²£²±²ÁP¢²¶²¶²Ì²Ï²Ò²ß²å²å²ò²õ²ø²þ²³
³Â”²Ó³³*³6³:³>³E³L³[³f³l³q³s³³†³Ž³”³š³ž³ž³­³´³¼³Â³È³Ê³Ê³Ö³Ã,!(®¯®¯·¯Å¯Ë¯Í¯Ò¯Ä¸«®y®yÈy×y×yÚyãyïyïyûyz1zCzUzYziz‰z›z¡z´z½zÁzÇzÐzÐzñzõz{{0{B{H{[{m{y{{{‡{�{“{™{¢{¢{¢{¢{´{Ê{Ð{Ü{ñ{ø{| |!|(|(|(|6|D|N|Q|_|i|l|~|ƒ|ˆ|˜|›| |°|³|·|À|È|Ú|â|ë|}}}(}/}7}I}O}^}o}o}v}v}v}„}’}œ}Ÿ}­}·}º}Ì}Ñ}Ö}æ}é}î}þ}~~~~(~0~9~9~D~[~s~w~ƒ~›~£~©~µ~¾~Â~Ê~Ó~Ó~Ó~ì~ô~ú~"(...5GS[aggi{Å|Æ’Æ’Ô’é’ð’û’“Q“m““““™“¥“®“¶“¾“À“Æ“Ì“Ø“à“æ“è“î“Æ0 Ö®Ö®ä®ë®ó®ø®þ®Ç<(3֯֯߯߯í¯ñ¯ø¯û¯°È<3>°°°°°!°/°2°7°É<>I>°>°G°G°U°Y°`°c°h°Ê8ISn°n°w°w°z°ˆ°–°™°ž°Ë @D–½–½¤½°½Ì$ ø'ø'( ((Í$ à'à'é'ñ'ö'ÎD$v;v;“;›;­;É;Ô;æ;í;þ;<<< <><><S<U<U<a<i<m<z<z<†<Ž<’<Ÿ<Ÿ<Ÿ<¬<²<Ã<Ã<È<à<ï<ô<ú<=
=
=='=6=;=A=L=Q=Q=_=h=t=|=„=Œ=�=•=š=£=µ=¾=Ï=ß=ß=ä=ì=ô=÷=ý=ý=>>>> >>>W>n>{>ƒ>‹>—>£>©>°>¹>½>À>Ì>Ò>Ù>Þ>Þ>ì>ü>ü> ? ???"?1?6?6?=?H?N?V?\?g?l?l?{?†?˜?ž?¦?¬?±?¼?Î?Ô?Ü?â?ç?ç?û?@ @@@$@*@*@L@s@x@x@Œ@’@¨@¹@¿@Ä@Ý@ã@ó@û@A AAA"A(A>AOAUAZAsAyA‰A‘A™AŸA¤A¤AºAÀAÖAçAíAòABBB B(B.B5B:B:BPBVBlB}BƒB…B”BšB¤B¬B´BºBÁBÁBÁBÓBÜBíBýBýBCCCC)C<CCCICQCWCgCmCuC{C{C{C€C€C€C€C€CŸC«C°C°CÆCÏCÚCãCîCùCþCþCDD0DADGDLD^DdDiD‚D D D¥D¥D±D¹D¼DÂDÈDÍDÍDñDùDEEEEE.ELELEQEQE]EeEhEoEuEzEzEšE¢E²E¸E¿EÝEìEôE FFFF$F<FDF\FdFgFnFtFtFtF“F£F¯F·FºFÁFÇF×FæFòF␍GGG G%G=GIGdGlGoGvG|G|G|G|G�G�GšG°G¶GÎGáGçGìGþGH H%H+H7H?HBHIHOHxH€H�H–H�H�H�H¢H¢HÃHÙHßH÷H
III@IFIYI¢I¾IÆIÌIÑIÑIëI÷IJJJJJ-J9JEJPJPJUJUJoJ{J‡J’J’J—J—J­J³J¿JÅJÊJÜJâJçJöJKKKK!K4K?KHKTK\K_KeKkKpK„K“K›K³K»K¾KÄKÊKâKêK
L$L,L/L5L;L;LLLULaLiLlLsLyL~L�LŸL§L¿LÇLÊLÑL×LïL÷LM0M8M;MBMHMHMXMaMmMuMxM~M„M‰M�M¬M´MÎMÖMÙMßMåMýMN'NCNKNNNTNZNZNkNtN€NˆN‹N’N˜N�N¯N¾NÆNáNéNìNóNùNOO;OXO`OcOjOpOpOpOpOpOuOuO‹O‘O�O£O¨OºOÀOÅOÓOßOèOôOüOÿOP PP#P2P:PRPZP]PdPjP‚PŠP©PÃPËPÎPÕPÛPÛPÛPìPõPQ Q QQQQ0Q?QKQfQnQqQxQ~Q–Q¢QÄQáQéQìQóQùQùQùQùQùQþQþQR,R2R=RBRBRURkRqR|R~R~R‘R´RºRÅRÅR×RàRñRöRSSSSS0SFSLSZSiSnSnS�S—S�S«SºS¿S¿SÕSÛSøSTT:T@TETQTZTiTiTnTnT„TŠT§T¿TÁTéTïTôTU UUUUU3U9UVUnUpU˜UžU£U¯U¸UÇUÇUÌUÌUâUèUVV VGVMVOV[VdVoVoVoVoVtV‚V‹VœVžV°V½V½V½VÍVÝVâVWWWW-WJWZW~WŽW”W”W”W™WžW³WÆWXXXX!X2XAXsX{X�XƒXˆX�X�X˜XªX½XÆXÕXÕXÚXßXîX÷XYY␍YYY9Y@YFYNYYY_YoYuY}YˆYŽYŽY“Y˜YŸY¦Y­Y´Y½YÌYÌYÌYÑYÑYÑYãYèYèYúYZ␍ZZZZZ Z Z+Z<Z?ZKZTZ`ZgZmZrZrZ}ZŽZ‘Z�Z¦Z²Z¹Z¿ZÄZÄZÄZÄZÉZÎZÎZÕZÙZÙZåZîZñZñZüZþZ[[[,[7[B[H[Q[U[U[a[j[m[m[x[z[Œ[“[™[¡[¬[·[½[Ç[Ê[Î[Î[Ö[Ý[à[â[í[ñ[ú[ý[ý[\
\"\)\4\?\B\H\M\M\T\X\X\d\m\p\p\{\}\�\–\œ\«\¶\Á\Ç\Ð\Ô\Ô\à\é\ì\ì\÷\ù\ ]]] ]+]6]<]F]I]M]M]U]\]_]a]l]p]y]|]|]‡]‰]¡]¨]³]¾]Á]Ç]Ì]Ì]Þ]â]â]î]÷]ú]ú]^^^ ^&^8^C^N^T^Y^Y^d^i^i^t^y^y^y^y^y^y^y^~^ƒ^ƒ^Ž^‘^•^œ^¡^¦^«^«^¿^Ä^Ä^Ñ^Õ^æ^î^ò^_␍____*_2_8_H_L_]_o_z_~_~_‹_“_›_¡_¡_¡_¡_¡_£_£_±_¸_Å_Ñ_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_ß_á_á_ø_þ_
`
``,`G`I`U`b`b`z`‡`’`›`¤`¯`¶`¶`À`À`Ã`Õ`ó`ÿ`ÿ`BcÏÀ mFcFccckcnc|cŠcŸc¨cÀcÖcècócdddd(d1d=dPd�d\d‘d¥d¶dÂdÐdîde$e5e7e>eseseve{e~e~e…eœe£e°eµeÄeÑeäeäeøeüeff4f9f9fIfQfafkf{f…f•f¡f¦f¦f¶f¾fÎfØfèfòfggggg'g5g?gDgQgfgfgkgug„g‰g�g”g”g™g£g²g·g½gÂgÂgÈgÎgÓgÓgâgõghhh-h5h;hDh[hoh€h�h’hªh½hÔháhéhühi
iiii!i!i!i!i!i-i-i-i6iOidili‡i˜i¥i§i»iÀiÀiÀiËiÙiÞiÞiåióiøijj.j:j@jOjSj\jej‚jŽj”jšj­jµj½jêjûjk
kkkkk$k2k7kJkVkbkhklkukzkzkzkzkzk’k—k—k—k—k—k¨k¨k¨k¨k¨k¨k¨k¨k¨k¨k±kÊkßkçkll l"l6lBlGlGlGlPljlvl�l©l©l®l®l®l®l®l®l®l®lÃlÈlÈlÈlÙlälélélélmm.m2mJmZmbmjmŸm¨m¬mÄmÔmÔmÔmÔmÔmöm/n8n<nBnGnPnYn^n^n^n^nmn�nŸnªn¯nµnºnºnÍnánooo o o%o%o4oHofoqovo|o�o�o”o¨oÎoÙoáoçoçoìoìoìoõop#p+pFpWpdpfpupwpwpwpwpwp‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹p‹pšp©p´p¶p¶p¿pÁpÁpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕpÕp×p×pîpôpqqq qqIqXqdqzq”q—q¡q­qÓqóqr7r9rLrRr•r•r˜r¨r°rËrÜrßrùrss+s+sVsYshs|s�s®sÊs¶sæsøstItGt1t"tWtWtWtZt_tbt|tŠt¸tÚtÚtuuu+uLu]uyueu•u³uæuäuÎu¿uôuôuôu÷uüuüuvv4v@v©yÐð«ã~~—›¦­¸ÌÌ×èïü€€€.€.€7€<€D€X€f€u€€€“€“€¦€¦€¼€Û€Û€ï€ñ€ñ€ü€�����$�,�,�,�=�=�=�A�I�O�T�T�X�`�d�j�o�o�{��� �ª�½�Â�Ê�Ê�Ï�Ï�Ö�â�÷�‚‚‚ ‚2‚7‚?‚E‚E‚J‚Q‚\‚„‚�‚ž‚¨‚°‚¶‚È‚΂Ó‚Ó‚Ó‚Ó‚Ó‚Ó‚Ó‚Ó‚Ó‚Þ‚ê‚÷‚ƒ␍ƒƒ(ƒ-ƒ5ƒ:ƒBƒGƒGƒGƒOƒWƒ`ƒhƒmƒuƒzƒ�ƒŒƒ´ƒ¿ƒǃÖƒàƒòƒ÷ƒýƒ„„ „„#„6„>„F„[„]„h„p„…„…„¡„©„°„¶„º„¾„̈́ބô„………)….…:…E…J…J…k………Š…’…¡…©…±…Æ…Ë…Ö…Þ…ó…ø…††&†.†C†O†T†`†k†p†p†p†p†p†p†{†{†{†{†{†{†{†{†{†{†{†{†††¦†ÆÓ†Ù†á†ô†ù†‡ ‡ ‡‡&‡,‡4‡<‡>‡^‡f‡o‡w‡‡„‡‰‡�‡›‡Ç·Ö‡å‡ï‡ˆ␍ˆˆˆˆˆ#ˆ,ˆ/ˆ9ˆGˆYˆ[ˆmˆˆˆˆŠˆ�ˆ¬ˆ±ˆ±ˆºˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆ¿ˆʈֈ∉‰‰=‰B‰J‰Q‰^‰f‰o‰w‰~‰ƒ‰ƒ‰‹‰“‰¯‰·‰º‰¼‰̉Ö‰Ö‰Ö‰؉ë‰ü‰ÿ‰Š
ŠŠŠŠŠ%Š,Š9ŠRŠYŠ^ŠvЀЛдмŠÉŠâŠéŠéŠîŠîŠîŠîŠîŠîŠîŠîŠîŠîŠîŠîŠîŠîŠîŠîŠîŠöŠ‹ ‹‹ ‹ ‹(‹0‹=‹B‹B‹B‹F‹K‹K‹[‹`‹`‹`‹v‹‚‹”‹§‹­‹µ‹Ê‹Ñ‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Ù‹Û‹Û‹ö‹ü‹
Œ
ŒŒŒ!Œ/Œ<Œ<Œ<Œ@ŒKŒiŒwŒƒŽÑø{†Ž†ŽœŽ§Ž®Ž¹ŽÄŽÛŽæŽíŽýŽ���%�?�F�O�V�Y�e�n�u�x�}�“���¯�µ�Á�Ö�Ý�å�ñ��␍�␍�␍��)�3�6�D�N�Q�c�h�m�}�€�…�•�˜�œ�¥�­�¿�Ç�Ç�Ç�Ý�ç�ù�ÿ� ‘ ‘'‘/‘A‘G‘V‘g‘g‘n‘n‘n‘|‘Š‘”‘—‘¥‘¯‘²‘đɑΑÞ‘á‘æ‘ö‘ù‘ý‘’’ ’(’(’4’B’B’E’P’n’|’Å’Ò´pÙ——0—H—O—V—a——’—•—ž—¥—­—À—Ñ—Ý—í—û—þ—˜˜˜&˜,˜<˜A˜P˜Z˜p˜|˜‘˜™˜¤˜¯˜º˜ŘИܘè˜û˜™™/™F™N™W™_™‡™�™•™Ÿ™Ÿ™¬™¿™Å™Í™à™æ™î™î™ü™šš.š4š<šOšUš]š]š†š†šŒš­š±š´š¿šÙšåšõš›1›E›M›W›v›Š›Š›œÓ`pî“î“”&”+”B”T”Z”d”r”z”‰”Ÿ”¡”ª”À”ΔÖ”Þ”à”ë”ö”ö”þ”•••"•+•3•6•?•M•^•p•s•x•‹•£•·•¿•¿•ѕԕٕ앖– – –A–D–I–\–b–w–�–�–¤–º–––Í–ì–ó–þ–—ÔØ³bb/bAbObXbzb„b’b¯b¼b¼bÆbÆbÞbîbîbùbc ccc)c0c;cScYc\cqcvc�cŒc¦cÁcÕcöcd ddd"d/d5dVdZd`dhdmdud–dšd d¨d­d­dºdÀdÛdÇdçdëdñdùdþd e#e)e1e@e[eGegekeqeye~eŸe£e©e±e±e¶eÃeÉeêeîeôeüef%f)f/f7f7fDfJfkfofuf}f…f¦fªf°f¸f¸f¸fÍfÍfÍfÍfØfâfëf gg(g-g>gRgWgWgbgjgrg{g›g¨g·gÆgàgågågðgøghhh(hBhThfhqhvhvh�h—h¬h¸hÉhÎhßhóhóhûhóhiii'i,i,i;i@i@iQiViVigililiiŽi“i“i¦iµiºiºiÜiáiáijjj*j/j/jQjVjVjsjšjŸjŸjÁjÆjÆjãj
kkk1k6k6kSkzkkk¡k¦k¦kÃkêkïkïklll1l6l6l6lQlVlVlVlqlvlvlvl‘l–l–l±l¶l¶l¶lÑlÖlÖlÖlñlölölölmmm'm,m,m=mBmBmNmYmnmsmsmm˜m�mÀmÇmÑmÖmçmñmnnn'n2n:n?n?nCnGnNnXnbnbnunznznzn~n—n n nÃnÈnÈnÐnänínoo o*o5oGoSo\oaoaoaoro�ošo¤o¯o´o¿oÇoÌoÌo×oßoèoóopp3pGpLpLpWpjptpp p¬p½pÂpÓp×pÜpÜpìp÷pÿpqqq'qAqSqeqpquq€qˆq�q˜q¥q°qÊqÜqîqîqîqîqóqøqøqrr;rYrYrcrwr�rƒr�r—r´rÅrÏrÚrýr s0s;sSscshshsssxsxs€s‹s�s�s˜s£s¨s¨s°sÎs¸sæsësësóstûs)t.tBt.tZt_t_tltqtqtyt~t~tŠt›t­t²t²tÆt²tÞtãtãtëtðtðtuuuu u u:uJuOuOuiuyu~u~u˜u¨u­u­uÇu×uÜuóuÜu vvvv v\vJv vtvyvµv£vyvÍvÒvÒvávñvövövwwww)w7w<wdwRw<w|w�w©w—w�wÁwÆwîwÜwÆwx x x(xxRxbxgxgx‚xnx¬x¼xÁxÁxÍxÒxÒxÞxãxãxöxy y yy.y3y3yFyVy[y[yny~yƒyƒy‹y�y�y˜y�y�y¥yªyªy²y·y·yÊyÏyÏyâyçy5z#zzçyBzGz•zƒzqzGz¢z§z§z¶zÑzÖzÖzçz{{{{&{+{+{3{8{8{@{E{E{M{R{R{Š{x{Y{©{Ä{É{É{|ï{Ð{ |;|@|r|`|@|Š|�|Á|¯|�|Ù|Þ|ø|Þ|}}2}}J}O}O}[}t}„}•}»}½}Ó}Ù}õ}~3~u~R~�~‰~‰~‰~•~š~š~­~¸~Â~Ç~Ò~Ü~á~á~û~␍!␍-8=Q=]hmmx†‹‹–¡¦¦·¼¼ÍÒÒì÷ü€ü€€)€€5€:€B€:€N€S€g€S€s€x€x€Œ€x€˜€˜€�€©€�€¼€Á€Á€Í€Á€à€å€å€ñ€å€� � �� �(�-�A�-�M�Y�d�o�t�ˆ�t�”� �«��»�Ï�»�Û�ì�ñ�ñ�ù�þ�þ�‚ ‚ ‚‚‚‚"‚'‚'‚0‚5‚5‚@‚E‚E‚P‚U‚U‚`‚e‚e‚p‚u‚u‚€‚…‚…‚�‚•‚•‚ ‚¥‚¹‚¥‚Å‚ЂÛ‚æ‚ë‚ë‚õ‚ú‚ú‚ƒ ƒ ƒƒƒƒ"ƒ'ƒ'ƒ/ƒ4ƒ4ƒAƒFƒFƒSƒXƒXƒXƒXƒXƒ`ƒeƒeƒmƒrƒrƒzƒƒƒ‡ƒŒƒŒƒ”ƒ™ƒ­ƒ™ƒ¹ƒʃσσáƒìƒ „„'„2„K„7„W„b„m„r„r„„„�„¯„´„ʄՄî„Ú„ú„…………'…2…R…W…m…x…‘…}…�…¨…³…¸…¸…Þ…Ê…ê…
††%†0†5†P†<†p†\†|†’†~†²†ž†¾†ɆΆΆô†à†‡ ‡%‡;‡F‡K‡f‡R‡†‡r‡’‡¨‡”‡ȇ´‡Ô‡߇ä‡ä‡
ˆö‡ˆ6ˆ;ˆQˆ\ˆaˆ|ˆhˆœˆˆˆ¨ˆ¾ˆªˆÞˆʈêˆõˆúˆúˆ ‰‰‰‰"‰"‰"‰(‰-‰-‰-‰7‰9‰9‰C‰P‰p‰r‰r‰|‰|‰|‰|‰|‰|‰|‰~‰~‰•‰›‰¦‰¦‰³‰¹‰À‰ˉÖ‰á‰ì‰ñ‰ŠŠ2Š:ŠcŠ[Š{Š{Š{ŠƒŠŒŠ’Š�Š�ЫооŠÖŠàŠôŠ‹‹‹/‹?‹T‹f‹v‹v‹ž‹¥‹§‹­‹³‹³‹‹Ô‹Ø‹Ý‹ä‹ô‹ŒŒŒ.Œ5Œ:Œ:Œ>ŒIŒUŒcŒ�Œ™ŒªŒ¸ŒëŒ÷ŒüŒ�*�6�G�L�]�|�ª�Ð�Ó�ã�å�å�é�ŽŽŽŽ$ŽRŽrŽrŽrެ�Õ0.¯.¯7¯=¯E¯T¯c¯h¯Ö0!n¯n¯|¯‚¯†¯•¯¤¯ª¯×,¶½¶½¿½É½Ù½ä½ä½¾ØØ4fþ¾þ¾¿¿¿B¿B¿_¿r¿…¿˜¿�¿�¿»¿É¿Ü¿ï¿÷¿÷¿ù¿ù¿ù¿ ÀÀÀÀÀ(À;À;À;ÀMÀYÀlÀ‚À‡ÀŽÀ•ÀªÀ½ÀÄÀÄÀÇÀìÀÙ¤/T®ú®úÈúÎúÕúÝúåúèúóúûûûûû-û-û0û8ûNûQû_ûbûeûlûpûxû†û˜ûžû¦ûÛûÚD¬9p„p„ˆ„²„º„º„Ȅۄô„÷„………………%…'…'…/…1…1…9…9…B…H…M…M…V…b…f…k…q…v…v…~…‡…�…’…’…—…£…»…Ú…Ý…ò…†††††††#†%†%†%†-†/†/†/†7†9†9†D†D†J†O†V†a†q†q†q†q†x†ƒ†“†“†ž†¢†¨†À†Î†á†í†
‡␍‡‡&‡.‡7‡B‡B‡M‡S‡X‡_‡j‡o‡v‡�‡�‡“‡¨‡°‡¶‡Ø‡ä‡ê‡ï‡ö‡ˆˆˆˆˆ ˆ ˆ'ˆ2ˆ=ˆ=ˆ=ˆ=ˆ”ˆÛDýÊæ¥æ¥¦¦¦ ¦$¦*¦<¦B¦Z¦`¦~¦’¦�¦£¦Å¦Å¦Õ¦ê¦ì¦ï¦û¦§ §§!§'§-§9§9§;§M§S§X§X§o§o§�§�§ §­§²§²§É§Ò§á§÷§¨¨¨+¨8¨J¨P¨Z¨f¨s¨u¨u¨}¨‚¨‚¨Š¨�¨�¨—¨œ¨œ¨¤¨©¨©¨¯¨´¨´¨»¨À¨À¨Ç¨Ì¨Ì¨×¨Ü¨Ü¨ç¨ì¨ì¨÷¨ü¨ü¨©©©#©)©,©3©6©A©H©K©]©_©e©p©p©p©z©’©§©·©È©Î©ß©å©ê©ô©ªª%ª+ª<ªGªQª`ªoªuª€ª†ª›ª¡ª²ª½ªÃªÓªÓªãªöª«
««!«'«8«C«H«e«z«ˆ«˜«¤«¶«Á«Ð«Ò«ä«ì«ñ«ø«ü«
¬¬¬$¬*¬5¬;¬=¬J¬W¬a¬†¬†¬Œ¬“¬Ó®Ü4¤í†¢†¢ ¢¤¢¼¢Ä¢Ì¢Ö¢Ú¢á¢ç¢û¢££ ££!£)£4£?£A£Y£`£g£r£}££Š£•£—£££¬£¬£Â£ã£é£ï£¤¤¤!¤'¤'¤/¤3¤>¤C¤U¤`¤d¤r¤t¤x¤‡¤‡¤‡¤˜¤˜¤�¤¯¤µ¤#¥Ý˜Š¬8ƒ8ƒFƒXƒ\ƒdƒlƒwƒ‚ƒŠƒ•ƒ ƒ¥ƒ½ƒÄƒËƒÖƒáƒãƒîƒùƒûƒ„„„&„.„.„2„i„Þl␍¤ޑޑ«‘²‘º‘őݑç‘ç‘ÿ‘ ’$’:’H’L’l’€’‡’Š’£’­’¾’À’Ñ’Ñ’Ø’ß’è’í’ò’ù’““!“1“5“5“?“U“Y“Y“k““““““𓥓¬“µ“À“ǓГۓâ“â“í“ ”””B”B”H”O”^”f”t”{””�”“”“”“”¥”­”Ó”á”á”å”ú”•••2•7•E•T•\•j•u•y•~•†•Š•™•›•ª•¬•»•½•̕ӕٕí•õ•–
–––)–.–L–T–b–i–m–u–ƒ–Š–Ž–ª–²–½–Ã–Ã–Ã–Ì–×–ç– ———+—3—>—C—K—V—b—f—q—v—ˆ—�—›—›—›—›—©—¸—Õ—á—é—ù— ˜'˜+˜Z˜@˜j˜j˜t˜{˜Š˜™˜¡˜¯˜¶˜º˜¼˜Ë˜Ó˜á˜è˜ì˜ì˜î˜™™™™™™$™6™>™V™‚™�™”™²™¹™À™Ë™á™ã™ê™ý™šššš š3š;šIšPšTšTšTšTšbšmš|š„š’š�š¡š¡š¦š®š²šÁšÃšÒšÔšãšåšôšûš›››+›2›6›F›Q›V›t›|›Š›‘›•›�›«›²›¶›Ò›Ú›å›ë›ë›ë›ô› œ#œ3œ>œSœXœcœsœ•œ�œ¨œ·œ¿œÊœÏœ×œâœîœòœýœ���'�'�'�'�;�K�`�m�q�…�–�«�¸�¼�Ê�ß�ï�ž ž8ž:žEžMžMžVžkž|ž“ž¬žÅžÇžÒžÚžÚžÚžôžŸŸ%ŸBŸQŸ}Ÿ„Ÿ„Ÿ”Ÿ¨ŸÂŸÂŸÆŸÜŸëŸ  ( 0 0 R R e € ‰ ž ¾ Í ù ¡¡6¡F¡^¡^¡v¡v¡‚¡š¡²¡»¡»¡»¡Ç¡Ø¡ð¡ù¡ù¡¢ ¢¢¢�¢ßPíý&¥&¥8¥M¥^¥q¥x¥€¥�¥˜¥©¥¯¥á¥àSv v ™ ® ³ » à Ë Ø Þ ç í ò ú     - - / K Q S U b b b g p x � ‰ ‹ “ › £ °  Á È Ø ã ï ␍␍␍ ␍%␍6␍=␍E␍E␍Y␍i␍q␍t␍Ú␍ádVïVïbïyï‰ï�ï•ï™ï£ï­ïµï¸ï¾ïâp6 6 L W b p { � ’ ˜ © ¯ » Ò Ò ä õ     m ãœTwÞûÞûúûÿûüüü!ü1ü9üAüFüQü[üaülü|ü„ü”ü›ü£ü«ü³ü»üÀüËüÙüÙüïüä”*KVÇVÇ^ÇbÇnÇÇ�ǑǜǮǹÇÄÇëÇëÇÈÈÈÈ È&È9ÈBÈPÈaÈ}ȂȟÈå f*îÀîÀÁÁÁ&Á(Á(Á9Á9Á9ÁAÁIÁ[Á[ÁÁ�Á�Á›Á�Á�Á¨Á­ÁÇÁÌÁÌÁÌÁáÁãÁðÁòÁÿÁÂÂÂÂ%Â4ÂAÂCÂWÂdÂdÂdÂmÂ’˜ ¢¯¯ÂÄÂÄÂÄÂÏÂÙÂñÂöÂöÂöÂÃ
ÃÃÃ"Ã4Ã?ÃDÃDÃKÃOÃ]ÃdÃmÃtÆÃ�ÔÃ�Ã¹Ã¾Ã¾Ã¾Ã¾ÃÆÃÑÃßÃßÃÿÃÿÃÿÃÄÄ#Ä6ÄIÄKÄKÄKÄ^Ä^ÄeÄlÄqÄwĉēĮÄ×ÄÝÄÝÄñÄöÄÅÅÅ-Å:ÅEÅLÅPÅPÅPÅPÅ[ÅeÅs੮ÅÇÅÇÅÕÅÿÅÆ#Æ:ÆMÆRÆRÆRÆZÆeÆwÆ‚Æ‡Æ‡Æ‡Æ™ÆÆÆÌÆÌÆÌÆ×ÆáÆíÆøÆúÆúÆúÆÿÆ Ç ÇUÇæ¤>n n † ˜ ž ª µ à Ï æ ñ !!! !%!8!>!G!M!_!e!p!x!†!“!Ð!ç’ÐÆÆäò
(.39GN]bnŒ—ª±Ëèô'CL[cpy~�½ÂÊãõ  %kF{‘ÆÉé}èP™iöËöËÌÌÌ&Ì0ÌHÌXÌaÌgÌkÌoÌq̴̶̙̦̬̰̺̉̾̾ÌáÌåÌëÌëÌòÌÍ)Í<ÍOÍUÍ\ÍgÍqÍuÍxÍÍ…Í‹Í�ͧͬ͡ͳÍÀÍÂÍÔÍÖÍÛÍèÍêÍüÍüÍüÍüÍüÍÎ)Î5ÎOÎOÎdÎpÎ�αÎËÎÐÎçÎìÎúÎÏÏÏ-ÏBÏHÏXÏeÏ}Ï„Ï�ϛϨϴϴϴϺϽÏÀÏÙÏßÏóÏùÏÐ Ð ÐÐÐ*Ð*Ð0Ð>ÐUÐ[Ð^ÐaÐhÐoÐvÐvÐ{ЈЕЕЛЩÐÀÐÆÐÉÐÌÐÓÐÓÐäÐéÐöÐÑÑ
ÑÑÑ!Ñ(Ñ3ÑGÑGÑaÑfÑmÑuÑ|Ñ‹Ñ�јѰѵÑÞÑéÑðÑøÑÒ%Ò%Ò@Ò@ÒZÒoÒvÒ˜Ò«ÒÏÒÑÒÛÒýÒýÒýÒÓ$Ó2ÓJÓNÓ#Ôé S’Þ␍Þ␍ 09;HHJdjln{{{{Ž—Ÿ¨°·½¿Ûßñ
#00DKR[ir’˜œ¡¦©³ÆêP&¾ï¾ïÊïáïñïõïýïð ððð ð&ðë4îøîøùNù?ùùùbùjùì ÐÏ~~›¦¹¦Óááñú;GSYd††™¤ª±ÉÔßæîûû␍"''':?RX_tˆˆ���¢¢§®½¿ÇÎÎÝãð÷ú$3>EG[mrwwwŠ�ž¥¬ÁÕÕÚÚâøý)8JYlp�›ªÇÒ׿ý +;=KXho„‹—¨¿ÁÍØÚÚåù '<CS_€‡“´´´¼ÇËÓ×âéù#*5>FKKZgu€‹™Ÿ¥«´»ÍÚâîü)+7X^djs„®·ÁÎæíù##05GMMMMí€Ïë4FLXoo�‡’¢®·½ÃÎÜéõBî4-6VðVðdð„ðŠð�ð�ð–ðïH f*f*t*~*ˆ*˜*�*£*¯*±*Ã*Ã*Å*õ*ðˆ{™®Ê®ÊÀÊÕÊßÊèÊêÊñÊË ËËËËË/Ë2Ë2ËSË^Ë`Ëyˀ˄Ë�Ë£ËöËñ$␍.¾.¾7¾K¾P¾ò$޾޾—¾¶¾»¾óp4¾¾¾¾Ì¾Ö¾ß¾æ¾í¾÷¾÷¾ý¾ô$␍¾¾¾(¾.¾õ$V¾V¾d¾ƒ¾‰¾öÐK{¦È¦ÈºÈÏÈÞÈâÈðÈöÈÉÉÉ É*É5É<ÉLÉvÉ|É�ɅɕɕɫɭɷɨÉãÉåÉþÉÊÊÊÊÊ(Ê0ÊCÊ­Ê÷ø€ºf/f/„/‡/�/¡/©/º/Ç/Í/Ò/Ò/ß/è/î/þ/ 0 0&020>0>0L0_0j0n0000„0„0�0Ÿ0²0¸0½0Ñ0×0ß0ñ0÷0ù0111!1&1,12191E1L1N1S1[1]1b1n1p1u1}11„1Œ1Ž1“1›1�1¢1¬1®1³1½1½1½1Í1Í1Í1ä1ê1ð1û122!2'22262<2G2`2k2v2|2‰2Ž2“2“2¨2°2¸2Ö2á2ì2ò23
333)30393E3K3W3[3`3p3{3†3ˆ3Ž3›3 3¥3¾3É3Ô3Ô3Ú3ç3é3î3÷344&4,49494=4B4B4S4U4U4h4j4j4}444’4”4”4§4©4©4»4»4Á4Æ4Æ4Ý4ñ4æ4þ45␍555/515J5J5d5g5i5u5‡5—5£5º5Ô5Ù5í5ý56666/6A6L6T6\6`6n6t6y6y66“6£6¨6¨6®6´6¹6¹6¹6¿6Î6á6î6ò6÷6÷6û67777767L7X7X7^7k7m7x7„7“7¦7¦7³7¿7¿7¿7¿7Ã7È7Ù7ë7ö7þ7888 8-898?8L8L8c8s8s8‡8“8•8ž8ª8Á8Á8Ç8Ô8Ö8è8è8ó8ó8ó8ó8ó8o;øŒ/nùnùŽù–ùšù¨ù®ù´ùáù÷ù úú0ú6úBúGúUútú}ú�ú�ú–ú–úœúœú¬úù  Cö*ö*+++.+F+L+Z+k+s+z+�+¶+Ð+Ý+ê+ú+,,,5,<,B,P,X,n,y,,…,¨,ú,JÖ!Ö!ó!û!""("."9"P"_"j"n"y"…"�"œ"³"Ê"Ý"ô" ###+#1#B#H#X#X#p#p#•#•#š#š# #¬#¹#Å#Ú#ñ#$ $$)$@$X$y$y$‚$‡$‡$‡$‡$—$ $¨$­$»$É$Ù$Þ$Þ$ö$ö$û$û$%%"%(%4%D%O%Y%]%f%%‚%’%Ÿ%¯%¿%Æ%Ì%Ø%à%ë%ò%ö% &&&'&-&=&M&M&z&œ&¨&°&»&Â&Í&Ï&Ú&Ú&ê&ï&ï&ù&'''*'7'D'N'R'['t'w'‡'Ž'“'“'§'§'¬'°'À'É'Û'á'ã'ã'ñ'÷'ý'(( (0(0(0(5(M(M(\(_(s(‘(œ(Å(×(â(ô(ø(ý())&)>)E)I)O)W)b)e*ûC€®,®,Ê,Ñ,é,- ----&-2-=-K-[-k-r-y-Ž-£-£-·-Ï-Ü-ë-ø-..%.3.:.A.V.k.k..Œ.š.ª.°.Á.Á.Ç.Õ.æ.ó./e/üˆwÕöüöüý#ý*ý2ý5ý5ýEýPýPýSýZýaýhýnýtý{ý�ý’ý’ý”ý�ý©ý¯ýÕýÜýßýïý÷ýüýüýþ þþ þ&þ1þBþBþKþPþZþaþhþpþvþxþ†þ�þ þ¯þ»þÈþÈþÈþÈþÎþàþæþ÷þÿ,ÿ@ÿGÿQÿYÿ`ÿ`ÿiÿpÿÿ�ÿšÿšÿšÿ®ÿÂÿÒÿÕÿ�ý|Ôo¶ã¶ãØãßãîãùã ä ä(ä*ä*ä1ä[äeäeätäƒä˜ä£ä£ä²ä¹äÉäÏäíäøäúäåå$å4åFåOåZå_åeålå‘å–å¤å­å­å´åÃåÚåÚåéåïåæ
æææ!æ'æ/æUæ^æeæjæuæ�æ�æ¤æ©æ±æ½æÏæÏæææíæõæççç&ç&ç5ç;çOçXçhçwçŒç•ç¥ç¸çÃç×çøçèè è6èRèdèjèuè�è‘è¡è¦è¯è¯èÁèÅèÑèèèééé'é3éCéSéeékéképéréréwéwé†éŒé’é’é–éìþ¼iÔ&Ô&ÔDÔOÔZÔ€Ô€Ô‚Ô–Ô¡Ô§Ô¸ÔÇÔÖÔãÔãÔéÔîÔóÔÕÕ$Õ(Õ:ÕKÕSÕZÕuÕƒÕƒÕƒÕŽÕªÕ•Õ»Õ²ÕÅÕÇÕãÕÏÕëÕùÕùÕûÕÖÖÖ$Ö-Ö4Ö7ÖNÖYÖmÖ`ÖuÖ{քքք֤֤֗֜֜֯ÖÄÖÍÖÍÖÍÖÍÖéÖ×× × × ×&×+×+×7×T×r×w×|×|׈ץ״×Ã×Ë×Ð×Ö×Û×Û×â×é× Ø)Ø+ØHØ]Ø]ØcØcØw؀؀حظؽØÑØÜØäØìØüØÙÙ#Ù#Ù5Ù;ÙcÙlÙlÙnÙuÙzÙzَٟٙ٨٨ٻÙÏÙáÙìÙúÙÚÚ/Ú8ÚCÚHÚOÚWÚjÚÚ„Ú‹Ú˜ÚŸÚ±ÚÆÚÍÚÓÚÜÚÜÚÿÚÛ ÛÛ)Û7Û7Û=ÛDÛMÛMÛ`ÛrÛuÛuÛ†ÛŽÛ–Û¢Û¿ÛÆÛÓÛÕÛÜÛðÛÿÛÿÛÿÛ&Ü&Ü&Ü:Ü:ÜOÜZÜlÜy܄ܒÜ�ܬܳÜÍÜàÜâÜñÜÝÝÝ+Ý+Ý1Ý:Ý:ÝNÝTÝfÝfÝzÝ}݈ݚݡݬݱݹÝÀÝËÝÐÝåÝêÝÞÞÞÞÞ"Þ)Þ=ÞKÞ`Þ`ÞfÞmÞvÞ{ޜޥޥޫ޴޴ÞÓÞÓÞçÞêÞðÞùÞß ßß$ß/ß/ßCßFßLßUß]ßhßz߀ߋߋߟߢߨ߱߳ßÕßèßýßàà à&à.à.à.à.à9à´ãÿÄB¯&ñ&ñHñSñZñcñsñ…ñŒñ’ñ˜ñ�ñÂñÏñÒñÛñíñóñøñò.ò2ò8òOòVòdòjòvò€ò…òŒò¥ò¯ò¸òÈòÊòÑòÖòÞòýò óó1óPóWóaópóvó|ó‚óˆóžó¿óÓóßóöóô
ôô*ô7ôEô`ômôxô�ô°ôÂôÙôâôèôôôùôõõ"õ/õ6õ6õDõSõUõcõrõ„õ„õŒõ¯õºõîõXµîõîõö#ö6öAöSöaöhöwö~ö†öœö¤ö·öÌöÜöæöèöøö÷÷÷÷#÷*÷0÷6÷A÷L÷O÷V÷p÷x÷’÷§÷´÷·÷¿÷Ã÷Õ÷ä÷ï÷÷÷ø'ø+ø4ø;øMøUø\ø`øiøkø}ø”ø¢ø¨ø¬ø®ø»ø»ø»ø½øÔøÚøÚøìøÕ––¸ÀÆÓèöüüüü   '3>DNUffq{{�“£©®µµÖÜëþ␍␍.8==R\\py…› §º¾¾ÆÌÒÜãêó*.5;J]cgntzz|€‡�“˜˜˜˜ÃÔÔëøü99?BFLL^o„˜ ±µÆÊÐéëñþ *1<_jpv|…Œ¡²º¾ÏÓÙòôú 39?ENUeŒ•››°µµ¼ÃÕÚÚÚôö,2:>Ehnt€—ž¤°µµ¼ÀÇÕ×ßäì÷ý !&5P`m|˜š½Ò×àíòùþþ     ( , 0 : F M Q Y a i x „ ‰ • • ž ž Á Á Ï Õ Ú Þ ã ã ã ã é ë ë 


7
9
9
9
D
D
D
I
l
r hëFF\nt�™°°ÂÈÓãîü 5 DáîÈÈÑÜçòý)+;X¼ÎêÈêÈÉÉÉ#É0ÉEÉGÉYÉcÉxÉxÉÉ‚ÉÖÉH’­’­¬­¿­É­ЭÜ­õ­þ­®®®:®Lƒ’&&&-&=&D&[&v&ˆ&Œ&Ï&¨»á¸␍¸␍È␍Ê␍Õ␍à␍ñ␍ü␍,09<R]fovƒ—ž ¤¦¾Èdîƒ@@Ydt½ÄØßçïø
!(G_hh�ÇÐò )S_�ƒŠ‘‘·÷7w·÷77FSXXgtvv~~~�¦¿ØÚÚááïòÿ␍1lsss{˜¦ÄÍÖò666Sa}›››¦©ÖØïõ -/<<`bizƒ…“•£¥³³ÓÓÓÓàó'4MUYaes�ƒ‹�“›©··ÑÜò$;FPWp|ƒœœ®³µ»ÌÝìó␍ -/===aa~…Œ�›ž¬°¾ÂÐÔÔíôù 5UhwyˆŠ™££±ºÐ×ü*Z_mo}† ¢¤«¼ÅÇÕ×åçõõ444?[€™žžžÀÅÅÅåêêê <Xlqqy|� ¼ÐÕÕÜßä 388S`bqz”––›–¼¾¾Áÿÿÿ   ? D D D f k k k ‹ � � � ¯ ´ ´ Ï Ý ß î ÷      9 ; ; > | | | ‡ ‡ ± ± Û ó !!,!<!Q!i!}!—!™!ª!Ä!Û!â!& L’¡Ð&Ð&é&ë&ò&'''5'M'P'b'ª'
(6<–ð–ðšð²ðÄðÞð (<BÞðÞðìðññ!ñ
+2 -1
View File
@@ -10,7 +10,8 @@
#exe {OptOff(OPTf_KEEP_PRIVATE);};
#include "CmpAsm"
#include "CmpExts"
#include "CmpGlbls"
CCmpGlbls cmp;
CUasmGlbls uasm;
#include "Unassembler"
#include "ICLCC"
#include "Lex"
+121 -58
View File
@@ -57,43 +57,43 @@ CIntermediateCode *PrsAddOp(CLex *lx,I64 stk_op,CHashClass *tempc)
case IC_ADD:
if (tempc->ptr_cnt && !tempi->ic_class->ptr_cnt &&
tempi->ic_class->raw_type!=RT_F64) {
LCCAdd(lx,IC_SIZEOF,1,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_MUL,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_SIZEOF,1,cmp.internal_types[RT_I64]);
LCCAdd(lx,IC_MUL,0,cmp.internal_types[RT_I64]);
}
break;
case IC_SUB:
if (tempc->ptr_cnt && tempi->ic_class->raw_type!=RT_F64) {
if (!tempi->ic_class->ptr_cnt) {
LCCAdd(lx,IC_SIZEOF,1,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_MUL,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_SIZEOF,1,cmp.internal_types[RT_I64]);
LCCAdd(lx,IC_MUL,0,cmp.internal_types[RT_I64]);
} else
div_sizeof=TRUE;
}
break;
case IC_AND_AND:
case IC_OR_OR:
LCCAdd(lx,IC_NOP1,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_NOP1,0,cmp.internal_types[RT_I64]);
break;
case IC_ADD_EQUAL:
case IC_SUB_EQUAL:
if (tempc->ptr_cnt) {
LCCAdd(lx,IC_SIZEOF,1,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_MUL,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_SIZEOF,1,cmp.internal_types[RT_I64]);
LCCAdd(lx,IC_MUL,0,cmp.internal_types[RT_I64]);
}
break;
}
tempi=LCCAdd(lx,stk_op,0,tempc);
if (stk_op.u8[3]&ECF_HAS_PUSH_CMP) {
tempi->ic_flags|=ICF_POP_CMP;
LCCAdd(lx,IC_NOP1,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_AND_AND,0,sys_internal_types[RT_I64],ICF_POP_CMP);
LCCAdd(lx,IC_NOP1,0,cmp.internal_types[RT_I64]);
LCCAdd(lx,IC_AND_AND,0,cmp.internal_types[RT_I64],ICF_POP_CMP);
}
if (div_sizeof) {
tempc--;
if (tempc->size!=1) {
LCCAdd(lx,IC_IMM_U64,tempc->size,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_DIV,0,sys_internal_types[RT_I64]);
tempc=sys_internal_types[RT_I64];
LCCAdd(lx,IC_IMM_U64,tempc->size,cmp.internal_types[RT_I64]);
LCCAdd(lx,IC_DIV,0,cmp.internal_types[RT_I64]);
tempc=cmp.internal_types[RT_I64];
}
}
return tempi;
@@ -161,7 +161,7 @@ pe_check_binary_ops1:
} else if (paren_prec<=PREC_UNARY_PRE+ASSOC_MASK)
ParenWarning(lx);
}
cur_op=binary_ops_table[lx->token];
cur_op=cmp.binary_ops[lx->token];
case PE_CHECK_BINARY_OPS2:
pe_check_binary_ops2:
@@ -187,7 +187,7 @@ pe_check_binary_ops2:
tempc--;
else if (stk_op.u16[0]==IC_ADDR) {
lx->abs_cnts.c_addres++;
if (Bt(ic_bitmap_deref,tempi->ic_code))
if (Bt(cmp.ic_bitmap_deref,tempi->ic_code))
OptFree(tempi);
tempc++;
}
@@ -210,13 +210,13 @@ pe_do_binary_op:
tempi=lx->lcc.lcc_root.last;
if (!tempi->ic_class->ptr_cnt &&
tempi->ic_class->raw_type!=RT_F64) {
LCCAdd(lx,IC_SIZEOF,1,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_MUL,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_SIZEOF,1,cmp.internal_types[RT_I64]);
LCCAdd(lx,IC_MUL,0,cmp.internal_types[RT_I64]);
}
break;
case IC_AND_AND:
case IC_OR_OR:
LCCAdd(lx,IC_NOP1,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_NOP1,0,cmp.internal_types[RT_I64]);
break;
}
if (lx->flags & LF_FUN_EXP) {
@@ -233,10 +233,10 @@ pe_do_binary_op:
if (cur_op.u8[2]>max_prec)
max_prec=cur_op.u8[2];
left_prec=cur_op.u8[2];
if (Bt(ic_bitmap_assign,cur_op.u16[0])) {
if (Bt(cmp.ic_bitmap_assign,cur_op.u16[0])) {
tempi=lx->lcc.lcc_root.last;
tempc=OptClassFwd(tempi->ic_class);
if (!Bt(ic_bitmap_deref,tempi->ic_code) ||
if (!Bt(cmp.ic_bitmap_deref,tempi->ic_code) ||
!tempc->ptr_cnt && !Bt(&tempc->flags,Cf_INTERNAL_TYPE))
LexExcept(lx,"invalid lval at ");
tempi->ic_code=IC_NOP1; //Important for setting class (pretty sure)
@@ -257,13 +257,13 @@ pe_pop_higher:
tempi=PrsAddOp(lx,stk_op,tempc);
if (Bt(ic_bitmap_cmp,cur_op.u16[0]) && Bt(ic_bitmap_cmp,stk_op.u16[0])) {
if (Bt(cmp.ic_bitmap_cmp,cur_op.u16[0]) && Bt(cmp.ic_bitmap_cmp,stk_op.u16[0])) {
tempi->ic_flags|=ICF_PUSH_CMP;
LCCAdd(lx,IC_NOP1,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_NOP1,0,cmp.internal_types[RT_I64]);
LCCAdd(lx,IC_PUSH_CMP,0,tempc);
cur_op.u8[3]|=ECF_HAS_PUSH_CMP;
} else if (cur_op.u16[0]==IC_AND_AND || cur_op.u16[0]==IC_OR_OR)
LCCAdd(lx,IC_NOP1,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_NOP1,0,cmp.internal_types[RT_I64]);
goto pe_pop_higher;
case PE_PUSH_LOWER:
@@ -332,7 +332,7 @@ U0 PrsSizeOf(CLex *lx)
{
CHashClass *tempc;
CMemberLst *tempm;
CDbgInfo *dbg;
CDbgInfo *dbg_info;
I64 i;
if (lx->token!=TK_IDENT)
LexExcept(lx,"invalid class at ");
@@ -346,9 +346,9 @@ U0 PrsSizeOf(CLex *lx)
(HTT_CLASS|HTT_INTERNAL_TYPE|HTT_GLBL_VAR|HTT_FUN|HTT_EXPORT_SYS_SYM)))
LexExcept(lx,"invalid class at ");
if (tempc->type&(HTT_FUN|HTT_EXPORT_SYS_SYM)) {
if (!(dbg=tempc(CHashFun *)->debug))
if (!(dbg_info=tempc(CHashFun *)->dbg_info))
LexExcept(lx,"Size not defined at ");
i=dbg->body[dbg->max_line+1-dbg->min_line]-dbg->body[0];
i=dbg_info->body[dbg_info->max_line+1-dbg_info->min_line]-dbg_info->body[0];
Lex(lx);
} else {
i=tempc->size;
@@ -373,7 +373,7 @@ pu_sizeof_member:
while (Lex(lx)=='*');
i=sizeof(U8 *);
}
LCCAdd(lx,IC_IMM_U64,i,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_IMM_U64,i,cmp.internal_types[RT_I64]);
}
U0 PrsOffsetOf(CLex *lx)
@@ -403,7 +403,7 @@ U0 PrsOffsetOf(CLex *lx)
i+=tempm->offset;
tempc=tempm->member_class;
} while (Lex(lx)=='.');
LCCAdd(lx,IC_IMM_U64,i,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_IMM_U64,i,cmp.internal_types[RT_I64]);
}
I64 PrsFunCall(CLex *lx,CPrsStk *ps,Bool indirect,CHashFun *tempf)
@@ -444,10 +444,10 @@ I64 PrsFunCall(CLex *lx,CPrsStk *ps,Bool indirect,CHashFun *tempf)
if (indirect) {
if (!(lx->flags & (LF_RAX | LF_ARRAY)))
LCCAdd(lx,IC_DEREF,0,sys_internal_types[RT_PTR]);
lx->lcc.lcc_root.last->ic_class=sys_internal_types[RT_PTR];
LCCAdd(lx,IC_SET_RAX,0,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_NOP2,1,sys_internal_types[RT_PTR]); //balance the books
LCCAdd(lx,IC_DEREF,0,cmp.internal_types[RT_PTR]);
lx->lcc.lcc_root.last->ic_class=cmp.internal_types[RT_PTR];
LCCAdd(lx,IC_SET_RAX,0,cmp.internal_types[RT_PTR]);
LCCAdd(lx,IC_NOP2,1,cmp.internal_types[RT_PTR]); //balance the books
}
LCCPush(lx);
tempcbh=lx->lcc.lcc_next;
@@ -485,7 +485,7 @@ I64 PrsFunCall(CLex *lx,CPrsStk *ps,Bool indirect,CHashFun *tempf)
if (tempm->flags & (MLF_STR_DFT_AVAILABLE|MLF_LASTCLASS) &&
lx->flags&LF_AOT_COMPILE) {
mc=LCCMiscNew(lx,CMT_STR_CONST);
LCCAdd(lx,IC_STR_CONST,mc,sys_internal_types[RT_U8]+1);
LCCAdd(lx,IC_STR_CONST,mc,cmp.internal_types[RT_U8]+1);
mc->st_len=StrLen(dft_val)+1;
mc->str=StrNew(dft_val);
lx->flags|=LF_HAS_MISC_DATA;
@@ -592,9 +592,8 @@ I64 PrsFunCall(CLex *lx,CPrsStk *ps,Bool indirect,CHashFun *tempf)
LCCAdd(lx,IC_CALL_EXTERN,tempf,tempf->return_class);
} else
LCCAdd(lx,IC_CALL_INDIRECT2,&tempf->executable_addr,tempf->return_class);
} else {
} else
LCCAdd(lx,IC_CALL,tempf->executable_addr,tempf->return_class);
}
if ((Bt(&tempf->flags,Ff_RET1) || Bt(&tempf->flags,Ff_ARGPOP)) && !Bt(&tempf->flags,Ff_NOARGPOP)) {
if (indirect) {
LCCAdd(lx,IC_ADD_RSP1,(argc_cnt+tempf->arg_cnt)<<3,tempf->return_class);
@@ -661,18 +660,18 @@ I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempa
}
lx->abs_cnts.externs++;
LCCAdd(lx,IC_IMM_U64,
&tempf->executable_addr,sys_internal_types[RT_PTR]);
&tempf->executable_addr,cmp.internal_types[RT_PTR]);
LCCAdd(lx,IC_DEREF,0,
sys_internal_types[RT_PTR]);
cmp.internal_types[RT_PTR]);
} else {
if (lx->flags&LF_AOT_COMPILE) {
LCCAdd(lx,IC_ABS_ADDR,
tempf->executable_addr,sys_internal_types[RT_PTR]);
tempf->executable_addr,cmp.internal_types[RT_PTR]);
if (lx->flags&LF_ASM_EXPRESSIONS)
lx->abs_cnts.abs_addres++;
} else
LCCAdd(lx,IC_IMM_U64,
tempf->executable_addr,sys_internal_types[RT_PTR]);
tempf->executable_addr,cmp.internal_types[RT_PTR]);
}
lx->abs_cnts.c_addres++;
Lex(lx);
@@ -684,7 +683,7 @@ I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempa
tempex->type&HTF_IMM) {
lx->abs_cnts.c_addres++;
LCCAdd(lx,IC_IMM_U64,
tempex->val,sys_internal_types[RT_PTR]);
tempex->val,cmp.internal_types[RT_PTR]);
Lex(lx);
return PE_MAYBE_MODIFIERS;
} else
@@ -705,24 +704,24 @@ I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempa
case TK_CHAR_CONST:
case TK_INS_BINARY_SIZE:
if (lx->cur_i64<0)
LCCAdd(lx,IC_IMM_U64,lx->cur_i64,sys_internal_types[RT_U64]);
LCCAdd(lx,IC_IMM_U64,lx->cur_i64,cmp.internal_types[RT_U64]);
else
LCCAdd(lx,IC_IMM_U64,lx->cur_i64,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_IMM_U64,lx->cur_i64,cmp.internal_types[RT_I64]);
Lex(lx);
break;
case TK_F64:
LCCAdd(lx,IC_IMM_F64,lx->cur_f64(I64),sys_internal_types[RT_F64]);
LCCAdd(lx,IC_IMM_F64,lx->cur_f64(I64),cmp.internal_types[RT_F64]);
Lex(lx);
break;
case TK_STR:
mc=LCCMiscNew(lx,CMT_STR_CONST);
LCCAdd(lx,IC_STR_CONST,mc,sys_internal_types[RT_U8]+1);
LCCAdd(lx,IC_STR_CONST,mc,cmp.internal_types[RT_U8]+1);
mc->str=LexExtStr(lx,&mc->st_len);
lx->flags|=LF_HAS_MISC_DATA;
break;
case TK_INS_BINARY:
mc=LCCMiscNew(lx,CMT_STR_CONST);
LCCAdd(lx,IC_STR_CONST,mc,sys_internal_types[RT_U8]+1);
LCCAdd(lx,IC_STR_CONST,mc,cmp.internal_types[RT_U8]+1);
mc->str=lx->cur_str;
mc->st_len=lx->cur_str_len;
lx->cur_str=NULL;
@@ -733,14 +732,14 @@ I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempa
if (lx->flags & LF_ASM_EXPRESSIONS) {
lx->abs_cnts.abs_addres++;
if (lx->flags&LF_AOT_COMPILE)
LCCAdd(lx,IC_ABS_ADDR,lx->a->ip,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_ABS_ADDR,lx->a->ip,cmp.internal_types[RT_PTR]);
else
LCCAdd(lx,IC_IMM_U64,lx->a->ip,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_IMM_U64,lx->a->ip,cmp.internal_types[RT_PTR]);
} else {
if (lx->flags&LF_CLASS_IP)
LCCAdd(lx,IC_IMM_U64,lx->class_ip,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_IMM_U64,lx->class_ip,cmp.internal_types[RT_I64]);
else
LCCAdd(lx,IC_RIP,0,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_RIP,0,cmp.internal_types[RT_PTR]);
}
Lex(lx);
break;
@@ -810,7 +809,7 @@ I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempa
ps->ptr--;
if (i.u16[0]!=IC_ADDR)
LexExcept(lx,"expecting '&' at ");
LCCAdd(lx,IC_IMM_U64,tempm->offset,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_IMM_U64,tempm->offset,cmp.internal_types[RT_PTR]);
*_local_var=tempm;
Lex(lx);
return PE_MAYBE_MODIFIERS;
@@ -867,15 +866,15 @@ pu_export_sys_sym:
lx->flags|=LF_UNRESOLVED|LF_LOCAL;
else
lx->flags|=LF_UNRESOLVED;
LCCAdd(lx,IC_IMM_U64,&tempex->val,sys_internal_types[RT_PTR],ICF_NO_RIP);
LCCAdd(lx,IC_DEREF,0,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_IMM_U64,&tempex->val,cmp.internal_types[RT_PTR],ICF_NO_RIP);
LCCAdd(lx,IC_DEREF,0,cmp.internal_types[RT_PTR]);
} else {
if (lx->flags&LF_AOT_COMPILE && !(tempex->type & HTF_IMM))
LCCAdd(lx,IC_ABS_ADDR,tempex->val,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_ABS_ADDR,tempex->val,cmp.internal_types[RT_PTR]);
else {
if (tempex->type&HTF_IMM)
lx->abs_cnts.c_addres++;
LCCAdd(lx,IC_IMM_U64,tempex->val,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_IMM_U64,tempex->val,cmp.internal_types[RT_PTR]);
}
}
Lex(lx);
@@ -962,9 +961,9 @@ pu_export_sys_sym:
j++;
if (lx->token==TK_IDENT &&
(lx->hash_entry || lx->local_var_entry))
LCCAdd(lx,IC_IMM_U64,TRUE,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_IMM_U64,TRUE,cmp.internal_types[RT_I64]);
else
LCCAdd(lx,IC_IMM_U64,FALSE,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_IMM_U64,FALSE,cmp.internal_types[RT_I64]);
Lex(lx);
while (j--) {
if (lx->token!=')')
@@ -1134,7 +1133,7 @@ um_join:
}
U8 *LexExpression2Bin(CLex *lx,I64 *_type=NULL)
{
{//Compile lx expression. You call code.
U8 *result;
I64 size;
Bool old_trace=Btr(&lx->flags,Lf_OPT_TRACE_PRESENT);
@@ -1152,12 +1151,40 @@ U8 *LexExpression2Bin(CLex *lx,I64 *_type=NULL)
}
Bool IsLexExpression2Bin(CLex *lx,U8 **_ex)
{
{//Compile lx expression to bin. Return err status.
return ToBool(*_ex=LexExpression2Bin(lx));
}
I64 LexExpressionI64(CLex *lx)
{//Compile lx expression, forcing to I64 and eval.
U8 *ex;
I64 result,type;
if (ex=LexExpression2Bin(lx,&type)) {
result=Call(ex);
Free(ex);
if (type==RT_F64)
result=ToI64(result(F64));
} else
result=0;
return result;
}
F64 LexExpressionF64(CLex *lx)
{//Compile lx expression, forcing to F64 and eval.
U8 *ex;
I64 result,type;
if (ex=LexExpression2Bin(lx,&type)) {
result=Call(ex);
Free(ex);
if (type!=RT_F64)
result(F64)=ToF64(result);
} else
result=0;
return result(F64);
}
I64 LexExpression(CLex *lx)
{
{//Compile lx expression and eval. Might be I64 or F64.
U8 *ex;
I64 result;
if (ex=LexExpression2Bin(lx)) {
@@ -1167,3 +1194,39 @@ I64 LexExpression(CLex *lx)
result=0;
return result;
}
CD2I32 *LexD2I32(CLex *lx,CD2I32 *p)
{//Not HolyC. Sprite-like lex 2D point.
if (lx->token!='(')
LexExcept(lx,"expecting '(' at ");
Lex(lx); //Skip (
p->x=LexExpressionI64(lx);
if (lx->token!=',')
LexExcept(lx,"expecting ',' at ");
Lex(lx); //Skip ,
p->y=LexExpressionI64(lx);
if (lx->token!=')')
LexExcept(lx,"expecting ')' at ");
Lex(lx); //Skip )
return p;
}
CD3I32 *LexD3I32(CLex *lx,CD3I32 *p)
{//Not HolyC. Sprite-like lex 3D point.
if (lx->token!='(')
LexExcept(lx,"expecting '(' at ");
Lex(lx); //Skip (
p->x=LexExpressionI64(lx);
if (lx->token!=',')
LexExcept(lx,"expecting ',' at ");
Lex(lx); //Skip ,
p->y=LexExpressionI64(lx);
if (lx->token!=',')
LexExcept(lx,"expecting ',' at ");
Lex(lx); //Skip ,
p->z=LexExpressionI64(lx);
if (lx->token!=')')
LexExcept(lx,"expecting ')' at ");
Lex(lx); //Skip )
return p;
}
+19 -87
View File
@@ -1,72 +1,6 @@
CHashSrcSym *HashEntryImportCopy(CHashSrcSym *temph)
{ //Actually this imports, not copies!!
CHashSrcSym *result=MAllocIdentical(temph);
result->str=MAllocIdentical(temph->str);
result->use_cnt=0;
result->src_link=NULL;
result->index=NULL;
result->ie_lst=NULL;
result->debug=NULL;
if (temph->type & (HTT_FUN | HTT_CLASS)) {
result(CHashClass *)->member_lst =MemberLstCopy(temph);
result(CHashClass *)->member_lst2=temph(CHashClass *)->member_lst2;
if (temph->type & HTT_FUN) {
if (Bt(&temph(CHashFun *)->flags,Ff_INTERNAL)) {
result->import_name=NULL;
LBtr(&result(CHashFun *)->flags,Cf_EXTERN);
} else {
result->import_name=MAllocIdentical(temph->import_name);
result->type|=HTF_IMPORT;
LBts(&result(CHashFun *)->flags,Cf_EXTERN);
}
}
} else if (temph->type & (HTT_EXPORT_SYS_SYM | HTT_GLBL_VAR)) {
result->import_name=MAllocIdentical(temph->import_name);
result->type|=HTF_IMPORT;
if (temph->type&HTT_EXPORT_SYS_SYM) {
result->type|=HTF_UNRESOLVED;
result(CHashExport *)->val=0;
} else {
result(CHashGlblVar *)->dim.next=LinkedLstCopy(temph(CHashGlblVar *)->dim.next);
result(CHashGlblVar *)->flags|=GVF_IMPORT|GVF_ALIAS;
if (temph(CHashGlblVar *)->fun_ptr)
result(CHashGlblVar *)->fun_ptr=HashEntryImportCopy(temph(CHashGlblVar *)->fun_ptr-temph(CHashGlblVar *)->fun_ptr->ptr_cnt)(CHashFun *)+temph(CHashGlblVar *)->fun_ptr->ptr_cnt;
}
} else if (temph->type&HTT_DEFINE_STR)
result(CHashDefineStr *)->data=MAllocIdentical(temph(CHashDefineStr *)->data);
return result;
}
U0 HashTableImport(CHashTable *src,CHashTable *dst)
{
I64 i;
CHashSrcSym *temph,*temph1,*temph2;
if (!src) return;
for (i=0;i<=src->mask;i++) {
temph=src->body[i];
while (temph) {
if (temph->type & HTG_SRC_SYM) {
//Only add first in lst
temph2=src->body[i];
while (temph2!=temph)
if (!StrCmp(temph->str,temph2->str) &&
temph2->type & temph->type & HTG_SRC_SYM ||
temph->type & HTT_EXPORT_SYS_SYM)
break;
else
temph2=temph2->next;
if (temph2==temph && (temph1=HashEntryImportCopy(temph)))
HashAdd(temph1,dst);
}
temph=temph->next;
}
}
}
I64 HashEntrySize(CHashSrcSym *temph)
{
CDbgInfo *dbg;
{//Logical size of a std system hash entry.
CDbgInfo *dbg_info;
CBinFile *bfh;
switch (HashTypeNum(temph)) {
case HTt_DEFINE_STR:
@@ -76,8 +10,8 @@ I64 HashEntrySize(CHashSrcSym *temph)
case HTt_INTERNAL_TYPE:
return temph(CHashClass *)->size;
case HTt_FUN:
if (dbg=temph->debug)
return dbg->body[dbg->max_line+1-dbg->min_line]-dbg->body[0];
if (dbg_info=temph->dbg_info)
return dbg_info->body[dbg_info->max_line+1-dbg_info->min_line]-dbg_info->body[0];
else
return -1;
case HTt_FILE:
@@ -96,8 +30,8 @@ I64 HashEntrySize(CHashSrcSym *temph)
}
I64 HashEntrySize2(CHashSrcSym *temph)
{
CDbgInfo *dbg;
{//Memory size of a std system hash entry.
CDbgInfo *dbg_info;
I64 result=MSize2(temph);
if (!(temph->type&HTT_DICT_WORD))
result+=MSize2(temph->str);
@@ -107,14 +41,14 @@ I64 HashEntrySize2(CHashSrcSym *temph)
result+=MSize2(temph->import_name);
result+=LinkedLstSize(temph->ie_lst);
if (temph->type & (HTT_FUN | HTT_EXPORT_SYS_SYM))
result+=MSize2(temph->debug);
result+=MSize2(temph->dbg_info);
if (temph->type & HTT_CLASS)
result+=MemberLstSize(temph);
else if (temph->type & HTT_FUN) {
result+=MemberLstSize(temph);
if (dbg=temph->debug)
if (dbg_info=temph->dbg_info)
//This should be $LK,"MSize",A="MN:MSize"$() but it would crash on AOT .BIN.Z file funs.
result+=dbg->body[dbg->max_line+1-dbg->min_line]-dbg->body[0];
result+=dbg_info->body[dbg_info->max_line+1-dbg_info->min_line]-dbg_info->body[0];
} else if (temph->type&HTT_DEFINE_STR)
result+=MSize2(temph(CHashDefineStr *)->data);
else if (temph->type & HTT_GLBL_VAR) {
@@ -132,20 +66,18 @@ I64 HashEntrySize2(CHashSrcSym *temph)
return result;
}
I64 HashTableSize2(CHashTable *tempht)
{
I64 i,result=0;
I64 HashTableSize2(CHashTable *table)
{//Memory size of std system hash table and all entries.
I64 result=0;
CHashSrcSym *temph;
if (!tempht)
if (!table)
return 0;
for (i=0;i<=tempht->mask;i++) {
temph=tempht->body[i];
while (temph) {
result+=HashEntrySize2(temph);
temph=temph->next;
}
temph=table->next_added;
while (temph!=table) {
result+=HashEntrySize2(temph);
temph=temph->next_added;
}
result+=MSize2(tempht->body);
result+=MSize2(tempht);
result+=MSize2(table->body);
result+=MSize2(table);
return result;
}
+24 -42
View File
@@ -1,66 +1,47 @@
Bool OptEqu(I64 num,Bool val) {
Bool OptEqu(I64 num,Bool val)
{//Set compiler option to value.
return BEqu(&Fs->last_lex->opts,num,val);
}
//Turn on compiler option
Bool OptOn(I64 num) {
Bool OptOn(I64 num)
{//Turn on compiler option.
return OptEqu(num,ON);
}
//Turn off compiler option
Bool OptOff(I64 num) {
Bool OptOff(I64 num)
{//Turn off compiler option.
return OptEqu(num,OFF);
}
//Get state of compiler option
Bool GetOpt(I64 num) {
Bool GetOpt(I64 num)
{//Get state of compiler option.
return Bt(&Fs->last_lex->opts,num);
}
//Displays intermediate code after passes through optimization
Bool OTrace(Bool val) {
Bool OTrace(Bool val)
{//Displays intermediate code after passes through optimization.
return OptEqu(OPTf_OPT_TRACE,val);
}
//Ctrls which optimizer passes are displayed
I64 OTraceMask(I64 i=0b1001111101) {
I64 OTraceMask(I64 i=0b1001111101)
{//Ctrls which optimizer passes are displayed.
I64 old=Fs->last_lex->pass_trace_mask;
Fs->last_lex->pass_trace_mask=i;
return old;
}
//Displays assembly code output
Bool CTrace(Bool val) {
Bool CTrace(Bool val)
{//Displays assembly code output from compiler.
return OptEqu(OPTf_COMPILE_TRACE,val);
}
//Displays text as it is being compiled
Bool Echo(Bool val) {
Bool Echo(Bool val)
{//Displays text as it is being compiled.
return OptEqu(OPTf_ECHO,val);
}
U0 ImportHashTable(CHashTable *src)
{ //called from #exe {} in AOT modules
// See $LK,"::/Kernel/AOT.HPP"$.
CLex *lx=Fs->last_lex;
if (lx==&Fs->next_lex)
PrintErr("Not Compiling\n");
else {
if (!(lx->flags&LF_EXE_BLK))
LexExcept(lx,"import_hash_table only allowed in AOT compiled "
"#exe{} mode.");
while (src) {
if (lx->htc.next && lx->htc.next->glbl_hash_table)
HashTableImport(src,lx->htc.next->glbl_hash_table);
else if (lx->htc.glbl_hash_table)
HashTableImport(src,lx->htc.glbl_hash_table);
src=src->next;
}
}
}
I64 IncludeDepth()
{
{//Returns how many #includes we are in. See $LK,"IncludeDepth",A="FF:::/Demo/Graphics/Camp.CPP,IncludeDepth"$.
CLex *lx=Fs->last_lex;
return lx->cur_lfn-&lx->lfns;
}
@@ -89,17 +70,16 @@ U0 ICClassPut(CHashClass *c)
'' CH_SPACE;
}
U0 ICArgPut(CICArg *a)
{
if (a->type_pointed)
"%Z %Z %Z ",
a->type&RT_MASK,"ST_IT_TYPES",
a->type_pointed&RT_MASK,"ST_IT_TYPES",
a->type&RT_MASK,"ST_RAW_TYPES",
a->type_pointed&RT_MASK,"ST_RAW_TYPES",
a->type>>4,"ST_TY_TYPES";
else
"%Z %Z ",
a->type&RT_MASK,"ST_IT_TYPES",
a->type&RT_MASK,"ST_RAW_TYPES",
a->type>>4,"ST_TY_TYPES";
switch (a->type>>4) {
case TY_STK>>4:
@@ -195,7 +175,7 @@ U0 ICPut(CIntermediateCode *tempi)
}
if (tempi->ic_flags & ICF_ALTERNATE_TEMPLATE)
"ALT_TEMP ";
NewLine;
'\n';
}
}
@@ -406,6 +386,8 @@ U8 *LCCCompile(CLex *lx,I64 *_code_size,CDbgInfo **_dbg,I64 *_type)
}
LCCHeaderPut(lx,7,FALSE);
OptPass789(lx,reg_offsets,NULL,NULL);
LCCHeaderPut(lx,8,FALSE);
code_size=OptPass789(lx,reg_offsets,NULL,NULL);
do {
last_code_size=code_size;
@@ -424,7 +406,7 @@ U8 *LCCCompile(CLex *lx,I64 *_code_size,CDbgInfo **_dbg,I64 *_type)
LCCHeaderPut(lx,9,FALSE);
code_size=OptPass789(lx,reg_offsets,result,_dbg);
compiled_bytes+=code_size;
cmp.compiled_bytes+=code_size;
LCCDel(lx,&lx->lcc);
if (Bt(&lx->opts,OPTf_COMPILE_TRACE)) {
if (lx->flags&LF_AOT_COMPILE) {
+79 -92
View File
@@ -1,13 +1,11 @@
U8 *CmpPmt(Bool dbl_semicolon=FALSE)
U8 *CmpPrompt(Bool dbl_semicolon=FALSE)
{
I64 i;
U8 *result,*st;
for (i=MinI64(3,Fs->answers_displayed-1);i>=0;i--) {
if (Fs->answer_types[i]==RT_F64)
"%8.6fs ansf%d=%15.7g\n",Fs->answer_times[i],i,Fs->answers[i];
else
"%8.6fs ans%d=0x%08X=%d\n",Fs->answer_times[i],i,Fs->answers[i],Fs->answers[i];
}
if (Fs->answer_type==RT_F64)
"%8.6fs ansf=%15.7g\n",Fs->answer_time,Fs->answer;
else
"%8.6fs ans=0x%08X=%d\n",Fs->answer_time,Fs->answer,Fs->answer;
if (st=CurDir) {
"%s",st;
Free(st);
@@ -15,7 +13,7 @@ U8 *CmpPmt(Bool dbl_semicolon=FALSE)
'>';
if (IsDbg&&IsRaw)
RawDr;
st=MGetS(GETSF_SHIFT_ESC_EXIT);
st=GetStr(,,GSF_SHIFT_ESC_EXIT);
if (dbl_semicolon) {
i=StrLen(st);
result=MAlloc(i+1+2);
@@ -35,9 +33,10 @@ U8 *CmpPmt(Bool dbl_semicolon=FALSE)
}
CLex *LexNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL)
{//Frees buf in $LK,"LexDel",A="MN:LexDel"$ unless $LK,"LF_DONT_FREE_BUF",A="MN:LF_DONT_FREE_BUF"$ flag is set.
{//MAlloc new lex ctrl node.
//Frees buf in $LK,"LexDel",A="MN:LexDel"$ unless $LK,"LF_DONT_FREE_BUF",A="MN:LF_DONT_FREE_BUF"$ flag is set.
//FileName is for error reporting. If files are #included, new names are used.
//See $LK,"MusicOrgan LexNew",A="FF:::/Apps/MusicOrgan/Organ.CPP,LexNew"$.
//See $LK,"Psalmody LexNew",A="FF:::/Apps/Psalmody/Psalmody.CPP,LexNew"$.
CLex *lx=MAlloc(sizeof(CLex));
CLexFile *tempf=&lx->lfns[0];
MemSet(lx,0,offset(CLex.end_of_zeroed_members)+sizeof(CLexFile));
@@ -56,7 +55,7 @@ CLex *LexNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL)
if (filename)
tempf->name=FileNameAbs(filename);
else
tempf->name=StrNew(sys_temp_filename);
tempf->name=StrNew(dsk.temp_filename);
if (flags & LF_PMT)
buf=CAlloc(4);
tempf->buf=tempf->buf_ptr=tempf->line_start=lx->cur_buf_ptr=buf;
@@ -65,7 +64,7 @@ CLex *LexNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL)
}
U0 LexDel(CLex *lx)
{
{//Free lx.
CLexFile *tempf=lx->cur_lfn;
CDoc *doc;
while (tempf!=&lx->lfns[0]) {
@@ -81,13 +80,13 @@ U0 LexDel(CLex *lx)
Free(tempf->buf);
Free(lx->ps);
Free(lx->cur_str);
Free(lx->cur_index);
Free(lx->cur_help_index);
Free(lx->dollar);
Free(lx);
}
I64 LexSize(CLex *lx)
{
{//Mem size of lex ctrl node and its members.
CLexFile *tempf=lx->cur_lfn;
CDoc *doc;
I64 result=0;
@@ -107,7 +106,7 @@ I64 LexSize(CLex *lx)
}
U0 LexPutToken(CLex *lx)
{
{//Print cur token to StdOut. (Crude)
'"';
if (lx->token==TK_IDENT || lx->token==TK_STR)
"%s",lx->cur_str;
@@ -146,7 +145,7 @@ Bool LexDollar(CLex *lx,CDoc *doc,CDocEntry *doc_e)
if (lx->flags&LF_IN_QUOTES) {
Free(lx->dollar);
st=Doc2PlainText(doc,doc_e);
lx->dollar=MPrint("$$%Q$$",st);
lx->dollar=MStrPrint("$$%Q$$",st);
lx->dollar_cnt=2;
Free(st);
return TRUE;
@@ -155,7 +154,7 @@ Bool LexDollar(CLex *lx,CDoc *doc,CDocEntry *doc_e)
}
I64 LexGetChar(CLex *lx)
{
{//Get one char from stream. Allow put-back one.
U8 *ptr,*src;
CLexFile *tempf,*tempf1;
CDoc *doc;
@@ -179,10 +178,9 @@ lgc_start2:
tempf->cur_entry=doc_e;
nobound_switch (doc_e->type_u8) {
case DOCT_TEXT:
if (doc_e->flags1 & ~(DOCEF1_TAG|DOCEF1_DEFINE|DOCEF1_TAG_CB|
DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_HIGHLIGHT|
DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER|DOCEF1_SKIP|
DOCEF1_HARD_SKIP|DOCEF1_FILTER_SKIP) &&
if (doc_e->de_flags & ~(DOCEF_TAG|DOCEF_DEFINE|DOCEF_TAG_CB|
DOCG_BL_IV_UL|DOCEF_WORD_WRAP|DOCEF_HIGHLIGHT|
DOCEF_SKIP|DOCEF_HARD_SKIP|DOCEF_FILTER_SKIP) &&
LexDollar(lx,doc,doc_e) && *(src=lx->dollar)) {
tempf->line_num=doc_e->y+1;
tempf->buf=tempf->buf_ptr=lx->cur_buf_ptr=src;
@@ -197,7 +195,7 @@ lgc_start2:
tempf->buf=tempf->buf_ptr=lx->cur_buf_ptr=&lex_zeros;
tempf->line_start=doc_e->next;
tempf->line_num=doc_e->y+2; //+1 because NEW_LINE is on previous line, +1 because doc y starts at zero
compiled_lines++;
cmp.compiled_lines++;
if (tempf==lx->fun_lfn && tempf->line_num>lx->max_line)
lx->max_line=tempf->line_num;
lx->last_U16='\n';
@@ -290,7 +288,7 @@ lgc_start2:
if (lx->flags & LF_PMT) {
Free(tempf->buf);
lx->cur_buf_ptr=tempf->line_start=
tempf->buf_ptr=tempf->buf=CmpPmt(TRUE);
tempf->buf_ptr=tempf->buf=CmpPrompt(TRUE);
goto lgc_start1;
} else {
if (src)
@@ -306,7 +304,7 @@ lgc_start2:
tempf=lx->cur_lfn;
if (!(tempf->flags & LFSF_DOC)) {
tempf->line_num++;
compiled_lines++;
cmp.compiled_lines++;
tempf->line_start=src;
if (tempf==lx->fun_lfn && tempf->line_num>lx->max_line)
lx->max_line=tempf->line_num;
@@ -325,12 +323,34 @@ lgc_done:
}
U0 LexSkipEol(CLex *lx)
{
{//$LK,"LexGetChar",A="MN:LexGetChar"$ to NULL until end-of-line.
I64 ch;
do ch=$WW,0$LexGetChar(lx);
while (Bt(chars_bitmap_non_eol,ch));
}
U8 *LexFirstRem(CLex *lx,U8 *marker,I64 _len=NULL)
{//$LK,"LexGetChar",A="MN:LexGetChar"$() chars making str until marker.
U8 *result,*ptr;
CQueVectU8 *tempv=QueVectU8New;
I64 i,len=0;
while (TRUE) {
i=LexGetChar(lx);
if (!i||StrOcc(marker,i))
break;
QueVectU8Put(tempv,len++,i);
}
if (i)
Bts(&lx->flags,Lf_USE_LAST_U16);
result=ptr=MAlloc(len+1);
for (i=0;i<len;i++)
*ptr++=QueVectU8Get(tempv,i);
*ptr=0;
QueVectU8Del(tempv);
if (_len) *_len=len;
return result;
}
U0 LexIncludeStr(CLex *lx,U8 *abs_filename,U8 *src,Bool actual_file)
{
CLexFile *tempf;
@@ -345,19 +365,10 @@ U0 LexIncludeStr(CLex *lx,U8 *abs_filename,U8 *src,Bool actual_file)
if (actual_file)
tempf->name=StrNew(abs_filename);
else
tempf->name=StrNew(sys_temp_filename);
tempf->name=StrNew(dsk.temp_filename);
lx->cur_buf_ptr=src;
}
I64 doc_type_flags_src_code[(DOCT_NUM_TYPES+63)/64]=
{
1<<DOCT_TEXT|
1<<DOCT_TAB|
1<<DOCT_INS_BINARY|
1<<DOCT_INS_BINARY_SIZE
};
CDoc *LexDocRead(U8 *abs_filename,I64 flags)
{
CDoc *doc=DocNew(abs_filename);
@@ -375,9 +386,13 @@ CDoc *LexDocRead(U8 *abs_filename,I64 flags)
return doc;
}
I64 cmp_type_flags_src_code[(DOCT_NUM_TYPES+63)/64]=
{1<<DOCT_TEXT|1<<DOCT_TAB|1<<DOCT_INS_BINARY|1<<DOCT_INS_BINARY_SIZE};
U0 LexAttachDoc(CLex *lx,CLexFile *tempf=NULL,
CDoc *doc=NULL,U8 *abs_filename=NULL,CDocEntry *doc_e=NULL,I64 col=0)
{//Give either doc or abs_filename.
{//Start lexing doc. Give either doc or abs_filename.
if (!doc)
doc=LexDocRead(abs_filename,DOCF_DBL_DOLLARS);
if (!tempf) {
@@ -389,7 +404,7 @@ U0 LexAttachDoc(CLex *lx,CLexFile *tempf=NULL,
tempf->name=StrNew(doc->filename.name);
tempf->doc=doc;
while (doc_e!=doc) {
if (Bt(doc_type_flags_src_code,doc_e->type_u8))
if (Bt(cmp_type_flags_src_code,doc_e->type_u8))
break;
doc_e=doc_e->next;
col=doc_e->min_col;
@@ -408,7 +423,7 @@ U0 LexAttachDoc(CLex *lx,CLexFile *tempf=NULL,
tempf->buf_ptr=&lex_zeros;
}
tempf->flags=LFSF_DOC;
} else { //TODO: DocDel(doc)?
} else {//TODO: DocDel(doc)?
col=0;
tempf->line_start=&lex_zeros;
tempf->buf=CAlloc(1);
@@ -421,7 +436,7 @@ U0 LexAttachDoc(CLex *lx,CLexFile *tempf=NULL,
}
U0 LexPush(CLex *lx)
{
{//Create token-stream save point.
CLexFile *tempf=lx->cur_lfn,
*tempf1=&lx->stk[lx->stk_ptr++];
if (lx->stk_ptr>=LFN_STK_CNT)
@@ -433,7 +448,7 @@ U0 LexPush(CLex *lx)
}
U0 LexPop(CLex *lx)
{
{//Restore token-stream saved-point.
CLexFile *tempf=lx->cur_lfn,
*tempf1=&lx->stk[--lx->stk_ptr];
lx->cur_buf_ptr=tempf1->buf_ptr;
@@ -445,7 +460,7 @@ U0 LexPop(CLex *lx)
}
I64 MemberMetaData(U8 *needle_str,CMemberLst *haystack_member_lst)
{
{//Find meta data name, return meta data val. See $LK,"::/Demo/ClassMeta.CPP.Z"$.
CMemberLstMeta *meta=haystack_member_lst->meta;
while (meta) {
if (!StrCmp(meta->str,needle_str))
@@ -456,7 +471,7 @@ I64 MemberMetaData(U8 *needle_str,CMemberLst *haystack_member_lst)
}
CMemberLstMeta *MemberMetaFind(U8 *needle_str,CMemberLst *haystack_member_lst)
{
{//Find meta data name, return meta data struct. See $LK,"::/Demo/ClassMeta.CPP.Z"$.
CMemberLstMeta *meta=haystack_member_lst->meta;
while (meta) {
if (!StrCmp(meta->str,needle_str))
@@ -467,7 +482,7 @@ CMemberLstMeta *MemberMetaFind(U8 *needle_str,CMemberLst *haystack_member_lst)
}
CMemberLst *MemberFind(U8 *needle_str,CHashClass *haystack_class)
{
{//Find class member. See $LK,"ClassRep",A="MN:ClassRep"$() and $LK,"DocFormDo",A="MN:DocFormDo"$().
I64 i;
CMemberLst *tempm;
do {
@@ -487,7 +502,7 @@ CMemberLst *MemberFind(U8 *needle_str,CHashClass *haystack_class)
}
CMemberLst *MemberFind2(CHashClass *needle_class,CHashClass *haystack_class)
{//just offset<0
{//Find class member, just offset<0. See $LK,"ClassRep",A="MN:ClassRep"$() and $LK,"DocFormDo",A="MN:DocFormDo"$().
CMemberLst *tempm;
tempm=haystack_class->member_lst2;
while (tempm) {
@@ -583,37 +598,6 @@ U0 MemberLstDel(CHashClass *tempc)
tempc(CHashFun *)->arg_cnt=0;
}
#assert !offset(CMemberLst.next)
#assert !offset(CMemberLstMeta.next)
CMemberLst *MemberLstCopy(CHashClass *tempc)
{
CMemberLst *result=NULL,*tempm,*tempm1=&result;
CMemberLstMeta *temp_meta,*temp_meta1;
tempm=tempc->member_lst;
while (tempm) {
tempm1=tempm1->next=MAllocIdentical(tempm);
tempm1->str=MAllocIdentical(tempm->str);
tempm1->dim.next=LinkedLstCopy(tempm->dim.next);
if (tempm->flags & MLF_STR_DFT_AVAILABLE)
tempm1->dft_val=MAllocIdentical(tempm->dft_val);
if (tempm->flags & MLF_FUN)
tempm1->fun_ptr=HashEntryImportCopy(tempm->fun_ptr-tempm->fun_ptr->ptr_cnt)(CHashFun *)+tempm->fun_ptr->ptr_cnt;
temp_meta=tempm->meta;
temp_meta1=&tempm1->meta;
while (temp_meta) {
temp_meta1=temp_meta1->next=MAllocIdentical(temp_meta);
temp_meta1->str=MAllocIdentical(temp_meta->str);
if (temp_meta->flags&MLMF_IS_STR)
temp_meta1->user_data=MAllocIdentical(temp_meta->user_data);
temp_meta=temp_meta->next;
}
tempm=tempm->next;
}
return result;
}
I64 MemberLstSize(CHashClass *tempc)
{
CMemberLst *tempm;
@@ -641,8 +625,7 @@ I64 MemberLstSize(CHashClass *tempc)
return result;
}
I64 LexInStr(CLex *lx,
U8 *buf,I64 size,Bool *done)
I64 LexInStr(CLex *lx,U8 *buf,I64 size,Bool *done)
{
I64 i=0,j,ch;
*done=TRUE;
@@ -740,7 +723,7 @@ lis_octal:
}
I64 Lex(CLex *lx)
{
{//Fetch next token.
I64 i,j,k,ch;
CHash *temph;
Bool str_done,neg_e;
@@ -1111,7 +1094,7 @@ lex_octal:
buf[j++]=ch;
else
break;
if (j>=LEX_MAX_IDENT-4) { //spare spot for '\\' next loop
if (j>=LEX_MAX_IDENT-4) {//spare spot for '\\' next loop
buf[j++]=0;
buf3=MAlloc(i+j);
if (buf2) {
@@ -1369,8 +1352,11 @@ lex_ifjit:
case KW_HELP_INDEX:
if (Lex(lx)!=TK_STR)
goto lex_end;
Free(lx->cur_index);
lx->cur_index=lx->cur_str;
Free(lx->cur_help_index);
if (*lx->cur_str)
lx->cur_help_index=lx->cur_str;
else
lx->cur_help_index=NULL;
lx->cur_str=NULL;
break;
case KW_HELP_FILE:
@@ -1427,7 +1413,7 @@ lex_dot_dot:
case ']'...'^':
case '{'...'~':
case '`':
if (!(i=dual_U16_tokens1[ch])) {
if (!(i=cmp.dual_U16_tokens1[ch])) {
if (ch=='$$') {
ch=LexGetChar(lx);
if (ch=='$$') {
@@ -1454,7 +1440,7 @@ lex_dot_dot:
j=LexGetChar(lx);
if (i.u16[0]==j) {
i>>=16;
if (!i) { // "/*"
if (!i) {// "/*"
j=1;
do {
if (!(ch=LexGetChar(lx)))
@@ -1482,10 +1468,10 @@ lex_check_comment:
goto lex_end;
}
}
if (i=dual_U16_tokens2[ch]) {
if (i=cmp.dual_U16_tokens2[ch]) {
if (i.u16[0]==j) {
i>>=16;
if (!i) { // "//"
if (!i) {// "//"
LexSkipEol(lx);
if (lx->flags&LF_KEEP_NEW_LINES) {
lx->token='\n';
@@ -1507,7 +1493,7 @@ lex_check_comment:
goto lex_end;
}
}
if (i=dual_U16_tokens3[ch]) {
if (i=cmp.dual_U16_tokens3[ch]) {
if (i.u16[0]==j) {
lx->token=i.u16[1];
goto lex_end;
@@ -1530,7 +1516,7 @@ lex_end:
}
U8 *LexExtStr(CLex *lx,I64 *_size=NULL)
{ //_size includes terminator
{//Lex $LK,"TK_STR",A="MN:TK_STR"$'s to one combined str. _size includes terminator.
I64 len=lx->cur_str_len,len1,len2;
U8 *st=lx->cur_str,*st1,*st2;
lx->cur_str=NULL;
@@ -1555,7 +1541,7 @@ U8 *LexExtStr(CLex *lx,I64 *_size=NULL)
}
U8 *LexPutLine(CLex *lx,U8 *start)
{
{//Print cur pos to end of line to StdOut.
I64 ch;
U8 *ptr;
if (!start) return NULL;
@@ -1576,14 +1562,14 @@ U8 *LexPutLine(CLex *lx,U8 *start)
'' ch;
}
if (!ch) ptr--;
NewLine;
'\n';
return ptr;
}
return NULL;
}
U0 LexPutPos(CLex *lx)
{
{//Print token, line link and, then, $LK,"LexPutLine",A="MN:LexPutLine"$().
LexPutToken(lx);
SetFix(lx->cur_lfn->name,lx->cur_lfn->line_num);
if (IsRaw)
@@ -1597,7 +1583,7 @@ U0 LexPutPos(CLex *lx)
}
U0 LexWarn(CLex *lx,U8 *str=NULL)
{
{//Print warn msg, then, $LK,"LexPutPos",A="MN:LexPutPos"$().
if (str) PrintWarn(str);
if (lx->htc.fun) {
"in fun '%s'.\n",lx->htc.fun->str;
@@ -1613,10 +1599,11 @@ U0 LexWarn(CLex *lx,U8 *str=NULL)
}
U0 LexExcept(CLex *lx,U8 *str=NULL)
{
{//Print err msg, $LK,"LexPutPos",A="MN:LexPutPos"$() and throw exception.
if (!Bt(&sys_run_level,RLf_ADAM_SERVER)) {
Preempt(OFF);
Raw(ON);
"Note: Still in boot phase.\n";
}
if (str) PrintErr(str);
if (!IsRaw)
-2
View File
@@ -765,7 +765,6 @@ OPCODE JZ
0x0F 0x84, 16 !CW REL16
0x0F 0x84, 32 !CD REL32;
OPCODE INC
// 0x40,+R 16 R16
// 0x40,+R 32 R32
@@ -1137,7 +1136,6 @@ OPCODE XADD
0x0F 0xC1,/R 32 RM64 R64;
OPCODE XLATB 0xD7;
OPCODE RCL
0xD2,/2 RM8 CL
0xD3,/2 16 RM16 CL
+12 -13
View File
@@ -7,7 +7,7 @@ CLexCodeMisc *OptLabelFwd(CLexCodeMisc *lb)
}
CHashClass *OptClassFwd(CHashClass *tempc)
{
{//Class forwarding for unions and subclasses.
CHashClass *tempc1;
while (tempc1=tempc->fwd_class)
tempc=tempc1;
@@ -31,7 +31,7 @@ U0 OptSetNOP2(CIntermediateCode *tempi,I64 stk_delta=1)
}
CIntermediateCode *OptFree(CIntermediateCode *tempi)
{ //We might access freed entries in CICTreeLinks
{//We might access freed entries in CICTreeLinks
QueRem(tempi);
Free(tempi);
return NULL;
@@ -100,17 +100,17 @@ Bool OptFixupBinaryOp1(CIntermediateCode *tempi,
CHashClass *tempc=tempi->ic_class,*tempc1,*tempc2;
if (tempi1->ic_flags&ICF_R_TO_INT)
tempc1=sys_internal_types[RT_I64];
tempc1=cmp.internal_types[RT_I64];
else if (tempi1->ic_flags&ICF_R_TO_F64)
tempc1=sys_internal_types[RT_F64];
tempc1=cmp.internal_types[RT_F64];
else {
tempc1=OptClassFwd(tempi1->ic_class);
}
if (tempi2->ic_flags&ICF_R_TO_INT)
tempc2=sys_internal_types[RT_I64];
tempc2=cmp.internal_types[RT_I64];
else if (tempi2->ic_flags&ICF_R_TO_F64)
tempc2=sys_internal_types[RT_F64];
tempc2=cmp.internal_types[RT_F64];
else {
tempc2=OptClassFwd(tempi2->ic_class);
}
@@ -123,7 +123,7 @@ Bool OptFixupBinaryOp1(CIntermediateCode *tempi,
if (tempc->raw_type==RT_F64) {
if (tempi1->ic_code==IC_IMM_U64) {
tempi1->ic_data(F64)=tempi1->ic_data;
tempi1->ic_class=sys_internal_types[RT_F64];
tempi1->ic_class=cmp.internal_types[RT_F64];
tempi1->ic_code=IC_IMM_F64;
tempi1->ic_flags&=~ICF_R_TO_F64;
} else
@@ -131,7 +131,7 @@ Bool OptFixupBinaryOp1(CIntermediateCode *tempi,
tempi1->ic_flags|=ICF_R_TO_F64;
if (tempi2->ic_code==IC_IMM_U64) {
tempi2->ic_data(F64)=tempi2->ic_data;
tempi2->ic_class=sys_internal_types[RT_F64];
tempi2->ic_class=cmp.internal_types[RT_F64];
tempi2->ic_code=IC_IMM_F64;
tempi2->ic_flags&=~ICF_R_TO_F64;
} else
@@ -186,7 +186,7 @@ Bool OptFixupUnaryOp(CIntermediateCode *tempi,
if (tempc->raw_type==RT_F64) {
if (tempi1->ic_code==IC_IMM_U64) {
tempi1->ic_data(F64)=tempi1->ic_data;
tempi1->ic_class=sys_internal_types[RT_F64];
tempi1->ic_class=cmp.internal_types[RT_F64];
tempi1->ic_code=IC_IMM_F64;
tempi1->ic_flags&=~ICF_R_TO_F64;
} else
@@ -358,7 +358,6 @@ CIntermediateCode *OptBrZero(CLex *lx,CIntermediateCode *tempi)
return tempi;
}
CIntermediateCode *OptBrNotZero(CLex *lx,CIntermediateCode *tempi)
{
CLexCodeMisc *lb_true,*lb_false;
@@ -553,7 +552,7 @@ I64 CmpRawTypePointed(CHashClass *tempc)
U0 CmpF1PushPop(CIntermediateCode *tempi,CIntermediateCode *tempi2)
{
if (Bt(ic_bitmap_fpop,tempi2->ic_code)|| tempi2->ic_flags&ICF_R_TO_F64)
if (Bt(cmp.ic_bitmap_fpop,tempi2->ic_code)|| tempi2->ic_flags&ICF_R_TO_F64)
Bts(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0);
}
@@ -561,9 +560,9 @@ U0 CmpF2PushPop(CIntermediateCode *tempi,CIntermediateCode *tempi1,CIntermediate
{
if ((tempi2->ic_code==IC_MOV || tempi2->ic_code==IC_IMM_F64) &&
!(tempi2->ic_flags&ICF_R_TO_F64) &&
(Bt(ic_bitmap_fpop,tempi1->ic_code) || tempi1->ic_flags&ICF_R_TO_F64))
(Bt(cmp.ic_bitmap_fpop,tempi1->ic_code) || tempi1->ic_flags&ICF_R_TO_F64))
Bts(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0);
else if ((Bt(ic_bitmap_fpop,tempi2->ic_code) || tempi2->ic_flags&ICF_R_TO_F64)&&
else if ((Bt(cmp.ic_bitmap_fpop,tempi2->ic_code) || tempi2->ic_flags&ICF_R_TO_F64)&&
!(tempi1->ic_flags&ICF_R_TO_F64))
Bts(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0);
}
+44 -49
View File
@@ -1,5 +1,4 @@
/*
OptPass012
/*OptPass012
Pass#0
When parsing the arg expressions to a function
@@ -22,9 +21,7 @@ logic. 3-Arg comparisons are established.
*/
CIntermediateCode *OptPass012(CLex *lx)
{
/*
Simplify CONST arithmetic.
{/*Simplify CONST arithmetic.
Sets the class throughout Expression trees.
Returns the type of an Expression for use
in int<-->F64 conversions of fun
@@ -47,7 +44,7 @@ args.
tempi->ic_class2=tempc;
tempi_push=tempi;
MemSet(&tempi->a1,0,sizeof(CICArg)*4);
nobound_switch (cmp_arg_cnt[code]) {
nobound_switch (cmp.arg_cnt[code]) {
case 9:
ps->ptr-=tempi->ic_data>>2;
break;
@@ -65,7 +62,7 @@ args.
case 0: //nobound_switch
break;
}
if (Bt(ic_bitmap_not_const,code))
if (Bt(cmp.ic_bitmap_not_const,code))
lx->flags|=LF_NOT_CONST;
nobound_switch (code) {
case IC_IMM_F64:
@@ -74,7 +71,7 @@ args.
tempi->ic_data=ToI64(tempi->ic_data(F64));
tempi->ic_flags&=~ICF_R_TO_INT;
tempi->ic_code=IC_IMM_U64;
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
}
break;
case IC_IMM_U64:
@@ -83,7 +80,7 @@ args.
tempi->ic_data(F64)=ToF64(tempi->ic_data);
tempi->ic_flags&=~ICF_R_TO_F64;
tempi->ic_code=IC_IMM_F64;
tempi->ic_class=sys_internal_types[RT_F64];
tempi->ic_class=cmp.internal_types[RT_F64];
}
break;
case IC_HOLYC_TYPECAST:
@@ -97,12 +94,12 @@ args.
tempi_push=tempi1;
OptSetNOP1(tempi);
} else {
if (tempi->ic_data) { //was paren
if (tempi->ic_data) {//was paren
if (!tempi_push->ic_class->ptr_cnt) {
if (tempi_push->ic_class->raw_type==RT_F64)
tempi_push->ic_class2=sys_internal_types[RT_F64];
tempi_push->ic_class2=cmp.internal_types[RT_F64];
else
tempi_push->ic_class2=sys_internal_types[RT_I64];
tempi_push->ic_class2=cmp.internal_types[RT_I64];
}
} else {
tempi1->ic_class=tempi->ic_class;
@@ -158,7 +155,7 @@ args.
tempi->ic_flags|=tempi1->ic_flags;
OptSetNOP1(tempi1);
}
tempi_push->ic_class2=sys_internal_types[RT_I64];
tempi_push->ic_class2=cmp.internal_types[RT_I64];
break;
sub_switch_start:
case IC_NOT:
@@ -189,7 +186,7 @@ args.
}
}
if (tempc1->type&HTT_INTERNAL_TYPE && tempc1->raw_type& 1)
tempi->ic_class=sys_internal_types[tempc1->raw_type-1];
tempi->ic_class=cmp.internal_types[tempc1->raw_type-1];
break;
case IC_SHL_CONST:
if (i=OptFixupUnaryOp(tempi,tempi1,&is_unsigned)) {
@@ -268,9 +265,9 @@ args.
sub_switch_end:
if (!tempi_push->ic_class->ptr_cnt) {
if (tempi_push->ic_class->raw_type==RT_F64)
tempi_push->ic_class2=sys_internal_types[RT_F64];
tempi_push->ic_class2=cmp.internal_types[RT_F64];
else
tempi_push->ic_class2=sys_internal_types[RT_I64];
tempi_push->ic_class2=cmp.internal_types[RT_I64];
}
break;
case IC_DEREF:
@@ -298,12 +295,12 @@ args.
LexWarn(lx,"Dereference U0 ");
break;
case IC_POWER:
tempc=tempi->ic_class=sys_internal_types[RT_F64];
tempc=tempi->ic_class=cmp.internal_types[RT_F64];
if (tempc1->raw_type!=RT_F64)
tempi1->ic_flags|=ICF_R_TO_F64;
if (tempc2->raw_type!=RT_F64)
tempi2->ic_flags|=ICF_R_TO_F64;
tempi_push->ic_class2=sys_internal_types[RT_F64];
tempi_push->ic_class2=cmp.internal_types[RT_F64];
break;
sub_switch_start:
case IC_MUL:
@@ -448,7 +445,7 @@ args.
}
} else if (lx->pass==2 && tempi2->ic_code==IC_IMM_U64 &&
(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&1) {//do only unsigned
tempi2->ic_data=i-1;
tempi->ic_code=IC_AND;
}
@@ -694,30 +691,30 @@ args.
tempi->ic_data=tempi1->ic_data&&tempi2->ic_data;
tempi->ic_code=IC_IMM_U64;
}
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
break;
case IC_OR_OR:
if (OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) {
tempi->ic_data=tempi1->ic_data||tempi2->ic_data;
tempi->ic_code=IC_IMM_U64;
}
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
break;
case IC_XOR_XOR:
if (OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) {
tempi->ic_data=tempi1->ic_data^^tempi2->ic_data;
tempi->ic_code=IC_IMM_U64;
}
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
break;
sub_switch_end:
if (!tempi_push->ic_class->ptr_cnt) {
if (tempi_push->ic_class->raw_type==RT_F64)
tempi_push->ic_class2=sys_internal_types[RT_F64];
tempi_push->ic_class2=cmp.internal_types[RT_F64];
else if (is_unsigned)
tempi_push->ic_class2=sys_internal_types[RT_U64];
tempi_push->ic_class2=cmp.internal_types[RT_U64];
else
tempi_push->ic_class2=sys_internal_types[RT_I64];
tempi_push->ic_class2=cmp.internal_types[RT_I64];
}
break;
sub_switch_start:
@@ -817,16 +814,16 @@ args.
tempi->ic_flags&=~ICF_R_TO_INT;
if (!tempi_push->ic_class->ptr_cnt) {
if (tempi_push->ic_class->raw_type==RT_F64)
tempi_push->ic_class2=sys_internal_types[RT_F64];
tempi_push->ic_class2=cmp.internal_types[RT_F64];
else if (is_unsigned)
tempi_push->ic_class2=sys_internal_types[RT_U64];
tempi_push->ic_class2=cmp.internal_types[RT_U64];
else
tempi_push->ic_class2=sys_internal_types[RT_I64];
tempi_push->ic_class2=cmp.internal_types[RT_I64];
}
if (tempi_push->ic_flags & ICF_PUSH_CMP)
tempi->ic_class=tempi->ic_class2;
else
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
break;
sub_switch_start:
if (lx->pass==2 && (!tempc->size||!tempc2->size))
@@ -962,8 +959,8 @@ args.
tempi->ic_code=IC_IMM_U64;
tempi->ic_data=ToI64(tempi1->ic_data(F64));
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class2=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
tempi->ic_class2=cmp.internal_types[RT_I64];
OptSetNOP1(tempi1);
} else if (tempi1->ic_code==IC_IMM_U64) {
tempi2=tempi1->last;
@@ -980,8 +977,8 @@ args.
tempi->ic_code=IC_IMM_U64;
tempi->ic_data=tempi1->ic_data;
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class2=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
tempi->ic_class2=cmp.internal_types[RT_I64];
OptSetNOP1(tempi1);
}
if (tempi1->ic_flags&ICF_R_TO_F64) {
@@ -1004,8 +1001,8 @@ args.
tempi1->ic_flags=tempi->ic_flags|tempi1->ic_flags&~(ICF_R_TO_F64|ICF_PUSH_RESULT)|tempi2->ic_flags;
OptSetNOP1(tempi2);
tempi1->ic_class=sys_internal_types[RT_I64];
tempi1->ic_class2=sys_internal_types[RT_I64];
tempi1->ic_class=cmp.internal_types[RT_I64];
tempi1->ic_class2=cmp.internal_types[RT_I64];
tempi_push=tempi1;
OptSetNOP1(tempi);
}
@@ -1026,8 +1023,8 @@ args.
tempi->ic_code=IC_IMM_F64;
tempi->ic_data(F64)=ToF64(tempi1->ic_data);
tempi->ic_class=sys_internal_types[RT_F64];
tempi->ic_class2=sys_internal_types[RT_F64];
tempi->ic_class=cmp.internal_types[RT_F64];
tempi->ic_class2=cmp.internal_types[RT_F64];
OptSetNOP1(tempi1);
} else if (tempi1->ic_code==IC_IMM_F64) {
tempi2=tempi1->last;
@@ -1044,8 +1041,8 @@ args.
tempi->ic_code=IC_IMM_F64;
tempi->ic_data=tempi1->ic_data;
tempi->ic_class=sys_internal_types[RT_F64];
tempi->ic_class2=sys_internal_types[RT_F64];
tempi->ic_class=cmp.internal_types[RT_F64];
tempi->ic_class2=cmp.internal_types[RT_F64];
OptSetNOP1(tempi1);
}
if (tempi1->ic_flags&ICF_R_TO_INT) {
@@ -1068,8 +1065,8 @@ args.
tempi1->ic_flags=tempi->ic_flags|tempi1->ic_flags&~(ICF_R_TO_INT|ICF_PUSH_RESULT)|tempi2->ic_flags;
OptSetNOP1(tempi2);
tempi1->ic_class=sys_internal_types[RT_F64];
tempi1->ic_class2=sys_internal_types[RT_F64];
tempi1->ic_class=cmp.internal_types[RT_F64];
tempi1->ic_class2=cmp.internal_types[RT_F64];
tempi_push=tempi1;
OptSetNOP1(tempi);
}
@@ -1090,8 +1087,8 @@ args.
tempi->ic_code=IC_IMM_U64;
tempi->ic_data=ToBool(tempi1->ic_data);
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class2=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
tempi->ic_class2=cmp.internal_types[RT_I64];
OptSetNOP1(tempi1);
}
break;
@@ -1259,7 +1256,7 @@ args.
case IC_SWAP_U8:
case IC_SWAP_U16:
case IC_SWAP_U32:
case IC_SWAP_U64:
case IC_SWAP_I64:
case IC_IN_U32:
case IC_IN_U16:
case IC_IN_U8:
@@ -1284,7 +1281,7 @@ args.
ICPut(tempi);
LexExcept(lx,"Compiler Optimization Error at ");
}
if (cmp_arg_cnt[code]==2) {
if (cmp.arg_cnt[code]==2) {
if (tempi_push->ic_precedence.u8[0]&~ASSOC_MASK==PREC_ASSIGN)
OptFixSizeOf(tempi2,tempi_push,tempi1->ic_class-1);
else {
@@ -1292,7 +1289,7 @@ args.
OptFixSizeOf(tempi2,tempi_push,tempi1->ic_class);
}
}
if (cmp_result_cnt[tempi_push->ic_code]) {
if (cmp.result_cnt[tempi_push->ic_code]) {
PrsPush(ps,tempi->ic_class2);
PrsPush(ps,tempi_push);
}
@@ -1310,9 +1307,7 @@ args.
"Pass:%d Stk:%08X\n",lx->pass,ps->ptr;
LexExcept(lx,"Compiler Optimization Error at ");
}
/*
This is for determining type conversions
/*This is for determining type conversions
for passing args to funs.
*/
return last_with_class;
+41 -22
View File
@@ -55,20 +55,20 @@ U0 OptPass3(CLex *lx,COptReg *reg_offsets)
else {
if (tempil1=OptLag(tempi)) {
if (!(tempil2=OptLag(tempil1)))
tempil2=&opt_nop;
tempil2=&cmp.ic_nop;
} else
tempil1=tempil2=&opt_nop;
tempil1=tempil2=&cmp.ic_nop;
tempc=tempi->ic_class;
nobound_switch (cmp_arg_cnt[code]) {
nobound_switch (cmp.arg_cnt[code]) {
case 9:
ps->ptr-=tempi->ic_data>>3;
break;
case 2:
tempi2=PrsPop(ps);
if (tempi2->ic_flags&ICF_R_TO_F64)
tempc2=sys_internal_types[RT_F64];
tempc2=cmp.internal_types[RT_F64];
else if (tempi2->ic_flags & ICF_R_TO_INT)
tempc2=sys_internal_types[RT_I64];
tempc2=cmp.internal_types[RT_I64];
else
tempc2=tempi->t.a2c;
tempi->a2.type=TY_STK+CmpRawType(tempc2);
@@ -77,9 +77,9 @@ U0 OptPass3(CLex *lx,COptReg *reg_offsets)
case 1:
tempi1=PrsPop(ps);
if (tempi1->ic_flags&ICF_R_TO_F64)
tempc1=sys_internal_types[RT_F64];
tempc1=cmp.internal_types[RT_F64];
else if (tempi1->ic_flags & ICF_R_TO_INT)
tempc1=sys_internal_types[RT_I64];
tempc1=cmp.internal_types[RT_I64];
else
tempc1=tempi->t.a1c;
tempi->a1.type=TY_STK+CmpRawType(tempc1);
@@ -89,7 +89,7 @@ U0 OptPass3(CLex *lx,COptReg *reg_offsets)
case 0: //nobound_switch
break;
}
if (cmp_result_cnt[code]) {
if (cmp.result_cnt[code]) {
tempi->r.type=TY_STK+CmpRawType(tempc);
tempi->r.type_pointed=CmpRawTypePointed(tempc);
tempi->ic_flags|=ICF_R_WAS_STK;
@@ -458,7 +458,7 @@ here1:
case IC_SWAP_U8:
case IC_SWAP_U16:
case IC_SWAP_U32:
case IC_SWAP_U64:
case IC_SWAP_I64:
case IC_QUE_INIT:
case IC_QUE_INS:
case IC_QUE_INS_REV:
@@ -515,6 +515,25 @@ here1:
}
tempi=tempi_next;
}
/* REGISTER VARIABLE ASSIGNMENT
We just scored num occurrences of each [RBP] offset in the code to help decide
which variables should be assigned to register variables.
We counted the times each offset was added to RBP as a plus LEA and we subtract the
times the offset is dereferenced. If the address was calculated more times
than the offset was dereferenced, the variable's address was passed or assigned
and we cannot use a register because you can't take address of a reg var.
RAX,RBX,RCX,RDX are free to be clobbered by each intermediate code. RAX links
intermediate codes together. R8 and R9 are used for stack machine temporaries.
RBP is used as stack frame.
RSI,RDI,R10,R11,R12,R13,R14,R15 are used for reg vars. R12 and R13, however,
have a unusual ModR addressing mode in the x86_64 architecture, so I only use
R12 and R13 as non-pointer register variables, such as index variables i,j,k.
*/
if (lx->htc.fun) {
lx->htc.fun->used_reg_mask=lx->htc.fun->used_reg_mask&~(REG_VARS_MASK|REG_NON_PTR_MASK)|used_reg_mask;
if (!Bt(&lx->opts,OPTf_NO_REG_VAR) &&
@@ -537,21 +556,21 @@ here1:
if (j>0) {
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT))
"Fun:%s\n",lx->htc.fun->str;
if (j>num_reg_vars) {
if (j>cmp.num_reg_vars) {
l=0;
for (i=0;i<j && l<num_non_ptr_vars;i++) {
for (i=0;i<j && l<cmp.num_non_ptr_vars;i++) {
tempm=mv[i].m;
tempc=OptClassFwd(tempm->member_class);
if (!tempc->ptr_cnt && !tempm->dim.next) {
while (l<num_non_ptr_vars &&
Bts(&lx->htc.fun->used_reg_mask,to_non_ptr_vars_map[l]))
while (l<cmp.num_non_ptr_vars &&
Bts(&lx->htc.fun->used_reg_mask,cmp.non_ptr_vars_map[l]))
l++;
if (l<num_non_ptr_vars) {
tempm->reg=to_non_ptr_vars_map[l++];
if (l<cmp.num_non_ptr_vars) {
tempm->reg=cmp.non_ptr_vars_map[l++];
reg_offsets[tempm->reg].offset=mv[i].offset_start;
reg_offsets[tempm->reg].m=tempm;
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT))
"Reg %Z Var \"%s\" %08X[RBP]\n",tempm->reg,"ST_U64_REGS",
"Reg %Z Var \"%-15ts\" %016X[RBP]\n",tempm->reg,"ST_U64_REGS",
tempm->str,reg_offsets[tempm->reg].offset;
mv[i].offset_start=0; //flag as reg var
if (tempm->size<8 && !StrIMatch("Bool",tempm->member_class->str) &&
@@ -565,20 +584,20 @@ here1:
}
}
l=0;
for (i=0;i<j && l<num_reg_vars;i++) {
for (i=0;i<j && l<cmp.num_reg_vars;i++) {
tempm=mv[i].m;
//if not just flagged as reg var
if (mv[i].offset_start && (!mv[i].m->dim.next||
tempm->offset>0 && StrCmp(tempm->str,"argv"))) {
while (l<num_reg_vars &&
Bts(&lx->htc.fun->used_reg_mask,to_reg_vars_map[l]))
while (l<cmp.num_reg_vars &&
Bts(&lx->htc.fun->used_reg_mask,cmp.to_reg_vars_map[l]))
l++;
if (l<num_reg_vars) {
tempm->reg=to_reg_vars_map[l++];
if (l<cmp.num_reg_vars) {
tempm->reg=cmp.to_reg_vars_map[l++];
reg_offsets[tempm->reg].offset=mv[i].offset_start;
reg_offsets[tempm->reg].m=tempm;
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT))
"Reg %Z Var \"%s\" %08X[RBP]\n",tempm->reg,"ST_U64_REGS",
"Reg %Z Var \"%-15ts\" %016X[RBP]\n",tempm->reg,"ST_U64_REGS",
tempm->str,reg_offsets[tempm->reg].offset;
if (tempm->size<8 && !StrIMatch("Bool",tempm->member_class->str) &&
tempm->member_class->type&HTT_INTERNAL_TYPE)
+10 -10
View File
@@ -18,7 +18,7 @@ Bool OptIC4(CIntermediateCode *tempi)
tempil2->a1.type&TY_MASK==TY_REG) {
i=tempil1->ic_data;
if (MIN_I32<=i<=MAX_I32 &&
!Bt(&non_ptr_vars_mask,tempil2->a1.reg)) {
!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;
@@ -135,7 +135,7 @@ Bool OptIC4(CIntermediateCode *tempi)
tempil1->a1.type&TY_MASK==TY_STK) {
i=tempil2->ic_data;
if (MIN_I32<=i<=MAX_I32 &&
!Bt(&non_ptr_vars_mask,tempil2->a1.reg)) {
!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;
@@ -194,16 +194,16 @@ U0 OptPass4(CLex *lx,COptReg *reg_offsets,I64 *_type)
tempi=OptFree(tempi);
} else {
tempc=tempi->ic_class;
tempi1=tempi2=tempi3=&opt_nop;
tempi1=tempi2=tempi3=&cmp.ic_nop;
if (tempil1=OptLag2(tempi)) {
if (tempil2=OptLag2(tempil1)) {
if (!(tempil3=OptLag2(tempil2)))
tempil3=&opt_nop;
tempil3=&cmp.ic_nop;
} else
tempil2=tempil3=&opt_nop;
tempil2=tempil3=&cmp.ic_nop;
} else
tempil1=tempil2=tempil3=&opt_nop;
nobound_switch (cmp_arg_cnt[code]) {
tempil1=tempil2=tempil3=&cmp.ic_nop;
nobound_switch (cmp.arg_cnt[code]) {
case 9:
ps->ptr-=tempi->ic_data>>3;
break;
@@ -461,7 +461,7 @@ p4_sib:
break;
}
}
tempi->ic_class=sys_internal_types[RT_I64];
tempi->ic_class=cmp.internal_types[RT_I64];
} else if (_type)
*_type=tempi->ic_class->raw_type;
break;
@@ -691,7 +691,7 @@ p4_sib:
case IC_SWAP_U8:
case IC_SWAP_U16:
case IC_SWAP_U32:
case IC_SWAP_U64:
case IC_SWAP_I64:
case IC_QUE_INIT:
case IC_QUE_INS:
case IC_QUE_INS_REV:
@@ -725,7 +725,7 @@ p4_sib:
if (tempi) {
while (OptIC4(tempi));
code=tempi->ic_code;
if (cmp_result_cnt[code])
if (cmp.result_cnt[code])
PrsPush(ps,tempi);
}
}
+1 -1
View File
@@ -15,7 +15,7 @@ U0 OptPass5(CLex *lx)
ICPut(tempi);
}
}
if (cmp_arg_cnt[code]==9)
if (cmp.arg_cnt[code]==9)
ps->ptr-=tempi->ic_data>>3;
if (code==IC_PUSH_REGS) {
for (i=0;i<NUM_REGS;i++)
+16 -15
View File
@@ -6,7 +6,7 @@ Bool OptIC6(CIntermediateCode *tempi)
if (tempil1->ic_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 &&
!Bt(&non_ptr_vars_mask,tempil1->a1.reg)) {
!Bt(&cmp.non_ptr_vars_mask,tempil1->a1.reg)) {
if (tempil1->a1.type&TY_MASK==TY_REG) {
tempi->ic_flags=tempi->ic_flags&~ICF_A1_WAS_STK | tempil1->ic_flags;
tempi->ic_code=IC_MOV;
@@ -39,12 +39,13 @@ U0 OptPass6Lag(CLex *lx,
if (code==IC_CALL_START) {
k=MinI64(i,num_stk);
j=0;
//See $LK,"STK TEMP ALLOCATION",A="FF:::/Compiler/CmpInit.CPP.Z,STK TEMP ALLOCATION"$
if (fun_num&1)
for (l=0;l<k;l++)
Bts(&j,to_stk_temps_map_odd[l]);
Bts(&j,cmp.to_stk_temps_map_odd[l]);
else
for (l=0;l<k;l++)
Bts(&j,to_stk_temps_map_even[l]);
Bts(&j,cmp.to_stk_temps_map_even[l]);
if (tempf=tempi->ic_data) {
if (Bt(&tempf->flags,Ff_INTERNAL))
j=0;
@@ -63,16 +64,16 @@ U0 OptPass6Lag(CLex *lx,
ps->ptr--;
i=PrsPop(ps);
}
if (cmp_arg_cnt[code]==9)
if (cmp.arg_cnt[code]==9)
i-=tempi->ic_data>>3;
if (tempi->a2.type&TY_MASK==TY_STK) {
i--;
if (i<num_stk) {
tempi->a2.type=TY_REG+tempi->a2.type&RT_MASK;
if (fun_num&1)
tempi->a2.reg=to_stk_temps_map_odd[i];
tempi->a2.reg=cmp.to_stk_temps_map_odd[i];
else
tempi->a2.reg=to_stk_temps_map_even[i];
tempi->a2.reg=cmp.to_stk_temps_map_even[i];
tempi->a2.disp=0;
}
}
@@ -81,9 +82,9 @@ U0 OptPass6Lag(CLex *lx,
if (i<num_stk) {
tempi->a1.type=TY_REG+tempi->a1.type&RT_MASK;
if (fun_num&1)
tempi->a1.reg=to_stk_temps_map_odd[i];
tempi->a1.reg=cmp.to_stk_temps_map_odd[i];
else
tempi->a1.reg=to_stk_temps_map_even[i];
tempi->a1.reg=cmp.to_stk_temps_map_even[i];
tempi->a1.disp=0;
}
}
@@ -92,11 +93,11 @@ U0 OptPass6Lag(CLex *lx,
if (i<=num_stk) {
tempi->r.type=TY_REG+tempi->r.type&RT_MASK;
if (fun_num&1) {
tempi->r.reg=to_stk_temps_map_odd[i-1];
Bts(&clobbered_reg_mask,to_stk_temps_map_odd[i-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=to_stk_temps_map_even[i-1];
Bts(&clobbered_reg_mask,to_stk_temps_map_even[i-1]);
tempi->r.reg=cmp.to_stk_temps_map_even[i-1];
Bts(&clobbered_reg_mask,cmp.to_stk_temps_map_even[i-1]);
}
tempi->r.disp=0;
}
@@ -116,14 +117,14 @@ U0 OptPass6(CLex *lx)
ps->ptr=0;
ps->ptr2=0;
if (lx->htc.fun)
fun_num=compiled_funs++;
fun_num=cmp.compiled_funs++;
if (Bt(&lx->opts,OPTf_NO_REG_VAR) || lx->flags&LF_NO_REG_OPT)
num_stk=0;
else
num_stk=num_stk_temps;
num_stk=cmp.num_stk_temps;
tempi=lx->lcc.lcc_root.next;
old_tempil2=NULL;
tempil1=tempil2=tempil3=&opt_nop;
tempil1=tempil2=tempil3=&cmp.ic_nop;
while (code=tempi->ic_code) {
if ( code>=IC_END_EXP && code!=IC_NOP2) {
if ( tempil1->ic_code>=IC_END_EXP && tempil1->ic_code!=IC_NOP2) {
+22 -22
View File
@@ -1,9 +1,9 @@
I64 OptPass789(CLex *lx,COptReg *reg_offsets,U8 *buf,CDbgInfo **_dbg)
{
/*
lx->pass==7 is first time
lx->pass==8 is repeated until size stops shrinking
lx->pass==9 is final
{/* lx->pass==7 is first time
lx->pass==8 is second time
lx->pass==8 is third time and repeated until size stops shrinking
size is now known
lx->pass==9 is final pass, code is placed into buf.
*/
CIntermediateCode *tempi,*tempi_next;
I64 code,i,cnt,num_lines=lx->max_line+1-lx->min_line,ip=0,ip2;
@@ -14,8 +14,8 @@ lx->pass==9 is final
CExeImportExport *tempe;
CExeHeapGlbl *temphg;
CExeHeapGlblRef *temphgr;
CDbgInfo *dbg;
CAsmCtrl *a=lx->a;
CDbgInfo *dbg_info;
CAOTCtrl *a=lx->a;
Bool short_jmp;
CICArg saved_p123[3];
CHashClass *tempc;
@@ -24,15 +24,15 @@ lx->pass==9 is final
CExternUsage *tempeu;
if (_dbg) {
*_dbg=dbg=CAlloc(offset(CDbgInfo.body)+sizeof(U32)*(num_lines+1));
dbg->min_line=lx->min_line;
dbg->max_line=lx->max_line;
*_dbg=dbg_info=CAlloc(offset(CDbgInfo.body)+sizeof(U32)*(num_lines+1));
dbg_info->min_line=lx->min_line;
dbg_info->max_line=lx->max_line;
if (lx->flags&LF_AOT_COMPILE)
dbg->body[0]=a->ip;
dbg_info->body[0]=a->ip;
else
dbg->body[0]=buf;
dbg_info->body[0]=buf;
} else
dbg=NULL;
dbg_info=NULL;
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT) && Bt(&lx->pass_trace_mask,lx->pass))
"$$BK,1$$$$LTRED$$$$IV,1$$This code gets merged together and patched.\n$$FG$$$$IV,0$$$$BK,0$$";
@@ -58,7 +58,7 @@ lx->pass==9 is final
if (lx->pass==7)
lx->dont_push_float=Btr(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0);
MemCpy(saved_p123,&tempi->a1,3*sizeof(CICArg));
if (cmp_arg_cnt[code]==2 && tempi->a1.type&TY_MASK==TY_REG &&
if (cmp.arg_cnt[code]==2 && tempi->a1.type&TY_MASK==TY_REG &&
tempi->a1.reg==REG_RAX)
tempi->ic_flags|=ICF_A1_FIRST;
tempi->ic_cnt=0;
@@ -156,7 +156,7 @@ lx->pass==9 is final
ICU64(tempi,0);
temphg=tempi->ic_data;
if (buf && lx->flags&LF_AOT_COMPILE &&
!(lx->flags&(LF_NO_ABSS|LF_ASM_EXPRESSIONS))) { //is this necessary--flags?
!(lx->flags&(LF_NO_ABSS|LF_ASM_EXPRESSIONS))) {//is this necessary--flags?
temphgr=CAlloc(sizeof(CExeHeapGlblRef));
temphgr->next=temphg->references;
temphg->references=temphgr;
@@ -910,7 +910,7 @@ lx->pass==9 is final
case IC_SWAP_U8:
case IC_SWAP_U16:
case IC_SWAP_U32:
case IC_SWAP_U64:
case IC_SWAP_I64:
ICSwap(tempi,ip2);
break;
case IC_QUE_INIT:
@@ -1117,10 +1117,10 @@ lx->pass==9 is final
MemCpy(buf+ip,tempi->ic_body,cnt);
skip_copy:
if (dbg && lx->min_line<=tempi->ic_line<=lx->max_line) {
if (dbg_info && lx->min_line<=tempi->ic_line<=lx->max_line) {
i=tempi->ic_line-lx->min_line;
if (!dbg->body[i])
dbg->body[i]=ip2;
if (!dbg_info->body[i])
dbg_info->body[i]=ip2;
}
if (tempi->ic_flags&ICF_TRACE && Bt(&lx->pass_trace_mask,lx->pass) && cnt) {
@@ -1191,11 +1191,11 @@ op789_next:
}
lb=lb->next;
}
if (dbg) {
if (dbg_info) {
if (lx->flags&LF_AOT_COMPILE)
dbg->body[num_lines]=ip+a->ip;
dbg_info->body[num_lines]=ip+a->ip;
else
dbg->body[num_lines]=ip+buf;
dbg_info->body[num_lines]=ip+buf;
}
return ip;
+85 -110
View File
@@ -1,77 +1,37 @@
CHashClass *PrsClassNew()
{
// Ptrs to classes are handled by
// allocating 5 structures for each
// new class and representing a pointer
// to a class by advancing 1 struct fwd
// for one * and two fwd for two **.
CHashClass *result=CAlloc(sizeof(CHashClass)*5,Fs->code_heap),
*tempc=result;
tempc->last_in_member_lst=&tempc->member_lst;
tempc->type=HTT_CLASS;
tempc->raw_type=RT_PTR;
tempc->ptr_cnt=0;
tempc++;
tempc->type=HTT_CLASS;
tempc->raw_type=RT_PTR;
tempc->size=sizeof(U8 *);
tempc->ptr_cnt=1;
tempc++;
tempc->type=HTT_CLASS;
tempc->raw_type=RT_PTR;
tempc->size=sizeof(U8 *);
tempc->ptr_cnt=2;
tempc++;
tempc->type=HTT_CLASS;
tempc->raw_type=RT_PTR;
tempc->size=sizeof(U8 *);
tempc->ptr_cnt=3;
tempc++;
tempc->type=HTT_CLASS;
tempc->raw_type=RT_PTR;
tempc->size=sizeof(U8 *);
tempc->ptr_cnt=4;
{/*Ptrs to classes are handled by
allocating 5 structures for each
new class and representing a pointer
to a class by advancing 1 struct fwd
for one * and two fwd for two **.
*/
I64 i;
CHashClass *result=CAlloc(sizeof(CHashClass)*(MAX_PTR_STARS+1),Fs->code_heap),*tempc=result;
for (i=0;i<=MAX_PTR_STARS;i++) {
tempc->type=HTT_CLASS;
tempc->raw_type=RT_PTR;
tempc->size=sizeof(U8 *);
tempc->ptr_cnt=i;
tempc++;
}
result->last_in_member_lst=&result->member_lst;
result->size=0;
return result;
}
CHashFun *PrsFunNew()
{
CHashFun *result=CAlloc(sizeof(CHashFun)*5,Fs->code_heap),*tempf=result;
tempf->last_in_member_lst=&tempf->member_lst;
tempf->type=HTT_FUN;
tempf->raw_type=RT_PTR;
tempf->ptr_cnt=0;
tempf++;
tempf->type=HTT_FUN;
tempf->raw_type=RT_PTR;
tempf->size=sizeof(U8 *);
tempf->ptr_cnt=1;
tempf++;
tempf->type=HTT_FUN;
tempf->raw_type=RT_PTR;
tempf->size=sizeof(U8 *);
tempf->ptr_cnt=2;
tempf++;
tempf->type=HTT_FUN;
tempf->raw_type=RT_PTR;
tempf->size=sizeof(U8 *);
tempf->ptr_cnt=3;
tempf++;
tempf->type=HTT_FUN;
tempf->raw_type=RT_PTR;
tempf->size=sizeof(U8 *);
tempf->ptr_cnt=4;
I64 i;
CHashFun *result=CAlloc(sizeof(CHashFun)*(MAX_PTR_STARS+1),Fs->code_heap),*tempf=result;
for (i=0;i<=MAX_PTR_STARS;i++) {
tempf->type=HTT_FUN;
tempf->raw_type=RT_PTR;
tempf->size=sizeof(U8 *);
tempf->ptr_cnt=i;
tempf++;
}
result->last_in_member_lst=&result->member_lst;
result->size=0;
return result;
}
@@ -83,7 +43,7 @@ CMemberLst *MemberLstNew(I64 _reg)
}
I64 PrsKeyWord(CLex *lx)
{
{//Cvt cur token to $LK,"KEYWORD",A="FF:::/Compiler/OpCodes.TXT.Z,KEYWORD"$ or -1.
CHashGeneric *temph;
if (lx->token==TK_IDENT &&(temph=lx->hash_entry) && temph->type&HTT_KEYWORD)
return temph->user_data0;
@@ -109,7 +69,7 @@ U0 PrsVarInit(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_ad
I64 i,j,r,old_flags,type,size;
CMemberLst *tempm;
CIntermediateCode *tempi;
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
CExeAbsAddr *tempa;
CExeImportExport *tempe;
Bool is_str;
@@ -212,14 +172,12 @@ U0 PrsVarInit(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_ad
*_dst=dst;
}
class CVI2
{
CVI2 *next,*last;
U0 base;
};
U0 PrsVarInit2(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_addr_ip,U8 **_base,Bool data_heap,I64 pass)
{
I64 i,j,cnt;
@@ -233,7 +191,7 @@ U0 PrsVarInit2(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_a
lx->token==TK_STR) {
lx->stk_ptr--; //grows up
st=LexExtStr(lx,&i);
if (tempad1->cnt<0) { //[]
if (tempad1->cnt<0) {//[]
tempad1->cnt=i;
tempad->total_cnt=i*tempad1->total_cnt;
Free(*_base);
@@ -255,7 +213,7 @@ U0 PrsVarInit2(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_a
LexPush(lx);
Lex(lx);
}
if (tempad1->cnt<0) { //[]
if (tempad1->cnt<0) {//[]
QueInit(&root);
cnt=0;
while (lx->token!='}') {
@@ -343,8 +301,8 @@ U0 PrsStaticInit(CLex *lx,CMemberLst *tempm,I64 pass)
}
Bool PrsArrayDims(CLex *lx,CArrayDim *dim)
{ //returns false on empty []
//dim->next!=0 for array
{//Returns false on empty []
//dim->next!=0 for array
CArrayDim *tempad,*tempad1;
I64 j;
Bool result=TRUE;
@@ -357,7 +315,7 @@ Bool PrsArrayDims(CLex *lx,CArrayDim *dim)
j=-1;
result=FALSE;
} else {
if ((j=LexExpression(lx))<0)
if ((j=LexExpressionI64(lx))<0)
LexExcept(lx,"Invalid array size at ");
}
tempad1=&dim->next;
@@ -389,7 +347,7 @@ U0 PrsDotDotDot(CLex *lx,CHashFun *tempf,I64 _reg)
Lex(lx);
tempm=MemberLstNew(_reg);
tempm->flags=MLF_DOT_DOT_DOT;
tempm->member_class=sys_internal_types[RT_I64];
tempm->member_class=cmp.internal_types[RT_I64];
tempm->str=StrNew("argc");
tempm->offset=tempf->size;
tempm->size=8;
@@ -398,7 +356,7 @@ U0 PrsDotDotDot(CLex *lx,CHashFun *tempf,I64 _reg)
tempm=MemberLstNew(_reg);
tempm->flags=MLF_DOT_DOT_DOT;
tempm->member_class=sys_internal_types[RT_I64];
tempm->member_class=cmp.internal_types[RT_I64];
tempm->str=StrNew("argv");
tempm->dim.total_cnt=127; //arbitrary
tempm->dim.next=tempad=MAlloc(sizeof(CArrayDim));
@@ -418,7 +376,7 @@ CHashClass *PrsType(CLex *lx,CHashClass **_tempc1,
I64 *_mode,CMemberLst *tempm,U8 **_ident,CHashFun **_fun_ptr,
CHashExport **_tempex,CArrayDim *tempad,I64 fsp_flags)
{
I64 k,fun_ptr_cnt,mode=*_mode;
I64 k,ptr_cnt,mode=*_mode;
CHashClass *tempc1=*_tempc1,*tempc2;
CHashFun *fun_ptr=NULL;
CHashExport *tempex=NULL;
@@ -427,7 +385,8 @@ CHashClass *PrsType(CLex *lx,CHashClass **_tempc1,
pt_start:
if (!tempc1 || !(tempc1->type & (HTT_CLASS|HTT_INTERNAL_TYPE)))
LexExcept(lx,"invalid class at ");
ptr_cnt=0;
while (lx->token=='*') {
if (mode.u8[1]) {
lx->stk_ptr--; //grows up
@@ -435,6 +394,8 @@ pt_start:
}
Lex(lx);
tempc1++;
if (++ptr_cnt>MAX_PTR_STARS)
LexExcept(lx,"Too many *'s at ");
}
k=PrsKeyWord(lx);
@@ -451,11 +412,13 @@ pt_start:
if (lx->token=='(') {
if (Lex(lx)!='*')
LexExcept(lx,"expecting '*' at ");
fun_ptr_cnt=1;
ptr_cnt=1; //fun_ptr
while (Lex(lx)=='*')
fun_ptr_cnt++;
ptr_cnt++; //fun_ptr
if (ptr_cnt>MAX_PTR_STARS)
LexExcept(lx,"Too many *'s at ");
} else
fun_ptr_cnt=-1;
ptr_cnt=-1; //fun_ptr
if (_ident) {
if (lx->token==TK_IDENT) {
@@ -475,13 +438,13 @@ pt_start:
}
}
if (fun_ptr_cnt>=0) {
if (ptr_cnt>=0) { //fun_ptr
if (lx->token!=')')
LexExcept(lx,"missing ')' at ");
if (Lex(lx)!='(')
LexExcept(lx,"expecting '(' at ");
fun_ptr=PrsFunJoin(lx,tempc1,NULL,fsp_flags)+fun_ptr_cnt;
tempc1=sys_internal_types[RT_PTR]+fun_ptr_cnt;
fun_ptr=PrsFunJoin(lx,tempc1,NULL,fsp_flags)+ptr_cnt;
tempc1=cmp.internal_types[RT_PTR]+ptr_cnt;
}
if (!PrsArrayDims(lx,tempad) && lx->token!='=') {
tempc1++;
@@ -850,7 +813,9 @@ CHashClass *PrsClass(CLex *lx,I64 keyword,I64 fsp_flags,Bool is_extern)
}
if (tempc) {
Free(tempc->src_link);
tempc->src_link=NULL;
Free(tempc->index);
tempc->index=NULL;
} else {
tempc=PrsClassNew;
tempc->str=lx->cur_str;
@@ -860,8 +825,11 @@ CHashClass *PrsClass(CLex *lx,I64 keyword,I64 fsp_flags,Bool is_extern)
LBtr(&tempc->flags,Cf_EXTERN);
if (fsp_flags&FSF_PUBLIC)
tempc->type|=HTF_PUBLIC;
SetSrcFileInfo(lx,tempc);
tempc->use_cnt=0;
if (lx->last_U16=='\n')
SetSrcFileInfo(lx,tempc,-1);
else
SetSrcFileInfo(lx,tempc,0);
if (Lex(lx)==':') {
if (Lex(lx)!=TK_IDENT || !(base_class=lx->hash_entry) ||
!(base_class->type&HTT_CLASS))
@@ -883,9 +851,9 @@ CHashClass *PrsClass(CLex *lx,I64 keyword,I64 fsp_flags,Bool is_extern)
CHashFun *PrsFunJoin(CLex *lx,CHashClass *temp_return,U8 *name,I64 fsp_flags)
{
CMemberLst *tempm;
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
CHashFun *tempf;
if (name) { //if not fun_ptr
if (name) {//if not fun_ptr
if (lx->flags&LF_AOT_COMPILE) {
if (tempf=HashFind(name,lx->htc.glbl_hash_table,HTT_FUN)) {
if (tempf->type & HTF_IMPORT)
@@ -907,7 +875,9 @@ CHashFun *PrsFunJoin(CLex *lx,CHashClass *temp_return,U8 *name,I64 fsp_flags)
if (tempf) {
tempf->used_reg_mask=REG_ALWAYS_CLOBBERED_MASK+REG_STK_TEMPS_MASK;
Free(tempf->src_link);
tempf->src_link=NULL;
Free(tempf->index);
tempf->index=NULL;
Free(name);
MemberLstDel(tempf);
} else {
@@ -971,7 +941,7 @@ U0 PrsFun(CLex *lx,CHashClass *temp_return,U8 *name,I64 fsp_flags)
if (lx->flags&LF_AOT_COMPILE) {
lx->htc.fun->executable_addr=lx->a->ip;
lx->htc.fun->type|=HTF_EXPORT|HTF_RESOLVE;
r=LCCCompile(lx,&size,&lx->htc.fun->debug,NULL);
r=LCCCompile(lx,&size,&lx->htc.fun->dbg_info,NULL);
if (r) {
j=(size+7)>>3;
for (i=0;i<j;i++)
@@ -980,7 +950,7 @@ U0 PrsFun(CLex *lx,CHashClass *temp_return,U8 *name,I64 fsp_flags)
}
} else {
old_ctrace=Btr(&lx->opts,OPTf_COMPILE_TRACE);
lx->htc.fun->executable_addr=LCCCompile(lx,&size,&lx->htc.fun->debug,NULL);
lx->htc.fun->executable_addr=LCCCompile(lx,&size,&lx->htc.fun->dbg_info,NULL);
if (old_ctrace) {
Bts(&lx->opts,OPTf_COMPILE_TRACE);
Un(lx->htc.fun->executable_addr,size,64);
@@ -1010,7 +980,7 @@ U0 PrsGlblVarLst(CLex *lx,I64 saved_mode,CHashClass *saved_tempc,
U8 *st;
CHashExport *tempex;
CHashGlblVar *tempg;
CAsmCtrl *a=lx->a;
CAOTCtrl *a=lx->a;
CExeHeapGlbl *temphg;
CHashClass *tempc;
CHashFun *tempf,*tempf_fun_ptr;
@@ -1050,6 +1020,8 @@ U0 PrsGlblVarLst(CLex *lx,I64 saved_mode,CHashClass *saved_tempc,
tempf->executable_addr=val;
SysSymImportsResolve(tempf->str);
LBtr(&tempf->flags,Cf_EXTERN);
if (saved_mode&255==PRS0__EXTERN)
LBts(&tempf->flags,Ff__EXTERN);
if (lx->flags&LF_AOT_COMPILE)
tempf->type|=HTF_RESOLVE;
return;
@@ -1188,7 +1160,10 @@ U0 PrsGlblVarLst(CLex *lx,I64 saved_mode,CHashClass *saved_tempc,
tempg->size=j;
tempg->dim.total_cnt=i;
tempg->use_cnt=0;
SetSrcFileInfo(lx,tempg);
if (lx->last_U16=='\n')
SetSrcFileInfo(lx,tempg,-1);
else
SetSrcFileInfo(lx,tempg,0);
if (mode&255==PRS0_IMPORT || mode&255==PRS0__IMPORT)
tempg->flags|=GVF_IMPORT;
if (mode&255==PRS0_EXTERN)
@@ -1399,9 +1374,9 @@ U0 PrsSwitch(CLex *lx,Bool nobound,I64 try_cnt)
mc_jt->begin->use_cnt++;
if (!PrsExpression(lx,NULL,FALSE))
throw('Compiler');
tempi_sub=LCCAdd(lx,IC_IMM_U64,0,sys_internal_types[RT_I64]);
LCCAdd(lx,IC_SUB,0,sys_internal_types[RT_I64]);
tempi_cmp=LCCAdd(lx,IC_IMM_U64,0,sys_internal_types[RT_I64]);
tempi_sub=LCCAdd(lx,IC_IMM_U64,0,cmp.internal_types[RT_I64]);
LCCAdd(lx,IC_SUB,0,cmp.internal_types[RT_I64]);
tempi_cmp=LCCAdd(lx,IC_IMM_U64,0,cmp.internal_types[RT_I64]);
if (nobound)
LCCAdd(lx,IC_NOBOUND_SWITCH,mc_jt,0);
else
@@ -1472,7 +1447,7 @@ sw_cont:
}
LCCAdd(lx,IC_LABEL,lb_fwd_case,0);
}
k=LexExpression(lx);
k=LexExpressionI64(lx);
if (k<lo) lo=k;
if (k>hi) hi=k;
if (lx->token==':') {
@@ -1484,13 +1459,13 @@ sw_cont:
header=temps;
} else if (lx->token==TK_DOT_DOT_DOT) {
Lex(lx);
k2=LexExpression(lx);
k2=LexExpressionI64(lx);
if (lx->token==':') {
Lex(lx);
if (k2<lo) lo=k2;
if (k2>hi) hi=k2;
if (k>k2)
SwapU64(&k,&k2);
SwapI64(&k,&k2);
for (i=k;i<=k2;i++) {
temps=MAlloc(sizeof(CSwitchCase));
temps->label=lb_entry;
@@ -1557,7 +1532,7 @@ sw_sub_end:
if (lo>hi || !(0<range<=0xFFFF))
LexExcept(lx,"switch range error at ");
jmp_table=MAlloc((sizeof(CLexCodeMisc *)*range+0x1FF)&~0x1FF);
MemSetU64(jmp_table,lb_dft,range);
MemSetI64(jmp_table,lb_dft,range);
tempi_sub->ic_data=lo;
tempi_cmp->ic_data=range;
temps=header;
@@ -1628,7 +1603,7 @@ U0 PrsStreamBlk(CLex *lx)
U0 PrsTryBlk(CLex *lx,I64 try_cnt)
{
CLexCodeMisc *lb_catch,*lb_done,*lb_untry;
CHashClass *tempc=sys_internal_types[RT_PTR];
CHashClass *tempc=cmp.internal_types[RT_PTR];
CHashFun *temp_try=HashFind("SysTry",lx->htc.hash_table_lst,HTT_FUN),
*temp_untry=HashFind("SysUntry",lx->htc.hash_table_lst,HTT_FUN);
@@ -1789,7 +1764,7 @@ Bool PrsStatement(CLex *lx,I64 try_cnt=0,
i=tempex->val;
Lex(lx);
} else
i=LexExpression(lx);
i=LexExpressionI64(lx);
if (lx->token!=TK_IDENT || !(tempex=lx->hash_entry) ||
!(tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE)))
LexExcept(lx,"expecting type at ");
@@ -1836,7 +1811,7 @@ sm_import:
PrsGlblVarLst(lx,PRS0_IMPORT|PRS1_NULL,tempex,0,FALSE);
break;
case KW__INTERN:
i=LexExpression(lx);
i=LexExpressionI64(lx);
if (lx->token!=TK_IDENT || !(tempex=lx->hash_entry) ||
!(tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE)))
LexExcept(lx,"expecting type at ");
@@ -1879,12 +1854,12 @@ sm_import:
lx->abs_cnts.externs++;
if (lx->flags&LF_AOT_COMPILE)
LCCAdd(lx,IC_CALL_IMPORT,
temp_untry,sys_internal_types[RT_PTR]);
temp_untry,cmp.internal_types[RT_PTR]);
else
LCCAdd(lx,IC_CALL_INDIRECT2,
&temp_untry->executable_addr,sys_internal_types[RT_PTR]);
&temp_untry->executable_addr,cmp.internal_types[RT_PTR]);
} else
LCCAdd(lx,IC_CALL,temp_untry->executable_addr,sys_internal_types[RT_PTR]);
LCCAdd(lx,IC_CALL,temp_untry->executable_addr,cmp.internal_types[RT_PTR]);
}
}
if (Lex(lx)!=';') {
@@ -1933,7 +1908,7 @@ sm_import:
goto sm_semicolon;
}
}
} else { //Ident, found in hash table, not keyword
} else {//Ident, found in hash table, not keyword
sm_not_keyword_afterall:
if (tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE)) {
if (lx->htc.fun) {
@@ -1959,7 +1934,7 @@ sm_not_keyword_afterall:
}
fsp_flags&=FSF_ASM;
}
} else { //Ident, not in hash table
} else {//Ident, not in hash table
if (lx->local_var_entry)
goto sm_prs_exp;
if (!(g_lb=LCCGoToLabelFind(lx,lx->cur_str))) {
@@ -1981,7 +1956,7 @@ sm_not_keyword_afterall:
} else if (lx->token==TK_STR||lx->token==TK_CHAR_CONST) {
PrsFunCall(lx,NULL,FALSE,NULL);
goto sm_semicolon;
} else if (lx->token!=TK_EOF) { //Non-cur_str symbol, number or something
} else if (lx->token!=TK_EOF) {//Non-cur_str symbol, number or something
sm_prs_exp:
if (!PrsExpression(lx,NULL,TRUE))
throw('Compiler');
+36 -42
View File
@@ -40,8 +40,8 @@ I64 InstEntriesCompare(CInstruction *tempi1,CInstruction *tempi2)
i2=tempi2->flags & IEF_OP_SIZE32;
if (result=i1-i2) return result;
i1=Bt(&uasm_ins64_mask,tempi1->arg1) || Bt(&uasm_ins64_mask,tempi1->arg2);
i2=Bt(&uasm_ins64_mask,tempi2->arg1) || Bt(&uasm_ins64_mask,tempi2->arg2);
i1=Bt(&uasm.ins64_mask,tempi1->arg1) || Bt(&uasm.ins64_mask,tempi1->arg2);
i2=Bt(&uasm.ins64_mask,tempi2->arg1) || Bt(&uasm.ins64_mask,tempi2->arg2);
if (result=i1-i2) return result;
i1=tempi1->flags & IEF_48_REX;
@@ -56,17 +56,16 @@ I64 InstEntriesCompare(CInstruction *tempi1,CInstruction *tempi2)
}
/*
U0 DumpUnasmIns(CInstruction *tempi)
U0 DumpUasmIns(CInstruction *tempi)
{
CHashOpcode *tempo=tempi(U8 *)-tempi->ins_entry_num*sizeof(CInstruction)-offset(CHashOpcode.ins);
"%10s:%02d,%02d SV:%02d\n",tempo->str,tempi->arg1,tempi->arg2,tempi->slash_val;
}
U0 DumpUnasmTable()
U0 DumpUasmTable()
{
I64 k;
for (k=0;k<unasm_table_entries;k++)
DumpUnasmIns(unasm_table[k]);
for (k=0;k<uasm.table_entries;k++)
DumpUasmIns(uasm.table[k]);
}
*/
@@ -75,11 +74,11 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize)
I64 i,j,n,m,k,a1,a2,o1,o2,oc_cnt,sv;
CInstruction *tempi;
i=0;
j=unasm_table_entries-1;
j=uasm.table_entries-1;
while (TRUE) {
k=(i+j)>>1; //binary search
tempi=unasm_table[k];
//DumpUnasmIns(tempi);
tempi=uasm.table[k];
//DumpUasmIns(tempi);
m=0;
n=0;
while (TRUE) {
@@ -102,7 +101,7 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize)
sv=tempi->slash_val;
if (sv<8) {
if (!(m=ip[n]>>3&7-sv)) {
if ((Bt(&uasm_mem_mask,a1) || Bt(&uasm_mem_mask,a2)) &&
if ((Bt(&uasm.mem_mask,a1) || Bt(&uasm.mem_mask,a2)) &&
ip[n]&0xC0==0xC0) {
m=1;
break;
@@ -127,10 +126,10 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize)
}
}
if (opsize==64||a1==ARGT_M64||a2==ARGT_M64||tempi->flags&IEF_NO_REX) {
if (!Bt(&uasm_ins64_mask,a1) && !Bt(&uasm_ins64_mask,a2) && !(tempi->flags&IEF_48_REX))
if (!Bt(&uasm.ins64_mask,a1) && !Bt(&uasm.ins64_mask,a2) && !(tempi->flags&IEF_48_REX))
m=1;
} else {
if (Bt(&uasm_ins64_mask,a1) || Bt(&uasm_ins64_mask,a2) || tempi->flags&IEF_48_REX)
if (Bt(&uasm.ins64_mask,a1) || Bt(&uasm.ins64_mask,a2) || tempi->flags&IEF_48_REX)
m=-1;
}
}
@@ -148,7 +147,7 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize)
}
}
if (opsize==64 || a1==ARGT_M64 || a2==ARGT_M64) {
if (!Bt(&uasm_ins64_mask,a1) && !Bt(&uasm_ins64_mask,a2) && !(tempi->flags&IEF_48_REX)&&
if (!Bt(&uasm.ins64_mask,a1) && !Bt(&uasm.ins64_mask,a2) && !(tempi->flags&IEF_48_REX)&&
!(a2==ARGT_NO &&
(ARGT_UIMM8<=a1<=ARGT_UIMM64 ||
ARGT_IMM8<=a1<=ARGT_IMM64 ) ))
@@ -159,7 +158,7 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize)
} else if (a2==ARGT_IMM64||a2==ARGT_UIMM64)
m=-1;
} else {
if (Bt(&uasm_ins64_mask,a1) || Bt(&uasm_ins64_mask,a2) || tempi->flags&IEF_48_REX)
if (Bt(&uasm.ins64_mask,a1) || Bt(&uasm.ins64_mask,a2) || tempi->flags&IEF_48_REX)
m=-1;
}
}
@@ -182,45 +181,45 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize)
} else
break;
}
return unasm_table[k];
return uasm.table[k];
}
U0 UnasmHashLoad()
U0 UasmHashLoad()
{
CHashOpcode *temph;
CInstruction *tempi;
I64 cnt=0,j,k;
unasm_table=NULL;
unasm_table_entries=0;
uasm_ins64_mask=0x0880888880+1<<ARGT_ST0+1<<ARGT_STI;
uasm_signed_arg_mask=1<<ARGT_REL8+1<<ARGT_REL16+1<<ARGT_REL32+
uasm.table=NULL;
uasm.table_entries=0;
uasm.ins64_mask=0x0880888880+1<<ARGT_ST0+1<<ARGT_STI;
uasm.signed_arg_mask=1<<ARGT_REL8+1<<ARGT_REL16+1<<ARGT_REL32+
1<<ARGT_IMM8+1<<ARGT_IMM16+1<<ARGT_IMM32+1<<ARGT_IMM64;
uasm_mem_mask=1<<ARGT_M8+1<<ARGT_M16+1<<ARGT_M32+1<<ARGT_M64;
uasm.mem_mask=1<<ARGT_M8+1<<ARGT_M16+1<<ARGT_M32+1<<ARGT_M64;
temph=asm_hash->next_added;
while (temph!=asm_hash) {
temph=cmp.asm_hash->next_added;
while (temph!=cmp.asm_hash) {
if (temph->type==HTT_OPCODE)
cnt+=temph->instruction_entry_cnt;
temph=temph->next_added;
}
unasm_table_entries=cnt;
uasm.table_entries=cnt;
j=0;
unasm_table=MAlloc(cnt*sizeof(U8 *));
temph=asm_hash->next_added;
while (temph!=asm_hash) {
uasm.table=MAlloc(cnt*sizeof(U8 *));
temph=cmp.asm_hash->next_added;
while (temph!=cmp.asm_hash) {
if (temph->type==HTT_OPCODE) {
tempi=&temph->ins;
for (k=0;k<temph->instruction_entry_cnt;k++) {
unasm_table[j++]=tempi;
uasm.table[j++]=tempi;
tempi++;
}
}
temph=temph->next_added;
}
QSortI64(unasm_table,cnt,&InstEntriesCompare);
QSortI64(uasm.table,cnt,&InstEntriesCompare);
}
I64 StrMatchBits(U8 *st)
@@ -237,8 +236,7 @@ I64 StrMatchBits(U8 *st)
}
U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE)
//Unassembles one instruction
{
{//Unassembles one instruction
I64 i,disp,imm,opsize,opadd,
a1,a2,reloced_a1,reloced_a2,
a1_size=0,a2_size=0,reloced_a1_size,reloced_a2_size,
@@ -268,13 +266,13 @@ U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE)
else
*line1=0;
SPrint(line1+StrLen(line1),"%24tp ",ip);
StrPrint(line1+StrLen(line1),"%24tp ",ip);
bin_data_area1=line1+StrLen(line1);
for (i=0;i<6;i++)
CatPrint(line1,"%02X",ip[i]);
CatPrint(line1," ");
SPrint(line2,"%24tp ",ip+6);
StrPrint(line2,"%24tp ",ip+6);
bin_data_area2=line2+StrLen(line2);
for (i=6;i<12;i++)
CatPrint(line2,"%02X",ip[i]);
@@ -317,7 +315,6 @@ U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE)
} while (cont);
ip--;
tempi=InstEntryFind(ip,opsize);
if (opsize==32 && seg_size==64) {
tempi2=InstEntryFind(ip,64);
@@ -337,14 +334,14 @@ U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE)
a2=tempi->arg2;
if (a1_size=StrMatchBits(DefineSub(a1,"ST_ARG_TYPES"))) {
if (Bt(&uasm_signed_arg_mask,a1))
if (Bt(&uasm.signed_arg_mask,a1))
CatPrint(a1_st,"I%d ",a1_size);
else
CatPrint(a1_st,"U%d ",a1_size);
}
if (a2_size=StrMatchBits(DefineSub(a2,"ST_ARG_TYPES"))) {
if (Bt(&uasm_signed_arg_mask,a2))
if (Bt(&uasm.signed_arg_mask,a2))
CatPrint(a2_st,"I%d ",a2_size);
else
CatPrint(a2_st,"U%d ",a2_size);
@@ -643,10 +640,8 @@ U0 Ui(U8 *buf,U8 **_ip,I64 seg_size=64,I64 *_jmp_dst=NULL,Bool just_ins=FALSE)
*_ip=ip;
}
U8 *U(U8 *ip,I64 cnt=20,I64 seg_size=64)
//Unassembles a num of instructions.
{
{//Unassembles a num of instructions.
I64 i;
U8 buf[1024];
if (seg_size==16)
@@ -661,8 +656,7 @@ U8 *U(U8 *ip,I64 cnt=20,I64 seg_size=64)
}
I64 Un(U8 *ip,I64 cnt=0x80,I64 seg_size=64)
//Unassembles a num of bytes
{
{//Unassembles a num of bytes
I64 i=0;
U8 buf[1024],*end_ip=ip(I64)+cnt;
if (seg_size==16)