long
    LIB_VECTSIZE = 6,
    LIB_RESERVED = 4,
    LIB_BASE	 = -LIB_VECTSIZE,
    LIB_USERDEF  = LIB_BASE - LIB_RESERVED * LIB_VECTSIZE,
    LIB_NONSTD	 = LIB_USERDEF,

    LIB_OPEN	 = -6,
    LIB_CLOSE	 = -12,
    LIB_EXPUNGE  = -18,
    LIB_EXTFUNC  = -24;

type
    Node_t = unknown 14,

    Library_t = struct {
	Node_t lib_Node;
	ushort lib_Flags;
	ushort lib_pad;
	uint lib_NegSize;
	uint lib_PosSize;
	uint lib_Version;
	uint lib_Revision;
	*char lib_IdString;
	ulong lib_Sum;
	uint lib_OpenCnt;
    };

ushort
    LIBF_SUMMING = 1 << 0,
    LIBF_CHANGED = 1 << 1,
    LIBF_SUMUSED = 1 << 2,
    LIBF_DELEXP  = 1 << 3;

extern
    AddLibrary(*Library_t lib)void,
    CloseLibrary(*Library_t lib)void,
    MakeFunctions(*byte target; **byte functionArray; *byte funcDispBase)ulong,
    MakeLibrary(**byte vectors; *byte structure, init; ulong dataSize;
		*SegList_t segList)*Library_t,
    OldOpenLibrary(*char name)*Library_t,
    OpenLibrary(*char name; ulong version)*Library_t,
    RemLibrary(*Library_t lib)uint,
    SetFunction(*Library_t lib; ulong funcOffset; *byte funcEntry)*byte,
    SumLibrary(*Library_t lib)void;
