#include <u.h>
#include <libc.h>
#include <bio.h>
#include <mach.h>

/*
 * The following tables are copy-pasted from
 * the POWER ISA 3.1 instruction manual
 * "Instructions Ordered By Opcode" section
 */

typedef struct Ins Ins;
typedef struct Word Word;

struct Ins {
	char *op;
	char *a1;
	char *a2;
	char *a3;
	char *xop;
};

struct Word {
	Ins;
	char *mneomic;
};

Word instab[] = {
	{"000010", ".....", ".....", ".....", "...........", "tdi"},
	{"000011", ".....", ".....", ".....", "...........", "twi"},
	{"000100", ".....", ".....", ".....", "00000000000", "vaddubm"},
	{"000100", ".....", ".....", ".....", "00001000000", "vadduhm"},
	{"000100", ".....", ".....", ".....", "00010000000", "vadduwm"},
	{"000100", ".....", ".....", ".....", "00011000000", "vaddudm"},
	{"000100", ".....", ".....", ".....", "00100000000", "vadduqm"},
	{"000100", ".....", ".....", ".....", "00101000000", "vaddcuq"},
	{"000100", ".....", ".....", ".....", "00110000000", "vaddcuw"},
	{"000100", ".....", ".....", ".....", "01000000000", "vaddubs"},
	{"000100", ".....", ".....", ".....", "01001000000", "vadduhs"},
	{"000100", ".....", ".....", ".....", "01010000000", "vadduws"},
	{"000100", ".....", ".....", ".....", "01100000000", "vaddsbs"},
	{"000100", ".....", ".....", ".....", "01101000000", "vaddshs"},
	{"000100", ".....", ".....", ".....", "01110000000", "vaddsws"},
	{"000100", ".....", ".....", ".....", "10000000000", "vsububm"},
	{"000100", ".....", ".....", ".....", "10001000000", "vsubuhm"},
	{"000100", ".....", ".....", ".....", "10010000000", "vsubuwm"},
	{"000100", ".....", ".....", ".....", "10011000000", "vsubudm"},
	{"000100", ".....", ".....", ".....", "10100000000", "vsubuqm"},
	{"000100", ".....", ".....", ".....", "10101000000", "vsubcuq"},
	{"000100", ".....", ".....", ".....", "10110000000", "vsubcuw"},
	{"000100", ".....", ".....", ".....", "11000000000", "vsububs"},
	{"000100", ".....", ".....", ".....", "11001000000", "vsubuhs"},
	{"000100", ".....", ".....", ".....", "11010000000", "vsubuws"},
	{"000100", ".....", ".....", ".....", "11100000000", "vsubsbs"},
	{"000100", ".....", ".....", ".....", "11101000000", "vsubshs"},
	{"000100", ".....", ".....", ".....", "11110000000", "vsubsws"},
	{"000100", ".....", ".....", "/////", "00000000001", "vmul10cuq"},
	{"000100", ".....", ".....", ".....", "00001000001", "vmul10ecuq"},
	{"000100", "...//", ".....", ".....", "00100000001", "vcmpuq"},
	{"000100", "...//", ".....", ".....", "00101000001", "vcmpsq"},
	{"000100", ".....", ".....", "/////", "01000000001", "vmul10uq"},
	{"000100", ".....", ".....", ".....", "01001000001", "vmul10euq"},
	{"000100", ".....", ".....", ".....", "01101000001", "bcdcpsgn."},
	{"000100", ".....", ".....", ".....", "1.000000001", "bcdadd."},
	{"000100", ".....", ".....", ".....", "1.001000001", "bcdsub."},
	{"000100", ".....", ".....", ".....", "1/010000001", "bcdus."},
	{"000100", ".....", ".....", ".....", "1.011000001", "bcds."},
	{"000100", ".....", ".....", ".....", "1.100000001", "bcdtrunc."},
	{"000100", ".....", ".....", ".....", "1/101000001", "bcdutrunc."},
	{"000100", ".....", "00000", ".....", "1/110000001", "bcdctsq."},
	{"000100", ".....", "00010", ".....", "1.110000001", "bcdcfsq."},
	{"000100", ".....", "00100", ".....", "1.110000001", "bcdctz."},
	{"000100", ".....", "00101", ".....", "1/110000001", "bcdctn."},
	{"000100", ".....", "00110", ".....", "1.110000001", "bcdcfz."},
	{"000100", ".....", "00111", ".....", "1.110000001", "bcdcfn."},
	{"000100", ".....", "11111", ".....", "1.110000001", "bcdsetsgn."},
	{"000100", ".....", ".....", ".....", "1.111000001", "bcdsr."},
	{"000100", ".....", ".....", ".....", "00000000010", "vmaxub"},
	{"000100", ".....", ".....", ".....", "00001000010", "vmaxuh"},
	{"000100", ".....", ".....", ".....", "00010000010", "vmaxuw"},
	{"000100", ".....", ".....", ".....", "00011000010", "vmaxud"},
	{"000100", ".....", ".....", ".....", "00100000010", "vmaxsb"},
	{"000100", ".....", ".....", ".....", "00101000010", "vmaxsh"},
	{"000100", ".....", ".....", ".....", "00110000010", "vmaxsw"},
	{"000100", ".....", ".....", ".....", "00111000010", "vmaxsd"},
	{"000100", ".....", ".....", ".....", "01000000010", "vminub"},
	{"000100", ".....", ".....", ".....", "01001000010", "vminuh"},
	{"000100", ".....", ".....", ".....", "01010000010", "vminuw"},
	{"000100", ".....", ".....", ".....", "01011000010", "vminud"},
	{"000100", ".....", ".....", ".....", "01100000010", "vminsb"},
	{"000100", ".....", ".....", ".....", "01101000010", "vminsh"},
	{"000100", ".....", ".....", ".....", "01110000010", "vminsw"},
	{"000100", ".....", ".....", ".....", "01111000010", "vminsd"},
	{"000100", ".....", ".....", ".....", "10000000010", "vavgub"},
	{"000100", ".....", ".....", ".....", "10001000010", "vavguh"},
	{"000100", ".....", ".....", ".....", "10010000010", "vavguw"},
	{"000100", ".....", ".....", ".....", "10100000010", "vavgsb"},
	{"000100", ".....", ".....", ".....", "10101000010", "vavgsh"},
	{"000100", ".....", ".....", ".....", "10110000010", "vavgsw"},
	{"000100", ".....", "00000", ".....", "11000000010", "vclzlsbb"},
	{"000100", ".....", "00001", ".....", "11000000010", "vctzlsbb"},
	{"000100", ".....", "00110", ".....", "11000000010", "vnegw"},
	{"000100", ".....", "00111", ".....", "11000000010", "vnegd"},
	{"000100", ".....", "01000", ".....", "11000000010", "vprtybw"},
	{"000100", ".....", "01001", ".....", "11000000010", "vprtybd"},
	{"000100", ".....", "01010", ".....", "11000000010", "vprtybq"},
	{"000100", ".....", "10000", ".....", "11000000010", "vextsb2w"},
	{"000100", ".....", "10001", ".....", "11000000010", "vextsh2w"},
	{"000100", ".....", "11000", ".....", "11000000010", "vextsb2d"},
	{"000100", ".....", "11001", ".....", "11000000010", "vextsh2d"},
	{"000100", ".....", "11010", ".....", "11000000010", "vextsw2d"},
	{"000100", ".....", "11011", ".....", "11000000010", "vextsd2q"},
	{"000100", ".....", "11100", ".....", "11000000010", "vctzb"},
	{"000100", ".....", "11101", ".....", "11000000010", "vctzh"},
	{"000100", ".....", "11110", ".....", "11000000010", "vctzw"},
	{"000100", ".....", "11111", ".....", "11000000010", "vctzd"},
	{"000100", ".....", "00000", ".....", "11001000010", "vexpandbm"},
	{"000100", ".....", "00001", ".....", "11001000010", "vexpandhm"},
	{"000100", ".....", "00010", ".....", "11001000010", "vexpandwm"},
	{"000100", ".....", "00011", ".....", "11001000010", "vexpanddm"},
	{"000100", ".....", "00100", ".....", "11001000010", "vexpandqm"},
	{"000100", ".....", "01000", ".....", "11001000010", "vextractbm"},
	{"000100", ".....", "01001", ".....", "11001000010", "vextracthm"},
	{"000100", ".....", "01010", ".....", "11001000010", "vextractwm"},
	{"000100", ".....", "01011", ".....", "11001000010", "vextractdm"},
	{"000100", ".....", "01100", ".....", "11001000010", "vextractqm"},
	{"000100", ".....", "10000", ".....", "11001000010", "mtvsrbm"},
	{"000100", ".....", "10001", ".....", "11001000010", "mtvsrhm"},
	{"000100", ".....", "10010", ".....", "11001000010", "mtvsrwm"},
	{"000100", ".....", "10011", ".....", "11001000010", "mtvsrdm"},
	{"000100", ".....", "10100", ".....", "11001000010", "mtvsrqm"},
	{"000100", ".....", "1100.", ".....", "11001000010", "vcntmbb"},
	{"000100", ".....", "1101.", ".....", "11001000010", "vcntmbd"},
	{"000100", ".....", "1110.", ".....", "11001000010", "vcntmbh"},
	{"000100", ".....", "1111.", ".....", "11001000010", "vcntmbw"},
	{"000100", ".....", ".....", ".....", "11010000010", "vshasigmaw"},
	{"000100", ".....", ".....", ".....", "11011000010", "vshasigmad"},
	{"000100", ".....", "/////", ".....", "11100000010", "vclzb"},
	{"000100", ".....", "/////", ".....", "11101000010", "vclzh"},
	{"000100", ".....", "/////", ".....", "11110000010", "vclzw"},
	{"000100", ".....", "/////", ".....", "11111000010", "vclzd"},
	{"000100", ".....", ".....", ".....", "10000000011", "vabsdub"},
	{"000100", ".....", ".....", ".....", "10001000011", "vabsduh"},
	{"000100", ".....", ".....", ".....", "10010000011", "vabsduw"},
	{"000100", ".....", "/////", ".....", "11100000011", "vpopcntb"},
	{"000100", ".....", "/////", ".....", "11101000011", "vpopcnth"},
	{"000100", ".....", "/////", ".....", "11110000011", "vpopcntw"},
	{"000100", ".....", "/////", ".....", "11111000011", "vpopcntd"},
	{"000100", ".....", ".....", ".....", "00000000100", "vrlb"},
	{"000100", ".....", ".....", ".....", "00001000100", "vrlh"},
	{"000100", ".....", ".....", ".....", "00010000100", "vrlw"},
	{"000100", ".....", ".....", ".....", "00011000100", "vrld"},
	{"000100", ".....", ".....", ".....", "00100000100", "vslb"},
	{"000100", ".....", ".....", ".....", "00101000100", "vslh"},
	{"000100", ".....", ".....", ".....", "00110000100", "vslw"},
	{"000100", ".....", ".....", ".....", "00111000100", "vsl"},
	{"000100", ".....", ".....", ".....", "01000000100", "vsrb"},
	{"000100", ".....", ".....", ".....", "01001000100", "vsrh"},
	{"000100", ".....", ".....", ".....", "01010000100", "vsrw"},
	{"000100", ".....", ".....", ".....", "01011000100", "vsr"},
	{"000100", ".....", ".....", ".....", "01100000100", "vsrab"},
	{"000100", ".....", ".....", ".....", "01101000100", "vsrah"},
	{"000100", ".....", ".....", ".....", "01110000100", "vsraw"},
	{"000100", ".....", ".....", ".....", "01111000100", "vsrad"},
	{"000100", ".....", ".....", ".....", "10000000100", "vand"},
	{"000100", ".....", ".....", ".....", "10001000100", "vandc"},
	{"000100", ".....", ".....", ".....", "10010000100", "vor"},
	{"000100", ".....", ".....", ".....", "10011000100", "vxor"},
	{"000100", ".....", ".....", ".....", "10100000100", "vnor"},
	{"000100", ".....", ".....", ".....", "10101000100", "vorc"},
	{"000100", ".....", ".....", ".....", "10110000100", "vnand"},
	{"000100", ".....", ".....", ".....", "10111000100", "vsld"},
	{"000100", ".....", "/////", "/////", "11000000100", "mfvscr"},
	{"000100", "/////", "/////", ".....", "11001000100", "mtvscr"},
	{"000100", ".....", ".....", ".....", "11010000100", "veqv"},
	{"000100", ".....", ".....", ".....", "11011000100", "vsrd"},
	{"000100", ".....", ".....", ".....", "11100000100", "vsrv"},
	{"000100", ".....", ".....", ".....", "11101000100", "vslv"},
	{"000100", ".....", ".....", ".....", "11110000100", "vclzdm"},
	{"000100", ".....", ".....", ".....", "11111000100", "vctzdm"},
	{"000100", ".....", ".....", ".....", "00000000101", "vrlq"},
	{"000100", ".....", ".....", ".....", "00001000101", "vrlqmi"},
	{"000100", ".....", ".....", ".....", "00010000101", "vrlwmi"},
	{"000100", ".....", ".....", ".....", "00011000101", "vrldmi"},
	{"000100", ".....", ".....", ".....", "00100000101", "vslq"},
	{"000100", ".....", ".....", ".....", "00101000101", "vrlqnm"},
	{"000100", ".....", ".....", ".....", "00110000101", "vrlwnm"},
	{"000100", ".....", ".....", ".....", "00111000101", "vrldnm"},
	{"000100", ".....", ".....", ".....", "01000000101", "vsrq"},
	{"000100", ".....", ".....", ".....", "01100000101", "vsraq"},
	{"000100", ".....", ".....", ".....", ".0000000110", "vcmpequb[.]"},
	{"000100", ".....", ".....", ".....", ".0001000110", "vcmpequh[.]"},
	{"000100", ".....", ".....", ".....", ".0010000110", "vcmpequw[.]"},
	{"000100", ".....", ".....", ".....", ".0011000110", "vcmpeqfp[.]"},
	{"000100", ".....", ".....", ".....", ".0111000110", "vcmpgefp[.]"},
	{"000100", ".....", ".....", ".....", ".1000000110", "vcmpgtub[.]"},
	{"000100", ".....", ".....", ".....", ".1001000110", "vcmpgtuh[.]"},
	{"000100", ".....", ".....", ".....", ".1010000110", "vcmpgtuw[.]"},
	{"000100", ".....", ".....", ".....", ".1011000110", "vcmpgtfp[.]"},
	{"000100", ".....", ".....", ".....", ".1100000110", "vcmpgtsb[.]"},
	{"000100", ".....", ".....", ".....", ".1101000110", "vcmpgtsh[.]"},
	{"000100", ".....", ".....", ".....", ".1110000110", "vcmpgtsw[.]"},
	{"000100", ".....", ".....", ".....", ".1111000110", "vcmpbfp[.]"},
	{"000100", ".....", ".....", ".....", ".0000000111", "vcmpneb[.]"},
	{"000100", ".....", ".....", ".....", ".0001000111", "vcmpneh[.]"},
	{"000100", ".....", ".....", ".....", ".0010000111", "vcmpnew[.]"},
	{"000100", ".....", ".....", ".....", ".0011000111", "vcmpequd[.]"},
	{"000100", ".....", ".....", ".....", ".0100000111", "vcmpnezb[.]"},
	{"000100", ".....", ".....", ".....", ".0101000111", "vcmpnezh[.]"},
	{"000100", ".....", ".....", ".....", ".0110000111", "vcmpnezw[.]"},
	{"000100", ".....", ".....", ".....", ".0111000111", "vcmpequq[.]"},
	{"000100", ".....", ".....", ".....", ".1010000111", "vcmpgtuq[.]"},
	{"000100", ".....", ".....", ".....", ".1011000111", "vcmpgtud[.]"},
	{"000100", ".....", ".....", ".....", ".1110000111", "vcmpgtsq[.]"},
	{"000100", ".....", ".....", ".....", ".1111000111", "vcmpgtsd[.]"},
	{"000100", ".....", ".....", ".....", "00000001000", "vmuloub"},
	{"000100", ".....", ".....", ".....", "00001001000", "vmulouh"},
	{"000100", ".....", ".....", ".....", "00010001000", "vmulouw"},
	{"000100", ".....", ".....", ".....", "00011001000", "vmuloud"},
	{"000100", ".....", ".....", ".....", "00100001000", "vmulosb"},
	{"000100", ".....", ".....", ".....", "00101001000", "vmulosh"},
	{"000100", ".....", ".....", ".....", "00110001000", "vmulosw"},
	{"000100", ".....", ".....", ".....", "00111001000", "vmulosd"},
	{"000100", ".....", ".....", ".....", "01000001000", "vmuleub"},
	{"000100", ".....", ".....", ".....", "01001001000", "vmuleuh"},
	{"000100", ".....", ".....", ".....", "01010001000", "vmuleuw"},
	{"000100", ".....", ".....", ".....", "01011001000", "vmuleud"},
	{"000100", ".....", ".....", ".....", "01100001000", "vmulesb"},
	{"000100", ".....", ".....", ".....", "01101001000", "vmulesh"},
	{"000100", ".....", ".....", ".....", "01110001000", "vmulesw"},
	{"000100", ".....", ".....", ".....", "01111001000", "vmulesd"},
	{"000100", ".....", ".....", ".....", "10000001000", "vpmsumb"},
	{"000100", ".....", ".....", ".....", "10001001000", "vpmsumh"},
	{"000100", ".....", ".....", ".....", "10010001000", "vpmsumw"},
	{"000100", ".....", ".....", ".....", "10011001000", "vpmsumd"},
	{"000100", ".....", ".....", ".....", "10100001000", "vcipher"},
	{"000100", ".....", ".....", ".....", "10101001000", "vncipher"},
	{"000100", ".....", ".....", "/////", "10111001000", "vsbox"},
	{"000100", ".....", ".....", ".....", "11000001000", "vsum4ubs"},
	{"000100", ".....", ".....", ".....", "11001001000", "vsum4shs"},
	{"000100", ".....", ".....", ".....", "11010001000", "vsum2sws"},
	{"000100", ".....", ".....", ".....", "11100001000", "vsum4sbs"},
	{"000100", ".....", ".....", ".....", "11110001000", "vsumsws"},
	{"000100", ".....", ".....", ".....", "00010001001", "vmuluwm"},
	{"000100", ".....", ".....", ".....", "00111001001", "vmulld"},
	{"000100", ".....", ".....", ".....", "01010001001", "vmulhuw"},
	{"000100", ".....", ".....", ".....", "01011001001", "vmulhud"},
	{"000100", ".....", ".....", ".....", "01110001001", "vmulhsw"},
	{"000100", ".....", ".....", ".....", "01111001001", "vmulhsd"},
	{"000100", ".....", ".....", ".....", "10100001001", "vcipherlast"},
	{"000100", ".....", ".....", ".....", "10101001001", "vncipherlast"},
	{"000100", ".....", ".....", ".....", "00000001010", "vaddfp"},
	{"000100", ".....", ".....", ".....", "00001001010", "vsubfp"},
	{"000100", ".....", "/////", ".....", "00100001010", "vrefp"},
	{"000100", ".....", "/////", ".....", "00101001010", "vrsqrtefp"},
	{"000100", ".....", "/////", ".....", "00110001010", "vexptefp"},
	{"000100", ".....", "/////", ".....", "00111001010", "vlogefp"},
	{"000100", ".....", "/////", ".....", "01000001010", "vrfin"},
	{"000100", ".....", "/////", ".....", "01001001010", "vrfiz"},
	{"000100", ".....", "/////", ".....", "01010001010", "vrfip"},
	{"000100", ".....", "/////", ".....", "01011001010", "vrfim"},
	{"000100", ".....", ".....", ".....", "01100001010", "vcfux"},
	{"000100", ".....", ".....", ".....", "01101001010", "vcfsx"},
	{"000100", ".....", ".....", ".....", "01110001010", "vctuxs"},
	{"000100", ".....", ".....", ".....", "01111001010", "vctsxs"},
	{"000100", ".....", ".....", ".....", "10000001010", "vmaxfp"},
	{"000100", ".....", ".....", ".....", "10001001010", "vminfp"},
	{"000100", ".....", ".....", ".....", "00000001011", "vdivuq"},
	{"000100", ".....", ".....", ".....", "00010001011", "vdivuw"},
	{"000100", ".....", ".....", ".....", "00011001011", "vdivud"},
	{"000100", ".....", ".....", ".....", "00100001011", "vdivsq"},
	{"000100", ".....", ".....", ".....", "00110001011", "vdivsw"},
	{"000100", ".....", ".....", ".....", "00111001011", "vdivsd"},
	{"000100", ".....", ".....", ".....", "01000001011", "vdiveuq"},
	{"000100", ".....", ".....", ".....", "01010001011", "vdiveuw"},
	{"000100", ".....", ".....", ".....", "01011001011", "vdiveud"},
	{"000100", ".....", ".....", ".....", "01100001011", "vdivesq"},
	{"000100", ".....", ".....", ".....", "01110001011", "vdivesw"},
	{"000100", ".....", ".....", ".....", "01111001011", "vdivesd"},
	{"000100", ".....", ".....", ".....", "11000001011", "vmoduq"},
	{"000100", ".....", ".....", ".....", "11010001011", "vmoduw"},
	{"000100", ".....", ".....", ".....", "11011001011", "vmodud"},
	{"000100", ".....", ".....", ".....", "11100001011", "vmodsq"},
	{"000100", ".....", ".....", ".....", "11110001011", "vmodsw"},
	{"000100", ".....", ".....", ".....", "11111001011", "vmodsd"},
	{"000100", ".....", ".....", ".....", "00000001100", "vmrghb"},
	{"000100", ".....", ".....", ".....", "00001001100", "vmrghh"},
	{"000100", ".....", ".....", ".....", "00010001100", "vmrghw"},
	{"000100", ".....", ".....", ".....", "00100001100", "vmrglb"},
	{"000100", ".....", ".....", ".....", "00101001100", "vmrglh"},
	{"000100", ".....", ".....", ".....", "00110001100", "vmrglw"},
	{"000100", ".....", "/....", ".....", "01000001100", "vspltb"},
	{"000100", ".....", "//...", ".....", "01001001100", "vsplth"},
	{"000100", ".....", "///..", ".....", "01010001100", "vspltw"},
	{"000100", ".....", ".....", "/////", "01100001100", "vspltisb"},
	{"000100", ".....", ".....", "/////", "01101001100", "vspltish"},
	{"000100", ".....", ".....", "/////", "01110001100", "vspltisw"},
	{"000100", ".....", ".....", ".....", "10000001100", "vslo"},
	{"000100", ".....", ".....", ".....", "10001001100", "vsro"},
	{"000100", ".....", "//...", ".....", "10011001100", "vgnb"},
	{"000100", ".....", "/////", ".....", "10100001100", "vgbbd"},
	{"000100", ".....", ".....", ".....", "10101001100", "vbpermq"},
	{"000100", ".....", ".....", ".....", "10111001100", "vbpermd"},
	{"000100", ".....", ".....", ".....", "11010001100", "vmrgow"},
	{"000100", ".....", ".....", ".....", "11110001100", "vmrgew"},
	{"000100", ".....", "00000", ".....", ".0000001101", "vstribl[.]"},
	{"000100", ".....", "00001", ".....", ".0000001101", "vstribr[.]"},
	{"000100", ".....", "00010", ".....", ".0000001101", "vstrihl[.]"},
	{"000100", ".....", "00011", ".....", ".0000001101", "vstrihr[.]"},
	{"000100", ".....", ".....", ".....", "00110001101", "vclrlb"},
	{"000100", ".....", ".....", ".....", "00111001101", "vclrrb"},
	{"000100", ".....", "/....", ".....", "01000001101", "vextractub"},
	{"000100", ".....", "/....", ".....", "01001001101", "vextractuh"},
	{"000100", ".....", "/....", ".....", "01010001101", "vextractuw"},
	{"000100", ".....", "/....", ".....", "01011001101", "vextractd"},
	{"000100", ".....", "/....", ".....", "01100001101", "vinsertb"},
	{"000100", ".....", "/....", ".....", "01101001101", "vinserth"},
	{"000100", ".....", "/....", ".....", "01110001101", "vinsertw"},
	{"000100", ".....", "/....", ".....", "01111001101", "vinsertd"},
	{"000100", ".....", ".....", ".....", "10101001101", "vcfuged"},
	{"000100", ".....", ".....", ".....", "10110001101", "vpextd"},
	{"000100", ".....", ".....", ".....", "10111001101", "vpdepd"},
	{"000100", ".....", ".....", ".....", "11000001101", "vextublx"},
	{"000100", ".....", ".....", ".....", "11001001101", "vextuhlx"},
	{"000100", ".....", ".....", ".....", "11010001101", "vextuwlx"},
	{"000100", ".....", ".....", ".....", "11100001101", "vextubrx"},
	{"000100", ".....", ".....", ".....", "11101001101", "vextuhrx"},
	{"000100", ".....", ".....", ".....", "11110001101", "vextuwrx"},
	{"000100", ".....", ".....", ".....", "00000001110", "vpkuhum"},
	{"000100", ".....", ".....", ".....", "00001001110", "vpkuwum"},
	{"000100", ".....", ".....", ".....", "00010001110", "vpkuhus"},
	{"000100", ".....", ".....", ".....", "00011001110", "vpkuwus"},
	{"000100", ".....", ".....", ".....", "00100001110", "vpkshus"},
	{"000100", ".....", ".....", ".....", "00101001110", "vpkswus"},
	{"000100", ".....", ".....", ".....", "00110001110", "vpkshss"},
	{"000100", ".....", ".....", ".....", "00111001110", "vpkswss"},
	{"000100", ".....", "/////", ".....", "01000001110", "vupkhsb"},
	{"000100", ".....", "/////", ".....", "01001001110", "vupkhsh"},
	{"000100", ".....", "/////", ".....", "01010001110", "vupklsb"},
	{"000100", ".....", "/////", ".....", "01011001110", "vupklsh"},
	{"000100", ".....", ".....", ".....", "01100001110", "vpkpx"},
	{"000100", ".....", "/////", ".....", "01101001110", "vupkhpx"},
	{"000100", ".....", "/////", ".....", "01111001110", "vupklpx"},
	{"000100", ".....", ".....", ".....", "10001001110", "vpkudum"},
	{"000100", ".....", ".....", ".....", "10011001110", "vpkudus"},
	{"000100", ".....", ".....", ".....", "10101001110", "vpksdus"},
	{"000100", ".....", ".....", ".....", "10111001110", "vpksdss"},
	{"000100", ".....", "/////", ".....", "11001001110", "vupkhsw"},
	{"000100", ".....", "/////", ".....", "11011001110", "vupklsw"},
	{"000100", ".....", ".....", ".....", "00000001111", "vinsbvlx"},
	{"000100", ".....", ".....", ".....", "00001001111", "vinshvlx"},
	{"000100", ".....", ".....", ".....", "00010001111", "vinswvlx"},
	{"000100", ".....", "/....", ".....", "00011001111", "vinsw"},
	{"000100", ".....", ".....", ".....", "00100001111", "vinsbvrx"},
	{"000100", ".....", ".....", ".....", "00101001111", "vinshvrx"},
	{"000100", ".....", ".....", ".....", "00110001111", "vinswvrx"},
	{"000100", ".....", "/....", ".....", "00111001111", "vinsd"},
	{"000100", ".....", ".....", ".....", "01000001111", "vinsblx"},
	{"000100", ".....", ".....", ".....", "01001001111", "vinshlx"},
	{"000100", ".....", ".....", ".....", "01010001111", "vinswlx"},
	{"000100", ".....", ".....", ".....", "01011001111", "vinsdlx"},
	{"000100", ".....", ".....", ".....", "01100001111", "vinsbrx"},
	{"000100", ".....", ".....", ".....", "01101001111", "vinshrx"},
	{"000100", ".....", ".....", ".....", "01110001111", "vinswrx"},
	{"000100", ".....", ".....", ".....", "01111001111", "vinsdrx"},
	{"000100", ".....", ".....", ".....", ".....01010.", "mtvsrbmi"},
	{"000100", ".....", ".....", ".....", "00...010110", "vsldbi"},
	{"000100", ".....", ".....", ".....", "01...010110", "vsrdbi"},
	{"000100", ".....", ".....", ".....", ".....010111", "vmsumcud"},
	{"000100", ".....", ".....", ".....", ".....011000", "vextdubvlx"},
	{"000100", ".....", ".....", ".....", ".....011001", "vextdubvrx"},
	{"000100", ".....", ".....", ".....", ".....011010", "vextduhvlx"},
	{"000100", ".....", ".....", ".....", ".....011011", "vextduhvrx"},
	{"000100", ".....", ".....", ".....", ".....011100", "vextduwvlx"},
	{"000100", ".....", ".....", ".....", ".....011101", "vextduwvrx"},
	{"000100", ".....", ".....", ".....", ".....011110", "vextddvlx"},
	{"000100", ".....", ".....", ".....", ".....011111", "vextddvrx"},
	{"000100", ".....", ".....", ".....", ".....100000", "vmhaddshs"},
	{"000100", ".....", ".....", ".....", ".....100001", "vmhraddshs"},
	{"000100", ".....", ".....", ".....", ".....100010", "vmladduhm"},
	{"000100", ".....", ".....", ".....", ".....100011", "vmsumudm"},
	{"000100", ".....", ".....", ".....", ".....100100", "vmsumubm"},
	{"000100", ".....", ".....", ".....", ".....100101", "vmsummbm"},
	{"000100", ".....", ".....", ".....", ".....100110", "vmsumuhm"},
	{"000100", ".....", ".....", ".....", ".....100111", "vmsumuhs"},
	{"000100", ".....", ".....", ".....", ".....101000", "vmsumshm"},
	{"000100", ".....", ".....", ".....", ".....101001", "vmsumshs"},
	{"000100", ".....", ".....", ".....", ".....101010", "vsel"},
	{"000100", ".....", ".....", ".....", ".....101011", "vperm"},
	{"000100", ".....", ".....", ".....", "/....101100", "vsldoi"},
	{"000100", ".....", ".....", ".....", ".....101101", "vpermxor"},
	{"000100", ".....", ".....", ".....", ".....101110", "vmaddfp"},
	{"000100", ".....", ".....", ".....", ".....101111", "vnmsubfp"},
	{"000100", ".....", ".....", ".....", ".....110000", "maddhd"},
	{"000100", ".....", ".....", ".....", ".....110001", "maddhdu"},
	{"000100", ".....", ".....", ".....", ".....110011", "maddld"},
	{"000100", ".....", ".....", ".....", ".....111011", "vpermr"},
	{"000100", ".....", ".....", ".....", ".....111100", "vaddeuqm"},
	{"000100", ".....", ".....", ".....", ".....111101", "vaddecuq"},
	{"000100", ".....", ".....", ".....", ".....111110", "vsubeuqm"},
	{"000100", ".....", ".....", ".....", ".....111111", "vsubecuq"},
	{"000110", ".....", ".....", ".....", ".......0000", "lxvp"},
	{"000110", ".....", ".....", ".....", ".......0001", "stxvp"},
	{"000111", ".....", ".....", ".....", "...........", "mulli"},
	{"001000", ".....", ".....", ".....", "...........", "subfic"},
	{"001010", ".../.", ".....", ".....", "...........", "cmpli"},
	{"001011", ".../.", ".....", ".....", "...........", "cmpi"},
	{"001100", ".....", ".....", ".....", "...........", "addic"},
	{"001101", ".....", ".....", ".....", "...........", "addic."},
	{"001110", ".....", ".....", ".....", "...........", "addi"},
	{"001111", ".....", ".....", ".....", "...........", "addis"},
	{"010000", ".....", ".....", ".....", "...........", "bc[l][a]"},
	{"010001", "/////", "/////", "////.", "......///01", "scv"},
	{"010001", "/////", "/////", "////.", "......///1/", "sc"},
	{"010010", ".....", ".....", ".....", "...........", "b[l][a]"},
	{"010011", "...//", "...//", "/////", "0000000000/", "mcrf"},
	{"010011", ".....", ".....", ".....", "0000100001/", "crnor"},
	{"010011", ".....", ".....", ".....", "0010000001/", "crandc"},
	{"010011", ".....", ".....", ".....", "0011000001/", "crxor"},
	{"010011", ".....", ".....", ".....", "0011100001/", "crnand"},
	{"010011", ".....", ".....", ".....", "0100000001/", "crand"},
	{"010011", ".....", ".....", ".....", "0100100001/", "creqv"},
	{"010011", ".....", ".....", ".....", "0110100001/", "crorc"},
	{"010011", ".....", ".....", ".....", "0111000001/", "cror"},
	{"010011", ".....", ".....", ".....", ".....00010.", "addpcis"},
	{"010011", ".....", ".....", "///..", "0000010000.", "bclr[l]"},
	{"010011", ".....", ".....", "///..", "1000010000.", "bcctr[l]"},
	{"010011", ".....", ".....", "///..", "1000110000.", "bctar[l]"},
	{"010011", "/////", "/////", "/////", "0000010010/", "rfid"},
	{"010011", "/////", "/////", "/////", "0001010010/", "rfscv"},
	{"010011", "/////", "/////", "////.", "0010010010/", "rfebb"},
	{"010011", "/////", "/////", "/////", "0100010010/", "hrfid"},
	{"010011", "/////", "/////", "/////", "0100110010/", "urfid"},
	{"010011", "/////", "/////", "/////", "0101110010/", "stop"},
	{"010011", "/////", "/////", "/////", "0010010110/", "isync"},
	{"010100", ".....", ".....", ".....", "...........", "rlwimi[.]"},
	{"010101", ".....", ".....", ".....", "...........", "rlwinm[.]"},
	{"010111", ".....", ".....", ".....", "...........", "rlwnm[.]"},
	{"011000", ".....", ".....", ".....", "...........", "ori"},
	{"011001", ".....", ".....", ".....", "...........", "oris"},
	{"011010", ".....", ".....", ".....", "...........", "xori"},
	{"011011", ".....", ".....", ".....", "...........", "xoris"},
	{"011100", ".....", ".....", ".....", "...........", "andi."},
	{"011101", ".....", ".....", ".....", "...........", "andis."},
	{"011110", ".....", ".....", ".....", "......000..", "rldicl[.]"},
	{"011110", ".....", ".....", ".....", "......001..", "rldicr[.]"},
	{"011110", ".....", ".....", ".....", "......010..", "rldic[.]"},
	{"011110", ".....", ".....", ".....", "......011..", "rldimi[.]"},
	{"011110", ".....", ".....", ".....", "......1000.", "rldcl[.]"},
	{"011110", ".....", ".....", ".....", "......1001.", "rldcr[.]"},
	{"011111", ".../.", ".....", ".....", "0000000000/", "cmp"},
	{"011111", ".../.", ".....", ".....", "0000100000/", "cmpl"},
	{"011111", ".....", "...//", "/////", "0010000000/", "setb"},
	{"011111", ".../.", ".....", ".....", "0011000000/", "cmprb"},
	{"011111", "...//", ".....", ".....", "0011100000/", "cmpeqb"},
	{"011111", ".....", ".....", "/////", "0110000000/", "setbc"},
	{"011111", ".....", ".....", "/////", "0110100000/", "setbcr"},
	{"011111", ".....", ".....", "/////", "0111000000/", "setnbc"},
	{"011111", ".....", ".....", "/////", "0111100000/", "setnbcr"},
	{"011111", "...//", "/////", "/////", "1001000000/", "mcrxrx"},
	{"011111", ".....", ".....", ".....", "0000000100/", "tw"},
	{"011111", ".....", ".....", ".....", "0001000100/", "td"},
	{"011111", ".....", ".....", ".....", "0000000110/", "lvsl"},
	{"011111", ".....", ".....", ".....", "0000100110/", "lvsr"},
	{"011111", ".....", ".....", ".....", "1001000110/", "lwat"},
	{"011111", ".....", ".....", ".....", "1001100110/", "ldat"},
	{"011111", ".....", ".....", ".....", "1011000110/", "stwat"},
	{"011111", ".....", ".....", ".....", "1011100110/", "stdat"},
	{"011111", "////.", ".....", ".....", "1100000110/", "copy"},
	{"011111", "/////", "/////", "/////", "1101000110/", "cpabort"},
	{"011111", "////.", ".....", ".....", "1110000110.", "paste[.]"},
	{"011111", ".....", ".....", ".....", "0000000111/", "lvebx"},
	{"011111", ".....", ".....", ".....", "0000100111/", "lvehx"},
	{"011111", ".....", ".....", ".....", "0001000111/", "lvewx"},
	{"011111", ".....", ".....", ".....", "0001100111/", "lvx"},
	{"011111", ".....", ".....", ".....", "0010000111/", "stvebx"},
	{"011111", ".....", ".....", ".....", "0010100111/", "stvehx"},
	{"011111", ".....", ".....", ".....", "0011000111/", "stvewx"},
	{"011111", ".....", ".....", ".....", "0011100111/", "stvx"},
	{"011111", ".....", ".....", ".....", "0101100111/", "lvxl"},
	{"011111", ".....", ".....", ".....", "0111100111/", "stvxl"},
	{"011111", ".....", ".....", ".....", "0000001000.", "subfc[.]"},
	{"011111", ".....", ".....", ".....", "0000101000.", "subf[.]"},
	{"011111", ".....", ".....", "/////", "0001101000.", "neg[.]"},
	{"011111", ".....", ".....", ".....", "0010001000.", "subfe[.]"},
	{"011111", ".....", ".....", "/////", "0011001000.", "subfze[.]"},
	{"011111", ".....", ".....", "/////", "0011101000.", "subfme[.]"},
	{"011111", ".....", ".....", ".....", "1000001000.", "subfco[.]"},
	{"011111", ".....", ".....", ".....", "1000101000.", "subfo[.]"},
	{"011111", ".....", ".....", "/////", "1001101000.", "nego[.]"},
	{"011111", ".....", ".....", ".....", "1010001000.", "subfeo[.]"},
	{"011111", ".....", ".....", "/////", "1011001000.", "subfzeo[.]"},
	{"011111", ".....", ".....", "/////", "1011101000.", "subfmeo[.]"},
	{"011111", ".....", ".....", ".....", "/000001001.", "mulhdu[.]"},
	{"011111", ".....", ".....", ".....", "/001001001.", "mulhd[.]"},
	{"011111", ".....", ".....", ".....", "0011101001.", "mulld[.]"},
	{"011111", ".....", ".....", ".....", "0100001001/", "modud"},
	{"011111", ".....", ".....", ".....", "0110001001.", "divdeu[.]"},
	{"011111", ".....", ".....", ".....", "0110101001.", "divde[.]"},
	{"011111", ".....", ".....", ".....", "0111001001.", "divdu[.]"},
	{"011111", ".....", ".....", ".....", "0111101001.", "divd[.]"},
	{"011111", ".....", ".....", ".....", "1011101001.", "mulldo[.]"},
	{"011111", ".....", ".....", ".....", "1100001001/", "modsd"},
	{"011111", ".....", ".....", ".....", "1110001001.", "divdeuo[.]"},
	{"011111", ".....", ".....", ".....", "1110101001.", "divdeo[.]"},
	{"011111", ".....", ".....", ".....", "1111001001.", "divduo[.]"},
	{"011111", ".....", ".....", ".....", "1111101001.", "divdo[.]"},
	{"011111", ".....", ".....", ".....", "..10101010/", "addex"},
	{"011111", ".....", ".....", ".....", "/001001010/", "addg"},
	{"011111", ".....", ".....", ".....", "0000001010.", "addc[.]"},
	{"011111", ".....", ".....", ".....", "0010001010.", "adde[.]"},
	{"011111", ".....", ".....", "/////", "0011001010.", "addze[.]"},
	{"011111", ".....", ".....", "/////", "0011101010.", "addme[.]"},
	{"011111", ".....", ".....", ".....", "0100001010.", "add[.]"},
	{"011111", ".....", ".....", ".....", "1000001010.", "addco[.]"},
	{"011111", ".....", ".....", ".....", "1010001010.", "addeo[.]"},
	{"011111", ".....", ".....", "/////", "1011001010.", "addzeo[.]"},
	{"011111", ".....", ".....", "/////", "1011101010.", "addmeo[.]"},
	{"011111", ".....", ".....", ".....", "1100001010.", "addo[.]"},
	{"011111", ".....", ".....", ".....", "/000001011.", "mulhwu[.]"},
	{"011111", ".....", ".....", ".....", "/001001011.", "mulhw[.]"},
	{"011111", ".....", ".....", ".....", "0011101011.", "mullw[.]"},
	{"011111", ".....", ".....", ".....", "0100001011/", "moduw"},
	{"011111", ".....", ".....", ".....", "0110001011.", "divweu[.]"},
	{"011111", ".....", ".....", ".....", "0110101011.", "divwe[.]"},
	{"011111", ".....", ".....", ".....", "0111001011.", "divwu[.]"},
	{"011111", ".....", ".....", ".....", "0111101011.", "divw[.]"},
	{"011111", ".....", ".....", ".....", "1011101011.", "mullwo[.]"},
	{"011111", ".....", ".....", ".....", "1100001011/", "modsw"},
	{"011111", ".....", ".....", ".....", "1110001011.", "divweuo[.]"},
	{"011111", ".....", ".....", ".....", "1110101011.", "divweo[.]"},
	{"011111", ".....", ".....", ".....", "1111001011.", "divwuo[.]"},
	{"011111", ".....", ".....", ".....", "1111101011.", "divwo[.]"},
	{"011111", ".....", ".....", ".....", "0000001100.", "lxsiwzx"},
	{"011111", ".....", ".....", ".....", "0001001100.", "lxsiwax"},
	{"011111", ".....", ".....", ".....", "0010001100.", "stxsiwx"},
	{"011111", ".....", ".....", ".....", "0100/01100.", "lxvx"},
	{"011111", ".....", ".....", ".....", "0101001100.", "lxvdsx"},
	{"011111", ".....", ".....", ".....", "0101101100.", "lxvwsx"},
	{"011111", ".....", ".....", ".....", "0110001100.", "stxvx"},
	{"011111", ".....", ".....", ".....", "1000001100.", "lxsspx"},
	{"011111", ".....", ".....", ".....", "1001001100.", "lxsdx"},
	{"011111", ".....", ".....", ".....", "1010001100.", "stxsspx"},
	{"011111", ".....", ".....", ".....", "1011001100.", "stxsdx"},
	{"011111", ".....", ".....", ".....", "1100001100.", "lxvw4x"},
	{"011111", ".....", ".....", ".....", "1100101100.", "lxvh8x"},
	{"011111", ".....", ".....", ".....", "1101001100.", "lxvd2x"},
	{"011111", ".....", ".....", ".....", "1101101100.", "lxvb16x"},
	{"011111", ".....", ".....", ".....", "1110001100.", "stxvw4x"},
	{"011111", ".....", ".....", ".....", "1110101100.", "stxvh8x"},
	{"011111", ".....", ".....", ".....", "1111001100.", "stxvd2x"},
	{"011111", ".....", ".....", ".....", "1111101100.", "stxvb16x"},
	{"011111", ".....", ".....", ".....", "0000001101.", "lxvrbx"},
	{"011111", ".....", ".....", ".....", "0000101101.", "lxvrhx"},
	{"011111", ".....", ".....", ".....", "0001001101.", "lxvrwx"},
	{"011111", ".....", ".....", ".....", "0001101101.", "lxvrdx"},
	{"011111", ".....", ".....", ".....", "0010001101.", "stxvrbx"},
	{"011111", ".....", ".....", ".....", "0010101101.", "stxvrhx"},
	{"011111", ".....", ".....", ".....", "0011001101.", "stxvrwx"},
	{"011111", ".....", ".....", ".....", "0011101101.", "stxvrdx"},
	{"011111", ".....", ".....", ".....", "0100001101.", "lxvl"},
	{"011111", ".....", ".....", ".....", "0100101101.", "lxvll"},
	{"011111", ".....", ".....", ".....", "0101001101/", "lxvpx"},
	{"011111", ".....", ".....", ".....", "0110001101.", "stxvl"},
	{"011111", ".....", ".....", ".....", "0110101101.", "stxvll"},
	{"011111", ".....", ".....", ".....", "0111001101/", "stxvpx"},
	{"011111", ".....", ".....", ".....", "1100001101.", "lxsibzx"},
	{"011111", ".....", ".....", ".....", "1100101101.", "lxsihzx"},
	{"011111", ".....", ".....", ".....", "1110001101.", "stxsibx"},
	{"011111", ".....", ".....", ".....", "1110101101.", "stxsihx"},
	{"011111", "/////", "/////", ".....", "0001001110/", "msgsndu"},
	{"011111", "/////", "/////", ".....", "0001101110/", "msgclru"},
	{"011111", "/////", "/////", ".....", "0010001110/", "msgsndp"},
	{"011111", "/////", "/////", ".....", "0010101110/", "msgclrp"},
	{"011111", "/////", "/////", ".....", "0011001110/", "msgsnd"},
	{"011111", "/////", "/////", ".....", "0011101110/", "msgclr"},
	{"011111", ".....", ".....", ".....", "0100101110/", "mfbhrbe"},
	{"011111", "/////", "/////", "/////", "0110101110/", "clrbhrb"},
	{"011111", ".....", ".....", ".....", ".....01111/", "isel"},
	{"011111", ".....", "0....", "..../", "0010010000/", "mtcrf"},
	{"011111", ".....", "1....", "..../", "0010010000/", "mtocrf"},
	{"011111", "...//", "00000", "/////", "0010110001/", "xxmfacc"},
	{"011111", "...//", "00001", "/////", "0010110001/", "xxmtacc"},
	{"011111", "...//", "00011", "/////", "0010110001/", "xxsetaccz"},
	{"011111", ".....", "////.", "/////", "0010010010/", "mtmsr"},
	{"011111", ".....", "////.", "/////", "0010110010/", "mtmsrd"},
	{"011111", ".....", "/....", ".....", "0100010010/", "tlbiel"},
	{"011111", ".....", "/....", ".....", "0100110010/", "tlbie"},
	{"011111", "/////", "/////", "/////", "0101010010/", "slbsync"},
	{"011111", ".....", "/////", ".....", "0110010010/", "slbmte"},
	{"011111", "/////", "/////", ".....", "0110110010/", "slbie"},
	{"011111", ".....", "/////", ".....", "0111010010/", "slbieg"},
	{"011111", "//...", "/////", "/////", "0111110010/", "slbia"},
	{"011111", ".....", "/////", ".....", "1101010010/", "slbiag"},
	{"011111", ".....", "0////", "/////", "0000010011/", "mfcr"},
	{"011111", ".....", "1....", "..../", "0000010011/", "mfocrf"},
	{"011111", ".....", ".....", "/////", "0000110011.", "mfvsrd"},
	{"011111", ".....", "/////", "/////", "0001010011/", "mfmsr"},
	{"011111", ".....", ".....", "/////", "0001110011.", "mfvsrwz"},
	{"011111", ".....", ".....", "/////", "0010110011.", "mtvsrd"},
	{"011111", ".....", ".....", "/////", "0011010011.", "mtvsrwa"},
	{"011111", ".....", ".....", "/////", "0011110011.", "mtvsrwz"},
	{"011111", ".....", ".....", "/////", "0100110011.", "mfvsrld"},
	{"011111", ".....", ".....", ".....", "0101010011/", "mfspr"},
	{"011111", ".....", ".....", ".....", "0101110011/", "mftb"},
	{"011111", ".....", ".....", "/////", "0110010011.", "mtvsrws"},
	{"011111", ".....", ".....", ".....", "0110110011.", "mtvsrdd"},
	{"011111", ".....", ".....", ".....", "0111010011/", "mtspr"},
	{"011111", ".....", "///..", "/////", "1011110011/", "darn"},
	{"011111", ".....", "/////", ".....", "1101010011/", "slbmfev"},
	{"011111", ".....", "/////", ".....", "1110010011/", "slbmfee"},
	{"011111", ".....", "/////", ".....", "11110100111", "slbfee."},
	{"011111", ".....", ".....", ".....", "0000010100/", "lwarx"},
	{"011111", ".....", ".....", ".....", "0000110100.", "lbarx"},
	{"011111", ".....", ".....", ".....", "0001010100/", "ldarx"},
	{"011111", ".....", ".....", ".....", "0001110100.", "lharx"},
	{"011111", ".....", ".....", ".....", "0100010100.", "lqarx"},
	{"011111", ".....", ".....", ".....", "1000010100/", "ldbrx"},
	{"011111", ".....", ".....", ".....", "1010010100/", "stdbrx"},
	{"011111", ".....", ".....", ".....", "0000010101/", "ldx"},
	{"011111", ".....", ".....", ".....", "0000110101/", "ldux"},
	{"011111", ".....", ".....", ".....", "0010010101/", "stdx"},
	{"011111", ".....", ".....", ".....", "0010110101/", "stdux"},
	{"011111", ".....", ".....", ".....", "0101010101/", "lwax"},
	{"011111", ".....", ".....", ".....", "0101110101/", "lwaux"},
	{"011111", ".....", ".....", ".....", "1000010101/", "lswx"},
	{"011111", ".....", ".....", ".....", "1001010101/", "lswi"},
	{"011111", ".....", ".....", ".....", "1010010101/", "stswx"},
	{"011111", ".....", ".....", ".....", "1011010101/", "stswi"},
	{"011111", ".....", ".....", ".....", "1100010101/", "lwzcix"},
	{"011111", ".....", ".....", ".....", "1100110101/", "lhzcix"},
	{"011111", ".....", ".....", ".....", "1101010101/", "lbzcix"},
	{"011111", ".....", ".....", ".....", "1101110101/", "ldcix"},
	{"011111", ".....", ".....", ".....", "1110010101/", "stwcix"},
	{"011111", ".....", ".....", ".....", "1110110101/", "sthcix"},
	{"011111", ".....", ".....", ".....", "1111010101/", "stbcix"},
	{"011111", ".....", ".....", ".....", "1111110101/", "stdcix"},
	{"011111", "/....", ".....", ".....", "0000010110/", "icbt"},
	{"011111", "/////", ".....", ".....", "0000110110/", "dcbst"},
	{"011111", "///..", ".....", ".....", "0001010110/", "dcbf"},
	{"011111", ".....", ".....", ".....", "0011110110/", "dcbtst"},
	{"011111", ".....", ".....", ".....", "0100010110/", "dcbt"},
	{"011111", ".....", ".....", ".....", "1000010110/", "lwbrx"},
	{"011111", "/////", "/////", "/////", "1000110110/", "tlbsync"},
	{"011111", "///..", "/////", "/////", "1001010110/", "sync"},
	{"011111", ".....", ".....", ".....", "1010010110/", "stwbrx"},
	{"011111", ".....", ".....", ".....", "1100010110/", "lhbrx"},
	{"011111", "/////", "/////", "/////", "1101010110/", "eieio"},
	{"011111", "/////", "/////", "/////", "1101110110/", "msgsync"},
	{"011111", ".....", ".....", ".....", "1110010110/", "sthbrx"},
	{"011111", "/////", ".....", ".....", "1111010110/", "icbi"},
	{"011111", "/////", ".....", ".....", "1111110110/", "dcbz"},
	{"011111", ".....", ".....", ".....", "00100101101", "stwcx."},
	{"011111", ".....", ".....", ".....", "00101101101", "stqcx."},
	{"011111", ".....", ".....", ".....", "00110101101", "stdcx."},
	{"011111", ".....", ".....", ".....", "10101101101", "stbcx."},
	{"011111", ".....", ".....", ".....", "10110101101", "sthcx."},
	{"011111", ".....", ".....", ".....", "0000010111/", "lwzx"},
	{"011111", ".....", ".....", ".....", "0000110111/", "lwzux"},
	{"011111", ".....", ".....", ".....", "0001010111/", "lbzx"},
	{"011111", ".....", ".....", ".....", "0001110111/", "lbzux"},
	{"011111", ".....", ".....", ".....", "0010010111/", "stwx"},
	{"011111", ".....", ".....", ".....", "0010110111/", "stwux"},
	{"011111", ".....", ".....", ".....", "0011010111/", "stbx"},
	{"011111", ".....", ".....", ".....", "0011110111/", "stbux"},
	{"011111", ".....", ".....", ".....", "0100010111/", "lhzx"},
	{"011111", ".....", ".....", ".....", "0100110111/", "lhzux"},
	{"011111", ".....", ".....", ".....", "0101010111/", "lhax"},
	{"011111", ".....", ".....", ".....", "0101110111/", "lhaux"},
	{"011111", ".....", ".....", ".....", "0110010111/", "sthx"},
	{"011111", ".....", ".....", ".....", "0110110111/", "sthux"},
	{"011111", "///..", ".....", ".....", "0111110111/", "spom"},
	{"011111", ".....", ".....", ".....", "1000010111/", "lfsx"},
	{"011111", ".....", ".....", ".....", "1000110111/", "lfsux"},
	{"011111", ".....", ".....", ".....", "1001010111/", "lfdx"},
	{"011111", ".....", ".....", ".....", "1001110111/", "lfdux"},
	{"011111", ".....", ".....", ".....", "1010010111/", "stfsx"},
	{"011111", ".....", ".....", ".....", "1010110111/", "stfsux"},
	{"011111", ".....", ".....", ".....", "1011010111/", "stfdx"},
	{"011111", ".....", ".....", ".....", "1011110111/", "stfdux"},
	{"011111", ".....", ".....", ".....", "1100010111/", "lfdpx"},
	{"011111", ".....", ".....", ".....", "1101010111/", "lfiwax"},
	{"011111", ".....", ".....", ".....", "1101110111/", "lfiwzx"},
	{"011111", ".....", ".....", ".....", "1110010111/", "stfdpx"},
	{"011111", ".....", ".....", ".....", "1111010111/", "stfiwx"},
	{"011111", "/////", ".....", ".....", "1111110111/", "lqm"},
	{"011111", ".....", ".....", ".....", "0000011000.", "slw[.]"},
	{"011111", ".....", ".....", ".....", "1000011000.", "srw[.]"},
	{"011111", ".....", ".....", ".....", "1100011000.", "sraw[.]"},
	{"011111", ".....", ".....", ".....", "1100111000.", "srawi[.]"},
	{"011111", ".....", ".....", ".....", "110011101..", "sradi[.]"},
	{"011111", ".....", ".....", ".....", "110111101..", "extswsli[.]"},
	{"011111", ".....", ".....", "/////", "0000011010.", "cntlzw[.]"},
	{"011111", ".....", ".....", "/////", "0000111010.", "cntlzd[.]"},
	{"011111", ".....", ".....", "/////", "0001111010/", "popcntb"},
	{"011111", ".....", ".....", "/////", "0010011010/", "prtyw"},
	{"011111", ".....", ".....", "/////", "0010111010/", "prtyd"},
	{"011111", ".....", ".....", "/////", "0100011010/", "cdtbcd"},
	{"011111", ".....", ".....", "/////", "0100111010/", "cbcdtd"},
	{"011111", ".....", ".....", "/////", "0101111010/", "popcntw"},
	{"011111", ".....", ".....", "/////", "0111111010/", "popcntd"},
	{"011111", ".....", ".....", "/////", "1000011010.", "cnttzw[.]"},
	{"011111", ".....", ".....", "/////", "1000111010.", "cnttzd[.]"},
	{"011111", ".....", ".....", ".....", "1100011010.", "srad[.]"},
	{"011111", ".....", ".....", "/////", "1110011010.", "extsh[.]"},
	{"011111", ".....", ".....", "/////", "1110111010.", "extsb[.]"},
	{"011111", ".....", ".....", "/////", "1111011010.", "extsw[.]"},
	{"011111", ".....", ".....", ".....", "0000011011.", "sld[.]"},
	{"011111", ".....", ".....", ".....", "0000111011/", "cntlzdm"},
	{"011111", ".....", ".....", "/////", "0010011011/", "brw"},
	{"011111", ".....", ".....", "/////", "0010111011/", "brd"},
	{"011111", ".....", ".....", "/////", "0011011011/", "brh"},
	{"011111", ".....", ".....", ".....", "1000011011.", "srd[.]"},
	{"011111", ".....", ".....", ".....", "1000111011/", "cnttzdm"},
	{"011111", ".....", ".....", ".....", "0000011100.", "and[.]"},
	{"011111", ".....", ".....", ".....", "0000111100.", "andc[.]"},
	{"011111", ".....", ".....", ".....", "0001111100.", "nor[.]"},
	{"011111", ".....", ".....", ".....", "0010011100/", "pdepd"},
	{"011111", ".....", ".....", ".....", "0010111100/", "pextd"},
	{"011111", ".....", ".....", ".....", "0011011100/", "cfuged"},
	{"011111", ".....", ".....", ".....", "0011111100/", "bpermd"},
	{"011111", ".....", ".....", ".....", "0100011100.", "eqv[.]"},
	{"011111", ".....", ".....", ".....", "0100111100.", "xor[.]"},
	{"011111", ".....", ".....", ".....", "0110011100.", "orc[.]"},
	{"011111", ".....", ".....", ".....", "0110111100.", "or[.]"},
	{"011111", ".....", ".....", ".....", "0111011100.", "nand[.]"},
	{"011111", ".....", ".....", ".....", "0111111100/", "cmpb"},
	{"011111", "///..", "/////", "/////", "0000011110/", "wait"},
	{"100000", ".....", ".....", ".....", "...........", "lwz"},
	{"100001", ".....", ".....", ".....", "...........", "lwzu"},
	{"100010", ".....", ".....", ".....", "...........", "lbz"},
	{"100011", ".....", ".....", ".....", "...........", "lbzu"},
	{"100100", ".....", ".....", ".....", "...........", "stw"},
	{"100101", ".....", ".....", ".....", "...........", "stwu"},
	{"100110", ".....", ".....", ".....", "...........", "stb"},
	{"100111", ".....", ".....", ".....", "...........", "stbu"},
	{"101000", ".....", ".....", ".....", "...........", "lhz"},
	{"101001", ".....", ".....", ".....", "...........", "lhzu"},
	{"101010", ".....", ".....", ".....", "...........", "lha"},
	{"101011", ".....", ".....", ".....", "...........", "lhau"},
	{"101100", ".....", ".....", ".....", "...........", "sth"},
	{"101101", ".....", ".....", ".....", "...........", "sthu"},
	{"101110", ".....", ".....", ".....", "...........", "lmw"},
	{"101111", ".....", ".....", ".....", "...........", "stmw"},
	{"110000", ".....", ".....", ".....", "...........", "lfs"},
	{"110001", ".....", ".....", ".....", "...........", "lfsu"},
	{"110010", ".....", ".....", ".....", "...........", "lfd"},
	{"110011", ".....", ".....", ".....", "...........", "lfdu"},
	{"110100", ".....", ".....", ".....", "...........", "stfs"},
	{"110101", ".....", ".....", ".....", "...........", "stfsu"},
	{"110110", ".....", ".....", ".....", "...........", "stfd"},
	{"110111", ".....", ".....", ".....", "...........", "stfdu"},
	{"111000", ".....", ".....", ".....", ".......////", "lq"},
	{"111001", ".....", ".....", ".....", ".........00", "lfdp"},
	{"111001", ".....", ".....", ".....", ".........10", "lxsd"},
	{"111001", ".....", ".....", ".....", ".........11", "lxssp"},
	{"111010", ".....", ".....", ".....", ".........00", "ld"},
	{"111010", ".....", ".....", ".....", ".........01", "ldu"},
	{"111010", ".....", ".....", ".....", ".........10", "lwa"},
	{"111011", ".....", ".....", ".....", "0001000010.", "dscli[.]"},
	{"111011", ".....", ".....", ".....", "0001100010.", "dscri[.]"},
	{"111011", "...//", ".....", ".....", "0011000010/", "dtstdc"},
	{"111011", "...//", ".....", ".....", "0011100010/", "dtstdg"},
	{"111011", ".....", ".....", ".....", "0000000010.", "dadd[.]"},
	{"111011", ".....", ".....", ".....", "0000100010.", "dmul[.]"},
	{"111011", "...//", ".....", ".....", "0010000010/", "dcmpo"},
	{"111011", "...//", ".....", ".....", "0010100010/", "dtstex"},
	{"111011", ".....", "/////", ".....", "0100000010.", "dctdp[.]"},
	{"111011", ".....", "/////", ".....", "0100100010.", "dctfix[.]"},
	{"111011", ".....", "..///", ".....", "0101000010.", "ddedpd[.]"},
	{"111011", ".....", "/////", ".....", "0101100010.", "dxex[.]"},
	{"111011", ".....", ".....", ".....", "1000000010.", "dsub[.]"},
	{"111011", ".....", ".....", ".....", "1000100010.", "ddiv[.]"},
	{"111011", "...//", ".....", ".....", "1010000010/", "dcmpu"},
	{"111011", "...//", ".....", ".....", "1010100010/", "dtstsf"},
	{"111011", ".....", "/////", ".....", "1100000010.", "drsp[.]"},
	{"111011", ".....", "/////", ".....", "1100100010.", "dcffix[.]"},
	{"111011", ".....", ".////", ".....", "1101000010.", "denbcd[.]"},
	{"111011", ".....", ".....", ".....", "1101100010.", "diex[.]"},
	{"111011", ".....", ".....", ".....", "..00000011.", "dqua[.]"},
	{"111011", ".....", ".....", ".....", "..00100011.", "drrnd[.]"},
	{"111011", ".....", ".....", ".....", "..01000011.", "dquai[.]"},
	{"111011", ".....", "////.", ".....", "..01100011.", "drintx[.]"},
	{"111011", ".....", "////.", ".....", "..11100011.", "drintn[.]"},
	{"111011", "...//", ".....", ".....", "1010100011/", "dtstsfi"},
	{"111011", "...//", ".....", ".....", "00000010../", "xvi8ger4pp"},
	{"111011", "...//", ".....", ".....", "00010010../", "xvf16ger2pp"},
	{"111011", "...//", ".....", ".....", "00011010../", "xvf32gerpp"},
	{"111011", "...//", ".....", ".....", "00100010../", "xvi4ger8pp"},
	{"111011", "...//", ".....", ".....", "11010010../", "xvf16ger2nn"},
	{"111011", "...//", ".....", ".....", "11011010../", "xvf32gernn"},
	{"111011", "...//", ".....", ".....", "11110010../", "xvbf16ger2nn"},
	{"111011", "...//", ".....", ".....", "11111010../", "xvf64gernn"},
	{"111011", "...//", ".....", ".....", "00000011../", "xvi8ger4"},
	{"111011", "...//", ".....", ".....", "00010011../", "xvf16ger2"},
	{"111011", "...//", ".....", ".....", "00011011../", "xvf32ger"},
	{"111011", "...//", ".....", ".....", "00100011../", "xvi4ger8"},
	{"111011", "...//", ".....", ".....", "00101011../", "xvi16ger2s"},
	{"111011", "...//", ".....", ".....", "00110011../", "xvbf16ger2"},
	{"111011", "...//", ".....", ".....", "00111011../", "xvf64ger"},
	{"111011", "...//", ".....", ".....", "01001011../", "xvi16ger2"},
	{"111011", "...//", ".....", ".....", "01101011../", "xvi16ger2pp"},
	{"111011", "...//", ".....", ".....", "01100011../", "xvi8ger4spp"},
	{"111011", ".....", "/////", ".....", "1101001110.", "fcfids[.]"},
	{"111011", ".....", "/////", ".....", "1111001110.", "fcfidus[.]"},
	{"111011", ".....", ".....", ".....", "/////10010.", "fdivs[.]"},
	{"111011", ".....", ".....", ".....", "/////10100.", "fsubs[.]"},
	{"111011", ".....", ".....", ".....", "/////10101.", "fadds[.]"},
	{"111011", ".....", "/////", ".....", "/////10110.", "fsqrts[.]"},
	{"111011", ".....", "/////", ".....", "/////11000.", "fres[.]"},
	{"111011", ".....", ".....", "/////", ".....11001.", "fmuls[.]"},
	{"111011", ".....", "/////", ".....", "/////11010.", "frsqrtes[.]"},
	{"111011", ".....", ".....", ".....", ".....11100.", "fmsubs[.]"},
	{"111011", ".....", ".....", ".....", ".....11101.", "fmadds[.]"},
	{"111011", ".....", ".....", ".....", ".....11110.", "fnmsubs[.]"},
	{"111011", ".....", ".....", ".....", ".....11111.", "fnmadds[.]"},
	{"111100", ".....", ".....", ".....", "00000000...", "xsaddsp"},
	{"111100", ".....", ".....", ".....", "00001000...", "xssubsp"},
	{"111100", ".....", ".....", ".....", "00010000...", "xsmulsp"},
	{"111100", ".....", ".....", ".....", "00011000...", "xsdivsp"},
	{"111100", ".....", ".....", ".....", "00100000...", "xsadddp"},
	{"111100", ".....", ".....", ".....", "00101000...", "xssubdp"},
	{"111100", ".....", ".....", ".....", "00110000...", "xsmuldp"},
	{"111100", ".....", ".....", ".....", "00111000...", "xsdivdp"},
	{"111100", ".....", ".....", ".....", "01000000...", "xvaddsp"},
	{"111100", ".....", ".....", ".....", "01001000...", "xvsubsp"},
	{"111100", ".....", ".....", ".....", "01010000...", "xvmulsp"},
	{"111100", ".....", ".....", ".....", "01011000...", "xvdivsp"},
	{"111100", ".....", ".....", ".....", "01100000...", "xvadddp"},
	{"111100", ".....", ".....", ".....", "01101000...", "xvsubdp"},
	{"111100", ".....", ".....", ".....", "01110000...", "xvmuldp"},
	{"111100", ".....", ".....", ".....", "01111000...", "xvdivdp"},
	{"111100", ".....", ".....", ".....", "10000000...", "xsmaxcdp"},
	{"111100", ".....", ".....", ".....", "10001000...", "xsmincdp"},
	{"111100", ".....", ".....", ".....", "10010000...", "xsmaxjdp"},
	{"111100", ".....", ".....", ".....", "10011000...", "xsminjdp"},
	{"111100", ".....", ".....", ".....", "10100000...", "xsmaxdp"},
	{"111100", ".....", ".....", ".....", "10101000...", "xsmindp"},
	{"111100", ".....", ".....", ".....", "10110000...", "xscpsgndp"},
	{"111100", ".....", ".....", ".....", "11000000...", "xvmaxsp"},
	{"111100", ".....", ".....", ".....", "11001000...", "xvminsp"},
	{"111100", ".....", ".....", ".....", "11010000...", "xvcpsgnsp"},
	{"111100", ".....", ".....", ".....", "11011000...", "xviexpsp"},
	{"111100", ".....", ".....", ".....", "11100000...", "xvmaxdp"},
	{"111100", ".....", ".....", ".....", "11101000...", "xvmindp"},
	{"111100", ".....", ".....", ".....", "11110000...", "xvcpsgndp"},
	{"111100", ".....", ".....", ".....", "11111000...", "xviexpdp"},
	{"111100", ".....", ".....", ".....", "00000001...", "xsmaddasp"},
	{"111100", ".....", ".....", ".....", "00001001...", "xsmaddmsp"},
	{"111100", ".....", ".....", ".....", "00010001...", "xsmsubasp"},
	{"111100", ".....", ".....", ".....", "00011001...", "xsmsubmsp"},
	{"111100", ".....", ".....", ".....", "00100001...", "xsmaddadp"},
	{"111100", ".....", ".....", ".....", "00101001...", "xsmaddmdp"},
	{"111100", ".....", ".....", ".....", "00110001...", "xsmsubadp"},
	{"111100", ".....", ".....", ".....", "00111001...", "xsmsubmdp"},
	{"111100", ".....", ".....", ".....", "01000001...", "xvmaddasp"},
	{"111100", ".....", ".....", ".....", "01001001...", "xvmaddmsp"},
	{"111100", ".....", ".....", ".....", "01010001...", "xvmsubasp"},
	{"111100", ".....", ".....", ".....", "01011001...", "xvmsubmsp"},
	{"111100", ".....", ".....", ".....", "01100001...", "xvmaddadp"},
	{"111100", ".....", ".....", ".....", "01101001...", "xvmaddmdp"},
	{"111100", ".....", ".....", ".....", "01110001...", "xvmsubadp"},
	{"111100", ".....", ".....", ".....", "01111001...", "xvmsubmdp"},
	{"111100", ".....", ".....", ".....", "10000001...", "xsnmaddasp"},
	{"111100", ".....", ".....", ".....", "10001001...", "xsnmaddmsp"},
	{"111100", ".....", ".....", ".....", "10010001...", "xsnmsubasp"},
	{"111100", ".....", ".....", ".....", "10011001...", "xsnmsubmsp"},
	{"111100", ".....", ".....", ".....", "10100001...", "xsnmaddadp"},
	{"111100", ".....", ".....", ".....", "10101001...", "xsnmaddmdp"},
	{"111100", ".....", ".....", ".....", "10110001...", "xsnmsubadp"},
	{"111100", ".....", ".....", ".....", "10111001...", "xsnmsubmdp"},
	{"111100", ".....", ".....", ".....", "11000001...", "xvnmaddasp"},
	{"111100", ".....", ".....", ".....", "11001001...", "xvnmaddmsp"},
	{"111100", ".....", ".....", ".....", "11010001...", "xvnmsubasp"},
	{"111100", ".....", ".....", ".....", "11011001...", "xvnmsubmsp"},
	{"111100", ".....", ".....", ".....", "11100001...", "xvnmaddadp"},
	{"111100", ".....", ".....", ".....", "11101001...", "xvnmaddmdp"},
	{"111100", ".....", ".....", ".....", "11110001...", "xvnmsubadp"},
	{"111100", ".....", ".....", ".....", "11111001...", "xvnmsubmdp"},
	{"111100", ".....", ".....", ".....", "0..00010...", "xxsldwi"},
	{"111100", ".....", ".....", ".....", "0..01010...", "xxpermdi"},
	{"111100", ".....", ".....", ".....", "00010010...", "xxmrghw"},
	{"111100", ".....", ".....", ".....", "00011010...", "xxperm"},
	{"111100", ".....", ".....", ".....", "00110010...", "xxmrglw"},
	{"111100", ".....", ".....", ".....", "00111010...", "xxpermr"},
	{"111100", ".....", ".....", ".....", "10000010...", "xxland"},
	{"111100", ".....", ".....", ".....", "10001010...", "xxlandc"},
	{"111100", ".....", ".....", ".....", "10010010...", "xxlor"},
	{"111100", ".....", ".....", ".....", "10011010...", "xxlxor"},
	{"111100", ".....", ".....", ".....", "10100010...", "xxlnor"},
	{"111100", ".....", ".....", ".....", "10101010...", "xxlorc"},
	{"111100", ".....", ".....", ".....", "10110010...", "xxlnand"},
	{"111100", ".....", ".....", ".....", "10111010...", "xxleqv"},
	{"111100", ".....", "///..", ".....", "010100100..", "xxspltw"},
	{"111100", ".....", "00...", ".....", "0101101000.", "xxspltib"},
	{"111100", ".....", "11111", ".....", "0101101000.", "lxvkq"},
	{"111100", ".....", "/....", ".....", "010100101..", "xxextractuw"},
	{"111100", ".....", "/....", ".....", "010110101..", "xxinsertw"},
	{"111100", ".....", ".....", ".....", ".1000011...", "xvcmpeqsp[.]"},
	{"111100", ".....", ".....", ".....", ".1001011...", "xvcmpgtsp[.]"},
	{"111100", ".....", ".....", ".....", ".1010011...", "xvcmpgesp[.]"},
	{"111100", ".....", ".....", ".....", ".1100011...", "xvcmpeqdp[.]"},
	{"111100", ".....", ".....", ".....", ".1101011...", "xvcmpgtdp[.]"},
	{"111100", ".....", ".....", ".....", ".1110011...", "xvcmpgedp[.]"},
	{"111100", ".....", ".....", ".....", "00000011...", "xscmpeqdp"},
	{"111100", ".....", ".....", ".....", "00001011...", "xscmpgtdp"},
	{"111100", ".....", ".....", ".....", "00010011...", "xscmpgedp"},
	{"111100", "...//", ".....", ".....", "00100011../", "xscmpudp"},
	{"111100", "...//", ".....", ".....", "00101011../", "xscmpodp"},
	{"111100", "...//", ".....", ".....", "00111011../", "xscmpexpdp"},
	{"111100", ".....", "/////", ".....", "001001000..", "xscvdpuxws"},
	{"111100", ".....", "/////", ".....", "001011000..", "xscvdpsxws"},
	{"111100", ".....", "/////", ".....", "010001000..", "xvcvspuxws"},
	{"111100", ".....", "/////", ".....", "010011000..", "xvcvspsxws"},
	{"111100", ".....", "/////", ".....", "010101000..", "xvcvuxwsp"},
	{"111100", ".....", "/////", ".....", "010111000..", "xvcvsxwsp"},
	{"111100", ".....", "/////", ".....", "011001000..", "xvcvdpuxws"},
	{"111100", ".....", "/////", ".....", "011011000..", "xvcvdpsxws"},
	{"111100", ".....", "/////", ".....", "011101000..", "xvcvuxwdp"},
	{"111100", ".....", "/////", ".....", "011111000..", "xvcvsxwdp"},
	{"111100", ".....", "/////", ".....", "100101000..", "xscvuxdsp"},
	{"111100", ".....", "/////", ".....", "100111000..", "xscvsxdsp"},
	{"111100", ".....", "/////", ".....", "101001000..", "xscvdpuxds"},
	{"111100", ".....", "/////", ".....", "101011000..", "xscvdpsxds"},
	{"111100", ".....", "/////", ".....", "101101000..", "xscvuxddp"},
	{"111100", ".....", "/////", ".....", "101111000..", "xscvsxddp"},
	{"111100", ".....", "/////", ".....", "110001000..", "xvcvspuxds"},
	{"111100", ".....", "/////", ".....", "110011000..", "xvcvspsxds"},
	{"111100", ".....", "/////", ".....", "110101000..", "xvcvuxdsp"},
	{"111100", ".....", "/////", ".....", "110111000..", "xvcvsxdsp"},
	{"111100", ".....", "/////", ".....", "111001000..", "xvcvdpuxds"},
	{"111100", ".....", "/////", ".....", "111011000..", "xvcvdpsxds"},
	{"111100", ".....", "/////", ".....", "111101000..", "xvcvuxddp"},
	{"111100", ".....", "/////", ".....", "111111000..", "xvcvsxddp"},
	{"111100", ".....", "/////", ".....", "001001001..", "xsrdpi"},
	{"111100", ".....", "/////", ".....", "001011001..", "xsrdpiz"},
	{"111100", ".....", "/////", ".....", "001101001..", "xsrdpip"},
	{"111100", ".....", "/////", ".....", "001111001..", "xsrdpim"},
	{"111100", ".....", "/////", ".....", "010001001..", "xvrspi"},
	{"111100", ".....", "/////", ".....", "010011001..", "xvrspiz"},
	{"111100", ".....", "/////", ".....", "010101001..", "xvrspip"},
	{"111100", ".....", "/////", ".....", "010111001..", "xvrspim"},
	{"111100", ".....", "/////", ".....", "011001001..", "xvrdpi"},
	{"111100", ".....", "/////", ".....", "011011001..", "xvrdpiz"},
	{"111100", ".....", "/////", ".....", "011101001..", "xvrdpip"},
	{"111100", ".....", "/////", ".....", "011111001..", "xvrdpim"},
	{"111100", ".....", "/////", ".....", "100001001..", "xscvdpsp"},
	{"111100", ".....", "/////", ".....", "100011001..", "xsrsp"},
	{"111100", ".....", "/////", ".....", "101001001..", "xscvspdp"},
	{"111100", ".....", "/////", ".....", "101011001..", "xsabsdp"},
	{"111100", ".....", "/////", ".....", "101101001..", "xsnabsdp"},
	{"111100", ".....", "/////", ".....", "101111001..", "xsnegdp"},
	{"111100", ".....", "/////", ".....", "110001001..", "xvcvdpsp"},
	{"111100", ".....", "/////", ".....", "110011001..", "xvabssp"},
	{"111100", ".....", "/////", ".....", "110101001..", "xvnabssp"},
	{"111100", ".....", "/////", ".....", "110111001..", "xvnegsp"},
	{"111100", ".....", "/////", ".....", "111001001..", "xvcvspdp"},
	{"111100", ".....", "/////", ".....", "111011001..", "xvabsdp"},
	{"111100", ".....", "/////", ".....", "111101001..", "xvnabsdp"},
	{"111100", ".....", "/////", ".....", "111111001..", "xvnegdp"},
	{"111100", "...//", ".....", ".....", "00111101../", "xstdivdp"},
	{"111100", "...//", ".....", ".....", "01011101../", "xvtdivsp"},
	{"111100", "...//", ".....", ".....", "01111101../", "xvtdivdp"},
	{"111100", ".....", ".....", ".....", "1101.101...", "xvtstdcsp"},
	{"111100", ".....", ".....", ".....", "1111.101...", "xvtstdcdp"},
	{"111100", ".....", "/////", ".....", "000001010..", "xsrsqrtesp"},
	{"111100", ".....", "/////", ".....", "000011010..", "xsresp"},
	{"111100", ".....", "/////", ".....", "001001010..", "xsrsqrtedp"},
	{"111100", ".....", "/////", ".....", "001011010..", "xsredp"},
	{"111100", "...//", "/////", ".....", "001101010./", "xstsqrtdp"},
	{"111100", ".....", "/////", ".....", "010001010..", "xvrsqrtesp"},
	{"111100", ".....", "/////", ".....", "010011010..", "xvresp"},
	{"111100", "...//", "/////", ".....", "010101010./", "xvtsqrtsp"},
	{"111100", ".....", "/////", ".....", "011001010..", "xvrsqrtedp"},
	{"111100", ".....", "/////", ".....", "011011010..", "xvredp"},
	{"111100", "...//", "/////", ".....", "011101010./", "xvtsqrtdp"},
	{"111100", ".....", ".....", ".....", "100101010./", "xststdcsp"},
	{"111100", ".....", ".....", ".....", "101101010./", "xststdcdp"},
	{"111100", ".....", ".....", ".....", "1110010100.", "xxgenpcvbm"},
	{"111100", ".....", ".....", ".....", "1110110100.", "xxgenpcvwm"},
	{"111100", ".....", ".....", ".....", "1110010101.", "xxgenpcvhm"},
	{"111100", ".....", ".....", ".....", "1110110101.", "xxgenpcvdm"},
	{"111100", ".....", "/////", ".....", "000001011..", "xssqrtsp"},
	{"111100", ".....", "/////", ".....", "001001011..", "xssqrtdp"},
	{"111100", ".....", "/////", ".....", "001101011..", "xsrdpic"},
	{"111100", ".....", "/////", ".....", "010001011..", "xvsqrtsp"},
	{"111100", ".....", "/////", ".....", "010101011..", "xvrspic"},
	{"111100", ".....", "/////", ".....", "011001011..", "xvsqrtdp"},
	{"111100", ".....", "/////", ".....", "011101011..", "xvrdpic"},
	{"111100", ".....", "/////", ".....", "100001011..", "xscvdpspn"},
	{"111100", ".....", "/////", ".....", "101001011..", "xscvspdpn"},
	{"111100", ".....", "00000", ".....", "101011011./", "xsxexpdp"},
	{"111100", ".....", "00001", ".....", "101011011./", "xsxsigdp"},
	{"111100", ".....", "10000", ".....", "101011011..", "xscvhpdp"},
	{"111100", ".....", "10001", ".....", "101011011..", "xscvdphp"},
	{"111100", ".....", "00000", ".....", "111011011..", "xvxexpdp"},
	{"111100", ".....", "00001", ".....", "111011011..", "xvxsigdp"},
	{"111100", "...//", "00010", ".....", "111011011./", "xvtlsbb"},
	{"111100", ".....", "00111", ".....", "111011011..", "xxbrh"},
	{"111100", ".....", "01000", ".....", "111011011..", "xvxexpsp"},
	{"111100", ".....", "01001", ".....", "111011011..", "xvxsigsp"},
	{"111100", ".....", "01111", ".....", "111011011..", "xxbrw"},
	{"111100", ".....", "10000", ".....", "111011011..", "xvcvbf16sp"},
	{"111100", ".....", "10001", ".....", "111011011..", "xvcvspbf16"},
	{"111100", ".....", "10111", ".....", "111011011..", "xxbrd"},
	{"111100", ".....", "11000", ".....", "111011011..", "xvcvhpsp"},
	{"111100", ".....", "11001", ".....", "111011011..", "xvcvsphp"},
	{"111100", ".....", "11111", ".....", "111011011..", "xxbrq"},
	{"111100", ".....", ".....", ".....", "1110010110.", "xsiexpdp"},
	{"111100", ".....", ".....", ".....", ".....11....", "xxsel"},
	{"111101", ".....", ".....", ".....", ".........00", "stfdp"},
	{"111101", ".....", ".....", ".....", ".........10", "stxsd"},
	{"111101", ".....", ".....", ".....", ".........11", "stxssp"},
	{"111101", ".....", ".....", ".....", "........001", "lxv"},
	{"111101", ".....", ".....", ".....", "........101", "stxv"},
	{"111110", ".....", ".....", ".....", ".........00", "std"},
	{"111110", ".....", ".....", ".....", ".........01", "stdu"},
	{"111110", ".....", ".....", ".....", ".........10", "stq"},
	{"111111", "...//", ".....", ".....", "0000000000/", "fcmpu"},
	{"111111", "...//", ".....", ".....", "0000100000/", "fcmpo"},
	{"111111", "...//", "...//", "/////", "0001000000/", "mcrfs"},
	{"111111", "...//", ".....", ".....", "0010000000/", "ftdiv"},
	{"111111", "...//", "/////", ".....", "0010100000/", "ftsqrt"},
	{"111111", ".....", ".....", ".....", "0001000010.", "dscliq[.]"},
	{"111111", ".....", ".....", ".....", "0001100010.", "dscriq[.]"},
	{"111111", "...//", ".....", ".....", "0011000010/", "dtstdcq"},
	{"111111", "...//", ".....", ".....", "0011100010/", "dtstdgq"},
	{"111111", ".....", ".....", ".....", "0000000010.", "daddq[.]"},
	{"111111", ".....", ".....", ".....", "0000100010.", "dmulq[.]"},
	{"111111", "...//", ".....", ".....", "0010000010/", "dcmpoq"},
	{"111111", "...//", ".....", ".....", "0010100010/", "dtstexq"},
	{"111111", ".....", "/////", ".....", "0100000010.", "dctqpq[.]"},
	{"111111", ".....", "/////", ".....", "0100100010.", "dctfixq[.]"},
	{"111111", ".....", "..///", ".....", "0101000010.", "ddedpdq[.]"},
	{"111111", ".....", "/////", ".....", "0101100010.", "dxexq[.]"},
	{"111111", ".....", ".....", ".....", "1000000010.", "dsubq[.]"},
	{"111111", ".....", ".....", ".....", "1000100010.", "ddivq[.]"},
	{"111111", "...//", ".....", ".....", "1010000010/", "dcmpuq"},
	{"111111", "...//", ".....", ".....", "1010100010/", "dtstsfq"},
	{"111111", ".....", "/////", ".....", "1100000010.", "drdpq[.]"},
	{"111111", ".....", "/////", ".....", "1100100010.", "dcffixq[.]"},
	{"111111", ".....", ".////", ".....", "1101000010.", "denbcdq[.]"},
	{"111111", ".....", ".....", ".....", "1101100010.", "diexq[.]"},
	{"111111", ".....", "00000", ".....", "1111100010/", "dcffixqq"},
	{"111111", ".....", "00001", ".....", "1111100010/", "dctfixqq"},
	{"111111", ".....", ".....", ".....", "..00000011.", "dquaq[.]"},
	{"111111", ".....", ".....", ".....", "..00100011.", "drrndq[.]"},
	{"111111", ".....", ".....", ".....", "..01000011.", "dquaiq[.]"},
	{"111111", ".....", "////.", ".....", "..01100011.", "drintxq[.]"},
	{"111111", ".....", "////.", ".....", "..11100011.", "drintnq[.]"},
	{"111111", "...//", ".....", ".....", "1010100011/", "dtstsfiq"},
	{"111111", ".....", ".....", ".....", "0000000100.", "xsaddqp[o]"},
	{"111111", ".....", ".....", ".....", "0000100100.", "xsmulqp[o]"},
	{"111111", ".....", ".....", ".....", "0001000100/", "xscmpeqqp"},
	{"111111", ".....", ".....", ".....", "0001100100/", "xscpsgnqp"},
	{"111111", "...//", ".....", ".....", "0010000100/", "xscmpoqp"},
	{"111111", "...//", ".....", ".....", "0010100100/", "xscmpexpqp"},
	{"111111", ".....", ".....", ".....", "0011000100/", "xscmpgeqp"},
	{"111111", ".....", ".....", ".....", "0011100100/", "xscmpgtqp"},
	{"111111", ".....", ".....", ".....", "0110000100.", "xsmaddqp[o]"},
	{"111111", ".....", ".....", ".....", "0110100100.", "xsmsubqp[o]"},
	{"111111", ".....", ".....", ".....", "0111000100.", "xsnmaddqp[o]"},
	{"111111", ".....", ".....", ".....", "0111100100.", "xsnmsubqp[o]"},
	{"111111", ".....", ".....", ".....", "1000000100.", "xssubqp[o]"},
	{"111111", ".....", ".....", ".....", "1000100100.", "xsdivqp[o]"},
	{"111111", "...//", ".....", ".....", "1010000100/", "xscmpuqp"},
	{"111111", ".....", ".....", ".....", "1010100100/", "xsmaxcqp"},
	{"111111", ".....", ".....", ".....", "1011000100/", "xststdcqp"},
	{"111111", ".....", ".....", ".....", "1011100100/", "xsmincqp"},
	{"111111", ".....", "00000", ".....", "1100100100/", "xsabsqp"},
	{"111111", ".....", "00010", ".....", "1100100100/", "xsxexpqp"},
	{"111111", ".....", "01000", ".....", "1100100100/", "xsnabsqp"},
	{"111111", ".....", "10000", ".....", "1100100100/", "xsnegqp"},
	{"111111", ".....", "10010", ".....", "1100100100/", "xsxsigqp"},
	{"111111", ".....", "11011", ".....", "1100100100.", "xssqrtqp[o]"},
	{"111111", ".....", "00000", ".....", "1101000100/", "xscvqpuqz"},
	{"111111", ".....", "00001", ".....", "1101000100/", "xscvqpuwz"},
	{"111111", ".....", "00010", ".....", "1101000100/", "xscvudqp"},
	{"111111", ".....", "00011", ".....", "1101000100/", "xscvuqqp"},
	{"111111", ".....", "01000", ".....", "1101000100/", "xscvqpsqz"},
	{"111111", ".....", "01001", ".....", "1101000100/", "xscvqpswz"},
	{"111111", ".....", "01010", ".....", "1101000100/", "xscvsdqp"},
	{"111111", ".....", "01011", ".....", "1101000100/", "xscvsqqp"},
	{"111111", ".....", "10001", ".....", "1101000100/", "xscvqpudz"},
	{"111111", ".....", "10100", ".....", "1101000100.", "xscvqpdp[o]"},
	{"111111", ".....", "10110", ".....", "1101000100/", "xscvdpqp"},
	{"111111", ".....", "11001", ".....", "1101000100/", "xscvqpsdz"},
	{"111111", ".....", ".....", ".....", "1101100100/", "xsiexpqp"},
	{"111111", ".....", "////.", ".....", "..00000101.", "xsrqpi[x]"},
	{"111111", ".....", "////.", ".....", "..00100101/", "xsrqpxp"},
	{"111111", ".....", "/////", "/////", "0000100110.", "mtfsb"},
	{"111111", ".....", "/////", "/////", "0001000110.", "mtfsb"},
	{"111111", "...//", "////.", "..../", "0010000110.", "mtfsfi[.]"},
	{"111111", ".....", ".....", ".....", "1101000110/", "fmrgow"},
	{"111111", ".....", ".....", ".....", "1111000110/", "fmrgew"},
	{"111111", ".....", "00000", "/////", "1001000111.", "mffs[.]"},
	{"111111", ".....", "00001", "/////", "1001000111/", "mffsce"},
	{"111111", ".....", "10100", ".....", "1001000111/", "mffscdrn"},
	{"111111", ".....", "10101", "//...", "1001000111/", "mffscdrni"},
	{"111111", ".....", "10110", ".....", "1001000111/", "mffscrn"},
	{"111111", ".....", "10111", "///..", "1001000111/", "mffscrni"},
	{"111111", ".....", "11000", "/////", "1001000111/", "mffsl"},
	{"111111", ".....", ".....", ".....", "1011000111.", "mtfsf[.]"},
	{"111111", ".....", ".....", ".....", "0000001000.", "fcpsgn[.]"},
	{"111111", ".....", "/////", ".....", "0000101000.", "fneg[.]"},
	{"111111", ".....", "/////", ".....", "0001001000.", "fmr[.]"},
	{"111111", ".....", "/////", ".....", "0010001000.", "fnabs[.]"},
	{"111111", ".....", "/////", ".....", "0100001000.", "fabs[.]"},
	{"111111", ".....", "/////", ".....", "0110001000.", "frin[.]"},
	{"111111", ".....", "/////", ".....", "0110101000.", "friz[.]"},
	{"111111", ".....", "/////", ".....", "0111001000.", "frip[.]"},
	{"111111", ".....", "/////", ".....", "0111101000.", "frim[.]"},
	{"111111", ".....", "/////", ".....", "0000001100.", "frsp[.]"},
	{"111111", ".....", "/////", ".....", "0000001110.", "fctiw[.]"},
	{"111111", ".....", "/////", ".....", "0010001110.", "fctiwu[.]"},
	{"111111", ".....", "/////", ".....", "1100101110.", "fctid[.]"},
	{"111111", ".....", "/////", ".....", "1101001110.", "fcfid[.]"},
	{"111111", ".....", "/////", ".....", "1110101110.", "fctidu[.]"},
	{"111111", ".....", "/////", ".....", "1111001110.", "fcfidu[.]"},
	{"111111", ".....", "/////", ".....", "0000001111.", "fctiwz[.]"},
	{"111111", ".....", "/////", ".....", "0010001111.", "fctiwuz[.]"},
	{"111111", ".....", "/////", ".....", "1100101111.", "fctidz[.]"},
	{"111111", ".....", "/////", ".....", "1110101111.", "fctiduz[.]"},
	{"111111", ".....", ".....", ".....", "/////10010.", "fdiv[.]"},
	{"111111", ".....", ".....", ".....", "/////10100.", "fsub[.]"},
	{"111111", ".....", ".....", ".....", "/////10101.", "fadd[.]"},
	{"111111", ".....", "/////", ".....", "/////10110.", "fsqrt[.]"},
	{"111111", ".....", ".....", ".....", ".....10111.", "fsel[.]"},
	{"111111", ".....", "/////", ".....", "/////11000.", "fre[.]"},
	{"111111", ".....", ".....", "/////", ".....11001.", "fmul[.]"},
	{"111111", ".....", "/////", ".....", "/////11010.", "frsqrte[.]"},
	{"111111", ".....", ".....", ".....", ".....11100.", "fmsub[.]"},
	{"111111", ".....", ".....", ".....", ".....11101.", "fmadd[.]"},
	{"111111", ".....", ".....", ".....", ".....11110.", "fnmsub[.]"},
	{"111111", ".....", ".....", ".....", ".....11111.", "fnmadd[.]"},
	{"111011", "...//", ".....", ".....", "00101010../", "xvi16ger2spp"},
	{"111011", "...//", ".....", ".....", "00110010../", "xvbf16ger2pp"},
	{"111011", "...//", ".....", ".....", "00111010../", "xvf64gerpp"},
	{"111011", "...//", ".....", ".....", "01010010../", "xvf16ger2np"},
	{"111011", "...//", ".....", ".....", "01011010../", "xvf32gernp"},
	{"111011", "...//", ".....", ".....", "01110010../", "xvbf16ger2np"},
	{"111011", "...//", ".....", ".....", "01111010../", "xvf64gernp"},
	{"111011", "...//", ".....", ".....", "10010010../", "xvf16ger2pn"},
	{"111011", "...//", ".....", ".....", "10011010../", "xvf32gerpn"},
	{"111011", "...//", ".....", ".....", "10110010../", "xvbf16ger2pn"},
	{"111011", "...//", ".....", ".....", "10111010../", "xvf64gerpn"},
};

