#define NSYM    50
#define NSNAME  8
#define NOPROF  (1<<0)
#define DUPOK   (1<<1)

/*
*      amd64
*/

enum    as
{
       AXXX,
       AAAA,
       AAAD,
       AAAM,
       AAAS,
       AADCB,
       AADCL,
       AADCW,
       AADDB,
       AADDL,
       AADDW,
       AADJSP,
       AANDB,
       AANDL,
       AANDW,
       AARPL,
       ABOUNDL,
       ABOUNDW,
       ABSFL,
       ABSFW,
       ABSRL,
       ABSRW,
       ABTL,
       ABTW,
       ABTCL,
       ABTCW,
       ABTRL,
       ABTRW,
       ABTSL,
       ABTSW,
       ABYTE,
       ACALL,
       ACLC,
       ACLD,
       ACLI,
       ACLTS,
       ACMC,
       ACMPB,
       ACMPL,
       ACMPW,
       ACMPSB,
       ACMPSL,
       ACMPSW,
       ADAA,
       ADAS,
       ADATA,
       ADECB,
       ADECL,
       ADECQ,
       ADECW,
       ADIVB,
       ADIVL,
       ADIVW,
       AENTER,
       AGLOBL,
       AGOK,
       AHISTORY,
       AHLT,
       AIDIVB,
       AIDIVL,
       AIDIVW,
       AIMULB,
       AIMULL,
       AIMULW,
       AINB,
       AINL,
       AINW,
       AINCB,
       AINCL,
       AINCQ,
       AINCW,
       AINSB,
       AINSL,
       AINSW,
       AINT,
       AINTO,
       AIRETL,
       AIRETW,
       AJCC,
       AJCS,
       AJCXZ,
       AJEQ,
       AJGE,
       AJGT,
       AJHI,
       AJLE,
       AJLS,
       AJLT,
       AJMI,
       AJMP,
       AJNE,
       AJOC,
       AJOS,
       AJPC,
       AJPL,
       AJPS,
       ALAHF,
       ALARL,
       ALARW,
       ALEAL,
       ALEAW,
       ALEAVEL,
       ALEAVEW,
       ALOCK,
       ALODSB,
       ALODSL,
       ALODSW,
       ALONG,
       ALOOP,
       ALOOPEQ,
       ALOOPNE,
       ALSLL,
       ALSLW,
       AMOVB,
       AMOVL,
       AMOVW,
       AMOVBLSX,
       AMOVBLZX,
       AMOVBQSX,
       AMOVBQZX,
       AMOVBWSX,
       AMOVBWZX,
       AMOVWLSX,
       AMOVWLZX,
       AMOVWQSX,
       AMOVWQZX,
       AMOVSB,
       AMOVSL,
       AMOVSW,
       AMULB,
       AMULL,
       AMULW,
       ANAME,
       ANEGB,
       ANEGL,
       ANEGW,
       ANOP,
       ANOTB,
       ANOTL,
       ANOTW,
       AORB,
       AORL,
       AORW,
       AOUTB,
       AOUTL,
       AOUTW,
       AOUTSB,
       AOUTSL,
       AOUTSW,
       APOPAL,
       APOPAW,
       APOPFL,
       APOPFW,
       APOPL,
       APOPW,
       APUSHAL,
       APUSHAW,
       APUSHFL,
       APUSHFW,
       APUSHL,
       APUSHW,
       ARCLB,
       ARCLL,
       ARCLW,
       ARCRB,
       ARCRL,
       ARCRW,
       AREP,
       AREPN,
       ARET,
       AROLB,
       AROLL,
       AROLW,
       ARORB,
       ARORL,
       ARORW,
       ASAHF,
       ASALB,
       ASALL,
       ASALW,
       ASARB,
       ASARL,
       ASARW,
       ASBBB,
       ASBBL,
       ASBBW,
       ASCASB,
       ASCASL,
       ASCASW,
       ASETCC,
       ASETCS,
       ASETEQ,
       ASETGE,
       ASETGT,
       ASETHI,
       ASETLE,
       ASETLS,
       ASETLT,
       ASETMI,
       ASETNE,
       ASETOC,
       ASETOS,
       ASETPC,
       ASETPL,
       ASETPS,
       ACDQ,
       ACWD,
       ASHLB,
       ASHLL,
       ASHLW,
       ASHRB,
       ASHRL,
       ASHRW,
       ASTC,
       ASTD,
       ASTI,
       ASTOSB,
       ASTOSL,
       ASTOSW,
       ASUBB,
       ASUBL,
       ASUBW,
       ASYSCALL,
       ATESTB,
       ATESTL,
       ATESTW,
       ATEXT,
       AVERR,
       AVERW,
       AWAIT,
       AWORD,
       AXCHGB,
       AXCHGL,
       AXCHGW,
       AXLAT,
       AXORB,
       AXORL,
       AXORW,

