#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  ! Copyright (C) 3L Ltd. 1987-1991
//     2
//     3  !
//     4  ! FLATTEN.IMP
//     5  !
//     6  ! Driver for Imp-to-Imp flattener using Imp77 pass1
//     7  !
//     8  ! Rev 005  15-Feb-26  FC    Forked from transputer Imp compiler driver
//     9  !
//    10
//    11  %externalstring(255)%fnspec Upper Case(%string (255) M)

extern _imp_string255 UPPERCASE(_imp_string255 M);

//    12  %externalstring(255)%fnspec Translate(%string (255) M)

extern _imp_string255 TRANSLATE(_imp_string255 M);

//    13  %routine Pstr(%string(255) s) ; print string(s) ; %end

static void PSTR(_imp_string255 S) {
  _imp_PRINTSTRING(
      *({
        __typeof__(_imp_string255) tmp = S /*q*/;
        (_imp_string255 *)&tmp;
      })
  );
  return;
} /* end of PSTR */

//    14  %routine Psym(%integer i) ; print symbol(i) ; %end

static void PSYM(int I) {
  _imp_PRINTSYMBOL(I);
  return;
} /* end of PSYM */

//    15
//    16  %externalstring(7) %spec P1 Version

extern _imp_string7 P1VERSION;

//    17
//    18  %own %string(31)  Compiler Id     = "IMP_transputer V1.4"

static _imp_string31 COMPILERID = _imp_str_init("IMP_transputer V1.4");

//    19  !%const %string (255)  Home Dir        = "\ti1v4\"
//    20  %const %string(255) Home Dir        = "\ti1v4\"

const _imp_string255 HOMEDIR = _imp_str_init("\\ti1v4\\");

//    21  !%const %string (255)  Include Env     = "3LI_INC"
//    22  %const %string(255) Include Env     = "3LI_INC"

const _imp_string255 INCLUDEENV = _imp_str_init("3LI_INC");

//    23

extern void FATALERROR(_imp_string255 S);

//    24  !%from LL  %include Common

extern void WARNINGMESSAGE(_imp_string255 S);

//    25  %include "Common.inc"

extern void PRINTIDENTIFICATION(void);

//  &1     ! Copyright (C) 3L Ltd. 1987-1992
//  &2
//  &3     !
//  &4     ! COMMON.INC
//  &5     !
//  &6     %end %of %list
//  &15
//  &16    %external %routine %spec Fatal Error          ( %string(255) S )
//  &17    %external %routine %spec Warning Message      ( %string(255) S )
//  &18    %external %routine %spec Print Identification
//  &19    %external %routine %spec Print Version Number
//  &20    %external %routine %spec CSR %alias "GATT_CSR"( %string(255) S )
//  &21
//  &22    %external %predicate %spec Diagnosing GATT %alias "GATT_DIAGNOSING"
//  &23
//  &24    %external %routine %spec Open LL Input %alias "GATT_OPEN_INPUT" %c
//  &25  +    ( %integer     Stream No, File Type, Flags,
//  &26  +      %string(255) Filename, Relname )
//  &27
//  &28    %external %routine %spec Open LL Output %alias "GATT_OPEN_OUTPUT" %c
//  &29  +    ( %integer     Stream No, File Type, Flags,
//  &30  +      %string(255) Filename, Relname )
//  &31
//  &32    %external %routine %spec Connect LL File %alias "LL_CONNECT_FILE" %c
//  &33  +    ( %integer Filetype,
//  &34  +               Flags,
//  &35  +      %string(255) Filename,
//  &36  +                   Relname,
//  &37  +      %integer Writeable,
//  &38  +      %integer %name Start Addr,
//  &39  +                     Bytes Mapped )
//  &40
//  &41    %external %routine %spec Disconnect LL file %alias "LL_DISCONNECT_FILE" %c
//  &42  +    ( %integer Address )
//  &43
//  &44    !'Writeable' states for Connect LL File
//  &45    %const %integer LL Read Only  = 0
//  &46    %const %integer LL Read Write = 1
//  &47
//  &48    !Flags
//  &49    %const %integer LL Nonfatal        Flag = 2
//  &50    %const %integer LL Trace           Flag = 4
//  &51    %const %integer LL Open Fail Msg   Flag = 8
//  &52
//  &53    !Filetypes
//  &54    %const %integer LL Binary              File = 1
//  &55    %const %integer LL IMP Include         File = 2
//  &56    %const %integer LL IMP Source          File = 3
//  &57    %const %integer LL Listing             File = 4
//  &58    %const %integer LL Pascal Source       File = 5
//  &59    %const %integer LL Text                File = 6
//  &60    %const %integer LL Null                File = 7
//  &61    %const %integer LL C Source            File = 8
//  &62    %const %integer LL Temporary           File = 9
//  &63    %const %integer LL BASIC Source        File = 10
//  &64    %const %integer LL Decoded Output      File = 11
//  &65    %const %integer LL Data                File = 12
//  &66    %const %integer LL Icode Asm           File = 13
//  &67    %const %integer LL I CODE Source       File = 14
//  &68    %const %integer LL F77 Source          File = 15
//  &69    %const %integer LL T4 Binary Object    File = 16
//  &70    %const %integer LL T4 Hex    Object    File = 17
//  &71
//  &72    %endoffile
//    26  !%from CG  %include Option3L        {option bits}

extern void PRINTVERSIONNUMBER(void);

//    27  %include "Option3L.inc"

extern void CSR(_imp_string255 S) __asm__("GATT_CSR");

//  &1     ! Copyright (C) 3L Ltd. 1987-1992
//  &2
//  &3     {Option flags for Lattice Logic compilers}
//  &4
//  &5     {Pass1}
//  &6
//  &7     %constinteger LL Mon       = 1<<0,   {enable monitoring atoms etc}
//  &8   +               LL Extend    = 1<<1,   {permit language extensions}
//  &9   +               LL Warn      = 1<<2,   {produce warning messages}
//  &10  +               LL List      = 1<<3,   {produce a listing}
//  &11  +               LL Pause     = 1<<4,   {pause after errors}
//  &12  +               LL Reference = 1<<5,   {give standard reference in errors}
//  &13  +               LL Notify    = 1<<6,   {give notification of extensions used}
//  &14  +               LL Report    = 1<<7,   {send messages to the terminal}
//  &15  +               LL Log       = 1<<8,   {logging enabled}
//  &16  +               LL Brief     = 1<<9,
//  &17  +               LL Anon      = 1<<10,  {add anonymous tags = LL PRIM}
//  &18  +               LL Level0    = 1<<29   {ANSII mode - no conformant arrays}
//  &19
//  &20    {Passes 2 & 3}
//  &21
//  &22    %constinteger LL Prim     = 1<<10,         {compiling PRIM file}
//  &23  +               LL Over     = 1<<11,         {check for overflow}
//  &24  +               LL Range    = 1<<12,         {check ranges}
//  &25  +               LL Stack    = 1<<13,         {check for stack overflow}
//  &26  +               LL Trusted  = 1<<14,
//  &27  +               LL Lines    = 1<<15,         {dump line tables}
//  &28  +               LL Vars     = 1<<16,         {dump variable tables}
//  &29  +               LL Trace    = 1<<17,         {dump block diagnostics}
//  &30  +               LL Records  = 1<<18,         {dump record tables}
//  &31  +               LL Assigned = 1<<19,         {check for unassigned variables}
//  &32  +               LL Decode   = 1<<20,         {generate decoding info}
//  &33  +               LL Array    = 1<<21,         {check array bounds}
//  &34  +               LL TraceP   = 1<<22,         {trace procedure in/out}
//  &35  +               LL TraceL   = 1<<23,         {trace lines}
//  &36  +               LL Case     = 1<<24          {case is significant in externals}
//  &37
//  &38    %constinteger LL Predef   = 1<<25,
//  &39  +               LL Disposed = 1<<26,         {check for use of disposed objects}
//  &40  +               LL Variants = 1<<27          {check use of variant records}
//  &41    %constinteger LL Command  = 1<<28          {generate a link command}
//  &42                                               { 1<<29 used by PASS1}
//  &43    %constinteger LL Knuth    = 1<<30          {allow funny strings}
//  &44    %constinteger LL Module   = 1<<31
//  &45
//  &46    %endoffile
//    28  !%from CG  %include P2P3            {pass 2/3 interface, for stream identifiers}

extern int DIAGNOSINGGATT(void) __asm__("GATT_DIAGNOSING");

//    29  %include "P2P3.inc"

extern void OPENLLINPUT(int STREAMNO, int FILETYPE, int FLAGS, _imp_string255 FILENAME,
                        _imp_string255 RELNAME) __asm__("GATT_OPEN_INPUT");

//  &1     ! Copyright (C) 3L Ltd. 1987-1992
//  &2
//  &3     !
//  &4     ! P2P3.INC
//  &5     !
//  &6     ! This file contains declarations of objects shared by Pass 2
//  &7     ! and Pass 3
//  &8     !
//  &9
//  &10    !
//  &11    ! Target transputer type codes. NOTE ALL NON-ZERO.
//  &12    !
//  &13    %const %integer Target T4         = 1,
//  &14  +                 Target T8         = 2,
//  &15  +                 Target T2         = 3
//  &16
//  &17    !
//  &18    ! IMP I/O Stream numbers
//  &19    !
//  &20    %const %integer Report  Stream    = 0,
//  &21  +                 Object  Stream    = 1,
//  &22  +                 Code    Stream    = 2,
//  &23  +                 Blocks  Stream    = 3
//  &24
//  &25    !
//  &26    ! Environmental constants and common limits
//  &27    !
//  &28    %const %integer Max Level         = 31,       {max static block nesting}
//  &29  +                 Max External Id   = 255       {longest external %alias}
//  &30
//  &31    %external %string(7) %spec Language Name      {Defined by the driver}
//  &32
//  &33    %external %integer %spec   Language           {Defined by the driver}
//  &34
//  &35    !
//  &36    ! Global information shared by the driver, pass 2, and pass 3.
//  &37    !
//  &38    %record %format Global Fm ( %c
//  &39  +    %string(255) %name Source File,
//  &40  +                       Module,
//  &41  +    %string(31)  %name Compiler Id,
//  &42  +    %integer Blocks,               {number of blocks in program}          %c
//  &43  +             Items,                {total no of labels/jumps}             %c
//  &44  +             Labels,               {no of labels}                         %c
//  &45  +             Flags,                {global attributes of the program}     %c
//  &46  +             Externals,            {last External No used by pass 2}      %c
//  &47  +             Local Xs,             {number of 'C' static functions}       %c
//  &48  +             Static Size,          {bytes in static (own) area}           %c
//  &49  +             Code   Size,          {bytes in code (program) area}         %c
//  &50  +             Const  Size,          {bytes in constant area}               %c
//  &51  +             Diag Area Size,       {bytes in diag area}                   %c
//  &52  +             General Areas,        {number of FORTRAN general areas}      %c
//  &53  +             Target,               {target transputer type; e.g. T4, T8}  %c
//  &54  +             Code Patch Sz,        {bytes left for linker to patch}       %c
//  &55  +             Data Patch Sz,        {bytes left for linker to patch}       %c
//  &56  +             Frag Array Size,      {size of dynamic Pass2 Frag array}     %c
//  &57  +             Module Patch Sz,      {bytes for module number patch}        %c
//  &58  +             Dspecs,               {number of external data specs}        %c
//  &59  +             Calls,                {total no. of local procedure calls}   %c
//  &60  +             BSS Size              {uninitialised OWNs, excl. gen. areas} %c
//  &61  + %or                               {overlay to allow record to grow}      %c
//  &62  +    %integer %array Pad(1:20)      {without recompiling the driver}       %c
//  &63  + )
//  &64
//  &65    !
//  &66    ! Global_Flags mask values
//  &67    !
//  &68    %constinteger Global Flag Binary     = 1<<0, {generate binary output file}
//  &69  +               Global Flag No Peep    = 1<<1, {control of p2 optimiser}
//  &70  +               Global Flag No Reorder = 1<<2, {control of p2 optimiser}
//  &71  +               Global Flag Bug 1      = 1<<3, {INT->FLOAT conversion on T8}
//  &72  +               Global Flag No Jump Opt= 1<<4, {control of p3 optimiser}
//  &73  +               Global Flag Line Stats = 1<<5, {line-by-line space monitoring}
//  &74  +               Global Flag Total Stats= 1<<6, {summary at end of pass 2}
//  &75  +               Global Flag Plumbing   = 1<<7, {print leak warning messages}
//  &76  +               Global Flag Debug Proc = 1<<8, {call debugger entry/exit proc}
//  &77  +               Global Flag Debug Line = 1<<9, {call debugger for each line}
//  &78  +               Global Flag Profile    = 1<<10,{call profiler}
//  &79  +               Global Flag SH         = 1<<11,{set: 16-bit shorts, else 32-bit}
//  &80  +               Global Flag BS         = 1<<12,{set: bytes signed, else unsigned}
//  &81  +               Global Flag SU         = 1<<13,{set: shorts unsigned, else signed}
//  &82  +               Global Flag Debug      = 1<<14,{generate tables for TBUG}
//  &83  +               Global Flag No Real Folding = 1<<15, {suppress float const folds}
//  &84  +               Global Flag Check Istack    = 1<<16, {chk I-code stk empty @'O'}
//  &85  +               Global Flag No ICB     = 1<<17 {suppress ICB, diags & events}
//  &86
//  &87    {Add new ones like this to minimise hassle with VDIFF}
//  &88    %const %integer Global Flag No Diags   = 1<<18 {suppress diagnostic area}
//  &89    %const %integer Global Flag No Trace   = 1<<19 {suppress traceback area}
//  &90    %const %integer Global Flag No Event   = 1<<20 {suppress event area}
//  &91    %const %integer Global Flag Lines      = 1<<21 {put src line info in obj file}
//  &92
//  &93    !
//  &94    ! Directive codes
//  &95    !
//  &96    %const %integer Dir Load = 1,
//  &97  +                 Dir Store = 2,
//  &98  +                 Dir j = 3,
//  &99  +                 Dir cj = 4,
//  &100 +                 Dir Label = 5,
//  &101 +                 Dir User Label = 6,
//  &102 +                 Dir Start Block = 7,
//  &103 +                 Dir End Block = 8,
//  &104 +                 Dir Call = 9,
//  &105 +                 Dir Code = 10,
//  &106 +                 Dir Line = 11,
//  &107 +                 Dir X Ref = 12,
//  &108 +                 Dir X Call = 13,
//  &109 +                 Dir Return = 14,
//  &110 +                 Dir Select Area = 15,
//  &111 +                 Dir Const = 16,
//  &112 +                 Dir LoadA = 17,
//  &113 +                 Dir X Ddef = 18,
//  &114 +                 Dir X Dspec = 19,
//  &115 +                 Dir Sw Def = 20,
//  &116 +                 Dir Sw Label = 21,
//  &117 +                 Dir Sw Vec = 22,
//  &118 +                 Dir X Dref = 23,
//  &119 +                 Dir Perm Call = 24,
//  &120 +                 Dir Include = 25,
//  &121 +                 Dir End Include = 26,
//  &122 +                 Dir Diagnose = 27,
//  &123 +                 Dir FunP = 28,
//  &124 +                 Dir X Proc Ptr = 29,
//  &125 +                 Dir X Area Def = 30,
//  &126 +                 Dir Common = 31,
//  &127 +                 Dir Position = 32,
//  &128 +                 Dir Area Fixup = 33,
//  &129 +                 Dir S Call = 34,
//  &130 +                 Dir Entry = 35,
//  &131 +                 Dir cj not = 36,
//  &132 +                 Dir Sw Jump = 37,
//  &133 +                 Dir Proc Link = 38
//  &134
//  &135         %constinteger Dir Debug Type   = 39,
//  &136 +                     Dir Debug Start  = 40,
//  &137 +                     Dir Debug Finish = 41,
//  &138 +                     Dir Debug Var    = 42,
//  &139 +                     Dir Debug Atype  = 43,
//  &140 +                     Dir Debug Fspec  = 44,
//  &141 +                     Dir Debug Ntype  = 45,
//  &142 +                     Dir Debug Add    = 46,
//  &143 +                     Dir Debug Etype  = 47,
//  &144 +                     Dir L Proc Ptr   = 48
//  &145
//  &146   %const %integer Dir BSS Disp = 49
//  &147
//  &148   %const %integer Last Dir = 49
//  &149
//  &150   !
//  &151   ! Codes used in Blocks Stream
//  &152   !
//  &153   %const %integer Blk End     = 0,   {end of nested block}
//  &154 +                 Blk Start   = 1,   {start of nested block}
//  &155 +                 Blk Local X = 2,   {current block is a 'C' static fn, give id}
//  &156 +                 Blk AreaSize= 3,   {pass size of general area to pass 3}
//  &157 +                 Blk Cache   = 4,   {cache heavily-used static data in frame}
//  &158 +                 Blk Attr    = 5,   {set block attributes}
//  &159 +                 Blk X Ref   = 6,   {define ident for Xno}
//  &160 +                 Blk X Pointed To=7,{mark extern fn <xno> as operand of C '&' op}
//  &161 +                 Blk Call    = 8,   {call to local procedure block <label>}
//  &162 +                 Blk X Call  = 9    {call to external procedure <xno>}
//  &163
//  &164   !
//  &165   ! Block Attribute bits
//  &166   !
//  &167   %const %integer %c
//  &168 +    Attr Inner Uses     = 1<<0,     {nested blocks use this ones local vars}
//  &169 +    Attr Uses Outer     = 1<<1,     {uses non-local variables: needs display}
//  &170 +    Attr Simple Display = 1<<2,     {Display is only 1 word: pass by value}
//  &171 +    Attr Calls          = 1<<3,     {block contains calls to other blocks}
//  &172 +    Attr Xdef           = 1<<4,     {block is an external procedure}
//  &173 +    Attr Needs Gp       = 1<<5,     {needs GLA base set up in display}
//  &174 +    Attr Internal Calls = 1<<6,     {block contains a non-external call}
//  &175 +    Attr Occam Ep       = 1<<7,     {block is main entry pt called from occam}
//  &176 +    Attr Dynamic Arrays = 1<<8,     {block contains dynamic array declarations}
//  &177 +    Attr Pointed To Fn  = 1<<9,     {017} {C fn used as operand of '&' op}
//  &178 +    Attr Zap Temp       = 1<<10     {018} {clear halfword temporary}
//  &179
//  &180   {PSR} %constinteger %c
//  &181 + {PSR}   Attr Raw SL    = 1<<11,     {Static link not processed}
//  &182 + {PSR}   Attr Old SL    = 1<<12      {Static link stored in old (param) location}
//  &183
//  &184         %const %integer %c
//  &185 +    Attr Invalid Link   = 1<<13,    {024} {gash link word in}
//  &186 +    Attr No Link Slot   = 1<<14,    {024} {address params without link offset}
//  &187 +    Attr Set Gp         = 1<<15     {026} {this block, OR ONE IT CALLS, needs GP}
//  &188
//  &189
//  &190   !
//  &191   ! Frame area codes
//  &192   !
//  &193   %const %integer   Code Area = 0,
//  &194 +                    Own Area = 1,
//  &195 +               Constant Area = 2,
//  &196 +                  Array Area = 3,   {directly addressible arrays}
//  &197 +                   Diag Area = 4,
//  &198 +                  Reloc Area = 5,
//  &199 +                Display Area = 6,
//  &200 +                Literal Area = 7,
//  &201 +                  Param Area = 8,   {arguments to current procedure}
//  &202 +                  Local Area = 9,   {local scalar variables of current proc}
//  &203 +               Argument Area = 10,  {displacement from Areg as base}
//  &204 +                  Dummy Area = 11,  {used when selecting general areas}
//  &205 +                  Cache Area = 12,  {copies of heavily-used static data words}
//  &206 +                    BSS Area = 13   {uninitialised part of OWN area}
//  &207
//  &208   %const %integer    Max Area = 13
//  &209
//  &210   %const %string(7) %array Area Id ( 0: Max Area ) =
//  &211 +    "Code", "Own", "Const", "Array", "Diag", "Reloc", "Display",
//  &212 +    "Literal", "Param", "Local", "Arg", "Dummy", "Cache", "BSS"
//  &213
//  &214   !
//  &215   ! Bits in Diag Area header word
//  &216   !
//  &217   %const %integer Diag Proc   = 1<<0
//  &218
//  &219          !
//  &220          ! Bits in Pass2 return status word
//  &221          !
//  &222          %const %integer Pass2 Error = 1<<0       {errors detected by Pass2}
//  &223
//  &224   %endoffile
//    30  !%from CG  %include Stream3L

