From ff99322e986f8400995b4371dc39ea59e1252d5c Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 9 Jan 2008 05:39:28 +0000 Subject: [PATCH] Add x86-64 disassembler support. --- backends/ChangeLog | 10 + backends/Makefile.am | 5 +- backends/x86_64_init.c | 5 +- libcpu/ChangeLog | 9 + libcpu/Makefile.am | 16 +- libcpu/defs/i386 | 147 ++++--- libcpu/defs/x86_64 | 341 --------------- libcpu/i386_data.h | 466 ++++++++++++++++++--- libcpu/i386_disasm.c | 118 +++++- libcpu/i386_parse.y | 5 +- tests/ChangeLog | 11 + tests/Makefile.am | 7 +- tests/run-disasm-x86-64.sh | 36 ++ tests/{run-disasm.sh => run-disasm-x86.sh} | 0 tests/testfile44.S.bz2 | Bin 16107 -> 16435 bytes tests/testfile44.expect.bz2 | Bin 53649 -> 54232 bytes tests/testfile45.S.bz2 | Bin 0 -> 22669 bytes tests/testfile45.expect.bz2 | Bin 0 -> 74090 bytes 18 files changed, 694 insertions(+), 482 deletions(-) delete mode 100644 libcpu/defs/x86_64 create mode 100755 tests/run-disasm-x86-64.sh rename tests/{run-disasm.sh => run-disasm-x86.sh} (100%) create mode 100644 tests/testfile45.S.bz2 create mode 100644 tests/testfile45.expect.bz2 diff --git a/backends/ChangeLog b/backends/ChangeLog index 3e35ef269..25155db31 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,13 @@ +2008-01-08 Ulrich Drepper + + * Makefile.am: Add x86-64 disassembler. + * x86_64_init.c (x86_64_init): Hook up disassembler. + +2007-12-28 Ulrich Drepper + + * Makefile.am: Add x86 disassembler. + * i386_init.c (i386_init): Hook up disassembler. + 2007-12-15 Roland McGrath * ppc_regs.c (ppc_register_info): Return "spefscr", not "spr512". diff --git a/backends/Makefile.am b/backends/Makefile.am index ef21717c1..79fccfdc8 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to create Makefile.in ## -## Copyright (C) 2000-2006, 2007 Red Hat, Inc. +## Copyright (C) 2000-2006, 2007, 2008 Red Hat, Inc. ## This file is part of Red Hat elfutils. ## ## Red Hat elfutils is free software; you can redistribute it and/or modify @@ -72,8 +72,7 @@ am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os) x86_64_SRCS = x86_64_init.c x86_64_symbol.c x86_64_corenote.c \ x86_64_retval.c x86_64_regs.c i386_auxv.c -# XXX Not yet -# cpu_x86_64 = ../libcpu/libcpu_x86_64.a +cpu_x86_64 = ../libcpu/libcpu_x86_64.a libebl_x86_64_pic_a_SOURCES = $(x86_64_SRCS) am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os) diff --git a/backends/x86_64_init.c b/backends/x86_64_init.c index 8524b7715..4e9eb55c1 100644 --- a/backends/x86_64_init.c +++ b/backends/x86_64_init.c @@ -1,5 +1,5 @@ /* Initialization of x86-64 specific backend library. - Copyright (C) 2002, 2005, 2006, 2007 Red Hat, Inc. + Copyright (C) 2002, 2005, 2006, 2007, 2008 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper , 2002. @@ -54,8 +54,7 @@ x86_64_init (elf, machine, eh, ehlen) HOOK (eh, return_value_location); HOOK (eh, register_info); HOOK (eh, auxv_info); - // XXX Not yet. - // HOOK (eh, disasm); + HOOK (eh, disasm); return MODVERSION; } diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 9ce29d290..9bb8175dd 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,12 @@ +2008-01-08 Ulrich Drepper + + * Makefile.am: Enable x86-64 again. + * defs/i386: Lots of changes for x86-64. + * i386_data.h: Add support for use in x86-64 disassembler. + * i386_disasm.c: Likewise. + * i386_parse.y: Likewise. + * defs/x86_64: Removed. + 2008-01-04 Ulrich Drepper * defs/i386: Cleanups, remove masks which are not needed. diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am index a11f02095..c2e5b7472 100644 --- a/libcpu/Makefile.am +++ b/libcpu/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to create Makefile.in ## -## Copyright (C) 2002, 2004, 2005, 2007 Red Hat, Inc. +## Copyright (C) 2002, 2004, 2005, 2007, 2008 Red Hat, Inc. ## This file is part of Red Hat elfutils. ## ## Red Hat elfutils is free software; you can redistribute it and/or modify @@ -43,13 +43,11 @@ if MUDFLAP libmudflap = -lmudflap endif -# XXX x86-64 uncommented for now. -noinst_LIBRARIES = libcpu_i386.a# libcpu_x86_64.a +noinst_LIBRARIES = libcpu_i386.a libcpu_x86_64.a noinst_PROGRAMS = i386_gendis libcpu_i386_a_SOURCES = i386_disasm.c -# XXX Unused for now. -#libcpu_x86_64_a_SOURCES = x86_64_disasm.c +libcpu_x86_64_a_SOURCES = x86_64_disasm.c i386_gendis_SOURCES = i386_gendis.c i386_lex.l i386_parse.y @@ -58,11 +56,11 @@ x86_64_disasm.o: x86_64.mnemonics x86_64_dis.h i386_disasm.c i386_dis.h: i386_gendis $(srcdir)/defs/i386 m4 -Di386 -DDISASSEMBLER $(srcdir)/defs/i386 | ./i386_gendis - > $@ -x86_64_dis.h: i386_gendis $(srcdir)/defs/x86_64 - m4 -Dx86_64 -DDISASSEMBLER $(srcdir)/defs/x86_64 | ./i386_gendis - > $@ +x86_64_dis.h: i386_gendis $(srcdir)/defs/i386 + m4 -Dx86_64 -DDISASSEMBLER $(srcdir)/defs/i386 | ./i386_gendis - > $@ -i386.mnemonics x86_64.mnemonics: %.mnemonics: $(srcdir)/defs/% - m4 -D$( $@ diff --git a/libcpu/defs/i386 b/libcpu/defs/i386 index 8c6602e21..9c90d824d 100644 --- a/libcpu/defs/i386 +++ b/libcpu/defs/i386 @@ -1,6 +1,8 @@ %mask {s} 1 %mask {w} 1 %mask {w1} 1 +%mask {W1} 1 +%mask {W2} 1 dnl floating point reg suffix %mask {D} 1 %mask {imm8} 8 @@ -8,6 +10,7 @@ dnl floating point reg suffix %mask {imm16} 16 %mask {reg} 3 %mask {reg16} 3 +%mask {reg64} 3 %mask {tttn} 4 %mask {mod} 2 %mask {moda} 2 @@ -17,6 +20,8 @@ dnl like {r_m} but referencing byte register %mask {8r_m} 3 dnl like {r_m} but referencing 16-bit register %mask {16r_m} 3 +dnl like {r_m} but referencing 32- or 64-bit register +%mask {64r_m} 3 %mask {disp8} 8 dnl imm really is 8/16/32 bit depending on the situation. %mask {imm} 8 @@ -62,18 +67,18 @@ ifdef(`i386', 0001010{w},{imm}:adc {imm}{w},{ax}{w} 1000000{w},{mod}010{r_m},{imm}:adc{w} {imm}{w},{mod}{r_m}{w} 1000001{w},{mod}010{r_m},{imms8}:adc{w} {imms8},{mod}{r_m} -0001000{w},{mod}{reg}{r_m}:adc {reg}{w},{mod}{r_m} -0001001{w},{mod}{reg}{r_m}:adc {mod}{r_m},{reg}{w} +0001000{w},{mod}{reg}{r_m}:adc {reg}{w},{mod}{r_m}{w} +0001001{w},{mod}{reg}{r_m}:adc {mod}{r_m}{w},{reg}{w} 0000010{w},{imm}:add {imm}{w},{ax}{w} 1000000{w},{mod}000{r_m},{imm}:add{w} {imm}{w},{mod}{r_m}{w} 10000011,{mod}000{r_m},{imms8}:add{w0} {imms8},{mod}{r_m} -0000000{w},{mod}{reg}{r_m}:add {reg}{w},{mod}{r_m} -0000001{w},{mod}{reg}{r_m}:add {mod}{r_m},{reg}{w} +0000000{w},{mod}{reg}{r_m}:add {reg}{w},{mod}{r_m}{w} +0000001{w},{mod}{reg}{r_m}:add {mod}{r_m}{w},{reg}{w} 01100110,00001111,11010000,{Mod}{xmmreg}{R_m}:addsubpd {Mod}{R_m},{xmmreg} 11110010,00001111,11010000,{Mod}{xmmreg}{R_m}:addsubps {Mod}{R_m},{xmmreg} 0010010{w},{imm}:and {imm}{w},{ax}{w} 1000000{w},{mod}100{r_m},{imm}:and{w} {imm}{w},{mod}{r_m}{w} -1000001{w},{mod}100{r_m},{imms}:and{w} {imms},{mod}{r_m} +1000001{w},{mod}100{r_m},{imms8}:and{w} {imms8},{mod}{r_m} 0010000{w},{mod}{reg}{r_m}:and {reg}{w},{mod}{r_m}{w} 0010001{w},{mod}{reg}{r_m}:and {mod}{r_m}{w},{reg}{w} 01100110,00001111,01010100,{Mod}{xmmreg}{R_m}:andpd {Mod}{R_m},{xmmreg} @@ -83,6 +88,8 @@ ifdef(`i386', ifdef(`i386', `01100011,{mod}{reg16}{r_m}:arpl {reg16},{mod}{r_m} 01100010,{moda}{reg}{r_m}:bound {reg},{moda}{r_m} +', +`01100011,{mod}{reg64}{r_m}:movslq {mod}{r_m},{reg64} ')dnl 00001111,10111100,{mod}{reg}{r_m}:bsf {mod}{r_m},{reg} 00001111,10111101,{mod}{reg}{r_m}:bsr {mod}{r_m},{reg} @@ -95,12 +102,12 @@ ifdef(`i386', 00001111,10111010,{mod}110{r_m},{imm8}:btr{w} {imm8},{mod}{r_m} 00001111,10101011,{mod}{reg}{r_m}:bts {reg},{mod}{r_m} 00001111,10111010,{mod}101{r_m},{imm8}:bts{w} {imm8},{mod}{r_m} -11101000,{rel}:call {rel} -11111111,{mod}010{r_m}:call *{mod}{r_m} +11101000,{rel}:call{W} {rel} +11111111,{mod}010{64r_m}:call{W} *{mod}{64r_m} ifdef(`i386', `10011010,{absval},{sel}:lcall {sel},{absval} ')dnl -11111111,{mod}011{r_m}:lcall *{mod}{r_m} +11111111,{mod}011{64r_m}:lcall{W} *{mod}{64r_m} # SPECIAL 10011000:[{rex.w}?cltq:{dpfx}?cbtw:cwtl] 10011000:INVALID # SPECIAL 10011001:[{rew.w}?cqto:{dpfx}?cltd:cwtd] @@ -120,10 +127,17 @@ ifdef(`i386', 10000011,{mod}111{r_m},{imms8}:cmp{w0} {imms8},{mod}{r_m} 0011100{w},{mod}{reg}{r_m}:cmp {reg}{w},{mod}{r_m}{w} 0011101{w},{mod}{reg}{r_m}:cmp {mod}{r_m}{w},{reg}{w} -11110010,00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:cmpsd {imm8},{Mod}{R_m},{xmmreg} +ifdef(`ASSEMBLER', +`11110010,00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:cmpsd {imm8},{Mod}{R_m},{xmmreg} 11110011,00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:cmpss {imm8},{Mod}{R_m},{xmmreg} 01100110,00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:cmppd {imm8},{Mod}{R_m},{xmmreg} 00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:cmpps {imm8},{Mod}{R_m},{xmmreg} +', +`11110010,00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:INVALID {Mod}{R_m},{xmmreg} +11110011,00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:INVALID {Mod}{R_m},{xmmreg} +01100110,00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:INVALID {Mod}{R_m},{xmmreg} +00001111,11000010,{Mod}{xmmreg}{R_m},{imm8}:INVALID {Mod}{R_m},{xmmreg} +')dnl 1010011{w}:{RE}cmps{w} {es_di},{ds_si} 00001111,1011000{w},{mod}{reg}{r_m}:cmpxchg {reg}{w},{mod}{r_m}{w} ifdef(`i386', @@ -146,7 +160,7 @@ ifdef(`i386', ')dnl 1111011{w},{mod}110{r_m}:div{w} {mod}{r_m}{w} 00001111,01110111:emms -11001000,{imm16},{imm8}:enter {imm16},{imm8} +11001000,{imm16},{imm8}:enter{W} {imm16},{imm8} 11011001,11010000:fnop 11011001,11100000:fchs 11011001,11100001:fabs @@ -342,33 +356,44 @@ ifdef(`ASSEMBLER', 0110110{w}:{R}ins{w} {dx},{es_di} 11001101,{imm8}:int {imm8} 11001100:int3 -11001110:into +ifdef(`i386', +`11001110:into +')dnl 00001111,00001000:invd # ORDER 00001111,00000001,11111000:swapgs 00001111,00000001,{mod}111{r_m}:invlpg {mod}{r_m} # ORDER END -11001111:iret{W} +11001111:iret{W1} 0111{tttn},{disp8}:j{tttn} {disp8} 00001111,1000{tttn},{rel}:j{tttn} {rel} 00001111,1001{tttn},{mod}000{8r_m}:set{tttn} {mod}{8r_m} # SPECIAL 11100011,{disp8}:[{dpfx}?jcxz:jecxz] {disp8} 11100011,{disp8}:INVALID {disp8} 11101011,{disp8}:jmp {disp8} -11101001,{rel}:jmp {rel} -11111111,{mod}100{r_m}:jmp *{mod}{r_m} +11101001,{rel}:jmp{W} {rel} +11111111,{mod}100{64r_m}:jmp{W} *{mod}{64r_m} 11101010,{absval},{sel}:ljmp {sel},{absval} -11111111,{mod}101{r_m}:ljmp *{mod}{r_m} +11111111,{mod}101{64r_m}:ljmp{W} *{mod}{64r_m} 10011111:lahf 00001111,00000010,{mod}{reg}{16r_m}:lar {mod}{16r_m},{reg} -11000101,{mod}{reg}{r_m}:lds {mod}{r_m},{reg} +ifdef(`i386', +`11000101,{mod}{reg}{r_m}:lds {mod}{r_m},{reg} +')dnl 10001101,{mod}{reg}{r_m}:lea {mod}{r_m},{reg} -11001001:leave -11000100,{mod}{reg}{r_m}:les {mod}{r_m},{reg} +11001001:leave{W} +ifdef(`i386', +`11000100,{mod}{reg}{r_m}:les {mod}{r_m},{reg} +')dnl 00001111,10110100,{mod}{reg}{r_m}:lfs {mod}{r_m},{reg} -00001111,00000001,{mod}010{r_m}:lgdt{w0} {mod}{r_m} 00001111,10110101,{mod}{reg}{r_m}:lgs {mod}{r_m},{reg} +ifdef(`i386', +`00001111,00000001,{mod}010{r_m}:lgdt{w0} {mod}{r_m} 00001111,00000001,{mod}011{r_m}:lidt{w0} {mod}{r_m} +', +`00001111,00000001,{mod}010{r_m}:lgdt {mod}{r_m} +00001111,00000001,{mod}011{r_m}:lidt {mod}{r_m} +')dnl 00001111,00000000,{mod}010{16r_m}:lldt {mod}{16r_m} 00001111,00000001,{mod}110{16r_m}:lmsw {mod}{16r_m} 11110000:lock @@ -385,10 +410,10 @@ ifdef(`ASSEMBLER', 1011{w}{reg},{imm}:mov {imm}{w},{reg}{w} 1010000{w},{abs}:mov {abs},{ax}{w} 1010001{w},{abs}:mov {ax}{w},{abs} -00001111,00100000,11{ccc}{reg}:mov {ccc},{reg} -00001111,00100010,11{ccc}{reg}:mov {reg},{ccc} -00001111,00100001,11{ddd}{reg}:mov {ddd},{reg} -00001111,00100011,11{ddd}{reg}:mov {reg},{ddd} +00001111,00100000,11{ccc}{reg64}:mov {ccc},{reg64} +00001111,00100010,11{ccc}{reg64}:mov {reg64},{ccc} +00001111,00100001,11{ddd}{reg64}:mov {ddd},{reg64} +00001111,00100011,11{ddd}{reg64}:mov {reg64},{ddd} 10001100,{mod}{sreg3}{r_m}:mov {sreg3},{mod}{r_m} 10001110,{mod}{sreg3}{r_m}:mov {mod}{r_m},{sreg3} 1010010{w}:{R}movs{w} {ds_si},{es_di} @@ -398,12 +423,8 @@ ifdef(`ASSEMBLER', 00001111,10110111,{mod}{reg}{16r_m}:movzwl {mod}{16r_m},{reg} 1111011{w},{mod}100{r_m}:mul{w} {mod}{r_m}{w} 1111011{w},{mod}011{r_m}:neg{w} {mod}{r_m}{w} -ifdef(`ASSEMBLER', -`10010000:nop 11110011,10010000:pause -', -`10010000:{R}INVALID -')dnl +10010000:nop 1111011{w},{mod}010{r_m}:not{w} {mod}{r_m}{w} 0000100{w},{mod}{reg}{r_m}:or {reg}{w},{mod}{r_m}{w} 0000101{w},{mod}{reg}{r_m}:or {mod}{r_m}{w},{reg}{w} @@ -413,17 +434,36 @@ ifdef(`ASSEMBLER', 1110011{w},{imm8}:out {ax}{w},{imm8} 1110111{w}:out {ax}{w},{dx} 0110111{w}:{R}outs{w} {ds_si},{dx} -10001111,{mod}000{r_m}:pop{w} {mod}{r_m} -01011{reg}:pop {reg} -00001111,10{sreg3}001:pop {sreg3} -01100001:popa{W} +ifdef(`i386', +`10001111,{mod}000{r_m}:pop{w} {mod}{r_m} +', +# XXX This is not the cleanest way... +`10001111,11000{reg64}:pop {reg64} +10001111,{mod}000{r_m}:pop{W} {mod}{r_m} +')dnl +00001111,10{sreg3}001:pop{W} {sreg3} 10011101:popf{W} -11111111,{mod}110{r_m}:push{w} {mod}{r_m} -01010{reg}:push {reg} -011010{s}0,{imm}:push {imm}{s} +# XXX This is not the cleanest way... +ifdef(`i386', +`11111111,{mod}110{r_m}:push{w} {mod}{r_m} +', +`11111111,11110{reg64}:push {reg64} +11111111,{mod}110{r_m}:pushq {mod}{r_m} +')dnl +ifdef(`i386', +`01010{reg}:push {reg} +01011{reg}:pop {reg} +', +`01010{reg64}:push {reg64} +01011{reg64}:pop {reg64} +')dnl +011010{s}0,{imm}:push{W} {imm}{s} 000{sreg2}110:push {sreg2} -00001111,10{sreg3}000:push {sreg3} -01100000:pusha{W} +00001111,10{sreg3}000:push{W} {sreg3} +ifdef(`i386', +`01100000:pusha{W} +01100001:popa{W} +')dnl 10011100:pushf{W} 1101000{w},{mod}010{r_m}:rcl{w} {mod}{r_m}{w} 1101001{w},{mod}010{r_m}:rcl{w} %cl,{mod}{r_m}{w} @@ -434,8 +474,8 @@ ifdef(`ASSEMBLER', 00001111,00110010:rdmsr 00001111,00110011:rdpmc 00001111,00110001:rdtsc -11000011:ret -11000010,{imm16}:ret {imm16} +11000011:ret{W} +11000010,{imm16}:ret{W} {imm16} 11001011:lret 11001010,{imm16}:lret {imm16} 1101000{w},{mod}000{r_m}:rol{w} {mod}{r_m}{w} @@ -453,7 +493,7 @@ ifdef(`ASSEMBLER', 0001101{w},{mod}{reg}{r_m}:sbb {mod}{r_m}{w},{reg}{w} 0001110{w},{imm}:sbb {imm}{w},{ax}{w} 1000000{w},{mod}011{r_m},{imm}:sbb{w} {imm}{w},{mod}{r_m}{w} -1000001{w},{mod}011{r_m},{imms}:sbb{w} {imms},{mod}{r_m} +1000001{w},{mod}011{r_m},{imms8}:sbb{w} {imms8},{mod}{r_m} 1010111{w}:{RE}scas {es_di},{ax}{w} 00001111,1001{tttn},{mod}000{r_m}:set{tttn} {mod}{r_m} 1101000{w},{mod}100{r_m}:shl{w} {mod}{r_m}{w} @@ -471,14 +511,27 @@ ifdef(`ASSEMBLER', 00001111,00000001,11000010:vmlaunch 00001111,00000001,11000011:vmresume 00001111,00000001,11000100:vmxoff -00001111,01111000,{mod}{reg}{r_m}:vmread {reg},{mod}{r_m} -00001111,01111001,{mod}{reg}{r_m}:vmwrite {mod}{r_m},{reg} -00001111,00000001,{mod}000{r_m}:sgdtl {mod}{r_m} +00001111,01111000,{mod}{reg64}{64r_m}:vmread {reg64},{mod}{64r_m} +00001111,01111001,{mod}{reg64}{64r_m}:vmwrite {mod}{64r_m},{reg64} +ifdef(`i386', +`00001111,00000001,{mod}000{r_m}:sgdtl {mod}{r_m} +', +`00001111,00000001,{mod}000{r_m}:sgdt {mod}{r_m} +')dnl # ORDER END # ORDER -00001111,00000001,11001000:monitor %eax,%ecx,%edx +ifdef(`i386', +`00001111,00000001,11001000:monitor %eax,%ecx,%edx 00001111,00000001,11001001:mwait %eax,%ecx -00001111,00000001,{mod}001{r_m}:sidtl {mod}{r_m} +', +`00001111,00000001,11001000:monitor %rax,%rcx,%rdx +00001111,00000001,11001001:mwait %rax,%rcx +')dnl +ifdef(`i386', +`00001111,00000001,{mod}001{r_m}:sidtl {mod}{r_m} +', +`00001111,00000001,{mod}001{r_m}:sidt {mod}{r_m} +')dnl # ORDER END 00001111,00000000,{mod}000{r_m}:sldt {mod}{r_m} 00001111,00000001,{mod}100{r_m}:smsw {mod}{r_m} @@ -491,7 +544,7 @@ ifdef(`ASSEMBLER', 0010101{w},{mod}{reg}{r_m}:sub {mod}{r_m}{w},{reg}{w} 0010110{w},{imm}:sub {imm}{w},{ax}{w} 1000000{w},{mod}101{r_m},{imm}:sub{w} {imm}{w},{mod}{r_m}{w} -1000001{w},{mod}101{r_m},{imms}:sub{w} {imms},{mod}{r_m} +1000001{w},{mod}101{r_m},{imms8}:sub{w} {imms8},{mod}{r_m} 1000010{w},{mod}{reg}{r_m}:test {reg}{w},{mod}{r_m}{w} 1010100{w},{imm}:test {imm}{w},{ax}{w} 1111011{w},{mod}000{r_m},{imm}:test{w} {imm}{w},{mod}{r_m}{w} @@ -515,7 +568,7 @@ ifdef(`ASSEMBLER', 0011001{w},{mod}{reg}{r_m}:xor {mod}{r_m}{w},{reg}{w} 0011010{w},{imm}:xor {imm}{w},{ax}{w} 1000000{w},{mod}110{r_m},{imm}:xor{w} {imm}{w},{mod}{r_m}{w} -1000001{w},{mod}110{r_m},{imms}:xor{w} {imms},{mod}{r_m} +1000001{w},{mod}110{r_m},{imms8}:xor{w} {imms8},{mod}{r_m} 00001111,01110111:emms 01100110,00001111,11011011,{Mod}{xmmreg}{R_m}:pand {Mod}{R_m},{xmmreg} 00001111,11011011,{MOD}{mmxreg}{R_M}:pand {MOD}{R_M},{mmxreg} diff --git a/libcpu/defs/x86_64 b/libcpu/defs/x86_64 deleted file mode 100644 index 090c47518..000000000 --- a/libcpu/defs/x86_64 +++ /dev/null @@ -1,341 +0,0 @@ -%mask {s} 1 -%mask {w} 1 -%mask {D} 1 -%mask {imm8} 8 -%mask {imm16} 16 -%mask {reg} 3 -%mask {tttn} 4 -%mask {gg} 2 -%mask {mod} 2 -%mask {MOD} 2 -%mask {r_m} 3 -%mask {disp8} 8 -# imm really is 8/16/32 bit depending on the situation. -%mask {imm} 8 -%mask {abs} 32 -%mask {sel} 16 -%mask {imm32} 32 -%mask {dispA} 32 -%mask {ccc} 3 -%mask {ddd} 3 -%mask {sreg3} 3 -%mask {sreg2} 2 -%mask {mmxreg} 3 -%mask {R_M} 3 -%mask {0g} 2 -%mask {GG} 2 -%mask {gG} 2 -%mask {Mod} 2 -%mask {xmmreg} 3 -%mask {R_m} 3 -%mask {xmmreg1} 3 -%mask {xmmreg2} 3 -%mask {mmreg} 3 -%prefix {R} -%prefix {RE} -%suffix {W} -%suffix {WW} -%synonym {xmmreg1} {xmmreg} -%synonym {xmmreg2} {xmmreg} - -%% -0001010{w},{imm}:adc {imm}{w},{ax}{w} -1000000{w},{mod}010{r_m},{imm}:adc{w} {imm},{mod}{r_m} -1000001{w},{mod}010{r_m},{imm8}:adc{w} {imm8},{mod}{r_m} -0001000{w},{mod}{reg}{r_m}:adc{w} {reg},{mod}{r_m} -0001001{w},{mod}{reg}{r_m}:adc{w} {mod}{r_m},{reg} -0000010{w},{imm}:add {imm}{w},{ax}{w} -1000000{w},{mod}000{r_m},{imm}:add{w} {imm},{mod}{r_m} -1000001{w},{mod}000{r_m},{imm8}:add{w} {imm8},{mod}{r_m} -0000000{w},{mod}{reg}{r_m}:add {reg}{w},{mod}{r_m} -0000001{w},{mod}{reg}{r_m}:add {mod}{r_m},{reg}{w} -01100110,00001111,01011000,{Mod}{xmmreg}{R_m}:addpd {Mod}{R_m},{xmmreg} -00001111,01011000,{Mod}{xmmreg}{R_m}:addps {Mod}{R_m},{xmmreg} -11110010,00001111,01011000,{Mod}{xmmreg}{R_m}:addsd {Mod}{R_m},{xmmreg} -11110011,00001111,01011000,{Mod}{xmmreg}{R_m}:addss {Mod}{R_m},{xmmreg} -01100110,00001111,11010000,{Mod}{xmmreg}{R_m}:addsubpd {Mod}{R_m},{xmmreg} -11110010,00001111,11010000,{Mod}{xmmreg}{R_m}:addsubps {Mod}{R_m},{xmmreg} -# -# -# -0010000{w},{mod}{reg}{r_m}:and{w} {reg},{mod}{r_m} -0010001{w},{mod}{reg}{r_m}:and{w} {mod}{r_m},{reg} -0010010{w},{imm}:and {imm}{w},{ax}{w} -100000{s}{w},{mod}100{r_m},{imm}:and{w} {imm}{s},{mod}{r_m} -01100011,{mod}{reg}{r_m}:arpl {reg},{mod}{r_m} -01100010,{mod}{reg}{r_m}:bound {reg},{mod}{r_m} -00001111,10111100,{mod}{reg}{r_m}:bsf {reg},{mod}{r_m} -00001111,10111101,{mod}{reg}{r_m}:bsr {reg},{mod}{r_m} -00001111,11001{reg}:bswap {reg} -00001111,10111010,{mod}100{r_m},{imm8}:bt {imm8},{mod}{r_m} -00001111,10100011,{mod}{reg}{r_m}:bt {reg},{mod}{r_m} -00001111,10111010,{mod}111{r_m},{imm8}:btc {imm8},{mod}{r_m} -00001111,10111011,{mod}{reg}{r_m}:btc {reg},{mod}{r_m} -00001111,10111010,{mod}110{r_m},{imm8}:btr {imm8},{mod}{r_m} -00001111,10110011,{mod}{reg}{r_m}:btr {reg},{mod}{r_m} -00001111,10111010,{mod}101{r_m},{imm8}:bts {imm8},{mod}{r_m} -00001111,10101011,{mod}{reg}{r_m}:bts {reg},{mod}{r_m} -11101000,{abs}:call {abs} -11111111,{mod}010{r_m}:call *{mod}{r_m} -10011010,{abs},{sel}:lcall {sel},{abs} -11111111,{mod}011{r_m}:lcall {mod}{r_m} -10011000:cbt{WW} -#SPECIAL 10011001:[{dpfx}?cltd:cwtd] -11111000:clc -11111100:cld -11111010:cli -00001111,00000110:clts -11110101:cmc -00001111,0100{tttn},{mod}{reg}{r_m}:cmov{tttn} {mod}{r_m},{reg} -0011100{w},{mod}{reg}{r_m}:cmp{w} {reg},{mod}{r_m} -0011101{w},{mod}{reg}{r_m}:cmp{w} {mod}{r_m},{reg} -0011110{w},{imm}:cmp {imm}{w},{ax}{w} -100000{s}{w},{mod}111{r_m},{imm}:cmp{w} {imm}{s},{mod}{r_m} -1010011{w}:{RE}cmps{w} -00001111,1011000{w},{mod}{reg}{r_m}:cmpxchg{w} {reg},{mod}{r_m} -00001111,11000111,{mod}{reg}{r_m}:cmpxchg8b {reg},{mod}{r_m} -00001111,10100010:cpuid -00100111:daa -00101111:das -1111111{w},{mod}001{r_m}:dec{w} {mod}{r_m} -01001{reg}:dec {reg} -1111011{w},{mod}110{r_m}:div{w} {mod}{r_m} -11001000,{imm16},{imm8}:enter {imm16},{imm8} -11110100:hlt -1111011{w},{mod}111{r_m}:idiv{w} {mod}{r_m} -1111011{w},{mod}101{r_m}:imul{w} {mod}{r_m} -00001111,10101111,{mod}{reg}{r_m}:imul {reg},{mod}{r_m} -011010{s}1,{mod}{reg}{r_m},{imm}:imul {imm}{s},{mod}{r_m},{reg} -1110010{w},{imm8}:in {imm8},{ax}{w} -1110110{w}:in {dx},{ax}{w} -1111111{w},{mod}000{r_m}:inc{w} {mod}{r_m} -01000{reg}:inc {reg} -0110110{w}:{R}ins{w} {dx},{es_di} -11001101,{imm8}:int {imm8} -11001100:int 3 -11001110:into -00001111,00001000:invd -00001111,00000001,{mod}111{r_m}:invlpg {mod}{r_m} -11001111:iret{W} -0111{tttn},{disp8}:j{tttn} {disp8} -00001111,1000{tttn},{dispA}:j{tttn} {dispA} -#SPECIAL 11100011,{disp8}:[{dpfx}?jcxz:jecxz] {disp8} -11101011,{disp8}:jmp {disp8} -11101001,{dispA}:jmp {dispA} -11111111,{mod}100{r_m}:jmp *{mod}{r_m} -11101010,{abs},{sel}:ljmp {sel},{abs} -11111111,{mod}101{r_m}:ljmp {mod}{r_m} -10011111:lahf -00001111,00000010,{mod}{reg}{r_m}:lar {mod}{r_m},{reg} -11000101,{mod}{reg}{r_m}:lds {mod}{r_m},{reg} -10001101,{mod}{reg}{r_m}:lea {mod}{r_m},{reg} -11001001:leave -11000100,{mod}{reg}{r_m}:les {mod}{r_m},{reg} -00001111,10110100,{mod}{reg}{r_m}:lfs {mod}{r_m},{reg} -00001111,00000001,{mod}010{r_m}:lgdt{WW} {mod}{r_m} -00001111,10110101,{mod}{reg}{r_m}:lgs {mod}{r_m},{reg} -00001111,00000001,{mod}011{r_m}:lidt{WW} {mod}{r_m} -00001111,00000000,{mod}010{r_m}:lldt{WW} {mod}{r_m} -00001111,00000001,{mod}110{r_m}:lmsw {mod}{r_m} -11110000:lock -1010110{w}:{R}lods {ds_si},{ax}{w} -11100010,{disp8}:loop {disp8} -11100001,{disp8}:loope {disp8} -11100000,{disp8}:loopne {disp8} -00001111,00000011,{mod}{reg}{r_m}:lsl {mod}{r_m},{reg} -00001111,10110010,{mod}{reg}{r_m}:lss {mod}{r_m},{reg} -00001111,00000000,{mod}011{r_m}:ltr {mod}{r_m} -1000100{w},{mod}{reg}{r_m}:mov{w} {reg},{mod}{r_m} -1000101{w},{mod}{reg}{r_m}:mov{w} {mod}{r_m},{reg} -1100011{w},{mod}000{r_m},{imm}:mov{w} {imm},{mod}{r_m} -1011{w}{reg},{imm}:mov{w} {imm},{reg} -1010000{w},{abs}:mov {ax}{w},{abs} -1010001{w},{abs}:mov {abs},{ax}{w} -00001111,00100000,11{ccc}{reg}:mov {reg},{ccc} -00001111,00100010,11{ccc}{reg}:mov {ccc},{reg} -00001111,00100001,11{ddd}{reg}:mov {reg},{ddd} -00001111,00100011,11{ddd}{reg}:mov {ddd},{reg} -10001100,{mod}{sreg3}{r_m}:mov {sreg3},{mod}{r_m} -10001110,{mod}{sreg3}{r_m}:mov {mod}{r_m},{sreg3} -1010010{w}:{R}movs{w} {ds_si},{es_di} -00001111,1011111{w},{mod}{reg}{r_m}:movsx{w} {mod}{r_m},{reg} -00001111,1011011{w},{mod}{reg}{r_m}:movzx{w} {mod}{r_m},{reg} -1111011{w},{mod}100{r_m}:mul{w} {mod}{r_m} -1111011{w},{mod}011{r_m}:neg{w} {mod}{r_m} -10010000:nop -11110011,10010000:pause -1111011{w},{mod}010{r_m}:not{w} {mod}{r_m} -0000100{w},{mod}{reg}{r_m}:or{w} {reg},{mod}{r_m} -0000101{w},{mod}{reg}{r_m}:or{w} {mod}{r_m},{reg} -100000{s}{w},{mod}001{r_m},{imm}:or{w} {imm}{s},{mod}{r_m} -0000110{w},{imm}:mov {imm}{w},{ax}{w} -1110011{w},{imm8}:out {ax}{w},{imm8} -1110111{w}:out {ax}{w},{dx} -0110111{w}:{R}outs{w} {ds_si},{dx} -10001111,{mod}000{r_m}:pop {mod}{r_m} -01011{reg}:pop {reg} -000{sreg2}111:pop {sreg2} -00001111,10{sreg3}001:pop {sreg3} -01100001:popa{W} -10011101:popf{W} -11111111,{mod}110{r_m}:push {mod}{r_m} -01010{reg}:push {reg} -011010{s}0,{imm}:push {imm}{s} -000{sreg2}110:push {sreg2} -00001111,10{sreg3}000:push {sreg3} -01100000:pusha{W} -10011100:pushf{W} -1101000{w},{mod}010{r_m}:rcl{w} {mod}{r_m} -1101001{w},{mod}010{r_m}:rcl{w} %cl,{mod}{r_m} -1100000{w},{mod}010{r_m},{imm8}:rcl{w} {imm8},{mod}{r_m} -1101000{w},{mod}011{r_m}:rcr{w} {mod}{r_m} -1101001{w},{mod}011{r_m}:rcr{w} %cl,{mod}{r_m} -1100000{w},{mod}011{r_m},{imm8}:rcr{w} {imm8},{mod}{r_m} -00001111,00110010:rdmsr -00001111,00110011:rdpmc -00001111,00110001:rdtsc -11000011:ret -11000010,{imm16}:ret {imm16} -11001011:lret -11001010,{imm16}:lret {imm16} -1101000{w},{mod}000{r_m}:rol{w} {mod}{r_m} -1101001{w},{mod}000{r_m}:rol{w} %cl,{mod}{r_m} -1100000{w},{mod}000{r_m},{imm8}:rol{w} {imm8},{mod}{r_m} -1101000{w},{mod}001{r_m}:ror{w} {mod}{r_m} -1101001{w},{mod}001{r_m}:ror{w} %cl,{mod}{r_m} -1100000{w},{mod}001{r_m},{imm8}:ror{w} {imm8},{mod}{r_m} -00001111,10101010:rsm -10011110:sahf -1101000{w},{mod}111{r_m}:sar{w} {mod}{r_m} -1101001{w},{mod}111{r_m}:sar{w} %cl,{mod}{r_m} -1100000{w},{mod}111{r_m},{imm8}:sar{w} {imm8},{mod}{r_m} -0001100{w},{mod}{reg}{r_m}:sbb{w} {reg},{mod}{r_m} -0001101{w},{mod}{reg}{r_m}:sbb{w} {mod}{r_m},{reg} -0001110{w},{imm}:sbb {imm}{w},{ax}{w} -100000{s}{w},{mod}011{r_m},{imm}:sbb{w} {imm}{s},{mod}{r_m} -1010111{w}:{RE}scas {es_di},{ax}{w} -00001111,1001{tttn},{mod}000{r_m}:set{tttn} {mod}{r_m} -00001111,00000001,{mod}000{r_m}:sgdt {mod}{r_m} -1101000{w},{mod}100{r_m}:shl{w} {mod}{r_m} -1101001{w},{mod}100{r_m}:shl{w} %cl,{mod}{r_m} -1100000{w},{mod}100{r_m},{imm8}:shl{w} {imm8},{mod}{r_m} -1101000{w},{mod}101{r_m}:shr{w} {mod}{r_m} -00001111,10100100,{mod}{reg}{r_m},{imm8}:shld {imm8},{reg},{mod}{r_m} -00001111,10100101,{mod}{reg}{r_m}:shld %cl,{reg},{mod}{r_m} -1101001{w},{mod}101{r_m}:shr{w} %cl,{mod}{r_m} -1100000{w},{mod}101{r_m},{imm8}:shr{w} {imm8},{mod}{r_m} -00001111,10101100,{mod}{reg}{r_m},{imm8}:shrd {imm8},{reg},{mod}{r_m} -00001111,10101101,{mod}{reg}{r_m}:shrd %cl,{reg},{mod}{r_m} -00001111,00000001,{mod}001{r_m}:sidt {mod}{r_m} -00001111,00000000,{mod}000{r_m}:sldt {mod}{r_m} -00001111,00000001,{mod}100{r_m}:smsw {mod}{r_m} -11111001:stc -11111101:std -11111011:sti -1010101{w}:{R}stos {ax}{w},{es_di} -00001111,00000000,{mod}001{r_m}:str {mod}{r_m} -0010100{w},{mod}{reg}{r_m}:sub{w} {reg},{mod}{r_m} -0010101{w},{mod}{reg}{r_m}:sub{w} {mod}{r_m},{reg} -0010110{w},{imm}:sub {imm}{w},{ax}{w} -100000{s}{w},{mod}101{r_m},{imm}:sub{w} {imm}{s},{mod}{r_m} -1000010{w},{mod}{reg}{r_m}:test{w} {reg},{mod}{r_m}{w} -1000011{w},{mod}{reg}{r_m}:test{w} {mod}{r_m}{w},{reg} -0010100{w},{imm}:test {imm}{w},{ax}{w} -1111011{w},{mod}000{r_m},{imm}:test{w} {imm},{mod}{r_m} -00001111,00001011:ud2a -00001111,00000000,{mod}100{r_m}:verr {mod}{r_m} -00001111,00000000,{mod}101{r_m}:verw {mod}{r_m} -10011011:wait -00001111,00001001:wbinvd -00001111,00110000:wrmsr -00001111,1100000{w},{mod}{reg}{r_m}:xadd{w} {reg},{mod}{r_m} -1000011{w},{mod}{reg}{r_m}:xchg{w} {reg},{mod}{r_m} -11010111:xlat -0011000{w},{mod}{reg}{r_m}:xor{w} {reg},{mod}{r_m} -0011001{w},{mod}{reg}{r_m}:xor{w} {mod}{r_m},{reg} -0011010{w},{imm}:xor {imm}{w},{ax}{w} -100000{s}{w},{mod}110{r_m},{imm}:xor{w} {imm}{s},{mod}{r_m} -00001111,01110111:emms -00001111,01101110,{mod}{mmxreg}{r_m}:movd {mod}{r_m},{mmxreg} -00001111,01111110,{mod}{mmxreg}{r_m}:movd {mmxreg},{mod}{r_m} -00001111,01101111,{MOD}{mmxreg}{R_M}:movq {MOD}{R_M},{mmxreg} -00001111,01111111,{MOD}{mmxreg}{R_M}:movq {mmxreg},{MOD}{R_M} -00001111,01101011,{MOD}{mmxreg}{R_M}:packssdw {MOD}{R_M},{mmxreg} -00001111,01100011,{MOD}{mmxreg}{R_M}:packsswb {MOD}{R_M},{mmxreg} -00001111,01100111,{MOD}{mmxreg}{R_M}:packuswb {MOD}{R_M},{mmxreg} -00001111,111111{gg},{MOD}{mmxreg}{R_M}:padd{gg} {MOD}{R_M},{mmxreg} -00001111,111111{0g},{MOD}{mmxreg}{R_M}:padds{0g} {MOD}{R_M},{mmxreg} -00001111,110111{0g},{MOD}{mmxreg}{R_M}:paddus{0g} {MOD}{R_M},{mmxreg} -00001111,11011011,{MOD}{mmxreg}{R_M}:pand {MOD}{R_M},{mmxreg} -00001111,11011111,{MOD}{mmxreg}{R_M}:pandn {MOD}{R_M},{mmxreg} -00001111,011101{gg},{MOD}{mmxreg}{R_M}:pcmpeq{gg} {MOD}{R_M},{mmxreg} -00001111,011001{gg},{MOD}{mmxreg}{R_M}:pcmpgt{gg} {MOD}{R_M},{mmxreg} -00001111,11110101,{MOD}{mmxreg}{R_M}:pmaddwd {MOD}{R_M},{mmxreg} -00001111,11100101,{MOD}{mmxreg}{R_M}:pmulhw {MOD}{R_M},{mmxreg} -00001111,11010101,{MOD}{mmxreg}{R_M}:pmullw {MOD}{R_M},{mmxreg} -00001111,11101011,{MOD}{mmxreg}{R_M}:por {MOD}{R_M},{mmxreg} -00001111,111100{GG},{MOD}{mmxreg}{R_M}:psll{GG} {MOD}{R_M},{mmxreg} -00001111,011100{GG},11110{mmxreg},{imm8}:psll{GG} {imm8},{mmxreg} -00001111,111000{gG},{MOD}{mmxreg}{R_M}:psra{gG} {MOD}{R_M},{mmxreg} -00001111,011100{gG},11100{mmxreg},{imm8}:psra{gG} {imm8},{mmxreg} -00001111,110100{GG},{MOD}{mmxreg}{R_M}:psrl{GG} {MOD}{R_M},{mmxreg} -00001111,011100{GG},11010{mmxreg},{imm8}:psrl{GG} {imm8},{mmxreg} -00001111,111110{gg},{MOD}{mmxreg}{R_M}:psub{gg} {MOD}{R_M},{mmxreg} -00001111,111010{0g},{MOD}{mmxreg}{R_M}:psubs{0g} {MOD}{R_M},{mmxreg} -00001111,110110{0g},{MOD}{mmxreg}{R_M}:psubus{0g} {MOD}{R_M},{mmxreg} -00001111,011010{gg},{MOD}{mmxreg}{R_M}:punpckh{gg} {MOD}{R_M},{mmxreg} -00001111,011000{gg},{MOD}{mmxreg}{R_M}:punpckl{gg} {MOD}{R_M},{mmxreg} -00001111,11101111,{MOD}{mmxreg}{R_M}:pxor {MOD}{R_M},{mmxreg} -00001111,01011000,{Mod}{xmmreg}{R_m}:addps {Mod}{R_m},{xmmreg} -11110011,00001111,01011000,{Mod}{xmmreg}{R_m}:addss {Mod}{R_m},{xmmreg} -00001111,01010101,{Mod}{xmmreg}{R_m}:andnps {Mod}{R_m},{xmmreg} -00001111,01010100,{Mod}{xmmreg}{R_m}:andps {Mod}{R_m},{xmmreg} -00001111,11000010,{Mod}{xmmreg}{R_m},00000000:cmpeqps {Mod}{R_m},{xmmreg} -00001111,11000010,{Mod}{xmmreg}{R_m},00000001:cmpltps {Mod}{R_m},{xmmreg} -00001111,11000010,{Mod}{xmmreg}{R_m},00000010:cmpleps {Mod}{R_m},{xmmreg} -00001111,11000010,{Mod}{xmmreg}{R_m},00000011:cmpunordps {Mod}{R_m},{xmmreg} -00001111,11000010,{Mod}{xmmreg}{R_m},00000100:cmpneqps {Mod}{R_m},{xmmreg} -00001111,11000010,{Mod}{xmmreg}{R_m},00000101:cmpnltps {Mod}{R_m},{xmmreg} -00001111,11000010,{Mod}{xmmreg}{R_m},00000110:cmpnleps {Mod}{R_m},{xmmreg} -00001111,11000010,{Mod}{xmmreg}{R_m},00000111:cmpordps {Mod}{R_m},{xmmreg} -11110011,00001111,11000010,{Mod}{xmmreg}{R_m},00000000:cmpeqss {Mod}{R_m},{xmmreg} -11110011,00001111,11000010,{Mod}{xmmreg}{R_m},00000001:cmpltss {Mod}{R_m},{xmmreg} -11110011,00001111,11000010,{Mod}{xmmreg}{R_m},00000010:cmpless {Mod}{R_m},{xmmreg} -11110011,00001111,11000010,{Mod}{xmmreg}{R_m},00000011:cmpunordss {Mod}{R_m},{xmmreg} -11110011,00001111,11000010,{Mod}{xmmreg}{R_m},00000100:cmpneqss {Mod}{R_m},{xmmreg} -11110011,00001111,11000010,{Mod}{xmmreg}{R_m},00000101:cmpnltss {Mod}{R_m},{xmmreg} -11110011,00001111,11000010,{Mod}{xmmreg}{R_m},00000110:cmpnless {Mod}{R_m},{xmmreg} -11110011,00001111,11000010,{Mod}{xmmreg}{R_m},00000111:cmpordss {Mod}{R_m},{xmmreg} -00001111,00101111,{Mod}{xmmreg}{R_m}:comiss {Mod}{R_m},{xmmreg} -00001111,00101010,{MOD}{xmmreg}{R_M}:cvtpi2ps {MOD}{R_M},{xmmreg} -00001111,00101101,{MOD}{mmreg}{R_M}:cvtps2pi {MOD}{R_M},{mmreg} -11110011,00001111,00101010,{mod}{xmmreg}{r_m}:cvtsi2ss {mod}{r_m},{xmmreg} -11110011,00001111,00101101,{Mod}{reg}{R_m}:cvtss2si {Mod}{R_m},{reg} -00001111,00101100,{Mod}{mmreg}{R_m}:cvttps2pi {Mod}{R_m},{mmreg} -11110011,00001111,00101100,{Mod}{reg}{R_m}:cvttss2si {Mod}{R_m},{reg} -00001111,01011110,{Mod}{xmmreg}{R_m}:divps {Mod}{R_m},{xmmreg} -11110011,00001111,01011110,{Mod}{xmmreg}{R_m}:divss {Mod}{R_m},{xmmreg} -00001111,10101110,{mod}001{r_m}:fxrstor {mod}{r_m} -00001111,10101110,{mod}000{r_m}:fxsave {mod}{r_m} -00001111,10101110,{mod}010{r_m}:ldmxcsr {mod}{r_m} -00001111,01011111,{Mod}{xmmreg}{R_m}:maxps {Mod}{R_m},{xmmreg} -11110011,00001111,01011111,{Mod}{xmmreg}{R_m}:maxss {Mod}{R_m},{xmmreg} -00001111,01011101,{Mod}{xmmreg}{R_m}:minps {Mod}{R_m},{xmmreg} -11110011,00001111,01011101,{Mod}{xmmreg}{R_m}:minss {Mod}{R_m},{xmmreg} -00001111,00101000,{Mod}{xmmreg}{R_m}:movaps {Mod}{R_m},{xmmreg} -00001111,00101001,{Mod}{xmmreg}{R_m}:movaps {xmmreg},{Mod}{R_m} -# ORDER: -00001111,00010010,11{xmmreg1}{xmmreg2}:movhlps {xmmreg1},{xmmreg2} -00001111,00010011,11{xmmreg1}{xmmreg2}:movhlps {xmmreg2},{xmmreg1} -00001111,00010010,{Mod}{xmmreg}{R_m}:movlps {Mod}{R_m},{xmmreg} -00001111,00010011,{Mod}{xmmreg}{R_m}:movlps {xmmreg},{Mod}{R_m} -# ORDER END: -# ORDER: -00001111,00010110,11{xmmreg1}{xmmreg2}:movlhps {xmmreg1},{xmmreg2} -00001111,00010111,11{xmmreg1}{xmmreg2}:movlhps {xmmreg2},{xmmreg1} -00001111,00010110,{Mod}{xmmreg}{R_m}:movhps {Mod}{R_m},{xmmreg} -00001111,00010111,{Mod}{xmmreg}{R_m}:movhps {xmmreg},{Mod}{R_m} -# ORDER END: -# BOGUS -00000000,11{reg}111:fadd {reg} -00001111,00000001,11000001:vmcall diff --git a/libcpu/i386_data.h b/libcpu/i386_data.h index 5148fa06a..398c672b6 100644 --- a/libcpu/i386_data.h +++ b/libcpu/i386_data.h @@ -101,7 +101,7 @@ data_prefix (int *prefixes, char *bufp, size_t *bufcntp, size_t bufsize) else if (*prefixes & has_es) { ch = 'e'; - *prefixes &= has_es; + *prefixes &= ~has_es; } else if (*prefixes & has_fs) { @@ -132,10 +132,26 @@ data_prefix (int *prefixes, char *bufp, size_t *bufcntp, size_t bufsize) return 0; } -static const char regs[8][4] = +#ifdef X86_64 +static const char hiregs[8][4] = + { + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" + }; +static const char aregs[8][4] = + { + "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi" + }; +static const char dregs[8][4] = + { + "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi" + }; +#else +static const char aregs[8][4] = { "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi" }; +# define dregs aregs +#endif static int general_mod$r_m (GElf_Addr addr __attribute__ ((unused)), @@ -158,7 +174,48 @@ general_mod$r_m (GElf_Addr addr __attribute__ ((unused)), return r; uint_fast8_t modrm = data[opoff1 / 8]; - if ((*prefixes & has_addr16) == 0) +#ifndef X86_64 + if (unlikely ((*prefixes & has_addr16) != 0)) + { + int16_t disp = 0; + bool nodisp = false; + + if ((modrm & 0xc7) == 6 || (modrm & 0xc0) == 0x80) + /* 16 bit displacement. */ + disp = read_2sbyte_unaligned (&data[opoff1 / 8 + 1]); + else if ((modrm & 0xc0) == 0x40) + /* 8 bit displacement. */ + disp = *(const int8_t *) &data[opoff1 / 8 + 1]; + else if ((modrm & 0xc0) == 0) + nodisp = true; + + char tmpbuf[sizeof ("-0x1234(%rr,%rr)")]; + int n; + if ((modrm & 0xc7) == 6) + n = snprintf (tmpbuf, sizeof (tmpbuf), "0x%" PRIx16, disp); + else + { + n = 0; + if (!nodisp) + n = snprintf (tmpbuf, sizeof (tmpbuf), "%s0x%" PRIx16, + disp < 0 ? "-" : "", disp < 0 ? -disp : disp); + + if ((modrm & 0x4) == 0) + n += snprintf (tmpbuf + n, sizeof (tmpbuf) - n, "(%%b%c,%%%ci)", + "xp"[(modrm >> 1) & 1], "sd"[modrm & 1]); + else + n += snprintf (tmpbuf + n, sizeof (tmpbuf) - n, "(%%%s)", + ((const char [4][3]) { "si", "di", "bp", "bx" })[modrm & 3]); + } + + if (*bufcntp + n + 1 > bufsize) + return *bufcntp + n + 1 - bufsize; + + memcpy (&bufp[*bufcntp], tmpbuf, n + 1); + *bufcntp += n; + } + else +#endif { if ((modrm & 7) != 4) { @@ -174,16 +231,53 @@ general_mod$r_m (GElf_Addr addr __attribute__ ((unused)), else if ((modrm & 0xc0) == 0) nodisp = true; - char tmpbuf[sizeof ("-0x12345678(%rrr)")]; + char tmpbuf[sizeof ("-0x12345678(%rrrr)")]; int n; if (nodisp) - n = snprintf (tmpbuf, sizeof (tmpbuf), "(%%%s)", regs[modrm & 7]); + { + n = snprintf (tmpbuf, sizeof (tmpbuf), "(%%%s)", +#ifdef X86_64 + (*prefixes & has_rex_b) ? hiregs[modrm & 7] : +#endif + aregs[modrm & 7]); +#ifdef X86_64 + if (*prefixes & has_addr16) + { + if (*prefixes & has_rex_b) + tmpbuf[n++] = 'd'; + else + tmpbuf[2] = 'e'; + } +#endif + } else if ((modrm & 0xc7) != 5) - n = snprintf (tmpbuf, sizeof (tmpbuf), "%s0x%" PRIx32 "(%%%s)", - disp < 0 ? "-" : "", disp < 0 ? -disp : disp, - regs[modrm & 7]); + { + int p; + n = snprintf (tmpbuf, sizeof (tmpbuf), "%s0x%" PRIx32 "(%%%n%s)", + disp < 0 ? "-" : "", disp < 0 ? -disp : disp, &p, +#ifdef X86_64 + (*prefixes & has_rex_b) ? hiregs[modrm & 7] : +#endif + aregs[modrm & 7]); +#ifdef X86_64 + if (*prefixes & has_addr16) + { + if (*prefixes & has_rex_b) + tmpbuf[n++] = 'd'; + else + tmpbuf[p] = 'e'; + } +#endif + } else - n = snprintf (tmpbuf, sizeof (tmpbuf), "0x%" PRIx32, disp); + { +#ifdef X86_64 + n = snprintf (tmpbuf, sizeof (tmpbuf), "%s0x%" PRIx32 "(%%rip)", + disp < 0 ? "-" : "", disp < 0 ? -disp : disp); +#else + n = snprintf (tmpbuf, sizeof (tmpbuf), "0x%" PRIx32, disp); +#endif + } if (*bufcntp + n + 1 > bufsize) return *bufcntp + n + 1 - bufsize; @@ -208,10 +302,14 @@ general_mod$r_m (GElf_Addr addr __attribute__ ((unused)), else nodisp = true; - char tmpbuf[sizeof ("-0x12345678(%rrr,%rrr,N)")]; + char tmpbuf[sizeof ("-0x12345678(%rrrr,%rrrr,N)")]; char *cp = tmpbuf; int n; - if ((modrm & 0xc0) != 0 || (sib & 0x3f) != 0x25) + if ((modrm & 0xc0) != 0 || (sib & 0x3f) != 0x25 +#ifdef X86_64 + || (*prefixes & has_rex_x) != 0 +#endif + ) { if (!nodisp) { @@ -225,14 +323,40 @@ general_mod$r_m (GElf_Addr addr __attribute__ ((unused)), if ((modrm & 0xc7) != 0x4 || (sib & 0x7) != 0x5) { *cp++ = '%'; - cp = mempcpy (cp, regs[sib & 7], 3); + cp = stpcpy (cp, +#ifdef X86_64 + (*prefixes & has_rex_b) ? hiregs[sib & 7] : + (*prefixes & has_addr16) ? dregs[sib & 7] : +#endif + aregs[sib & 7]); +#ifdef X86_64 + if ((*prefixes & (has_rex_b | has_addr16)) + == (has_rex_b | has_addr16)) + *cp++ = 'd'; +#endif } - if ((sib & 0x38) != 0x20) + if ((sib & 0x38) != 0x20 +#ifdef X86_64 + || (*prefixes & has_rex_x) != 0 +#endif + ) { *cp++ = ','; *cp++ = '%'; - cp = mempcpy (cp, regs[(sib >> 3) & 7], 3); + cp = stpcpy (cp, +#ifdef X86_64 + (*prefixes & has_rex_x) + ? hiregs[(sib >> 3) & 7] : + (*prefixes & has_addr16) + ? dregs[(sib >> 3) & 7] : +#endif + aregs[(sib >> 3) & 7]); +#ifdef X86_64 + if ((*prefixes & (has_rex_b | has_addr16)) + == (has_rex_b | has_addr16)) + *cp++ = 'd'; +#endif *cp++ = ','; *cp++ = '0' + (1 << (sib >> 6)); @@ -243,7 +367,13 @@ general_mod$r_m (GElf_Addr addr __attribute__ ((unused)), else { assert (! nodisp); - n = snprintf (cp, sizeof (tmpbuf), "0x%" PRIx32, disp); +#ifdef X86_64 + if ((*prefixes & has_addr16) == 0) + n = snprintf (cp, sizeof (tmpbuf), "0x%" PRIx64, + (int64_t) disp); + else +#endif + n = snprintf (cp, sizeof (tmpbuf), "0x%" PRIx32, disp); cp += n; } @@ -283,7 +413,7 @@ FCT_MOD$R_M (GElf_Addr addr __attribute__ ((unused)), size_t avail = bufsize - *bufcntp; int needed; if (*prefixes & (has_rep | has_repne)) - needed = snprintf (&bufp[*bufcntp], avail, "%%%s", regs[byte]); + needed = snprintf (&bufp[*bufcntp], avail, "%%%s", dregs[byte]); else needed = snprintf (&bufp[*bufcntp], avail, "%%mm%" PRIxFAST8, byte); if ((size_t) needed > avail) @@ -344,7 +474,13 @@ generic_abs (int *prefixes __attribute__ ((unused)), const uint8_t *end __attribute__ ((unused)), DisasmGetSymCB_t symcb __attribute__ ((unused)), void *symcbarg __attribute__ ((unused)), - const char *absstring) + const char *absstring +#ifdef X86_64 + , int abslen +#else +# define abslen 4 +#endif + ) { int r = data_prefix (prefixes, bufp, bufcntp, bufsize); if (r != 0) @@ -352,12 +488,22 @@ generic_abs (int *prefixes __attribute__ ((unused)), assert (opoff1 % 8 == 0); assert (opoff1 / 8 == 1); - if (*param_start + 4 > end) + if (*param_start + abslen > end) return -1; - *param_start += 4; - uint32_t absval = read_4ubyte_unaligned (&data[1]); + *param_start += abslen; +#ifndef X86_64 + uint32_t absval; +# define ABSPRIFMT PRIx32 +#else + uint64_t absval; +# define ABSPRIFMT PRIx64 + if (abslen == 8) + absval = read_8ubyte_unaligned (&data[1]); + else +#endif + absval = read_4ubyte_unaligned (&data[1]); size_t avail = bufsize - *bufcntp; - int needed = snprintf (&bufp[*bufcntp], avail, "%s0x%" PRIx32, + int needed = snprintf (&bufp[*bufcntp], avail, "%s0x%" ABSPRIFMT, absstring, absval); if ((size_t) needed > avail) return needed - avail; @@ -383,7 +529,11 @@ FCT_absval (GElf_Addr addr __attribute__ ((unused)), { return generic_abs (prefixes, opoff1, bufp, bufcntp, bufsize, data, param_start, end, symcb, - symcbarg, "$"); + symcbarg, "$" +#ifdef X86_64 + , 4 +#endif + ); } static int @@ -404,7 +554,11 @@ FCT_abs (GElf_Addr addr __attribute__ ((unused)), { return generic_abs (prefixes, opoff1, bufp, bufcntp, bufsize, data, param_start, end, symcb, - symcbarg, ""); + symcbarg, "" +#ifdef X86_64 + , 8 +#endif + ); } static int @@ -576,7 +730,12 @@ FCT_ds_xx (const char *reg, size_t avail = bufsize - *bufcntp; int needed = snprintf (&bufp[*bufcntp], avail, "(%%%s%s)", - *prefixes & idx_addr16 ? "" : "e", reg); +#ifdef X86_64 + *prefixes & idx_addr16 ? "e" : "r", +#else + *prefixes & idx_addr16 ? "" : "e", +#endif + reg); if ((size_t) needed > avail) return (size_t) needed - avail; *bufcntp += needed; @@ -665,7 +824,12 @@ FCT_es_di (GElf_Addr addr __attribute__ ((unused)), { size_t avail = bufsize - *bufcntp; int needed = snprintf (&bufp[*bufcntp], avail, "%%es:(%%%sdi)", - *prefixes & idx_addr16 ? "" : "e"); +#ifdef X86_64 + *prefixes & idx_addr16 ? "e" : "r" +#else + *prefixes & idx_addr16 ? "" : "e" +#endif + ); if ((size_t) needed > avail) return (size_t) needed - avail; *bufcntp += needed; @@ -757,9 +921,14 @@ FCT_imms (GElf_Addr addr __attribute__ ((unused)), void *symcbarg __attribute__ ((unused))) { size_t avail = bufsize - *bufcntp; - int_fast8_t byte = *(*param_start)++; + int8_t byte = *(*param_start)++; +#ifdef X86_64 + int needed = snprintf (&bufp[*bufcntp], avail, "$0x%" PRIx64, + (int64_t) byte); +#else int needed = snprintf (&bufp[*bufcntp], avail, "$0x%" PRIx32, (int32_t) byte); +#endif if ((size_t) needed > avail) return (size_t) needed - avail; *bufcntp += needed; @@ -793,8 +962,13 @@ FCT_imm$s (GElf_Addr addr __attribute__ ((unused)), { if (*param_start + 4 > end) return -1; - uint32_t word = read_4ubyte_unaligned_inc (*param_start); + int32_t word = read_4sbyte_unaligned_inc (*param_start); +#ifdef X86_64 + int needed = snprintf (&bufp[*bufcntp], avail, "$0x%" PRIx64, + (int64_t) word); +#else int needed = snprintf (&bufp[*bufcntp], avail, "$0x%" PRIx32, word); +#endif if ((size_t) needed > avail) return (size_t) needed - avail; *bufcntp += needed; @@ -893,7 +1067,6 @@ FCT_imm8 (GElf_Addr addr __attribute__ ((unused)), return 0; } -#ifndef X86_64 static int FCT_rel (GElf_Addr addr __attribute__ ((unused)), int *prefixes __attribute__ ((unused)), @@ -913,15 +1086,19 @@ FCT_rel (GElf_Addr addr __attribute__ ((unused)), size_t avail = bufsize - *bufcntp; if (*param_start + 4 > end) return -1; - uint32_t rel = read_4ubyte_unaligned_inc (*param_start); + int32_t rel = read_4sbyte_unaligned_inc (*param_start); +#ifdef X86_64 + int needed = snprintf (&bufp[*bufcntp], avail, "0x%" PRIx64, + (uint64_t) (addr + rel + (*param_start - data))); +#else int needed = snprintf (&bufp[*bufcntp], avail, "0x%" PRIx32, (uint32_t) (addr + rel + (*param_start - data))); +#endif if ((size_t) needed > avail) return (size_t) needed - avail; *bufcntp += needed; return 0; } -#endif static int FCT_mmxreg (GElf_Addr addr __attribute__ ((unused)), @@ -971,14 +1148,33 @@ FCT_mod$r_m (GElf_Addr addr __attribute__ ((unused)), uint_fast8_t modrm = data[opoff1 / 8]; if ((modrm & 0xc0) == 0xc0) { + if (*prefixes & has_addr16) + return -1; + int is_16bit = (*prefixes & has_data16) != 0; if (*bufcntp + 5 - is_16bit > bufsize) return *bufcntp + 5 - is_16bit - bufsize; bufp[(*bufcntp)++] = '%'; - memcpy (&bufp[*bufcntp], regs[modrm & 7] + is_16bit, - sizeof (regs[0]) - is_16bit); - *bufcntp += 3 - is_16bit; + + char *cp; +#ifdef X86_64 + if ((*prefixes & has_rex_b) != 0 && !is_16bit) + { + cp = stpcpy (&bufp[*bufcntp], hiregs[modrm & 7]); + if ((*prefixes & has_rex_w) == 0) + *cp++ = 'd'; + } + else +#endif + { + cp = stpcpy (&bufp[*bufcntp], dregs[modrm & 7] + is_16bit); +#ifdef X86_64 + if ((*prefixes & has_rex_w) != 0) + bufp[*bufcntp] = 'r'; +#endif + } + *bufcntp = cp - bufp; return 0; } @@ -1013,6 +1209,9 @@ FCT_moda$r_m (GElf_Addr addr __attribute__ ((unused)), uint_fast8_t modrm = data[opoff1 / 8]; if ((modrm & 0xc0) == 0xc0) { + if (*prefixes & has_addr16) + return -1; + if (*bufcntp + 3 > bufsize) return *bufcntp + 3 - bufsize; @@ -1029,6 +1228,14 @@ FCT_moda$r_m (GElf_Addr addr __attribute__ ((unused)), #endif +#ifdef X86_64 +static const char rex_8bit[8][3] = + { + [0] = "a", [1] = "c", [2] = "d", [3] = "b", + [4] = "sp", [5] = "bp", [6] = "si", [7] = "di" + }; +#endif + static int FCT_mod$r_m$w (GElf_Addr addr __attribute__ ((unused)), int *prefixes __attribute__ ((unused)), @@ -1053,24 +1260,60 @@ FCT_mod$r_m$w (GElf_Addr addr __attribute__ ((unused)), uint_fast8_t modrm = data[opoff1 / 8]; if ((modrm & 0xc0) == 0xc0) { + if (*prefixes & has_addr16) + return -1; + + if (*bufcntp + 5 > bufsize) + return *bufcntp + 5 - bufsize; + if ((data[opoff3 / 8] & (1 << (7 - (opoff3 & 7)))) == 0) { - if (*bufcntp + 3 > bufsize) - return *bufcntp + 3 - bufsize; bufp[(*bufcntp)++] = '%'; - bufp[(*bufcntp)++] = "acdb"[modrm & 3]; - bufp[(*bufcntp)++] = "lh"[(modrm & 4) >> 2]; + +#ifdef X86_64 + if (*prefixes & has_rex) + { + if (*prefixes & has_rex_r) + *bufcntp += snprintf (bufp + *bufcntp, bufsize - *bufcntp, + "r%db", 8 + (modrm & 7)); + else + { + char *cp = stpcpy (bufp + *bufcntp, hiregs[modrm & 7]); + *cp++ = 'l'; + *bufcntp = cp - bufp; + } + } + else +#endif + { + bufp[(*bufcntp)++] = "acdb"[modrm & 3]; + bufp[(*bufcntp)++] = "lh"[(modrm & 4) >> 2]; + } } else { int is_16bit = (*prefixes & has_data16) != 0; - if (*bufcntp + 5 - is_16bit > bufsize) - return *bufcntp + 5 - is_16bit - bufsize; bufp[(*bufcntp)++] = '%'; - memcpy (&bufp[*bufcntp], regs[modrm & 7] + is_16bit, - sizeof (regs[0]) - is_16bit); - *bufcntp += 3 - is_16bit; + + char *cp; +#ifdef X86_64 + if ((*prefixes & has_rex_b) != 0 && !is_16bit) + { + cp = stpcpy (&bufp[*bufcntp], hiregs[modrm & 7]); + if ((*prefixes & has_rex_w) == 0) + *cp++ = 'd'; + } + else +#endif + { + cp = stpcpy (&bufp[*bufcntp], dregs[modrm & 7] + is_16bit); +#ifdef X86_64 + if ((*prefixes & has_rex_w) != 0) + bufp[*bufcntp] = 'r'; +#endif + } + *bufcntp = cp - bufp; } return 0; } @@ -1081,7 +1324,6 @@ FCT_mod$r_m$w (GElf_Addr addr __attribute__ ((unused)), } -#ifndef X86_64 static int FCT_mod$8r_m (GElf_Addr addr __attribute__ ((unused)), int *prefixes __attribute__ ((unused)), @@ -1114,7 +1356,6 @@ FCT_mod$8r_m (GElf_Addr addr __attribute__ ((unused)), bufcntp, bufsize, data, param_start, end, symcb, symcbarg); } -#endif static int FCT_mod$16r_m (GElf_Addr addr __attribute__ ((unused)), @@ -1140,7 +1381,7 @@ FCT_mod$16r_m (GElf_Addr addr __attribute__ ((unused)), if (*bufcntp + 3 > bufsize) return *bufcntp + 3 - bufsize; bufp[(*bufcntp)++] = '%'; - memcpy (&bufp[*bufcntp], regs[byte] + 1, sizeof (regs[0]) - 1); + memcpy (&bufp[*bufcntp], dregs[byte] + 1, sizeof (dregs[0]) - 1); *bufcntp += 2; return 0; } @@ -1150,6 +1391,45 @@ FCT_mod$16r_m (GElf_Addr addr __attribute__ ((unused)), symcb, symcbarg); } +#ifdef X86_64 +static int +FCT_mod$64r_m (GElf_Addr addr __attribute__ ((unused)), + int *prefixes __attribute__ ((unused)), + const char *op1str __attribute__ ((unused)), + size_t opoff1 __attribute__ ((unused)), + size_t opoff2 __attribute__ ((unused)), + size_t opoff3 __attribute__ ((unused)), + char *bufp __attribute__ ((unused)), + size_t *bufcntp __attribute__ ((unused)), + size_t bufsize __attribute__ ((unused)), + const uint8_t *data __attribute__ ((unused)), + const uint8_t **param_start __attribute__ ((unused)), + const uint8_t *end __attribute__ ((unused)), + DisasmGetSymCB_t symcb __attribute__ ((unused)), + void *symcbarg __attribute__ ((unused))) +{ + assert (opoff1 % 8 == 0); + uint_fast8_t modrm = data[opoff1 / 8]; + if ((modrm & 0xc0) == 0xc0) + { + uint_fast8_t byte = data[opoff1 / 8] & 7; + if (*bufcntp + 4 > bufsize) + return *bufcntp + 4 - bufsize; + char *cp = &bufp[*bufcntp]; + *cp++ = '%'; + cp = stpcpy (cp, (*prefixes & has_rex_b) ? hiregs[byte] : aregs[byte]); + *bufcntp = cp - bufp; + return 0; + } + + return general_mod$r_m (addr, prefixes, op1str, opoff1, opoff2, opoff3, bufp, + bufcntp, bufsize, data, param_start, end, + symcb, symcbarg); +} +#else +static typeof (FCT_mod$r_m) FCT_mod$64r_m __attribute__ ((alias ("FCT_mod$r_m"))); +#endif + static int FCT_reg (GElf_Addr addr __attribute__ ((unused)), int *prefixes __attribute__ ((unused)), @@ -1171,11 +1451,69 @@ FCT_reg (GElf_Addr addr __attribute__ ((unused)), byte >>= 8 - (opoff1 % 8 + 3); byte &= 7; int is_16bit = (*prefixes & has_data16) != 0; - if (*bufcntp + 4 > bufsize) - return *bufcntp + 4 - bufsize; + if (*bufcntp + 5 > bufsize) + return *bufcntp + 5 - bufsize; + bufp[(*bufcntp)++] = '%'; +#ifdef X86_64 + if ((*prefixes & has_rex_r) != 0 && !is_16bit) + { + *bufcntp += snprintf (&bufp[*bufcntp], bufsize - *bufcntp, "r%d", + 8 + byte); + if ((*prefixes & has_rex_w) == 0) + bufp[(*bufcntp)++] = 'd'; + } + else +#endif + { + memcpy (&bufp[*bufcntp], dregs[byte] + is_16bit, 3 - is_16bit); +#ifdef X86_64 + if ((*prefixes & has_rex_w) != 0 && !is_16bit) + bufp[*bufcntp] = 'r'; +#endif + *bufcntp += 3 - is_16bit; + } + return 0; +} + +static int +FCT_reg64 (GElf_Addr addr __attribute__ ((unused)), + int *prefixes __attribute__ ((unused)), + const char *op1str __attribute__ ((unused)), + size_t opoff1 __attribute__ ((unused)), + size_t opoff2 __attribute__ ((unused)), + size_t opoff3 __attribute__ ((unused)), + char *bufp __attribute__ ((unused)), + size_t *bufcntp __attribute__ ((unused)), + size_t bufsize __attribute__ ((unused)), + const uint8_t *data __attribute__ ((unused)), + const uint8_t **param_start __attribute__ ((unused)), + const uint8_t *end __attribute__ ((unused)), + DisasmGetSymCB_t symcb __attribute__ ((unused)), + void *symcbarg __attribute__ ((unused))) +{ + uint_fast8_t byte = data[opoff1 / 8]; + assert (opoff1 % 8 + 3 <= 8); + byte >>= 8 - (opoff1 % 8 + 3); + byte &= 7; + if ((*prefixes & has_data16) != 0) + return -1; + if (*bufcntp + 5 > bufsize) + return *bufcntp + 5 - bufsize; bufp[(*bufcntp)++] = '%'; - memcpy (&bufp[*bufcntp], regs[byte] + is_16bit, sizeof (regs[0]) - is_16bit); - *bufcntp += 3 - is_16bit; +#ifdef X86_64 + if ((*prefixes & has_rex_r) != 0) + { + *bufcntp += snprintf (&bufp[*bufcntp], bufsize - *bufcntp, "r%d", + 8 + byte); + if ((*prefixes & has_rex_w) == 0) + bufp[(*bufcntp)++] = 'd'; + } + else +#endif + { + memcpy (&bufp[*bufcntp], aregs[byte], 3); + *bufcntp += 3; + } return 0; } @@ -1202,15 +1540,34 @@ FCT_reg$w (GElf_Addr addr __attribute__ ((unused)), assert (opoff1 % 8 + 3 <= 8); byte >>= 8 - (opoff1 % 8 + 3); byte &= 7; - if (*bufcntp + 3 > bufsize) - return *bufcntp + 3 - bufsize; + + if (*bufcntp + 4 > bufsize) + return *bufcntp + 4 - bufsize; + bufp[(*bufcntp)++] = '%'; - bufp[(*bufcntp)++] = "acdb"[byte & 3]; - bufp[(*bufcntp)++] = "lh"[byte >> 2]; + +#ifdef X86_64 + if (*prefixes & has_rex) + { + if (*prefixes & has_rex_r) + *bufcntp += snprintf (bufp + *bufcntp, bufsize - *bufcntp, + "r%db", 8 + byte); + else + { + char* cp = stpcpy (bufp + *bufcntp, rex_8bit[byte]); + *cp++ = 'l'; + *bufcntp = cp - bufp; + } + } + else +#endif + { + bufp[(*bufcntp)++] = "acdb"[byte & 3]; + bufp[(*bufcntp)++] = "lh"[byte >> 2]; + } return 0; } -#ifndef X86_64 static int FCT_freg (GElf_Addr addr __attribute__ ((unused)), int *prefixes __attribute__ ((unused)), @@ -1238,6 +1595,7 @@ FCT_freg (GElf_Addr addr __attribute__ ((unused)), return 0; } +#ifndef X86_64 static int FCT_reg16 (GElf_Addr addr __attribute__ ((unused)), int *prefixes __attribute__ ((unused)), diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c index a9edcffde..ecdbfb654 100644 --- a/libcpu/i386_disasm.c +++ b/libcpu/i386_disasm.c @@ -90,7 +90,12 @@ static const unsigned short int mneidx[] = enum { - idx_cs = 0, + idx_rex_b = 0, + idx_rex_x, + idx_rex_r, + idx_rex_w, + idx_rex, + idx_cs, idx_ds, idx_es, idx_fs, @@ -106,6 +111,11 @@ enum enum { #define prefbit(pref) has_##pref = 1 << idx_##pref + prefbit (rex_b), + prefbit (rex_x), + prefbit (rex_r), + prefbit (rex_w), + prefbit (rex), prefbit (cs), prefbit (ds), prefbit (es), @@ -226,7 +236,7 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr, while (data < end) { unsigned int i; - for (i = 0; i < nknown_prefixes; ++i) + for (i = idx_cs; i < nknown_prefixes; ++i) if (known_prefixes[i] == *data) break; if (i == nknown_prefixes) @@ -237,6 +247,11 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr, ++data; } +#ifdef X86_64 + if (data < end && (*data & 0xf0) == 0x40) + prefixes |= ((*data++) & 0xf) | has_rex; +#endif + assert (data <= end); if (data == end) { @@ -407,19 +422,29 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr, { uint_fast8_t modrm = codep[-1]; - if ((prefixes & has_addr16) == 0) +#ifndef X86_64 + if (likely ((prefixes & has_addr16) != 0)) + { + /* Account for displacement. */ + if ((modrm & 0xc7) == 6 || (modrm & 0xc0) == 0x80) + param_start += 2; + else if ((modrm & 0xc0) == 0x40) + param_start += 1; + } + else +#endif { /* Account for SIB. */ if ((modrm & 0xc0) != 0xc0 && (modrm & 0x7) == 0x4) param_start += 1; - } - /* Account for displacement. */ - if ((modrm & 0xc7) == 5 || (modrm & 0xc0) == 0x80 - || ((modrm & 0xc7) == 0x4 && (codep[0] & 0x7) == 0x5)) - param_start += 4; - else if ((modrm & 0xc0) == 0x40) - param_start += 1; + /* Account for displacement. */ + if ((modrm & 0xc7) == 5 || (modrm & 0xc0) == 0x80 + || ((modrm & 0xc7) == 0x4 && (codep[0] & 0x7) == 0x5)) + param_start += 4; + else if ((modrm & 0xc0) == 0x40) + param_start += 1; + } if (unlikely (param_start > end)) goto not; @@ -484,6 +509,7 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr, size_t start_idx = bufcnt; switch (*fmt++) { + char mnebuf[16]; const char *str; case 'm': @@ -493,15 +519,6 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr, { switch (*data) { - case 0x90: - if (prefixes & ~has_rep) - goto print_prefix; - /* Discard the 'rep' prefix string possibly - already in the buffer. */ - bufcnt = 0; - str = prefixes & has_rep ? "pause" : "nop"; - break; - case 0x98: if (prefixes & ~has_data16) goto print_prefix; @@ -517,9 +534,56 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr, case 0xe3: if (prefixes & ~has_addr16) goto print_prefix; +#ifdef X86_64 + str = prefixes & has_addr16 ? "jecxz" : "jrcxz"; +#else str = prefixes & has_addr16 ? "jcxz" : "jecxz"; +#endif break; + case 0x0f: +#ifdef X86_64 + if (data[1] == 0xc7) + { + str = ((prefixes & has_rex_w) + ? "cmpxchg16b" : "cmpxchg8b"); + break; + } +#endif + if (data[1] == 0xc2) + { + if (param_start >= end) + goto not; + if (*param_start > 7) + goto not; + static const char cmpops[][9] = + { + [0] = "cmpeq", + [1] = "cmplt", + [2] = "cmple", + [3] = "cmpunord", + [4] = "cmpneq", + [5] = "cmpnlt", + [6] = "cmpnle", + [7] = "cmpord" + }; + char *cp = stpcpy (mnebuf, cmpops[*param_start]); + if (correct_prefix & (has_rep | has_repne)) + *cp++ = 's'; + else + *cp++ = 'p'; + if (correct_prefix & (has_data16 | has_repne)) + *cp++ = 'd'; + else + *cp++ = 's'; + *cp = '\0'; + str = mnebuf; + /* Eat the immediate byte indicating the + operation. */ + ++param_start; + break; + } + default: assert (! "INVALID not handled"); } @@ -565,11 +629,23 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr, ADD_CHAR ('w'); prefixes &= ~has_data16; } -#ifdef x86_64 +#ifdef X86_64 else - abort (); + ADD_CHAR ('q'); #endif break; + case suffix_W1: + if (prefixes & has_data16) + { + ADD_CHAR ('w'); + prefixes &= ~has_data16; + } +#ifdef X86_64 + else if (prefixes & has_rex_w) + ADD_CHAR ('q'); +#endif + break; + case suffix_tttn:; static const char tttn[16][3] = { diff --git a/libcpu/i386_parse.y b/libcpu/i386_parse.y index 5cfd3df21..896b11d0a 100644 --- a/libcpu/i386_parse.y +++ b/libcpu/i386_parse.y @@ -108,7 +108,7 @@ struct instruction /* Suffix. */ enum { suffix_none = 0, suffix_w, suffix_w0, suffix_W, suffix_tttn, - suffix_w1, suffix_D } suffix; + suffix_w1, suffix_W1, suffix_D } suffix; /* Flag set if modr/m is used. */ int modrm; @@ -324,6 +324,8 @@ instr: bytes ':' bitfieldopt kID bitfieldopt optargs newp->suffix = suffix_w1; else if (strcmp ($5->name, "W") == 0) newp->suffix = suffix_W; + else if (strcmp ($5->name, "W1") == 0) + newp->suffix = suffix_W1; else if (strcmp ($5->name, "D") == 0) newp->suffix = suffix_D; else @@ -1130,6 +1132,7 @@ instrtable_out (void) EMIT_SUFFIX (tttn); EMIT_SUFFIX (D); EMIT_SUFFIX (w1); + EMIT_SUFFIX (W1); fputc_unlocked ('\n', outfile); diff --git a/tests/ChangeLog b/tests/ChangeLog index 7ad6942ae..4a76f0345 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,14 @@ +2008-01-08 Ulrich Drepper + + * Makefile.am (TESTS): Add run-disasm-x86-64.sh. + (EXTRA): Add testfile45.S.bz2, testfile45.expect.bz2, + run-disasm-x86-64.sh. + * run-disasm-x86-64.sh: New file. + * testfile45.S.bz2: New file. + * testfile45.expect.bz2: New file. + * testfile44.S.bz2: New tests. + * testfile44.expect.bz2: Adjust. + 2008-01-04 Ulrich Drepper * testfile44.S.bz2: New tests. diff --git a/tests/Makefile.am b/tests/Makefile.am index 25631e3ca..42f71ce4e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to create Makefile.in ## -## Copyright (C) 1996-2002, 2003, 2004, 2005, 2006, 2007 Red Hat, Inc. +## Copyright (C) 1996-2002, 2003, 2004, 2005, 2006, 2007, 2008 Red Hat, Inc. ## This file is part of Red Hat elfutils. ## ## Red Hat elfutils is free software; you can redistribute it and/or modify @@ -84,7 +84,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ dwfl-bug-addr-overflow run-addrname-test.sh \ dwfl-bug-fd-leak dwfl-bug-report \ run-dwfl-bug-offline-rel.sh run-dwfl-addr-sect.sh \ - run-disasm.sh + run-disasm-x86.sh run-disasm-x86-64.sh # run-show-ciefde.sh if !STANDALONE @@ -135,7 +135,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ testfile37.bz2 testfile37.debug.bz2 \ testfile38.bz2 testfile39.bz2 testfile40.bz2 testfile40.debug.bz2 \ testfile41.bz2 testfile42.bz2 testfile43.bz2 \ - testfile44.S.bz2 testfile44.expect.bz2 run-disasm.sh + testfile44.S.bz2 testfile44.expect.bz2 run-disasm-x86.sh \ + testfile45.S.bz2 testfile45.expect.bz2 run-disasm-x86-64.sh installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir) \ bindir=$(DESTDIR)$(bindir) \ diff --git a/tests/run-disasm-x86-64.sh b/tests/run-disasm-x86-64.sh new file mode 100755 index 000000000..2d9ed631f --- /dev/null +++ b/tests/run-disasm-x86-64.sh @@ -0,0 +1,36 @@ +#! /bin/sh +# Copyright (C) 2007, 2008 Red Hat, Inc. +# This file is part of Red Hat elfutils. +# +# Red Hat elfutils is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by the +# Free Software Foundation; version 2 of the License. +# +# Red Hat elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Red Hat elfutils; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. +# +# Red Hat elfutils is an included package of the Open Invention Network. +# An included package of the Open Invention Network is a package for which +# Open Invention Network licensees cross-license their patents. No patent +# license is granted, either expressly or impliedly, by designation as an +# included package. Should you wish to participate in the Open Invention +# Network licensing program, please visit www.openinventionnetwork.com +# . + +. $srcdir/test-subr.sh + +# Run x86-64 test. +case "$(arch)" in + x86_64) + tempfiles testfile45.o + testfiles testfile45.S testfile45.expect + gcc -m64 -c -o testfile45.o testfile45.S + testrun_compare ../src/objdump -d testfile45.o < testfile45.expect + ;; +esac diff --git a/tests/run-disasm.sh b/tests/run-disasm-x86.sh similarity index 100% rename from tests/run-disasm.sh rename to tests/run-disasm-x86.sh diff --git a/tests/testfile44.S.bz2 b/tests/testfile44.S.bz2 index c3af52625e9a60c962097d1ce6bec8463dfd14a3..cbd0da3d1faff52981768aa147f96574d16bb601 100644 GIT binary patch literal 16435 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 IN+f{(7b(Y&0RR91 diff --git a/tests/testfile44.expect.bz2 b/tests/testfile44.expect.bz2 index c4a267e7dc99b580a7ae14908bbf6d065e5c5c29..2347aea1cf09e6a5cb9278ad0861883723f3f1d7 100644 GIT binary patch literal 54232 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