       AFMOVB,
       AFMOVBP,
       AFMOVD,
       AFMOVDP,
       AFMOVF,
       AFMOVFP,
       AFMOVL,
       AFMOVLP,
       AFMOVV,
       AFMOVVP,
       AFMOVW,
       AFMOVWP,
       AFMOVX,
       AFMOVXP,

       AFCOMB,
       AFCOMBP,
       AFCOMD,
       AFCOMDP,
       AFCOMDPP,
       AFCOMF,
       AFCOMFP,
       AFCOML,
       AFCOMLP,
       AFCOMW,
       AFCOMWP,
       AFUCOM,
       AFUCOMP,
       AFUCOMPP,

       AFADDDP,
       AFADDW,
       AFADDL,
       AFADDF,
       AFADDD,

       AFMULDP,
       AFMULW,
       AFMULL,
       AFMULF,
       AFMULD,

       AFSUBDP,
       AFSUBW,
       AFSUBL,
       AFSUBF,
       AFSUBD,

       AFSUBRDP,
       AFSUBRW,
       AFSUBRL,
       AFSUBRF,
       AFSUBRD,

       AFDIVDP,
       AFDIVW,
       AFDIVL,
       AFDIVF,
       AFDIVD,

       AFDIVRDP,
       AFDIVRW,
       AFDIVRL,
       AFDIVRF,
       AFDIVRD,

       AFXCHD,
       AFFREE,

       AFLDCW,
       AFLDENV,
       AFRSTOR,
       AFSAVE,
       AFSTCW,
       AFSTENV,
       AFSTSW,

       AF2XM1,
       AFABS,
       AFCHS,
       AFCLEX,
       AFCOS,
       AFDECSTP,
       AFINCSTP,
       AFINIT,
       AFLD1,
       AFLDL2E,
       AFLDL2T,
       AFLDLG2,
       AFLDLN2,
       AFLDPI,
       AFLDZ,
       AFNOP,
       AFPATAN,
       AFPREM,
       AFPREM1,
       AFPTAN,
       AFRNDINT,
       AFSCALE,
       AFSIN,
       AFSINCOS,
       AFSQRT,
       AFTST,
       AFXAM,
       AFXTRACT,
       AFYL2X,
       AFYL2XP1,

       AEND,

       ADYNT,
       AINIT,

       ASIGNAME,

       /* extra 32-bit operations */
       ACMPXCHGB,
       ACMPXCHGL,
       ACMPXCHGW,
       ACMPXCHG8B,
       ACPUID,
       AINVD,
       AINVLPG,
       ALFENCE,
       AMFENCE,
       AMOVNTIL,
       ARDMSR,
       ARDPMC,
       ARDTSC,
       ARSM,
       ASFENCE,
       ASYSRET,
       AWBINVD,
       AWRMSR,
       AXADDB,
       AXADDL,
       AXADDW,

       /* conditional move */
       ACMOVLCC,
       ACMOVLCS,
       ACMOVLEQ,
       ACMOVLGE,
       ACMOVLGT,
       ACMOVLHI,
       ACMOVLLE,
       ACMOVLLS,
       ACMOVLLT,
       ACMOVLMI,
       ACMOVLNE,
       ACMOVLOC,
       ACMOVLOS,
       ACMOVLPC,
       ACMOVLPL,
       ACMOVLPS,
       ACMOVQCC,
       ACMOVQCS,
       ACMOVQEQ,
       ACMOVQGE,
       ACMOVQGT,
       ACMOVQHI,
       ACMOVQLE,
       ACMOVQLS,
       ACMOVQLT,
       ACMOVQMI,
       ACMOVQNE,
       ACMOVQOC,
       ACMOVQOS,
       ACMOVQPC,
       ACMOVQPL,
       ACMOVQPS,
       ACMOVWCC,
       ACMOVWCS,
       ACMOVWEQ,
       ACMOVWGE,
       ACMOVWGT,
       ACMOVWHI,
       ACMOVWLE,
       ACMOVWLS,
       ACMOVWLT,
       ACMOVWMI,
       ACMOVWNE,
       ACMOVWOC,
       ACMOVWOS,
       ACMOVWPC,
       ACMOVWPL,
       ACMOVWPS,