extern void OPENLLOUTPUT(int STREAMNO, int FILETYPE, int FLAGS, _imp_string255 FILENAME,
                         _imp_string255 RELNAME) __asm__("GATT_OPEN_OUTPUT");

//    31  %include "Stream3L.inc"
//  &1     ! Copyright (C) 3L Ltd. 1987-1992
//  &2
//  &3     {stream definitions for passes 2 & 3}
//  &4
//  &5     %constinteger Source         = 1,   Predef In     = 2
//  &6
//  &7     %constinteger Icode In       = 1,   Icode Out     = 1,
//  &8   +               Icode In2      = 2,
//  &9   +               Report         = 0,
//  &10  +               Objectives Out = 1,   Objectives In = 1,  PrimObj In = 3,
//  &11  +               Directives Out = 2,   Directives In = 2,  PrimDir In = 4,
//  &12  +               Object Out     = 1,   Decode Out    = 3,
//  &13  +               Listing        = 7
//  &14
//  &15    %endoffile
//    32  !%from IMP %include Lognames

extern void CONNECTLLFILE(int FILETYPE, int FLAGS, _imp_string255 FILENAME, _imp_string255 RELNAME, int WRITEABLE,
                          int *STARTADDR, int *BYTESMAPPED) __asm__("LL_CONNECT_FILE");

//    33  !%from IMP %include Diag IO
//    34
//    35  %external %routine %spec Delete %alias "IMP_DELETE" ( %string(255) Filename )
//    36  %external %string(255) %fn %spec Get Env %alias "IMP___GET_ENV"(%string(255) s)
//    37
//    38  {
//    39  { Misc
//    40  {
//    41  %const %integer Predef  Stream = 2

extern void DISCONNECTLLFILE(int ADDRESS) __asm__("LL_DISCONNECT_FILE");

//    42  %const %integer Listing Stream = 7

extern _imp_string7 LANGUAGENAME;

//    43  %const %integer Yes = 1, No = 0

extern int LANGUAGE;

//    44  %const %integer Debugs Enabled = Yes   {Set to 'No' to inhibit the /? switch}

struct GLOBALFM {
  union {
    struct {
      _imp_string255 *SOURCEFILE;
      _imp_string255 *MODULE;
      _imp_string31 *COMPILERID;
      int BLOCKS;
      int ITEMS;
      int LABELS;
      int FLAGS;
      int EXTERNALS;
      int LOCALXS;
      int STATICSIZE;
      int CODESIZE;
      int CONSTSIZE;
      int DIAGAREASIZE;
      int GENERALAREAS;
      int TARGET;
      int CODEPATCHSZ;
      int DATAPATCHSZ;
      int FRAGARRAYSIZE;
      int MODULEPATCHSZ;
      int DSPECS;
      int CALLS;
      int BSSSIZE;
    };
    struct {
      int PAD[20];
    };
  };
};