struct {
	Ins pfx;
	Ins ins;
	char *mneomic;
} instab2[] = {
	{{"000001", "000//", ".//..", ".....", "..........."}, {"111101", ".....", ".....", ".....", "..........."}, "pstd"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"111110", ".....", ".....", ".....", "..........."}, "pstxvp"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"100000", ".....", ".....", ".....", "..........."}, "plwz"},
	{{"000001", "01000", "0////", ".....", "..........."}, {"100000", ".....", "000..", ".....", "..........."}, "xxsplti32dx"},
	{{"000001", "01000", "0////", ".....", "..........."}, {"100000", ".....", "0010.", ".....", "..........."}, "xxspltidp"},
	{{"000001", "01000", "0////", ".....", "..........."}, {"100000", ".....", "0011.", ".....", "..........."}, "xxspltiw"},
	{{"000001", "01000", "0////", "/////", "///////////"}, {"100001", ".....", ".....", ".....", ".....00...."}, "xxblendvb"},
	{{"000001", "01000", "0////", "/////", "///////////"}, {"100001", ".....", ".....", ".....", ".....01...."}, "xxblendvh"},
	{{"000001", "01000", "0////", "/////", "///////////"}, {"100001", ".....", ".....", ".....", ".....10...."}, "xxblendvw"},
	{{"000001", "01000", "0////", "/////", "///////////"}, {"100001", ".....", ".....", ".....", ".....11...."}, "xxblendvd"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"100010", ".....", ".....", ".....", "..........."}, "plbz"},
	{{"000001", "01000", "0////", "/////", "////////..."}, {"100010", ".....", ".....", ".....", ".....00...."}, "xxpermx"},
	{{"000001", "01000", "0////", "/////", "///........"}, {"100010", ".....", ".....", ".....", ".....01...."}, "xxeval"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"100100", ".....", ".....", ".....", "..........."}, "pstw"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"100110", ".....", ".....", ".....", "..........."}, "pstb"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"101000", ".....", ".....", ".....", "..........."}, "plhz"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"101001", ".....", ".....", ".....", "..........."}, "plwa"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"101010", ".....", ".....", ".....", "..........."}, "plxsd"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"101010", ".....", ".....", ".....", "..........."}, "plha"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"101011", ".....", ".....", ".....", "..........."}, "plxssp"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"101100", ".....", ".....", ".....", "..........."}, "psth"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"101110", ".....", ".....", ".....", "..........."}, "pstxsd"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"101111", ".....", ".....", ".....", "..........."}, "pstxssp"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"110000", ".....", ".....", ".....", "..........."}, "plfs"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"11001.", ".....", ".....", ".....", "..........."}, "plxv"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"110010", ".....", ".....", ".....", "..........."}, "plfd"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"110100", ".....", ".....", ".....", "..........."}, "pstfs"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"11011.", ".....", ".....", ".....", "..........."}, "pstxv"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"110110", ".....", ".....", ".....", "..........."}, "pstfd"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"111000", ".....", ".....", ".....", "..........."}, "plq"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"111001", ".....", ".....", ".....", "..........."}, "pld"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"111010", ".....", ".....", ".....", "..........."}, "plxvp"},
	{{"000001", "11100", "1////", "..../", "///........"}, {"111011", "...//", ".....", ".....", "00000010../"}, "pmxvi8ger4pp"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00010010../"}, "pmxvf16ger2pp"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "00011010../"}, "pmxvf32gerpp"},
	{{"000001", "11100", "1////", ".....", "..........."}, {"111011", "...//", ".....", ".....", "00100010../"}, "pmxvi4ger8pp"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00101010../"}, "pmxvi16ger2spp"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00110010../"}, "pmxvbf16ger2pp"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "00111010../"}, "pmxvf64gerpp"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "01010010../"}, "pmxvf16ger2np"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "01011010../"}, "pmxvf32gernp"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "01110010../"}, "pmxvbf16ger2n"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "01111010../"}, "pmxvf64gernp"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "10010010../"}, "pmxvf16ger2pn"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "10011010../"}, "pmxvf32gerpn"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "10110010../"}, "pmxvbf16ger2pn"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "10111010../"}, "pmxvf64gerpn"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "11010010../"}, "pmxvf16ger2nn"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "11011010../"}, "pmxvf32gernn"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "11110010../"}, "pmxvbf16ger2nn"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "11111010../"}, "pmxvf64gernn"},
	{{"000001", "11100", "1////", "..../", "///........"}, {"111011", "...//", ".....", ".....", "00000011../"}, "pmxvi8ger4"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00010011../"}, "pmxvf16ger2"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "00011011../"}, "pmxvf32ger"},
	{{"000001", "11100", "1////", ".....", "..........."}, {"111011", "...//", ".....", ".....", "00100011../"}, "pmxvi4ger8"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00101011../"}, "pmxvi16ger2s"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00110011../"}, "pmxvbf16ger2"},
	{{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "00111011../"}, "pmxvf64ger"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "01001011../"}, "pmxvi16ger2"},
	{{"000001", "11100", "1////", "..../", "///........"}, {"111011", "...//", ".....", ".....", "01100011../"}, "pmxvi8ger4spp"},
	{{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "01101011../"}, "pmxvi16ger2pp"},
	{{"000001", "000//", ".//..", ".....", "..........."}, {"111100", ".....", ".....", ".....", "..........."}, "pstq"},
	{{"000001", "100//", ".//..", ".....", "..........."}, {"001110", ".....", ".....", ".....", "..........."}, "paddi"},
	{{"000001", "11000", "000//", "/////", "///////////"}, {"......", ".....", ".....", ".....", "..........."}, "pnop"},
};