       /* 64-bit */
       AADCQ,
       AADDQ,
       AANDQ,
       ABSFQ,
       ABSRQ,
       ABTCQ,
       ABTQ,
       ABTRQ,
       ABTSQ,
       ACMPQ,
       ACMPSQ,
       ACMPXCHGQ,
       ACQO,
       ADIVQ,
       AIDIVQ,
       AIMULQ,
       AIRETQ,
       ALEAQ,
       ALEAVEQ,
       ALODSQ,
       AMOVQ,
       AMOVLQSX,
       AMOVLQZX,
       AMOVNTIQ,
       AMOVSQ,
       AMULQ,
       ANEGQ,
       ANOTQ,
       AORQ,
       APOPFQ,
       APOPQ,
       APUSHFQ,
       APUSHQ,
       ARCLQ,
       ARCRQ,
       AROLQ,
       ARORQ,
       AQUAD,
       ASALQ,
       ASARQ,
       ASBBQ,
       ASCASQ,
       ASHLQ,
       ASHRQ,
       ASTOSQ,
       ASUBQ,
       ATESTQ,
       AXADDQ,
       AXCHGQ,
       AXORQ,

       /* media */
       AADDPD,
       AADDPS,
       AADDSD,
       AADDSS,
       AANDNPD,
       AANDNPS,
       AANDPD,
       AANDPS,
       ACMPPD,
       ACMPPS,
       ACMPSD,
       ACMPSS,
       ACOMISD,
       ACOMISS,
       ACVTPD2PL,
       ACVTPD2PS,
       ACVTPL2PD,
       ACVTPL2PS,
       ACVTPS2PD,
       ACVTPS2PL,
       ACVTSD2SL,
       ACVTSD2SQ,
       ACVTSD2SS,
       ACVTSL2SD,
       ACVTSL2SS,
       ACVTSQ2SD,
       ACVTSQ2SS,
       ACVTSS2SD,
       ACVTSS2SL,
       ACVTSS2SQ,
       ACVTTPD2PL,
       ACVTTPS2PL,
       ACVTTSD2SL,
       ACVTTSD2SQ,
       ACVTTSS2SL,
       ACVTTSS2SQ,
       ADIVPD,
       ADIVPS,
       ADIVSD,
       ADIVSS,
       AEMMS,
       AFXRSTOR,
       AFXRSTOR64,
       AFXSAVE,
       AFXSAVE64,
       ALDMXCSR,
       AMASKMOVOU,
       AMASKMOVQ,
       AMAXPD,
       AMAXPS,
       AMAXSD,
       AMAXSS,
       AMINPD,
       AMINPS,
       AMINSD,
       AMINSS,
       AMOVAPD,
       AMOVAPS,
       AMOVOU,
       AMOVHLPS,
       AMOVHPD,
       AMOVHPS,
       AMOVLHPS,
       AMOVLPD,
       AMOVLPS,
       AMOVMSKPD,
       AMOVMSKPS,
       AMOVNTO,
       AMOVNTPD,
       AMOVNTPS,
       AMOVNTQ,
       AMOVO,
       AMOVQOZX,
       AMOVSD,
       AMOVSS,
       AMOVUPD,
       AMOVUPS,
       AMULPD,
       AMULPS,
       AMULSD,
       AMULSS,
       AORPD,
       AORPS,
       APACKSSLW,
       APACKSSWB,
       APACKUSWB,
       APADDB,
       APADDL,
       APADDQ,
       APADDSB,
       APADDSW,
       APADDUSB,
       APADDUSW,
       APADDW,
       APANDB,
       APANDL,
       APANDSB,
       APANDSW,
       APANDUSB,
       APANDUSW,
       APANDW,
       APAND,
       APANDN,
       APAVGB,
       APAVGW,
       APCMPEQB,
       APCMPEQL,
       APCMPEQW,
       APCMPGTB,
       APCMPGTL,
       APCMPGTW,
       APEXTRW,
       APFACC,
       APFADD,
       APFCMPEQ,
       APFCMPGE,
       APFCMPGT,
       APFMAX,
       APFMIN,
       APFMUL,
       APFNACC,
       APFPNACC,
       APFRCP,
       APFRCPIT1,
       APFRCPI2T,
       APFRSQIT1,
       APFRSQRT,
       APFSUB,
       APFSUBR,
       APINSRW,
       APMADDWL,
       APMAXSW,
       APMAXUB,
       APMINSW,
       APMINUB,
       APMOVMSKB,
       APMULHRW,
       APMULHUW,
       APMULHW,
       APMULLW,
       APMULULQ,
       APOR,
       APSADBW,
       APSHUFHW,
       APSHUFL,
       APSHUFLW,
       APSHUFW,
       APSLLO,
       APSLLL,
       APSLLQ,
       APSLLW,
       APSRAL,
       APSRAW,
       APSRLO,
       APSRLL,
       APSRLQ,
       APSRLW,
       APSUBB,
       APSUBL,
       APSUBQ,
       APSUBSB,
       APSUBSW,
       APSUBUSB,
       APSUBUSW,
       APSUBW,
       APSWAPL,
       APUNPCKHBW,
       APUNPCKHLQ,
       APUNPCKHQDQ,
       APUNPCKHWL,
       APUNPCKLBW,
       APUNPCKLLQ,
       APUNPCKLQDQ,
       APUNPCKLWL,
       APXOR,
       ARCPPS,
       ARCPSS,
       ARSQRTPS,
       ARSQRTSS,
       ASHUFPD,
       ASHUFPS,
       ASQRTPD,
       ASQRTPS,
       ASQRTSD,
       ASQRTSS,
       ASTMXCSR,
       ASUBPD,
       ASUBPS,
       ASUBSD,
       ASUBSS,
       AUCOMISD,
       AUCOMISS,
       AUNPCKHPD,
       AUNPCKHPS,
       AUNPCKLPD,
       AUNPCKLPS,
       AXORPD,
       AXORPS,