//    45  %const %integer IO Error = {IMP event number} 9,
//    46+                 Special P2 Diag Bit = 1 << 31
//    47
//    48  { Default settings for various function flags
//    49  %const %integer Default Options     = LL Warn ! LL Report ! LL Over ! LL Predef,
//    50+                 Default Keep        = No,
//    51+                 Default Dump Dir    = No,
//    52+                 Default Want Log    = No,
//    53+                 Default Want Listing= No,
//    54+                 Default Want Obj    = Yes,
//    55+                 Default Want Bin    = Yes,
//    56+                 Default Want Hex    = No
//    57
//    58  %const %integer NTemps = 3   { Number of temp files needed }
//    59
//    60  %external %routine     %spec PASS1 ( %integer %name Stats, Faults,
//    61+                                      %integer Flags )
//    62  %external %integer %fn %spec PASS2 ( %integer Options, LL Options,
//    63+                                      %record(Global Fm) %name Global )
//    64  %own %integer Pass 2 Result
//    65
//    66  %external %string(255) %function Actual Include %alias "ACTINC" ( %string(255) M, F )
//    67     !
//    68     ! Handle "current place" form, ie null M
//    69     !
//    70     %result = F . ".INC" %if M = ""
//    71     M = Upper Case(M) . "_INC"
//    72     M = Get Env(M)
//    73     M = M . "\" %if M # ""
//    74     %result = M . F . ".INC"
//    75  %end
//    76
//    77  {###############################################}
//    78  {###############################################}
//    79  {###                                         ###}
//    80  {###   P R E D E F I N I T I O N   F I L E   ###}
//    81  {###                                         ###}
//    82  {###############################################}
//    83  {###############################################}
//    84
//    85  %external %routine %spec Open Store Input %alias "IMP_OPEN_STORE_INPUT" %c
//    86+                                           (%integer Stream, Loc, Len)
//    87
//    88  %include "IT4predef.inc"
//  &1     %const %integer Predef Size = 4853
//  &2     %const %byte %array Predef Data ( 1: 4853 ) =
//  &3   +  '%', 'p', 'r', 'i', 'm', '(', '1', ')', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r',
//  &4   +  'f', 'n', 's', 'p', 'e', 'c', ' ', 'A', 'd', 'd', 'r', '(', '%', 'n', 'a', 'm',
//  &5   +  'e', ' ', 'X', ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '3', ')', '%', 's', 't',
//  &6   +  'r', 'i', 'n', 'g', '(', '*', ')', '%', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ',
//  &7   +  'S', 't', 'r', 'i', 'n', 'g', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ',
//  &8   +  'A', ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '4', ')', '%', 'i', 'n', 't', 'e',
//  &9   +  'g', 'e', 'r', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'I', 'n', 't', 'e', 'g',
//  &10  +  'e', 'r', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')',  NL, '%',
//  &11  +  'p', 'r', 'i', 'm', '(', '5', ')', '%', 's', 'h', 'o', 'r', 't', 'm', 'a', 'p',
//  &12  +  's', 'p', 'e', 'c', ' ', 'S', 'h', 'o', 'r', 't', 'I', 'n', 't', 'e', 'g', 'e',
//  &13  +  'r', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')',  NL, '%', 'p',
//  &14  +  'r', 'i', 'm', '(', '5', ')', '%', 's', 'h', 'o', 'r', 't', 'm', 'a', 'p', 's',
//  &15  +  'p', 'e', 'c', ' ', 'S', 'h', 'o', 'r', 't', '(', '%', 'i', 'n', 't', 'e', 'g',
//  &16  +  'e', 'r', ' ', 'A', ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '6', ')', '%', 'b',
//  &17  +  'y', 't', 'e', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'B', 'y', 't', 'e', 'I',
//  &18  +  'n', 't', 'e', 'g', 'e', 'r', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ',
//  &19  +  'A', ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '6', ')', '%', 'b', 'y', 't', 'e',
//  &20  +  'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'B', 'y', 't', 'e', '(', '%', 'i', 'n',
//  &21  +  't', 'e', 'g', 'e', 'r', ' ', 'A', ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '7',
//  &22  +  ')', '%', 'r', 'e', 'a', 'l', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'R', 'e',
//  &23  +  'a', 'l', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')',  NL, '%',
//  &24  +  'p', 'r', 'i', 'm', '(', '8', ')', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l',
//  &25  +  'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'L', 'o', 'n', 'g', 'R', 'e', 'a', 'l',
//  &26  +  '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')',  NL, '%', 'p', 'r',
//  &27  +  'i', 'm', '(', '9', ')', '%', 'r', 'e', 'c', 'o', 'r', 'd', '(', '*', ')', '%',
//  &28  +  'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'R', 'e', 'c', 'o', 'r', 'd', '(', '%',
//  &29  +  'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')',  NL, '%', 'p', 'r', 'i', 'm',
//  &30  +  '(', '1', '1', ')', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p',
//  &31  +  'e', 'c', ' ', 'R', 'e', 'm', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ',
//  &32  +  'A', ',', 'B', ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '1', '2', ')', '%', 'b',
//  &33  +  'y', 't', 'e', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'L', 'e', 'n', 'g', 't',
//  &34  +  'h', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S', ')',
//  &35  +   NL, '%', 'p', 'r', 'i', 'm', '(', '1', '3', ')', '%', 'b', 'y', 't', 'e', 'm',
//  &36  +  'a', 'p', 's', 'p', 'e', 'c', ' ', 'C', 'h', 'a', 'r', 'n', 'o', '(', '%', 's',
//  &37  +  't', 'r', 'i', 'n', 'g', '(', '*', ')', '%', 'n', 'a', 'm', 'e', ' ', 'S', ',',
//  &38  +  '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ')',  NL, '%', 'p', 'r', 'i',
//  &39  +  'm', '(', '1', '4', ')', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '1', ')', '%',
//  &40  +  'f', 'n', 's', 'p', 'e', 'c', ' ', 'S', 'N', 'L',  NL, '%', 'p', 'r', 'i', 'm',
//  &41  +  '(', '1', '5', ')', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '1', ')', '%', 'f',
//  &42  +  'n', 's', 'p', 'e', 'c', ' ', 'T', 'o', 'S', 't', 'r', 'i', 'n', 'g', '(', '%',
//  &43  +  'b', 'y', 't', 'e', ' ', 'N', ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '1', '6',
//  &44  +  ')', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ',
//  &45  +  'S', 'i', 'z', 'e', 'O', 'f', '(', '%', 'n', 'a', 'm', 'e', ' ', 'N', ')',  NL,
//  &46  +  '%', 'p', 'r', 'i', 'm', '(', '1', '7', ')', '%', 'i', 'n', 't', 'e', 'g', 'e',
//  &47  +  'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'T', 'y', 'p', 'e', 'O', 'f', '(', '%',
//  &48  +  'n', 'a', 'm', 'e', ' ', 'N', ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '2', '0',
//  &49  +  ')', '%', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'R', 'e',
//  &50  +  'a', 'd', 'S', 'y', 'm', 'b', 'o', 'l', '(', '%', 'n', 'a', 'm', 'e', ' ', 'N',
//  &51  +  ')',  NL, '%', 'p', 'r', 'i', 'm', '(', '2', '1', ')', '%', 'r', 'o', 'u', 't',
//  &52  +  'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'S', 'k', 'i', 'p', 'S', 'y', 'm', 'b',
//  &53  +  'o', 'l',  NL, '%', 'c', 'o', 'n', 's', 't', 'r', 'e', 'c', 'o', 'r', 'd', '(',
//  &54  +  '*', ')', '%', 'n', 'a', 'm', 'e', ' ', 'N', 'I', 'L', '=', '=', '0',  NL, '%',
//  &55  +  'c', 'o', 'n', 's', 't', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', 'L', '=',
//  &56  +  '1', '0',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
//  &57  +  'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'S', 'p', 'a', 'c', 'e', '%', 'a', 'l',
//  &58  +  'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'S', 'P', 'A', 'C', 'E', '"',  NL, '%',
//  &59  +  'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's',
//  &60  +  'p', 'e', 'c', ' ', 'N', 'e', 'w', 'L', 'i', 'n', 'e', '%', 'a', 'l', 'i', 'a',
//  &61  +  's', '"', 'I', 'M', 'P', '_', 'N', 'E', 'W', '_', 'L', 'I', 'N', 'E', '"',  NL,
//  &62  +  '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e',
//  &63  +  's', 'p', 'e', 'c', ' ', 'N', 'e', 'w', 'L', 'i', 'n', 'e', 's', '%', 'a', 'l',
//  &64  +  'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'N', 'E', 'W', '_', 'L', 'I', 'N', 'E',
//  &65  +  'S', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ')',  NL, '%',
//  &66  +  'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's',
//  &67  +  'p', 'e', 'c', ' ', 'N', 'e', 'w', 'P', 'a', 'g', 'e', '%', 'a', 'l', 'i', 'a',
//  &68  +  's', '"', 'I', 'M', 'P', '_', 'N', 'E', 'W', '_', 'P', 'A', 'G', 'E', '"',  NL,
//  &69  +  '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e',
//  &70  +  's', 'p', 'e', 'c', ' ', 'S', 'p', 'a', 'c', 'e', 's', '%', 'a', 'l', 'i', 'a',
//  &71  +  's', '"', 'I', 'M', 'P', '_', 'S', 'P', 'A', 'C', 'E', 'S', '"', '(', '%', 'i',
//  &72  +  'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ')',  NL, '%', 'e', 'x', 't', 'e', 'r',
//  &73  +  'n', 'a', 'l', 'b', 'y', 't', 'e', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'N', 'e',
//  &74  +  'x', 't', 'S', 'y', 'm', 'b', 'o', 'l', '%', 'a', 'l', 'i', 'a', 's', '"', 'I',
//  &75  +  'M', 'P', '_', 'N', 'E', 'X', 'T', '_', 'S', 'Y', 'M', 'B', 'O', 'L', '"',  NL,
//  &76  +  '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e',
//  &77  +  's', 'p', 'e', 'c', ' ', 'P', 'r', 'i', 'n', 't', 'S', 'y', 'm', 'b', 'o', 'l',
//  &78  +  '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'P', 'R', 'I', 'N', 'T',
//  &79  +  '_', 'S', 'Y', 'M', 'B', 'O', 'L', '"', '(', '%', 'b', 'y', 't', 'e', ' ', 'S',
//  &80  +  'y', 'm', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u',
//  &81  +  't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r', 'i', 'n', 't', 'S', 't',
//  &82  +  'r', 'i', 'n', 'g', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'P',
//  &83  +  'R', 'I', 'N', 'T', '_', 'S', 'T', 'R', 'I', 'N', 'G', '"', '(', '%', 's', 't',
//  &84  +  'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S', ')',  NL, '%', 'e', 'x', 't',
//  &85  +  'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c',
//  &86  +  ' ', 'W', 'r', 'i', 't', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P',
//  &87  +  '_', 'W', 'R', 'I', 'T', 'E', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r',
//  &88  +  ' ', 'N', ',', 'P', 'l', 'a', 'c', 'e', 's', ')',  NL, '%', 'e', 'x', 't', 'e',
//  &89  +  'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', '%',
//  &90  +  'f', 'n', 's', 'p', 'e', 'c', ' ', 'S', 'u', 'b', 'S', 't', 'r', 'i', 'n', 'g',
//  &91  +  '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'S', 'U', 'B', '_', 'S',
//  &92  +  'T', 'R', 'I', 'N', 'G', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2',
//  &93  +  '5', '5', ')', 'S', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'F', 'r',
//  &94  +  'o', 'm', ',', 'T', 'o', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
//  &95  +  's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'n', 's', 'p',
//  &96  +  'e', 'c', ' ', 'I', 'T', 'o', 'S', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
//  &97  +  'P', '_', 'I', '_', 'T', 'O', '_', 'S', '"', '(', '%', 'i', 'n', 't', 'e', 'g',
//  &98  +  'e', 'r', ' ', 'N', ',', 'P', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a',
//  &99  +  'l', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'S',
//  &100 +  'T', 'o', 'I', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'S', '_',
//  &101 +  'T', 'O', '_', 'I', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5',
//  &102 +  '5', ')', 'S', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'p', 'r',
//  &103 +  'e', 'd', 'i', 'c', 'a', 't', 'e', 's', 'p', 'e', 'c', ' ', 'E', 'n', 'd', 'O',
//  &104 +  'f', 'I', 'n', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P',
//  &105 +  '_', 'E', 'N', 'D', '_', 'O', 'F', '_', 'I', 'N', 'P', 'U', 'T', '"',  NL, '%',
//  &106 +  'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f',
//  &107 +  'n', 's', 'p', 'e', 'c', ' ', 'I', 'n', 'p', 'u', 't', 'S', 't', 'r', 'e', 'a',
//  &108 +  'm', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'I', 'N', 'P', 'U',
//  &109 +  'T', '_', 'S', 'T', 'R', 'E', 'A', 'M', '"',  NL, '%', 'e', 'x', 't', 'e', 'r',
//  &110 +  'n', 'a', 'l', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c',
//  &111 +  ' ', 'O', 'u', 't', 'p', 'u', 't', 'S', 't', 'r', 'e', 'a', 'm', '%', 'a', 'l',
//  &112 +  'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'O', 'U', 'T', 'P', 'U', 'T', '_', 'S',
//  &113 +  'T', 'R', 'E', 'A', 'M', '"',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
//  &114 +  'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'S', 'e', 'l', 'e',
//  &115 +  'c', 't', 'I', 'n', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
//  &116 +  'P', '_', 'S', 'E', 'L', 'E', 'C', 'T', '_', 'I', 'N', 'P', 'U', 'T', '"', '(',
//  &117 +  '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ')',  NL, '%', 'e', 'x', 't',
//  &118 +  'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c',
//  &119 +  ' ', 'S', 'e', 'l', 'e', 'c', 't', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l',
//  &120 +  'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'S', 'E', 'L', 'E', 'C', 'T', '_', 'O',
//  &121 +  'U', 'T', 'P', 'U', 'T', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ',
//  &122 +  'N', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
//  &123 +  'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'C', 'l', 'o', 's', 'e', 'I', 'n', 'p',
//  &124 +  'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'C', 'L', 'O',
//  &125 +  'S', 'E', '_', 'I', 'N', 'P', 'U', 'T', '"',  NL, '%', 'e', 'x', 't', 'e', 'r',
//  &126 +  'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'C',
//  &127 +  'l', 'o', 's', 'e', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's',
//  &128 +  '"', 'I', 'M', 'P', '_', 'C', 'L', 'O', 'S', 'E', '_', 'O', 'U', 'T', 'P', 'U',
//  &129 +  'T', '"',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
//  &130 +  'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r', 'o', 'm', 'p', 't', '%', 'a',
//  &131 +  'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'P', 'R', 'O', 'M', 'P', 'T', '"',
//  &132 +  '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S', ')',  NL,
//  &133 +  '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'e', 'c', 'o', 'r', 'd', '(',
//  &134 +  '*', ')', '%', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'N', 'e', 'w', '%', 'a',
//  &135 +  'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'N', 'E', 'W', '"', '(', '%', 'n',
//  &136 +  'a', 'm', 'e', ' ', 'T', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
//  &137 +  'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'D', 'i', 's', 'p',
//  &138 +  'o', 's', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'D', 'I',
//  &139 +  'S', 'P', 'O', 'S', 'E', '"', '(', '%', 'n', 'a', 'm', 'e', ' ', 'X', ')',  NL,
//  &140 +  '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e',
//  &141 +  's', 'p', 'e', 'c', ' ', 'R', 'e', 'a', 'd', '%', 'a', 'l', 'i', 'a', 's', '"',
//  &142 +  'I', 'M', 'P', '_', 'R', 'E', 'A', 'D', '"', '(', '%', 'n', 'a', 'm', 'e', ' ',
//  &143 +  'N', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
//  &144 +  'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'R', 'e', 's', 'e', 't', 'I', 'n', 'p',
//  &145 +  'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'R', 'E', 'S',
//  &146 +  'E', 'T', '_', 'I', 'N', 'P', 'U', 'T', '"',  NL, '%', 'e', 'x', 't', 'e', 'r',
//  &147 +  'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'R',
//  &148 +  'e', 's', 'e', 't', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's',
//  &149 +  '"', 'I', 'M', 'P', '_', 'R', 'E', 'S', 'E', 'T', '_', 'O', 'U', 'T', 'P', 'U',
//  &150 +  'T', '"',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'i', 'n', 't', 'e',
//  &151 +  'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'I', 'n', 't', '%', 'a', 'l',
//  &152 +  'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'I', 'N', 'T', '"', '(', '%', 'l', 'o',
//  &153 +  'n', 'g', 'r', 'e', 'a', 'l', ' ', 'X', ')',  NL, '%', 'e', 'x', 't', 'e', 'r',
//  &154 +  'n', 'a', 'l', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c',
//  &155 +  ' ', 'I', 'n', 't', 'P', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P',
//  &156 +  '_', 'I', 'N', 'T', '_', 'P', 'T', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e',
//  &157 +  'a', 'l', ' ', 'X', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'i',
//  &158 +  'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'T', 'r', 'u',
//  &159 +  'n', 'c', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'T', 'R', 'U',
//  &160 +  'N', 'C', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'X', ')',
//  &161 +   NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n',
//  &162 +  'e', 's', 'p', 'e', 'c', ' ', 'P', 'r', 'i', 'n', 't', '%', 'a', 'l', 'i', 'a',
//  &163 +  's', '"', 'I', 'M', 'P', '_', 'P', 'R', 'I', 'N', 'T', '"', '(', '%', 'l', 'o',
//  &164 +  'n', 'g', 'r', 'e', 'a', 'l', ' ', 'X', ',', '%', 'i', 'n', 't', 'e', 'g', 'e',
//  &165 +  'r', ' ', 'A', ',', 'B', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
//  &166 +  'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r', 'i', 'n',
//  &167 +  't', 'F', 'l', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'P', 'R',
//  &168 +  'I', 'N', 'T', '_', 'F', 'L', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a',
//  &169 +  'l', ' ', 'X', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'P', 'l', 'a',
//  &170 +  'c', 'e', 's', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o',
//  &171 +  'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'O', 'p', 'e', 'n', 'I', 'n',
//  &172 +  'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'O', 'P',
//  &173 +  'E', 'N', '_', 'I', 'N', 'P', 'U', 'T', '"', '(', '%', 'i', 'n', 't', 'e', 'g',
//  &174 +  'e', 'r', ' ', 'S', 't', 'r', 'e', 'a', 'm', ',', '%', 's', 't', 'r', 'i', 'n',
//  &175 +  'g', '(', '2', '5', '5', ')', 'F', 'i', 'l', 'e', ')',  NL, '%', 'e', 'x', 't',
//  &176 +  'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c',
//  &177 +  ' ', 'O', 'p', 'e', 'n', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a',
//  &178 +  's', '"', 'I', 'M', 'P', '_', 'O', 'P', 'E', 'N', '_', 'O', 'U', 'T', 'P', 'U',
//  &179 +  'T', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'S', 't', 'r', 'e',
//  &180 +  'a', 'm', ',', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'F',
//  &181 +  'i', 'l', 'e', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o',
//  &182 +  'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'O', 'p', 'e', 'n', 'B', 'i',
//  &183 +  'n', 'a', 'r', 'y', 'I', 'n', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '-',
//  &184 +   NL, '"', 'I', 'M', 'P', '_', 'O', 'P', 'E', 'N', '_', 'B', 'I', 'N', 'A', 'R',
//  &185 +  'Y', '_', 'I', 'N', 'P', 'U', 'T', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e',
//  &186 +  'r', ' ', 'S', 't', 'r', 'e', 'a', 'm', ',', '%', 's', 't', 'r', 'i', 'n', 'g',
//  &187 +  '(', '2', '5', '5', ')', 'F', 'i', 'l', 'e', ')',  NL, '%', 'e', 'x', 't', 'e',
//  &188 +  'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ',
//  &189 +  'O', 'p', 'e', 'n', 'B', 'i', 'n', 'a', 'r', 'y', 'O', 'u', 't', 'p', 'u', 't',
//  &190 +  '%', 'a', 'l', 'i', 'a', 's', '-',  NL, '"', 'I', 'M', 'P', '_', 'O', 'P', 'E',
//  &191 +  'N', '_', 'B', 'I', 'N', 'A', 'R', 'Y', '_', 'O', 'U', 'T', 'P', 'U', 'T', '"',
//  &192 +  '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'S', 't', 'r', 'e', 'a', 'm',
//  &193 +  ',', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'F', 'i', 'l',
//  &194 +  'e', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
//  &195 +  'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'R', 'e', 'a', 'd', 'L', 'i', 'n', 'e',
//  &196 +  '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'R', 'E', 'A', 'D', '_',
//  &197 +  'L', 'I', 'N', 'E', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '*', ')',
//  &198 +  '%', 'n', 'a', 'm', 'e', ' ', 'S', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n',
//  &199 +  'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'T', 'o',
//  &200 +  'U', 'p', 'p', 'e', 'r', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
//  &201 +  'T', 'O', '_', 'U', 'P', 'P', 'E', 'R', '"', '(', '%', 's', 't', 'r', 'i', 'n',
//  &202 +  'g', '(', '*', ')', '%', 'n', 'a', 'm', 'e', ' ', 'S', ')',  NL, '%', 'e', 'x',
//  &203 +  't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e',
//  &204 +  'c', ' ', 'T', 'o', 'L', 'o', 'w', 'e', 'r', '%', 'a', 'l', 'i', 'a', 's', '"',
//  &205 +  'I', 'M', 'P', '_', 'T', 'O', '_', 'L', 'O', 'W', 'E', 'R', '"', '(', '%', 's',
//  &206 +  't', 'r', 'i', 'n', 'g', '(', '*', ')', '%', 'n', 'a', 'm', 'e', ' ', 'S', ')',
//  &207 +   NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g',
//  &208 +  '(', '2', '5', '5', ')', '%', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', 'p',
//  &209 +  'e', 'c', ' ', 'L', 'O', 'W', 'E', 'R', 'C', 'A', 'S', 'E', '%', 'a', 'l', 'i',
//  &210 +  'a', 's', '"', 'I', 'M', 'P', '_', 'L', 'O', 'W', 'E', 'R', '_', 'C', 'A', 'S',
//  &211 +  'E', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S',
//  &212 +  ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n',
//  &213 +  'g', '(', '2', '5', '5', ')', '%', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's',
//  &214 +  'p', 'e', 'c', ' ', 'U', 'P', 'P', 'E', 'R', 'C', 'A', 'S', 'E', '%', 'a', 'l',
//  &215 +  'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'U', 'P', 'P', 'E', 'R', '_', 'C', 'A',
//  &216 +  'S', 'E', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')',
//  &217 +  'S', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i',
//  &218 +  'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'I',
//  &219 +  'n', 'p', 'u', 't', 'N', 'a', 'm', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I',
//  &220 +  'M', 'P', '_', 'I', 'N', 'P', 'U', 'T', '_', 'N', 'A', 'M', 'E', '"',  NL, '%',
//  &221 +  'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g', '(', '2',
//  &222 +  '5', '5', ')', '%', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'O', 'u', 't', 'p', 'u',
//  &223 +  't', 'N', 'a', 'm', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
//  &224 +  'O', 'U', 'T', 'P', 'U', 'T', '_', 'N', 'A', 'M', 'E', '"',  NL, '%', 'e', 'x',
//  &225 +  't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e',
//  &226 +  'c', ' ', 'A', 'b', 'a', 'n', 'd', 'o', 'n', 'I', 'n', 'p', 'u', 't', '%', 'a',
//  &227 +  'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'A', 'B', 'A', 'N', 'D', 'O', 'N',
//  &228 +  '_', 'I', 'N', 'P', 'U', 'T', '"',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a',
//  &229 +  'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'C', 'o', 'm',
//  &230 +  'p', 'l', 'e', 't', 'e', 'I', 'n', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's',
//  &231 +  '"', 'I', 'M', 'P', '_', 'C', 'O', 'M', 'P', 'L', 'E', 'T', 'E', '_', 'I', 'N',
//  &232 +  'P', 'U', 'T', '"',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o',
//  &233 +  'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'A', 'b', 'a', 'n', 'd', 'o',
//  &234 +  'n', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
//  &235 +  'P', '_', 'A', 'B', 'A', 'N', 'D', 'O', 'N', '_', 'O', 'U', 'T', 'P', 'U', 'T',
//  &236 +  '"',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i',
//  &237 +  'n', 'e', 's', 'p', 'e', 'c', ' ', 'C', 'o', 'm', 'p', 'l', 'e', 't', 'e', 'O',
//  &238 +  'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
//  &239 +  'C', 'O', 'M', 'P', 'L', 'E', 'T', 'E', '_', 'O', 'U', 'T', 'P', 'U', 'T', '"',
//  &240 +   NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g',
//  &241 +  '(', '2', '5', '5', ')', '%', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', 'p',
//  &242 +  'e', 'c', ' ', 'D', 'A', 'T', 'E', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
//  &243 +  'P', '_', 'D', 'A', 'T', 'E', '"',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a',
//  &244 +  'l', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'u', 'n',
//  &245 +  'c', 't', 'i', 'o', 'n', 's', 'p', 'e', 'c', ' ', 'T', 'I', 'M', 'E', '%', 'a',
//  &246 +  'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'T', 'I', 'M', 'E', '"',  NL, '%',
//  &247 +  'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l',
//  &248 +  'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', 'p', 'e', 'c', ' ', 'C', 'P', 'U',
//  &249 +  'T', 'i', 'm', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'C',
//  &250 +  'P', 'U', '_', 'T', 'I', 'M', 'E', '"',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n',
//  &251 +  'a', 'l', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', 'f', 'n', 's', 'p', 'e', 'c',
//  &252 +  ' ', 'S', 'T', 'o', 'R', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
//  &253 +  'S', '_', 'T', 'O', '_', 'R', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(',
//  &254 +  '2', '5', '5', ')', 'S', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
//  &255 +  's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'n', 's', 'p',
//  &256 +  'e', 'c', ' ', 'R', 'T', 'o', 'S', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
//  &257 +  'P', '_', 'R', '_', 'T', 'O', '_', 'S', '"', '(', '%', 'l', 'o', 'n', 'g', 'r',
//  &258 +  'e', 'a', 'l', ' ', 'X', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N',
//  &259 +  ',', 'O', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r',
//  &260 +  'i', 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'n', 's', 'p', 'e', 'c', ' ',
//  &261 +  'F', 'T', 'o', 'S', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'F',
//  &262 +  '_', 'T', 'O', '_', 'S', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l',
//  &263 +  ' ', 'X', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ',', 'O', ')',
//  &264 +   NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'p', 'r', 'e', 'd', 'i', 'c',
//  &265 +  'a', 't', 'e', 's', 'p', 'e', 'c', ' ', 'I', 'n', 't', 'e', 'r', 'r', 'u', 'p',
//  &266 +  't', 'e', 'd', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'I', 'N',
//  &267 +  'T', 'E', 'R', 'R', 'U', 'P', 'T', 'E', 'D', '"',  NL, '%', 'e', 'x', 't', 'e',
//  &268 +  'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ',
//  &269 +  'D', 'o', 'i', 'n', 'g', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
//  &270 +  'D', 'O', 'I', 'N', 'G', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2',
//  &271 +  '5', '5', ')', 'S', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'i',
//  &272 +  'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'R', 'o', 'u',
//  &273 +  'n', 'd', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'R', 'O', 'U',
//  &274 +  'N', 'D', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'R', ')',
//  &275 +   NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'l', 'o', 'n', 'g', 'r', 'e',
//  &276 +  'a', 'l', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'F', 'r', 'a', 'c', 'P', 't', '%',
//  &277 +  'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'F', 'R', 'A', 'C', '_', 'P',
//  &278 +  'T', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'R', ')',  NL,
//  &279 +  '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'l', 'o', 'n', 'g', 'r', 'e', 'a',
//  &280 +  'l', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n',
//  &281 +  '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'F', 'R', 'A', 'C', 'T',
//  &282 +  'I', 'O', 'N', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'R',
//  &283 +  ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'l', 'o', 'n', 'g', 'r',
//  &284 +  'e', 'a', 'l', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'F', 'l', 'o', 'a', 't', '%',
//  &285 +  'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'F', 'L', 'O', 'A', 'T', '"',
//  &286 +  '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'R', ')',  NL, '%', 'e',
//  &287 +  'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5',
//  &288 +  '5', ')', '%', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'T', 'r', 'i', 'm', '%', 'a',
//  &289 +  'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'T', 'R', 'I', 'M', '"', '(', '%',
//  &290 +  's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S', ',', '%', 'i', 'n',
//  &291 +  't', 'e', 'g', 'e', 'r', ' ', 'M', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n',
//  &292 +  'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r',
//  &293 +  'i', 'n', 't', 'F', 'l', 'o', 'a', 't', 'i', 'n', 'g', '%', 'a', 'l', 'i', 'a',
//  &294 +  's', '"', 'I', 'M', 'P', '_', 'P', 'R', 'I', 'N', 'T', '_', 'F', 'L', 'O', 'A',
//  &295 +  'T', 'I', 'N', 'G', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ',
//  &296 +  'R', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'P', ',', 'Q', ')',  NL,
//  &297 +  '%', 'r', 'e', 'c', 'o', 'r', 'd', 'f', 'o', 'r', 'm', 'a', 't', ' ', 'E', 'v',
//  &298 +  'e', 'n', 't', 'F', 'm', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'E',
//  &299 +  'v', 'e', 'n', 't', ',', 'S', 'u', 'b', ',', 'E', 'x', 't', 'r', 'a', ',', '%',
//  &300 +  's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'M', 'e', 's', 's', 'a',
//  &301 +  'g', 'e', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'P', 'C', ',', 'W',
//  &302 +  'r', 'e', 'g', ')',  NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'e',
//  &303 +  'c', 'o', 'r', 'd', '(', 'E', 'v', 'e', 'n', 't', 'F', 'm', ')', '%', 's', 'p',
//  &304 +  'e', 'c', ' ', 'E', 'v', 'e', 'n', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I',
//  &305 +  'M', 'P', '_', 'E', 'V', 'E', 'N', 'T', '"',  NL, '%', 'e', 'n', 'd', 'o', 'f',
//  &306 +  'p', 'e', 'r', 'm',  NL
//  &307
//  &308   %endoffile
//    89  !015!%include IT4predef
//    90  !015!%include IT4prede
//    91
//    92  %integer %fn First El (%byte %array %name B)
//    93     %result = Addr(B(1))
//    94  %end
//    95
//    96  !T!%routine Show (%string(255) S)
//    97  !T!   Pstr(S); Psym (NL)
//    98  !T!%end
//    99
//   100  { ******************************************* }
//   101  {         Temporary file manipulation         }
//   102  { ******************************************* }
//   103  %own %byte %array Existing Temps (1:NTemps) = No(*)
//   104  %own %integer Keep = Default Keep
//   105  {
//   106  { Return name for temporary file N
//   107  %string(12) %fn Temp Fn (%integer File)
//   108     %result = "ITEMP." . Itos (File,0)
//   109  %end
//   110  {
//   111  { Delete temporary if exists and unless we are keeping them
//   112  %routine Delete Temp (%integer File)
//   113     %if Existing Temps (File) = Yes %and Keep = No %start
//   114        Delete (Temp Fn(File))
//   115        Existing Temps (File) = No
//   116     %finish
//   117  %end
//   118  {
//   119  { Open temporary file N for output
//   120  %routine Open Temp Output (%integer Stream, File)
//   121     %on %event IO Error %start
//   122        Fatal Error ("unable to create temporary file")
//   123     %finish
//   124     Open Binary Output (Stream, Temp Fn(File))
//   125     Existing Temps (File) = Yes
//   126  %end
//   127  {
//   128  { Open temporary file N for input
//   129  %routine Open Temp Input (%integer Stream, File)
//   130     %on %event IO Error %start
//   131        Fatal Error ("unable to access temporary file")
//   132     %finish
//   133     Open Binary Input (Stream, Temp Fn(File))
//   134  %end
//   135
//   136  { ******************************************* }
//   137  {         Main IMP driver routine.         }
//   138  { ******************************************* }
//   139
//   140  %routine IMP
//   141
//   142     %const %integer Default Module Patch Sz = 2
//   143     %const %integer Default Code Patch Sz   = 6
//   144     %const %integer Default Data Patch Sz   = 6
//   145     %const %integer Max     Patch Sz        = 8
//   146     %const %string (255)  Sz Error = "range for patch size is 2 to "
//   147
//   148     %const %integer Frag Array Unit Size    = 4000
//   149
//   150     { Things set up by processing command line }
//   151
//   152     %external %string(255) Source File      = ""
//   153     %external %string(255) Module           = ""
//   154     %string(255) Object File                = ""
//   155     %string(255) Listing File               = ""
//   156     %string(255) Switch Line                = ""
//   157     %string(255) Requested Includes         = ""
//   158     %integer Options, P3 Switch, Dump Dir, Want Log, Want Obj, Want Hex,
//   159+             Want Bin, Want Listing, Exclude Standard Includes
//   160
//   161     { *** NB: this string is used by the second pass and mustn't *** }
//   162     { ***     be changed (for example, mustn't be changed to     *** }
//   163     { ***     'Imp').   (Not seen by humans, anyhow...)          *** }
//   164     %external %string(7) Language Name = "IMP"
//   165     %external %integer   Language      = 1
//   166
//   167     %record(Global Fm) Global Info = 0
//   168                        Global Info_Compiler Id    == Compiler Id
//   169                        Global Info_Source File    == Source File
//   170                        Global Info_Module         == Module
//   171                        Global Info_Code Patch Sz   = Default Code Patch Sz
//   172                        Global Info_Data Patch Sz   = Default Data Patch Sz
//   173                        Global Info_Frag Array Size = Frag Array Unit Size * 1
//   174                        Global Info_Module Patch Sz = Default Module Patch Sz
//   175
//   176     %integer Stats = 0, Faults = 0, J, OK
//   177
//   178     %routine Announce
//   179        Select Output(0)
//   180        Print String("Transputer Imp compiler, ")
//   181        Print String(Compiler Id);  New Line
//   182        Print String("Copyright (C) 1989 3L Ltd");  New Line
//   183     %end
//   184
//   185     %routine Report (%integer Stream)
//   186        %return %if Faults = 0 %and Want Log = No
//   187        Select Output (Stream)
//   188        Write (Stats, 0)
//   189        Printstring (" statement"); Printsymbol ('s') %if Stats # 1
//   190        Printstring (" analysed; ")
//   191        %if Faults = 0 %then Printstring ("no") %c
//   192+                      %else Write (Faults, 0)
//   193        Printstring (" fault"); Printsymbol ('s') %if Faults # 1
//   194        Printstring (" detected")
//   195        Newline
//   196     %end
//   197
//   198     %routine Set Global Flags
//   199        %const %string (255)  LLL Environ Name = "3L_FLAG"
//   200        %string(255) Translated Name
//   201        %integer Value = 0
//   202
//   203        %on 4 %start                             {Stoi string not-a-number}
//   204           Value = Global Flag Plumbing; -> L    {Print out leak info}
//   205        %finish
//   206
//   207        Translated Name = Translate(LLL Environ Name)
//   208        %if Translated Name # LLL Environ Name %start
//   209           Value = Stoi(Translated Name)
//   210        %finish