static int which = 0;

static ulong
str2i(char *s)
{
	ulong o;

	for(o = 0; *s != '\0'; s++){
		o <<= 1;
		switch(*s){
		case '.':
			o |= which&1;
			break;
		case '0': case '/':
			break;
		case '1':
			o |= 1;
			break;
		}
	}
	return o;
}

static ulong
parsefmt(Ins *w)
{
	return (str2i(w->op)<<26) | (str2i(w->a1)<<21) | (str2i(w->a2)<<16) | (str2i(w->a3)<<11) | (str2i(w->xop)<<0);
}

#define GET4(p) (u32int)(p)[3] | (u32int)(p)[2]<<8 | (u32int)(p)[1]<<16 | (u32int)(p)[0]<<24
#define PUT4(p, u) (p)[0] = (u)>>24, (p)[1] = (u)>>16, (p)[2] = (u)>>8, (p)[3] = (u)

long
fakeread(int, void *buf, long n, vlong off)
{
	uvlong o;

	if(n < 0 || n%4 != 0 || off%4 != 0)
		return -1;
	if(off < nelem(instab)*4){
		o = parsefmt(instab+off/4);
		PUT4(((uchar*)buf), o);
		return 4;
	}
	off -= nelem(instab)*4;
	switch((uint)off%8){
	case 0:
		o = parsefmt(&instab2[off/8].pfx);
		PUT4(((uchar*)buf), o);
		return 4;
	case 4:
		o = parsefmt(&instab2[off/8].ins);
		PUT4(((uchar*)buf), o);
		return 4;
	default:
		return -1;
	}
}