>!B 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%0A9KOjf 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ⅈNWvSU8|i@?^>SA^7-pj+ zV>y6i$>;HHs3t9_Ni$T+EtRH~WsF|9d}ciReiFnz;bGC~@IlFSI-%DAj9R?L34A;y z^#bOr8&2iwF)?x4vBdj(G!^&#KN9L<{CMwQ=(q~Qr|AW^HQ6251gn}@-ConSrKdIh z{4Bto!(PXj#N-SjnFTYcj9fA@Bt&M@>oEvuRiTGr#ihbf zaD_{nHcBNY4(Uu5OoHx)h|!^GQLKSgB`{MI#y!(t$Pihnn^AK1V2V4ZJD2-h8|7(X zMA)*eT((Yg%0?B+*#nCjm6P7cV;m^ef7guRtw}JIqsdXpDWI)CaR}HM!_02_L9yv@ z2dlMHX4zH35Lc0HAM+XMaB*WgsavNQYsLgVlCF@2;U>(< z=tdlso4c))Hp7^}D(S~7!C)2i?3n!2xg!%~g6zyPpbPHx1Sz_#{>i4|Z~+8|T~qU5 zQMIimW0u=QjJ(t>^b!?&xQq&PmMmBW-R&dBIc#zY;b66qR^^Zm&v8QyTJ}6+fk+}z z>~$`(&nf*Wqx@8sKoD`u;XJZx4mJ+E-o+E1_m^+UWz{%T??I$VBBXVPAJUDRn!jQm z0;Bu5FIeeowjop{dVIwDX;_U?L`w~HpK_wTNu%DpkFQ8$x_Ax38CK{k$GhsFLicAy zxx-(ivzY%;QStm0dDWjHx2Y!5ZB+rD>?tSTYP-TdLH568m~v9Kb0<>P;su8X0!Ew% zd|#z4kFA-%ypm`rRrQz5F^^EZvH6opmhxs7vkF*AkA^KooaBXySLV4Bmf0#tW>FiT zrbDaTN#b1Za!@F?s}gtO`WrdJnyn8$KPI`D7{N!V02Zl^A1&?+)%l%9T zWG6Y50=d6t-X?Y%vL-cf^~uAy%eQg&8X$CNIrwBPb1B!2Q&0ma_@wtrL_{~hn8G`D z@3yKUz(rzwL*vx)K;`z=)mq0De}d|?ysPMonD}(RCM%LZQY9ti+vS zPz=Ze6caw(&dV!*?x7zz0t~*q@yS2_yU@2Dbq3Lzi$i`b6>DP+Yq+((8r;3mP(>^* zFnDlrm-^|LgS{r7>>K%^26Qa7q%^ zJ)7cK>+R7R%$^h?l!-B!j(QZa6&rrFe-1^Mzi^KJxzKp(=5OdQ_3vxHqqVwJtY<=u1?}G|`uV zAnv#P-pRsCxILXwgGe6g9v&(+dmeHXb#k=`OJG|l{_%q?utFtDw$&|S#W4?{Azzv9 zg*hp8T|RAl>y!qVd5XT;E*ue8*v&}nQHEZ2>GgM!H-5X3k(aqVmJ!TooP`s9`ea#R zdma4>i~TMncI1+CTISBMv21}D;{o5J2LN4c*;ZH_4nlLe4q5bl=%+@etLT(f70S%7 ze#2pI=!aKWEV(AHDkD{r`h7ky_n$UD(=wyoiRY20}Cwrz)B~;kF z!cd%%Dmyy{cAF0EAk?w@l36l(rhfbM6NjnO+9UFk40*&)`b3e+%2cvIwlkx1De;u8 z0;L!bHT{K14FlCcac>I8s0xXbDEVY**P`-0dp~e)zSPT_i(&_LR>TpmD6*Y*M1C2w8Tt0 ztnJ+dLHi6-&H1AjvHy6ZQ~b{32X|NYN*D?!`cC$7diDL|Wlz=)RN3`vS944G2l^{t zCUWk?$_iYQT%Ko&;nnwc{;OY`kgZcz*o{BF152@9(AOEbbm=_*(m#EH*Rf2*8<{*u zQ-udsUUB2*n%i<_)Ei_!#|?va+v@Nl^Ixd^<((_Kw$;yz^u$cwzAnuYzT-5Zd&-Yk zdiuFV#MSJ7R3Wq%(#@qxX%>(sF;kUv=0h;C-rMeO#nR3W&Aq45LQTc3-j=-TQjGjV zDeoA0s8j$zYoIh$-y7bpubs*xhZ>NuY!wCbg2j%8b0b1>+<8R*rVt$E{=fbL^gl^W z)h-s}j~i59WG{p8g!Qc>j5?9Snk zGMwNnk>v>XxL)+Je(JBsYJlQu4vPq%H578voLw%+8kW+Q?u2Y8(-Z5JsvS36 z_1|8@K$KYnr(lO~${*j?m#Ve=9vuAZ*JHKUeWAbL!IKM;!c$OZXdyefK~mAayS5Rw zO(UZzqY1au%jrez0vNF$5CerQ=2PZV*02lc-qXa&G-M^(F5b-5{p#sg87=bDbo)E` z9f4o`0TL~dGX0f1Ib4Vkt0um+rsBrN#>}zX!rMk~%WXr))YU5Lqu-h(6dpee1}KBW)IO zV!aoeo~|udMjo`>OTDMCzx@^ndj zgg9!qFH!teRZ~^_vDWRICuZ7sw9|=hYE5L-mFeH##=o=$SWgfzq7{DR#)b#bLq8tX*t8R z@)AL9!!#l?KE^~O^t*tFE==f2PTbw=o1p}a#}A%qIb^8j|5Y0zYM53b7k5ed*&(pN zej{MJi|6$saAgl*lZ{Bxji8pGKnaZj!(zzZ+D>(QXnQ`6bxue~ z2rvLHwRdS2P+Tw!3sv$zobJPgaPEf2#>U1WOOZ%qe$m%s!IO_4J?guB*)#FFXUU<4 zhK33aKyjcmlSG;(sG{ULI@J;4_j=SsKtKSv0I)9TY1_Q5hLs5Y0zvIK!zaWxY6#vS zHZYyJtW{I%CQ4X2*XXTS){0~>?5WVm#1?{Zit$(1L@I~*9jg7wn1%OR) z7uY_|mHVC1-Po5Ob0DyAJH;oiVC?oVl`~Kdj4cAtmBc}dr%4p?!OG97R zLv+&u%%Nr*a#;>Kf6WDBWB0(P2!*oXnAQ!s#vu0oC1+Fq_u_<|iDw^&ksO?64tesf zN+Wr5L62DO-nqLHGSr#(sxsD)W8(|o4(|ug)gM26cMc9iWEJ!AMH7QN^SfV7gy%im zLgYTpuX{}W7*0s2k)9hepY}7KLj78qny?wouf%#q)ux(W9M2I~l!#};#JkO2@kiQ< zIip@69^lIo)9m&%PzV$fsY%DYZ;!hgwz`FJgPK5jg=sCuPv066aj6G2nLizt zQJlDbGOi58dM!Qg(HXH92X+q}kVEEGk%~*FqN=)|KgXDLPgp-Z-&*))dZH7>1>n~3 zp?SOh9k)K*xN)J>%1U(Al)J9Zw5|%PhldtW)yRZ6s-1*)`2%h$#7Tl$)*s7FMX%0OFP=`FnyxMfR9}dveNI8ct(%MFDGs}!AF1*Fz8R_g z^73tGniPyeYrKR+>21bAy@!OHQnTRV#E|zkr#=Oy zSO4{5-$fPga|HmEw;dIugt{;13SREB&qwbMRmgYBoLBao!$-TzYkQF4n$-OfBj0>- z*W8Djz=UUgoi9^sOay*>w`-b3c$QH`0_;`vPJlA41Prd5*1%V~W8X6phnR+(`n0?@ z(txk5nC`pxm?dyyI)Cqxbr9^k;tD3T?D?md@uC=S&F7{5(NJR}TQa5Z5ANQ6@fhy{36sKTf+_+xLGDL~3#ch^Vq_yh1Bo|8;MKq?ri7#bPkMI z-6`96QQK$rsj|M}XOW}q>n;HlF0U(IacNp^4%x9wz$?t7{~e5c-rO_9#8-G+bG_8j z;{dy=V~ySnNS}i_SUvVcWHdlRKIjha6i;0OQufPd6oKouCYc(^H zwH#c;s;mcf8sJDgy&isAu?WMUr+F=kQ0jP(o9>MwUt*qdta*vX=hAX0VvTR!&V~Cz zLy#vmvqro?lTTfpsHX}=QNC12yw@oWhsf9{(6{Uw)TS%P!(sPayj=Za#T@l1ERGiD z&{=%N{ya+p&+0qKIq6u^^S*88eX$y&Ld(3o^q|FanSSX0j~ED>GP$}>;yXrqrBwu~ z!BKnqzO|E7Eu}fVk1E{M*tt=i0$LmO>D}n#Q0ob0LSo^Ipk&%@8Hm@KfDKav#5;YK zu1LU9z*Q7h+4g4oto&uaDyfSfJ`vn%DY~b^UfX#byR8qRTx03bun38<*0%*o$;7i z9RQAWABp}t5e3OrfIt5j=YIrJqFP2R0QeoQ{H^*Qk;*^N(a)NQM*Y3wPh{}VS_=Mt zT?<=@KlUTh9W=kHNdL-5Bq)B>9=X$u`_Bqc%zwcd`KPXbC?@vKzZU%> zD5pYAaBQXgrsy9r-v|o>!N8XCO9d_acN-hzk^Yk=Gzj^Wm%&g$GdJZHKEbz&$ zR4n#Z!q!9)uPsm3OLeE=|3loHz_a;%{h~3nRjsL$mc~@2C`!yzDOyu$5n7722x_VZ zF(l|@XlouLrkcfAGm&U(Cd5!<5Tyh`N=nQ<+TZ`)_x+!H-*eBo!{_c#va_Acpg#*qf&( zPYT4;i}_Uc^ju(JWP}E6yim?hJkLiYT|6hE#rg0hMx@8$ zm?Dv3mML5q>>yspXvPK3R?z++LxxM@xfMXyuRebxXBfjHETjv15m$6iSD~;xdFAk-b%102`T14<=4LTh0Y&ElGPZxYMX5+Yk^h3>4LDA9Fmj}O} z`;A7*X2+mY+QlB47Tj9Qp1pe3(~fsB7#Ii-3eKF{+S%FJ?UCGdr6;EyjWjE|KD7ZX zjY@r1888Q6LZ^AXFbe;$8p1FD3k?ko^K%CJ&xUYg-&JZ|RgAOv8S6h7faDb!C(2#Q zF_l+Zdn4+cKogHcV}MiRqWU~MtlvVwI$);9l{E$3qZvC>(wjE9(kbxiEEXg3tQkzq zwGK;HCB=1omQ~NNhX9xqAQnz_LBJd?!>n}^TR#8{pp?2GiEn8OTk)`f z4udAr`I2;N4w!;)jc1ePejC7n_89S`VxyyT7cX1VFQEy67^Hr>EE=77PowZipV9)KxAFml@2Lo6 zmGPWDcI=#~1@b5;7I2N7>N?)e_z_**jYfa8;yM?{%9@1^$UpjqcB*?&@2>ha4d32~ zMq?vBrBkE7UtR8mx~pXztbD9x*o@Z?ITERSL;7;D!kP>_E=kw_tX9o`eL*x5U+|J!U}xfeS+BapR_4xC5&q!WCt2wBK`k~hgiL&#E0yG?cEuaES zLwNjw?%Q}XhrX)4-IfUXIVC9=IX%;BDBtC6!tcz!=IwmD*Q2{{4bKE64k>JN>HuGj zXfd(ZQa-r1?dypfT-$cM?PLBS=K{Id{hI;HB4CD~r{XK%d!-n;cWh_)cLzbWCUQ^X z)9ltN&VS1XuOT`&0?Z=Lr89IW9k3p|c4813S9E+c;UWG~@nx;DhA-bPv$*KUWdrz^ zNw!XemlSd=Ft{`Jo8H=Mk<;>D20DOh&i-WJ3^`4Eo-vW#E=IvOVD+W&*3!E{N6ffb zn3ZpxqethdB-evOk-fD?cV>m0)au8z{d?^>ow?ue7zmtx`YjysXV<-?T4_kR`VOQB zVqZ0?j!o5dsY9~(RvE2mw&XoMZ>M25k`M8Wxeb?vrVs=OjIBv z1W8c~JVRo~Q}yJ&K5)HCxDk5DbJm~SgWT>QD*Vbv&aiNBe>lsc4zm?#scL6rZK(A} z&lR44vV`Hr8E?%O>ztZ8^4fXXfWX%*{70+)N>*B6veoMJazjF=?`kb@9;%o)&8w|I zR;JVGb9+C}MZ{;!?sawsr(9GK9F}oT3E|ZKe55omuXRZiY;tIU%hpeIq=47iuPUg3 zF%4RI`Ia}^OK^v)Du=H;?dWiWx(DJ1%_IPe_L@aM6Jiau9z;MVK9^p!uN(F_u>BQ< znet7XmTQ|?W|lX$8vFtv4{s^2pM%4Ao4(rlf%+km{Ke|u%LCE9r5mOO=<-zS4CU3F znaQdGM-Nn(0h?_1>?P~U#z|SsU^*0CLI~P!4u&|5s03%^VHI4Tb!6@60P24JVplnC z3IGextn|%y{0-XoCmNRNr7NT|jPtUDTcfM%$8*)QJl}Hok{-3J+bj6-?d{=wz$&ty z&$<^8tOUeHF=-eDeFi-~K|H=5baU>I^cH;cidM+GDWP{%rx6EB*K3p+T0B8&xAmG4 z{+Q9uXYI+S*|)5}hrnNkP6TDda>=K9tXy%aJ1<;wQb5}}p6MxsOOm%E@eK9+8g-w( z!+Qz9$o^d5tbSXcgzjk5F98492-Do6N8gH+i>~TR%Kqr=>8&G1c?8VN-Z@vto#YYu zqEhImc((YfSy4@Y(#^%Z`ru5aA1wvn;9EHOtSF`o_Gc$<;kqJ#e}s4Y^TUQhs^&Gt ztWp0ZA~S$ZA0v#KSVQsMt;g=DokS*T1}-#|-?yOCM%>Npi#HWL;iwGY0i8+(Y1D2S zo+(^XxbGsqbSO)Hd#+l}f1#cmfsY3bsYnhwS%OAS8GDG51MUwEt9Vb0>bU1|DOTQN zRW%1-FhGDagKc+139o3Dc*yu%RB|j+>8yUrPIx|HIw2~J!lxi@QB`7La!xh}zJh}k} z!>Z;yRtNvA{pts+^Jpis>rGRTtDoJ?(Q+EMi0ySi-#t%DDGhVn2~0`B+oNDXN% zyv)=5vFm-{O}ry!bdef0r8ww?JAUxIKfFFfys1@=g^|VO&1vu1n(mVFlxF`^J3%#m zUN>P~UL7TkD$!;5wZ0`pIkwwAU2uwOrIlmZ|CTi;T~zaEJC7>mK6_cohm5!;mw*wU zj(bpo05M)l9vR}8HBOgO3g!9L6WD3wmDX(l6kdx% zp40~~3C?P4c{i)?*fj<<-$X1(r_2QNk};vuKV-{O^~BE<=pRRI#*2F6Ns&F(viR9c z&30jsGjg$5S#tVUgZjZ|<0lzqjuw2gYEVHw*dNS^Zt51RbzkBJzd|NNsoxmH(Avf#;|C1YBm z9$}g`DT=o<2?A}hzZw1K(;rlk;>CR0+88Tf==)jn?(Z>G<&jeyp$X3>;`jNaaXT zATdp@B8m;FPtqs6p#(c#ewOl{Qk6MZcQ)fBXiO~TZA%qKZaM#>sFAh!AZz|!3?GvUA z<+(mMcLpMGZ0lz4F$Q@~=KBEQ7{)G_gb*G*hP37{{_81iJAFfeY1{jVJ>S)B@^Byw zU)Jv$2^(yPeygvw4W9u&d3&F+SC6^y_*jV8kI$T%7g*RFJ_9>X?5j!}wI2Rfn*Rav zb6w1P0C^H3u-M9QE#xc<6CwT3)MRM$=mg|dvi=czC>$4JovHUW5AiD^fAfg zSm9saAFrTJGCyQBKKPZYGaDx$d7kZ|{y)FJ2ry_e{(WvYMC+KG(8a4C&;Gs^lR2NE zn%RIqsK{{D)SS-|(guM*BQ>So^p8sU_x-wCJL~7HVXG9SAL7aurRrzVZ}O`%r1F+a zSPS1})vy@q`%ijo_MT#|Wd^c@E|nm&V;H_Lt%4GIt&98U4cFlxwQsRKV1Xz|$t_qw zV8WNet5pI0$7}Lq0J3=&27#AQ7w$yuhPO3DqUXV2-N_7CdbxTnSx!e8mqx>->HFfi zZAG5#eCT7=bh-a~Bs$ysdVxwMkPIzLPOkyKG{pqasz?O3rlosF`Ubt>MOn>7w%U-@RFCYzb}#=yldoSvtyM6$2o*Cboc3UYDT#zwGy(bn$4fKC8relLSS6ygam|Qa?T2}ymAgr_J#Nt$sA4g zvpF@%yvNxi=E}zllC6LoyW+gA)FbU-C(-U%(TMr1t~LnpI!fBNZreMEVlpeGt9($qI#}VtI*hSH#b0Ziz>BG}<<~bR}52){{&X6?z<> zn%$(y0z59`iq^_`(J#?(Fl_#AyTGkLy>u)JV2A#B%56Pafj4MQdewpk+w-y!ED7<8RZ@3JFLY)xJUi0z1w?xRFzg_ zy(ZEnr;%b<1q*HKPqGM_hDY?*=kzh_F}$|QPT%58^(EOSxtv^sRBsYu-KM_ov)*=T zzPj;Xx(_i@RYd0*tLE3F#Mm7zQ+3XkVW496aQEwE{UoOwsdc&Cl;^3D zqI>@2mFGAsvh>YIX?vr*h`rUND*hY0BPSxJ*=qYVbQxriG%-v6#P#KlYDzQw1(Xm8 zv`O2pTj$;M)&f{cs&EFMefHabA8k$v&s@si6mJrG{p+Wg9-B!=u$7H_M+VHK+BuNl zC#S&8?!8T;FSS8uS+iDv%P1fgpr5D-&~>`Y7*1cbTaRD~L_834!& zoaQE14`hlWXjD(CbUqzX=A*Koi6JXDEjV7`oi{aK-AYHT&dK@i9`rcYOd2FR2@atQ z!;4lIV6u)BadM8?`{PZv>#9B$pL#;(j9R0%rd(oR&x~^BRnX`XP)y>GM|{~?yrX0& zE!wMLTu3(ow;W##|0qaeUsrr3mc|^P!8dK0wyISQwzy00j(_k%WP0G@5)Hes2R$&m)ew zjbD@&GkwUm!;Vk?fG59qDDVz|2^_n9<2dI&g19$Nr{XG9xPRC#IBV!1|KNRzbk@`F zrW!48&oqqMR*-+-?EuXA5&0mutU$_jx+sxUr(W&%j))tZ=9%vGgrTC5I zfQ-ftMmFfUAizzN&HPurm9;&qfp0Q^ z8%qz~xA?wTcbtOLChVLFT%J*SoubBkI9yB~S^K$TtL6<8c3go_Cv_Y7WBow+3(rDc zE{0swWLv38Z9NKs1f+iLK>3lC&>A-`-FhJ`TFYIC#ch-bC0FJKsK*A;_2iK?eW%5w@`^wYIjr67ok0iU833 zBg}K}OJGkTx&9T-E`~2Mn4?zMl3-P>ffAuJKTf6zqxi~J!+bWe3h))GC7q4A!v_hOp>_hv)X5j^qR!JNL}$jA@k+!AFWV3YEh2F_b0(fw-ie1Q`otyPw7%^|?+69lHwC!Q*>D6=)qnA))aI%-@HQ?iANxjsY0)eI>ST4nG1FBo&T106mJA@ST=-WJuZ6Z78-13p$`skHlr5S^0`UMbGuFC zX72U?`0i3J9j87sH_F5Qc;}_qgXFxtoe`Swq0M?ofgkniigzpq_A7 z3TyOO zZJ&0disAO=7WK{5Bngk^eNIJUaP<7vE~^n+q;|y;#6eiq8ck2z>5!KpX&gw1*rrQX zNCR&8lvJAoAW(o7+nvvhoc;W_D0RS31Xs%jwVs@gOIB!=`EoFj$hp z7_MKSesH615nlA}7k%#Zu%WPp_ciZhh#RLXM+5=a7NwV1TrX%Ky@!AI>Sb6jd2;n^gBJHU zbl#H+Yug_e9yRm6HBuB516ei``&p+`R zyI*}i=juP&=Anu+TWe^ulm%W4lFGrF;lxOFJA?>~1}-Tou+Q%4b$)SeMA z<3l_VNxLn$UtU?t&;GiV)3X^mfR;ur9DDvsDW74zQ!aZI!FumR^T)fFwKOZp zwKwTXq$;8&0FZS?1#J%q5CQ6i#^De*>(ND&dwyy^`GPcXQ-`W>*Xbrwq{{;TMXD1vjQ&qWX! zefyhG9DF#c&}Xv*?%rqFKIwRHDp4B?*7#61IZ;Qsu{ul-1aPrv4l{chgEs(yNwY~Fsfo(IQ3697&X!Zbt?qb(ZN{(JGa$_Gy zdKt%y-i?~HV=nQ<$&v0VZw4J^?`EvyI0g-HZ`@w#FsW$rUy8PJl=PE*{R7SthJAnL z<6pl~Z#Zuk*V#D2qRRUAU?kf-sOm^HQwR?On<^*MFkhDDr3elFF}{uSLB4_AONuzP zZ7M+{qsiJi&};78)-=V894&9LP6wO)l)HG1VFMS4+$sM6ASh98Oi3pTcCNd+`BE=0 zotUgHa++bE!Si|Tl`|>3hjgPU4DQInz z!a>XU(Mx1L#c-yw(F#DumLiUxDVwemz;#6i@KB%?{~3_hm4>H6A2VS8daIe9A1a4> z+zMaDFVAW+0rzxl&#hZEnl9J5VcJMl9k%kQz^BP03H;}{Lj?P8OtfV@;<^Ah4G8x| z7im9cWO@?C%#by6`td6Oi-ood)d@K$be9p}J9|zOSYdYcLDJhZxrH%#FW-*Gt2lY% zmn64OBatYAT2i7j@(&U-27_P>)f<(JS`$=Z-j7|>j0riNmKit#0b4Q+yj-l-v>JQx zQyd)yd58o%3kwOc3td8jA0HDC5@Z(~KcX(>dwoR~F1a8REnaDU6%zRVfzB~0d_DyI7D`3`_DxojtuLHZixsa26Kcr26YBzLLz!C$=38qLpiDEy=X_?S6fGq9=?n z)RVu^XAoq01L9N>Hm-=+T~zi9AYU+F~i+tLM;gg$$0szJKzruCO~ z!c^JRes+;CZ6xYhnAIvh9MF;vyb=RjNIs^1@TSAhhyB2JHCwk!ky=t_ALJ9kzB_2V zbjja5X1T$?nNXieUHqNCz9o@5XQNQX)VfQ1NrAJcJ>DODPv%2yQmP1#*k+c0o5CD2 zMY;@KMDc@`SQ!;V2|>Z%uT)9=wIdm)vYqC5Zsyud+-&Apc-Q!tVN>`sx5H_HW~p3w zE}8{eraVAUwAOa3LU{HS_wwI2y72PHYYVxAPQbU@VT6YD#*y+_*298LjpsMaq*Hg4 z^$RiuC9u-1@feWE{@^rcm$Qg<;GkA6X2LLVQo7CMvdh(a{A^rZxfBjATCX57a4QJr z_I?w)R_N0k<9b#p)0t{4%h;=MYnAV9FZ~XNMYET>Bxaie5;7;wVIq5$DHw}-eqbx-=a1Aoy-6-`&lq$c zJ?lT`nK}@nmU74zB9$r?ZxwkAUt9pt^8M|$CJX5_!yEPf za96GJ>pI3+ufe8|Ps#;o{W@{4{WxHN|5kDqQ{gloppX!-t2!>mPYN{cna$v?FsMPj zdq4EV<%CwmP`|Fr-DI(5;JB~Iz59}4b^t9z=aKbc*@VWPvpl$9W9l)Mn! zw?iwZUbv(ViMFdFkGk!{i1XXDp*hE0k`-`o#=Tvmo)G=nf$@+7ohaWh9>U;OeOw@1 zlb4w3P~ES2rY$Qm9^fb#m5idVQoEdfajBC^Mql@jgh_MmuI|&T{|3}=EF<{ zw$zTevnx`grZy?~?Z&-p<@NOA*Cd*b36+fv1uW$hkU6;c9x;JJW!Vl6;5s_GeU7>* z5U87bjW4Nu)HymDdw77@L9v_+5<{kCAIal>mU}ELET?b07KQoVXFq67F#f96`f2K^ z`^mX8^+BZjsjnem9WdZsLY~BQ6V4T3FxS2+8)mfXE>L?lx#LIE#@_UTS%FdK2RwtX z)@x+kcp`F@GFoR%PO^R4Bs(kjbA{9shP25}=8z|R`mvSo6t5{1K?$=_&rJrTiGLxmTt>jaj%*A?7Lpl7~*RX!TR8$ z<3(o{18{^3XP#+j7PavjW_xjA+sUp7zLB*=2n7n_wIb@y*+b4lK^My}wuj=oyO1ADhL2Jl&w?)2_J14^ zB=X9l7a%hBI_gKM;79oO>+ZLVMk6DU;G;aBY5;+BFhNk&wo@fpJHvI;Tx0qtVsE6T z1YiEir_@3jiR@R;a4vUA|5a3|>Fb3Fe&X&BOVsO*?jQVfw9saH_CND^l{L?%mx2V=spJw$Z z)V1qVi=16>PczA&Njm7=~Hp$&0#J{VF$ird$b**kPWxdjpkXyp5vL1OqFgI>g(unEC%c&2H ztqeBoK{25r%vzkztY@QR2Z&{AUq;K+>qvKiGP85(E=Q|MQYl17Yw6tkl)5DZ+jsw9 z#P~tL+pA1)Xcj{-(DvamUKaBzXP`!|#dATRE z6b#PB8LoDyJFgC-ZcmlWJ@PDQ5J-*L2j8-KC%~FL#Ik?mMJD_s-<`Hy=r6c$e5N&} zBmKaeMk3F2s=D%LMy0uJroC2}v(fn0$+@Tb>RA!sn$K-36-iaGpIR9lwu{%&GPnY<7`F4IslFXZ>qY^7+eU^VCuj|O=Fg*Vzu@oLE7c& zTUHC4jE}09_Ndi%$@#C}-FyXKOb^!I zo3fYcTD33Snf2|JRPd|<_zNKYxx}fY>J0Z(jhlHJ!u&8#&q^RcApcp9-)_&SL(j5@ zDBM%g3X_`JEKu1!T0zYe+{<`K?Y`(vb=^9fz9Kcu`F`Q`Vu&--;<3}c=3tPJgt$-@ zd+!P^fTZD#L-?>D$vHjffF;u4%hr$c zX)$MW)pLqE;;7VUn}AJnxpE)<=p^-2*!4X!7MX}lUo+%qF~S#ms|@&Yw+(f?tr@h> zfL=?rq8V;3VPKbvH&J_felOP`Ho|O&di!} zkI!s)p24HF@@{aL7?d^pIc{nU?i0vx&wE4Xj%uib+3i^$5?<@dOL}q%X$f|*SvIwx zdy#yU+w82vHc!nRc#oSz%$DP+ZFV0rwY6p_R$PFA5N*uYZ1FFzb~R6n@Gt>xgFV}J z8R3NB`+MD+s7>pY2z7^&l{fGp5I5B)YhQqeffH~H0E5>{> zpczPJCm7MQ*ED+w4uayGaH4%4;`tspSm79{3vV=ic@7Qnt>Fkcp7~R%eZWyU?tm&MQjb$hf|< z6M<{*4D9F@2Fv_nvijxC!vJ*cOi4kCfNxqa0{)r`H#K#M--5Oq8P?NCc{Vc}y*9nY zZOgX_g1+5E07oO>r>6Wzpli#>t9(e51@h8o0S00S&qz&S%Dx!$CYc(9c$&7qBXj!g zL%(aoyW9=C{+Y70B*%3}U(=Xzu0CiQ{zq~5h@6un83x&cU^Ei$c)GC8f7LDn-Bd}w zZw5n7_HDgT{j{nG`S$Jptzood62|Q^&ctQ|rpq|cG^KZ6e^f?XzmfN|`V3gt290jO z!J6V0UhMe_qp^!$-@g7{{=`zUc5*yz)iO4PCO*LaBBHSyTr^2{G~`MoW>hKiDqkl5 zftR$o_RLTlXR$IGp{i|B?dJaR{A85^ScT~Om?G=Eo6=5v3H zVc}wPB?3ljO3nN6c@|8{&ot#OY?SVby-?(wF7BWPo5?%%TApu*J}hUi0&gnLRXTa2 zC?XJuB5L|sozVxvjCKo&@C+1mvh6xF7*0+vQ`kYZKEJn@_0uPdfwP~f+zR*vskVE% zmy2mApS^YT*>6@|_T?G!W)3*A>;W zHv4?FJvy-&cX$v$C)cSy8*%NMZe)eMy=MBam*}V)8>>J592K=_#&(_JM$uSZP#~Gc z7C&NjD7uwom3tuZEePysP8+osDj45-lD9kTX_oO6?eH8tfW;ckDK2?YLVlgQpjh`Q z!6%9yzLlCW_(`N>mG`!GYv(5^n!Be&wG?mfvJcq?0x6DneKYy~%A;h( zN3Z!GZ%>LvQnEx@bSc$-)&m-!a*~RmH#cV-V*SY(fz-zu3dbT-@g*2Ex|jX0%dtg! zE!`>b{g3}R*FEig?dX!6>K`l&%*V)MN0R$?*k5E-Z<(y@HFRPBKaR>m<<8j*gL#1e zQ6G?uB0qc+uDYxd(ksEw{Z@SRh9gmY`m4R)IRCU_&kyhlg(oV0C_ zGG!<$`+B|@Uv+EALRR~|upi-2)Gme)vee*=p_)qcnzZX9uWmbC1yW;)= z_ZobE&!?{08tw#CCXY7rsY0pIZ;l0xvkHb@%zh^v&iYjB<5J&&iZ>}J%>#9)M9xs6 zZeLrsCijH49?T5s1mZsTuG3stRu`&yIGC9<0a9H^q^NhC{uD^zQgY%$GuY1cu465@ z@?c3B-Xf?+yq)FXZpNq8XNs3_64vm&EDmNlp})_6F-hM0Ro$MGb==WmbWNouiX-+1 zBb7j^8`*ty8%vppdbWnvsJgm2XuLE9l7+xU<^)a84OuCJoxI4r1ACd}KNx>LDKzOb zHi>*%Oi0@w<+6K-T9-A#FAZTDjUi8%S}kng`k49~MyK4p!XGmEi=PxI1SJ#a02>&42uMldMr(ax3Lit+0H5}31EAVDSR)N;$D`P9O~^Ip0_fx837>^^XR3r4__)Ox5&Refr-_?zN%ViOtqU-?`V z-kMBnSlGk2-?ngoB@s6&rOIJn;~GNsRu;&p$to+u)no}?e_g*vhGg!N`|pW)AE^F) zPS6vtmc|_|KCar?#}7{lVno?J#5S(deOM;T zgeeL2c3+-?@*PraSx&@)FUv29W#_(bs31EONKm8`qYBzI3=hf-=tV%`+k{;fK*#}S zO4!AO1cKJ!h1p|~N=Pg4^voyg+utZ+1%tGhUHPx$hrotv*D* zSS2Fs3R0zzGA36bHDvdIH4QzLo@IW^t8>%mP}aXbPsm0zx=W;{R}qwvD--E)T!oSy zz^#d>dFB8~W34!Effwu!-I@1XFsr26n$on|P?oMWuR27WdE=yY$AcAX?W^MR7RFc9 zAJkJ3JAbyJ+dsdRkjgrT9%-J6cx}MR^%%$)5viX#94qwazw9>_5phdMuq9+xNJuwT zmWzue@|>`?EV_g@98)%Ry?w;OaSCj4GOu4D;#4C#%fM#pWwqXsyky2;j#N7LGe=TY z=a2MVnqqQ}Ig+;meUUs`g=Q@!{rp@v$Br)J$|Z)>lX5ELbJ+e>NIU~d_z(-1ikz| zxVaVmQUe}O;+np|8JjTvFa~hmkmcYab%bp7Ajr^f+MfRAqEcCB=}(P!kZVv8mcs7F zyRv1!!)a6Yue6h(0gUTu-9lUmZ!Z~YvJ~$QXzVVFQZpPgqxUrUOs-=a=(dnD*V)~r#EZJP+%AMM zQdT^K)O_X&c?bk?W}$b3&4bftHk9I?Fo&F5r0NsBG^Wi_Edxsxo_h^^@Ccnl) zkc!d7$ouq?=}YqPqpAUPscx&x~nE^G?Gk;5K5{PcAER;OA+oDRJqox-meD7tq>c%4GUdVDZ-8MG{XOH;t{PHP>V{ohIz~F=d zg+67^6N6rvvd)5E^r}{rUX-3`e896Un8gY6@e?$E1BN*4-#lgxJ)tpk@Wa1Rvu&y1 zM#mxo=q$&&^63;Sq)T9ywXoeC*^#vQrpQf2{wDlQeYjq@(H~+(M_5NhM@Mb# zepMtCx3%|QBQX4b9NMch+9rgAb#$_YbaV{geGAZ{PUe z?z*-{beYt8V)!Mk&3ly+SS8X?#$%&1-ZaWciY3ao=uo!eSHdlls2 zv9|f`JqV=m&L}mq;ae?TeLe?+!Zbg>1LB(Mog&Gi(eY{DF&J7b7bg;>2t%w137t)w z1VH;B5EC2?aCw7DQ19eqAT=P7>W}Qyj9TDsMVKc1|9?SmdMj|6l;DPU_uU+V*n8Oj zO3gQh*!~<(AtK-+Me)ewC3$=r9`~e5rgr;RdSX{%$+$P3Alq>4HpCrYe;ow!aQyNF ziGoU*Jw5E@QjV(WUx)#q)HE2yb{x0++Dm1 zo(I1$d`^*0LwBp(EpZriORU3EpAjdi4y9+UB{zTOoa+fhhqe|WYIJMb9r_&p4(K{> z1b&>$#1pml-6`_M)CZ3{)?V$CK6Mwt>7pP|UDRNPgZlVX0uo8Df`)c==~RcY_g{(tY~_CMY6y*tRGzN10#?NgM|zy14vU|G(GKpce{oUp4Kk;urh z=|7kH{)-B$>JBlu+4l1$Wwbyopjk8MV9!$# zGsZi;b+ABv>={U;qp&Y&WI}nfhF!lz+3z51D20q5y&Q&-l4k-4na#E>=$*aI6^KV7 z{%C=D_l-Y6rm;bf7R*LqZ-;X4EbcRh+D4QnJNExcMDeZwkF1eZTR@5zoy9?*h2_VE z_`ddhgAYD-b(o(j<%<7`)SU>V@+TC0!Tq3y70;;P;0|{XxrX;mA~7I|#FG>Y34?5!T9|jH(^%A;Ro%I`Vdq<-fjY zkW*yP`T40S8mPw4-`D^WK+eQb$2_os^k615b&L9WxoP@e5qyUPTM-Z0!0gR$11;0( zK_|d_|HkmY6#XsjrqkbIXh(gtT!%dxVE_M7g!88qZ}C}{2T^ByY^bmqA6w7=9Dx~n zJ?XHD<+`JB@Ud(5*k>>9UHk7N4j4HYs?zdmjYG-&o{eOD{MaTNR}{q5FDX5*S_d;u zk9{bo%=Lhn!4++hztQ(%xfsg6_8);7`7Ryt-#YsaxTcn7@zA6wQUtkR0TEC@K|w%i zp(?$HUTg%UiU^Ss54koISf|Cp){dyXVa0yW+x28+?o7LvZ1FVR@U#aC@t8NItsEojdCX{^y`+sY=U}+nq z=wh6nk(r&FsznG^s)HCRwMc(%$DI&WRHub5ZEQwY$`uzY-D~M`5AMWhhKGeHKgsX4 zx7S50g<~_oKDOHTBBb4Fbh|>shc`r=X4}@oAU?>=vt9!Y+eK9^UQ)+f0-BzF#9m$} z=%PNwcd#OV;sS#EiQhO6q5=4^YC=t5`IQCoDq9>L9=s^jzxK)_!hd6CHntN2{VY^} zPFY5}L|-zL+!b1Tku(sGLZL|VnX})XqEP6FSyJb|-tkrh0two;aQ*06rLtTk?r_`G zTtHCS6(|8p!2M-wiFY$>fVvW_OmKg-Qqwk{nCnM+@aGlZoWU#OEj~BBC>Y9qwnKy8{^a>t1wVvvBLWLDzkqgt91ppN;3b={ok+YPn`&od>bSr;$`*E zdw<`5d^cj2!YmT!e(v9j+z(=#o9(y;yzz zZ;0spPTU)EUL+aDHXen8e2Z9l*7xnoAa-V#cSNc05jX&m!Ib~6I9W>PctH497iDFF zvEVMB6QKqcK_Za8cLn|m>B)=pVrCwlNeSufB+cw_<`D;RXy`Wc5!?wc4$wm)*tEj8 zwg=S~d5TCoggSXBvtNj#;c=)Pab?oXY`5Z|CYmjqxInn^Tk`r~sLsb%DC>k9E1I;K zRZV<;JNgDud%u(T{fy!LgunVeapz{aZS zm&(d(MU}FM?4Z&CrCOHntuv5M6#^9zK`ju7Y>sc(<7qpc(U0HuYG|o1CxKT#e@Wl5 zgt{d*EBi&KGAwt74#YBUEy6Y#EmtTVu!7iKKy+<^7K2v%mb?tnjPehU=m?IrnCfxc zxM%Q%1J7|eI`mO8L6m2tBbTt^5=Pj&zqT+LQv&Y*i ztI|Jj66B4?ni`8i8vV{Cqe!lVjCu)H$#f778Ck*@1rm9^Pq%Mfng2OaAfFGV;5662 z8yI0gzlci8%3&RZ;Iu_{u-Dt!frC2EUp8X_2Kvr?X z5La|BfD`G(mvH7`wQuJ6^XKKEmKVF*qvXOCmdoWXi57$uvL*v+1PKx5YwSAK!l41? z8mJbo2f%p2v+-&N3tPX%^Az86LZln9>O63kcpT0DhcO0)LXN16p~~BGP^k85sha8; zEzHc!%-9|IDu`vU8UzyJdQ_vF`yi^l@b%1PBe$6`j^|77^w!ra&?ja-$im)6npENw zJA>v2L8HrpU!#_&AC%E*6XJtVC4bd^;+@z!-iLbnfE--D67mL5+J*c9s^z(-QM)zf@zW!sM{kg~oZA-EIcnahRQq0gl#og)(BZl-CPevF zQf6xx^9cD7mW&|$#5A-F9vt_vGZr(d*ohVzq2S`c(&%gGKC*3P<#y&3p|}gS=ImIf0>#y8;nS{ zwM%>Ux^wehty~${e?<}%Psm-M2t3WaI?{8k|K}`FVVYu>6(8Bzxb8#JsA6`G=T0UB ziiLHhn)L|y1qgMgy5+T@ZsywGY8&Bxr@C+_Wl^Iy;1_3BAILG%#tH{oyV5NwDX~r{ zUbR7`L&vTXo81C_erY(n!COpt)i(v{P&G5VX!P_02vmds`>mC%ajJcOcQK= zb+7Z6F%MnUKRs`_sA(@SH~M2etiv6ZtbxJ@s4s(L?+iy($7&P&dcYJ8C(T)G+YNNc z;v!qqulUHdAmKPOt}#!m#Eef7Z=-U$EgvxqY#HKp#9}-nTEp(q-bt$`k=-rtm{eyUTXpo=Dg=0%@j+ zJ{)vd4ggUz6$-qIEibQsrXPRuq;rdZWj*K`pAx3K% z*8!gE<%8$~9FF3H#?syZR}YAdzod}7+Rr~dr3`C__0he9#aChP-ST_r-moo32_Hr9 z>f(^?w{Ue{-xdFCiBapUNki7{BMf~ zf2s{^l*e-#~y}_aA`3z~R@?-J>7vZ~xc0 zVEi%2HRxhG;=e}V2kZ3okei#g+a9=^Wh#opCVKFMZ3+}9p5!53Fo9oNL2H;|Py-jg z&D~n?1bao~mg}5WURw(2wo&I|`|+?a;pQUGY^--!x1=-|FW2iXxc8Opi@bbCQn*gt z6!Z$cZ4~+rIt~}?aXC6W;oI42BUjnO`o?fR7xkl2=L_HymPH4CkM)$mE(U{iK6Fw5 ze6BaQk2xeMyH));Hr-!pwajXe307ENZp_qL`h7j86LhC$Y`UL0V%a199kJUb7(-U} zFny*ERT$1~@1<*PLdCZkckHBIx6u$hCHko#W2#xdTCn_iGio7y9RUQKB-%Z(;-WXAq zB9vs15Ut7vso<-gt#&F3Q5HvU1b(GbBroNx0{E`!9Cc`-Kt`t{#yH;>A3R1{iBcJF zUUBhtS%ThDq5M$l-hMx^46Ve+@@`8RIJOk}j(74U^p~W#PKrO9kt*1jJTq+4(n*NO zsVv_qIq1PkxzcD^xyOpc?)1KMJhI;CberXL@x^ZdDBsIM06;(ju-94fL>Odee@j*H z(ic+|1XWNCeaD&1us(O{O6A5fo9Ck9WTu$6vu<&TpprfHQ8n z^qeFjx}>+44yw+~ZeBqkrZKF|7Kea__#GYI;86C4YM|v9IL(|XS* zPH`Yu)oni6_#CfA#oavOd2YtVr|M_3XK+Pg za@*JGyMq-i!fy9hW#>bMJ#z68N~%g#kcTZI2iz=1)Zi@N-~cYTam%~fhwevCi?yKU zmAbLCK%I2#_lZhv&iX+JX4iL?QNhKxb?M{_UmbP6?m`xk?CIe(QR|0;zN2&~g+i>B zMQ08X9fvxeJ@V#_1niwE6z~DZzw|V`3I@y2h;zu@N9Ck$^3Grly6t46#$$sct;VBN zmTJ!E+G{$j+V2C*N~N8WkCAaskF*_dvvK5);-6XuZ=oNfWGNew8#Ewn8kk9D&iJd( ztVlmto9{yT&%5m6pslZgB@9?ams$Bv4sO)g0~_gv=S}YN)!hmy6aYIy;_UTR%+sl# zPE%+Fnn-)fSB!#;36k+c3@|}`$f6DGFf#;F8KQ_so_<_WwG>7Vm2SZMNlxNgAwTlD zQ8mCy;+q^DbpDB-@xH}fSS|yIHE%EX3NqtATo{NJbwYS-zryr6IgdN{4n%d8rdW>t z?kQm?+V3M@)7j006l0FFfx8rjTO^Sl)mA&(F$Q~5+J};NN_PZ{SV8)c5jn~vH zFRi@@Z0w1doww!wx2iWnUg<9J1hFoQT`K{wtB*cYB>xzsXb#d8a~TEHTSjcvIu`+4 zQ@__yGgT^OewxcGHHCMI)!(_Ci3oEDY>{3IQm)km48a|Y6mHfdZ!S|Xn6^7d47fGt z$M}6jluj!x5IfiTWHI`tUBeBn8eCjn4{A%1Y0f8(DBD(Pft-JFBH48S^7=(=T&1EG zkjq>(lDeIMI8L6o$4oes#}bjv_SSUW{EdWnX0M-sw8!P|o)w_qz-G@}MqFiS4Kvp{E^Z~bHZe8UN zh`+AT42)-Qk z;r}j4WBJn7mM~tb|H8qT13lhIA?Z znNNPW7YUEH7lS$zU!!QI&WERN*GujJ#F!l=OW}rLC#!n;72}dyu6H{?%8F)DR3XDJ zwdG4#Iw`elGGfif;Qg@+0qdN4JokahckvkIWNRZKS8TkSO*Yf~9eePZ ziJ8+|rUC+jGEmw=$l9Pg1%iVHwm=*FMQRh}T5RNi5f#wZ_g86^KZ($4r5Gn%zxO2o z%ND2e5Z7V2&V9Bb0L8j3HucKYs}4WH#Dj5>1pH%*Z?)M&9P?2V->l*{wSoY=Q75<# zzx5bf52Aa`;-WnKCD+O$lN#C=NNdEr z|8Y-*a6atBEF>tTj}Uw%4`Y^&y%#K(aN_|sr`eq#wplY~Pw~oq)#rrhnvl+EZHvuW zTCl@tlOdRO1(T51!$sLOA}?f}?0v_74DyG;J09g6W9C4p{OTEIxXc+U3I5|=5ucw) zp;)kPw@$>%~==PRUba&t+pu7 zzBf3%>Ydd2Es*tSRie>z<9Nuixv{%9E8I_pT`ID3vG;Xz*g^PU!seS+qwb zT^vtkJleqz&-l)D)edv2?1nNnT zKJ6NH>?yx)(clre+~^k7wC_LRZ!UiHB!&sC@zntgk6^?>kwM#C^An9bqHAaSO$C2G zx%a-UC_4>Y_Q=OEbDy%1qHHW$@@)9(ozs_+vyBF#t4max;7-ABMX0C4|*oi}Q7;G223;Y#@jcNk@0<)BRN*gFH0Jz1B)z*F+$Qbr-#y-FwOZ@n3 zI<-Og+}V-?@C)2_O2Q`m{E;U#faN>%jatH*WAFQkcdF!4b6}6>QbSV7gNbbn=8dpQ z2vXi=J6z@Va8oOS5pjTKXww-2@wOR zSz-;TW2JL#TZc0;41aqQet4HS(EAf`VgsL-`Wc`xKd7Nu$kwGvtPlHdQlz8=*O0ob zSa2u9u*|&3zmtSbMBvT>2uYgD=TfI|_BxjK1LXg3a@GqyI7`Z~c>15feRonv{cjM8 zY(hM#_5}GVi)9aa`YMasfN#k=Wih3_nu$242H!bD1=geAwf$*`K4{e;d!*qu+ z7vf{_sppgDf&M(s+75#yn0INbH4z@5vm;l#sB>N=sStzhQ{KV``0z#5r0Usr$%8VD z09{-&_*A4hr{KI-!vyOVrvFom+f9UtTMt|A?5U5*pLm;2bzV!y$Bo&dW-e40FTY!^ z3R|`*!af*%{Zd}l4WywkbM)(@m}d&eJT><_*RhUY(sP)2_EMa`h`k8N;%~&kOx_z+ z*N%+Jn<%!=7zTs=6~<|hu$mhWF)b=|b3y;&fTEYBu!=LZEbp>E;7<}{ixbW&T*20Q z5W8qCI8`j20;WgOXj}M%yaM$KN>dL(z9utQn$)<4f;a6js+CMP&RF#G3tTic6tZ&B zg5YZdu>RP{{_Ph0z}YY=nMj^bl5i@5&IA@|OnP77r+o9(ISJr8+<1!Rh)|=oAqTS@ zb>Fg}$X2KT7&a3W|{_#K?O0SEgQAvB7sdhub{(aTgU)Y9r}eV`XHUUPRT36heA;6`@$211K^Y9Z8ssJ4xL+VBxvi z-!thGQX ze(_~7cd$#j8<~rgA3ZrD9#@WkLdPw{x^o?V$Z2NEpM1_Nncv{zIi1j`Y`Gg;{njAZ z-Iu^K9;?(J;`u|EmW9cCIjT=KjP2J>wxwncPQ)|}KHvOE!;8(WC~7eEOd)ckCqb5c ztm}45_zEVY0WuG%d}J+fDEITvt9XsD>2Bk+uvYhLR~)AF7SxMpJcSMTyB6Lq&Atc* zKfWVy)r;qb>WcDbpU*rdouuc7=cUhIV&!LR?wVSY-2jj*QQ;7yPoSqbv$d5pH-d4A z$J0rJwVhRR)4I!sORa3)vdoycQ0rL0imhF)*Xo3|z?|Vl^|sgVW?j+ZukRmg`MEjf zJPTeYWFV1Mj|gvapT;Na%@yCex6b}q16N+#6!lI@lJ%4%lV@2Htl%?i7A z3W<jG9u3sdjd6g>7IoLfAGIG+T(h3>dC&h7cdWk$!`YW#J9tBnjtr8 zc8=)~*i^B;M76!E49ldX+L0wRzTgCT9*v)`&4;cy@4zD~08l-HFS<7G+4T%w^PBCv z#9{e9CueVvHJJtqL?0UDN*z@PN&lLxQ?p|Yp9#DC9Oy>g?$P2Td4d3Bk*^2z`O62g zm`^MviI8;6=E^v&$1>D9JCN%A=pnjNm>asu4b!K`NG15Z;`P1e{*~te4t+f6jT}{} zP<)784#+Bg@!~0d0dB$fhRTBP>(qzfaQ42@VQ!Ik-^0tEOqW9D7{Et-13(&MjSiOt zidGYqn_+`E_fE9JJ31?qTQYj_{3pD1LW(#%CRz<`?d&|38A+Q8oj2}Ls9Wf!!C#Sh zjgZ|S-1uyJzpuv!VUKKU!DNoJQH;blPj#@7QQ%+#9vI zH|Oebkk-eGT5}a9fG2!2NQvQ7PZ`Q}vUS2BkQJ+G+W-K-UT@(sa4d$Qb2EC61m4Zx!?bAVLK^9XWyCU;DAe((!!!bXszrxNfb6=70KY@!}!B5jZ zo*m$OaZ34(875OMm(%I-#b@T5Cvjc>=1Gw`APO<+N@OX3JT6(oo4Q#Xk~}PuR_toq zG}v>fKbj7iAkttScsdZ*LqW&VfD>f&U{@1UKLFDQw`;Yl8N$DI1I8mAR4OXvt$&Q$ z4D%UV5~cWi{y5lpDM7#b4_S5Gju(ME6VVk#;=gqGAYAp}N5JI1m9GV`SKd)Wt0zuX z18VrZdbR46<37#4{$e-o`1GQ9xDt?sC6%&*q9I}0zr6Bm2M1xW8XJeo0?Lq^-TpfZ zWipd;NMxA}ik{-?bC%f=7r(~0ZBix@JNNc>_o#amDuud77zq+omS6?gupT;&amBpC z{JGSO)YD!(=;vo%ZyYDh_TMPE&>T? z3t=Wu-cJB+cWa-;Mp$>wzCocvvCX&$|Fx^62-fwr$>?YuM~<2AC8;f8Pp&=xl?eNS znEvwijF{Ge`rVp5;CGL`^g=$;gvQQ7ItT&WE6Sr0*O!ksyEpNMf6$=0Uy1sW3kYZV zLWy!jACW@4$yhAaFRxZ+CoJJtebGs^Xk9vneuts%7AEBYFku571g_qO}j(@wU{lux^t!s$Z9iZO<`_O;GkkA;R6cg@HGH{i+k`x9u0`z# z77441%L&GW{wZMT3GI`t=Hl@cF6>Klw&>JW(mf zQ6fJ$4AOH3e9zEKFXIu&mvHC@83f7$fwa1MS85P;Rfk{8%-BF$=k3(gDN_*S6V9*@ zl)TpueFC)OdHc=xdJB@LevaDuH{@;*0#CH>ZRdpI@^gdMH)gxX(WiGRSa##ivMp$B zj3mfZco#o-G}f|0y-Y3$KyvWhoX6&?;^+wxq@E#|PK^8(3+X%{WCfe!rW}AGye1aB zH42=E!ZeAoRH_zTl{`S5KGQzlR0tSSq(H}GhX8!tg}kRn(}t092w2=DI!xnG7eX!v zK_}rX{a`*&^2GB}0&mCKC#dDr*(dbJUyF8MgokcmKaTdBC4=;Fz{(W&BC{~s3wqdO z)Wy6JZqb5lz=#ak4o;^~at&eCFz=2JVd*OW-zOqJUBX>t?iME7ET;cwvJc z-*x3FNsEkEz)rmiq>5e5eBr7M2P}6c=l-!V@dDfmO*Lr)wHu{zJPKBWE(Jc#mv<6w zQa5>W#L4vPBzA9uy1k1ZL>Gu-DG|N}q6qlm+m+7EU@B#~)ei5vlJE-gYFi~7pZ@^0 zzfZv{UD6S`xJpWb^uF5>G#_v$b!qffbzpw)X}^(l?LMX~uT(?4GW}EC``MtSwTD>0 z^4D<=oWE}oBJbQt?$-_OydayZ8b6_5v!9WH5LY>t7d&G@%dOikSvuwXh1%~Dy*L{E zf?G6L({Sx$mc|0fFYYB>bbjXfWzp_X9Ivk3_VNeoN)r{HQjPa|G9|V)hx2JGfhw)= z<9Y`Q`KNSw^|UR*aGr;yg$e;*PM%It-H0t#5t7lnavIk)1(>>LtFaTlQ%%AhPmLEr zaax%^&sSe1;Cd2MJ37A+u(eRX%J)UXhl!(|CP_Cr!d7=y2|XbokQ+DRR@W`C#sUZg z;tn4x>9a@y_ZTCBJYAD-lI~CrSeRW zr(T6*^S(InkyhWx)+;v6xYu049C~V(R4PJXdqwZ$1VoQd^mtPE6*rAfPZpAT5gr8OPZ`Mw zkd$es%T8vISIq~99bxiQ-}JwiMXSTM_W&&4e4WSP?0{>!g({C3j&>QB^a6$6D<9N2 zLiw!BvmwxC_I%2{-gLe}27%Tq^#vUfE49Ywkrr;~onpWW^f#b-=Ib|0N*f(lrS6A z(D{?PLuqT4jfWN7L(SqMvK%AKfBA}@4=SBd$~9mzG{0t={Ug&>v-wAB; z?fhDMeTAnPRns0c91QJ!ve-2>Gen+Z84#98(rLZy#^vKZBXBG5sEpWuOGPOfDAIBJGBwZtE6s;C83-5)Q)LwyX{f!*M1Dl2nZ;O z`Cy+~BzMmTBGoK%B!gd~ejGVnI^%F+;T7f6>Qw%Q@%+67FRn3HpK|DX{d?pP`#Wz@ zC}pJ|@%Jhqv@JG|hX56YE7Fu@F{C65Wwuypmqwl&tRi@5JlL3Tft67xL0Yt?-IT{v z*z6)|-oF!SLV>kc-ZHjqiDTDOQN%^nZku&c=8M(?GRZU>NqPg`Y>><-_=PUrW%Kwl zbO4=73~4klRAw01ktnpV4MrajS^S#ML2X6D^5wu}*HavR!P>4s^*qEEh1x|%(nAU* zhI~jG#ik%bVL|fXV#~{AHQZ+G8TW*V-BVJ8`M?v9?Uk;AD@~6lRumGbo?jp-P?jA7 zE@pto``T(0Px=d6ne*}=*)z;4rBbB|7CO#R@qyww1B~({r-=5@rR>f%8hV8WtUJ?m zxL}EFNIQE&fR_vY9ByC$AoZQb^YSNKjlt%x*5c7P;5(QHA#lPUvfUy&&)a$5iqx}r z76yRHd7w8CY1RnDzQxk&`k>=j%GRd^RV)mQ4Y+y4zpWXYjJaB=0LT*#uySD3*2R~1hUMk*Z(1LtgEaE*h0mvFwQciL&Cs7 zjQ2nsGSO`&c55`z7-Umsf1RoMvjABC_39e?psjPk7b!*(X{=XnjkSQTYd&;Yp;#&U zE9ZDF3vNt@MQYe+Xy1;+`P4Vgl{LZ^-8IAS+v05P0_1WMqCR`8^Y}eZlaP?xe|?nw zp`esaIv|YF(y%X{x&U@ZcmlGLo12@D%;qU^=@>izKO7AjE&k)%0u~8?Bzs&X=r$-i-b=Y;_02WV>iw(OV*S>==04uAGtRF`S>s!g*bEmkRZol^1cY?@r z9d0G@AGP}J8%zSg0{E-470K6GZtxqhumkiy7(Ef>l8E8jw?nA+f(dlxxDEJqWqnFO zK;m%H#N^&*bl}|jW?}^FBueUqERSB!6ZA3aiu%tJq2IBtU~t|ZaU`#}YZ+eOhUssc zun1wayeW4w{aPj=eq!ooB`j(N6}f&qh>cggkB*>D+?vcU{t={uBKzpeJw4kW#dOp zVILaAL=8*J&UYd zu99~9++J;81LFh^yODPpOAKG~~5zu+I!r65gt|KDkY9%7X(QgR& z6FbxdKL6|$j7rxgpb1+$l*nCF({v`pw{5GVuU~9Dc25XffNl1LYcb-JzVY?UFh}Iy zE-%|H3)b#LA_H&}(BR>Yggf(ORoYI25~lDF4fc4K?;CL^R3mK90q@^DLRDIhgaX45 z5a@>}p<`<;Fi#tem3vX>+U6-g|HerI>P*DIW^mrJWXWCyo%7ehi8icG5^IkC>z|gO(p4oKSQ@8%yjpRYTvMtw7zJ-n)%u8D#c2UKqZMVJ9;lJNe ztz(I|HGv4xao6ToeihM14f$|>9J>6Jbjus-5;U63A#xhH^hxl|%AS5&Qho=gety}b z(BGt#%Jx{?+PMta!>6~IVkC4*CoQcGu-~GM{vj}u50NG5vI1#0g-wK<4eOaq;o&bd zF>(CuXiw^2Zbd(FJoP(QU!5+9y>ULH#6_A(E8<} zU|&L2m`zCXf`MGhq~E!7=j;DB6#xJp)*U?h)ydQ7iBDR^L;kaGb^jGESQ#AQ;9yt! zlzbkr-%AMotK+%N`k|TYnE+2IPl?WZ0j>+C|6>W~;Ev7j`sDQFkSW5~p5tQl>z2_r zSw3Q-&S|6YJDEC7Ga?*6VG8ZpgpB6DEWjZ5s`qG`ME;WzyW@yA7%&vQgjW~*Rp3u3V78P-CLICvM z)%xDS;>9*otlvv()woZe^v@pBcR~5WFSyNHJ+g8W1Kkc5a*bJR`dP!s4m1$w`6Ge7 zuH+4xO_puD9KeUA&U=NuQQI;Zx!*eZYNgj3Z%f<1syo#I-v z-@npYmq~Ke1y5X$Lq&+Tf%UKQ@5aWKMHVO7V!Pi|a&s{h(x^(=FN|ytSQuWm+zwY0 z=45yvqksipId=_2+!%RdeVep{>Gm;0&C3q5QpVBVwdi@$p1gDv%n4LCX7kh62~>nE z?eT9!vD70p{7b*`ruAa|72f!jSzzykvUw_nVomFg$)+|>xxpuo*M(+Pn+|7khg7&& zb;{n&bdGD{odg?AR9;#(pA49&RI?AxtN%5;@oFWsFHzBXpvAAPbR{E14MJ$C9FGqf zRG&(?F#$XlJ)t1+M~gZ-%$^I*Mx2z?0UVo+id^1r zQZeuJ^mGh#r6gE9osJr&_LfTfH6fQIlif~fZv%^VA3Y|LR{Y)o0Bi*i=gb;dJ@R*` z+6Ij0<-zGXC$01`94sbvATEHDf8&0Jf~?MfB7hVRzXW@<9y{QCv_JP*9UdVGenHlA zI?;f$Rxz?H0+Me51~C#`T!IEqOyrkVmbJH{VDcRzhI0gtFAq?ZMC*dQhD!=h$N%4e zs%N6&fo>mFtY81Z;_X+1OXO*v#K10a+?ViiucnAfyXub>=XU*;j!c?iya z_=ka>4%>mIYGvlkX5UWBcoQU)3&4#)h)RhQjlF1srAFI!mF8L?Ia^DRN!rMmk9hA7 z;=t}^m?p7HGhe?~laQnd;C;W)V0*Qx{pDUkGGK3S|K*wES|oly)t4LFZr|D!MIIj@lc$a%DFxPkAQpJTiVClRP zLsl&tHaJgV0DruG!`cHlcpPx)m!ZJRWklvbE*I4=l=tk z>5rUh`w@7RO8k@g>}^G9fBzBxBJ&WG>?Bh)X(Uhd}@jGoQ&0rElr5apANKW5DMscp$p$F&5yDfeU70ZGG zam7+!=P@wY_8^K~B$OMNxrt1dLsqShPE^~Cm$mmle#1f<0UE_y^AE*88gC-`!JgSqW9Xc7CRt676>jq4R(+Qr1H2J5RzXt1%or)m4MHetg$qkAZV@00eme z5{0a~f1gD_w^Io#<4L$&Ry`GkQ|BJ5cl!^heP{Cz?(g%ex72eKe3QZcLOS}~!Lu%2 z+Y4=hLTM$kD#kZTo=CAeve$867i2ld>d2A8ay$MYzwn8fnKJ`dC|HnBettf3--Ar5 zJoxr_uXGejI%g#24^hpG!4)cgE1AkDze4fPBZSSgY|~RW71!w=PH1Q|l-UonGNm3p zDnytj6nv<1!jEOsL$P%a_8367T3U)|wmEAmM9M3pFy71rp?_i+{C0A}8ph%Wc=7 z8fE1*>*rSlfAFT!toSxf3|Of#FXSqJ$xb|{#&a&y9&d3ScfkFM#2;K;TVd0+#JgNe zlH;uBsd&L&0@|(lqe!+&caEG!R<%0ne3J7 zfOGEX%+TPJP!`?E-CrXJR1)9X9(~4SezyRkkFR)IQBji@l0H54d^;NZcw-OK7w9zT z5mQMUGn)|a+@5NyxDYxOY)1pBvqfcm_A9?(0YBlCWQIS*LgHtB+FqD|h0z7PmbH zw&clF($3Ivoghex4VixKP`6wO&X*QhbS!#J9jb1vOFcD+v--$O!8Gci`N36seCW%02V*M{s@(qws@N!RDiWyz06Wm zwi-}?>j}{y{njEl<82=&ez;W5yqn&&v*c%zGP#1?h=Aob!xFcpOuaD4QfnE6->&Ic zN;7)@^ohsX>$jWYF>bsEJ3~wfCU?A`GomfOaR4p103vAOjvr5m{`>sMqLi>1p-Yc8 z1KUMqD1|5C;zicfpT8ApZH;pU37MV0c@6Ax(f%AEL|^{n?2v>|jL_MJ-Qz+*$Wwy_ zlQAsWCu?eMYksL(Kn}*r^X_RZ+xCuS`G%aw$jaa{7~DA7Sqi2skO_kRHgo0xP5ON6U1Je`NSFL|fH}nWCvnd$Z6w>6*GBPDQ z99dG9kF1m}NB;j2R)QfV$l2w8UT%Xld)`sGk0&?LpEDH}lX51#)VB1}woT=5c6g=T zlDU>0@;);QkUCSRk;`M=nr`ublTbdS+@yMa`-rl6afwPJ*0&c?_QghQ%D?FcX2d&C z8(n*@o&ikK+WEJgUaWbd>ZPx^m2W4j^Seff8L#r2&V(mR84DUD?=J;$RoWp-y#Z`i zD%Gx;JZ$8JrdO#_{a0%pr2FmBsK>{HKyt&SCYg}G#W4MP`gMShF~Fp;%B0S2?87vw zEkv%=uIf)%)mX)xl#Vx5j3ye5Ci>bKizQbwqf|Ehe=tQNfvUV$GhTSaIcAj2dDOsQ z{H3{ll|$&kPS>#|L;J?~Oa)hSpGG&ED!ocjksWdj1hRUHLOzW%8b^*kbvq{)FW6L(ZmMt)_4X847$$<7CXO89pAXCB diff --git a/tests/testfile45.S.bz2 b/tests/testfile45.S.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a2012edbc31a2b3fe788dfa0c4713a91f0417dca GIT binary patch literal 22669 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 literal 0 Hc-jL100001 diff --git a/tests/testfile45.expect.bz2 b/tests/testfile45.expect.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ac814e31a7d8b72a004f1843486f3857fd6b9d38 GIT binary patch literal 74090 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 literal 0 Hc-jL100001 -- 2.47.2