const _imp_string7 AREAID[14] = {_imp_str_init("Code"),    _imp_str_init("Own"),     _imp_str_init("Const"),
                                 _imp_str_init("Array"),   _imp_str_init("Diag"),    _imp_str_init("Reloc"),
                                 _imp_str_init("Display"), _imp_str_init("Literal"), _imp_str_init("Param"),
                                 _imp_str_init("Local"),   _imp_str_init("Arg"),     _imp_str_init("Dummy"),
                                 _imp_str_init("Cache"),   _imp_str_init("BSS")};

//   211

extern void DELETE(_imp_string255 FILENAME) __asm__("IMP_DELETE");

//   212        Value = Value ! Global Flag Plumbing %if Language = 1 {Imp}

extern _imp_string255 GETENV(_imp_string255 S) __asm__("IMP___GET_ENV");

//   213

extern void PASS1(int *STATS, int *FAULTS, int FLAGS);

//   214  L:    Global Info_Flags = Global Info_Flags ! Value

extern int PASS2(int OPTIONS, int LLOPTIONS, struct GLOBALFM *GLOBAL);

//   215     %end

static int PASS2RESULT;

//   216

_imp_string255 ACTUALINCLUDE(_imp_string255 M, _imp_string255 F) {
  //   217     { ******************************************* }

  if (_imp_strcmp((_imp_string *)/*?*/ &M, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0001;

  return *(_imp_string255 *)/*?*/ &
      *({
        _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &F, (_imp_string *)/*?*/ _imp_str_literal_ptr(".INC"));
        (_imp_string255 *)&tmp;
      })
      ;
L_0001:;

//   218     { Set up control locations in Passes 1 & 2    }

  _imp_strncpy(/*?*/ &M, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = *({
                   _imp_string255 tmp = _imp_join(({
                                                    __typeof__(_imp_string255) tmp; /*D*/
                                                    tmp = UPPERCASE(*({
                                                      __typeof__(_imp_string255) tmp = M /*q*/;
                                                      (_imp_string255 *)&tmp;
                                                    }));
                                                    (void *)&tmp;
                                                  }),
                                                  (_imp_string *)/*?*/ _imp_str_literal_ptr("_INC"));
                   (_imp_string255 *)&tmp;
                 });
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //   219     { ******************************************* }

  _imp_strncpy(/*?*/ &M, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = GETENV(*({
                   __typeof__(_imp_string255) tmp = M /*q*/;
                   (_imp_string255 *)&tmp;
                 }));
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //   220

  if (_imp_strcmp((_imp_string *)/*?*/ &M, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) == 0) goto L_0002;

  _imp_strncpy(/*?*/ &M, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = *({
                   _imp_string255 tmp =
                       _imp_join((_imp_string *)/*?*/ &M, (_imp_string *)/*?*/ _imp_str_literal_ptr("\\"));
                   (_imp_string255 *)&tmp;
                 });
                 (void *)&tmp;
               }),
               /*max:*/ 255);

L_0002:;

//   221     %constinteger Max Cram = 1

  return *(_imp_string255 *)/*?*/ &
      *({
        _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
                                         _imp_string255 tmp =
                                             _imp_join((_imp_string *)/*?*/ &M, (_imp_string *)/*?*/ &F);
                                         (_imp_string255 *)&tmp;
                                       }),
                                       (_imp_string *)/*?*/ _imp_str_literal_ptr(".INC"));
        (_imp_string255 *)&tmp;
      })
      ;

  //   222     %integer %array Crams (1 : Max Cram)

} /* end of ACTUALINCLUDE */

//   223     %own %string (27) %array Cram Names (1 : Max Cram) = %c

extern void OPENSTOREINPUT(int STREAM, int LOC, int LEN) __asm__("IMP_OPEN_STORE_INPUT");

//   224+       "Code fragment array size"

const unsigned char PREDEFDATA[4853] = {
    37,  112, 114, 105, 109, 40,  49,  41,  37,  105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99,  32,
    65,  100, 100, 114, 40,  37,  110, 97,  109, 101, 32,  88,  41,  10,  37,  112, 114, 105, 109, 40,  51,  41,  37,
    115, 116, 114, 105, 110, 103, 40,  42,  41,  37,  109, 97,  112, 115, 112, 101, 99,  32,  83,  116, 114, 105, 110,
    103, 40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  65,  41,  10,  37,  112, 114, 105, 109, 40,  52,  41,  37,
    105, 110, 116, 101, 103, 101, 114, 109, 97,  112, 115, 112, 101, 99,  32,  73,  110, 116, 101, 103, 101, 114, 40,
    37,  105, 110, 116, 101, 103, 101, 114, 32,  65,  41,  10,  37,  112, 114, 105, 109, 40,  53,  41,  37,  115, 104,
    111, 114, 116, 109, 97,  112, 115, 112, 101, 99,  32,  83,  104, 111, 114, 116, 73,  110, 116, 101, 103, 101, 114,
    40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  65,  41,  10,  37,  112, 114, 105, 109, 40,  53,  41,  37,  115,
    104, 111, 114, 116, 109, 97,  112, 115, 112, 101, 99,  32,  83,  104, 111, 114, 116, 40,  37,  105, 110, 116, 101,
    103, 101, 114, 32,  65,  41,  10,  37,  112, 114, 105, 109, 40,  54,  41,  37,  98,  121, 116, 101, 109, 97,  112,
    115, 112, 101, 99,  32,  66,  121, 116, 101, 73,  110, 116, 101, 103, 101, 114, 40,  37,  105, 110, 116, 101, 103,
    101, 114, 32,  65,  41,  10,  37,  112, 114, 105, 109, 40,  54,  41,  37,  98,  121, 116, 101, 109, 97,  112, 115,
    112, 101, 99,  32,  66,  121, 116, 101, 40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  65,  41,  10,  37,  112,
    114, 105, 109, 40,  55,  41,  37,  114, 101, 97,  108, 109, 97,  112, 115, 112, 101, 99,  32,  82,  101, 97,  108,
    40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  65,  41,  10,  37,  112, 114, 105, 109, 40,  56,  41,  37,  108,
    111, 110, 103, 114, 101, 97,  108, 109, 97,  112, 115, 112, 101, 99,  32,  76,  111, 110, 103, 82,  101, 97,  108,
    40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  65,  41,  10,  37,  112, 114, 105, 109, 40,  57,  41,  37,  114,
    101, 99,  111, 114, 100, 40,  42,  41,  37,  109, 97,  112, 115, 112, 101, 99,  32,  82,  101, 99,  111, 114, 100,
    40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  65,  41,  10,  37,  112, 114, 105, 109, 40,  49,  49,  41,  37,
    105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99,  32,  82,  101, 109, 40,  37,  105, 110, 116, 101,
    103, 101, 114, 32,  65,  44,  66,  41,  10,  37,  112, 114, 105, 109, 40,  49,  50,  41,  37,  98,  121, 116, 101,
    109, 97,  112, 115, 112, 101, 99,  32,  76,  101, 110, 103, 116, 104, 40,  37,  115, 116, 114, 105, 110, 103, 40,
    50,  53,  53,  41,  83,  41,  10,  37,  112, 114, 105, 109, 40,  49,  51,  41,  37,  98,  121, 116, 101, 109, 97,
    112, 115, 112, 101, 99,  32,  67,  104, 97,  114, 110, 111, 40,  37,  115, 116, 114, 105, 110, 103, 40,  42,  41,
    37,  110, 97,  109, 101, 32,  83,  44,  37,  105, 110, 116, 101, 103, 101, 114, 32,  78,  41,  10,  37,  112, 114,
    105, 109, 40,  49,  52,  41,  37,  115, 116, 114, 105, 110, 103, 40,  49,  41,  37,  102, 110, 115, 112, 101, 99,
    32,  83,  78,  76,  10,  37,  112, 114, 105, 109, 40,  49,  53,  41,  37,  115, 116, 114, 105, 110, 103, 40,  49,
    41,  37,  102, 110, 115, 112, 101, 99,  32,  84,  111, 83,  116, 114, 105, 110, 103, 40,  37,  98,  121, 116, 101,
    32,  78,  41,  10,  37,  112, 114, 105, 109, 40,  49,  54,  41,  37,  105, 110, 116, 101, 103, 101, 114, 102, 110,
    115, 112, 101, 99,  32,  83,  105, 122, 101, 79,  102, 40,  37,  110, 97,  109, 101, 32,  78,  41,  10,  37,  112,
    114, 105, 109, 40,  49,  55,  41,  37,  105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99,  32,  84,
    121, 112, 101, 79,  102, 40,  37,  110, 97,  109, 101, 32,  78,  41,  10,  37,  112, 114, 105, 109, 40,  50,  48,
    41,  37,  114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  82,  101, 97,  100, 83,  121, 109, 98,  111,
    108, 40,  37,  110, 97,  109, 101, 32,  78,  41,  10,  37,  112, 114, 105, 109, 40,  50,  49,  41,  37,  114, 111,
    117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  83,  107, 105, 112, 83,  121, 109, 98,  111, 108, 10,  37,  99,
    111, 110, 115, 116, 114, 101, 99,  111, 114, 100, 40,  42,  41,  37,  110, 97,  109, 101, 32,  78,  73,  76,  61,
    61,  48,  10,  37,  99,  111, 110, 115, 116, 105, 110, 116, 101, 103, 101, 114, 32,  78,  76,  61,  49,  48,  10,
    37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  83,  112,
    97,  99,  101, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  83,  80,  65,  67,  69,  34,  10,  37,  101,
    120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  78,  101, 119, 76,
    105, 110, 101, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  78,  69,  87,  95,  76,  73,  78,  69,  34,
    10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  78,
    101, 119, 76,  105, 110, 101, 115, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  78,  69,  87,  95,  76,
    73,  78,  69,  83,  34,  40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  78,  41,  10,  37,  101, 120, 116, 101,
    114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  78,  101, 119, 80,  97,  103, 101,
    37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  78,  69,  87,  95,  80,  65,  71,  69,  34,  10,  37,  101,
    120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  83,  112, 97,  99,
    101, 115, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  83,  80,  65,  67,  69,  83,  34,  40,  37,  105,
    110, 116, 101, 103, 101, 114, 32,  78,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 98,  121, 116, 101,
    102, 110, 115, 112, 101, 99,  32,  78,  101, 120, 116, 83,  121, 109, 98,  111, 108, 37,  97,  108, 105, 97,  115,
    34,  73,  77,  80,  95,  78,  69,  88,  84,  95,  83,  89,  77,  66,  79,  76,  34,  10,  37,  101, 120, 116, 101,
    114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  80,  114, 105, 110, 116, 83,  121,
    109, 98,  111, 108, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  80,  82,  73,  78,  84,  95,  83,  89,
    77,  66,  79,  76,  34,  40,  37,  98,  121, 116, 101, 32,  83,  121, 109, 41,  10,  37,  101, 120, 116, 101, 114,
    110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  80,  114, 105, 110, 116, 83,  116, 114,
    105, 110, 103, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  80,  82,  73,  78,  84,  95,  83,  84,  82,
    73,  78,  71,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  83,  41,  10,  37,  101, 120,
    116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  87,  114, 105, 116, 101,
    37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  87,  82,  73,  84,  69,  34,  40,  37,  105, 110, 116, 101,
    103, 101, 114, 32,  78,  44,  80,  108, 97,  99,  101, 115, 41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108,
    115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 110, 115, 112, 101, 99,  32,  83,  117, 98,  83,
    116, 114, 105, 110, 103, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  83,  85,  66,  95,  83,  84,  82,
    73,  78,  71,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  83,  44,  37,  105, 110, 116,
    101, 103, 101, 114, 32,  70,  114, 111, 109, 44,  84,  111, 41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108,
    115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 110, 115, 112, 101, 99,  32,  73,  84,  111, 83,
    37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  73,  95,  84,  79,  95,  83,  34,  40,  37,  105, 110, 116,
    101, 103, 101, 114, 32,  78,  44,  80,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 105, 110, 116, 101,
    103, 101, 114, 102, 110, 115, 112, 101, 99,  32,  83,  84,  111, 73,  37,  97,  108, 105, 97,  115, 34,  73,  77,
    80,  95,  83,  95,  84,  79,  95,  73,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  83,
    41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 112, 114, 101, 100, 105, 99,  97,  116, 101, 115, 112, 101,
    99,  32,  69,  110, 100, 79,  102, 73,  110, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,
    69,  78,  68,  95,  79,  70,  95,  73,  78,  80,  85,  84,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108,
    105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99,  32,  73,  110, 112, 117, 116, 83,  116, 114, 101,
    97,  109, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  73,  78,  80,  85,  84,  95,  83,  84,  82,  69,
    65,  77,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 105, 110, 116, 101, 103, 101, 114, 102, 110, 115,
    112, 101, 99,  32,  79,  117, 116, 112, 117, 116, 83,  116, 114, 101, 97,  109, 37,  97,  108, 105, 97,  115, 34,
    73,  77,  80,  95,  79,  85,  84,  80,  85,  84,  95,  83,  84,  82,  69,  65,  77,  34,  10,  37,  101, 120, 116,
    101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  83,  101, 108, 101, 99,  116,
    73,  110, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  83,  69,  76,  69,  67,  84,  95,
    73,  78,  80,  85,  84,  34,  40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  78,  41,  10,  37,  101, 120, 116,
    101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  83,  101, 108, 101, 99,  116,
    79,  117, 116, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  83,  69,  76,  69,  67,  84,
    95,  79,  85,  84,  80,  85,  84,  34,  40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  78,  41,  10,  37,  101,
    120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  67,  108, 111, 115,
    101, 73,  110, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  67,  76,  79,  83,  69,  95,
    73,  78,  80,  85,  84,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101,
    115, 112, 101, 99,  32,  67,  108, 111, 115, 101, 79,  117, 116, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,
    73,  77,  80,  95,  67,  76,  79,  83,  69,  95,  79,  85,  84,  80,  85,  84,  34,  10,  37,  101, 120, 116, 101,
    114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  80,  114, 111, 109, 112, 116, 37,
    97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  80,  82,  79,  77,  80,  84,  34,  40,  37,  115, 116, 114, 105,
    110, 103, 40,  50,  53,  53,  41,  83,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 101, 99,  111,
    114, 100, 40,  42,  41,  37,  109, 97,  112, 115, 112, 101, 99,  32,  78,  101, 119, 37,  97,  108, 105, 97,  115,
    34,  73,  77,  80,  95,  78,  69,  87,  34,  40,  37,  110, 97,  109, 101, 32,  84,  41,  10,  37,  101, 120, 116,
    101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  68,  105, 115, 112, 111, 115,
    101, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  68,  73,  83,  80,  79,  83,  69,  34,  40,  37,  110,
    97,  109, 101, 32,  88,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101,
    115, 112, 101, 99,  32,  82,  101, 97,  100, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  82,  69,  65,
    68,  34,  40,  37,  110, 97,  109, 101, 32,  78,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111,
    117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  82,  101, 115, 101, 116, 73,  110, 112, 117, 116, 37,  97,  108,
    105, 97,  115, 34,  73,  77,  80,  95,  82,  69,  83,  69,  84,  95,  73,  78,  80,  85,  84,  34,  10,  37,  101,
    120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  82,  101, 115, 101,
    116, 79,  117, 116, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  82,  69,  83,  69,  84,
    95,  79,  85,  84,  80,  85,  84,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 105, 110, 116, 101, 103,
    101, 114, 102, 110, 115, 112, 101, 99,  32,  73,  110, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,
    73,  78,  84,  34,  40,  37,  108, 111, 110, 103, 114, 101, 97,  108, 32,  88,  41,  10,  37,  101, 120, 116, 101,
    114, 110, 97,  108, 105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99,  32,  73,  110, 116, 80,  116,
    37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  73,  78,  84,  95,  80,  84,  34,  40,  37,  108, 111, 110,
    103, 114, 101, 97,  108, 32,  88,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 105, 110, 116, 101, 103,
    101, 114, 102, 110, 115, 112, 101, 99,  32,  84,  114, 117, 110, 99,  37,  97,  108, 105, 97,  115, 34,  73,  77,
    80,  95,  84,  82,  85,  78,  67,  34,  40,  37,  108, 111, 110, 103, 114, 101, 97,  108, 32,  88,  41,  10,  37,
    101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  80,  114, 105,
    110, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  80,  82,  73,  78,  84,  34,  40,  37,  108, 111,
    110, 103, 114, 101, 97,  108, 32,  88,  44,  37,  105, 110, 116, 101, 103, 101, 114, 32,  65,  44,  66,  41,  10,
    37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  80,  114,
    105, 110, 116, 70,  108, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  80,  82,  73,  78,  84,  95,  70,
    76,  34,  40,  37,  108, 111, 110, 103, 114, 101, 97,  108, 32,  88,  44,  37,  105, 110, 116, 101, 103, 101, 114,
    32,  80,  108, 97,  99,  101, 115, 41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105,
    110, 101, 115, 112, 101, 99,  32,  79,  112, 101, 110, 73,  110, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,
    73,  77,  80,  95,  79,  80,  69,  78,  95,  73,  78,  80,  85,  84,  34,  40,  37,  105, 110, 116, 101, 103, 101,
    114, 32,  83,  116, 114, 101, 97,  109, 44,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  70,  105,
    108, 101, 41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101,
    99,  32,  79,  112, 101, 110, 79,  117, 116, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,
    79,  80,  69,  78,  95,  79,  85,  84,  80,  85,  84,  34,  40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  83,
    116, 114, 101, 97,  109, 44,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  70,  105, 108, 101, 41,
    10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  79,
    112, 101, 110, 66,  105, 110, 97,  114, 121, 73,  110, 112, 117, 116, 37,  97,  108, 105, 97,  115, 45,  10,  34,
    73,  77,  80,  95,  79,  80,  69,  78,  95,  66,  73,  78,  65,  82,  89,  95,  73,  78,  80,  85,  84,  34,  40,
    37,  105, 110, 116, 101, 103, 101, 114, 32,  83,  116, 114, 101, 97,  109, 44,  37,  115, 116, 114, 105, 110, 103,
    40,  50,  53,  53,  41,  70,  105, 108, 101, 41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117,
    116, 105, 110, 101, 115, 112, 101, 99,  32,  79,  112, 101, 110, 66,  105, 110, 97,  114, 121, 79,  117, 116, 112,
    117, 116, 37,  97,  108, 105, 97,  115, 45,  10,  34,  73,  77,  80,  95,  79,  80,  69,  78,  95,  66,  73,  78,
    65,  82,  89,  95,  79,  85,  84,  80,  85,  84,  34,  40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  83,  116,
    114, 101, 97,  109, 44,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  70,  105, 108, 101, 41,  10,
    37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  82,  101,
    97,  100, 76,  105, 110, 101, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  82,  69,  65,  68,  95,  76,
    73,  78,  69,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  42,  41,  37,  110, 97,  109, 101, 32,  83,  41,
    10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  84,
    111, 85,  112, 112, 101, 114, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  84,  79,  95,  85,  80,  80,
    69,  82,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  42,  41,  37,  110, 97,  109, 101, 32,  83,  41,  10,
    37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  84,  111,
    76,  111, 119, 101, 114, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  84,  79,  95,  76,  79,  87,  69,
    82,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  42,  41,  37,  110, 97,  109, 101, 32,  83,  41,  10,  37,
    101, 120, 116, 101, 114, 110, 97,  108, 115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 117, 110,
    99,  116, 105, 111, 110, 115, 112, 101, 99,  32,  76,  79,  87,  69,  82,  67,  65,  83,  69,  37,  97,  108, 105,
    97,  115, 34,  73,  77,  80,  95,  76,  79,  87,  69,  82,  95,  67,  65,  83,  69,  34,  40,  37,  115, 116, 114,
    105, 110, 103, 40,  50,  53,  53,  41,  83,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 115, 116, 114,
    105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 117, 110, 99,  116, 105, 111, 110, 115, 112, 101, 99,  32,  85,
    80,  80,  69,  82,  67,  65,  83,  69,  37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  85,  80,  80,  69,
    82,  95,  67,  65,  83,  69,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  83,  41,  10,
    37,  101, 120, 116, 101, 114, 110, 97,  108, 115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 110,
    115, 112, 101, 99,  32,  73,  110, 112, 117, 116, 78,  97,  109, 101, 37,  97,  108, 105, 97,  115, 34,  73,  77,
    80,  95,  73,  78,  80,  85,  84,  95,  78,  65,  77,  69,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108,
    115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 110, 115, 112, 101, 99,  32,  79,  117, 116, 112,
    117, 116, 78,  97,  109, 101, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  79,  85,  84,  80,  85,  84,
    95,  78,  65,  77,  69,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101,
    115, 112, 101, 99,  32,  65,  98,  97,  110, 100, 111, 110, 73,  110, 112, 117, 116, 37,  97,  108, 105, 97,  115,
    34,  73,  77,  80,  95,  65,  66,  65,  78,  68,  79,  78,  95,  73,  78,  80,  85,  84,  34,  10,  37,  101, 120,
    116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  67,  111, 109, 112, 108,
    101, 116, 101, 73,  110, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  67,  79,  77,  80,
    76,  69,  84,  69,  95,  73,  78,  80,  85,  84,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111,
    117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  65,  98,  97,  110, 100, 111, 110, 79,  117, 116, 112, 117, 116,
    37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  65,  66,  65,  78,  68,  79,  78,  95,  79,  85,  84,  80,
    85,  84,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101,
    99,  32,  67,  111, 109, 112, 108, 101, 116, 101, 79,  117, 116, 112, 117, 116, 37,  97,  108, 105, 97,  115, 34,
    73,  77,  80,  95,  67,  79,  77,  80,  76,  69,  84,  69,  95,  79,  85,  84,  80,  85,  84,  34,  10,  37,  101,
    120, 116, 101, 114, 110, 97,  108, 115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 117, 110, 99,
    116, 105, 111, 110, 115, 112, 101, 99,  32,  68,  65,  84,  69,  37,  97,  108, 105, 97,  115, 34,  73,  77,  80,
    95,  68,  65,  84,  69,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 115, 116, 114, 105, 110, 103, 40,
    50,  53,  53,  41,  37,  102, 117, 110, 99,  116, 105, 111, 110, 115, 112, 101, 99,  32,  84,  73,  77,  69,  37,
    97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  84,  73,  77,  69,  34,  10,  37,  101, 120, 116, 101, 114, 110,
    97,  108, 108, 111, 110, 103, 114, 101, 97,  108, 102, 117, 110, 99,  116, 105, 111, 110, 115, 112, 101, 99,  32,
    67,  80,  85,  84,  105, 109, 101, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  67,  80,  85,  95,  84,
    73,  77,  69,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 108, 111, 110, 103, 114, 101, 97,  108, 102,
    110, 115, 112, 101, 99,  32,  83,  84,  111, 82,  37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  83,  95,
    84,  79,  95,  82,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  83,  41,  10,  37,  101,
    120, 116, 101, 114, 110, 97,  108, 115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 110, 115, 112,
    101, 99,  32,  82,  84,  111, 83,  37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  82,  95,  84,  79,  95,
    83,  34,  40,  37,  108, 111, 110, 103, 114, 101, 97,  108, 32,  88,  44,  37,  105, 110, 116, 101, 103, 101, 114,
    32,  78,  44,  79,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 115, 116, 114, 105, 110, 103, 40,  50,
    53,  53,  41,  37,  102, 110, 115, 112, 101, 99,  32,  70,  84,  111, 83,  37,  97,  108, 105, 97,  115, 34,  73,
    77,  80,  95,  70,  95,  84,  79,  95,  83,  34,  40,  37,  108, 111, 110, 103, 114, 101, 97,  108, 32,  88,  44,
    37,  105, 110, 116, 101, 103, 101, 114, 32,  78,  44,  79,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108,
    112, 114, 101, 100, 105, 99,  97,  116, 101, 115, 112, 101, 99,  32,  73,  110, 116, 101, 114, 114, 117, 112, 116,
    101, 100, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  73,  78,  84,  69,  82,  82,  85,  80,  84,  69,
    68,  34,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,
    32,  68,  111, 105, 110, 103, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  68,  79,  73,  78,  71,  34,
    40,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,  53,  41,  83,  41,  10,  37,  101, 120, 116, 101, 114, 110,
    97,  108, 105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99,  32,  82,  111, 117, 110, 100, 37,  97,
    108, 105, 97,  115, 34,  73,  77,  80,  95,  82,  79,  85,  78,  68,  34,  40,  37,  108, 111, 110, 103, 114, 101,
    97,  108, 32,  82,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 108, 111, 110, 103, 114, 101, 97,  108,
    102, 110, 115, 112, 101, 99,  32,  70,  114, 97,  99,  80,  116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,
    95,  70,  82,  65,  67,  95,  80,  84,  34,  40,  37,  108, 111, 110, 103, 114, 101, 97,  108, 32,  82,  41,  10,
    37,  101, 120, 116, 101, 114, 110, 97,  108, 108, 111, 110, 103, 114, 101, 97,  108, 102, 110, 115, 112, 101, 99,
    32,  70,  114, 97,  99,  116, 105, 111, 110, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  70,  82,  65,
    67,  84,  73,  79,  78,  34,  40,  37,  108, 111, 110, 103, 114, 101, 97,  108, 32,  82,  41,  10,  37,  101, 120,
    116, 101, 114, 110, 97,  108, 108, 111, 110, 103, 114, 101, 97,  108, 102, 110, 115, 112, 101, 99,  32,  70,  108,
    111, 97,  116, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  70,  76,  79,  65,  84,  34,  40,  37,  108,
    111, 110, 103, 114, 101, 97,  108, 32,  82,  41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 115, 116, 114,
    105, 110, 103, 40,  50,  53,  53,  41,  37,  102, 110, 115, 112, 101, 99,  32,  84,  114, 105, 109, 37,  97,  108,
    105, 97,  115, 34,  73,  77,  80,  95,  84,  82,  73,  77,  34,  40,  37,  115, 116, 114, 105, 110, 103, 40,  50,
    53,  53,  41,  83,  44,  37,  105, 110, 116, 101, 103, 101, 114, 32,  77,  41,  10,  37,  101, 120, 116, 101, 114,
    110, 97,  108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,  32,  80,  114, 105, 110, 116, 70,  108, 111,
    97,  116, 105, 110, 103, 37,  97,  108, 105, 97,  115, 34,  73,  77,  80,  95,  80,  82,  73,  78,  84,  95,  70,
    76,  79,  65,  84,  73,  78,  71,  34,  40,  37,  108, 111, 110, 103, 114, 101, 97,  108, 32,  82,  44,  37,  105,
    110, 116, 101, 103, 101, 114, 32,  80,  44,  81,  41,  10,  37,  114, 101, 99,  111, 114, 100, 102, 111, 114, 109,
    97,  116, 32,  69,  118, 101, 110, 116, 70,  109, 40,  37,  105, 110, 116, 101, 103, 101, 114, 32,  69,  118, 101,
    110, 116, 44,  83,  117, 98,  44,  69,  120, 116, 114, 97,  44,  37,  115, 116, 114, 105, 110, 103, 40,  50,  53,
    53,  41,  77,  101, 115, 115, 97,  103, 101, 44,  37,  105, 110, 116, 101, 103, 101, 114, 32,  80,  67,  44,  87,
    114, 101, 103, 41,  10,  37,  101, 120, 116, 101, 114, 110, 97,  108, 114, 101, 99,  111, 114, 100, 40,  69,  118,
    101, 110, 116, 70,  109, 41,  37,  115, 112, 101, 99,  32,  69,  118, 101, 110, 116, 37,  97,  108, 105, 97,  115,
    34,  73,  77,  80,  95,  69,  86,  69,  78,  84,  34,  10,  37,  101, 110, 100, 111, 102, 112, 101, 114, 109, 10};