Map fakemap = {
	1,
	"", -1, fakeread, 1, 0, 0, nelem(instab)*4 + nelem(instab2)*8, 0,
};

void
main(int argc, char **argv)
{
	uchar buf[64];
	int i, w;
	int debug;

	machbytype(FPOWER64);
	debug = 0;

	ARGBEGIN{
	case 'd':
		debug++;
		break;
	}ARGEND

	for(w = 0; w < 2; w++){
		which = w;
		for(i = 0; i < nelem(instab); i++){
			buf[0] = 0;
			machdata->das(&fakemap, i*4, 0, (char*)buf, sizeof buf);
			if(strstr((char*)buf, "unknown") != nil)
				sysfatal("%s not implemented", instab[i].mneomic);
			else if(debug && strstr((char*)buf, instab[i].mneomic) == nil)
				print("%s\t%s\n", instab[i].mneomic, (char*)buf);
		}
	}
	for(w = 0; w < 2; w++){
		which = w;
		for(i = 0; i < nelem(instab2); i++){
			buf[0] = 0;
			machdata->das(&fakemap, nelem(instab)*4+i*8, 0, (char*)buf, sizeof buf);
			if(strstr((char*)buf, "unknown") != nil)
				sysfatal("%s not implemented", instab2[i].mneomic);
			else if(debug && strstr((char*)buf, instab2[i].mneomic) == nil)
				print("%s\t%s\n", instab2[i].mneomic, (char*)buf);
		}
	}
	exits(nil);
}