       APF2IW,
       APF2IL,
       API2FW,
       API2FL,
       ARETFW,
       ARETFL,
       ARETFQ,
       ASWAPGS,

       AMODE,

       AMOVQL,

       ALAST
};

enum
{

       D_AL            = 0,
       D_CL,
       D_DL,
       D_BL,
       D_SPB,
       D_BPB,
       D_SIB,
       D_DIB,
       D_R8B,
       D_R9B,
       D_R10B,
       D_R11B,
       D_R12B,
       D_R13B,
       D_R14B,
       D_R15B,

       D_AX            = 16,
       D_CX,
       D_DX,
       D_BX,
       D_SP,
       D_BP,
       D_SI,
       D_DI,
       D_R8,
       D_R9,
       D_R10,
       D_R11,
       D_R12,
       D_R13,
       D_R14,
       D_R15,

       D_AH            = 32,
       D_CH,
       D_DH,
       D_BH,

       D_F0            = 36,

       D_M0            = 44,

       D_X0            = 52,

       D_CS            = 68,
       D_SS,
       D_DS,
       D_ES,
       D_FS,
       D_GS,

       D_GDTR,         /* global descriptor table register */
       D_IDTR,         /* interrupt descriptor table register */
       D_LDTR,         /* local descriptor table register */
       D_MSW,          /* machine status word */
       D_TASK,         /* task register */

       D_CR            = 79,
       D_DR            = 95,
       D_TR            = 103,

       D_NONE          = 111,

       D_BRANCH        = 112,
       D_EXTERN        = 113,
       D_STATIC                = 114,
       D_AUTO          = 115,
       D_PARAM         = 116,
       D_CONST         = 117,
       D_FCONST        = 118,
       D_SCONST        = 119,
       D_ADDR          = 120,

       D_FILE,
       D_FILE1,

       D_INDIR,        /* additive */

       T_TYPE          = 1<<0,
       T_INDEX         = 1<<1,
       T_OFFSET        = 1<<2,
       T_FCONST        = 1<<3,
       T_SYM           = 1<<4,
       T_SCONST        = 1<<5,
       T_64    = 1<<6,

       REGARG          = D_BP, /* MIGHT CHANGE */
       REGRET          = D_AX,
       FREGRET         = D_X0,
       REGSP           = D_SP,
       REGTMP          = D_DI,
       REGEXT          = D_R15,        /* compiler allocates external registers R15 down */
       FREGMIN         = D_X0+5,       /* first register variable */
       FREGEXT         = D_X0+7        /* first external register */
};

/*
* this is the ranlib header
*/
#define SYMDEF  "__.SYMDEF"

/*
* this is the simulated IEEE floating point
*/
typedef struct  ieee    Ieee;
struct  ieee
{
       long    l;      /* contains ls-man      0xffffffff */
       long    h;      /* contains sign        0x80000000
                                   exp         0x7ff00000
                                   ms-man      0x000fffff */
};