//   225     %own %integer %array Cram Defaults (1 : Max Cram) = %c

static int FIRSTEL(unsigned char *B) {
  //   226+       4096   {Values to put in the locations.  Some variables use   }

  return _imp_ADDR(/*?*/ &[/*BUG*/ 0]);

  //   227               {'0' to mean some standard default (not this one, tho) }

} /* end of FIRSTEL */

//   228     %own %integer %array Cram Actual Defaults (1 : Max Cram) = %c

static unsigned char EXISTINGTEMPS[3] = {[0 ... 2] = 0};

//   229+       4096   {What they mean}

static int KEEP = 0;

//   230     %own %integer %array Cram Mins (1 : Max Cram) = %c

static _imp_string12 TEMPFN(int FILE) {
  //   231+       16

  return *(_imp_string12 *)/*?*/ &
      *({
        _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("ITEMP."), ({
                                         __typeof__(_imp_string255) tmp; /*E*/
                                         tmp = _imp_ITOS(FILE, 0);
                                         (void *)&tmp;
                                       }));
        (_imp_string255 *)&tmp;
      })
      ;

  //   232     %own %integer %array Cram Maxes (1 : Max Cram) = %c

} /* end of TEMPFN */

//   233+       16_7FFFFFFF

static void DELETETEMP(int FILE) {
  //   234     %own %integer %array Cram Multipliers (1 : Max Cram) = %c

  if (EXISTINGTEMPS[FILE - 1] != 1) goto L_0003;
  if (KEEP != 0) goto L_0003;

    //   235+       256    {Multiply input (in Kb) by this before storing}

  DELETE(
      *({
        __typeof__(_imp_string12) tmp = TEMPFN(FILE) /*q*/;
        (_imp_string255 *)&tmp;
      })
  );

  //   236

  EXISTINGTEMPS[FILE - 1] = 0;

  //   237     %routine Initialise Crams

L_0003:;

//   238        %integer I

  return;
} /* end of DELETETEMP */

//   239        Crams(1) = Addr (Global Info_Frag Array Size)

static void OPENTEMPOUTPUT(int STREAM, int FILE) {
  //   240        Integer (Crams(I)) = Cram Defaults(I) %for I = 1, 1, Max Cram

  if (!_imp_on_event(9)) goto L_0004;

    //   241     %end

  FATALERROR(_imp_str_literal("unable to create temporary file"));

  //   242

L_0004:;

//   243     { ******************************************* }

  _imp_OPENBINARYOUTPUT(STREAM,
                        *({
                          __typeof__(_imp_string12) tmp = TEMPFN(FILE) /*q*/;
                          (_imp_string255 *)&tmp;
                        })
  );

  //   244     {         Process the Command Line.           }

  EXISTINGTEMPS[FILE - 1] = 1;

  //   245     { ******************************************* }

  return;
} /* end of OPENTEMPOUTPUT */

//   246

static void OPENTEMPINPUT(int STREAM, int FILE) {
  //   247     %begin

  if (!_imp_on_event(9)) goto L_0005;

    //   248        %integer N, Switch, G

  FATALERROR(_imp_str_literal("unable to access temporary file"));

  //   249        %string(255) Item, Value

L_0005:;

//   250

  _imp_OPENBINARYINPUT(STREAM,
                       *({
                         __typeof__(_imp_string12) tmp = TEMPFN(FILE) /*q*/;
                         (_imp_string255 *)&tmp;
                       })
  );

  //   251        %routine Switch Error

  return;
} /* end of OPENTEMPINPUT */

//   252           Fatal Error ("unknown switch: " . Item)

static void IMP(void) {
  //   253        %end

  const _imp_string255 SZERROR = _imp_str_init("range for patch size is 2 to ");

  //   254

  _imp_string255 SOURCEFILE = _imp_str_init("");

  //   255        { Get next item from command line }

  _imp_string255 MODULE = _imp_str_init("");

  //   256        %routine Next Item

  _imp_string255 OBJECTFILE;

  _imp_strncpy(/*?*/ &OBJECTFILE, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = _imp_str_literal("");
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //   257           %external %string(255) %spec Command Line %alias "IMP___PARAMETER"

  _imp_string255 LISTINGFILE;

  _imp_strncpy(/*?*/ &LISTINGFILE, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = _imp_str_literal("");
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //   258           %own %integer P init = 0

  _imp_string255 SWITCHLINE;

  _imp_strncpy(/*?*/ &SWITCHLINE, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = _imp_str_literal("");
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //   259           %own %byte %integer %name P

  _imp_string255 REQUESTEDINCLUDES;

  _imp_strncpy(/*?*/ &REQUESTEDINCLUDES, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = _imp_str_literal("");
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //   260           P == BYTEINTEGER(0) %and P init = 1 %if P init = 0

  int OPTIONS;
  int P3SWITCH;
  int DUMPDIR;
  int WANTLOG;
  int WANTOBJ;
  int WANTHEX;
  int WANTBIN;
  int WANTLISTING;
  int EXCLUDESTANDARDINCLUDES;

  //   261           Item = ""

  _imp_string7 LANGUAGENAME = _imp_str_init("IMP");

  //   262           %if P == Byte(0) %start

  int LANGUAGE = 1;

  //   263  !T!         Show ("Command Line:<" . Command Line . ">")

  struct GLOBALFM GLOBALINFO;
  GLOBALINFO = (struct GLOBALFM){0};

  //   264  {003}       %begin

  GLOBALINFO.COMPILERID = (_imp_string *)/*?*/ &COMPILERID;

  //   265  {003}          %const %string (255)  Default Switches = "TI"  {env. var. id}

  GLOBALINFO.SOURCEFILE = (_imp_string *)/*?*/ &SOURCEFILE;

  //   266  {003}          %string(255) S = Translate(Default Switches)

  GLOBALINFO.MODULE = (_imp_string *)/*?*/ &MODULE;

  //   267  {003}          %if S # Default Switches %start

  GLOBALINFO.CODEPATCHSZ = 6;

  //   268  {003}             Command Line = S . TOSTRING(' ') . Command Line

  GLOBALINFO.DATAPATCHSZ = 6;

  //   269  {003}          %finish

  GLOBALINFO.FRAGARRAYSIZE = 4000 * 1;

  //   270  {003}       %end

  GLOBALINFO.MODULEPATCHSZ = 2;

  //   271              Command Line = Command Line . TOSTRING(0)

  int STATS;
  STATS = 0;
  int FAULTS;
  FAULTS = 0;
  int J;
  int OK;

  //   272              P == Charno (Command Line, 1)

  void ANNOUNCE(void) {
    //   273           %finish

    _imp_SELECTOUTPUT(0);

    //   274           P == P++1 {P[1]} %while P = ' ' %or P = ',' %or P = ';'

    _imp_PRINTSTRING(_imp_str_literal("Transputer Imp compiler, "));

    //   275           %if P # 0 %start

    _imp_PRINTSTRING(
        *({
          __typeof__(_imp_string31) tmp = COMPILERID /*q*/;
          (_imp_string255 *)&tmp;
        })
    );
    _imp_NEWLINE();

    //   276              Item = Item . TOSTRING(P) %and P == P++1 {P[1]} %c

    _imp_PRINTSTRING(_imp_str_literal("Copyright (C) 1989 3L Ltd"));
    _imp_NEWLINE();

    //   277+                %until P = ' ' %or P = ',' %or P = ';' %or P = '/' %or P = 0

    return;
  } /* end of ANNOUNCE */

  //   278           %finish

  void REPORT(int STREAM) {
    //   279  !T!      Show ("Item:<" . Item . ">")

    if (FAULTS != 0) goto L_0006;
    if (WANTLOG != 0) goto L_0006;
    return;
  L_0006:;

  //   280        %end

    _imp_SELECTOUTPUT(STREAM);

    //   281

    _imp_WRITE(STATS, 0);

    //   282        %string(255) %function Rest of Item (%integer Start)

    _imp_PRINTSTRING(_imp_str_literal(" statement"));
    if (STATS == 1) goto L_0007;
    _imp_PRINTSYMBOL(115);
  L_0007:;

  //   283           %if Start > Length (Item) %c

    _imp_PRINTSTRING(_imp_str_literal(" analysed; "));

    //   284+             %then %result = "" %c

    if (FAULTS != 0) goto L_0008;
    _imp_PRINTSTRING(_imp_str_literal("no"));
    goto L_0009;
  L_0008:;
    _imp_WRITE(FAULTS, 0);
  L_0009:;

  //   285+             %else %result = Substring (Item, Start, Length(Item))

    _imp_PRINTSTRING(_imp_str_literal(" fault"));
    if (FAULTS == 1) goto L_000A;
    _imp_PRINTSYMBOL(115);
  L_000A:;

  //   286        %end

    _imp_PRINTSTRING(_imp_str_literal(" detected"));

    //   287

    _imp_NEWLINE();

    //   288        %integer %fn Excise (%integer Ch)

    return;
  } /* end of REPORT */

  //   289           %if Ch > Length (Item) %then %result = 0

  void SETGLOBALFLAGS(void) {
    //   290           %if 'a' <= Charno(Item,Ch) <= 'z' %then %c

    const _imp_string255 LLLENVIRONNAME = _imp_str_init("3L_FLAG");

    //   291+             Charno(Item,Ch) = Charno(Item,Ch) - 'a' + 'A'

    _imp_string255 TRANSLATEDNAME;

    //   292           %result = Charno(Item,Ch)

    int VALUE;
    VALUE = 0;

    //   293        %end

    if (!_imp_on_event(4)) goto L_000B;

      //   294

    VALUE = 128;
    goto U_1000;

    //   295        %integer %fn Number(%string(255) s)

  L_000B:;

  //   296           %on %event 4 %start

    _imp_strncpy(/*?*/ &TRANSLATEDNAME, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = TRANSLATE(*({
                     __typeof__(_imp_string255) tmp = LLLENVIRONNAME /*q*/;
                     (_imp_string255 *)&tmp;
                   }));
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   297              Fatal Error ("switch should contain a number: ".Item)

    if (_imp_strcmp((_imp_string *)/*?*/ &TRANSLATEDNAME, (_imp_string *)/*?*/ &LLLENVIRONNAME) == 0) goto L_000C;

      //   298           %finish

    VALUE = _imp_STOI(
        *({
          __typeof__(_imp_string255) tmp = TRANSLATEDNAME /*q*/;
          (_imp_string255 *)&tmp;
        })
    );

    //   299           %if S = "" %then %result = 0 %c

  L_000C:;

  //   300+                     %else %result = S to I (S)

    if (LANGUAGE != 1) goto L_000D;
    VALUE = VALUE | 128;
  L_000D:;

  //   301        %end

  U_1000:;
    GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | VALUE;

    //   302

    return;
  } /* end of SETGLOBALFLAGS */

  //   303        { Routine to apply Microsoft-C standard File defaulting

  int CRAMS[1];

  //   304        %string(255) %fn File Def (%string(*)%name Supplied, Model, %c

  static _imp_string27 CRAMNAMES[1] = {_imp_str_init("Code fragment array size")};

  //   305+                                  %string(255)    Ext               )

  static int CRAMDEFAULTS[1] = {4096};

  //   306           %string(255) S Disk, S Dirs, S Fn, S Ext,

  static int CRAMACTUALDEFAULTS[1] = {4096};

  //   307+                       M Disk, M Dirs, M Fn, M Ext

  static int CRAMMINS[1] = {16};

  //   308           %routine Split Filename (%string(*)%name All, Disk, Dirs, Fn, Ext)

  static int CRAMMAXES[1] = {2147483647};

  //   309              %string(*) %name Elt

  static int CRAMMULTIPLIERS[1] = {256};

  //   310              %integer P, Ch

  void INITIALISECRAMS(void) {
    //   311              Disk = "" %and Dirs = "" %and Fn = ""  %and Ext = ""

    int I;

    //   312              Elt == Fn

    CRAMS[0] = _imp_ADDR(/*?*/ &GLOBALINFO.FRAGARRAYSIZE);

    //   313              ! Have faith!  Have Faith!

    // %for I = 1, 1, 1 %cycle
    {
      if (invalid_for_loop(1, 1, 1)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, 1");
      I = 0;
    L_000E:
      if (I == 1) goto L_000F;
      I += 1;
      *_imp_INTEGER(CRAMS[I - 1]) = CRAMDEFAULTS[I - 1];
      goto L_000E;
    }

  L_000F:;

  //   314              %for P = 1, 1, Length (All) %cycle

    return;
  } /* end of INITIALISECRAMS */

  //   315                 Ch = Charno (All, P)

  { /*%begin*/

    //   316                 %if Ch = ':' %start

    int N;
    int SWITCH;
    int G;

    //   317                    Disk = Elt . TOSTRING(Ch);  Elt = ""

    _imp_string255 ITEM;
    _imp_string255 VALUE;

    //   318                 %elseif Ch = '\'

    void SWITCHERROR(void) {
      //   319                    Dirs = Dirs . Elt . TOSTRING(Ch);  Elt = "";  Elt == Fn; Elt = ""

      FATALERROR(
          *({
            __typeof__(_imp_string255) tmp = *({
              _imp_string255 tmp =
                  _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("unknown switch: "), (_imp_string *)/*?*/ &ITEM);
              (_imp_string255 *)&tmp;
            }) /*q*/;
            (_imp_string255 *)&tmp;
          })
      );

      //   320                 %elseif Ch = '.'

      return;
    } /* end of SWITCHERROR */

    //   321                    Elt == Ext;  Elt = Elt . TOSTRING(Ch)

    void NEXTITEM(void) {
      //   322                 %else

      extern _imp_string255 COMMANDLINE __asm__("IMP___PARAMETER");

      //   323                    Elt = Elt . TOSTRING(Ch)

      static int PINIT = 0;

      //   324                 %finish

      static unsigned char *P;

      //   325              %repeat

      if (PINIT != 0) goto L_0011;
      P = (unsigned char *)_imp_BYTEINTEGER(0);
      PINIT = 1;
    L_0011:;

    //   326           %end

      _imp_strncpy(/*?*/ &ITEM, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = _imp_str_literal("");
                     (void *)&tmp;
                   }),
                   /*max:*/ 255);

      //   327           Split Filename (Supplied, S Disk, S Dirs, S Fn, S Ext)

      if (_imp_ADDR((void *)(P)) != _imp_ADDR((void *)(_imp_BYTE(0)))) goto L_0012;

        //   328           Split Filename (Model,    M Disk, M Dirs, M Fn, M Ext)

      { /*%begin*/

        //   329           S Dirs = M Dirs %if S Dirs = "" %and S Disk = ""

        const _imp_string255 DEFAULTSWITCHES = _imp_str_init("TI");

        //   330           S Disk = M Disk %if S Disk = ""

        _imp_string255 S;

        _imp_strncpy(/*?*/ &S, ({
                       __typeof__(_imp_string255) tmp; /*B*/
                       tmp = TRANSLATE(*({
                         __typeof__(_imp_string255) tmp = DEFAULTSWITCHES /*q*/;
                         (_imp_string255 *)&tmp;
                       }));
                       (void *)&tmp;
                     }),
                     /*max:*/ 255);

        //   331           S Fn   = M Fn   %if S Fn   = ""

        if (_imp_strcmp((_imp_string *)/*?*/ &S, (_imp_string *)/*?*/ &DEFAULTSWITCHES) == 0) goto L_0012;

          //   332           S Ext  = Ext    %if S Ext  = ""

        _imp_strncpy(/*?*/ &COMMANDLINE, ({
                       __typeof__(_imp_string255) tmp; /*B*/
                       tmp = *({
                         _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
                                                          _imp_string255 tmp =
                                                              _imp_join((_imp_string *)/*?*/ &S, ({
                                                                          __typeof__(_imp_string1) tmp; /*E*/
                                                                          tmp = _imp_TOSTRING(32);
                                                                          (void *)&tmp;
                                                                        }));
                                                          (_imp_string255 *)&tmp;
                                                        }),
                                                        (_imp_string *)/*?*/ &COMMANDLINE);
                         (_imp_string255 *)&tmp;
                       });
                       (void *)&tmp;
                     }),
                     /*max:*/ 255);

        //   333           %result = S Disk . S Dirs . S Fn . S Ext

      L_0012:;

      //   334        %end

        goto end_1001;
      end_1001:;
      }

      //   335

      _imp_strncpy(/*?*/ &COMMANDLINE, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = *({
                       _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &COMMANDLINE, ({
                                                        __typeof__(_imp_string1) tmp; /*E*/
                                                        tmp = _imp_TOSTRING(0);
                                                        (void *)&tmp;
                                                      }));
                       (_imp_string255 *)&tmp;
                     });
                     (void *)&tmp;
                   }),
                   /*max:*/ 255);

      //   336        %routine Process Patch

      P = (unsigned char *)_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &COMMANDLINE, 1);

      //   337           %integer Ch = Excise (3)

    L_0013:;

    //   338           Switch Error %unless ch = 'C' %or ch = 'D' %or ch = 'M'

    L_0014:;
      if (*P == 32) goto L_0010;
      if (*P == 44) goto L_0010;
      if (*P != 59) goto L_0013;
    L_0010:;
      P = (unsigned char *)P + 1;
      goto L_0014;
    L_0013:;

    //   339           N = Number (Rest of Item(4))

      if (*P == 0) goto L_0015;

        //   340           %if ch = 'C' %start

    L_0016:;

      _imp_strncpy(/*?*/ &ITEM, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = *({
                       _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &ITEM, ({
                                                        __typeof__(_imp_string1) tmp; /*E*/
                                                        tmp = _imp_TOSTRING(*P);
                                                        (void *)&tmp;
                                                      }));
                       (_imp_string255 *)&tmp;
                     });
                     (void *)&tmp;
                   }),
                   /*max:*/ 255);

      P = (unsigned char *)P + 1;
      if (*P == 32) goto L_0017;
      if (*P == 44) goto L_0017;
      if (*P == 59) goto L_0017;
      if (*P == 47) goto L_0017;
      if (*P == 0) goto L_0017;
      goto L_0016;
    L_0017:;

    //   341              Global Info_Code Patch Sz = N

    L_0015:;

    //   342           %else %if ch = 'M'

      return;
    } /* end of NEXTITEM */

    //   343              Global Info_Module Patch Sz = N

    _imp_string255 RESTOFITEM(int START) {
      //   344           %else

      if (START <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &ITEM)) goto L_0018;
      return *(_imp_string255 *)/*?*/ _imp_str_literal_ptr("");
    L_0018:;
      return *(_imp_string255 *)/*?*/ &_imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &ITEM, START,
                                                      *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &ITEM));

      //   345              Global Info_Data Patch Sz = N

    } /* end of RESTOFITEM */

    //   346           %finish

    int EXCISE(int CH) {
      //   347           %unless 1 < N <= Max Patch Sz %start

      if (CH <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &ITEM)) goto L_0019;
      return 0;
    L_0019:;

    //   348              Fatal Error(Sz Error . Itos(Max Patch Sz, 0) . " bytes")

      {
// Double-sided test on _imp_CHARNO((_imp_string255 *)/*p*//*?*/&ITEM, CH) (Part I)
        unsigned char tmp;
        if (97 > (tmp = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, CH))) goto L_001A;
// Double-sided test on _imp_CHARNO((_imp_string255 *)/*p*//*?*/&ITEM, CH) (Part II)
        if (tmp > 122) goto L_001A;
      }
      *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, CH) =
          *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, CH) - 97 + 65;
    L_001A:;

    //   349           %finish

      return *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, CH);

      //   350        %end

    } /* end of EXCISE */

    //   351

    int NUMBER(_imp_string255 S) {
      //   352        %routine Set Flag

      if (!_imp_on_event(4)) goto L_001B;

        //   353           Global Info_Flags = Global Info_Flags ! Number(Rest of Item(4))

      FATALERROR(
          *({
            __typeof__(_imp_string255) tmp = *({
              _imp_string255 tmp =
                  _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("switch should contain a number: "),
                            (_imp_string *)/*?*/ &ITEM);
              (_imp_string255 *)&tmp;
            }) /*q*/;
            (_imp_string255 *)&tmp;
          })
      );

      //   354

    L_001B:;

    //   355        %end

      if (_imp_strcmp((_imp_string *)/*?*/ &S, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_001C;

      return 0;
    L_001C:;
      return _imp_STOI(
          *({
            __typeof__(_imp_string255) tmp = S /*q*/;
            (_imp_string255 *)&tmp;
          })
      );

      //   356

    } /* end of NUMBER */

    //   357        %routine Process Buffer Switch

    _imp_string255 FILEDEF(_imp_string * SUPPLIED, _imp_string * MODEL, _imp_string255 EXT) {
      //   358           %string(63) Stuff, Val

      _imp_string255 SDISK;
      _imp_string255 SDIRS;
      _imp_string255 SFN;
      _imp_string255 SEXT;
      _imp_string255 MDISK;
      _imp_string255 MDIRS;
      _imp_string255 MFN;
      _imp_string255 MEXT;

      //   359           %integer ChP, Ch, P, V

      void SPLITFILENAME(_imp_string * ALL, _imp_string * DISK, _imp_string * DIRS, _imp_string * FN,
                         _imp_string * EXT) {
        //   360           %routine Describe

        _imp_string *ELT;

        //   361           %integer I, J

        int P;
        int CH;

        //   362              Pstr ("Format of /B switch: /B(a)"); Psym(NL);

        *DISK = _imp_str_literal("");
        *DIRS = _imp_str_literal("");
        *FN = _imp_str_literal("");
        *EXT = _imp_str_literal("");

        //   363              Pstr ("Parameters, current values and ranges:"); Psym(NL);

        ELT = (_imp_string *)FN;

        //   364              %for I = 1, 1, Max Cram %cycle

        // %for P = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*/ALL) %cycle
        {
          int _final = *_imp_LENGTH((_imp_string255 *)/*p*/ ALL);
          if (invalid_for_loop(1, 1, _final))
            _imp_signal(5, 1, 0, "Illegal cycle P = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*/ALL)");
          P = 0;
        L_001D:
          if (P == _final) goto L_001E;
          P += 1;

          //   365                 Pstr("   ")

          CH = *_imp_CHARNO((_imp_string255 *)/*p*/ ALL, P);

          //   366                 Psym('a' + I - 1); Pstr(": ")

          if (CH != 58) goto L_0020;

            //   367                 Pstr(Cram Names(I)); Pstr(" = ")

          *DISK = *
                  *({
                    _imp_string255 tmp = _imp_join(({
                                                     __typeof__(_imp_string255) tmp; /*D*/
                                                     tmp = *ELT;
                                                     (void *)&tmp;
                                                   }),
                                                   ({
                                                     __typeof__(_imp_string1) tmp; /*E*/
                                                     tmp = _imp_TOSTRING(CH);
                                                     (void *)&tmp;
                                                   }));
                    (_imp_string255 *)&tmp;
                  })
              ;
          *ELT = _imp_str_literal("");

          //   368                 J = Integer (Crams(I))

          goto L_0021;
        L_0020:;
          if (CH != 92) goto L_0022;

            //   369                 %if J = 0 %then J = Cram Actual Defaults (I)

          *DIRS = *
                  *({
                    _imp_string255 tmp = _imp_join(({
                                                     __typeof__(_imp_string255) tmp; /*D*/
                                                     tmp = **({
                                                       _imp_string255 tmp =
                                                           _imp_join(({
                                                                       __typeof__(_imp_string255) tmp; /*D*/
                                                                       tmp = *DIRS;
                                                                       (void *)&tmp;
                                                                     }),
                                                                     ({
                                                                       __typeof__(_imp_string255) tmp; /*E*/
                                                                       tmp = *ELT;
                                                                       (void *)&tmp;
                                                                     }));
                                                       (_imp_string255 *)&tmp;
                                                     });
                                                     (void *)&tmp;
                                                   }),
                                                   ({
                                                     __typeof__(_imp_string1) tmp; /*E*/
                                                     tmp = _imp_TOSTRING(CH);
                                                     (void *)&tmp;
                                                   }));
                    (_imp_string255 *)&tmp;
                  })
              ;
          *ELT = _imp_str_literal("");
          ELT = (_imp_string *)FN;
          *ELT = _imp_str_literal("");

          //   370                 Pstr(Itos(J//Cram Multipliers(I),0))

          goto L_0021;
        L_0022:;
          if (CH != 46) goto L_0023;

            //   371                 Pstr(" ("); Pstr(Itos(Cram Mins(I),0))

          ELT = (_imp_string *)EXT;
          *ELT = *
                 *({
                   _imp_string255 tmp = _imp_join(({
                                                    __typeof__(_imp_string255) tmp; /*D*/
                                                    tmp = *ELT;
                                                    (void *)&tmp;
                                                  }),
                                                  ({
                                                    __typeof__(_imp_string1) tmp; /*E*/
                                                    tmp = _imp_TOSTRING(CH);
                                                    (void *)&tmp;
                                                  }));
                   (_imp_string255 *)&tmp;
                 })
              ;

          //   372                 Pstr(" to "); Pstr(Itos(Cram Maxes(I),0)); Psym(')')

          goto L_0021;
        L_0023:;

        //   373                 Psym(NL)

          *ELT = *
                 *({
                   _imp_string255 tmp = _imp_join(({
                                                    __typeof__(_imp_string255) tmp; /*D*/
                                                    tmp = *ELT;
                                                    (void *)&tmp;
                                                  }),
                                                  ({
                                                    __typeof__(_imp_string1) tmp; /*E*/
                                                    tmp = _imp_TOSTRING(CH);
                                                    (void *)&tmp;
                                                  }));
                   (_imp_string255 *)&tmp;
                 })
              ;

          //   374              %repeat

        L_0021:;

        //   375              Pstr("Values are expressed in kilobytes")

          goto L_001D;
        }

      L_001E:;

      //   376              Psym(NL)

        return;
      } /* end of SPLITFILENAME */

      //   377           %end

      SPLITFILENAME((_imp_string255 *)/*p*/ SUPPLIED, (_imp_string255 *)/*p*/ /*?*/ &SDISK,
                    (_imp_string255 *)/*p*/ /*?*/ &SDIRS, (_imp_string255 *)/*p*/ /*?*/ &SFN,
                    (_imp_string255 *)/*p*/ /*?*/ &SEXT);

      //   378           %routine Berr

      SPLITFILENAME((_imp_string255 *)/*p*/ MODEL, (_imp_string255 *)/*p*/ /*?*/ &MDISK,
                    (_imp_string255 *)/*p*/ /*?*/ &MDIRS, (_imp_string255 *)/*p*/ /*?*/ &MFN,
                    (_imp_string255 *)/*p*/ /*?*/ &MEXT);

      //   379              Describe

      if (_imp_strcmp((_imp_string *)/*?*/ &SDIRS, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0024;

      if (_imp_strcmp((_imp_string *)/*?*/ &SDISK, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0024;

      _imp_strncpy(/*?*/ &SDIRS, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = MDIRS;
                     (void *)&tmp;
                   }),
                   /*max:*/ 255);

    L_0024:;

    //   380              Fatal Error ("error in format of /B switch: " . Item)

      if (_imp_strcmp((_imp_string *)/*?*/ &SDISK, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0025;

      _imp_strncpy(/*?*/ &SDISK, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = MDISK;
                     (void *)&tmp;
                   }),
                   /*max:*/ 255);

    L_0025:;

    //   381           %end

      if (_imp_strcmp((_imp_string *)/*?*/ &SFN, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0026;

      _imp_strncpy(/*?*/ &SFN, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = MFN;
                     (void *)&tmp;
                   }),
                   /*max:*/ 255);

    L_0026:;

    //   382           Stuff = Rest of Item (3)

      if (_imp_strcmp((_imp_string *)/*?*/ &SEXT, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0027;

      _imp_strncpy(/*?*/ &SEXT, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = EXT;
                     (void *)&tmp;
                   }),
                   /*max:*/ 255);

    L_0027:;

    //   383           %if Stuff = "" %start

      return *(_imp_string255 *)/*?*/ &
          *({
            _imp_string255 tmp =
                _imp_join((_imp_string *)/*?*/ &*({
                            _imp_string255 tmp =
                                _imp_join((_imp_string *)/*?*/ &*({
                                            _imp_string255 tmp =
                                                _imp_join((_imp_string *)/*?*/ &SDISK, (_imp_string *)/*?*/ &SDIRS);
                                            (_imp_string255 *)&tmp;
                                          }),
                                          (_imp_string *)/*?*/ &SFN);
                            (_imp_string255 *)&tmp;
                          }),
                          (_imp_string *)/*?*/ &SEXT);
            (_imp_string255 *)&tmp;
          })
          ;

      //   384              Describe

    } /* end of FILEDEF */

    //   385           %else

    void PROCESSPATCH(void) {
      //   386              ChP = 1; P = 1

      int CH;
      CH = EXCISE(3);

      //   387              Berr %unless Charno (Stuff, ChP) = '('

      if (CH == 67) goto L_0028;
      if (CH == 68) goto L_0028;
      if (CH == 77) goto L_0028;
      SWITCHERROR();
    L_0028:;

    //   388              %cycle

      N = NUMBER(
          *({
            __typeof__(_imp_string255) tmp = RESTOFITEM(4) /*q*/;
            (_imp_string255 *)&tmp;
          })
      );

      //   389                 Val = ""

      if (CH != 67) goto L_0029;

        //   390                 %cycle

      GLOBALINFO.CODEPATCHSZ = N;

      //   391                    ChP = ChP + 1

      goto L_002A;
    L_0029:;
      if (CH != 77) goto L_002B;

        //   392                    Berr %if ChP > Length(Stuff)

      GLOBALINFO.MODULEPATCHSZ = N;

      //   393                    Ch = Charno (Stuff, ChP)

      goto L_002A;
    L_002B:;

    //   394                    %exit %if Ch = ':' %or Ch = ')'

      GLOBALINFO.DATAPATCHSZ = N;

      //   395                    Val = Val . TOSTRING(Ch)

    L_002A:;

    //   396                 %repeat

      {
// Double-sided test on N (Part I)
        int tmp;
        if (1 >= (tmp = N)) goto L_001F;
// Double-sided test on N (Part II)
        if (tmp <= 8) goto L_002C;
      }
    L_001F:;

    //   397                 V = Number (Val)

      FATALERROR(
          *({
            __typeof__(_imp_string255) tmp = *({
              _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
                                               _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &SZERROR, ({
                                                                                __typeof__(_imp_string255) tmp; /*E*/
                                                                                tmp = _imp_ITOS(8, 0);
                                                                                (void *)&tmp;
                                                                              }));
                                               (_imp_string255 *)&tmp;
                                             }),
                                             (_imp_string *)/*?*/ _imp_str_literal_ptr(" bytes"));
              (_imp_string255 *)&tmp;
            }) /*q*/;
            (_imp_string255 *)&tmp;
          })
      );

      //   398                 %unless V = 0 %start

    L_002C:;

    //   399                    %unless Cram Mins(P) <= V <= Cram Maxes(P) %start

      return;
    } /* end of PROCESSPATCH */

    //   400                       Describe

    void SETFLAG(void) {
      //   401                       Fatal Error (Val." is outwith the range for the ". %c

      GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | NUMBER(
                                                *({
                                                  __typeof__(_imp_string255) tmp = RESTOFITEM(4) /*q*/;
                                                  (_imp_string255 *)&tmp;
                                                })
                                            );

      //   402+                                   Cram Names(P))

      return;
    } /* end of SETFLAG */

    //   403                    %finish

    void PROCESSBUFFERSWITCH(void) {
      //   404                    Integer(Crams(P)) = V * Cram Multipliers(P)

      _imp_string63 STUFF;
      _imp_string63 VAL;

      //   405                 %finish

      int CHP;
      int CH;
      int P;
      int V;

      //   406                 %if Ch = ')' %then %exit

      void DESCRIBE(void) {
        //   407                 P = P + 1

        int I;
        int J;

        //   408                 %if P > Max Cram %then Berr

        PSTR(_imp_str_literal("Format of /B switch: /B(a)"));
        PSYM(10);

        //   409              %repeat

        PSTR(_imp_str_literal("Parameters, current values and ranges:"));
        PSYM(10);

        //   410           %finish

        // %for I = 1, 1, 1 %cycle
        {
          if (invalid_for_loop(1, 1, 1)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, 1");
          I = 0;
        L_002D:
          if (I == 1) goto L_002E;
          I += 1;

          //   411        %end

          PSTR(_imp_str_literal("   "));

          //   412

          PSYM(97 + I - 1);
          PSTR(_imp_str_literal(": "));

          //   413        { Set up defaults }

          PSTR(
              *({
                __typeof__(_imp_string27) tmp = CRAMNAMES[I - 1] /*q*/;
                (_imp_string255 *)&tmp;
              })
          );
          PSTR(_imp_str_literal(" = "));

          //   414        Initialise Crams

          J = *_imp_INTEGER(CRAMS[I - 1]);

          //   415        Options   = Default Options

          if (J != 0) goto L_0030;
          J = CRAMACTUALDEFAULTS[I - 1];
        L_0030:;

        //   416        P3 Switch = 0

          PSTR(
              *({
                __typeof__(_imp_string255) tmp = _imp_ITOS(((long)J / (long)CRAMMULTIPLIERS[I - 1]), 0) /*q*/;
                (_imp_string255 *)&tmp;
              })
          );

          //   417        Dump Dir  = Default Dump Dir

          PSTR(_imp_str_literal(" ("));
          PSTR(
              *({
                __typeof__(_imp_string255) tmp = _imp_ITOS(CRAMMINS[I - 1], 0) /*q*/;
                (_imp_string255 *)&tmp;
              })
          );

          //   418        Keep      = Default Keep

          PSTR(_imp_str_literal(" to "));
          PSTR(
              *({
                __typeof__(_imp_string255) tmp = _imp_ITOS(CRAMMAXES[I - 1], 0) /*q*/;
                (_imp_string255 *)&tmp;
              })
          );
          PSYM(41);

          //   419        Want Log  = Default Want Log

          PSYM(10);

          //   420        Want Bin  = No

          goto L_002D;
        }

      L_002E:;

      //   421        Want Hex  = No

        PSTR(_imp_str_literal("Values are expressed in kilobytes"));

        //   422        Want Obj  = Default Want Obj

        PSYM(10);

        //   423        Want Listing = Default Want Listing

        return;
      } /* end of DESCRIBE */

      //   424        Exclude Standard Includes = No

      void BERR(void) {
        //   425

        DESCRIBE();

        //   426        { Process items one-by-one }

        FATALERROR(
            *({
              __typeof__(_imp_string255) tmp = *({
                _imp_string255 tmp =
                    _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("error in format of /B switch: "),
                              (_imp_string *)/*?*/ &ITEM);
                (_imp_string255 *)&tmp;
              }) /*q*/;
              (_imp_string255 *)&tmp;
            })
        );

        //   427        %cycle

        return;
      } /* end of BERR */

      //   428

      _imp_strncpy(/*?*/ &STUFF, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = RESTOFITEM(3);
                     (void *)&tmp;
                   }),
                   /*max:*/ 63);

      //   429           Next Item; %exit %if Item = ""

      if (_imp_strcmp((_imp_string *)/*?*/ &STUFF, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0031;

        //   430

      DESCRIBE();

      //   431           %if Charno (Item, 1) # '/' %start

      goto L_0032;
    L_0031:;

    //   432

      CHP = 1;
      P = 1;

      //   433              { It's a filename }

      if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &STUFF, CHP) == 40) goto L_0033;
      BERR();
    L_0033:;

    //   434              %if Source File # "" %then %c

    L_0034:;

    //   435+                Fatal Error ("more than one source file specified")

      _imp_strncpy(/*?*/ &VAL, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = _imp_str_literal("");
                     (void *)&tmp;
                   }),
                   /*max:*/ 63);

      //   436              Source File = Item

    L_0035:;

    //   437

      CHP = CHP + 1;

      //   438           %else

      if (CHP <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &STUFF)) goto L_0036;
      BERR();
    L_0036:;

    //   439

      CH = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &STUFF, CHP);

      //   440              { It's a switch }

      if (CH == 58) goto L_0037;
      if (CH != 41) goto L_0038;
    L_0037:;
      goto L_0039;
    L_0038:;

    //   441              Switch = Excise (2)

      _imp_strncpy(/*?*/ &VAL, ({
                     __typeof__(_imp_string255) tmp; /*B*/
                     tmp = *({
                       _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &VAL, ({
                                                        __typeof__(_imp_string1) tmp; /*E*/
                                                        tmp = _imp_TOSTRING(CH);
                                                        (void *)&tmp;
                                                      }));
                       (_imp_string255 *)&tmp;
                     });
                     (void *)&tmp;
                   }),
                   /*max:*/ 63);

      //   442

      goto L_0035;
    L_0039:;

    //   443              %if Switch = 'I' %start

      V = NUMBER(
          *({
            __typeof__(_imp_string63) tmp = VAL /*q*/;
            (_imp_string255 *)&tmp;
          })
      );

      //   444                 Value = Rest of Item (3)

      if (V == 0) goto L_003A;

        //   445                 %if Value = "" %start

      {
// Double-sided test on V (Part I)
        int tmp;
        if (CRAMMINS[P - 1] > (tmp = V)) goto L_003B;
// Double-sided test on V (Part II)
        if (tmp <= CRAMMAXES[P - 1]) goto L_003C;
      }
    L_003B:;

    //   446                    { Identify: Say who we are }

      DESCRIBE();

      //   447                    Announce

      FATALERROR(
          *({
            __typeof__(_imp_string255) tmp = *({
              _imp_string255 tmp =
                  _imp_join((_imp_string *)/*?*/ &*({
                              _imp_string255 tmp = _imp_join(
                                  (_imp_string *)/*?*/ &VAL,
                                  (_imp_string *)/*?*/ _imp_str_literal_ptr(" is outwith the range for the "));
                              (_imp_string255 *)&tmp;
                            }),
                            (_imp_string *)/*?*/ &CRAMNAMES[P - 1]);
              (_imp_string255 *)&tmp;
            }) /*q*/;
            (_imp_string255 *)&tmp;
          })
      );

      //   448                 %else

    L_003C:;

    //   449                    Switch Error

      *_imp_INTEGER(CRAMS[P - 1]) = V * CRAMMULTIPLIERS[P - 1];

      //   450                 %finish

    L_003A:;

    //   451

      if (CH != 41) goto L_003D;
      goto L_003E;
    L_003D:;

    //   452              %else %if Switch = 'E'

      P = P + 1;

      //   453                 Exclude Standard Includes = Yes

      if (P <= 1) goto L_003F;
      BERR();
    L_003F:;

    //   454

      goto L_0034;
    L_003E:;

    //   455              %else %if Switch = 'L'

    L_0032:;

    //   456                 { (compatibility switch) }

      return;
    } /* end of PROCESSBUFFERSWITCH */

    //   457                 Want Listing = Yes

    INITIALISECRAMS();

    //   458

    OPTIONS = 33556612;

    //   459              %else %if Switch = 'Q'

    P3SWITCH = 0;

    //   460                 { Quiet: suppress warning messages }

    DUMPDIR = 0;

    //   461                 Want Log = No

    KEEP = 0;

    //   462                 Options = Options !! LL Warn

    WANTLOG = 0;

    //   463

    WANTBIN = 0;

    //   464              %else %if Switch = 'C'

    WANTHEX = 0;

    //   465                 { Check: suppress code generation }

    WANTOBJ = 1;

    //   466                 Want Obj = No

    WANTLISTING = 0;

    //   467

    EXCLUDESTANDARDINCLUDES = 0;

    //   468              %else %if Switch = 'H'

  L_0040:;

  //   469                 { (compatibility switch) }

    NEXTITEM();

    if (_imp_strcmp((_imp_string *)/*?*/ &ITEM, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0041;

    goto L_0042;
  L_0041:;

  //   470                 Want Hex = Yes

    if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, 1) == 47) goto L_0043;

      //   471

    if (_imp_strcmp((_imp_string *)/*?*/ &SOURCEFILE, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) == 0) goto L_0044;

    FATALERROR(_imp_str_literal("more than one source file specified"));
  L_0044:;

  //   472              %else %if Switch = 'F'

    _imp_strncpy(/*?*/ &SOURCEFILE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = ITEM;
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   473                 { Files: unified handling of output file specification }

    goto L_0045;
  L_0043:;

  //   474                 Switch = Excise (3)

    SWITCH = EXCISE(2);

    //   475                 %if Switch = 'B' %or Switch = 'O' %start

    if (SWITCH != 73) goto L_0046;

      //   476                    Want Bin = Yes

    _imp_strncpy(/*?*/ &VALUE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = RESTOFITEM(3);
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   477                    Object File = Rest of Item (4)

    if (_imp_strcmp((_imp_string *)/*?*/ &VALUE, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0047;

      //   478                 %else %if Switch = 'H'

    ANNOUNCE();

    //   479                    Want Hex = Yes

    goto L_0048;
  L_0047:;

  //   480                    Object File = Rest of Item (4)

    SWITCHERROR();

    //   481                 %else %if Switch = 'L'

  L_0048:;

  //   482                    Want Listing = Yes

    goto L_0049;
  L_0046:;
    if (SWITCH != 69) goto L_004A;

      //   483                    Listing File = Rest of Item (4)

    EXCLUDESTANDARDINCLUDES = 1;

    //   484                 %else

    goto L_0049;
  L_004A:;
    if (SWITCH != 76) goto L_004B;

      //   485                    Switch Error

    WANTLISTING = 1;

    //   486                 %finish

    goto L_0049;
  L_004B:;
    if (SWITCH != 81) goto L_004C;

      //   487

    WANTLOG = 0;

    //   488              %else %if Switch = '?' %and Debugs Enabled = Yes

    OPTIONS = OPTIONS ^ 4;

    //   489                 { Diagnostics }

    goto L_0049;
  L_004C:;
    if (SWITCH != 67) goto L_004D;

      //   490                 Switch = Excise (3)

    WANTOBJ = 0;

    //   491                 %if Switch = '1' %start

    goto L_0049;
  L_004D:;
    if (SWITCH != 72) goto L_004E;

      //   492                    Options = Options ! LL Mon ! LL List ! LL Report

    WANTHEX = 1;

    //   493                    Want Listing = Yes

    goto L_0049;
  L_004E:;
    if (SWITCH != 70) goto L_004F;

      //   494                 %else %if Switch = '2'

    SWITCH = EXCISE(3);

    //   495                    Options = Options ! Special P2 Diag Bit

    if (SWITCH == 66) goto L_0050;
    if (SWITCH != 79) goto L_0051;
  L_0050:;

  //   496                 %else %if Switch = '3'

    WANTBIN = 1;

    //   497                    P3 Switch = -1

    _imp_strncpy(/*?*/ &OBJECTFILE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = RESTOFITEM(4);
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   498                 %else %if Switch = '*'

    goto L_0052;
  L_0051:;
    if (SWITCH != 72) goto L_0053;

      //   499                    {turn all diagnostics on}

    WANTHEX = 1;

    //   500                    Options = Options ! Special P2 Diag Bit ! LL Mon ! LL List ! %c

    _imp_strncpy(/*?*/ &OBJECTFILE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = RESTOFITEM(4);
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   501+                                       LL Report

    goto L_0052;
  L_0053:;
    if (SWITCH != 76) goto L_0054;

      //   502                    P3 Switch = -1

    WANTLISTING = 1;

    //   503                    Want Listing = Yes

    _imp_strncpy(/*?*/ &LISTINGFILE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = RESTOFITEM(4);
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   504                 %else %if Switch = '?'

    goto L_0052;
  L_0054:;

  //   505                    Options = Options ! LL Mon

    SWITCHERROR();

    //   506                 %else %if Switch = 'D'

  L_0052:;

  //   507                    Dump Dir = Yes

    goto L_0049;
  L_004F:;
    if (SWITCH != 63) goto L_0055;
    if (1 != 1) goto L_0055;

      //   508                 %else %if Switch = 'K'

    SWITCH = EXCISE(3);

    //   509                    Keep = Yes

    if (SWITCH != 49) goto L_0056;

      //   510                 %else %if Switch = 'F'     {Set Global Info_Flags}

    OPTIONS = OPTIONS | 1 | 8 | 128;

    //   511                    Set Flag

    WANTLISTING = 1;

    //   512                 %else

    goto L_0057;
  L_0056:;
    if (SWITCH != 50) goto L_0058;

      //   513                    Switch Error

    OPTIONS = OPTIONS | (-2147483648);

    //   514                 %finish

    goto L_0057;
  L_0058:;
    if (SWITCH != 51) goto L_0059;

      //   515

    P3SWITCH = -1;

    //   516              %else %if Switch = 'T'

    goto L_0057;
  L_0059:;
    if (SWITCH != 42) goto L_005A;

      //   517                 {/T4, /T8, /T8A}

    OPTIONS = OPTIONS | (-2147483648) | 1 | 8 | 128;

    //   518                 Switch = Excise (3)

    P3SWITCH = -1;

    //   519                 %if Switch = '4' %start

    WANTLISTING = 1;

    //   520                    Switch = Target T4

    goto L_0057;
  L_005A:;
    if (SWITCH != 63) goto L_005B;

      //   521                 %else %if Switch = '8'

    OPTIONS = OPTIONS | 1;

    //   522                    Switch = Target T8

    goto L_0057;
  L_005B:;
    if (SWITCH != 68) goto L_005C;

      //   523                    %if Excise (4) = 'A' %then %c

    DUMPDIR = 1;

    //   524+                      Global Info_Flags = Global Info_Flags ! Global Flag Bug 1

    goto L_0057;
  L_005C:;
    if (SWITCH != 75) goto L_005D;

      //   525                 %else

    KEEP = 1;

    //   526                    Fatal Error("target must be /T4 or /T8 only: ".Item)

    goto L_0057;
  L_005D:;
    if (SWITCH != 70) goto L_005E;

      //   527                 %finish

    SETFLAG();

    //   528

    goto L_0057;
  L_005E:;

  //   529                 %if Global Info_Target # 0 %start

    SWITCHERROR();

    //   530                    %if Global Info_Target # Switch %start

  L_0057:;

  //   531                       Fatal Error("target processor already specified: ".Item)

    goto L_0049;
  L_0055:;
    if (SWITCH != 84) goto L_005F;

      //   532                    %finish

    SWITCH = EXCISE(3);

    //   533                 %finish

    if (SWITCH != 52) goto L_0060;

      //   534                 Global Info_Target = Switch

    SWITCH = 1;

    //   535

    goto L_0061;
  L_0060:;
    if (SWITCH != 56) goto L_0062;

      //   536              %else %if Switch = 'P'

    SWITCH = 2;

    //   537                 Process Patch

    if (EXCISE(4) != 65) goto L_0063;
    GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 8;
  L_0063:;

  //   538

    goto L_0061;
  L_0062:;

  //   539              %else %if Switch = 'B'

    FATALERROR(
        *({
          __typeof__(_imp_string255) tmp = *({
            _imp_string255 tmp =
                _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("target must be /T4 or /T8 only: "),
                          (_imp_string *)/*?*/ &ITEM);
            (_imp_string255 *)&tmp;
          }) /*q*/;
          (_imp_string255 *)&tmp;
        })
    );

    //   540                 Process Buffer Switch

  L_0061:;

  //   541

    if (GLOBALINFO.TARGET == 0) goto L_0064;

      //   542              %else %if Switch = 'G'           {control code-generator options}

    if (GLOBALINFO.TARGET == SWITCH) goto L_0065;

      //   543                 %constinteger GBS = 'B'<<8 ! 'S',

    FATALERROR(
        *({
          __typeof__(_imp_string255) tmp = *({
            _imp_string255 tmp =
                _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("target processor already specified: "),
                          (_imp_string *)/*?*/ &ITEM);
            (_imp_string255 *)&tmp;
          }) /*q*/;
          (_imp_string255 *)&tmp;
        })
    );

    //   544+                              GBU = 'B'<<8 ! 'U',

  L_0065:;

  //   545+                              GHS = 'H'<<8 ! 'S',

  L_0064:;

  //   546+                              GHU = 'H'<<8 ! 'U'

    GLOBALINFO.TARGET = SWITCH;

    //   547                G = Excise(3)<<8 ! Excise(4)

    goto L_0049;
  L_005F:;
    if (SWITCH != 80) goto L_0066;

      //   548                %if G = GBS %start       {bytes signed}

    PROCESSPATCH();

    //   549                   Global Info_Flags = Global Info_Flags ! Global Flag BS

    goto L_0049;
  L_0066:;
    if (SWITCH != 66) goto L_0067;

      //   550                %else %if G = GBU        {bytes unsigned}

    PROCESSBUFFERSWITCH();

    //   551                   Global Info_Flags = Global Info_Flags & (\Global Flag BS)

    goto L_0049;
  L_0067:;
    if (SWITCH != 71) goto L_0068;

      //   552                %else %if G = GHS        {shorts signed}

    G = EXCISE(3) << 8 | EXCISE(4);

    //   553                   Global Info_Flags = Global Info_Flags & (\Global Flag SU) %c

    if (G != 16979) goto L_0069;

      //   554+                                                        ! Global Flag SH

    GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 4096;

    //   555                %else %if G = GHU        {shorts unsigned}

    goto L_006A;
  L_0069:;
    if (G != 16981) goto L_006B;

      //   556                   Global Info_Flags = Global Info_Flags ! Global Flag SH %c

    GLOBALINFO.FLAGS = GLOBALINFO.FLAGS & (~4096);

    //   557+                                                        ! Global Flag SU

    goto L_006A;
  L_006B:;
    if (G != 18515) goto L_006C;

      //   558                %finish %else Switch Error

    GLOBALINFO.FLAGS = GLOBALINFO.FLAGS & (~8192) | 2048;

    //   559

    goto L_006A;
  L_006C:;
    if (G != 18517) goto L_006D;

      //   560  {002}       %else %if Switch = 'Z'

    GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 2048 | 8192;

    //   561  {002}          Switch = Excise(3)

    goto L_006A;
  L_006D:;
    SWITCHERROR();
  L_006A:;

  //   562  {002}          %if Switch = 'I' %start

    goto L_0049;
  L_0068:;
    if (SWITCH != 90) goto L_006E;

      //   563  {002}             Global Info_Flags = Global Info_Flags ! Global Flag Debug

    SWITCH = EXCISE(3);

    //   564  {002}          %else %if Switch = 'D'

    if (SWITCH != 73) goto L_006F;

      //   565  {002}             !no action just now: reserved for future use.

    GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 16384;

    //   566  {002}          %else

    goto L_0070;
  L_006F:;
    if (SWITCH != 68) goto L_0071;

      //   567  {002}             Switch Error

    goto L_0070;
  L_0071:;

  //   568  {002}          %finish

    SWITCHERROR();

    //   569

  L_0070:;

  //   570              %else

    goto L_0049;
  L_006E:;

  //   571                 Switch Error

    SWITCHERROR();

    //   572              %finish

  L_0049:;

  //   573
  //   574              Switch Line = Switch Line . " " . Item

    _imp_strncpy(/*?*/ &SWITCHLINE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = *({
                     _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
                                                      _imp_string255 tmp =
                                                          _imp_join((_imp_string *)/*?*/ &SWITCHLINE,
                                                                    (_imp_string *)/*?*/ _imp_str_literal_ptr(" "));
                                                      (_imp_string255 *)&tmp;
                                                    }),
                                                    (_imp_string *)/*?*/ &ITEM);
                     (_imp_string255 *)&tmp;
                   });
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   575
    //   576           %finish

  L_0045:;

  //   577        %repeat

    goto L_0040;
  L_0042:;

  //   578
  //   579  !     Fatal Error("/T4 or /T8 required") %if Global Info_Target = 0
  //   580        Global Info_Target = Target T4 %if Global Info_Target = 0 {play safe}

    if (GLOBALINFO.TARGET != 0) goto L_0072;
    GLOBALINFO.TARGET = 1;
  L_0072:;

  //   581
  //   582        Set Global Flags

    SETGLOBALFLAGS();

    //   583
    //   584        { Default source file extension, etc }
    //   585        %stop %if Source file = ""

    if (_imp_strcmp((_imp_string *)/*?*/ &SOURCEFILE, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0073;

    _imp_stop(0);
  L_0073:;

  //   586        Source File = File Def (Source File, Source File, ".imp")

    _imp_strncpy(/*?*/ &SOURCEFILE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = FILEDEF((_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE, (_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE,
                                 _imp_str_literal(".imp"));
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   587
    //   588        { Check sensible object file requirements and default }
    //   589        %if Want Obj = Yes %start

    if (WANTOBJ != 1) goto L_0074;

      //   590           %if Want Bin = Want Hex = No %start

    {
// Double-sided test on WANTHEX (Part I)
      int tmp;
      if (WANTBIN != (tmp = WANTHEX)) goto L_0075;
// Double-sided test on WANTHEX (Part II)
      if (tmp != 0) goto L_0075;
    }

    //   591              Want Bin = Default Want Bin

    WANTBIN = 1;

    //   592              Want Hex = Default Want Hex

    WANTHEX = 0;

    //   593           %else %if Want Bin = Want Hex = Yes

    goto L_0076;
  L_0075:;
    {
// Double-sided test on WANTHEX (Part I)
      int tmp;
      if (WANTBIN != (tmp = WANTHEX)) goto L_0077;
// Double-sided test on WANTHEX (Part II)
      if (tmp != 1) goto L_0077;
    }

    //   594              Fatal Error ("cannot produce both hex AND binary files")

    FATALERROR(_imp_str_literal("cannot produce both hex AND binary files"));

    //   595           %finish

  L_0077:;
  L_0076:;

  //   596           %if Want Hex = Yes %start

    if (WANTHEX != 1) goto L_0078;

      //   597              Object File = File Def (Object File, Source File, ".hex")

    _imp_strncpy(/*?*/ &OBJECTFILE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = FILEDEF((_imp_string255 *)/*p*/ /*?*/ &OBJECTFILE, (_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE,
                                 _imp_str_literal(".hex"));
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   598           %else

    goto L_0079;
  L_0078:;

  //   599              Global Info_Flags = Global Info_Flags ! Global Flag Binary

    GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 1;

    //   600              Object File = File Def (Object File, Source File, ".fla")

    _imp_strncpy(/*?*/ &OBJECTFILE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = FILEDEF((_imp_string255 *)/*p*/ /*?*/ &OBJECTFILE, (_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE,
                                 _imp_str_literal(".fla"));
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   601           %finish

  L_0079:;

  //   602        %finish

  L_0074:;

  //   603
  //   604        { Sort out listing file, if any. }
  //   605        %if Want Listing = Yes %start

    if (WANTLISTING != 1) goto L_007A;

      //   606           Options = Options ! LL List

    OPTIONS = OPTIONS | 8;

    //   607           Listing File = File Def (Listing File, Source File, ".lis")

    _imp_strncpy(/*?*/ &LISTINGFILE, ({
                   __typeof__(_imp_string255) tmp; /*B*/
                   tmp = FILEDEF((_imp_string255 *)/*p*/ /*?*/ &LISTINGFILE, (_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE,
                                 _imp_str_literal(".lis"));
                   (void *)&tmp;
                 }),
                 /*max:*/ 255);

    //   608        %finish

  L_007A:;

  //   609
  //   610     %end

    goto end_1000;
  end_1000:;
  }

  //   611
  //   612
  //   613     {
  //   614     { Open Source File }
  //   615     {
  //   616     Select Input(0);  Select Output(0)

  _imp_SELECTINPUT(0);
  _imp_SELECTOUTPUT(0);

  //   617     %begin

  { /*%begin*/

    //   618        %on IO Error %start

    if (!_imp_on_event(9)) goto L_007B;

      //   619           Fatal Error ("unable to open " . Source File . " as source file")

    FATALERROR(
        *({
          __typeof__(_imp_string255) tmp = *({
            _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
                                             _imp_string255 tmp =
                                                 _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("unable to open "),
                                                           (_imp_string *)/*?*/ &SOURCEFILE);
                                             (_imp_string255 *)&tmp;
                                           }),
                                           (_imp_string *)/*?*/ _imp_str_literal_ptr(" as source file"));
            (_imp_string255 *)&tmp;
          }) /*q*/;
          (_imp_string255 *)&tmp;
        })
    );

    //   620        %finish

  L_007B:;

  //   621        Open Input (1, Source File)

    _imp_OPENINPUT(1,
                   *({
                     __typeof__(_imp_string255) tmp = SOURCEFILE /*q*/;
                     (_imp_string255 *)&tmp;
                   })
    );

    //   622     %end

    goto end_1002;
  end_1002:;
  }

  //   623
  //   624     { Derive module id
  //   625
  //   626     Module      = Source File

  _imp_strncpy(/*?*/ &MODULE, ({
                 __typeof__(_imp_string255) tmp; /*B*/
                 tmp = SOURCEFILE;
                 (void *)&tmp;
               }),
               /*max:*/ 255);

  //   627
  //   628     {
  //   629     { Listing header (if any)
  //   630     {
  //   631     %if Want Listing = Yes %start

  if (WANTLISTING != 1) goto L_007C;

    //   632        %begin

  { /*%begin*/

    //   633           %on IO Error %start

    if (!_imp_on_event(9)) goto L_007C;

      //   634              Fatal Error ("unable to open " . Listing File . " as listing file")

    FATALERROR(
        *({
          __typeof__(_imp_string255) tmp = *({
            _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
                                             _imp_string255 tmp =
                                                 _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("unable to open "),
                                                           (_imp_string *)/*?*/ &LISTINGFILE);
                                             (_imp_string255 *)&tmp;
                                           }),
                                           (_imp_string *)/*?*/ _imp_str_literal_ptr(" as listing file"));
            (_imp_string255 *)&tmp;
          }) /*q*/;
          (_imp_string255 *)&tmp;
        })
    );

    //   635           %finish

  L_007C:;

  //   636           Open Output (Listing Stream, Listing File)

    _imp_OPENOUTPUT(7,
                    *({
                      __typeof__(_imp_string255) tmp = LISTINGFILE /*q*/;
                      (_imp_string255 *)&tmp;
                    })
    );

    //   637        %end

    goto end_1003;
  end_1003:;
  }

  //   638        Select Output(Listing Stream)

  _imp_SELECTOUTPUT(7);

  //   639        Print String("Source file: ");  Print String(Source File);  New Line

  _imp_PRINTSTRING(_imp_str_literal("Source file: "));
  _imp_PRINTSTRING(
      *({
        __typeof__(_imp_string255) tmp = SOURCEFILE /*q*/;
        (_imp_string255 *)&tmp;
      })
  );
  _imp_NEWLINE();

  //   640        %if Want Obj = Yes %start

  if (WANTOBJ != 1) goto L_007D;

    //   641           Print String("Object file: ");  Print String(Object File);  New Line

  _imp_PRINTSTRING(_imp_str_literal("Object file: "));
  _imp_PRINTSTRING(
      *({
        __typeof__(_imp_string255) tmp = OBJECTFILE /*q*/;
        (_imp_string255 *)&tmp;
      })
  );
  _imp_NEWLINE();

  //   642        %finish

L_007D:;

//   643        %if Length (Switch Line) > 1 %then %c

  if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SWITCHLINE) <= 1) goto L_007E;
  _imp_PRINTSTRING(
      *({
        __typeof__(_imp_string255) tmp = *({
          _imp_string255 tmp =
              _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("Switches:   "), (_imp_string *)/*?*/ &SWITCHLINE);
          (_imp_string255 *)&tmp;
        }) /*q*/;
        (_imp_string255 *)&tmp;
      })
  );
  _imp_NEWLINE();
L_007E:;

//   644+          Print String ("Switches:   " . Switch Line) %and New Line
//   645        Print String("Compiled by: Imp77 pass1 V")

  _imp_PRINTSTRING(_imp_str_literal("Compiled by: Imp77 pass1 V"));

  //   646        Print String(P1 Version);  New Lines(2)

  _imp_PRINTSTRING(
      *({
        __typeof__(_imp_string7) tmp = P1VERSION /*q*/;
        (_imp_string255 *)&tmp;
      })
  );
  _imp_NEWLINES(2);

  //   647     %finish

L_007F:;

//   648
//   649     {
//   650     {  Pass 1
//   651     {
//   652     Open Store Input(Predef Stream, First El(Predef data), Predef Size)

  OPENSTOREINPUT(2, FIRSTEL(PREDEFDATA), 4853);

  //   653     Open Temp Output (Icode Out, 1)                  {I-Code Temp file}

  OPENTEMPOUTPUT(1, 1);

  //   654     Select Output(Icode Out)

  _imp_SELECTOUTPUT(1);

  //   655
  //   656     %if Options & Special P2 Diag Bit # 0 %start

  if (OPTIONS & (-2147483648) == 0) goto L_007F;

    //   657        { This is a special I-code to turn on Pass 2 diags }
    //   658        Print Symbol('y');  Print Symbol(16_8F);  Print Symbol(16_FF)

  _imp_PRINTSYMBOL(121);
  _imp_PRINTSYMBOL(143);
  _imp_PRINTSYMBOL(255);

  //   659     %finish

L_007F:;

//   660
//   661     Pass1(Stats, Faults, Options)

  PASS1(/*?*/ &STATS, /*?*/ &FAULTS, OPTIONS);

  //   662
  //   663     Select Output(Icode Out);       Close Output

  _imp_SELECTOUTPUT(1);
  _imp_CLOSEOUTPUT();

  //   664     Select Input(1);                Close Input

  _imp_SELECTINPUT(1);
  _imp_CLOSEINPUT();

  //   665
  //   666     Report (0)

  REPORT(0);

  //   667     Report (Listing Stream) %if Want Listing = Yes

  if (WANTLISTING != 1) goto L_0080;
  REPORT(7);
L_0080:;

//   668     Select Output (Listing Stream); Close Output

  _imp_SELECTOUTPUT(7);
  _imp_CLOSEOUTPUT();

  //   669
  //   670     %if Faults = 0 %and Want Obj = Yes %start

  if (FAULTS != 0) goto L_0081;
  if (WANTOBJ != 1) goto L_0081;

    //   671        {
    //   672        { Do the back end if no errors and required
    //   673        {
    //   674        { Pass 2
    //   675        {
    //   676        Open Temp  Input (Icode In, 1)         {Main I-Code file}

  OPENTEMPINPUT(1, 1);

  //   677  !     Open Temp Output (Code Stream, 2)      {code}
  //   678  !     Open Temp Output (Blocks Stream, 3)    {blocks info}
  //   679
  //   680        %begin

  { /*%begin*/

    //   681           %on IO Error %start

    if (!_imp_on_event(9)) goto L_0081;

      //   682              Fatal Error ("unable to open " . Object File . " as object file")

    FATALERROR(
        *({
          __typeof__(_imp_string255) tmp = *({
            _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
                                             _imp_string255 tmp =
                                                 _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("unable to open "),
                                                           (_imp_string *)/*?*/ &OBJECTFILE);
                                             (_imp_string255 *)&tmp;
                                           }),
                                           (_imp_string *)/*?*/ _imp_str_literal_ptr(" as object file"));
            (_imp_string255 *)&tmp;
          }) /*q*/;
          (_imp_string255 *)&tmp;
        })
    );

    //   683           %finish

  L_0081:;

  //   684           Open Output(Object Stream, Object File)

    _imp_OPENOUTPUT(1,
                    *({
                      __typeof__(_imp_string255) tmp = OBJECTFILE /*q*/;
                      (_imp_string255 *)&tmp;
                    })
    );

    //   685        %end

    goto end_1004;
  end_1004:;
  }

  //   686
  //   687        Select Output (0)

  _imp_SELECTOUTPUT(0);

  //   688
  //   689        Pass2 Result = Pass2 (0, Options, Global Info)

  PASS2RESULT = PASS2(0, OPTIONS, /*?*/ &GLOBALINFO);

  //   690
  //   691        Select Input(Icode In);        Close Input

  _imp_SELECTINPUT(1);
  _imp_CLOSEINPUT();

  //   692  !     Select Output(Code Stream);    Close Output
  //   693  !     Select Output(Blocks Stream);  Close Output
  //   694
  //   695  !     Delete Temp (1);  !for now, always keep Icode file
  //   696
  //   697  !     %if Pass2 Result & Pass2 Error = 0 %start
  //   698  !        {
  //   699  !        { Pass2 okay - on to Pass3
  //   700  !        {
  //   701  !        %begin
  //   702  !           %on IO Error %start
  //   703  !              Fatal Error ("unable to open " . Object File . " as object file")
  //   704  !           %finish
  //   705  !           %if Want Hex = No %start
  //   706  !              Open Binary Output(Object Stream, Object File)
  //   707  !           %else
  //   708  !              Open Output(Object Stream, Object File)
  //   709  !           %finish
  //   710  !        %end
  //   711  !        Open Temp Input (Code Stream, 2)
  //   712  !        Open Temp Input (Blocks Stream, 3)
  //   713  !        Select Output(Object Stream)
  //   714  !
  //   715  !        Pass3(P3 Switch, Global Info)
  //   716  !
  //   717  !        Select Output(Object Stream); Close Output
  //   718  !        Select Input(Code Stream);    Close Input
  //   719  !        Select Input(Blocks Stream);  Close Input
  //   720  !
  //   721  !     %finish
  //   722  !
  //   723  !     Delete Temp (2)
  //   724  !     Delete Temp (3)
  //   725
  //   726     %finish

L_0082:;

//   727
//   728  %end

  return;
} /* end of IMP */

// ?OK unused
// ?J unused
// ?REQUESTEDINCLUDES unused
//   729
//   730  %routine Compile with Traceback

static void COMPILEWITHTRACEBACK(void) {
  //   731     Imp

  IMP();

  //   732  %end

  return;
} /* end of COMPILEWITHTRACEBACK */

//   733
//   734  %routine Compile with no Traceback

static void COMPILEWITHNOTRACEBACK(void) {
  //   735     %integer I

  int I;

  //   736     %on %event * %start

  if (!_imp_on_event(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) goto L_0082;

    //   737  !*FC*!      Delete Temp (I) %for I = 1, 1, NTemps
    //   738        %if Event_Event = IO Error %start

  if (_imp_EVENT().EVENT != 9) goto L_0083;

    //   739           Fatal Error ("file system failure: " . ItoS(Event_{Extra}Info,0))

  FATALERROR(
      *({
        __typeof__(_imp_string255) tmp = *({
          _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("file system failure: "), ({
                                           __typeof__(_imp_string255) tmp; /*E*/
                                           tmp = _imp_ITOS(_imp_EVENT().INFO, 0);
                                           (void *)&tmp;
                                         }));
          (_imp_string255 *)&tmp;
        }) /*q*/;
        (_imp_string255 *)&tmp;
      })
  );

  //   740        %else %if Event_Event = 2 %and Event_Sub = 1

  goto L_0084;
L_0083:;
  if (_imp_EVENT().EVENT != 2) goto L_0085;
  if (_imp_EVENT().SUB != 1) goto L_0085;

    //   741           Fatal Error ("not enough memory")

  FATALERROR(_imp_str_literal("not enough memory"));

  //   742        %else %if Event_Event = 0 = Event_Sub

  goto L_0084;
L_0085:;
  {
// Double-sided test on 0 (Part I)
    int tmp;
    if (_imp_EVENT().EVENT != (tmp = 0)) goto L_0086;
// Double-sided test on 0 (Part II)
    if (tmp != _imp_EVENT().SUB) goto L_0086;
  }

  //   743           %stop

  _imp_stop(0);

  //   744        %else

L_0086:;

//   745           CSR ("event ".Itos(Event_Event,0).",".Itos(Event_Sub,0).",". %c

  CSR(
      *({
        __typeof__(_imp_string255) tmp = *({
          _imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
                                           _imp_string255 tmp = _imp_join(
                                               (_imp_string *)/*?*/ &*({
                                                 _imp_string255 tmp = _imp_join(
                                                     (_imp_string *)/*?*/ &*({
                                                       _imp_string255 tmp = _imp_join(
                                                           (_imp_string *)/*?*/ &*({
                                                             _imp_string255 tmp = _imp_join(
                                                                 (_imp_string *)/*?*/ _imp_str_literal_ptr("event "), ({
                                                                   __typeof__(_imp_string255) tmp; /*E*/
                                                                   tmp = _imp_ITOS(_imp_EVENT().EVENT, 0);
                                                                   (void *)&tmp;
                                                                 }));
                                                             (_imp_string255 *)&tmp;
                                                           }),
                                                           (_imp_string *)/*?*/ _imp_str_literal_ptr(","));
                                                       (_imp_string255 *)&tmp;
                                                     }),
                                                     ({
                                                       __typeof__(_imp_string255) tmp; /*E*/
                                                       tmp = _imp_ITOS(_imp_EVENT().SUB, 0);
                                                       (void *)&tmp;
                                                     }));
                                                 (_imp_string255 *)&tmp;
                                               }),
                                               (_imp_string *)/*?*/ _imp_str_literal_ptr(","));
                                           (_imp_string255 *)&tmp;
                                         }),
                                         ({
                                           __typeof__(_imp_string255) tmp; /*E*/
                                           tmp = _imp_ITOS(_imp_EVENT().INFO, 0);
                                           (void *)&tmp;
                                         }));
          (_imp_string255 *)&tmp;
        }) /*q*/;
        (_imp_string255 *)&tmp;
      })
  );

  //   746+               Itos(Event_{Extra}Info,0))
  //   747        %finish

L_0084:;

//   748     %finish

L_0082:;

//   749     Imp

  IMP();

  //   750  %end

  return;
} /* end of COMPILEWITHNOTRACEBACK */

// ?I unused
//   751
//   752  { Start here }
//   753
//   754  %begin

int main(int argc, char **argv) { /*%begin*/
  _imp_initialise(argc, argv);

  //   755
  //   756     %if Translate ("3L_TRACEBACK") = "3L_TRACEBACK" %c

  if (_imp_strcmp((_imp_string *)/*?*/ &TRANSLATE(_imp_str_literal("3L_TRACEBACK")),
                  (_imp_string *)/*?*/ _imp_str_literal_ptr("3L_TRACEBACK")) != 0)
    goto L_0087;

  COMPILEWITHNOTRACEBACK();
  goto L_0088;
L_0087:;
  COMPILEWITHTRACEBACK();
L_0088:;

//   757+       %then Compile with no Traceback %c
//   758+       %else Compile with Traceback
//   759
//   760  %endofprogram

  _imp_stop(0);
  return 0;
end_0:;
}