shithub: 9ferno

ref: 21336d544ae90e20070fd7c8be67f3f2c9ccbe38
dir: /tests/sh.debug/

View raw version
declare module Sys
declare module Draw
declare module Bufio
declare module BufioFill
declare module ChanFill
declare module String
declare module Filepat
declare module Env
declare module Command
declare module Sh
declare module Shellbuiltin
declare module YYSys
variable 'SELF' val '"$self"'
variable 'Sys->PATH' val '"$Sys"'
variable 'Sys->Maxint' val '2147483647'
variable 'Sys->QTDIR' val '128'
variable 'Sys->QTAPPEND' val '64'
variable 'Sys->QTEXCL' val '32'
variable 'Sys->QTAUTH' val '8'
variable 'Sys->QTTMP' val '4'
variable 'Sys->QTFILE' val '0'
variable 'Sys->nulldir' val 'Dir(nil, nil, nil, nil, (-1, -1, -1), -1, -1, -1, -1, -1, -1)'
variable 'Sys->zerodir' val 'Dir(nil, nil, nil, nil, (0, 0, 0), 0, 0, 0, 0, 0, 0)'
variable 'Sys->ATOMICIO' val '8192'
variable 'Sys->SEEKSTART' val '0'
variable 'Sys->SEEKRELA' val '1'
variable 'Sys->SEEKEND' val '2'
variable 'Sys->NAMEMAX' val '256'
variable 'Sys->ERRMAX' val '128'
variable 'Sys->WAITLEN' val '192'
variable 'Sys->OREAD' val '0'
variable 'Sys->OWRITE' val '1'
variable 'Sys->ORDWR' val '2'
variable 'Sys->OTRUNC' val '16'
variable 'Sys->ORCLOSE' val '64'
variable 'Sys->OEXCL' val '4096'
variable 'Sys->DMDIR' val '-2147483648'
variable 'Sys->DMAPPEND' val '1073741824'
variable 'Sys->DMEXCL' val '536870912'
variable 'Sys->DMAUTH' val '134217728'
variable 'Sys->DMTMP' val '67108864'
variable 'Sys->MREPL' val '0'
variable 'Sys->MBEFORE' val '1'
variable 'Sys->MAFTER' val '2'
variable 'Sys->MCREATE' val '4'
variable 'Sys->MCACHE' val '16'
variable 'Sys->NEWFD' val '(1)'
variable 'Sys->FORKFD' val '(2)'
variable 'Sys->NEWNS' val '(4)'
variable 'Sys->FORKNS' val '(8)'
variable 'Sys->NEWPGRP' val '(16)'
variable 'Sys->NODEVS' val '(32)'
variable 'Sys->NEWENV' val '(64)'
variable 'Sys->FORKENV' val '(128)'
variable 'Sys->EXPWAIT' val '0'
variable 'Sys->EXPASYNC' val '1'
variable 'Sys->UTFmax' val '4'
variable 'Sys->UTFerror' val '65533'
variable 'Sys->Runemax' val '1114111'
variable 'Sys->Runemask' val '2097151'
variable 'Draw->PATH' val '"$Draw"'
variable 'Draw->Opaque' val '-1'
variable 'Draw->Transparent' val '0'
variable 'Draw->Black' val '255'
variable 'Draw->White' val '-1'
variable 'Draw->Red' val '-16776961'
variable 'Draw->Green' val '16711935'
variable 'Draw->Blue' val '65535'
variable 'Draw->Cyan' val '16777215'
variable 'Draw->Magenta' val '-16711681'
variable 'Draw->Yellow' val '-65281'
variable 'Draw->Grey' val '-286331137'
variable 'Draw->Paleyellow' val '-21761'
variable 'Draw->Darkyellow' val '-286351617'
variable 'Draw->Darkgreen' val '1149781247'
variable 'Draw->Palegreen' val '-1426085121'
variable 'Draw->Medgreen' val '-1999861505'
variable 'Draw->Darkblue' val '22015'
variable 'Draw->Palebluegreen' val '-1426063361'
variable 'Draw->Paleblue' val '48127'
variable 'Draw->Bluegreen' val '8947967'
variable 'Draw->Greygreen' val '1437248255'
variable 'Draw->Palegreygreen' val '-1628508417'
variable 'Draw->Yellowgreen' val '-1718006529'
variable 'Draw->Medblue' val '39423'
variable 'Draw->Greyblue' val '6142975'
variable 'Draw->Palegreyblue' val '1234427391'
variable 'Draw->Purpleblue' val '-2004300545'
variable 'Draw->Notacolor' val '-256'
variable 'Draw->Nofill' val 'Notacolor'
variable 'Draw->Endsquare' val '0'
variable 'Draw->Enddisc' val '1'
variable 'Draw->Endarrow' val '2'
variable 'Draw->Flushoff' val '0'
variable 'Draw->Flushon' val '1'
variable 'Draw->Flushnow' val '2'
variable 'Draw->Refbackup' val '0'
variable 'Draw->Refnone' val '1'
variable 'Draw->SinD' val '8'
variable 'Draw->DinS' val '4'
variable 'Draw->SoutD' val '2'
variable 'Draw->DoutS' val '1'
variable 'Draw->S' val '10'
variable 'Draw->SoverD' val '11'
variable 'Draw->SatopD' val '9'
variable 'Draw->SxorD' val '3'
variable 'Draw->D' val '5'
variable 'Draw->DoverS' val '7'
variable 'Draw->DatopS' val '6'
variable 'Draw->DxorS' val '3'
variable 'Draw->Clear' val '0'
variable 'Draw->CRed' val 'iota'
variable 'Draw->CGreen' val 'iota'
variable 'Draw->CBlue' val 'iota'
variable 'Draw->CGrey' val 'iota'
variable 'Draw->CAlpha' val 'iota'
variable 'Draw->CMap' val 'iota'
variable 'Draw->CIgnore' val 'iota'
variable 'Draw->GREY1' val 'Chans(49)'
variable 'Draw->GREY2' val 'Chans(50)'
variable 'Draw->GREY4' val 'Chans(52)'
variable 'Draw->GREY8' val 'Chans(56)'
variable 'Draw->CMAP8' val 'Chans(88)'
variable 'Draw->RGB15' val 'Chans(1627723045)'
variable 'Draw->RGB16' val 'Chans(333349)'
variable 'Draw->RGB24' val 'Chans(530472)'
variable 'Draw->RGBA32' val 'Chans(402663496)'
variable 'Draw->ARGB32' val 'Chans(1208490024)'
variable 'Draw->XRGB32' val 'Chans(1745360936)'
variable 'Bufio->PATH' val '"/dis/lib/b..."'
variable 'Bufio->SEEKSTART' val 'SEEKSTART'
variable 'Bufio->SEEKRELA' val 'SEEKRELA'
variable 'Bufio->SEEKEND' val 'SEEKEND'
variable 'Bufio->OREAD' val 'OREAD'
variable 'Bufio->OWRITE' val 'OWRITE'
variable 'Bufio->ORDWR' val 'ORDWR'
variable 'Bufio->EOF' val '-1'
variable 'Bufio->ERROR' val '-2'
variable 'ChanFill->PATH' val '"/dis/lib/c..."'
variable 'String->PATH' val '"/dis/lib/s..."'
variable 'Filepat->PATH' val '"/dis/lib/f..."'
variable 'Env->PATH' val '"/dis/lib/e..."'
variable 'Command->PATH' val '"/dis/sh.di..."'
variable 'PATH' val '"/dis/sh.di..."'
variable 'Context.INTERACTIVE' val '1'
variable 'Context.VERBOSE' val '2'
variable 'Context.EXECPRINT' val '4'
variable 'Context.ERROREXIT' val '8'
variable 'Var.CHANGED' val '(1)'
variable 'Var.NOEXPORT' val '(2)'
variable 'n_BLOCK' val 'iota'
variable 'n_VAR' val 'iota'
variable 'n_BQ' val 'iota'
variable 'n_BQ2' val 'iota'
variable 'n_REDIR' val 'iota'
variable 'n_DUP' val 'iota'
variable 'n_LIST' val 'iota'
variable 'n_SEQ' val 'iota'
variable 'n_CONCAT' val 'iota'
variable 'n_PIPE' val 'iota'
variable 'n_ADJ' val 'iota'
variable 'n_WORD' val 'iota'
variable 'n_NOWAIT' val 'iota'
variable 'n_SQUASH' val 'iota'
variable 'n_COUNT' val 'iota'
variable 'n_ASSIGN' val 'iota'
variable 'n_LOCAL' val 'iota'
variable 'GLOB' val '1'
variable 'Shellbuiltin->BUILTIN' val 'iota'
variable 'Shellbuiltin->SBUILTIN' val 'iota'
variable 'Shellbuiltin->OTHER' val 'iota'
variable 'YYLEX.EOF' val '-1'
variable 'DUP' val '57346'
variable 'REDIR' val '57347'
variable 'WORD' val '57348'
variable 'OP' val '57349'
variable 'END' val '57350'
variable 'ERROR' val '57351'
variable 'ANDAND' val '57352'
variable 'OROR' val '57353'
variable 'YYEOFCODE' val '1'
variable 'YYERRCODE' val '2'
variable 'YYMAXDEPTH' val '200'
variable 'EPERM' val '"permission..."'
variable 'EPIPE' val '"write on c..."'
variable 'LIBSHELLRC' val '"/lib/sh/pr..."'
variable 'BUILTINPATH' val '"/dis/sh"'
variable 'DEBUG' val '0'
variable 'ENVSEP' val '0'
variable 'ENVHASHSIZE' val '7'
variable 'OAPPEND' val '524288'
variable 'OMASK' val '7'
variable 'NOTOKEN' val '-1'
generate desc for int
generate desc for int
	desc	$-1,4,""
variable 'YYNPROD' val '45'
variable 'YYPRIVATE' val '57344'
variable 'yydebug' val '0'
variable 'YYLAST' val '93'
generate desc for int
generate desc for int
generate desc for int
generate desc for int
generate desc for int
generate desc for int
generate desc for int
generate desc for int
generate desc for int
generate desc for int
variable 'YYFLAG' val '-1000'
typecheck tree: 
fn(){} fn() 0 0
  name usage fn() 0 0
  seq nothing 0 0
    call nothing 0 0
      -> nothing 0 0
        name sys nothing 0 0
        name fprint nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          name stderr nothing 0 0
        seq nothing 0 0
          const usage: sh [-ilexn] [-c command] [file [arg...]]
 string 0 0
    seq nothing 0 0
      raise nothing 0 0
        const fail:usage string 0 0
typecheck tree: 
fn(){} fn(path: string) 0 0
  name badmodule fn(path: string) 0 0
  seq nothing 0 0
    call nothing 0 0
      -> nothing 0 0
        name sys nothing 0 0
        name fprint nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name fildes nothing 0 0
          seq nothing 0 0
            const (2) int 0 0
        seq nothing 0 0
          const sh: cannot load %s: %r
 string 0 0
          seq nothing 0 0
            name path nothing 0 0
    seq nothing 0 0
      raise nothing 0 0
        const fail:bad module string 0 0
typecheck tree: 
fn(){} fn() 0 0
  name initialise fn() 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name sys nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            = nothing 0 0
              name sys nothing 0 0
              load Sys 0 0
                -> nothing 0 0
                  name Sys nothing 0 0
                  name PATH nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                name filepat nothing 0 0
                load Filepat 0 0
                  -> nothing 0 0
                    name Filepat nothing 0 0
                    name PATH nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    name filepat nothing 0 0
                    name nil polymorphic type 0 0
                  seq nothing 0 0
                    call nothing 0 0
                      name badmodule nothing 0 0
                      seq nothing 0 0
                        -> nothing 0 0
                          name Filepat nothing 0 0
                          name PATH nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name str nothing 0 0
                    load String 0 0
                      -> nothing 0 0
                        name String nothing 0 0
                        name PATH nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      == nothing 0 0
                        name str nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        call nothing 0 0
                          name badmodule nothing 0 0
                          seq nothing 0 0
                            -> nothing 0 0
                              name String nothing 0 0
                              name PATH nothing 0 0
                    seq nothing 0 0
                      = nothing 0 0
                        name bufio nothing 0 0
                        load Bufio 0 0
                          -> nothing 0 0
                            name Bufio nothing 0 0
                            name PATH nothing 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          == nothing 0 0
                            name bufio nothing 0 0
                            name nil polymorphic type 0 0
                          seq nothing 0 0
                            call nothing 0 0
                              name badmodule nothing 0 0
                              seq nothing 0 0
                                -> nothing 0 0
                                  name Bufio nothing 0 0
                                  name PATH nothing 0 0
                        seq nothing 0 0
                          = nothing 0 0
                            name myself nothing 0 0
                            load Sh 0 0
                              const $self string 0 0
                          seq nothing 0 0
                            if nothing 0 0
                              == nothing 0 0
                                name myself nothing 0 0
                                name nil polymorphic type 0 0
                              seq nothing 0 0
                                call nothing 0 0
                                  name badmodule nothing 0 0
                                  seq nothing 0 0
                                    const $self(Sh) string 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                name myselfbuiltin nothing 0 0
                                load Shellbuiltin 0 0
                                  const $self string 0 0
                              seq nothing 0 0
                                if nothing 0 0
                                  == nothing 0 0
                                    name myselfbuiltin nothing 0 0
                             
typecheck tree: 
fn(){} fn(drawcontext: ref Draw->Context, argv: list of string) 0 0
  name init fn(ctxt: ref Draw->Context, argv: list of string) 0 0
  seq nothing 0 0
    call nothing 0 0
      name initialise nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name opts nothing 0 0
        name blankopts nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          != nothing 0 0
            name argv nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    index nothing 0 0
                      hd nothing 0 0
                        name argv nothing 0 0
                      const (0) int 0 0
                    const (45) int 0 0
                  seq nothing 0 0
                    ++ nothing 0 0
                      . nothing 0 0
                        name opts nothing 0 0
                        name lflag nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name argv nothing 0 0
                    tl nothing 0 0
                      name argv nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name interactive nothing 0 0
            const (0) int 0 0
          seq nothing 0 0
            for nothing 0 0
              && nothing 0 0
                && nothing 0 0
                  != nothing 0 0
                    name argv nothing 0 0
                    name nil polymorphic type 0 0
                  != nothing 0 0
                    hd nothing 0 0
                      name argv nothing 0 0
                    name nil polymorphic type 0 0
                == nothing 0 0
                  index nothing 0 0
                    hd nothing 0 0
                      name argv nothing 0 0
                    const (0) int 0 0
                  const (45) int 0 0
              seq nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    := nothing 0 0
                      name i nothing 0 0
                      const (1) int 0 0
                    seq nothing 0 0
                      for nothing 0 0
                        < nothing 0 0
                          name i nothing 0 0
                          len nothing 0 0
                            hd nothing 0 0
                              name argv nothing 0 0
                        seq nothing 0 0
                          scope nothing 0 0
                            seq nothing 0 0
                              := nothing 0 0
                                name c nothing 0 0
                                index nothing 0 0
                                  hd nothing 0 0
                                    name argv nothing 0 0
                                  name i nothing 0 0
                              seq nothing 0 0
                                case nothing 0 0
                                  name c nothing 0 0
                                  seq nothing 0 0
                                    label nothing 0 0
                                      seq nothing 0 0
                                        const (105) int 0 0
                                      scope nothing 0 0
                                        = nothing 0 0
                                          name interactive nothing 0 0
                                          . nothing 0 0
                                            name Context nothing 0 0
                                            name INTERACTIVE nothing 0 0
                                    seq nothing 0 0
                                      label nothing 0 0
                                        seq nothing 0 0
                                          const (108) int 0 0
                                        scope nothing 0 0
                                          ++ nothing 0 0
                                            . nothing 0 0
                                              name opts nothing 0 0
      
typecheck tree: 
fn(){} fn(s: string): (ref Node, string) 0 0
  name parse fn(s: string): (ref Node, string) 0 0
  seq nothing 0 0
    call nothing 0 0
      name initialise nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name lex nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name YYLEX nothing 0 0
            name initstring nothing 0 0
          seq nothing 0 0
            name s nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          call nothing 0 0
            name doparse nothing 0 0
            seq nothing 0 0
              name lex nothing 0 0
              seq nothing 0 0
                const  string 0 0
                seq nothing 0 0
                  const (0) int 0 0
typecheck tree: 
fn(){} fn(drawctxt: ref Draw->Context, cmd: string): string 0 0
  name system fn(drawctxt: ref Draw->Context, cmd: string): string 0 0
  seq nothing 0 0
    call nothing 0 0
      name initialise nothing 0 0
    seq nothing 0 0
      exstat nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            := nothing 0 0
              tuple nothing 0 0
                seq nothing 0 0
                  name n nothing 0 0
                  seq nothing 0 0
                    name err nothing 0 0
              call nothing 0 0
                name parse nothing 0 0
                seq nothing 0 0
                  name cmd nothing 0 0
            seq nothing 0 0
              if nothing 0 0
                != nothing 0 0
                  name err nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  return nothing 0 0
                    name err nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    name n nothing 0 0
                    name nil polymorphic type 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      name nil polymorphic type 0 0
                seq nothing 0 0
                  return nothing 0 0
                    call nothing 0 0
                      . nothing 0 0
                        call nothing 0 0
                          . nothing 0 0
                            name Context nothing 0 0
                            name new nothing 0 0
                          seq nothing 0 0
                            name drawctxt nothing 0 0
                        name run nothing 0 0
                      seq nothing 0 0
                        :: nothing 0 0
                          ref nothing 0 0
                            call nothing 0 0
                              name Listnode nothing 0 0
                              seq nothing 0 0
                                name n nothing 0 0
                                seq nothing 0 0
                                  name nil polymorphic type 0 0
                          name nil polymorphic type 0 0
                        seq nothing 0 0
                          const (0) int 0 0
        except nothing 0 0
          name e nothing 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                const fail:* string 0 0
              scope nothing 0 0
                return nothing 0 0
                  call nothing 0 0
                    name failurestatus nothing 0 0
                    seq nothing 0 0
                      name e nothing 0 0
typecheck tree: 
fn(){} fn(drawctxt: ref Draw->Context, argv: list of string): string 0 0
  name run fn(drawctxt: ref Draw->Context, argv: list of string): string 0 0
  seq nothing 0 0
    call nothing 0 0
      name initialise nothing 0 0
    seq nothing 0 0
      exstat nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            return nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name Context nothing 0 0
                      name new nothing 0 0
                    seq nothing 0 0
                      name drawctxt nothing 0 0
                  name run nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name stringlist2list nothing 0 0
                    seq nothing 0 0
                      name argv nothing 0 0
                  seq nothing 0 0
                    const (0) int 0 0
        except nothing 0 0
          name e nothing 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                const fail:* string 0 0
              scope nothing 0 0
                return nothing 0 0
                  call nothing 0 0
                    name failurestatus nothing 0 0
                    seq nothing 0 0
                      name e nothing 0 0
typecheck tree: 
fn(){} fn(fd: ref Sys->FD): int 0 0
  name isconsole fn(fd: ref Sys->FD): int 0 0
  seq nothing 0 0
    := nothing 0 0
      tuple nothing 0 0
        seq nothing 0 0
          name ok1 nothing 0 0
          seq nothing 0 0
            name d1 nothing 0 0
      call nothing 0 0
        -> nothing 0 0
          name sys nothing 0 0
          name fstat nothing 0 0
        seq nothing 0 0
          name fd nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        tuple nothing 0 0
          seq nothing 0 0
            name ok2 nothing 0 0
            seq nothing 0 0
              name d2 nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name stat nothing 0 0
          seq nothing 0 0
            const /dev/cons string 0 0
      seq nothing 0 0
        if nothing 0 0
          || nothing 0 0
            < nothing 0 0
              name ok1 nothing 0 0
              const (0) int 0 0
            < nothing 0 0
              name ok2 nothing 0 0
              const (0) int 0 0
          seq nothing 0 0
            return nothing 0 0
              const (0) int 0 0
        seq nothing 0 0
          return nothing 0 0
            && nothing 0 0
              == nothing 0 0
                . nothing 0 0
                  name d1 nothing 0 0
                  name dtype nothing 0 0
                . nothing 0 0
                  name d2 nothing 0 0
                  name dtype nothing 0 0
              == nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name d1 nothing 0 0
                    name qid nothing 0 0
                  name path nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name d2 nothing 0 0
                    name qid nothing 0 0
                  name path nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 0 0
  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 0 0
  seq nothing 0 0
    exstat nothing 0 0
      scope nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name fd nothing 0 0
            call nothing 0 0
              -> nothing 0 0
                name sys nothing 0 0
                name open nothing 0 0
              seq nothing 0 0
                name path nothing 0 0
                seq nothing 0 0
                  -> nothing 0 0
                    name Sys nothing 0 0
                    name OREAD nothing 0 0
          seq nothing 0 0
            if nothing 0 0
              != nothing 0 0
                name fd nothing 0 0
                name nil polymorphic type 0 0
              seq nothing 0 0
                call nothing 0 0
                  name runfile nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      name fd nothing 0 0
                      seq nothing 0 0
                        name path nothing 0 0
                        seq nothing 0 0
                          name args nothing 0 0
                if nothing 0 0
                  name reporterr nothing 0 0
                  seq nothing 0 0
                    call nothing 0 0
                      . nothing 0 0
                        name ctxt nothing 0 0
                        name fail nothing 0 0
                      seq nothing 0 0
                        const bad script path string 0 0
                        seq nothing 0 0
                          call nothing 0 0
                            -> nothing 0 0
                              name sys nothing 0 0
                              name sprint nothing 0 0
                            seq nothing 0 0
                              const sh: cannot open %s: %r string 0 0
                              seq nothing 0 0
                                name path nothing 0 0
      except nothing 0 0
        seq nothing 0 0
          label nothing 0 0
            seq nothing 0 0
              const fail:* string 0 0
            scope nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  ! nothing 0 0
                    name reporterr nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                raise nothing 0 0
                  nothing nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 0 0
  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 0 0
  seq nothing 0 0
    call nothing 0 0
      . nothing 0 0
        name ctxt nothing 0 0
        name push nothing 0 0
    seq nothing 0 0
      exstat nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              . nothing 0 0
                name ctxt nothing 0 0
                name setlocal nothing 0 0
              seq nothing 0 0
                const 0 string 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name stringlist2list nothing 0 0
                    seq nothing 0 0
                      :: nothing 0 0
                        name path nothing 0 0
                        name nil polymorphic type 0 0
            seq nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name setlocal nothing 0 0
                seq nothing 0 0
                  const * string 0 0
                  seq nothing 0 0
                    name args nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name lex nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name YYLEX nothing 0 0
                      name initfile nothing 0 0
                    seq nothing 0 0
                      name fd nothing 0 0
                      seq nothing 0 0
                        name path nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    name DEBUG nothing 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        name debug nothing 0 0
                        seq nothing 0 0
                          call nothing 0 0
                            name sprint nothing 0 0
                            seq nothing 0 0
                              const parse(interactive == %d) string 0 0
                              seq nothing 0 0
                                != nothing 0 0
                                  & nothing 0 0
                                    call nothing 0 0
                                      . nothing 0 0
                                        name ctxt nothing 0 0
                                        name options nothing 0 0
                                    . nothing 0 0
                                      name ctxt nothing 0 0
                                      name INTERACTIVE nothing 0 0
                                  const (0) int 0 0
                  seq nothing 0 0
                    := nothing 0 0
                      name prompt nothing 0 0
                      :: nothing 0 0
                        const  string 0 0
                        :: nothing 0 0
                          const  string 0 0
                          name nil polymorphic type 0 0
                    seq nothing 0 0
                      vardecl string 0 0
                        seq nothing 0 0
                      seq nothing 0 0
                        for nothing 0 0
                          ! nothing 0 0
                            . nothing 0 0
                              name lex nothing 0 0
                              name eof nothing 0 0
                          seq nothing 0 0
                            scope nothing 0 0
                              seq nothing 0 0
                                := nothing 0 0
                                  name interactive nothing 0 0
                                  & nothing 0 0
                                    call nothing 0 0
                                      . nothing 0 0
                                        name ctxt nothing 0 0
                                        name options nothing 0 0
                                    . nothing 0 0
                                      name ctxt nothing 0 0
                    
typecheck tree: 
fn(){} fn(e: string): int 0 0
  name nonexistent fn(e: string): int 0 0
  seq nothing 0 0
    := nothing 0 0
      name errs nothing 0 0
      array nothing 0 0
        nothing nothing 0 0
        seq nothing 0 0
          elem nothing 0 0
            const does not exist string 0 0
          seq nothing 0 0
            elem nothing 0 0
              const directory entry not found string 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name i nothing 0 0
          const (0) int 0 0
        for nothing 0 0
          < nothing 0 0
            name i nothing 0 0
            len nothing 0 0
              name errs nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name j nothing 0 0
                  len nothing 0 0
                    index nothing 0 0
                      name errs nothing 0 0
                      name i nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    && nothing 0 0
                      <= nothing 0 0
                        name j nothing 0 0
                        len nothing 0 0
                          name e nothing 0 0
                      == nothing 0 0
                        slice nothing 0 0
                          name e nothing 0 0
                          seq nothing 0 0
                            - nothing 0 0
                              len nothing 0 0
                                name e nothing 0 0
                              name j nothing 0 0
                            nothing nothing 0 0
                        index nothing 0 0
                          name errs nothing 0 0
                          name i nothing 0 0
                    seq nothing 0 0
                      return nothing 0 0
                        const (1) int 0 0
            ++ nothing 0 0
              name i nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          const (0) int 0 0
typecheck tree: 
fn(){} fn(n: ref Node): ref Node 0 0
  name pipe2cmd fn(n: ref Node): ref Node 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        == nothing 0 0
          name n nothing 0 0
          name nil polymorphic type 0 0
        != nothing 0 0
          . nothing 0 0
            name n nothing 0 0
            name ntype nothing 0 0
          name n_PIPE nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name n nothing 0 0
    seq nothing 0 0
      return nothing 0 0
        call nothing 0 0
          name mk nothing 0 0
          seq nothing 0 0
            name n_ADJ nothing 0 0
            seq nothing 0 0
              call nothing 0 0
                name mk nothing 0 0
                seq nothing 0 0
                  name n_BLOCK nothing 0 0
                  seq nothing 0 0
                    name n nothing 0 0
                    seq nothing 0 0
                      name nil polymorphic type 0 0
              seq nothing 0 0
                call nothing 0 0
                  name mk nothing 0 0
                  seq nothing 0 0
                    name n_VAR nothing 0 0
                    seq nothing 0 0
                      ref nothing 0 0
                        call nothing 0 0
                          name Node nothing 0 0
                          seq nothing 0 0
                            name n_WORD nothing 0 0
                            seq nothing 0 0
                              name nil polymorphic type 0 0
                              seq nothing 0 0
                                name nil polymorphic type 0 0
                                seq nothing 0 0
                                  const * string 0 0
                                  seq nothing 0 0
                                    name nil polymorphic type 0 0
                      seq nothing 0 0
                        name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, n: ref Node, last: int): string 0 0
  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      name DEBUG nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          name debug nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              name sprint nothing 0 0
              seq nothing 0 0
                const walking: %s string 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name cmd2string nothing 0 0
                    seq nothing 0 0
                      name n nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        && nothing 0 0
          != nothing 0 0
            name n nothing 0 0
            name nil polymorphic type 0 0
          == nothing 0 0
            . nothing 0 0
              name n nothing 0 0
              name ntype nothing 0 0
            name n_SEQ nothing 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name status nothing 0 0
                call nothing 0 0
                  name walk nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      . nothing 0 0
                        name n nothing 0 0
                        name left nothing 0 0
                      seq nothing 0 0
                        const (0) int 0 0
              seq nothing 0 0
                if nothing 0 0
                  && nothing 0 0
                    & nothing 0 0
                      call nothing 0 0
                        . nothing 0 0
                          name ctxt nothing 0 0
                          name options nothing 0 0
                      . nothing 0 0
                        name ctxt nothing 0 0
                        name ERROREXIT nothing 0 0
                    != nothing 0 0
                      name status nothing 0 0
                      name nil polymorphic type 0 0
                  seq nothing 0 0
                    raise nothing 0 0
                      + nothing 0 0
                        const fail: string 0 0
                        name status nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name setstatus nothing 0 0
                    seq nothing 0 0
                      name ctxt nothing 0 0
                      seq nothing 0 0
                        name status nothing 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      name n nothing 0 0
                      . nothing 0 0
                        name n nothing 0 0
                        name right nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          == nothing 0 0
            name n nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            return nothing 0 0
              name nil polymorphic type 0 0
        seq nothing 0 0
          case nothing 0 0
            . nothing 0 0
              name n nothing 0 0
              name ntype nothing 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  name n_PIPE nothing 0 0
                scope nothing 0 0
                  return nothing 0 0
                    call nothing 0 0
                      name waitfor nothing 0 0
                      seq nothing 0 0
                        name ctxt nothing 0 0
                        seq nothing 0 0
                          call nothing 0 0
                            name walkpipeline nothing 0 0
                            seq nothing 0 0
                              name ctxt nothing 0 0
                              seq nothing 0 0
                                name n nothing 0 0
                                seq nothing 0 0
                                  name nil polymorphic type 0 0
                                  seq nothing 0 0
                                    - nothing 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
  seq nothing 0 0
    := nothing 0 0
      name redirs nothing 0 0
      ref nothing 0 0
        name Redirlist nothing 0 0
    seq nothing 0 0
      vardecl list of ref Listnode 0 0
        seq nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          && nothing 0 0
            != nothing 0 0
              . nothing 0 0
                name n nothing 0 0
                name right nothing 0 0
              name nil polymorphic type 0 0
            || nothing 0 0
              == nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name n nothing 0 0
                    name right nothing 0 0
                  name ntype nothing 0 0
                name n_ASSIGN nothing 0 0
              == nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name n nothing 0 0
                    name right nothing 0 0
                  name ntype nothing 0 0
                name n_LOCAL nothing 0 0
          seq nothing 0 0
            = nothing 0 0
              name val nothing 0 0
              call nothing 0 0
                name assign nothing 0 0
                seq nothing 0 0
                  name ctxt nothing 0 0
                  seq nothing 0 0
                    . nothing 0 0
                      name n nothing 0 0
                      name right nothing 0 0
            = nothing 0 0
              name val nothing 0 0
              call nothing 0 0
                name glob nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name glom nothing 0 0
                    seq nothing 0 0
                      name ctxt nothing 0 0
                      seq nothing 0 0
                        . nothing 0 0
                          name n nothing 0 0
                          name right nothing 0 0
                        seq nothing 0 0
                          name redirs nothing 0 0
                          seq nothing 0 0
                            name nil polymorphic type 0 0
        seq nothing 0 0
          := nothing 0 0
            name vars nothing 0 0
            call nothing 0 0
              name glom nothing 0 0
              seq nothing 0 0
                name ctxt nothing 0 0
                seq nothing 0 0
                  . nothing 0 0
                    name n nothing 0 0
                    name left nothing 0 0
                  seq nothing 0 0
                    name redirs nothing 0 0
                    seq nothing 0 0
                      name nil polymorphic type 0 0
          seq nothing 0 0
            if nothing 0 0
              == nothing 0 0
                name vars nothing 0 0
                name nil polymorphic type 0 0
              seq nothing 0 0
                call nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name fail nothing 0 0
                  seq nothing 0 0
                    const bad assign string 0 0
                    seq nothing 0 0
                      const sh: nil variable name string 0 0
            seq nothing 0 0
              if nothing 0 0
                != nothing 0 0
                  . nothing 0 0
                    name redirs nothing 0 0
                    name r nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name fail nothing 0 0
                    seq nothing 0 0
                      const bad assign string 0 0
                      seq nothing 0 0
                        const sh: redirections not allowed in assignment string 0 0
              seq nothing 0 0
                := nothing 0 0
                  name tval nothing 0 0
                  name val nothing 0 0
                seq nothing 0 0
                  for nothing
typecheck tree: 
fn(){} fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 0 0
  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name n nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name fds nothing 0 0
        array array of ref Sys->FD 0 0
          const (2) int 0 0
      seq nothing 0 0
        vardecl list of int 0 0
          seq nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name rfdno nothing 0 0
            - nothing 0 0
              const (1) int 0 0
          seq nothing 0 0
            if nothing 0 0
              == nothing 0 0
                . nothing 0 0
                  name n nothing 0 0
                  name ntype nothing 0 0
                name n_PIPE nothing 0 0
              seq nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      == nothing 0 0
                        call nothing 0 0
                          -> nothing 0 0
                            name sys nothing 0 0
                            name pipe nothing 0 0
                          seq nothing 0 0
                            name fds nothing 0 0
                        - nothing 0 0
                          const (1) int 0 0
                      seq nothing 0 0
                        call nothing 0 0
                          . nothing 0 0
                            name ctxt nothing 0 0
                            name fail nothing 0 0
                          seq nothing 0 0
                            const no pipe string 0 0
                            seq nothing 0 0
                              call nothing 0 0
                                -> nothing 0 0
                                  name sys nothing 0 0
                                  name sprint nothing 0 0
                                seq nothing 0 0
                                  const sh: cannot make pipe: %r string 0 0
                    seq nothing 0 0
                      := nothing 0 0
                        name nwfdno nothing 0 0
                        - nothing 0 0
                          const (1) int 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          != nothing 0 0
                            . nothing 0 0
                              name n nothing 0 0
                              name redir nothing 0 0
                            name nil polymorphic type 0 0
                          seq nothing 0 0
                            scope nothing 0 0
                              seq nothing 0 0
                                := nothing 0 0
                                  tuple nothing 0 0
                                    seq nothing 0 0
                                      name fd1 nothing 0 0
                                      seq nothing 0 0
                                        name fd2 nothing 0 0
                                  tuple nothing 0 0
                                    seq nothing 0 0
                                      . nothing 0 0
                                        . nothing 0 0
                                          name n nothing 0 0
                                          name redir nothing 0 0
                                        name fd2 nothing 0 0
                                      seq nothing 0 0
                                        . nothing 0 0
                                          . nothing 0 0
                                            name n nothing 0 0
                                            name redir nothing 0 0
                                          name fd1 nothing 0 0
                                seq nothing 0 0
                                  if nothing 0 0
                                    == nothing 0 0
typecheck tree: 
fn(){} fn(f: string, mode: int, fd: int): Redirword 0 0
  name makeredir fn(f: string, mode: int, fd: int): Redirword 0 0
  seq nothing 0 0
    return nothing 0 0
      call nothing 0 0
        name Redirword nothing 0 0
        seq nothing 0 0
          name nil polymorphic type 0 0
          seq nothing 0 0
            name f nothing 0 0
            seq nothing 0 0
              call nothing 0 0
                name Redir nothing 0 0
                seq nothing 0 0
                  name mode nothing 0 0
                  seq nothing 0 0
                    name fd nothing 0 0
                    seq nothing 0 0
                      - nothing 0 0
                        const (1) int 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 0 0
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name n nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      if nothing 0 0
        != nothing 0 0
          . nothing 0 0
            name n nothing 0 0
            name ntype nothing 0 0
          name n_ADJ nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            call nothing 0 0
              name listjoin nothing 0 0
              seq nothing 0 0
                call nothing 0 0
                  name glomoperation nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      name n nothing 0 0
                      seq nothing 0 0
                        name redirs nothing 0 0
                seq nothing 0 0
                  name onto nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name nlist nothing 0 0
          call nothing 0 0
            name glom nothing 0 0
            seq nothing 0 0
              name ctxt nothing 0 0
              seq nothing 0 0
                . nothing 0 0
                  name n nothing 0 0
                  name right nothing 0 0
                seq nothing 0 0
                  name redirs nothing 0 0
                  seq nothing 0 0
                    name onto nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            != nothing 0 0
              . nothing 0 0
                . nothing 0 0
                  name n nothing 0 0
                  name left nothing 0 0
                name ntype nothing 0 0
              name n_ADJ nothing 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name nlist nothing 0 0
                    call nothing 0 0
                      name listjoin nothing 0 0
                      seq nothing 0 0
                        call nothing 0 0
                          name glomoperation nothing 0 0
                          seq nothing 0 0
                            name ctxt nothing 0 0
                            seq nothing 0 0
                              . nothing 0 0
                                name n nothing 0 0
                                name left nothing 0 0
                              seq nothing 0 0
                                name redirs nothing 0 0
                        seq nothing 0 0
                          name nlist nothing 0 0
              = nothing 0 0
                name nlist nothing 0 0
                call nothing 0 0
                  name glom nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      . nothing 0 0
                        name n nothing 0 0
                        name left nothing 0 0
                      seq nothing 0 0
                        name redirs nothing 0 0
                        seq nothing 0 0
                          name nlist nothing 0 0
          seq nothing 0 0
            return nothing 0 0
              name nlist nothing 0 0
typecheck tree: 
fn(){} fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 0 0
  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    vardecl list of ref Listnode 0 0
      seq nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name left nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          = nothing 0 0
            name l nothing 0 0
            :: nothing 0 0
              hd nothing 0 0
                name left nothing 0 0
              name l nothing 0 0
          = nothing 0 0
            name left nothing 0 0
            tl nothing 0 0
              name left nothing 0 0
      seq nothing 0 0
        for nothing 0 0
          != nothing 0 0
            name l nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            = nothing 0 0
              name right nothing 0 0
              :: nothing 0 0
                hd nothing 0 0
                  name l nothing 0 0
                name right nothing 0 0
            = nothing 0 0
              name l nothing 0 0
              tl nothing 0 0
                name l nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            name right nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 0 0
  name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        != nothing 0 0
          . nothing 0 0
            name redir nothing 0 0
            name fd2 nothing 0 0
          - nothing 0 0
            const (1) int 0 0
        & nothing 0 0
          . nothing 0 0
            name redir nothing 0 0
            name rtype nothing 0 0
          name OAPPEND nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name fail nothing 0 0
          seq nothing 0 0
            const bad redir string 0 0
            seq nothing 0 0
              const sh: bad redirection string 0 0
    seq nothing 0 0
      := nothing 0 0
        name r nothing 0 0
        * nothing 0 0
          name redir nothing 0 0
      seq nothing 0 0
        case nothing 0 0
          . nothing 0 0
            name redir nothing 0 0
            name rtype nothing 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                -> nothing 0 0
                  name Sys nothing 0 0
                  name OREAD nothing 0 0
              scope nothing 0 0
                = nothing 0 0
                  . nothing 0 0
                    name r nothing 0 0
                    name rtype nothing 0 0
                  -> nothing 0 0
                    name Sys nothing 0 0
                    name OWRITE nothing 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  -> nothing 0 0
                    name Sys nothing 0 0
                    name OWRITE nothing 0 0
                scope nothing 0 0
                  = nothing 0 0
                    . nothing 0 0
                      name r nothing 0 0
                      name rtype nothing 0 0
                    -> nothing 0 0
                      name Sys nothing 0 0
                      name OREAD nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name p nothing 0 0
            array array of ref Sys->FD 0 0
              const (2) int 0 0
          seq nothing 0 0
            if nothing 0 0
              == nothing 0 0
                call nothing 0 0
                  -> nothing 0 0
                    name sys nothing 0 0
                    name pipe nothing 0 0
                  seq nothing 0 0
                    name p nothing 0 0
                - nothing 0 0
                  const (1) int 0 0
              seq nothing 0 0
                call nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name fail nothing 0 0
                  seq nothing 0 0
                    const no pipe string 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        -> nothing 0 0
                          name sys nothing 0 0
                          name sprint nothing 0 0
                        seq nothing 0 0
                          const sh: cannot make pipe: %r string 0 0
            seq nothing 0 0
              := nothing 0 0
                name startchan nothing 0 0
                chan chan of (int, ref Expropagate) 0 0
              seq nothing 0 0
                spawn nothing 0 0
                  call nothing 0 0
                    name runasync nothing 0 0
                    seq nothing 0 0
                      name ctxt nothing 0 0
                      seq nothing 0 0
                        const (1) int 0 0
                        seq nothing 0 0
                          name cmd nothing 0 0
                          seq nothing 0 0
                            ref nothing 0 0
                              call nothing 0 0
                                name Redirlist nothing 0 0
                                seq nothing 0 0
                                  :: nothing 0 0
                              
typecheck tree: 
fn(){} fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 0 0
  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name n nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      vardecl list of ref Listnode 0 0
        seq nothing 0 0
      seq nothing 0 0
        case nothing 0 0
          . nothing 0 0
            name n nothing 0 0
            name ntype nothing 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                name n_WORD nothing 0 0
              scope nothing 0 0
                = nothing 0 0
                  name nlist nothing 0 0
                  :: nothing 0 0
                    ref nothing 0 0
                      call nothing 0 0
                        name Listnode nothing 0 0
                        seq nothing 0 0
                          name nil polymorphic type 0 0
                          seq nothing 0 0
                            . nothing 0 0
                              name n nothing 0 0
                              name word nothing 0 0
                    name nil polymorphic type 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  name n_REDIR nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    seq nothing 0 0
                      := nothing 0 0
                        name wlist nothing 0 0
                        call nothing 0 0
                          name glob nothing 0 0
                          seq nothing 0 0
                            call nothing 0 0
                              name glom nothing 0 0
                              seq nothing 0 0
                                name ctxt nothing 0 0
                                seq nothing 0 0
                                  . nothing 0 0
                                    name n nothing 0 0
                                    name left nothing 0 0
                                  seq nothing 0 0
                                    ref nothing 0 0
                                      call nothing 0 0
                                        name Redirlist nothing 0 0
                                        seq nothing 0 0
                                          name nil polymorphic type 0 0
                                    seq nothing 0 0
                                      name nil polymorphic type 0 0
                      if nothing 0 0
                        != nothing 0 0
                          len nothing 0 0
                            name wlist nothing 0 0
                          const (1) int 0 0
                        seq nothing 0 0
                          call nothing 0 0
                            . nothing 0 0
                              name ctxt nothing 0 0
                              name fail nothing 0 0
                            seq nothing 0 0
                              const bad redir string 0 0
                              seq nothing 0 0
                                const sh: single redirection operand required string 0 0
                    if nothing 0 0
                      != nothing 0 0
                        . nothing 0 0
                          hd nothing 0 0
                            name wlist nothing 0 0
                          name cmd nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        scope nothing 0 0
                          seq nothing 0 0
                            := nothing 0 0
                              name fd nothing 0 0
                              call nothing 0 0
                                name pipecmd nothing 0 0
                                seq nothing 0 0
                                  name ctxt nothing 0 0
            
typecheck tree: 
fn(){} fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
  name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        || nothing 0 0
          || nothing 0 0
            == nothing 0 0
              name n nothing 0 0
              name nil polymorphic type 0 0
            == nothing 0 0
              . nothing 0 0
                name n nothing 0 0
                name ntype nothing 0 0
              name n_SEQ nothing 0 0
          == nothing 0 0
            . nothing 0 0
              name n nothing 0 0
              name ntype nothing 0 0
            name n_PIPE nothing 0 0
        == nothing 0 0
          . nothing 0 0
            name n nothing 0 0
            name ntype nothing 0 0
          name n_NOWAIT nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name fail nothing 0 0
          seq nothing 0 0
            const bad $ arg string 0 0
            seq nothing 0 0
              const sh: invalid argument to ${} operator string 0 0
    seq nothing 0 0
      := nothing 0 0
        name r nothing 0 0
        ref nothing 0 0
          name Redirlist nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name cmd nothing 0 0
          call nothing 0 0
            name glob nothing 0 0
            seq nothing 0 0
              call nothing 0 0
                name glom nothing 0 0
                seq nothing 0 0
                  name ctxt nothing 0 0
                  seq nothing 0 0
                    name n nothing 0 0
                    seq nothing 0 0
                      name r nothing 0 0
                      seq nothing 0 0
                        name nil polymorphic type 0 0
        seq nothing 0 0
          if nothing 0 0
            != nothing 0 0
              . nothing 0 0
                name r nothing 0 0
                name r nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name fail nothing 0 0
                seq nothing 0 0
                  const bad $ arg string 0 0
                  seq nothing 0 0
                    const sh: redirection not allowed in substitution string 0 0
          seq nothing 0 0
            = nothing 0 0
              name r nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              if nothing 0 0
                || nothing 0 0
                  || nothing 0 0
                    == nothing 0 0
                      name cmd nothing 0 0
                      name nil polymorphic type 0 0
                    == nothing 0 0
                      . nothing 0 0
                        hd nothing 0 0
                          name cmd nothing 0 0
                        name word nothing 0 0
                      name nil polymorphic type 0 0
                  != nothing 0 0
                    . nothing 0 0
                      hd nothing 0 0
                        name cmd nothing 0 0
                      name cmd nothing 0 0
                    name nil polymorphic type 0 0
                seq nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name fail nothing 0 0
                    seq nothing 0 0
                      const bad $ arg string 0 0
                      seq nothing 0 0
                        const sh: bad builtin name string 0 0
              seq nothing 0 0
                := nothing 0 0
                  tuple nothing 0 0
                    seq nothing 0 0
                      name nil polymorphic type 0 0
                      seq nothing 0 0
                        name bmods nothing 0 0
                  call nothing 0 0
                    name findbuiltin nothing 0 0
                    seq nothing 0 0
                      . nothing 0 0
                        . nothi
typecheck tree: 
fn(){} fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 0 0
  name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 0 0
  seq nothing 0 0
    := nothing 0 0
      name buf nothing 0 0
      array array of byte 0 0
        -> nothing 0 0
          name Sys nothing 0 0
          name ATOMICIO nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name buflen nothing 0 0
        const (0) int 0 0
      seq nothing 0 0
        for nothing 0 0
          > nothing 0 0
            := nothing 0 0
              name n nothing 0 0
              call nothing 0 0
                -> nothing 0 0
                  name sys nothing 0 0
                  name read nothing 0 0
                seq nothing 0 0
                  name fd nothing 0 0
                  seq nothing 0 0
                    slice nothing 0 0
                      name buf nothing 0 0
                      seq nothing 0 0
                        name buflen nothing 0 0
                        nothing nothing 0 0
                    seq nothing 0 0
                      - nothing 0 0
                        len nothing 0 0
                          name buf nothing 0 0
                        name buflen nothing 0 0
            const (0) int 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                += nothing 0 0
                  name buflen nothing 0 0
                  name n nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    == nothing 0 0
                      name buflen nothing 0 0
                      len nothing 0 0
                        name buf nothing 0 0
                    seq nothing 0 0
                      scope nothing 0 0
                        seq nothing 0 0
                          := nothing 0 0
                            name nbuf nothing 0 0
                            array array of byte 0 0
                              * nothing 0 0
                                name buflen nothing 0 0
                                const (2) int 0 0
                          seq nothing 0 0
                            = nothing 0 0
                              slice nothing 0 0
                                name nbuf nothing 0 0
                                seq nothing 0 0
                                  const (0) int 0 0
                                  nothing nothing 0 0
                              slice nothing 0 0
                                name buf nothing 0 0
                                seq nothing 0 0
                                  const (0) int 0 0
                                  nothing nothing 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                name buf nothing 0 0
                                name nbuf nothing 0 0
        seq nothing 0 0
          vardecl list of string 0 0
            seq nothing 0 0
          seq nothing 0 0
            if nothing 0 0
              != nothing 0 0
                name seps nothing 0 0
                name nil polymorphic type 0 0
              seq nothing 0 0
                = nothing 0 0
                  tuple nothing 0 0
                    seq nothing 0 0
                      name nil polymorphic type 0 0
                      seq nothing 0 0
                        name l nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name sys nothing 0 0
                      name tokenize nothing 0 0
                    seq nothing 0 0
                      cast string 0 0
                        slice nothing 0 0
                          name buf nothing 0 0
                          seq nothing 0 0
                            const (0) int 0 0
                            name buflen nothing 0 0
                      seq nothing 0 0
                        name seps nothing 0 0
                = nothing 0 0
                  name l nothing 0 0
                  :: nothing 0 0
                    
typecheck tree: 
fn(){} fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 0 0
  name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 0 0
  seq nothing 0 0
    := nothing 0 0
      name fds nothing 0 0
      array array of ref Sys->FD 0 0
        const (2) int 0 0
    seq nothing 0 0
      if nothing 0 0
        == nothing 0 0
          call nothing 0 0
            -> nothing 0 0
              name sys nothing 0 0
              name pipe nothing 0 0
            seq nothing 0 0
              name fds nothing 0 0
          - nothing 0 0
            const (1) int 0 0
        seq nothing 0 0
          call nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name fail nothing 0 0
            seq nothing 0 0
              const no pipe string 0 0
              seq nothing 0 0
                call nothing 0 0
                  -> nothing 0 0
                    name sys nothing 0 0
                    name sprint nothing 0 0
                  seq nothing 0 0
                    const sh: cannot make pipe: %r string 0 0
      seq nothing 0 0
        := nothing 0 0
          name r nothing 0 0
          call nothing 0 0
            name rdir nothing 0 0
            seq nothing 0 0
              index nothing 0 0
                name fds nothing 0 0
                const (1) int 0 0
        seq nothing 0 0
          = nothing 0 0
            index nothing 0 0
              name fds nothing 0 0
              const (1) int 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            := nothing 0 0
              name startchan nothing 0 0
              chan chan of (int, ref Expropagate) 0 0
            seq nothing 0 0
              spawn nothing 0 0
                call nothing 0 0
                  name runasync nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      const (0) int 0 0
                      seq nothing 0 0
                        name cmd nothing 0 0
                        seq nothing 0 0
                          name r nothing 0 0
                          seq nothing 0 0
                            name startchan nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  tuple nothing 0 0
                    seq nothing 0 0
                      name exepid nothing 0 0
                      seq nothing 0 0
                        name exprop nothing 0 0
                  <- nothing 0 0
                    name startchan nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name r nothing 0 0
                    name nil polymorphic type 0 0
                  seq nothing 0 0
                    := nothing 0 0
                      name bqlist nothing 0 0
                      call nothing 0 0
                        name getbq nothing 0 0
                        seq nothing 0 0
                          name ctxt nothing 0 0
                          seq nothing 0 0
                            index nothing 0 0
                              name fds nothing 0 0
                              const (0) int 0 0
                            seq nothing 0 0
                              name seps nothing 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        name waitfor nothing 0 0
                        seq nothing 0 0
                          name ctxt nothing 0 0
                          seq nothing 0 0
                            :: nothing 0 0
                              name exepid nothing 0 0
                              name nil polymorphic type 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          != nothing 0 0
                            . nothing 0 0
                              name exprop nothing 0 0
                              name name nothing 0 0
                            name nil polymorphic ty
typecheck tree: 
fn(){} fn(fd: ref Sys->FD): ref Redirlist 0 0
  name rdir fn(fd: ref Sys->FD): ref Redirlist 0 0
  seq nothing 0 0
    return nothing 0 0
      ref nothing 0 0
        call nothing 0 0
          name Redirlist nothing 0 0
          seq nothing 0 0
            :: nothing 0 0
              call nothing 0 0
                name Redirword nothing 0 0
                seq nothing 0 0
                  name fd nothing 0 0
                  seq nothing 0 0
                    name nil polymorphic type 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        name Redir nothing 0 0
                        seq nothing 0 0
                          -> nothing 0 0
                            name Sys nothing 0 0
                            name OWRITE nothing 0 0
                          seq nothing 0 0
                            const (1) int 0 0
                            seq nothing 0 0
                              - nothing 0 0
                                const (1) int 0 0
              name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 0 0
  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 0 0
  seq nothing 0 0
    if nothing 0 0
      && nothing 0 0
        == nothing 0 0
          . nothing 0 0
            name p1 nothing 0 0
            name word nothing 0 0
          name nil polymorphic type 0 0
        != nothing 0 0
          . nothing 0 0
            name p1 nothing 0 0
            name cmd nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        = nothing 0 0
          . nothing 0 0
            name p1 nothing 0 0
            name word nothing 0 0
          call nothing 0 0
            name cmd2string nothing 0 0
            seq nothing 0 0
              . nothing 0 0
                name p1 nothing 0 0
                name cmd nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        && nothing 0 0
          == nothing 0 0
            . nothing 0 0
              name p2 nothing 0 0
              name word nothing 0 0
            name nil polymorphic type 0 0
          != nothing 0 0
            . nothing 0 0
              name p2 nothing 0 0
              name cmd nothing 0 0
            name nil polymorphic type 0 0
        seq nothing 0 0
          = nothing 0 0
            . nothing 0 0
              name p2 nothing 0 0
              name word nothing 0 0
            call nothing 0 0
              name cmd2string nothing 0 0
              seq nothing 0 0
                . nothing 0 0
                  name p2 nothing 0 0
                  name cmd nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          ref nothing 0 0
            call nothing 0 0
              name Listnode nothing 0 0
              seq nothing 0 0
                name nil polymorphic type 0 0
                seq nothing 0 0
                  + nothing 0 0
                    . nothing 0 0
                      name p1 nothing 0 0
                      name word nothing 0 0
                    . nothing 0 0
                      name p2 nothing 0 0
                      name word nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 0 0
  name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        == nothing 0 0
          name nl1 nothing 0 0
          name nil polymorphic type 0 0
        == nothing 0 0
          name nl2 nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            if nothing 0 0
              && nothing 0 0
                == nothing 0 0
                  name nl1 nothing 0 0
                  name nil polymorphic type 0 0
                == nothing 0 0
                  name nl2 nothing 0 0
                  name nil polymorphic type 0 0
              seq nothing 0 0
                return nothing 0 0
                  name nil polymorphic type 0 0
            seq nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name fail nothing 0 0
                seq nothing 0 0
                  const bad concatenation string 0 0
                  seq nothing 0 0
                    const sh: null list in concatenation string 0 0
    seq nothing 0 0
      vardecl list of ref Listnode 0 0
        seq nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          || nothing 0 0
            == nothing 0 0
              tl nothing 0 0
                name nl1 nothing 0 0
              name nil polymorphic type 0 0
            == nothing 0 0
              tl nothing 0 0
                name nl2 nothing 0 0
              name nil polymorphic type 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name p1 nothing 0 0
                  name nl1 nothing 0 0
                seq nothing 0 0
                  for nothing 0 0
                    != nothing 0 0
                      name p1 nothing 0 0
                      name nil polymorphic type 0 0
                    seq nothing 0 0
                      seq nothing 0 0
                        := nothing 0 0
                          name p2 nothing 0 0
                          name nl2 nothing 0 0
                        for nothing 0 0
                          != nothing 0 0
                            name p2 nothing 0 0
                            name nil polymorphic type 0 0
                          seq nothing 0 0
                            = nothing 0 0
                              name ret nothing 0 0
                              :: nothing 0 0
                                call nothing 0 0
                                  name concatwords nothing 0 0
                                  seq nothing 0 0
                                    hd nothing 0 0
                                      name p1 nothing 0 0
                                    seq nothing 0 0
                                      hd nothing 0 0
                                        name p2 nothing 0 0
                                name ret nothing 0 0
                            = nothing 0 0
                              name p2 nothing 0 0
                              tl nothing 0 0
                                name p2 nothing 0 0
                      = nothing 0 0
                        name p1 nothing 0 0
                        tl nothing 0 0
                          name p1 nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  != nothing 0 0
                    len nothing 0 0
                      name nl1 nothing 0 0
                    len nothing 0 0
                      name nl2 nothing 0 0
                  seq nothing 0 0
                    call nothing 0 0
                      . nothing 0 0
                        name ctxt nothing 0 0
                        name fail nothing 0 0
                      seq nothing 0 0
                        const bad con
typecheck tree: 
fn(){} fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 0 0
  name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 0 0
  seq nothing 0 0
    vardecl string 0 0
      seq nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name pid nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name pctl nothing 0 0
          seq nothing 0 0
            -> nothing 0 0
              name sys nothing 0 0
              name FORKFD nothing 0 0
            seq nothing 0 0
              name nil polymorphic type 0 0
      seq nothing 0 0
        if nothing 0 0
          name DEBUG nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              name debug nothing 0 0
              seq nothing 0 0
                call nothing 0 0
                  name sprint nothing 0 0
                  seq nothing 0 0
                    const in async (len redirs: %d) string 0 0
                    seq nothing 0 0
                      len nothing 0 0
                        . nothing 0 0
                          name redirs nothing 0 0
                          name r nothing 0 0
        seq nothing 0 0
          = nothing 0 0
            name ctxt nothing 0 0
            call nothing 0 0
              . nothing 0 0
                name ctxt nothing 0 0
                name copy nothing 0 0
              seq nothing 0 0
                name copyenv nothing 0 0
          seq nothing 0 0
            := nothing 0 0
              name exprop nothing 0 0
              ref nothing 0 0
                name Expropagate nothing 0 0
            seq nothing 0 0
              exstat nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    := nothing 0 0
                      name newfdl nothing 0 0
                      call nothing 0 0
                        name doredirs nothing 0 0
                        seq nothing 0 0
                          name ctxt nothing 0 0
                          seq nothing 0 0
                            name redirs nothing 0 0
                    seq nothing 0 0
                      = nothing 0 0
                        name redirs nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          != nothing 0 0
                            name newfdl nothing 0 0
                            name nil polymorphic type 0 0
                          seq nothing 0 0
                            call nothing 0 0
                              -> nothing 0 0
                                name sys nothing 0 0
                                name pctl nothing 0 0
                              seq nothing 0 0
                                -> nothing 0 0
                                  name Sys nothing 0 0
                                  name NEWFD nothing 0 0
                                seq nothing 0 0
                                  name newfdl nothing 0 0
                        seq nothing 0 0
                          = nothing 0 0
                            . nothing 0 0
                              name ctxt nothing 0 0
                              name waitfd nothing 0 0
                            call nothing 0 0
                              name waitfd nothing 0 0
                          seq nothing 0 0
                            <-= nothing 0 0
                              name startchan nothing 0 0
                              tuple nothing 0 0
                                seq nothing 0 0
                                  name pid nothing 0 0
                                  seq nothing 0 0
                                    name exprop nothing 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                name startchan nothing 0 0
             
typecheck tree: 
fn(){} fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 0 0
  name runsync fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      name DEBUG nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          name debug nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              -> nothing 0 0
                name sys nothing 0 0
                name sprint nothing 0 0
              seq nothing 0 0
                const in sync (len redirs: %d; last: %d) string 0 0
                seq nothing 0 0
                  len nothing 0 0
                    . nothing 0 0
                      name redirs nothing 0 0
                      name r nothing 0 0
                  seq nothing 0 0
                    name last nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        && nothing 0 0
          != nothing 0 0
            . nothing 0 0
              name redirs nothing 0 0
              name r nothing 0 0
            name nil polymorphic type 0 0
          ! nothing 0 0
            name last nothing 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name startchan nothing 0 0
                chan chan of (int, ref Expropagate) 0 0
              seq nothing 0 0
                spawn nothing 0 0
                  call nothing 0 0
                    name runasync nothing 0 0
                    seq nothing 0 0
                      name ctxt nothing 0 0
                      seq nothing 0 0
                        const (0) int 0 0
                        seq nothing 0 0
                          name argv nothing 0 0
                          seq nothing 0 0
                            name redirs nothing 0 0
                            seq nothing 0 0
                              name startchan nothing 0 0
                seq nothing 0 0
                  := nothing 0 0
                    tuple nothing 0 0
                      seq nothing 0 0
                        name pid nothing 0 0
                        seq nothing 0 0
                          name exprop nothing 0 0
                    <- nothing 0 0
                      name startchan nothing 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      name redirs nothing 0 0
                      name nil polymorphic type 0 0
                    seq nothing 0 0
                      := nothing 0 0
                        name r nothing 0 0
                        call nothing 0 0
                          name waitfor nothing 0 0
                          seq nothing 0 0
                            name ctxt nothing 0 0
                            seq nothing 0 0
                              :: nothing 0 0
                                name pid nothing 0 0
                                name nil polymorphic type 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          != nothing 0 0
                            . nothing 0 0
                              name exprop nothing 0 0
                              name name nothing 0 0
                            name nil polymorphic type 0 0
                          seq nothing 0 0
                            raise nothing 0 0
                              . nothing 0 0
                                name exprop nothing 0 0
                                name name nothing 0 0
                        seq nothing 0 0
                          return nothing 0 0
                            name r nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name newfdl nothing 0 0
                call nothing 0 0
                  name doredirs nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      name redirs nothing 0 0
              seq nothing 0 0
            
typecheck tree: 
fn(){} fn(p: string): int 0 0
  name absolute fn(p: string): int 0 0
  seq nothing 0 0
    if nothing 0 0
      < nothing 0 0
        len nothing 0 0
          name p nothing 0 0
        const (2) int 0 0
      seq nothing 0 0
        return nothing 0 0
          const (0) int 0 0
    seq nothing 0 0
      if nothing 0 0
        || nothing 0 0
          == nothing 0 0
            index nothing 0 0
              name p nothing 0 0
              const (0) int 0 0
            const (47) int 0 0
          == nothing 0 0
            index nothing 0 0
              name p nothing 0 0
              const (0) int 0 0
            const (35) int 0 0
        seq nothing 0 0
          return nothing 0 0
            const (1) int 0 0
      seq nothing 0 0
        if nothing 0 0
          || nothing 0 0
            < nothing 0 0
              len nothing 0 0
                name p nothing 0 0
              const (3) int 0 0
            != nothing 0 0
              index nothing 0 0
                name p nothing 0 0
                const (0) int 0 0
              const (46) int 0 0
          seq nothing 0 0
            return nothing 0 0
              const (0) int 0 0
        seq nothing 0 0
          if nothing 0 0
            == nothing 0 0
              index nothing 0 0
                name p nothing 0 0
                const (1) int 0 0
              const (47) int 0 0
            seq nothing 0 0
              return nothing 0 0
                const (1) int 0 0
          seq nothing 0 0
            if nothing 0 0
              && nothing 0 0
                == nothing 0 0
                  index nothing 0 0
                    name p nothing 0 0
                    const (1) int 0 0
                  const (46) int 0 0
                == nothing 0 0
                  index nothing 0 0
                    name p nothing 0 0
                    const (2) int 0 0
                  const (47) int 0 0
              seq nothing 0 0
                return nothing 0 0
                  const (1) int 0 0
            seq nothing 0 0
              return nothing 0 0
                const (0) int 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name progname nothing 0 0
      . nothing 0 0
        hd nothing 0 0
          name args nothing 0 0
        name word nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name disfile nothing 0 0
        const (0) int 0 0
      seq nothing 0 0
        if nothing 0 0
          && nothing 0 0
            >= nothing 0 0
              len nothing 0 0
                name progname nothing 0 0
              const (4) int 0 0
            == nothing 0 0
              slice nothing 0 0
                name progname nothing 0 0
                seq nothing 0 0
                  - nothing 0 0
                    len nothing 0 0
                      name progname nothing 0 0
                    const (4) int 0 0
                  nothing nothing 0 0
              const .dis string 0 0
          seq nothing 0 0
            = nothing 0 0
              name disfile nothing 0 0
              const (1) int 0 0
        seq nothing 0 0
          vardecl list of string 0 0
            seq nothing 0 0
          seq nothing 0 0
            if nothing 0 0
              call nothing 0 0
                name absolute nothing 0 0
                seq nothing 0 0
                  name progname nothing 0 0
              seq nothing 0 0
                = nothing 0 0
                  name pathlist nothing 0 0
                  :: nothing 0 0
                    const  string 0 0
                    name nil polymorphic type 0 0
                if nothing 0 0
                  != nothing 0 0
                    := nothing 0 0
                      name pl nothing 0 0
                      call nothing 0 0
                        . nothing 0 0
                          name ctxt nothing 0 0
                          name get nothing 0 0
                        seq nothing 0 0
                          const path string 0 0
                    name nil polymorphic type 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      name pathlist nothing 0 0
                      call nothing 0 0
                        name list2stringlist nothing 0 0
                        seq nothing 0 0
                          name pl nothing 0 0
                    = nothing 0 0
                      name pathlist nothing 0 0
                      :: nothing 0 0
                        const /dis string 0 0
                        :: nothing 0 0
                          const . string 0 0
                          name nil polymorphic type 0 0
            seq nothing 0 0
              := nothing 0 0
                name err nothing 0 0
                const  string 0 0
              seq nothing 0 0
                do nothing 0 0
                  && nothing 0 0
                    != nothing 0 0
                      name pathlist nothing 0 0
                      name nil polymorphic type 0 0
                    call nothing 0 0
                      name nonexistent nothing 0 0
                      seq nothing 0 0
                        name err nothing 0 0
                  scope nothing 0 0
                    seq nothing 0 0
                      vardecl string 0 0
                        seq nothing 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          != nothing 0 0
                            hd nothing 0 0
                              name pathlist nothing 0 0
                            const  string 0 0
                          seq nothing 0 0
                            = nothing 0 0
                              name path nothing 0 0
                              + nothing 0 0
                                + nothing 0 0
                                  hd nothing 0 0
                                    name pathlist nothing 0 0
                                  const / string 0 0
                                name progname nothing 0 0
 
typecheck tree: 
fn(){} fn(e: string): string 0 0
  name failurestatus fn(e: string): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name s nothing 0 0
      slice nothing 0 0
        name e nothing 0 0
        seq nothing 0 0
          const (5) int 0 0
          nothing nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        && nothing 0 0
          != nothing 0 0
            name s nothing 0 0
            name nil polymorphic type 0 0
          || nothing 0 0
            == nothing 0 0
              index nothing 0 0
                name s nothing 0 0
                const (0) int 0 0
              const (32) int 0 0
            == nothing 0 0
              index nothing 0 0
                name s nothing 0 0
                const (0) int 0 0
              const (9) int 0 0
        seq nothing 0 0
          = nothing 0 0
            name s nothing 0 0
            slice nothing 0 0
              name s nothing 0 0
              seq nothing 0 0
                const (1) int 0 0
                nothing nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          != nothing 0 0
            name s nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            return nothing 0 0
              name s nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            const failed string 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 0 0
  name runhashpling fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name header nothing 0 0
      array array of byte 0 0
        const (1024) int 0 0
    seq nothing 0 0
      := nothing 0 0
        name n nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name read nothing 0 0
          seq nothing 0 0
            name fd nothing 0 0
            seq nothing 0 0
              name header nothing 0 0
              seq nothing 0 0
                len nothing 0 0
                  name header nothing 0 0
      seq nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name i nothing 0 0
            const (0) int 0 0
          for nothing 0 0
            < nothing 0 0
              name i nothing 0 0
              name n nothing 0 0
            seq nothing 0 0
              if nothing 0 0
                == nothing 0 0
                  index nothing 0 0
                    name header nothing 0 0
                    name i nothing 0 0
                  cast byte 0 0
                    const (10) int 0 0
                seq nothing 0 0
                  break nothing 0 0
              ++ nothing 0 0
                name i nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            || nothing 0 0
              || nothing 0 0
                || nothing 0 0
                  == nothing 0 0
                    name i nothing 0 0
                    name n nothing 0 0
                  < nothing 0 0
                    name i nothing 0 0
                    const (3) int 0 0
                != nothing 0 0
                  index nothing 0 0
                    name header nothing 0 0
                    const (0) int 0 0
                  cast byte 0 0
                    const (35) int 0 0
              != nothing 0 0
                index nothing 0 0
                  name header nothing 0 0
                  const (1) int 0 0
                cast byte 0 0
                  const (33) int 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name diagnostic nothing 0 0
                    seq nothing 0 0
                      name ctxt nothing 0 0
                      seq nothing 0 0
                        + nothing 0 0
                          const bad script header on  string 0 0
                          name path nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      const bad header string 0 0
          seq nothing 0 0
            := nothing 0 0
              tuple nothing 0 0
                seq nothing 0 0
                  name nil polymorphic type 0 0
                  seq nothing 0 0
                    name args nothing 0 0
              call nothing 0 0
                -> nothing 0 0
                  name sys nothing 0 0
                  name tokenize nothing 0 0
                seq nothing 0 0
                  cast string 0 0
                    slice nothing 0 0
                      name header nothing 0 0
                      seq nothing 0 0
                        const (2) int 0 0
                        name i nothing 0 0
                  seq nothing 0 0
                    const  	 string 0 0
            seq nothing 0 0
              if nothing 0 0
                == nothing 0 0
                  name args nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  scope nothing 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        name diagnostic nothing 0 0
                        seq nothing 0 0
                          name ctxt nothing 0 0
                          seq nothing 0 0
                            + nothing 0 0
                              con
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
  name runblock fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name cmd nothing 0 0
      . nothing 0 0
        hd nothing 0 0
          name args nothing 0 0
        name cmd nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        == nothing 0 0
          name cmd nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name lex nothing 0 0
                call nothing 0 0
                  . nothing 0 0
                    name YYLEX nothing 0 0
                    name initstring nothing 0 0
                  seq nothing 0 0
                    . nothing 0 0
                      hd nothing 0 0
                        name args nothing 0 0
                      name word nothing 0 0
              seq nothing 0 0
                vardecl string 0 0
                  seq nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    tuple nothing 0 0
                      seq nothing 0 0
                        name cmd nothing 0 0
                        seq nothing 0 0
                          name err nothing 0 0
                    call nothing 0 0
                      name doparse nothing 0 0
                      seq nothing 0 0
                        name lex nothing 0 0
                        seq nothing 0 0
                          const  string 0 0
                          seq nothing 0 0
                            const (0) int 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      == nothing 0 0
                        name cmd nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        call nothing 0 0
                          . nothing 0 0
                            name ctxt nothing 0 0
                            name fail nothing 0 0
                          seq nothing 0 0
                            const parse error string 0 0
                            seq nothing 0 0
                              + nothing 0 0
                                const sh:  string 0 0
                                name err nothing 0 0
                    seq nothing 0 0
                      = nothing 0 0
                        . nothing 0 0
                          hd nothing 0 0
                            name args nothing 0 0
                          name cmd nothing 0 0
                        name cmd nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name push nothing 0 0
        seq nothing 0 0
          exstat nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                call nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name setlocal nothing 0 0
                  seq nothing 0 0
                    const 0 string 0 0
                    seq nothing 0 0
                      :: nothing 0 0
                        hd nothing 0 0
                          name args nothing 0 0
                        name nil polymorphic type 0 0
                seq nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name setlocal nothing 0 0
                    seq nothing 0 0
                      const * string 0 0
                      seq nothing 0 0
                        tl nothing 0 0
                          name args nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      && nothing 0 0
                        != nothing 0 0
                          name cmd nothing 0 0
                          name nil polymorphic type 0 0
                        == nothing 0 0
                          . no
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 0 0
  name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 0 0
  seq nothing 0 0
    := nothing 0 0
      tuple nothing 0 0
        seq nothing 0 0
          name nil polymorphic type 0 0
          seq nothing 0 0
            name bmods nothing 0 0
      call nothing 0 0
        name findbuiltin nothing 0 0
        seq nothing 0 0
          . nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name env nothing 0 0
            name builtins nothing 0 0
          seq nothing 0 0
            . nothing 0 0
              hd nothing 0 0
                name args nothing 0 0
              name word nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        == nothing 0 0
          name bmods nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          return nothing 0 0
            tuple nothing 0 0
              seq nothing 0 0
                const (0) int 0 0
                seq nothing 0 0
                  name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          tuple nothing 0 0
            seq nothing 0 0
              const (1) int 0 0
              seq nothing 0 0
                call nothing 0 0
                  -> nothing 0 0
                    hd nothing 0 0
                      name bmods nothing 0 0
                    name runbuiltin nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      name myself nothing 0 0
                      seq nothing 0 0
                        name args nothing 0 0
                        seq nothing 0 0
                          name lseq nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context): string 0 0
  name keepfdstr fn(ctxt: ref Context): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name s nothing 0 0
      const  string 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name f nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name keepfds nothing 0 0
        for nothing 0 0
          != nothing 0 0
            name f nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                += nothing 0 0
                  name s nothing 0 0
                  cast string 0 0
                    hd nothing 0 0
                      name f nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    != nothing 0 0
                      tl nothing 0 0
                        name f nothing 0 0
                      name nil polymorphic type 0 0
                    seq nothing 0 0
                      += nothing 0 0
                        name s nothing 0 0
                        const , string 0 0
            = nothing 0 0
              name f nothing 0 0
              tl nothing 0 0
                name f nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name s nothing 0 0
typecheck tree: 
fn(){} fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 0 0
  name externalexec fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 0 0
  seq nothing 0 0
    if nothing 0 0
      name DEBUG nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          name debug nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              name sprint nothing 0 0
              seq nothing 0 0
                const externalexec(%s,... [%d args]) string 0 0
                seq nothing 0 0
                  hd nothing 0 0
                    name argv nothing 0 0
                  seq nothing 0 0
                    len nothing 0 0
                      name argv nothing 0 0
    seq nothing 0 0
      call nothing 0 0
        -> nothing 0 0
          name sys nothing 0 0
          name pctl nothing 0 0
        seq nothing 0 0
          -> nothing 0 0
            name Sys nothing 0 0
            name NEWFD nothing 0 0
          seq nothing 0 0
            name keepfds nothing 0 0
      seq nothing 0 0
        <-= nothing 0 0
          name startchan nothing 0 0
          call nothing 0 0
            -> nothing 0 0
              name sys nothing 0 0
              name pctl nothing 0 0
            seq nothing 0 0
              const (0) int 0 0
              seq nothing 0 0
                name nil polymorphic type 0 0
        seq nothing 0 0
          exstat nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                call nothing 0 0
                  -> nothing 0 0
                    name mod nothing 0 0
                    name init nothing 0 0
                  seq nothing 0 0
                    name drawcontext nothing 0 0
                    seq nothing 0 0
                      name argv nothing 0 0
            except nothing 0 0
              seq nothing 0 0
                label nothing 0 0
                  seq nothing 0 0
                    name EPIPE nothing 0 0
                  scope nothing 0 0
                    raise nothing 0 0
                      + nothing 0 0
                        const fail: string 0 0
                        name EPIPE nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, fd1: int, fd2: int): int 0 0
  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        . nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name waitfd nothing 0 0
          name fd nothing 0 0
        name fd2 nothing 0 0
      seq nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            = nothing 0 0
              . nothing 0 0
                name ctxt nothing 0 0
                name waitfd nothing 0 0
              call nothing 0 0
                name waitfd nothing 0 0
            seq nothing 0 0
              if nothing 0 0
                == nothing 0 0
                  . nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name waitfd nothing 0 0
                    name fd nothing 0 0
                  name fd2 nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name panic nothing 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        -> nothing 0 0
                          name sys nothing 0 0
                          name sprint nothing 0 0
                        seq nothing 0 0
                          const reopen of waitfd gave same fd (%d) string 0 0
                          seq nothing 0 0
                            . nothing 0 0
                              . nothing 0 0
                                name ctxt nothing 0 0
                                name waitfd nothing 0 0
                              name fd nothing 0 0
    seq nothing 0 0
      return nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name dup nothing 0 0
          seq nothing 0 0
            name fd1 nothing 0 0
            seq nothing 0 0
              name fd2 nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, redirs: ref Redirlist): list of int 0 0
  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        . nothing 0 0
          name redirs nothing 0 0
          name r nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name keepfds nothing 0 0
        . nothing 0 0
          name ctxt nothing 0 0
          name keepfds nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name rl nothing 0 0
          . nothing 0 0
            name redirs nothing 0 0
            name r nothing 0 0
        seq nothing 0 0
          = nothing 0 0
            name redirs nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            for nothing 0 0
              != nothing 0 0
                name rl nothing 0 0
                name nil polymorphic type 0 0
              seq nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    := nothing 0 0
                      tuple nothing 0 0
                        seq nothing 0 0
                          name rfd nothing 0 0
                          seq nothing 0 0
                            name path nothing 0 0
                            seq nothing 0 0
                              tuple nothing 0 0
                                seq nothing 0 0
                                  name mode nothing 0 0
                                  seq nothing 0 0
                                    name fd1 nothing 0 0
                                    seq nothing 0 0
                                      name fd2 nothing 0 0
                      hd nothing 0 0
                        name rl nothing 0 0
                    seq nothing 0 0
                      if nothing 0 0
                        && nothing 0 0
                          == nothing 0 0
                            name path nothing 0 0
                            name nil polymorphic type 0 0
                          == nothing 0 0
                            name rfd nothing 0 0
                            name nil polymorphic type 0 0
                        seq nothing 0 0
                          scope nothing 0 0
                            seq nothing 0 0
                              if nothing 0 0
                                || nothing 0 0
                                  == nothing 0 0
                                    name fd1 nothing 0 0
                                    - nothing 0 0
                                      const (1) int 0 0
                                  == nothing 0 0
                                    name fd2 nothing 0 0
                                    - nothing 0 0
                                      const (1) int 0 0
                                seq nothing 0 0
                                  call nothing 0 0
                                    . nothing 0 0
                                      name ctxt nothing 0 0
                                      name fail nothing 0 0
                                    seq nothing 0 0
                                      const bad redir string 0 0
                                      seq nothing 0 0
                                        const sh: invalid dup string 0 0
                              seq nothing 0 0
                                if nothing 0 0
                                  == nothing 0 0
                                    call nothing 0 0
                                      name dup nothing 0 0
                                      seq nothing 0 0
                                        name ctxt nothing 0 0
                                        seq nothing 0 0
                                          name fd2 nothing 0 0
                                          seq nothing 0 0
                                            name fd1 nothing 0 0
                                
typecheck tree: 
fn(){} fn(): ref Sys->FD 0 0
  name waitfd fn(): ref Sys->FD 0 0
  seq nothing 0 0
    := nothing 0 0
      name wf nothing 0 0
      + nothing 0 0
        cast string 0 0
          call nothing 0 0
            -> nothing 0 0
              name sys nothing 0 0
              name pctl nothing 0 0
            seq nothing 0 0
              const (0) int 0 0
              seq nothing 0 0
                name nil polymorphic type 0 0
        const /wait string 0 0
    seq nothing 0 0
      := nothing 0 0
        name waitfd nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name open nothing 0 0
          seq nothing 0 0
            + nothing 0 0
              const #p/ string 0 0
              name wf nothing 0 0
            seq nothing 0 0
              -> nothing 0 0
                name Sys nothing 0 0
                name OREAD nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          == nothing 0 0
            name waitfd nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            = nothing 0 0
              name waitfd nothing 0 0
              call nothing 0 0
                -> nothing 0 0
                  name sys nothing 0 0
                  name open nothing 0 0
                seq nothing 0 0
                  + nothing 0 0
                    const /prog/ string 0 0
                    name wf nothing 0 0
                  seq nothing 0 0
                    -> nothing 0 0
                      name Sys nothing 0 0
                      name OREAD nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            == nothing 0 0
              name waitfd nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              call nothing 0 0
                name panic nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name sys nothing 0 0
                      name sprint nothing 0 0
                    seq nothing 0 0
                      const cannot open wait file: %r string 0 0
          seq nothing 0 0
            return nothing 0 0
              name waitfd nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, pids: list of int): string 0 0
  name waitfor fn(ctxt: ref Context, pids: list of int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name pids nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name status nothing 0 0
        array array of string 0 0
          len nothing 0 0
            name pids nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name wcount nothing 0 0
          len nothing 0 0
            name status nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name buf nothing 0 0
            array array of byte 0 0
              -> nothing 0 0
                name Sys nothing 0 0
                name WAITLEN nothing 0 0
          seq nothing 0 0
            := nothing 0 0
              name onebad nothing 0 0
              const (0) int 0 0
            seq nothing 0 0
              for nothing 0 0
                nothing nothing 0 0
                seq nothing 0 0
                  scope nothing 0 0
                    seq nothing 0 0
                      := nothing 0 0
                        name n nothing 0 0
                        call nothing 0 0
                          -> nothing 0 0
                            name sys nothing 0 0
                            name read nothing 0 0
                          seq nothing 0 0
                            . nothing 0 0
                              name ctxt nothing 0 0
                              name waitfd nothing 0 0
                            seq nothing 0 0
                              name buf nothing 0 0
                              seq nothing 0 0
                                len nothing 0 0
                                  name buf nothing 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          < nothing 0 0
                            name n nothing 0 0
                            const (0) int 0 0
                          seq nothing 0 0
                            call nothing 0 0
                              name panic nothing 0 0
                              seq nothing 0 0
                                call nothing 0 0
                                  -> nothing 0 0
                                    name sys nothing 0 0
                                    name sprint nothing 0 0
                                  seq nothing 0 0
                                    const error on wait read: %r string 0 0
                        seq nothing 0 0
                          := nothing 0 0
                            tuple nothing 0 0
                              seq nothing 0 0
                                name who nothing 0 0
                                seq nothing 0 0
                                  name line nothing 0 0
                                  seq nothing 0 0
                                    name s nothing 0 0
                            call nothing 0 0
                              name parsewaitstatus nothing 0 0
                              seq nothing 0 0
                                name ctxt nothing 0 0
                                seq nothing 0 0
                                  cast string 0 0
                                    slice nothing 0 0
                                      name buf nothing 0 0
                                      seq nothing 0 0
                                        const (0) int 0 0
                                        name n nothing 0 0
                          seq nothing 0 0
                            if nothing 0 0
                              != nothing 0 0
                                name s nothing 0 0
                                name nil polymorphic type 0 0
                              seq nothing 0 0
                                scope nothing 0 0
                                  seq nothing 0 0
                                    if nothing 0 0

typecheck tree: 
fn(){} fn(ctxt: ref Context, status: string): (int, string, string) 0 0
  name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 0 0
  seq nothing 0 0
    := nothing 0 0
      name i nothing 0 0
      const (0) int 0 0
    seq nothing 0 0
      for nothing 0 0
        < nothing 0 0
          name i nothing 0 0
          len nothing 0 0
            name status nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            == nothing 0 0
              index nothing 0 0
                name status nothing 0 0
                name i nothing 0 0
              const (32) int 0 0
            seq nothing 0 0
              break nothing 0 0
          ++ nothing 0 0
            name i nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          || nothing 0 0
            == nothing 0 0
              name i nothing 0 0
              - nothing 0 0
                len nothing 0 0
                  name status nothing 0 0
                const (1) int 0 0
            != nothing 0 0
              index nothing 0 0
                name status nothing 0 0
                + nothing 0 0
                  name i nothing 0 0
                  const (1) int 0 0
              const (34) int 0 0
          seq nothing 0 0
            call nothing 0 0
              . nothing 0 0
                name ctxt nothing 0 0
                name fail nothing 0 0
              seq nothing 0 0
                const bad wait read string 0 0
                seq nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name sys nothing 0 0
                      name sprint nothing 0 0
                    seq nothing 0 0
                      const sh: bad exit status '%s' string 0 0
                      seq nothing 0 0
                        name status nothing 0 0
        seq nothing 0 0
          seq nothing 0 0
            += nothing 0 0
              name i nothing 0 0
              const (2) int 0 0
            for nothing 0 0
              < nothing 0 0
                name i nothing 0 0
                len nothing 0 0
                  name status nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    index nothing 0 0
                      name status nothing 0 0
                      name i nothing 0 0
                    const (34) int 0 0
                  seq nothing 0 0
                    break nothing 0 0
                ++ nothing 0 0
                  name i nothing 0 0
          seq nothing 0 0
            if nothing 0 0
              || nothing 0 0
                > nothing 0 0
                  name i nothing 0 0
                  - nothing 0 0
                    len nothing 0 0
                      name status nothing 0 0
                    const (2) int 0 0
                != nothing 0 0
                  index nothing 0 0
                    name status nothing 0 0
                    + nothing 0 0
                      name i nothing 0 0
                      const (1) int 0 0
                  const (58) int 0 0
              seq nothing 0 0
                call nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name fail nothing 0 0
                  seq nothing 0 0
                    const bad wait read string 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        -> nothing 0 0
                          name sys nothing 0 0
                          name sprint nothing 0 0
                        seq nothing 0 0
                          const sh: bad exit status '%s' string 0 0
                          seq nothing 0 0
                            name status nothing 0 0
            seq nothing 0 0
              return nothing 0 0
                tuple nothing 0 0
                  seq nothing 0 0
                    cast int 0 0
                      name status nothing 0 0
                    seq nothing 0 0
                      name status nothing 0 0
           
typecheck tree: 
fn(){} fn(s: string) 0 0
  name panic fn(s: string) 0 0
  seq nothing 0 0
    call nothing 0 0
      -> nothing 0 0
        name sys nothing 0 0
        name fprint nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          name stderr nothing 0 0
        seq nothing 0 0
          const sh panic: %s
 string 0 0
          seq nothing 0 0
            name s nothing 0 0
    seq nothing 0 0
      raise nothing 0 0
        const panic string 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, s: string) 0 0
  name diagnostic fn(ctxt: ref Context, s: string) 0 0
  seq nothing 0 0
    if nothing 0 0
      & nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name options nothing 0 0
        . nothing 0 0
          name Context nothing 0 0
          name VERBOSE nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name fprint nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              name stderr nothing 0 0
            seq nothing 0 0
              const sh: %s
 string 0 0
              seq nothing 0 0
                name s nothing 0 0
typecheck tree: 
fn(){} fn(drawcontext: ref Draw->Context): ref Context 0 0
  . fn(drawcontext: ref Draw->Context): ref Context 0 0
    name Context Context 0 0
    name new nothing 0 0
  seq nothing 0 0
    call nothing 0 0
      name initialise nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        != nothing 0 0
          name env nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          call nothing 0 0
            -> nothing 0 0
              name env nothing 0 0
              name clone nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name ctxt nothing 0 0
          ref nothing 0 0
            call nothing 0 0
              name Context nothing 0 0
              seq nothing 0 0
                ref nothing 0 0
                  call nothing 0 0
                    name Environment nothing 0 0
                    seq nothing 0 0
                      ref nothing 0 0
                        call nothing 0 0
                          name Builtins nothing 0 0
                          seq nothing 0 0
                            name nil polymorphic type 0 0
                            seq nothing 0 0
                              const (0) int 0 0
                      seq nothing 0 0
                        ref nothing 0 0
                          call nothing 0 0
                            name Builtins nothing 0 0
                            seq nothing 0 0
                              name nil polymorphic type 0 0
                              seq nothing 0 0
                                const (0) int 0 0
                        seq nothing 0 0
                          name nil polymorphic type 0 0
                          seq nothing 0 0
                            call nothing 0 0
                              name newlocalenv nothing 0 0
                              seq nothing 0 0
                                name nil polymorphic type 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name waitfd nothing 0 0
                  seq nothing 0 0
                    name drawcontext nothing 0 0
                    seq nothing 0 0
                      :: nothing 0 0
                        const (0) int 0 0
                        :: nothing 0 0
                          const (1) int 0 0
                          :: nothing 0 0
                            const (2) int 0 0
                            name nil polymorphic type 0 0
        seq nothing 0 0
          call nothing 0 0
            -> nothing 0 0
              name myselfbuiltin nothing 0 0
              name initbuiltin nothing 0 0
            seq nothing 0 0
              name ctxt nothing 0 0
              seq nothing 0 0
                name myself nothing 0 0
          seq nothing 0 0
            = nothing 0 0
              . nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name env nothing 0 0
                  name localenv nothing 0 0
                name flags nothing 0 0
              . nothing 0 0
                name ctxt nothing 0 0
                name VERBOSE nothing 0 0
            seq nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name vl nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name get nothing 0 0
                    seq nothing 0 0
                      const autoload string 0 0
                for nothing 0 0
                  != nothing 0 0
                    name vl nothing 0 0
                    name nil polymorphic type 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      && nothing 0 0
                        == nothing 0 0
                          . nothing 0 0
                            hd nothing 0 0
                              name vl nothing 0 0
                            name cmd nothing 0 0
                          name nil polymorphic type 0 0
         
typecheck tree: 
fn(){} fn(ctxt: self ref Context, copyenv: int): ref Context 0 0
  . fn(c: self ref Context, copyenv: int): ref Context 0 0
    name Context Context 0 0
    name copy nothing 0 0
  seq nothing 0 0
    := nothing 0 0
      name nctxt nothing 0 0
      ref nothing 0 0
        call nothing 0 0
          name Context nothing 0 0
          seq nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name env nothing 0 0
            seq nothing 0 0
              call nothing 0 0
                name waitfd nothing 0 0
              seq nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name drawcontext nothing 0 0
                seq nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name keepfds nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        name copyenv nothing 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              if nothing 0 0
                != nothing 0 0
                  name env nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name env nothing 0 0
                      name clone nothing 0 0
              seq nothing 0 0
                = nothing 0 0
                  . nothing 0 0
                    name nctxt nothing 0 0
                    name env nothing 0 0
                  ref nothing 0 0
                    call nothing 0 0
                      name Environment nothing 0 0
                      seq nothing 0 0
                        call nothing 0 0
                          name copybuiltins nothing 0 0
                          seq nothing 0 0
                            . nothing 0 0
                              . nothing 0 0
                                name ctxt nothing 0 0
                                name env nothing 0 0
                              name sbuiltins nothing 0 0
                        seq nothing 0 0
                          call nothing 0 0
                            name copybuiltins nothing 0 0
                            seq nothing 0 0
                              . nothing 0 0
                                . nothing 0 0
                                  name ctxt nothing 0 0
                                  name env nothing 0 0
                                name builtins nothing 0 0
                          seq nothing 0 0
                            . nothing 0 0
                              . nothing 0 0
                                name ctxt nothing 0 0
                                name env nothing 0 0
                              name bmods nothing 0 0
                            seq nothing 0 0
                              call nothing 0 0
                                name copylocalenv nothing 0 0
                                seq nothing 0 0
                                  . nothing 0 0
                                    . nothing 0 0
                                      name ctxt nothing 0 0
                                      name env nothing 0 0
                                    name localenv nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name nctxt nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 0 0
  . fn(c: self ref Context, name: string, val: list of ref Listnode) 0 0
    name Context Context 0 0
    name set nothing 0 0
  seq nothing 0 0
    := nothing 0 0
      name e nothing 0 0
      . nothing 0 0
        . nothing 0 0
          name ctxt nothing 0 0
          name env nothing 0 0
        name localenv nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name idx nothing 0 0
        call nothing 0 0
          name hashfn nothing 0 0
          seq nothing 0 0
            name name nothing 0 0
            seq nothing 0 0
              len nothing 0 0
                . nothing 0 0
                  name e nothing 0 0
                  name vars nothing 0 0
      seq nothing 0 0
        for nothing 0 0
          nothing nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name v nothing 0 0
                  call nothing 0 0
                    name hashfind nothing 0 0
                    seq nothing 0 0
                      . nothing 0 0
                        name e nothing 0 0
                        name vars nothing 0 0
                      seq nothing 0 0
                        name idx nothing 0 0
                        seq nothing 0 0
                          name name nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    == nothing 0 0
                      name v nothing 0 0
                      name nil polymorphic type 0 0
                    seq nothing 0 0
                      scope nothing 0 0
                        seq nothing 0 0
                          if nothing 0 0
                            == nothing 0 0
                              . nothing 0 0
                                name e nothing 0 0
                                name pushed nothing 0 0
                              name nil polymorphic type 0 0
                            seq nothing 0 0
                              scope nothing 0 0
                                seq nothing 0 0
                                  := nothing 0 0
                                    name flags nothing 0 0
                                    . nothing 0 0
                                      name Var nothing 0 0
                                      name CHANGED nothing 0 0
                                  seq nothing 0 0
                                    if nothing 0 0
                                      call nothing 0 0
                                        name noexport nothing 0 0
                                        seq nothing 0 0
                                          name name nothing 0 0
                                      seq nothing 0 0
                                        |= nothing 0 0
                                          name flags nothing 0 0
                                          . nothing 0 0
                                            name Var nothing 0 0
                                            name NOEXPORT nothing 0 0
                                    seq nothing 0 0
                                      call nothing 0 0
                                        name hashadd nothing 0 0
                                        seq nothing 0 0
                                          . nothing 0 0
                                            name e nothing 0 0
                                            name vars nothing 0 0
                                          seq nothing 0 0
                                            name idx nothing 0 0
                                            seq nothing 0 0
                                              ref nothing 0 0
                                                call nothing 0 0
                                                  name Var nothing 0 0
                                                  seq nothing 0 0
                                                    name name nothing 0 0
                         
typecheck tree: 
fn(){} fn(ctxt: self ref Context, name: string): list of ref Listnode 0 0
  . fn(c: self ref Context, name: string): list of ref Listnode 0 0
    name Context Context 0 0
    name get nothing 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name name nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name idx nothing 0 0
        - nothing 0 0
          const (1) int 0 0
      seq nothing 0 0
        if nothing 0 0
          && nothing 0 0
            > nothing 0 0
              index nothing 0 0
                name name nothing 0 0
                const (0) int 0 0
              const (48) int 0 0
            <= nothing 0 0
              index nothing 0 0
                name name nothing 0 0
                const (0) int 0 0
              const (57) int 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                vardecl int 0 0
                  seq nothing 0 0
                seq nothing 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      name i nothing 0 0
                      const (0) int 0 0
                    for nothing 0 0
                      < nothing 0 0
                        name i nothing 0 0
                        len nothing 0 0
                          name name nothing 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          || nothing 0 0
                            < nothing 0 0
                              index nothing 0 0
                                name name nothing 0 0
                                name i nothing 0 0
                              const (48) int 0 0
                            > nothing 0 0
                              index nothing 0 0
                                name name nothing 0 0
                                name i nothing 0 0
                              const (57) int 0 0
                          seq nothing 0 0
                            break nothing 0 0
                        ++ nothing 0 0
                          name i nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      >= nothing 0 0
                        name i nothing 0 0
                        len nothing 0 0
                          name name nothing 0 0
                      seq nothing 0 0
                        scope nothing 0 0
                          seq nothing 0 0
                            = nothing 0 0
                              name idx nothing 0 0
                              - nothing 0 0
                                cast int 0 0
                                  name name nothing 0 0
                                const (1) int 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                name name nothing 0 0
                                const * string 0 0
        seq nothing 0 0
          := nothing 0 0
            name v nothing 0 0
            call nothing 0 0
              name varfind nothing 0 0
              seq nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name env nothing 0 0
                  name localenv nothing 0 0
                seq nothing 0 0
                  name name nothing 0 0
          seq nothing 0 0
            if nothing 0 0
              != nothing 0 0
                name v nothing 0 0
                name nil polymorphic type 0 0
              seq nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      != nothing 0 0
                        name idx nothing 0 0
                        - nothing 0 0
                          const (1) int 0 0
                      seq nothing 0 0
                        return nothing 0 0
                          call n
typecheck tree: 
fn(){} fn(ctxt: self ref Context): list of (string, list of ref Listnode) 0 0
  . fn(c: self ref Context): list of (string, list of ref Listnode) 0 0
    name Context Context 0 0
    name envlist nothing 0 0
  seq nothing 0 0
    := nothing 0 0
      name t nothing 0 0
      array array of list of ref Var 0 0
        name ENVHASHSIZE nothing 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name e nothing 0 0
          . nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name env nothing 0 0
            name localenv nothing 0 0
        for nothing 0 0
          != nothing 0 0
            name e nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name i nothing 0 0
                  const (0) int 0 0
                seq nothing 0 0
                  for nothing 0 0
                    < nothing 0 0
                      name i nothing 0 0
                      len nothing 0 0
                        . nothing 0 0
                          name e nothing 0 0
                          name vars nothing 0 0
                    seq nothing 0 0
                      scope nothing 0 0
                        seq nothing 0 0
                          := nothing 0 0
                            name vl nothing 0 0
                            index nothing 0 0
                              . nothing 0 0
                                name e nothing 0 0
                                name vars nothing 0 0
                              name i nothing 0 0
                          seq nothing 0 0
                            for nothing 0 0
                              != nothing 0 0
                                name vl nothing 0 0
                                name nil polymorphic type 0 0
                              seq nothing 0 0
                                scope nothing 0 0
                                  seq nothing 0 0
                                    := nothing 0 0
                                      name v nothing 0 0
                                      hd nothing 0 0
                                        name vl nothing 0 0
                                    seq nothing 0 0
                                      := nothing 0 0
                                        name idx nothing 0 0
                                        call nothing 0 0
                                          name hashfn nothing 0 0
                                          seq nothing 0 0
                                            . nothing 0 0
                                              name v nothing 0 0
                                              name name nothing 0 0
                                            seq nothing 0 0
                                              len nothing 0 0
                                                . nothing 0 0
                                                  name e nothing 0 0
                                                  name vars nothing 0 0
                                      seq nothing 0 0
                                        if nothing 0 0
                                          == nothing 0 0
                                            call nothing 0 0
                                              name hashfind nothing 0 0
                                              seq nothing 0 0
                                                name t nothing 0 0
                                                seq nothing 0 0
                                                  name idx nothing 0 0
                                                  seq nothing 0 0
                                                    . nothing 0 0
                                                      name v nothing 0 0
                                                      name name nothing 0 0
                                            name nil polymorphic type 0 0
                             
typecheck tree: 
fn(){} fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 0 0
  . fn(c: self ref Context, name: string, val: list of ref Listnode) 0 0
    name Context Context 0 0
    name setlocal nothing 0 0
  seq nothing 0 0
    := nothing 0 0
      name e nothing 0 0
      . nothing 0 0
        . nothing 0 0
          name ctxt nothing 0 0
          name env nothing 0 0
        name localenv nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name idx nothing 0 0
        call nothing 0 0
          name hashfn nothing 0 0
          seq nothing 0 0
            name name nothing 0 0
            seq nothing 0 0
              len nothing 0 0
                . nothing 0 0
                  name e nothing 0 0
                  name vars nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name v nothing 0 0
          call nothing 0 0
            name hashfind nothing 0 0
            seq nothing 0 0
              . nothing 0 0
                name e nothing 0 0
                name vars nothing 0 0
              seq nothing 0 0
                name idx nothing 0 0
                seq nothing 0 0
                  name name nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            == nothing 0 0
              name v nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  := nothing 0 0
                    name flags nothing 0 0
                    . nothing 0 0
                      name Var nothing 0 0
                      name CHANGED nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      call nothing 0 0
                        name noexport nothing 0 0
                        seq nothing 0 0
                          name name nothing 0 0
                      seq nothing 0 0
                        |= nothing 0 0
                          name flags nothing 0 0
                          . nothing 0 0
                            name Var nothing 0 0
                            name NOEXPORT nothing 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        name hashadd nothing 0 0
                        seq nothing 0 0
                          . nothing 0 0
                            name e nothing 0 0
                            name vars nothing 0 0
                          seq nothing 0 0
                            name idx nothing 0 0
                            seq nothing 0 0
                              ref nothing 0 0
                                call nothing 0 0
                                  name Var nothing 0 0
                                  seq nothing 0 0
                                    name name nothing 0 0
                                    seq nothing 0 0
                                      name val nothing 0 0
                                      seq nothing 0 0
                                        name flags nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    . nothing 0 0
                      name v nothing 0 0
                      name val nothing 0 0
                    name val nothing 0 0
                  seq nothing 0 0
                    |= nothing 0 0
                      . nothing 0 0
                        name v nothing 0 0
                        name flags nothing 0 0
                      . nothing 0 0
                        name Var nothing 0 0
                        name CHANGED nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: self ref Context) 0 0
  . fn(c: self ref Context) 0 0
    name Context Context 0 0
    name push nothing 0 0
  seq nothing 0 0
    = nothing 0 0
      . nothing 0 0
        . nothing 0 0
          name ctxt nothing 0 0
          name env nothing 0 0
        name localenv nothing 0 0
      call nothing 0 0
        name newlocalenv nothing 0 0
        seq nothing 0 0
          . nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name env nothing 0 0
            name localenv nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: self ref Context) 0 0
  . fn(c: self ref Context) 0 0
    name Context Context 0 0
    name pop nothing 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        . nothing 0 0
          . nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name env nothing 0 0
            name localenv nothing 0 0
          name pushed nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        call nothing 0 0
          name panic nothing 0 0
          seq nothing 0 0
            const unbalanced contexts in shell environment string 0 0
        scope nothing 0 0
          seq nothing 0 0
            := nothing 0 0
              name oldv nothing 0 0
              . nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name env nothing 0 0
                  name localenv nothing 0 0
                name vars nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name env nothing 0 0
                  name localenv nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name env nothing 0 0
                    name localenv nothing 0 0
                  name pushed nothing 0 0
              seq nothing 0 0
                seq nothing 0 0
                  := nothing 0 0
                    name i nothing 0 0
                    const (0) int 0 0
                  for nothing 0 0
                    < nothing 0 0
                      name i nothing 0 0
                      len nothing 0 0
                        name oldv nothing 0 0
                    seq nothing 0 0
                      scope nothing 0 0
                        seq nothing 0 0
                          := nothing 0 0
                            name vl nothing 0 0
                            index nothing 0 0
                              name oldv nothing 0 0
                              name i nothing 0 0
                          seq nothing 0 0
                            for nothing 0 0
                              != nothing 0 0
                                name vl nothing 0 0
                                name nil polymorphic type 0 0
                              seq nothing 0 0
                                scope nothing 0 0
                                  seq nothing 0 0
                                    if nothing 0 0
                                      != nothing 0 0
                                        := nothing 0 0
                                          name v nothing 0 0
                                          call nothing 0 0
                                            name varfind nothing 0 0
                                            seq nothing 0 0
                                              . nothing 0 0
                                                . nothing 0 0
                                                  name ctxt nothing 0 0
                                                  name env nothing 0 0
                                                name localenv nothing 0 0
                                              seq nothing 0 0
                                                . nothing 0 0
                                                  hd nothing 0 0
                                                    name vl nothing 0 0
                                                  name name nothing 0 0
                                        name nil polymorphic type 0 0
                                      seq nothing 0 0
                                        |= nothing 0 0
                                          . nothing 0 0
                                            name v nothing 0 0
                                            name flags nothing 0 0
                                          . 
typecheck tree: 
fn(){} fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 0 0
  . fn(c: self ref Context, args: list of ref Listnode, last: int): string 0 0
    name Context Context 0 0
    name run nothing 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        == nothing 0 0
          name args nothing 0 0
          name nil polymorphic type 0 0
        && nothing 0 0
          == nothing 0 0
            . nothing 0 0
              hd nothing 0 0
                name args nothing 0 0
              name cmd nothing 0 0
            name nil polymorphic type 0 0
          == nothing 0 0
            . nothing 0 0
              hd nothing 0 0
                name args nothing 0 0
              name word nothing 0 0
            name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name cmd nothing 0 0
        hd nothing 0 0
          name args nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          || nothing 0 0
            != nothing 0 0
              . nothing 0 0
                name cmd nothing 0 0
                name cmd nothing 0 0
              name nil polymorphic type 0 0
            == nothing 0 0
              index nothing 0 0
                . nothing 0 0
                  name cmd nothing 0 0
                  name word nothing 0 0
                const (0) int 0 0
              const (123) int 0 0
          seq nothing 0 0
            return nothing 0 0
              call nothing 0 0
                name runblock nothing 0 0
                seq nothing 0 0
                  name ctxt nothing 0 0
                  seq nothing 0 0
                    name args nothing 0 0
                    seq nothing 0 0
                      name last nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            & nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name options nothing 0 0
              . nothing 0 0
                name ctxt nothing 0 0
                name EXECPRINT nothing 0 0
            seq nothing 0 0
              call nothing 0 0
                -> nothing 0 0
                  name sys nothing 0 0
                  name fprint nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name stderr nothing 0 0
                  seq nothing 0 0
                    const %s
 string 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        name quoted nothing 0 0
                        seq nothing 0 0
                          name args nothing 0 0
                          seq nothing 0 0
                            const (0) int 0 0
          seq nothing 0 0
            := nothing 0 0
              tuple nothing 0 0
                seq nothing 0 0
                  name doneit nothing 0 0
                  seq nothing 0 0
                    name status nothing 0 0
              call nothing 0 0
                name trybuiltin nothing 0 0
                seq nothing 0 0
                  name ctxt nothing 0 0
                  seq nothing 0 0
                    name args nothing 0 0
                    seq nothing 0 0
                      name last nothing 0 0
            seq nothing 0 0
              if nothing 0 0
                ! nothing 0 0
                  name doneit nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name status nothing 0 0
                    call nothing 0 0
                      name runexternal nothing 0 0
                      seq nothing 0 0
                        name ctxt nothing 0 0
                        seq nothing 0 0
                          name args nothing 0 0
                          seq nothing 0 0
                            name last nothing 0 0
              seq nothing 0 0
                return nothing 0 0
                  name status nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: self ref Context, name: string, mod: Shellbuiltin) 0 0
  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
    name Context Context 0 0
    name addmodule nothing 0 0
  seq nothing 0 0
    call nothing 0 0
      -> nothing 0 0
        name mod nothing 0 0
        name initbuiltin nothing 0 0
      seq nothing 0 0
        name ctxt nothing 0 0
        seq nothing 0 0
          name myself nothing 0 0
    seq nothing 0 0
      = nothing 0 0
        . nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name env nothing 0 0
          name bmods nothing 0 0
        :: nothing 0 0
          tuple nothing 0 0
            seq nothing 0 0
              name name nothing 0 0
              seq nothing 0 0
                call nothing 0 0
                  -> nothing 0 0
                    name mod nothing 0 0
                    name getself nothing 0 0
          . nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name env nothing 0 0
            name bmods nothing 0 0
typecheck tree: 
fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
    name Context Context 0 0
    name addbuiltin nothing 0 0
  seq nothing 0 0
    call nothing 0 0
      name addbuiltin nothing 0 0
      seq nothing 0 0
        . nothing 0 0
          . nothing 0 0
            name c nothing 0 0
            name env nothing 0 0
          name builtins nothing 0 0
        seq nothing 0 0
          name name nothing 0 0
          seq nothing 0 0
            name mod nothing 0 0
typecheck tree: 
fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
    name Context Context 0 0
    name removebuiltin nothing 0 0
  seq nothing 0 0
    call nothing 0 0
      name removebuiltin nothing 0 0
      seq nothing 0 0
        . nothing 0 0
          . nothing 0 0
            name c nothing 0 0
            name env nothing 0 0
          name builtins nothing 0 0
        seq nothing 0 0
          name name nothing 0 0
          seq nothing 0 0
            name mod nothing 0 0
typecheck tree: 
fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
    name Context Context 0 0
    name addsbuiltin nothing 0 0
  seq nothing 0 0
    call nothing 0 0
      name addbuiltin nothing 0 0
      seq nothing 0 0
        . nothing 0 0
          . nothing 0 0
            name c nothing 0 0
            name env nothing 0 0
          name sbuiltins nothing 0 0
        seq nothing 0 0
          name name nothing 0 0
          seq nothing 0 0
            name mod nothing 0 0
typecheck tree: 
fn(){} fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
  . fn(c: self ref Context, name: string, mod: Shellbuiltin) 0 0
    name Context Context 0 0
    name removesbuiltin nothing 0 0
  seq nothing 0 0
    call nothing 0 0
      name removebuiltin nothing 0 0
      seq nothing 0 0
        . nothing 0 0
          . nothing 0 0
            name c nothing 0 0
            name env nothing 0 0
          name sbuiltins nothing 0 0
        seq nothing 0 0
          name name nothing 0 0
          seq nothing 0 0
            name mod nothing 0 0
typecheck tree: 
fn(){} fn(e: ref Localenv, name: string): ref Var 0 0
  name varfind fn(e: ref Localenv, name: string): ref Var 0 0
  seq nothing 0 0
    := nothing 0 0
      name idx nothing 0 0
      call nothing 0 0
        name hashfn nothing 0 0
        seq nothing 0 0
          name name nothing 0 0
          seq nothing 0 0
            len nothing 0 0
              . nothing 0 0
                name e nothing 0 0
                name vars nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name e nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          seq nothing 0 0
            := nothing 0 0
              name vl nothing 0 0
              index nothing 0 0
                . nothing 0 0
                  name e nothing 0 0
                  name vars nothing 0 0
                name idx nothing 0 0
            for nothing 0 0
              != nothing 0 0
                name vl nothing 0 0
                name nil polymorphic type 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    . nothing 0 0
                      hd nothing 0 0
                        name vl nothing 0 0
                      name name nothing 0 0
                    name name nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      hd nothing 0 0
                        name vl nothing 0 0
                = nothing 0 0
                  name vl nothing 0 0
                  tl nothing 0 0
                    name vl nothing 0 0
          = nothing 0 0
            name e nothing 0 0
            . nothing 0 0
              name e nothing 0 0
              name pushed nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ctxt: self ref Context, ename: string, err: string) 0 0
  . fn(c: self ref Context, ename: string, msg: string) 0 0
    name Context Context 0 0
    name fail nothing 0 0
  seq nothing 0 0
    if nothing 0 0
      & nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name options nothing 0 0
        . nothing 0 0
          name Context nothing 0 0
          name VERBOSE nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name fprint nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              name stderr nothing 0 0
            seq nothing 0 0
              const %s
 string 0 0
              seq nothing 0 0
                name err nothing 0 0
    seq nothing 0 0
      raise nothing 0 0
        + nothing 0 0
          const fail: string 0 0
          name ename nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: self ref Context, flags: int, on: int): int 0 0
  . fn(c: self ref Context, flags: int, on: int): int 0 0
    name Context Context 0 0
    name setoptions nothing 0 0
  seq nothing 0 0
    := nothing 0 0
      name old nothing 0 0
      . nothing 0 0
        . nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name env nothing 0 0
          name localenv nothing 0 0
        name flags nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        name on nothing 0 0
        seq nothing 0 0
          |= nothing 0 0
            . nothing 0 0
              . nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name env nothing 0 0
                name localenv nothing 0 0
              name flags nothing 0 0
            name flags nothing 0 0
          &= nothing 0 0
            . nothing 0 0
              . nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name env nothing 0 0
                name localenv nothing 0 0
              name flags nothing 0 0
            ~ nothing 0 0
              name flags nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name old nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: self ref Context): int 0 0
  . fn(c: self ref Context): int 0 0
    name Context Context 0 0
    name options nothing 0 0
  seq nothing 0 0
    return nothing 0 0
      . nothing 0 0
        . nothing 0 0
          . nothing 0 0
            name ctxt nothing 0 0
            name env nothing 0 0
          name localenv nothing 0 0
        name flags nothing 0 0
typecheck tree: 
fn(){} fn(s: string, n: int): int 0 0
  name hashfn fn(s: string, n: int): int 0 0
  seq nothing 0 0
    := nothing 0 0
      name h nothing 0 0
      const (0) int 0 0
    seq nothing 0 0
      := nothing 0 0
        name m nothing 0 0
        len nothing 0 0
          name s nothing 0 0
      seq nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name i nothing 0 0
            const (0) int 0 0
          for nothing 0 0
            < nothing 0 0
              name i nothing 0 0
              name m nothing 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name h nothing 0 0
                    + nothing 0 0
                      * nothing 0 0
                        const (65599) int 0 0
                        name h nothing 0 0
                      index nothing 0 0
                        name s nothing 0 0
                        name i nothing 0 0
              ++ nothing 0 0
                name i nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            % nothing 0 0
              & nothing 0 0
                name h nothing 0 0
                const (2147483647) int 0 0
              name n nothing 0 0
typecheck tree: 
fn(){} fn(ht: array of list of ref Var, idx: int, n: string): ref Var 0 0
  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 0 0
  seq nothing 0 0
    := nothing 0 0
      name ent nothing 0 0
      index nothing 0 0
        name ht nothing 0 0
        name idx nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name ent nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          if nothing 0 0
            == nothing 0 0
              . nothing 0 0
                hd nothing 0 0
                  name ent nothing 0 0
                name name nothing 0 0
              name n nothing 0 0
            seq nothing 0 0
              return nothing 0 0
                hd nothing 0 0
                  name ent nothing 0 0
          = nothing 0 0
            name ent nothing 0 0
            tl nothing 0 0
              name ent nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ht: array of list of ref Var, idx: int, v: ref Var) 0 0
  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 0 0
  seq nothing 0 0
    = nothing 0 0
      index nothing 0 0
        name ht nothing 0 0
        name idx nothing 0 0
      :: nothing 0 0
        name v nothing 0 0
        index nothing 0 0
          name ht nothing 0 0
          name idx nothing 0 0
typecheck tree: 
fn(){} fn(e: ref Localenv): ref Localenv 0 0
  name copylocalenv fn(e: ref Localenv): ref Localenv 0 0
  seq nothing 0 0
    := nothing 0 0
      name nvars nothing 0 0
      array array of list of ref Var 0 0
        len nothing 0 0
          . nothing 0 0
            name e nothing 0 0
            name vars nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name flags nothing 0 0
        . nothing 0 0
          name e nothing 0 0
          name flags nothing 0 0
      seq nothing 0 0
        for nothing 0 0
          != nothing 0 0
            name e nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name i nothing 0 0
                const (0) int 0 0
              for nothing 0 0
                < nothing 0 0
                  name i nothing 0 0
                  len nothing 0 0
                    name nvars nothing 0 0
                seq nothing 0 0
                  seq nothing 0 0
                    := nothing 0 0
                      name vl nothing 0 0
                      index nothing 0 0
                        . nothing 0 0
                          name e nothing 0 0
                          name vars nothing 0 0
                        name i nothing 0 0
                    for nothing 0 0
                      != nothing 0 0
                        name vl nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        scope nothing 0 0
                          seq nothing 0 0
                            := nothing 0 0
                              name idx nothing 0 0
                              call nothing 0 0
                                name hashfn nothing 0 0
                                seq nothing 0 0
                                  . nothing 0 0
                                    hd nothing 0 0
                                      name vl nothing 0 0
                                    name name nothing 0 0
                                  seq nothing 0 0
                                    len nothing 0 0
                                      name nvars nothing 0 0
                            seq nothing 0 0
                              if nothing 0 0
                                == nothing 0 0
                                  call nothing 0 0
                                    name hashfind nothing 0 0
                                    seq nothing 0 0
                                      name nvars nothing 0 0
                                      seq nothing 0 0
                                        name idx nothing 0 0
                                        seq nothing 0 0
                                          . nothing 0 0
                                            hd nothing 0 0
                                              name vl nothing 0 0
                                            name name nothing 0 0
                                  name nil polymorphic type 0 0
                                seq nothing 0 0
                                  call nothing 0 0
                                    name hashadd nothing 0 0
                                    seq nothing 0 0
                                      name nvars nothing 0 0
                                      seq nothing 0 0
                                        name idx nothing 0 0
                                        seq nothing 0 0
                                          ref nothing 0 0
                                            * nothing 0 0
                                              hd nothing 0 0
                                                name vl nothing 0 0
                        = nothing 0 0
                          name vl nothing 0 0
                          tl nothing 0 0
                            name vl nothing 0 0
                  ++ nothing 0 0
                    name i nothing 0 0
            = nothing 0 0
              name e nothing 0 0
              . nothing 0 0
       
typecheck tree: 
fn(){} fn(pushed: ref Localenv): ref Localenv 0 0
  name newlocalenv fn(pushed: ref Localenv): ref Localenv 0 0
  seq nothing 0 0
    := nothing 0 0
      name e nothing 0 0
      ref nothing 0 0
        call nothing 0 0
          name Localenv nothing 0 0
          seq nothing 0 0
            array array of list of ref Var 0 0
              name ENVHASHSIZE nothing 0 0
            seq nothing 0 0
              name pushed nothing 0 0
              seq nothing 0 0
                const (0) int 0 0
    seq nothing 0 0
      if nothing 0 0
        && nothing 0 0
          == nothing 0 0
            name pushed nothing 0 0
            name nil polymorphic type 0 0
          != nothing 0 0
            name env nothing 0 0
            name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name vl nothing 0 0
                call nothing 0 0
                  -> nothing 0 0
                    name env nothing 0 0
                    name getall nothing 0 0
              seq nothing 0 0
                for nothing 0 0
                  != nothing 0 0
                    name vl nothing 0 0
                    name nil polymorphic type 0 0
                  seq nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        := nothing 0 0
                          tuple nothing 0 0
                            seq nothing 0 0
                              name name nothing 0 0
                              seq nothing 0 0
                                name val nothing 0 0
                          hd nothing 0 0
                            name vl nothing 0 0
                        seq nothing 0 0
                          call nothing 0 0
                            name hashadd nothing 0 0
                            seq nothing 0 0
                              . nothing 0 0
                                name e nothing 0 0
                                name vars nothing 0 0
                              seq nothing 0 0
                                call nothing 0 0
                                  name hashfn nothing 0 0
                                  seq nothing 0 0
                                    name name nothing 0 0
                                    seq nothing 0 0
                                      len nothing 0 0
                                        . nothing 0 0
                                          name e nothing 0 0
                                          name vars nothing 0 0
                                seq nothing 0 0
                                  ref nothing 0 0
                                    call nothing 0 0
                                      name Var nothing 0 0
                                      seq nothing 0 0
                                        name name nothing 0 0
                                        seq nothing 0 0
                                          call nothing 0 0
                                            name envstringtoval nothing 0 0
                                            seq nothing 0 0
                                              name val nothing 0 0
                                          seq nothing 0 0
                                            const (0) int 0 0
                    = nothing 0 0
                      name vl nothing 0 0
                      tl nothing 0 0
                        name vl nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          != nothing 0 0
            name pushed nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            = nothing 0 0
              . nothing 0 0
                name e nothing 0 0
                name flags nothing 0 0
              . nothing 0 0
                name pushed nothing 0 0
                name flags nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            name e nothing 0 0
typecheck tree: 
fn(){} fn(b: ref Builtins): ref Builtins 0 0
  name copybuiltins fn(b: ref Builtins): ref Builtins 0 0
  seq nothing 0 0
    := nothing 0 0
      name nb nothing 0 0
      ref nothing 0 0
        call nothing 0 0
          name Builtins nothing 0 0
          seq nothing 0 0
            array array of (string, list of Shellbuiltin) 0 0
              . nothing 0 0
                name b nothing 0 0
                name n nothing 0 0
            seq nothing 0 0
              . nothing 0 0
                name b nothing 0 0
                name n nothing 0 0
    seq nothing 0 0
      = nothing 0 0
        slice nothing 0 0
          . nothing 0 0
            name nb nothing 0 0
            name ba nothing 0 0
          seq nothing 0 0
            const (0) int 0 0
            nothing nothing 0 0
        slice nothing 0 0
          . nothing 0 0
            name b nothing 0 0
            name ba nothing 0 0
          seq nothing 0 0
            const (0) int 0 0
            . nothing 0 0
              name b nothing 0 0
              name n nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name nb nothing 0 0
typecheck tree: 
fn(){} fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 0 0
  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 0 0
  seq nothing 0 0
    := nothing 0 0
      name lo nothing 0 0
      const (0) int 0 0
    seq nothing 0 0
      := nothing 0 0
        name hi nothing 0 0
        - nothing 0 0
          . nothing 0 0
            name b nothing 0 0
            name n nothing 0 0
          const (1) int 0 0
      seq nothing 0 0
        for nothing 0 0
          <= nothing 0 0
            name lo nothing 0 0
            name hi nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name mid nothing 0 0
                  / nothing 0 0
                    + nothing 0 0
                      name lo nothing 0 0
                      name hi nothing 0 0
                    const (2) int 0 0
                seq nothing 0 0
                  := nothing 0 0
                    tuple nothing 0 0
                      seq nothing 0 0
                        name bname nothing 0 0
                        seq nothing 0 0
                          name bmod nothing 0 0
                    index nothing 0 0
                      . nothing 0 0
                        name b nothing 0 0
                        name ba nothing 0 0
                      name mid nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      < nothing 0 0
                        name name nothing 0 0
                        name bname nothing 0 0
                      seq nothing 0 0
                        = nothing 0 0
                          name hi nothing 0 0
                          - nothing 0 0
                            name mid nothing 0 0
                            const (1) int 0 0
                        if nothing 0 0
                          > nothing 0 0
                            name name nothing 0 0
                            name bname nothing 0 0
                          seq nothing 0 0
                            = nothing 0 0
                              name lo nothing 0 0
                              + nothing 0 0
                                name mid nothing 0 0
                                const (1) int 0 0
                            return nothing 0 0
                              tuple nothing 0 0
                                seq nothing 0 0
                                  name mid nothing 0 0
                                  seq nothing 0 0
                                    name bmod nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            tuple nothing 0 0
              seq nothing 0 0
                name lo nothing 0 0
                seq nothing 0 0
                  name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
  seq nothing 0 0
    := nothing 0 0
      tuple nothing 0 0
        seq nothing 0 0
          name n nothing 0 0
          seq nothing 0 0
            name bmods nothing 0 0
      call nothing 0 0
        name findbuiltin nothing 0 0
        seq nothing 0 0
          name b nothing 0 0
          seq nothing 0 0
            name name nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        == nothing 0 0
          name bmods nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          return nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          == nothing 0 0
            hd nothing 0 0
              name bmods nothing 0 0
            name mod nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  != nothing 0 0
                    tl nothing 0 0
                      name bmods nothing 0 0
                    name nil polymorphic type 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      index nothing 0 0
                        . nothing 0 0
                          name b nothing 0 0
                          name ba nothing 0 0
                        name n nothing 0 0
                      tuple nothing 0 0
                        seq nothing 0 0
                          name name nothing 0 0
                          seq nothing 0 0
                            tl nothing 0 0
                              name bmods nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        = nothing 0 0
                          slice nothing 0 0
                            . nothing 0 0
                              name b nothing 0 0
                              name ba nothing 0 0
                            seq nothing 0 0
                              name n nothing 0 0
                              nothing nothing 0 0
                          slice nothing 0 0
                            . nothing 0 0
                              name b nothing 0 0
                              name ba nothing 0 0
                            seq nothing 0 0
                              + nothing 0 0
                                name n nothing 0 0
                                const (1) int 0 0
                              . nothing 0 0
                                name b nothing 0 0
                                name n nothing 0 0
                        seq nothing 0 0
                          = nothing 0 0
                            index nothing 0 0
                              . nothing 0 0
                                name b nothing 0 0
                                name ba nothing 0 0
                              -- nothing 0 0
                                . nothing 0 0
                                  name b nothing 0 0
                                  name n nothing 0 0
                            tuple nothing 0 0
                              seq nothing 0 0
                                name nil polymorphic type 0 0
                                seq nothing 0 0
                                  name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        == nothing 0 0
          name mod nothing 0 0
          name nil polymorphic type 0 0
        && nothing 0 0
          == nothing 0 0
            name name nothing 0 0
            const builtin string 0 0
          != nothing 0 0
            name mod nothing 0 0
            name myselfbuiltin nothing 0 0
      seq nothing 0 0
        return nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        tuple nothing 0 0
          seq nothing 0 0
            name n nothing 0 0
            seq nothing 0 0
              name bmods nothing 0 0
        call nothing 0 0
          name findbuiltin nothing 0 0
          seq nothing 0 0
            name b nothing 0 0
            seq nothing 0 0
              name name nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          != nothing 0 0
            name bmods nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    hd nothing 0 0
                      name bmods nothing 0 0
                    name myselfbuiltin nothing 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      index nothing 0 0
                        . nothing 0 0
                          name b nothing 0 0
                          name ba nothing 0 0
                        name n nothing 0 0
                      tuple nothing 0 0
                        seq nothing 0 0
                          name name nothing 0 0
                          seq nothing 0 0
                            :: nothing 0 0
                              name mod nothing 0 0
                              name bmods nothing 0 0
                    = nothing 0 0
                      index nothing 0 0
                        . nothing 0 0
                          name b nothing 0 0
                          name ba nothing 0 0
                        name n nothing 0 0
                      tuple nothing 0 0
                        seq nothing 0 0
                          name name nothing 0 0
                          seq nothing 0 0
                            :: nothing 0 0
                              name mod nothing 0 0
                              name nil polymorphic type 0 0
            scope nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    . nothing 0 0
                      name b nothing 0 0
                      name n nothing 0 0
                    len nothing 0 0
                      . nothing 0 0
                        name b nothing 0 0
                        name ba nothing 0 0
                  seq nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        := nothing 0 0
                          name nb nothing 0 0
                          array array of (string, list of Shellbuiltin) 0 0
                            + nothing 0 0
                              . nothing 0 0
                                name b nothing 0 0
                                name n nothing 0 0
                              const (10) int 0 0
                        seq nothing 0 0
                          = nothing 0 0
                            slice nothing 0 0
                              name nb nothing 0 0
                              seq nothing 0 0
                                const (0) int 0 0
                                nothing nothing 0 0
                            slice nothing 0 0
                              . nothing 0 0
                                name b nothing 0 0
                                name ba nothing 0 0
                              seq nothing 0 0
                                const (0) int 0 0
                                . nothing 0 0
typecheck tree: 
fn(){} fn(b: ref Builtins, mod: Shellbuiltin) 0 0
  name removebuiltinmod fn(b: ref Builtins, mod: Shellbuiltin) 0 0
  seq nothing 0 0
    := nothing 0 0
      name j nothing 0 0
      const (0) int 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name i nothing 0 0
          const (0) int 0 0
        for nothing 0 0
          < nothing 0 0
            name i nothing 0 0
            . nothing 0 0
              name b nothing 0 0
              name n nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  tuple nothing 0 0
                    seq nothing 0 0
                      name name nothing 0 0
                      seq nothing 0 0
                        name bmods nothing 0 0
                  index nothing 0 0
                    . nothing 0 0
                      name b nothing 0 0
                      name ba nothing 0 0
                    name i nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    == nothing 0 0
                      hd nothing 0 0
                        name bmods nothing 0 0
                      name mod nothing 0 0
                    seq nothing 0 0
                      = nothing 0 0
                        name bmods nothing 0 0
                        tl nothing 0 0
                          name bmods nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      != nothing 0 0
                        name bmods nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        = nothing 0 0
                          index nothing 0 0
                            . nothing 0 0
                              name b nothing 0 0
                              name ba nothing 0 0
                            ++ nothing 0 0
                              name j nothing 0 0
                          tuple nothing 0 0
                            seq nothing 0 0
                              name name nothing 0 0
                              seq nothing 0 0
                                name bmods nothing 0 0
            ++ nothing 0 0
              name i nothing 0 0
      seq nothing 0 0
        = nothing 0 0
          . nothing 0 0
            name b nothing 0 0
            name n nothing 0 0
          name j nothing 0 0
        seq nothing 0 0
          for nothing 0 0
            < nothing 0 0
              name j nothing 0 0
              name i nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                index nothing 0 0
                  . nothing 0 0
                    name b nothing 0 0
                    name ba nothing 0 0
                  name j nothing 0 0
                tuple nothing 0 0
                  seq nothing 0 0
                    name nil polymorphic type 0 0
                    seq nothing 0 0
                      name nil polymorphic type 0 0
              ++ nothing 0 0
                name j nothing 0 0
typecheck tree: 
fn(){} fn(e: ref Localenv) 0 0
  name export fn(e: ref Localenv) 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name env nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        != nothing 0 0
          . nothing 0 0
            name e nothing 0 0
            name pushed nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          call nothing 0 0
            name export nothing 0 0
            seq nothing 0 0
              . nothing 0 0
                name e nothing 0 0
                name pushed nothing 0 0
      seq nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name i nothing 0 0
            const (0) int 0 0
          for nothing 0 0
            < nothing 0 0
              name i nothing 0 0
              len nothing 0 0
                . nothing 0 0
                  name e nothing 0 0
                  name vars nothing 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  := nothing 0 0
                    name vl nothing 0 0
                    index nothing 0 0
                      . nothing 0 0
                        name e nothing 0 0
                        name vars nothing 0 0
                      name i nothing 0 0
                  seq nothing 0 0
                    for nothing 0 0
                      != nothing 0 0
                        name vl nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        scope nothing 0 0
                          seq nothing 0 0
                            := nothing 0 0
                              name v nothing 0 0
                              hd nothing 0 0
                                name vl nothing 0 0
                            seq nothing 0 0
                              if nothing 0 0
                                && nothing 0 0
                                  & nothing 0 0
                                    . nothing 0 0
                                      name v nothing 0 0
                                      name flags nothing 0 0
                                    . nothing 0 0
                                      name Var nothing 0 0
                                      name CHANGED nothing 0 0
                                  ! nothing 0 0
                                    & nothing 0 0
                                      . nothing 0 0
                                        name v nothing 0 0
                                        name flags nothing 0 0
                                      . nothing 0 0
                                        name Var nothing 0 0
                                        name NOEXPORT nothing 0 0
                                seq nothing 0 0
                                  scope nothing 0 0
                                    seq nothing 0 0
                                      call nothing 0 0
                                        name setenv nothing 0 0
                                        seq nothing 0 0
                                          . nothing 0 0
                                            name v nothing 0 0
                                            name name nothing 0 0
                                          seq nothing 0 0
                                            . nothing 0 0
                                              name v nothing 0 0
                                              name val nothing 0 0
                                      seq nothing 0 0
                                        &= nothing 0 0
                                          . nothing 0 0
                                            name v nothing 0 0
                                            name flags nothing 0 0
                                          ~ nothing 0 0
                                            . nothing 0 0
                                              name Var 
typecheck tree: 
fn(){} fn(name: string): int 0 0
  name noexport fn(name: string): int 0 0
  seq nothing 0 0
    case nothing 0 0
      name name nothing 0 0
      seq nothing 0 0
        label nothing 0 0
          seq nothing 0 0
            const 0 string 0 0
            seq nothing 0 0
              const * string 0 0
              seq nothing 0 0
                const status string 0 0
          scope nothing 0 0
            return nothing 0 0
              const (1) int 0 0
    seq nothing 0 0
      return nothing 0 0
        const (0) int 0 0
typecheck tree: 
fn(){} fn(val: list of ref Listnode, k: int): list of ref Listnode 0 0
  name index fn(val: list of ref Listnode, k: int): list of ref Listnode 0 0
  seq nothing 0 0
    for nothing 0 0
      && nothing 0 0
        > nothing 0 0
          name k nothing 0 0
          const (0) int 0 0
        != nothing 0 0
          name val nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        = nothing 0 0
          name val nothing 0 0
          tl nothing 0 0
            name val nothing 0 0
        -- nothing 0 0
          name k nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        != nothing 0 0
          name val nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          = nothing 0 0
            name val nothing 0 0
            :: nothing 0 0
              hd nothing 0 0
                name val nothing 0 0
              name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name val nothing 0 0
typecheck tree: 
fn(){} fn(name: string): list of ref Listnode 0 0
  name getenv fn(name: string): list of ref Listnode 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name env nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      return nothing 0 0
        call nothing 0 0
          name envstringtoval nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              -> nothing 0 0
                name env nothing 0 0
                name getenv nothing 0 0
              seq nothing 0 0
                name name nothing 0 0
typecheck tree: 
fn(){} fn(v: string): list of ref Listnode 0 0
  name envstringtoval fn(v: string): list of ref Listnode 0 0
  seq nothing 0 0
    return nothing 0 0
      call nothing 0 0
        name stringlist2list nothing 0 0
        seq nothing 0 0
          call nothing 0 0
            -> nothing 0 0
              name str nothing 0 0
              name unquoted nothing 0 0
            seq nothing 0 0
              name v nothing 0 0
typecheck tree: 
fn(){} fn(v: string): list of ref Listnode 0 0
  name XXXenvstringtoval fn(v: string): list of ref Listnode 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        len nothing 0 0
          name v nothing 0 0
        const (0) int 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name start nothing 0 0
        len nothing 0 0
          name v nothing 0 0
      seq nothing 0 0
        vardecl list of ref Listnode 0 0
          seq nothing 0 0
        seq nothing 0 0
          seq nothing 0 0
            := nothing 0 0
              name i nothing 0 0
              - nothing 0 0
                name start nothing 0 0
                const (1) int 0 0
            for nothing 0 0
              >= nothing 0 0
                name i nothing 0 0
                const (0) int 0 0
              seq nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      == nothing 0 0
                        index nothing 0 0
                          name v nothing 0 0
                          name i nothing 0 0
                        name ENVSEP nothing 0 0
                      seq nothing 0 0
                        scope nothing 0 0
                          seq nothing 0 0
                            = nothing 0 0
                              name val nothing 0 0
                              :: nothing 0 0
                                ref nothing 0 0
                                  call nothing 0 0
                                    name Listnode nothing 0 0
                                    seq nothing 0 0
                                      name nil polymorphic type 0 0
                                      seq nothing 0 0
                                        slice nothing 0 0
                                          name v nothing 0 0
                                          seq nothing 0 0
                                            + nothing 0 0
                                              name i nothing 0 0
                                              const (1) int 0 0
                                            name start nothing 0 0
                                name val nothing 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                name start nothing 0 0
                                name i nothing 0 0
                -- nothing 0 0
                  name i nothing 0 0
          seq nothing 0 0
            return nothing 0 0
              :: nothing 0 0
                ref nothing 0 0
                  call nothing 0 0
                    name Listnode nothing 0 0
                    seq nothing 0 0
                      name nil polymorphic type 0 0
                      seq nothing 0 0
                        slice nothing 0 0
                          name v nothing 0 0
                          seq nothing 0 0
                            const (0) int 0 0
                            name start nothing 0 0
                name val nothing 0 0
typecheck tree: 
fn(){} fn(name: string, val: list of ref Listnode) 0 0
  name setenv fn(name: string, val: list of ref Listnode) 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name env nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
    seq nothing 0 0
      call nothing 0 0
        -> nothing 0 0
          name env nothing 0 0
          name setenv nothing 0 0
        seq nothing 0 0
          name name nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              name quoted nothing 0 0
              seq nothing 0 0
                name val nothing 0 0
                seq nothing 0 0
                  const (1) int 0 0
typecheck tree: 
fn(){} fn(s: string): int 0 0
  name containswildchar fn(s: string): int 0 0
  seq nothing 0 0
    := nothing 0 0
      name i nothing 0 0
      const (0) int 0 0
    seq nothing 0 0
      for nothing 0 0
        < nothing 0 0
          name i nothing 0 0
          len nothing 0 0
            name s nothing 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              if nothing 0 0
                && nothing 0 0
                  == nothing 0 0
                    index nothing 0 0
                      name s nothing 0 0
                      name i nothing 0 0
                    name GLOB nothing 0 0
                  < nothing 0 0
                    name i nothing 0 0
                    - nothing 0 0
                      len nothing 0 0
                        name s nothing 0 0
                      const (1) int 0 0
                seq nothing 0 0
                  scope nothing 0 0
                    seq nothing 0 0
                      case nothing 0 0
                        index nothing 0 0
                          name s nothing 0 0
                          + nothing 0 0
                            name i nothing 0 0
                            const (1) int 0 0
                        seq nothing 0 0
                          label nothing 0 0
                            seq nothing 0 0
                              const (42) int 0 0
                              seq nothing 0 0
                                const (91) int 0 0
                                seq nothing 0 0
                                  const (63) int 0 0
                                  seq nothing 0 0
                                    name GLOB nothing 0 0
                            scope nothing 0 0
                              return nothing 0 0
                                const (1) int 0 0
          ++ nothing 0 0
            name i nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          const (0) int 0 0
typecheck tree: 
fn(){} fn(word: string): string 0 0
  name patquote fn(word: string): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name outword nothing 0 0
      const  string 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name i nothing 0 0
          const (0) int 0 0
        for nothing 0 0
          < nothing 0 0
            name i nothing 0 0
            len nothing 0 0
              name word nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                case nothing 0 0
                  index nothing 0 0
                    name word nothing 0 0
                    name i nothing 0 0
                  seq nothing 0 0
                    label nothing 0 0
                      seq nothing 0 0
                        const (91) int 0 0
                        seq nothing 0 0
                          const (42) int 0 0
                          seq nothing 0 0
                            const (63) int 0 0
                            seq nothing 0 0
                              const (92) int 0 0
                      scope nothing 0 0
                        = nothing 0 0
                          index nothing 0 0
                            name outword nothing 0 0
                            len nothing 0 0
                              name outword nothing 0 0
                          const (92) int 0 0
                    seq nothing 0 0
                      label nothing 0 0
                        seq nothing 0 0
                          name GLOB nothing 0 0
                        scope nothing 0 0
                          seq nothing 0 0
                            seq nothing 0 0
                              ++ nothing 0 0
                                name i nothing 0 0
                              if nothing 0 0
                                >= nothing 0 0
                                  name i nothing 0 0
                                  len nothing 0 0
                                    name word nothing 0 0
                                seq nothing 0 0
                                  return nothing 0 0
                                    name outword nothing 0 0
                            if nothing 0 0
                              && nothing 0 0
                                && nothing 0 0
                                  == nothing 0 0
                                    index nothing 0 0
                                      name word nothing 0 0
                                      name i nothing 0 0
                                    const (91) int 0 0
                                  < nothing 0 0
                                    name i nothing 0 0
                                    - nothing 0 0
                                      len nothing 0 0
                                        name word nothing 0 0
                                      const (1) int 0 0
                                == nothing 0 0
                                  index nothing 0 0
                                    name word nothing 0 0
                                    + nothing 0 0
                                      name i nothing 0 0
                                      const (1) int 0 0
                                  const (126) int 0 0
                              seq nothing 0 0
                                = nothing 0 0
                                  index nothing 0 0
                                    name word nothing 0 0
                                    + nothing 0 0
                                      name i nothing 0 0
                                      const (1) int 0 0
                                  const (94) int 0 0
                seq nothing 0 0
                  = nothing 0 0
                    index nothing 0 0
                      name outword nothing 0 0
                      len nothing 0 0
                        name outword nothing 0 0
                    index nothing 0 0
                      name word nothing 0 0
                      name i noth
typecheck tree: 
fn(){} fn(s: string): string 0 0
  name deglob fn(s: string): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name j nothing 0 0
      const (0) int 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name i nothing 0 0
          const (0) int 0 0
        for nothing 0 0
          < nothing 0 0
            name i nothing 0 0
            len nothing 0 0
              name s nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  != nothing 0 0
                    index nothing 0 0
                      name s nothing 0 0
                      name i nothing 0 0
                    name GLOB nothing 0 0
                  seq nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          != nothing 0 0
                            name i nothing 0 0
                            name j nothing 0 0
                          seq nothing 0 0
                            = nothing 0 0
                              index nothing 0 0
                                name s nothing 0 0
                                name j nothing 0 0
                              index nothing 0 0
                                name s nothing 0 0
                                name i nothing 0 0
                        seq nothing 0 0
                          ++ nothing 0 0
                            name j nothing 0 0
            ++ nothing 0 0
              name i nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          == nothing 0 0
            name i nothing 0 0
            name j nothing 0 0
          seq nothing 0 0
            return nothing 0 0
              name s nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            slice nothing 0 0
              name s nothing 0 0
              seq nothing 0 0
                const (0) int 0 0
                name j nothing 0 0
typecheck tree: 
fn(){} fn(nl: list of ref Listnode): list of ref Listnode 0 0
  name glob fn(nl: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    vardecl list of ref Listnode 0 0
      seq nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name nl nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name n nothing 0 0
                hd nothing 0 0
                  name nl nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  call nothing 0 0
                    name containswildchar nothing 0 0
                    seq nothing 0 0
                      . nothing 0 0
                        name n nothing 0 0
                        name word nothing 0 0
                  seq nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        := nothing 0 0
                          name qword nothing 0 0
                          call nothing 0 0
                            name patquote nothing 0 0
                            seq nothing 0 0
                              . nothing 0 0
                                name n nothing 0 0
                                name word nothing 0 0
                        seq nothing 0 0
                          := nothing 0 0
                            name files nothing 0 0
                            call nothing 0 0
                              -> nothing 0 0
                                name filepat nothing 0 0
                                name expand nothing 0 0
                              seq nothing 0 0
                                name qword nothing 0 0
                          seq nothing 0 0
                            if nothing 0 0
                              == nothing 0 0
                                name files nothing 0 0
                                name nil polymorphic type 0 0
                              seq nothing 0 0
                                = nothing 0 0
                                  name files nothing 0 0
                                  :: nothing 0 0
                                    call nothing 0 0
                                      name deglob nothing 0 0
                                      seq nothing 0 0
                                        . nothing 0 0
                                          name n nothing 0 0
                                          name word nothing 0 0
                                    name nil polymorphic type 0 0
                            seq nothing 0 0
                              for nothing 0 0
                                != nothing 0 0
                                  name files nothing 0 0
                                  name nil polymorphic type 0 0
                                seq nothing 0 0
                                  scope nothing 0 0
                                    seq nothing 0 0
                                      = nothing 0 0
                                        name new nothing 0 0
                                        :: nothing 0 0
                                          ref nothing 0 0
                                            call nothing 0 0
                                              name Listnode nothing 0 0
                                              seq nothing 0 0
                                                name nil polymorphic type 0 0
                                                seq nothing 0 0
                                                  hd nothing 0 0
                                                    name files nothing 0 0
                                          name new nothing 0 0
                                      seq nothing 0 0
                                        = nothing 0 0
                                          name files nothing 0 0
                                          tl nothing 0 0
                                        
typecheck tree: 
fn(){} fn(nl: list of ref Listnode): list of string 0 0
  name list2stringlist fn(nl: list of ref Listnode): list of string 0 0
  seq nothing 0 0
    vardecli nothing 0 0
      vardecl list of string 0 0
        seq nothing 0 0
      = nothing 0 0
        name ret nothing 0 0
        name nil polymorphic type 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name nl nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              vardecl string 0 0
                seq nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name el nothing 0 0
                  hd nothing 0 0
                    name nl nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    || nothing 0 0
                      != nothing 0 0
                        . nothing 0 0
                          name el nothing 0 0
                          name word nothing 0 0
                        name nil polymorphic type 0 0
                      == nothing 0 0
                        . nothing 0 0
                          name el nothing 0 0
                          name cmd nothing 0 0
                        name nil polymorphic type 0 0
                    seq nothing 0 0
                      = nothing 0 0
                        name newel nothing 0 0
                        . nothing 0 0
                          name el nothing 0 0
                          name word nothing 0 0
                      = nothing 0 0
                        . nothing 0 0
                          name el nothing 0 0
                          name word nothing 0 0
                        = nothing 0 0
                          name newel nothing 0 0
                          call nothing 0 0
                            name cmd2string nothing 0 0
                            seq nothing 0 0
                              . nothing 0 0
                                name el nothing 0 0
                                name cmd nothing 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      name ret nothing 0 0
                      :: nothing 0 0
                        name newel nothing 0 0
                        name ret nothing 0 0
                    seq nothing 0 0
                      = nothing 0 0
                        name nl nothing 0 0
                        tl nothing 0 0
                          name nl nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name sl nothing 0 0
          call nothing 0 0
            name revstringlist nothing 0 0
            seq nothing 0 0
              name ret nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            name sl nothing 0 0
typecheck tree: 
fn(){} fn(sl: list of string): list of ref Listnode 0 0
  name stringlist2list fn(sl: list of string): list of ref Listnode 0 0
  seq nothing 0 0
    vardecl list of ref Listnode 0 0
      seq nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name sl nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                name ret nothing 0 0
                :: nothing 0 0
                  ref nothing 0 0
                    call nothing 0 0
                      name Listnode nothing 0 0
                      seq nothing 0 0
                        name nil polymorphic type 0 0
                        seq nothing 0 0
                          hd nothing 0 0
                            name sl nothing 0 0
                  name ret nothing 0 0
              seq nothing 0 0
                = nothing 0 0
                  name sl nothing 0 0
                  tl nothing 0 0
                    name sl nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          call nothing 0 0
            name revlist nothing 0 0
            seq nothing 0 0
              name ret nothing 0 0
typecheck tree: 
fn(){} fn(l: list of string): list of string 0 0
  name revstringlist fn(l: list of string): list of string 0 0
  seq nothing 0 0
    vardecl list of string 0 0
      seq nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name l nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                name t nothing 0 0
                :: nothing 0 0
                  hd nothing 0 0
                    name l nothing 0 0
                  name t nothing 0 0
              seq nothing 0 0
                = nothing 0 0
                  name l nothing 0 0
                  tl nothing 0 0
                    name l nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name t nothing 0 0
typecheck tree: 
fn(){} fn(l: list of ref Listnode): list of ref Listnode 0 0
  name revlist fn(l: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    vardecl list of ref Listnode 0 0
      seq nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name l nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                name t nothing 0 0
                :: nothing 0 0
                  hd nothing 0 0
                    name l nothing 0 0
                  name t nothing 0 0
              seq nothing 0 0
                = nothing 0 0
                  name l nothing 0 0
                  tl nothing 0 0
                    name l nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name t nothing 0 0
typecheck tree: 
fn(){} fn(isassign: int, redir: ref Redir): string 0 0
  name fdassignstr fn(isassign: int, redir: ref Redir): string 0 0
  seq nothing 0 0
    vardecli nothing 0 0
      vardecl string 0 0
        seq nothing 0 0
      = nothing 0 0
        name l nothing 0 0
        name nil polymorphic type 0 0
    seq nothing 0 0
      if nothing 0 0
        >= nothing 0 0
          . nothing 0 0
            name redir nothing 0 0
            name fd1 nothing 0 0
          const (0) int 0 0
        seq nothing 0 0
          = nothing 0 0
            name l nothing 0 0
            cast string 0 0
              . nothing 0 0
                name redir nothing 0 0
                name fd1 nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          name isassign nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                vardecli nothing 0 0
                  vardecl string 0 0
                    seq nothing 0 0
                  = nothing 0 0
                    name r nothing 0 0
                    name nil polymorphic type 0 0
                seq nothing 0 0
                  if nothing 0 0
                    >= nothing 0 0
                      . nothing 0 0
                        name redir nothing 0 0
                        name fd2 nothing 0 0
                      const (0) int 0 0
                    seq nothing 0 0
                      = nothing 0 0
                        name r nothing 0 0
                        cast string 0 0
                          . nothing 0 0
                            name redir nothing 0 0
                            name fd2 nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      + nothing 0 0
                        + nothing 0 0
                          + nothing 0 0
                            + nothing 0 0
                              const [ string 0 0
                              name l nothing 0 0
                            const = string 0 0
                          name r nothing 0 0
                        const ] string 0 0
        seq nothing 0 0
          return nothing 0 0
            + nothing 0 0
              + nothing 0 0
                const [ string 0 0
                name l nothing 0 0
              const ] string 0 0
typecheck tree: 
fn(){} fn(rtype: int): string 0 0
  name redirstr fn(rtype: int): string 0 0
  seq nothing 0 0
    case nothing 0 0
      name rtype nothing 0 0
      seq nothing 0 0
        label nothing 0 0
          seq nothing 0 0
            * nothing 0 0
            seq nothing 0 0
              -> nothing 0 0
                name Sys nothing 0 0
                name OREAD nothing 0 0
          scope nothing 0 0
            return nothing 0 0
              const < string 0 0
        seq nothing 0 0
          label nothing 0 0
            seq nothing 0 0
              -> nothing 0 0
                name Sys nothing 0 0
                name OWRITE nothing 0 0
            scope nothing 0 0
              return nothing 0 0
                const > string 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                | nothing 0 0
                  -> nothing 0 0
                    name Sys nothing 0 0
                    name OWRITE nothing 0 0
                  name OAPPEND nothing 0 0
              scope nothing 0 0
                return nothing 0 0
                  const >> string 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  -> nothing 0 0
                    name Sys nothing 0 0
                    name ORDWR nothing 0 0
                scope nothing 0 0
                  return nothing 0 0
                    const <> string 0 0
typecheck tree: 
fn(){} fn(n: ref Node): string 0 0
  name cmd2string fn(c: ref Node): string 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name n nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          const  string 0 0
    seq nothing 0 0
      vardecl string 0 0
        seq nothing 0 0
      seq nothing 0 0
        case nothing 0 0
          . nothing 0 0
            name n nothing 0 0
            name ntype nothing 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                name n_BLOCK nothing 0 0
              scope nothing 0 0
                = nothing 0 0
                  name s nothing 0 0
                  + nothing 0 0
                    + nothing 0 0
                      const { string 0 0
                      call nothing 0 0
                        name cmd2string nothing 0 0
                        seq nothing 0 0
                          . nothing 0 0
                            name n nothing 0 0
                            name left nothing 0 0
                    const } string 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  name n_VAR nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      name s nothing 0 0
                      + nothing 0 0
                        const $ string 0 0
                        call nothing 0 0
                          name cmd2string nothing 0 0
                          seq nothing 0 0
                            . nothing 0 0
                              name n nothing 0 0
                              name left nothing 0 0
                    if nothing 0 0
                      != nothing 0 0
                        . nothing 0 0
                          name n nothing 0 0
                          name right nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        += nothing 0 0
                          name s nothing 0 0
                          + nothing 0 0
                            + nothing 0 0
                              const ( string 0 0
                              call nothing 0 0
                                name cmd2string nothing 0 0
                                seq nothing 0 0
                                  . nothing 0 0
                                    name n nothing 0 0
                                    name right nothing 0 0
                            const ) string 0 0
              seq nothing 0 0
                label nothing 0 0
                  seq nothing 0 0
                    name n_SQUASH nothing 0 0
                  scope nothing 0 0
                    = nothing 0 0
                      name s nothing 0 0
                      + nothing 0 0
                        const $" string 0 0
                        call nothing 0 0
                          name cmd2string nothing 0 0
                          seq nothing 0 0
                            . nothing 0 0
                              name n nothing 0 0
                              name left nothing 0 0
                seq nothing 0 0
                  label nothing 0 0
                    seq nothing 0 0
                      name n_COUNT nothing 0 0
                    scope nothing 0 0
                      = nothing 0 0
                        name s nothing 0 0
                        + nothing 0 0
                          const $# string 0 0
                          call nothing 0 0
                            name cmd2string nothing 0 0
                            seq nothing 0 0
                              . nothing 0 0
                                name n nothing 0 0
                                name left nothing 0 0
                  seq nothing 0 0
                    label nothing 0 0
                      seq nothing 0 0
                        name n_BQ nothing 0 0
                      scope nothing 0 0
  
typecheck tree: 
fn(){} fn(s: string, glob: int): string 0 0
  name quote fn(s: string, glob: int): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name needquote nothing 0 0
      const (0) int 0 0
    seq nothing 0 0
      := nothing 0 0
        name t nothing 0 0
        const  string 0 0
      seq nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name i nothing 0 0
            const (0) int 0 0
          for nothing 0 0
            < nothing 0 0
              name i nothing 0 0
              len nothing 0 0
                name s nothing 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  case nothing 0 0
                    index nothing 0 0
                      name s nothing 0 0
                      name i nothing 0 0
                    seq nothing 0 0
                      label nothing 0 0
                        seq nothing 0 0
                          const (123) int 0 0
                          seq nothing 0 0
                            const (125) int 0 0
                            seq nothing 0 0
                              const (40) int 0 0
                              seq nothing 0 0
                                const (41) int 0 0
                                seq nothing 0 0
                                  const (96) int 0 0
                                  seq nothing 0 0
                                    const (38) int 0 0
                                    seq nothing 0 0
                                      const (59) int 0 0
                                      seq nothing 0 0
                                        const (61) int 0 0
                                        seq nothing 0 0
                                          const (62) int 0 0
                                          seq nothing 0 0
                                            const (60) int 0 0
                                            seq nothing 0 0
                                              const (35) int 0 0
                                              seq nothing 0 0
                                                const (124) int 0 0
                                                seq nothing 0 0
                                                  const (42) int 0 0
                                                  seq nothing 0 0
                                                    const (91) int 0 0
                                                    seq nothing 0 0
                                                      const (63) int 0 0
                                                      seq nothing 0 0
                                                        const (36) int 0 0
                                                        seq nothing 0 0
                                                          const (94) int 0 0
                                                          seq nothing 0 0
                                                            const (32) int 0 0
                                                            seq nothing 0 0
                                                              const (9) int 0 0
                                                              seq nothing 0 0
                                                                const (10) int 0 0
                                                                seq nothing 0 0
                                                                  const (13) int 0 0
                        scope nothing 0 0
                          = nothing 0 0
                            name needquote nothing 0 0
                            const (1) int 0 0
                      seq nothing 0 0
                        label nothing 0 0
                          seq nothing 0 0
                            const (39) int 0 0
                          scope nothing 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                index nothing 0 0
                                  name t nothi
typecheck tree: 
fn(){} fn(l: list of string, sep: string): string 0 0
  name squash fn(l: list of string, sep: string): string 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        name l nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name s nothing 0 0
        hd nothing 0 0
          name l nothing 0 0
      seq nothing 0 0
        seq nothing 0 0
          = nothing 0 0
            name l nothing 0 0
            tl nothing 0 0
              name l nothing 0 0
          for nothing 0 0
            != nothing 0 0
              name l nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              += nothing 0 0
                name s nothing 0 0
                + nothing 0 0
                  name sep nothing 0 0
                  hd nothing 0 0
                    name l nothing 0 0
              = nothing 0 0
                name l nothing 0 0
                tl nothing 0 0
                  name l nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            name s nothing 0 0
typecheck tree: 
fn(){} fn(s: string) 0 0
  name debug fn(s: string) 0 0
  seq nothing 0 0
    if nothing 0 0
      name DEBUG nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name sys nothing 0 0
            name fprint nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              name stderr nothing 0 0
            seq nothing 0 0
              const %s
 string 0 0
              seq nothing 0 0
                + nothing 0 0
                  + nothing 0 0
                    cast string 0 0
                      call nothing 0 0
                        -> nothing 0 0
                          name sys nothing 0 0
                          name pctl nothing 0 0
                        seq nothing 0 0
                          const (0) int 0 0
                          seq nothing 0 0
                            name nil polymorphic type 0 0
                    const :  string 0 0
                  name s nothing 0 0
typecheck tree: 
fn(){} fn(c: ref Context, nil: Sh): string 0 0
  name initbuiltin fn(c: ref Context, sh: Sh): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name names nothing 0 0
      array nothing 0 0
        nothing nothing 0 0
        seq nothing 0 0
          elem nothing 0 0
            const load string 0 0
          seq nothing 0 0
            elem nothing 0 0
              const unload string 0 0
            seq nothing 0 0
              elem nothing 0 0
                const loaded string 0 0
              seq nothing 0 0
                elem nothing 0 0
                  const builtin string 0 0
                seq nothing 0 0
                  elem nothing 0 0
                    const syncenv string 0 0
                  seq nothing 0 0
                    elem nothing 0 0
                      const whatis string 0 0
                    seq nothing 0 0
                      elem nothing 0 0
                        const run string 0 0
                      seq nothing 0 0
                        elem nothing 0 0
                          const exit string 0 0
                        seq nothing 0 0
                          elem nothing 0 0
                            const @ string 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name i nothing 0 0
          const (0) int 0 0
        for nothing 0 0
          < nothing 0 0
            name i nothing 0 0
            len nothing 0 0
              name names nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              . nothing 0 0
                name c nothing 0 0
                name addbuiltin nothing 0 0
              seq nothing 0 0
                index nothing 0 0
                  name names nothing 0 0
                  name i nothing 0 0
                seq nothing 0 0
                  name myselfbuiltin nothing 0 0
            ++ nothing 0 0
              name i nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name c nothing 0 0
            name addsbuiltin nothing 0 0
          seq nothing 0 0
            const loaded string 0 0
            seq nothing 0 0
              name myselfbuiltin nothing 0 0
        seq nothing 0 0
          call nothing 0 0
            . nothing 0 0
              name c nothing 0 0
              name addsbuiltin nothing 0 0
            seq nothing 0 0
              const quote string 0 0
              seq nothing 0 0
                name myselfbuiltin nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              . nothing 0 0
                name c nothing 0 0
                name addsbuiltin nothing 0 0
              seq nothing 0 0
                const bquote string 0 0
                seq nothing 0 0
                  name myselfbuiltin nothing 0 0
            seq nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  name c nothing 0 0
                  name addsbuiltin nothing 0 0
                seq nothing 0 0
                  const unquote string 0 0
                  seq nothing 0 0
                    name myselfbuiltin nothing 0 0
              seq nothing 0 0
                call nothing 0 0
                  . nothing 0 0
                    name c nothing 0 0
                    name addsbuiltin nothing 0 0
                  seq nothing 0 0
                    const builtin string 0 0
                    seq nothing 0 0
                      name myselfbuiltin nothing 0 0
                seq nothing 0 0
                  return nothing 0 0
                    name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(nil: ref Context, nil: Sh, nil: string, nil: int): string 0 0
  name whatis fn(nil: ref Context, nil: Sh, nil: string, nil: int): string 0 0
  seq nothing 0 0
    return nothing 0 0
      name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, nil: Sh, argv: list of ref Listnode): list of ref Listnode 0 0
  name runsbuiltin fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    case nothing 0 0
      . nothing 0 0
        hd nothing 0 0
          name argv nothing 0 0
        name word nothing 0 0
      seq nothing 0 0
        label nothing 0 0
          seq nothing 0 0
            const loaded string 0 0
          scope nothing 0 0
            return nothing 0 0
              call nothing 0 0
                name sbuiltin_loaded nothing 0 0
                seq nothing 0 0
                  name ctxt nothing 0 0
                  seq nothing 0 0
                    name argv nothing 0 0
        seq nothing 0 0
          label nothing 0 0
            seq nothing 0 0
              const bquote string 0 0
            scope nothing 0 0
              return nothing 0 0
                call nothing 0 0
                  name sbuiltin_quote nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      name argv nothing 0 0
                      seq nothing 0 0
                        const (0) int 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                const quote string 0 0
              scope nothing 0 0
                return nothing 0 0
                  call nothing 0 0
                    name sbuiltin_quote nothing 0 0
                    seq nothing 0 0
                      name ctxt nothing 0 0
                      seq nothing 0 0
                        name argv nothing 0 0
                        seq nothing 0 0
                          const (1) int 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  const unquote string 0 0
                scope nothing 0 0
                  return nothing 0 0
                    call nothing 0 0
                      name sbuiltin_unquote nothing 0 0
                      seq nothing 0 0
                        name ctxt nothing 0 0
                        seq nothing 0 0
                          name argv nothing 0 0
              seq nothing 0 0
                label nothing 0 0
                  seq nothing 0 0
                    const builtin string 0 0
                  scope nothing 0 0
                    return nothing 0 0
                      call nothing 0 0
                        name sbuiltin_builtin nothing 0 0
                        seq nothing 0 0
                          name ctxt nothing 0 0
                          seq nothing 0 0
                            name argv nothing 0 0
    seq nothing 0 0
      return nothing 0 0
        name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, nil: Sh, args: list of ref Listnode, lseq: int): string 0 0
  name runbuiltin fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name status nothing 0 0
      const  string 0 0
    seq nothing 0 0
      := nothing 0 0
        name name nothing 0 0
        . nothing 0 0
          hd nothing 0 0
            name args nothing 0 0
          name word nothing 0 0
      seq nothing 0 0
        case nothing 0 0
          name name nothing 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                const load string 0 0
              scope nothing 0 0
                = nothing 0 0
                  name status nothing 0 0
                  call nothing 0 0
                    name builtin_load nothing 0 0
                    seq nothing 0 0
                      name ctxt nothing 0 0
                      seq nothing 0 0
                        name args nothing 0 0
                        seq nothing 0 0
                          name lseq nothing 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  const loaded string 0 0
                scope nothing 0 0
                  = nothing 0 0
                    name status nothing 0 0
                    call nothing 0 0
                      name builtin_loaded nothing 0 0
                      seq nothing 0 0
                        name ctxt nothing 0 0
                        seq nothing 0 0
                          name args nothing 0 0
                          seq nothing 0 0
                            name lseq nothing 0 0
              seq nothing 0 0
                label nothing 0 0
                  seq nothing 0 0
                    const unload string 0 0
                  scope nothing 0 0
                    = nothing 0 0
                      name status nothing 0 0
                      call nothing 0 0
                        name builtin_unload nothing 0 0
                        seq nothing 0 0
                          name ctxt nothing 0 0
                          seq nothing 0 0
                            name args nothing 0 0
                            seq nothing 0 0
                              name lseq nothing 0 0
                seq nothing 0 0
                  label nothing 0 0
                    seq nothing 0 0
                      const builtin string 0 0
                    scope nothing 0 0
                      = nothing 0 0
                        name status nothing 0 0
                        call nothing 0 0
                          name builtin_builtin nothing 0 0
                          seq nothing 0 0
                            name ctxt nothing 0 0
                            seq nothing 0 0
                              name args nothing 0 0
                              seq nothing 0 0
                                name lseq nothing 0 0
                  seq nothing 0 0
                    label nothing 0 0
                      seq nothing 0 0
                        const whatis string 0 0
                      scope nothing 0 0
                        = nothing 0 0
                          name status nothing 0 0
                          call nothing 0 0
                            name builtin_whatis nothing 0 0
                            seq nothing 0 0
                              name ctxt nothing 0 0
                              seq nothing 0 0
                                name args nothing 0 0
                                seq nothing 0 0
                                  name lseq nothing 0 0
                    seq nothing 0 0
                      label nothing 0 0
                        seq nothing 0 0
                          const run string 0 0
                        scope nothing 0 0
                          = nothing 0 0
                            name status nothing 0 0
                            call nothing 0 0
                              name builtin_run nothing 0 0
            
typecheck tree: 
fn(){} fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 0 0
  name sbuiltin_loaded fn(ctxt: ref Context, nil: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    vardecl list of ref Listnode 0 0
      seq nothing 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name bl nothing 0 0
          . nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name env nothing 0 0
            name bmods nothing 0 0
        for nothing 0 0
          != nothing 0 0
            name bl nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  tuple nothing 0 0
                    seq nothing 0 0
                      name name nothing 0 0
                      seq nothing 0 0
                        name nil polymorphic type 0 0
                  hd nothing 0 0
                    name bl nothing 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name v nothing 0 0
                    :: nothing 0 0
                      ref nothing 0 0
                        call nothing 0 0
                          name Listnode nothing 0 0
                          seq nothing 0 0
                            name nil polymorphic type 0 0
                            seq nothing 0 0
                              name name nothing 0 0
                      name v nothing 0 0
            = nothing 0 0
              name bl nothing 0 0
              tl nothing 0 0
                name bl nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name v nothing 0 0
typecheck tree: 
fn(){} fn(nil: ref Context, argv: list of ref Listnode, quoteblocks: int): list of ref Listnode 0 0
  name sbuiltin_quote fn(nil: ref Context, argv: list of ref Listnode, quoteblocks: int): list of ref Listnode 0 0
  seq nothing 0 0
    return nothing 0 0
      :: nothing 0 0
        ref nothing 0 0
          call nothing 0 0
            name Listnode nothing 0 0
            seq nothing 0 0
              name nil polymorphic type 0 0
              seq nothing 0 0
                call nothing 0 0
                  name quoted nothing 0 0
                  seq nothing 0 0
                    tl nothing 0 0
                      name argv nothing 0 0
                    seq nothing 0 0
                      name quoteblocks nothing 0 0
        name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 0 0
  name sbuiltin_builtin fn(ctxt: ref Context, args: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        == nothing 0 0
          name args nothing 0 0
          name nil polymorphic type 0 0
        == nothing 0 0
          tl nothing 0 0
            name args nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        call nothing 0 0
          name builtinusage nothing 0 0
          seq nothing 0 0
            name ctxt nothing 0 0
            seq nothing 0 0
              const builtin command [args ...] string 0 0
    seq nothing 0 0
      := nothing 0 0
        name name nothing 0 0
        . nothing 0 0
          hd nothing 0 0
            tl nothing 0 0
              name args nothing 0 0
          name word nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          tuple nothing 0 0
            seq nothing 0 0
              name nil polymorphic type 0 0
              seq nothing 0 0
                name mods nothing 0 0
          call nothing 0 0
            name findbuiltin nothing 0 0
            seq nothing 0 0
              . nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name env nothing 0 0
                name sbuiltins nothing 0 0
              seq nothing 0 0
                name name nothing 0 0
        seq nothing 0 0
          for nothing 0 0
            != nothing 0 0
              name mods nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              if nothing 0 0
                == nothing 0 0
                  hd nothing 0 0
                    name mods nothing 0 0
                  name myselfbuiltin nothing 0 0
                seq nothing 0 0
                  return nothing 0 0
                    call nothing 0 0
                      -> nothing 0 0
                        hd nothing 0 0
                          name mods nothing 0 0
                        name runsbuiltin nothing 0 0
                      seq nothing 0 0
                        name ctxt nothing 0 0
                        seq nothing 0 0
                          name myself nothing 0 0
                          seq nothing 0 0
                            tl nothing 0 0
                              name args nothing 0 0
              = nothing 0 0
                name mods nothing 0 0
                tl nothing 0 0
                  name mods nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              . nothing 0 0
                name ctxt nothing 0 0
                name fail nothing 0 0
              seq nothing 0 0
                const builtin not found string 0 0
                seq nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name sys nothing 0 0
                      name sprint nothing 0 0
                    seq nothing 0 0
                      const sh: builtin %s not found string 0 0
                      seq nothing 0 0
                        name name nothing 0 0
            seq nothing 0 0
              return nothing 0 0
                name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 0 0
  name sbuiltin_unquote fn(ctxt: ref Context, argv: list of ref Listnode): list of ref Listnode 0 0
  seq nothing 0 0
    = nothing 0 0
      name argv nothing 0 0
      tl nothing 0 0
        name argv nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        || nothing 0 0
          == nothing 0 0
            name argv nothing 0 0
            name nil polymorphic type 0 0
          != nothing 0 0
            tl nothing 0 0
              name argv nothing 0 0
            name nil polymorphic type 0 0
        seq nothing 0 0
          call nothing 0 0
            name builtinusage nothing 0 0
            seq nothing 0 0
              name ctxt nothing 0 0
              seq nothing 0 0
                const unquote arg string 0 0
      seq nothing 0 0
        := nothing 0 0
          name arg nothing 0 0
          . nothing 0 0
            hd nothing 0 0
              name argv nothing 0 0
            name word nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            && nothing 0 0
              == nothing 0 0
                name arg nothing 0 0
                name nil polymorphic type 0 0
              != nothing 0 0
                . nothing 0 0
                  hd nothing 0 0
                    name argv nothing 0 0
                  name cmd nothing 0 0
                name nil polymorphic type 0 0
            seq nothing 0 0
              = nothing 0 0
                name arg nothing 0 0
                call nothing 0 0
                  name cmd2string nothing 0 0
                  seq nothing 0 0
                    . nothing 0 0
                      hd nothing 0 0
                        name argv nothing 0 0
                      name cmd nothing 0 0
          seq nothing 0 0
            return nothing 0 0
              call nothing 0 0
                name stringlist2list nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name str nothing 0 0
                      name unquoted nothing 0 0
                    seq nothing 0 0
                      name arg nothing 0 0
typecheck tree: 
fn(){} fn(): Shellbuiltin 0 0
  name getself fn(): Shellbuiltin 0 0
  seq nothing 0 0
    return nothing 0 0
      name myselfbuiltin nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, s: string) 0 0
  name builtinusage fn(ctxt: ref Context, s: string) 0 0
  seq nothing 0 0
    call nothing 0 0
      . nothing 0 0
        name ctxt nothing 0 0
        name fail nothing 0 0
      seq nothing 0 0
        const usage string 0 0
        seq nothing 0 0
          + nothing 0 0
            const sh: usage:  string 0 0
            name s nothing 0 0
typecheck tree: 
fn(){} fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 0 0
  name builtin_exit fn(nil: ref Context, nil: list of ref Listnode, nil: int): string 0 0
  seq nothing 0 0
    exit nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  name builtin_subsh fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        tl nothing 0 0
          name args nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name startchan nothing 0 0
        chan chan of (int, ref Expropagate) 0 0
      seq nothing 0 0
        spawn nothing 0 0
          call nothing 0 0
            name runasync nothing 0 0
            seq nothing 0 0
              name ctxt nothing 0 0
              seq nothing 0 0
                const (0) int 0 0
                seq nothing 0 0
                  tl nothing 0 0
                    name args nothing 0 0
                  seq nothing 0 0
                    ref nothing 0 0
                      name Redirlist nothing 0 0
                    seq nothing 0 0
                      name startchan nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            tuple nothing 0 0
              seq nothing 0 0
                name exepid nothing 0 0
                seq nothing 0 0
                  name exprop nothing 0 0
            <- nothing 0 0
              name startchan nothing 0 0
          seq nothing 0 0
            := nothing 0 0
              name status nothing 0 0
              call nothing 0 0
                name waitfor nothing 0 0
                seq nothing 0 0
                  name ctxt nothing 0 0
                  seq nothing 0 0
                    :: nothing 0 0
                      name exepid nothing 0 0
                      name nil polymorphic type 0 0
            seq nothing 0 0
              if nothing 0 0
                != nothing 0 0
                  . nothing 0 0
                    name exprop nothing 0 0
                    name name nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  raise nothing 0 0
                    . nothing 0 0
                      name exprop nothing 0 0
                      name name nothing 0 0
              seq nothing 0 0
                return nothing 0 0
                  name status nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 0 0
  name builtin_loaded fn(ctxt: ref Context, nil: list of ref Listnode, nil: int): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name b nothing 0 0
      . nothing 0 0
        . nothing 0 0
          name ctxt nothing 0 0
          name env nothing 0 0
        name builtins nothing 0 0
    seq nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name i nothing 0 0
          const (0) int 0 0
        for nothing 0 0
          < nothing 0 0
            name i nothing 0 0
            . nothing 0 0
              name b nothing 0 0
              name n nothing 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  tuple nothing 0 0
                    seq nothing 0 0
                      name name nothing 0 0
                      seq nothing 0 0
                        name bmods nothing 0 0
                  index nothing 0 0
                    . nothing 0 0
                      name b nothing 0 0
                      name ba nothing 0 0
                    name i nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name sys nothing 0 0
                      name print nothing 0 0
                    seq nothing 0 0
                      const %s	%s
 string 0 0
                      seq nothing 0 0
                        name name nothing 0 0
                        seq nothing 0 0
                          call nothing 0 0
                            name modname nothing 0 0
                            seq nothing 0 0
                              name ctxt nothing 0 0
                              seq nothing 0 0
                                hd nothing 0 0
                                  name bmods nothing 0 0
            ++ nothing 0 0
              name i nothing 0 0
      seq nothing 0 0
        = nothing 0 0
          name b nothing 0 0
          . nothing 0 0
            . nothing 0 0
              name ctxt nothing 0 0
              name env nothing 0 0
            name sbuiltins nothing 0 0
        seq nothing 0 0
          seq nothing 0 0
            = nothing 0 0
              name i nothing 0 0
              const (0) int 0 0
            for nothing 0 0
              < nothing 0 0
                name i nothing 0 0
                . nothing 0 0
                  name b nothing 0 0
                  name n nothing 0 0
              seq nothing 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    := nothing 0 0
                      tuple nothing 0 0
                        seq nothing 0 0
                          name name nothing 0 0
                          seq nothing 0 0
                            name bmods nothing 0 0
                      index nothing 0 0
                        . nothing 0 0
                          name b nothing 0 0
                          name ba nothing 0 0
                        name i nothing 0 0
                    seq nothing 0 0
                      call nothing 0 0
                        -> nothing 0 0
                          name sys nothing 0 0
                          name print nothing 0 0
                        seq nothing 0 0
                          const ${%s}	%s
 string 0 0
                          seq nothing 0 0
                            name name nothing 0 0
                            seq nothing 0 0
                              call nothing 0 0
                                name modname nothing 0 0
                                seq nothing 0 0
                                  name ctxt nothing 0 0
                                  seq nothing 0 0
                                    hd nothing 0 0
                                      name bmods nothing 0 0
                ++ nothing 0 0
                  name i nothing 0 0
          seq nothing 0 0
            return nothing 0 0
              name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  name builtin_load fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        == nothing 0 0
          tl nothing 0 0
            name args nothing 0 0
          name nil polymorphic type 0 0
        == nothing 0 0
          . nothing 0 0
            hd nothing 0 0
              tl nothing 0 0
                name args nothing 0 0
            name word nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        call nothing 0 0
          name builtinusage nothing 0 0
          seq nothing 0 0
            name ctxt nothing 0 0
            seq nothing 0 0
              const load path... string 0 0
    seq nothing 0 0
      = nothing 0 0
        name args nothing 0 0
        tl nothing 0 0
          name args nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          == nothing 0 0
            name args nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            call nothing 0 0
              name builtinusage nothing 0 0
              seq nothing 0 0
                name ctxt nothing 0 0
                seq nothing 0 0
                  const load path... string 0 0
        seq nothing 0 0
          for nothing 0 0
            != nothing 0 0
              name args nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  := nothing 0 0
                    name s nothing 0 0
                    call nothing 0 0
                      name loadmodule nothing 0 0
                      seq nothing 0 0
                        name ctxt nothing 0 0
                        seq nothing 0 0
                          . nothing 0 0
                            hd nothing 0 0
                              name args nothing 0 0
                            name word nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      != nothing 0 0
                        name s nothing 0 0
                        name nil polymorphic type 0 0
                      seq nothing 0 0
                        raise nothing 0 0
                          + nothing 0 0
                            const fail: string 0 0
                            name s nothing 0 0
              = nothing 0 0
                name args nothing 0 0
                tl nothing 0 0
                  name args nothing 0 0
          seq nothing 0 0
            return nothing 0 0
              name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  name builtin_unload fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        tl nothing 0 0
          name args nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        call nothing 0 0
          name builtinusage nothing 0 0
          seq nothing 0 0
            name ctxt nothing 0 0
            seq nothing 0 0
              const unload path... string 0 0
    seq nothing 0 0
      := nothing 0 0
        name status nothing 0 0
        const  string 0 0
      seq nothing 0 0
        seq nothing 0 0
          = nothing 0 0
            name args nothing 0 0
            tl nothing 0 0
              name args nothing 0 0
          for nothing 0 0
            != nothing 0 0
              name args nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              if nothing 0 0
                != nothing 0 0
                  := nothing 0 0
                    name s nothing 0 0
                    call nothing 0 0
                      name unloadmodule nothing 0 0
                      seq nothing 0 0
                        name ctxt nothing 0 0
                        seq nothing 0 0
                          . nothing 0 0
                            hd nothing 0 0
                              name args nothing 0 0
                            name word nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name status nothing 0 0
                    name s nothing 0 0
              = nothing 0 0
                name args nothing 0 0
                tl nothing 0 0
                  name args nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            name status nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  name builtin_run fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      || nothing 0 0
        == nothing 0 0
          tl nothing 0 0
            name args nothing 0 0
          name nil polymorphic type 0 0
        == nothing 0 0
          . nothing 0 0
            hd nothing 0 0
              tl nothing 0 0
                name args nothing 0 0
            name word nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        call nothing 0 0
          name builtinusage nothing 0 0
          seq nothing 0 0
            name ctxt nothing 0 0
            seq nothing 0 0
              const run path string 0 0
    seq nothing 0 0
      call nothing 0 0
        . nothing 0 0
          name ctxt nothing 0 0
          name push nothing 0 0
      seq nothing 0 0
        exstat nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  name ctxt nothing 0 0
                  name setoptions nothing 0 0
                seq nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name INTERACTIVE nothing 0 0
                  seq nothing 0 0
                    const (0) int 0 0
              seq nothing 0 0
                call nothing 0 0
                  name runscript nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      . nothing 0 0
                        hd nothing 0 0
                          tl nothing 0 0
                            name args nothing 0 0
                        name word nothing 0 0
                      seq nothing 0 0
                        tl nothing 0 0
                          tl nothing 0 0
                            name args nothing 0 0
                        seq nothing 0 0
                          const (1) int 0 0
                seq nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name pop nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      name nil polymorphic type 0 0
          except nothing 0 0
            name e nothing 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  const fail:* string 0 0
                scope nothing 0 0
                  seq nothing 0 0
                    call nothing 0 0
                      . nothing 0 0
                        name ctxt nothing 0 0
                        name pop nothing 0 0
                    return nothing 0 0
                      call nothing 0 0
                        name failurestatus nothing 0 0
                        seq nothing 0 0
                          name e nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  name builtin_whatis fn(ctxt: ref Context, args: list of ref Listnode, nil: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      < nothing 0 0
        len nothing 0 0
          name args nothing 0 0
        const (2) int 0 0
      seq nothing 0 0
        call nothing 0 0
          name builtinusage nothing 0 0
          seq nothing 0 0
            name ctxt nothing 0 0
            seq nothing 0 0
              const whatis name ... string 0 0
    seq nothing 0 0
      := nothing 0 0
        name err nothing 0 0
        const  string 0 0
      seq nothing 0 0
        seq nothing 0 0
          = nothing 0 0
            name args nothing 0 0
            tl nothing 0 0
              name args nothing 0 0
          for nothing 0 0
            != nothing 0 0
              name args nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              if nothing 0 0
                != nothing 0 0
                  := nothing 0 0
                    name e nothing 0 0
                    call nothing 0 0
                      name whatisit nothing 0 0
                      seq nothing 0 0
                        name ctxt nothing 0 0
                        seq nothing 0 0
                          hd nothing 0 0
                            name args nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  = nothing 0 0
                    name err nothing 0 0
                    name e nothing 0 0
              = nothing 0 0
                name args nothing 0 0
                tl nothing 0 0
                  name args nothing 0 0
        seq nothing 0 0
          return nothing 0 0
            name err nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, el: ref Listnode): string 0 0
  name whatisit fn(ctxt: ref Context, el: ref Listnode): string 0 0
  seq nothing 0 0
    if nothing 0 0
      != nothing 0 0
        . nothing 0 0
          name el nothing 0 0
          name cmd nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            call nothing 0 0
              -> nothing 0 0
                name sys nothing 0 0
                name print nothing 0 0
              seq nothing 0 0
                const %s
 string 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name cmd2string nothing 0 0
                    seq nothing 0 0
                      . nothing 0 0
                        name el nothing 0 0
                        name cmd nothing 0 0
            seq nothing 0 0
              return nothing 0 0
                name nil polymorphic type 0 0
    seq nothing 0 0
      := nothing 0 0
        name found nothing 0 0
        const (0) int 0 0
      seq nothing 0 0
        := nothing 0 0
          name name nothing 0 0
          . nothing 0 0
            name el nothing 0 0
            name word nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            && nothing 0 0
              != nothing 0 0
                name name nothing 0 0
                name nil polymorphic type 0 0
              == nothing 0 0
                index nothing 0 0
                  name name nothing 0 0
                  const (0) int 0 0
                const (123) int 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name sys nothing 0 0
                      name print nothing 0 0
                    seq nothing 0 0
                      const %s
 string 0 0
                      seq nothing 0 0
                        name name nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      name nil polymorphic type 0 0
                    seq nothing 0 0
                      nothing nothing 0 0
          seq nothing 0 0
            if nothing 0 0
              == nothing 0 0
                name name nothing 0 0
                name nil polymorphic type 0 0
              seq nothing 0 0
                return nothing 0 0
                  name nil polymorphic type 0 0
            seq nothing 0 0
              vardecl string 0 0
                seq nothing 0 0
              seq nothing 0 0
                := nothing 0 0
                  name val nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name get nothing 0 0
                    seq nothing 0 0
                      name name nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    != nothing 0 0
                      name val nothing 0 0
                      name nil polymorphic type 0 0
                    seq nothing 0 0
                      scope nothing 0 0
                        seq nothing 0 0
                          ++ nothing 0 0
                            name found nothing 0 0
                          seq nothing 0 0
                            += nothing 0 0
                              name w nothing 0 0
                              call nothing 0 0
                                -> nothing 0 0
                                  name sys nothing 0 0
                                  name sprint nothing 0 0
                                seq nothing 0 0
                                  const %s=%s
 string 0 0
                                  seq nothing 0 0
                                    call nothing 0 0
                                      name quote nothing 0 0
                                      seq nothing 0 0
                                        name name nothing 0 0
                                        seq not
typecheck tree: 
fn(){} fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
  name builtin_builtin fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      < nothing 0 0
        len nothing 0 0
          name args nothing 0 0
        const (2) int 0 0
      seq nothing 0 0
        call nothing 0 0
          name builtinusage nothing 0 0
          seq nothing 0 0
            name ctxt nothing 0 0
            seq nothing 0 0
              const builtin command [args ...] string 0 0
    seq nothing 0 0
      := nothing 0 0
        name name nothing 0 0
        . nothing 0 0
          hd nothing 0 0
            tl nothing 0 0
              name args nothing 0 0
          name word nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          || nothing 0 0
            == nothing 0 0
              name name nothing 0 0
              name nil polymorphic type 0 0
            == nothing 0 0
              index nothing 0 0
                name name nothing 0 0
                const (0) int 0 0
              const (123) int 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                call nothing 0 0
                  name diagnostic nothing 0 0
                  seq nothing 0 0
                    name ctxt nothing 0 0
                    seq nothing 0 0
                      + nothing 0 0
                        name name nothing 0 0
                        const  not found string 0 0
                seq nothing 0 0
                  return nothing 0 0
                    const not found string 0 0
        seq nothing 0 0
          := nothing 0 0
            tuple nothing 0 0
              seq nothing 0 0
                name nil polymorphic type 0 0
                seq nothing 0 0
                  name mods nothing 0 0
            call nothing 0 0
              name findbuiltin nothing 0 0
              seq nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name env nothing 0 0
                  name builtins nothing 0 0
                seq nothing 0 0
                  name name nothing 0 0
          seq nothing 0 0
            for nothing 0 0
              != nothing 0 0
                name mods nothing 0 0
                name nil polymorphic type 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    hd nothing 0 0
                      name mods nothing 0 0
                    name myselfbuiltin nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      call nothing 0 0
                        -> nothing 0 0
                          hd nothing 0 0
                            name mods nothing 0 0
                          name runbuiltin nothing 0 0
                        seq nothing 0 0
                          name ctxt nothing 0 0
                          seq nothing 0 0
                            name myself nothing 0 0
                            seq nothing 0 0
                              tl nothing 0 0
                                name args nothing 0 0
                              seq nothing 0 0
                                name last nothing 0 0
                = nothing 0 0
                  name mods nothing 0 0
                  tl nothing 0 0
                    name mods nothing 0 0
            seq nothing 0 0
              if nothing 0 0
                & nothing 0 0
                  call nothing 0 0
                    . nothing 0 0
                      name ctxt nothing 0 0
                      name options nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name EXECPRINT nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    -> nothing 0 0
                      name sys nothing 0 0
                      name fprint nothing 0 0
                    seq nothing 0 0
                      
typecheck tree: 
fn(){} fn(ctxt: ref Context, mod: Shellbuiltin): string 0 0
  name modname fn(ctxt: ref Context, mod: Shellbuiltin): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name ml nothing 0 0
      . nothing 0 0
        . nothing 0 0
          name ctxt nothing 0 0
          name env nothing 0 0
        name bmods nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name ml nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                tuple nothing 0 0
                  seq nothing 0 0
                    name bname nothing 0 0
                    seq nothing 0 0
                      name bmod nothing 0 0
                hd nothing 0 0
                  name ml nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    name bmod nothing 0 0
                    name mod nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      name bname nothing 0 0
          = nothing 0 0
            name ml nothing 0 0
            tl nothing 0 0
              name ml nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          const builtin string 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, name: string): string 0 0
  name loadmodule fn(ctxt: ref Context, name: string): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name bl nothing 0 0
      . nothing 0 0
        . nothing 0 0
          name ctxt nothing 0 0
          name env nothing 0 0
        name bmods nothing 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name bl nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                tuple nothing 0 0
                  seq nothing 0 0
                    name bname nothing 0 0
                    seq nothing 0 0
                      name nil polymorphic type 0 0
                hd nothing 0 0
                  name bl nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    name bname nothing 0 0
                    name name nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      name nil polymorphic type 0 0
          = nothing 0 0
            name bl nothing 0 0
            tl nothing 0 0
              name bl nothing 0 0
      seq nothing 0 0
        := nothing 0 0
          name path nothing 0 0
          name name nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            || nothing 0 0
              < nothing 0 0
                len nothing 0 0
                  name path nothing 0 0
                const (4) int 0 0
              != nothing 0 0
                slice nothing 0 0
                  name path nothing 0 0
                  seq nothing 0 0
                    - nothing 0 0
                      len nothing 0 0
                        name path nothing 0 0
                      const (4) int 0 0
                    nothing nothing 0 0
                const .dis string 0 0
            seq nothing 0 0
              += nothing 0 0
                name path nothing 0 0
                const .dis string 0 0
          seq nothing 0 0
            if nothing 0 0
              && nothing 0 0
                != nothing 0 0
                  index nothing 0 0
                    name path nothing 0 0
                    const (0) int 0 0
                  const (47) int 0 0
                != nothing 0 0
                  slice nothing 0 0
                    name path nothing 0 0
                    seq nothing 0 0
                      const (0) int 0 0
                      const (2) int 0 0
                  const ./ string 0 0
              seq nothing 0 0
                = nothing 0 0
                  name path nothing 0 0
                  + nothing 0 0
                    + nothing 0 0
                      name BUILTINPATH nothing 0 0
                      const / string 0 0
                    name path nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name mod nothing 0 0
                load Shellbuiltin 0 0
                  name path nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  == nothing 0 0
                    name mod nothing 0 0
                    name nil polymorphic type 0 0
                  seq nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        call nothing 0 0
                          name diagnostic nothing 0 0
                          seq nothing 0 0
                            name ctxt nothing 0 0
                            seq nothing 0 0
                              call nothing 0 0
                                -> nothing 0 0
                                  name sys nothing 0 0
                                  name sprint nothing 0 0
                                seq nothing 0 0
                                  const load: cannot load %s: %r string 0 0
                                  seq nothing 0 0
                                    name path nothing 0 0
                        seq nothing 0 0
          
typecheck tree: 
fn(){} fn(ctxt: ref Context, name: string): string 0 0
  name unloadmodule fn(ctxt: ref Context, name: string): string 0 0
  seq nothing 0 0
    vardecl list of (string, Shellbuiltin) 0 0
      seq nothing 0 0
    seq nothing 0 0
      vardecl Shellbuiltin 0 0
        seq nothing 0 0
      seq nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name cl nothing 0 0
            . nothing 0 0
              . nothing 0 0
                name ctxt nothing 0 0
                name env nothing 0 0
              name bmods nothing 0 0
          for nothing 0 0
            != nothing 0 0
              name cl nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  := nothing 0 0
                    tuple nothing 0 0
                      seq nothing 0 0
                        name bname nothing 0 0
                        seq nothing 0 0
                          name bmod nothing 0 0
                    hd nothing 0 0
                      name cl nothing 0 0
                  seq nothing 0 0
                    if nothing 0 0
                      == nothing 0 0
                        name bname nothing 0 0
                        name name nothing 0 0
                      seq nothing 0 0
                        = nothing 0 0
                          name mod nothing 0 0
                          name bmod nothing 0 0
                        = nothing 0 0
                          name bl nothing 0 0
                          :: nothing 0 0
                            hd nothing 0 0
                              name cl nothing 0 0
                            name bl nothing 0 0
              = nothing 0 0
                name cl nothing 0 0
                tl nothing 0 0
                  name cl nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            == nothing 0 0
              name mod nothing 0 0
              name nil polymorphic type 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  call nothing 0 0
                    name diagnostic nothing 0 0
                    seq nothing 0 0
                      name ctxt nothing 0 0
                      seq nothing 0 0
                        call nothing 0 0
                          -> nothing 0 0
                            name sys nothing 0 0
                            name sprint nothing 0 0
                          seq nothing 0 0
                            const module %s not found string 0 0
                            seq nothing 0 0
                              name name nothing 0 0
                  seq nothing 0 0
                    return nothing 0 0
                      const not found string 0 0
          seq nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                . nothing 0 0
                  . nothing 0 0
                    name ctxt nothing 0 0
                    name env nothing 0 0
                  name bmods nothing 0 0
                name nil polymorphic type 0 0
              for nothing 0 0
                != nothing 0 0
                  name bl nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  = nothing 0 0
                    . nothing 0 0
                      . nothing 0 0
                        name ctxt nothing 0 0
                        name env nothing 0 0
                      name bmods nothing 0 0
                    :: nothing 0 0
                      hd nothing 0 0
                        name bl nothing 0 0
                      . nothing 0 0
                        . nothing 0 0
                          name ctxt nothing 0 0
                          name env nothing 0 0
                        name bmods nothing 0 0
                  = nothing 0 0
                    name bl nothing 0 0
                    tl nothing 0 0
                      name bl nothing 0 0
            seq nothing 0 0
              call nothing 0 0

typecheck tree: 
fn(){} fn(s: (int, Sys->Dir), mode: int): int 0 0
  name executable fn(s: (int, Sys->Dir), mode: int): int 0 0
  seq nothing 0 0
    := nothing 0 0
      tuple nothing 0 0
        seq nothing 0 0
          name ok nothing 0 0
          seq nothing 0 0
            name info nothing 0 0
      name s nothing 0 0
    seq nothing 0 0
      return nothing 0 0
        && nothing 0 0
          && nothing 0 0
            != nothing 0 0
              name ok nothing 0 0
              - nothing 0 0
                const (1) int 0 0
            == nothing 0 0
              & nothing 0 0
                . nothing 0 0
                  name info nothing 0 0
                  name mode nothing 0 0
                -> nothing 0 0
                  name Sys nothing 0 0
                  name DMDIR nothing 0 0
              const (0) int 0 0
          != nothing 0 0
            & nothing 0 0
              . nothing 0 0
                name info nothing 0 0
                name mode nothing 0 0
              name mode nothing 0 0
            const (0) int 0 0
typecheck tree: 
fn(){} fn(val: list of ref Listnode, quoteblocks: int): string 0 0
  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 0 0
  seq nothing 0 0
    := nothing 0 0
      name s nothing 0 0
      const  string 0 0
    seq nothing 0 0
      for nothing 0 0
        != nothing 0 0
          name val nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              := nothing 0 0
                name el nothing 0 0
                hd nothing 0 0
                  name val nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  || nothing 0 0
                    == nothing 0 0
                      . nothing 0 0
                        name el nothing 0 0
                        name cmd nothing 0 0
                      name nil polymorphic type 0 0
                    && nothing 0 0
                      name quoteblocks nothing 0 0
                      != nothing 0 0
                        . nothing 0 0
                          name el nothing 0 0
                          name word nothing 0 0
                        name nil polymorphic type 0 0
                  seq nothing 0 0
                    += nothing 0 0
                      name s nothing 0 0
                      call nothing 0 0
                        name quote nothing 0 0
                        seq nothing 0 0
                          . nothing 0 0
                            name el nothing 0 0
                            name word nothing 0 0
                          seq nothing 0 0
                            const (0) int 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        := nothing 0 0
                          name cmd nothing 0 0
                          call nothing 0 0
                            name cmd2string nothing 0 0
                            seq nothing 0 0
                              . nothing 0 0
                                name el nothing 0 0
                                name cmd nothing 0 0
                        seq nothing 0 0
                          if nothing 0 0
                            name quoteblocks nothing 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                name cmd nothing 0 0
                                call nothing 0 0
                                  name quote nothing 0 0
                                  seq nothing 0 0
                                    name cmd nothing 0 0
                                    seq nothing 0 0
                                      const (0) int 0 0
                          seq nothing 0 0
                            += nothing 0 0
                              name s nothing 0 0
                              name cmd nothing 0 0
                seq nothing 0 0
                  if nothing 0 0
                    != nothing 0 0
                      tl nothing 0 0
                        name val nothing 0 0
                      name nil polymorphic type 0 0
                    seq nothing 0 0
                      = nothing 0 0
                        index nothing 0 0
                          name s nothing 0 0
                          len nothing 0 0
                            name s nothing 0 0
                        const (32) int 0 0
          = nothing 0 0
            name val nothing 0 0
            tl nothing 0 0
              name val nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          name s nothing 0 0
typecheck tree: 
fn(){} fn(ctxt: ref Context, val: string): string 0 0
  name setstatus fn(ctxt: ref Context, val: string): string 0 0
  seq nothing 0 0
    call nothing 0 0
      . nothing 0 0
        name ctxt nothing 0 0
        name setlocal nothing 0 0
      seq nothing 0 0
        const status string 0 0
        seq nothing 0 0
          :: nothing 0 0
            ref nothing 0 0
              call nothing 0 0
                name Listnode nothing 0 0
                seq nothing 0 0
                  name nil polymorphic type 0 0
                  seq nothing 0 0
                    name val nothing 0 0
            name nil polymorphic type 0 0
    seq nothing 0 0
      return nothing 0 0
        name val nothing 0 0
typecheck tree: 
fn(){} fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 0 0
  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 0 0
  seq nothing 0 0
    = nothing 0 0
      . nothing 0 0
        name l nothing 0 0
        name prompt nothing 0 0
      name prompt nothing 0 0
    seq nothing 0 0
      = nothing 0 0
        . nothing 0 0
          name l nothing 0 0
          name err nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        = nothing 0 0
          . nothing 0 0
            . nothing 0 0
              name l nothing 0 0
              name lval nothing 0 0
            name node nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          call nothing 0 0
            name yyparse nothing 0 0
            seq nothing 0 0
              name l nothing 0 0
          seq nothing 0 0
            = nothing 0 0
              . nothing 0 0
                name l nothing 0 0
                name lastnl nothing 0 0
              const (0) int 0 0
            seq nothing 0 0
              if nothing 0 0
                != nothing 0 0
                  . nothing 0 0
                    name l nothing 0 0
                    name err nothing 0 0
                  name nil polymorphic type 0 0
                seq nothing 0 0
                  scope nothing 0 0
                    seq nothing 0 0
                      vardecl string 0 0
                        seq nothing 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          == nothing 0 0
                            . nothing 0 0
                              name l nothing 0 0
                              name err nothing 0 0
                            name nil polymorphic type 0 0
                          seq nothing 0 0
                            = nothing 0 0
                              . nothing 0 0
                                name l nothing 0 0
                                name err nothing 0 0
                              const unknown error string 0 0
                        seq nothing 0 0
                          if nothing 0 0
                            && nothing 0 0
                              > nothing 0 0
                                . nothing 0 0
                                  name l nothing 0 0
                                  name errline nothing 0 0
                                const (0) int 0 0
                              name showline nothing 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                name s nothing 0 0
                                call nothing 0 0
                                  -> nothing 0 0
                                    name sys nothing 0 0
                                    name sprint nothing 0 0
                                  seq nothing 0 0
                                    const %s:%d: %s string 0 0
                                    seq nothing 0 0
                                      . nothing 0 0
                                        name l nothing 0 0
                                        name path nothing 0 0
                                      seq nothing 0 0
                                        . nothing 0 0
                                          name l nothing 0 0
                                          name errline nothing 0 0
                                        seq nothing 0 0
                                          . nothing 0 0
                                            name l nothing 0 0
                                            name err nothing 0 0
                              = nothing 0 0
                                name s nothing 0 0
                                + nothing 0 0
                                  + nothing 0 0
                                    . nothing 0 0
                                      name l nothing 0 0
                                      name path nothing 0 0
                                    const : parse 
typecheck tree: 
fn(){} fn(s: string): ref YYLEX 0 0
  . fn(s: string): ref YYLEX 0 0
    name YYLEX YYLEX 0 0
    name initstring nothing 0 0
  seq nothing 0 0
    := nothing 0 0
      name ret nothing 0 0
      ref nothing 0 0
        name blanklex nothing 0 0
    seq nothing 0 0
      = nothing 0 0
        . nothing 0 0
          name ret nothing 0 0
          name s nothing 0 0
        name s nothing 0 0
      seq nothing 0 0
        = nothing 0 0
          . nothing 0 0
            name ret nothing 0 0
            name path nothing 0 0
          const internal string 0 0
        seq nothing 0 0
          = nothing 0 0
            . nothing 0 0
              name ret nothing 0 0
              name strpos nothing 0 0
            const (0) int 0 0
          seq nothing 0 0
            return nothing 0 0
              name ret nothing 0 0
typecheck tree: 
fn(){} fn(fd: ref Sys->FD, path: string): ref YYLEX 0 0
  . fn(fd: ref Sys->FD, path: string): ref YYLEX 0 0
    name YYLEX YYLEX 0 0
    name initfile nothing 0 0
  seq nothing 0 0
    := nothing 0 0
      name lex nothing 0 0
      ref nothing 0 0
        name blanklex nothing 0 0
    seq nothing 0 0
      = nothing 0 0
        . nothing 0 0
          name lex nothing 0 0
          name f nothing 0 0
        call nothing 0 0
          -> nothing 0 0
            name bufio nothing 0 0
            name fopen nothing 0 0
          seq nothing 0 0
            name fd nothing 0 0
            seq nothing 0 0
              -> nothing 0 0
                name bufio nothing 0 0
                name OREAD nothing 0 0
      seq nothing 0 0
        = nothing 0 0
          . nothing 0 0
            name lex nothing 0 0
            name path nothing 0 0
          name path nothing 0 0
        seq nothing 0 0
          = nothing 0 0
            . nothing 0 0
              name lex nothing 0 0
              name cbuf nothing 0 0
            array array of int 0 0
              const (2) int 0 0
          seq nothing 0 0
            = nothing 0 0
              . nothing 0 0
                name lex nothing 0 0
                name linenum nothing 0 0
              const (1) int 0 0
            seq nothing 0 0
              = nothing 0 0
                . nothing 0 0
                  name lex nothing 0 0
                  name prompt nothing 0 0
                const  string 0 0
              seq nothing 0 0
                return nothing 0 0
                  name lex nothing 0 0
typecheck tree: 
fn(){} fn(l: self ref YYLEX, s: string) 0 0
  . fn(l: self ref YYLEX, err: string) 0 0
    name YYLEX YYLEX 0 0
    name error nothing 0 0
  seq nothing 0 0
    if nothing 0 0
      == nothing 0 0
        . nothing 0 0
          name l nothing 0 0
          name err nothing 0 0
        name nil polymorphic type 0 0
      seq nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            = nothing 0 0
              . nothing 0 0
                name l nothing 0 0
                name err nothing 0 0
              name s nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                . nothing 0 0
                  name l nothing 0 0
                  name errline nothing 0 0
                . nothing 0 0
                  name l nothing 0 0
                  name linenum nothing 0 0
typecheck tree: 
fn(){} fn(l: self ref YYLEX): int 0 0
  . fn(l: self ref YYLEX): int 0 0
    name YYLEX YYLEX 0 0
    name lex nothing 0 0
  seq nothing 0 0
    := nothing 0 0
      name endword nothing 0 0
      const (0) int 0 0
    seq nothing 0 0
      := nothing 0 0
        name wasdollar nothing 0 0
        const (0) int 0 0
      seq nothing 0 0
        := nothing 0 0
          name tok nothing 0 0
          name NOTOKEN nothing 0 0
        seq nothing 0 0
          for nothing 0 0
            == nothing 0 0
              name tok nothing 0 0
              name NOTOKEN nothing 0 0
            seq nothing 0 0
              scope nothing 0 0
                seq nothing 0 0
                  case nothing 0 0
                    := nothing 0 0
                      name c nothing 0 0
                      call nothing 0 0
                        . nothing 0 0
                          name l nothing 0 0
                          name getc nothing 0 0
                    seq nothing 0 0
                      label nothing 0 0
                        seq nothing 0 0
                          . nothing 0 0
                            name l nothing 0 0
                            name EOF nothing 0 0
                        scope nothing 0 0
                          = nothing 0 0
                            name tok nothing 0 0
                            name END nothing 0 0
                      seq nothing 0 0
                        label nothing 0 0
                          seq nothing 0 0
                            const (10) int 0 0
                          scope nothing 0 0
                            = nothing 0 0
                              name tok nothing 0 0
                              const (10) int 0 0
                        seq nothing 0 0
                          label nothing 0 0
                            seq nothing 0 0
                              const (13) int 0 0
                              seq nothing 0 0
                                const (9) int 0 0
                                seq nothing 0 0
                                  const (32) int 0 0
                            scope nothing 0 0
                              nothing nothing 0 0
                          seq nothing 0 0
                            label nothing 0 0
                              seq nothing 0 0
                                const (35) int 0 0
                              scope nothing 0 0
                                seq nothing 0 0
                                  for nothing 0 0
                                    && nothing 0 0
                                      != nothing 0 0
                                        = nothing 0 0
                                          name c nothing 0 0
                                          call nothing 0 0
                                            . nothing 0 0
                                              name l nothing 0 0
                                              name getc nothing 0 0
                                        const (10) int 0 0
                                      != nothing 0 0
                                        name c nothing 0 0
                                        . nothing 0 0
                                          name l nothing 0 0
                                          name EOF nothing 0 0
                                    seq nothing 0 0
                                      nothing nothing 0 0
                                  call nothing 0 0
                                    . nothing 0 0
                                      name l nothing 0 0
                                      name ungetc nothing 0 0
                            seq nothing 0 0
                              label nothing 0 0
                                seq nothing 0 0
                                  const (59) int 0 0
                                scope nothing 0 0
                                  = nothing 0 0
                                    name tok nothing 0 0
                                    const (59) int 0 0
   
typecheck tree: 
fn(){} fn(t: int): string 0 0
  name tokstr fn(t: int): string 0 0
  seq nothing 0 0
    vardecl string 0 0
      seq nothing 0 0
    seq nothing 0 0
      case nothing 0 0
        name t nothing 0 0
        seq nothing 0 0
          label nothing 0 0
            seq nothing 0 0
              const (10) int 0 0
            scope nothing 0 0
              = nothing 0 0
                name s nothing 0 0
                const '\n' string 0 0
          seq nothing 0 0
            label nothing 0 0
              seq nothing 0 0
                range nothing 0 0
                  const (33) int 0 0
                  const (127) int 0 0
              scope nothing 0 0
                = nothing 0 0
                  name s nothing 0 0
                  call nothing 0 0
                    name sprint nothing 0 0
                    seq nothing 0 0
                      const '%c' string 0 0
                      seq nothing 0 0
                        name t nothing 0 0
            seq nothing 0 0
              label nothing 0 0
                seq nothing 0 0
                  name DUP nothing 0 0
                scope nothing 0 0
                  = nothing 0 0
                    name s nothing 0 0
                    const DUP string 0 0
              seq nothing 0 0
                label nothing 0 0
                  seq nothing 0 0
                    name REDIR nothing 0 0
                  scope nothing 0 0
                    = nothing 0 0
                      name s nothing 0 0
                      const REDIR string 0 0
                seq nothing 0 0
                  label nothing 0 0
                    seq nothing 0 0
                      name WORD nothing 0 0
                    scope nothing 0 0
                      = nothing 0 0
                        name s nothing 0 0
                        const WORD string 0 0
                  seq nothing 0 0
                    label nothing 0 0
                      seq nothing 0 0
                        name OP nothing 0 0
                      scope nothing 0 0
                        = nothing 0 0
                          name s nothing 0 0
                          const OP string 0 0
                    seq nothing 0 0
                      label nothing 0 0
                        seq nothing 0 0
                          name END nothing 0 0
                        scope nothing 0 0
                          = nothing 0 0
                            name s nothing 0 0
                            const END string 0 0
                      seq nothing 0 0
                        label nothing 0 0
                          seq nothing 0 0
                            name ERROR nothing 0 0
                          scope nothing 0 0
                            = nothing 0 0
                              name s nothing 0 0
                              const ERROR string 0 0
                        seq nothing 0 0
                          label nothing 0 0
                            seq nothing 0 0
                              * nothing 0 0
                            scope nothing 0 0
                              = nothing 0 0
                                name s nothing 0 0
                                + nothing 0 0
                                  + nothing 0 0
                                    const <unknowntok string 0 0
                                    cast string 0 0
                                      name t nothing 0 0
                                  const > string 0 0
      seq nothing 0 0
        return nothing 0 0
          name s nothing 0 0
typecheck tree: 
fn(){} fn(lex: self ref YYLEX) 0 0
  . fn(l: self ref YYLEX) 0 0
    name YYLEX YYLEX 0 0
    name ungetc nothing 0 0
  seq nothing 0 0
    -- nothing 0 0
      . nothing 0 0
        name lex nothing 0 0
        name strpos nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        != nothing 0 0
          . nothing 0 0
            name lex nothing 0 0
            name f nothing 0 0
          name nil polymorphic type 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              ++ nothing 0 0
                . nothing 0 0
                  name lex nothing 0 0
                  name ncbuf nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  < nothing 0 0
                    . nothing 0 0
                      name lex nothing 0 0
                      name strpos nothing 0 0
                    const (0) int 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      . nothing 0 0
                        name lex nothing 0 0
                        name strpos nothing 0 0
                      - nothing 0 0
                        len nothing 0 0
                          . nothing 0 0
                            name lex nothing 0 0
                            name cbuf nothing 0 0
                        const (1) int 0 0
typecheck tree: 
fn(){} fn(lex: self ref YYLEX): int 0 0
  . fn(l: self ref YYLEX): int 0 0
    name YYLEX YYLEX 0 0
    name getc nothing 0 0
  seq nothing 0 0
    if nothing 0 0
      . nothing 0 0
        name lex nothing 0 0
        name eof nothing 0 0
      seq nothing 0 0
        return nothing 0 0
          . nothing 0 0
            name lex nothing 0 0
            name EOF nothing 0 0
    seq nothing 0 0
      vardecl int 0 0
        seq nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          != nothing 0 0
            . nothing 0 0
              name lex nothing 0 0
              name f nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            scope nothing 0 0
              seq nothing 0 0
                if nothing 0 0
                  > nothing 0 0
                    . nothing 0 0
                      name lex nothing 0 0
                      name ncbuf nothing 0 0
                    const (0) int 0 0
                  seq nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        = nothing 0 0
                          name c nothing 0 0
                          index nothing 0 0
                            . nothing 0 0
                              name lex nothing 0 0
                              name cbuf nothing 0 0
                            ++ nothing 0 0
                              . nothing 0 0
                                name lex nothing 0 0
                                name strpos nothing 0 0
                        seq nothing 0 0
                          if nothing 0 0
                            >= nothing 0 0
                              . nothing 0 0
                                name lex nothing 0 0
                                name strpos nothing 0 0
                              len nothing 0 0
                                . nothing 0 0
                                  name lex nothing 0 0
                                  name cbuf nothing 0 0
                            seq nothing 0 0
                              = nothing 0 0
                                . nothing 0 0
                                  name lex nothing 0 0
                                  name strpos nothing 0 0
                                const (0) int 0 0
                          seq nothing 0 0
                            -- nothing 0 0
                              . nothing 0 0
                                name lex nothing 0 0
                                name ncbuf nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        if nothing 0 0
                          && nothing 0 0
                            . nothing 0 0
                              name lex nothing 0 0
                              name lastnl nothing 0 0
                            != nothing 0 0
                              . nothing 0 0
                                name lex nothing 0 0
                                name prompt nothing 0 0
                              name nil polymorphic type 0 0
                          seq nothing 0 0
                            call nothing 0 0
                              -> nothing 0 0
                                name sys nothing 0 0
                                name fprint nothing 0 0
                              seq nothing 0 0
                                call nothing 0 0
                                  name stderr nothing 0 0
                                seq nothing 0 0
                                  const %s string 0 0
                                  seq nothing 0 0
                                    . nothing 0 0
                                      name lex nothing 0 0
                                      name prompt nothing 0 0
                        seq nothing 0 0
                          = nothing 0 0
                            name c nothing 0 0
                            call nothing 0 0
                              -> nothing 0 0
                                name bufio nothi
typecheck tree: 
fn(){} fn(lex: ref YYLEX): int 0 0
  name readnum fn(lex: ref YYLEX): int 0 0
  seq nothing 0 0
    := nothing 0 0
      name sum nothing 0 0
      := nothing 0 0
        name nc nothing 0 0
        const (0) int 0 0
    seq nothing 0 0
      for nothing 0 0
        && nothing 0 0
          >= nothing 0 0
            := nothing 0 0
              name c nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  name lex nothing 0 0
                  name getc nothing 0 0
            const (48) int 0 0
          <= nothing 0 0
            name c nothing 0 0
            const (57) int 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              = nothing 0 0
                name sum nothing 0 0
                + nothing 0 0
                  * nothing 0 0
                    name sum nothing 0 0
                    const (10) int 0 0
                  - nothing 0 0
                    name c nothing 0 0
                    const (48) int 0 0
              seq nothing 0 0
                ++ nothing 0 0
                  name nc nothing 0 0
      seq nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name lex nothing 0 0
            name ungetc nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            == nothing 0 0
              name nc nothing 0 0
              const (0) int 0 0
            seq nothing 0 0
              return nothing 0 0
                - nothing 0 0
                  const (1) int 0 0
          seq nothing 0 0
            return nothing 0 0
              name sum nothing 0 0
typecheck tree: 
fn(){} fn(lex: ref YYLEX): (int, ref Redir) 0 0
  name readfdassign fn(lex: ref YYLEX): (int, ref Redir) 0 0
  seq nothing 0 0
    := nothing 0 0
      name n1 nothing 0 0
      call nothing 0 0
        name readnum nothing 0 0
        seq nothing 0 0
          name lex nothing 0 0
    seq nothing 0 0
      if nothing 0 0
        != nothing 0 0
          := nothing 0 0
            name c nothing 0 0
            call nothing 0 0
              . nothing 0 0
                name lex nothing 0 0
                name getc nothing 0 0
          const (61) int 0 0
        seq nothing 0 0
          scope nothing 0 0
            seq nothing 0 0
              if nothing 0 0
                == nothing 0 0
                  name c nothing 0 0
                  const (93) int 0 0
                seq nothing 0 0
                  return nothing 0 0
                    tuple nothing 0 0
                      seq nothing 0 0
                        name REDIR nothing 0 0
                        seq nothing 0 0
                          ref nothing 0 0
                            call nothing 0 0
                              name Redir nothing 0 0
                              seq nothing 0 0
                                - nothing 0 0
                                  const (1) int 0 0
                                seq nothing 0 0
                                  name n1 nothing 0 0
                                  seq nothing 0 0
                                    - nothing 0 0
                                      const (1) int 0 0
              seq nothing 0 0
                return nothing 0 0
                  tuple nothing 0 0
                    seq nothing 0 0
                      name ERROR nothing 0 0
                      seq nothing 0 0
                        name nil polymorphic type 0 0
      seq nothing 0 0
        := nothing 0 0
          name n2 nothing 0 0
          call nothing 0 0
            name readnum nothing 0 0
            seq nothing 0 0
              name lex nothing 0 0
        seq nothing 0 0
          if nothing 0 0
            != nothing 0 0
              call nothing 0 0
                . nothing 0 0
                  name lex nothing 0 0
                  name getc nothing 0 0
              const (93) int 0 0
            seq nothing 0 0
              return nothing 0 0
                tuple nothing 0 0
                  seq nothing 0 0
                    name ERROR nothing 0 0
                    seq nothing 0 0
                      name nil polymorphic type 0 0
          seq nothing 0 0
            return nothing 0 0
              tuple nothing 0 0
                seq nothing 0 0
                  name DUP nothing 0 0
                  seq nothing 0 0
                    ref nothing 0 0
                      call nothing 0 0
                        name Redir nothing 0 0
                        seq nothing 0 0
                          - nothing 0 0
                            const (1) int 0 0
                          seq nothing 0 0
                            name n1 nothing 0 0
                            seq nothing 0 0
                              name n2 nothing 0 0
typecheck tree: 
fn(){} fn(left: ref Node, right: ref Node): ref Node 0 0
  name mkseq fn(left: ref Node, right: ref Node): ref Node 0 0
  seq nothing 0 0
    if nothing 0 0
      && nothing 0 0
        != nothing 0 0
          name left nothing 0 0
          name nil polymorphic type 0 0
        != nothing 0 0
          name right nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          call nothing 0 0
            name mk nothing 0 0
            seq nothing 0 0
              name n_SEQ nothing 0 0
              seq nothing 0 0
                name left nothing 0 0
                seq nothing 0 0
                  name right nothing 0 0
        if nothing 0 0
          == nothing 0 0
            name left nothing 0 0
            name nil polymorphic type 0 0
          seq nothing 0 0
            return nothing 0 0
              name right nothing 0 0
    seq nothing 0 0
      return nothing 0 0
        name left nothing 0 0
typecheck tree: 
fn(){} fn(ntype: int, left: ref Node, right: ref Node): ref Node 0 0
  name mk fn(ntype: int, left: ref Node, right: ref Node): ref Node 0 0
  seq nothing 0 0
    return nothing 0 0
      ref nothing 0 0
        call nothing 0 0
          name Node nothing 0 0
          seq nothing 0 0
            name ntype nothing 0 0
            seq nothing 0 0
              name left nothing 0 0
              seq nothing 0 0
                name right nothing 0 0
                seq nothing 0 0
                  name nil polymorphic type 0 0
                  seq nothing 0 0
                    name nil polymorphic type 0 0
typecheck tree: 
fn(){} fn(): ref Sys->FD 0 0
  name stderr fn(): ref Sys->FD 0 0
  seq nothing 0 0
    return nothing 0 0
      call nothing 0 0
        -> nothing 0 0
          name sys nothing 0 0
          name fildes nothing 0 0
        seq nothing 0 0
          const (2) int 0 0
typecheck tree: 
fn(){} fn(yyc: int): string 0 0
  name yytokname fn(yyc: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      && nothing 0 0
        && nothing 0 0
          > nothing 0 0
            name yyc nothing 0 0
            const (0) int 0 0
          <= nothing 0 0
            name yyc nothing 0 0
            len nothing 0 0
              name yytoknames nothing 0 0
        != nothing 0 0
          index nothing 0 0
            name yytoknames nothing 0 0
            - nothing 0 0
              name yyc nothing 0 0
              const (1) int 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          index nothing 0 0
            name yytoknames nothing 0 0
            - nothing 0 0
              name yyc nothing 0 0
              const (1) int 0 0
    seq nothing 0 0
      return nothing 0 0
        + nothing 0 0
          + nothing 0 0
            const < string 0 0
            cast string 0 0
              name yyc nothing 0 0
          const > string 0 0
typecheck tree: 
fn(){} fn(yys: int): string 0 0
  name yystatname fn(yys: int): string 0 0
  seq nothing 0 0
    if nothing 0 0
      && nothing 0 0
        && nothing 0 0
          >= nothing 0 0
            name yys nothing 0 0
            const (0) int 0 0
          < nothing 0 0
            name yys nothing 0 0
            len nothing 0 0
              name yystates nothing 0 0
        != nothing 0 0
          index nothing 0 0
            name yystates nothing 0 0
            name yys nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        return nothing 0 0
          index nothing 0 0
            name yystates nothing 0 0
            name yys nothing 0 0
    seq nothing 0 0
      return nothing 0 0
        + nothing 0 0
          + nothing 0 0
            const < string 0 0
            cast string 0 0
              name yys nothing 0 0
          const >
 string 0 0
typecheck tree: 
fn(){} fn(yylex: ref YYLEX): int 0 0
  name yylex1 fn(yylex: ref YYLEX): int 0 0
  seq nothing 0 0
    vardecl int 0 0
      seq nothing 0 0
    seq nothing 0 0
      := nothing 0 0
        name yychar nothing 0 0
        call nothing 0 0
          . nothing 0 0
            name yylex nothing 0 0
            name lex nothing 0 0
      seq nothing 0 0
        if nothing 0 0
          <= nothing 0 0
            name yychar nothing 0 0
            const (0) int 0 0
          seq nothing 0 0
            = nothing 0 0
              name c nothing 0 0
              index nothing 0 0
                name yytok1 nothing 0 0
                const (0) int 0 0
            if nothing 0 0
              < nothing 0 0
                name yychar nothing 0 0
                len nothing 0 0
                  name yytok1 nothing 0 0
              seq nothing 0 0
                = nothing 0 0
                  name c nothing 0 0
                  index nothing 0 0
                    name yytok1 nothing 0 0
                    name yychar nothing 0 0
                if nothing 0 0
                  && nothing 0 0
                    >= nothing 0 0
                      name yychar nothing 0 0
                      name YYPRIVATE nothing 0 0
                    < nothing 0 0
                      name yychar nothing 0 0
                      + nothing 0 0
                        name YYPRIVATE nothing 0 0
                        len nothing 0 0
                          name yytok2 nothing 0 0
                  seq nothing 0 0
                    = nothing 0 0
                      name c nothing 0 0
                      index nothing 0 0
                        name yytok2 nothing 0 0
                        - nothing 0 0
                          name yychar nothing 0 0
                          name YYPRIVATE nothing 0 0
                    scope nothing 0 0
                      seq nothing 0 0
                        := nothing 0 0
                          name n nothing 0 0
                          len nothing 0 0
                            name yytok3 nothing 0 0
                        seq nothing 0 0
                          = nothing 0 0
                            name c nothing 0 0
                            const (0) int 0 0
                          seq nothing 0 0
                            seq nothing 0 0
                              := nothing 0 0
                                name i nothing 0 0
                                const (0) int 0 0
                              for nothing 0 0
                                < nothing 0 0
                                  name i nothing 0 0
                                  name n nothing 0 0
                                seq nothing 0 0
                                  scope nothing 0 0
                                    seq nothing 0 0
                                      if nothing 0 0
                                        == nothing 0 0
                                          index nothing 0 0
                                            name yytok3 nothing 0 0
                                            + nothing 0 0
                                              name i nothing 0 0
                                              const (0) int 0 0
                                          name yychar nothing 0 0
                                        seq nothing 0 0
                                          scope nothing 0 0
                                            seq nothing 0 0
                                              = nothing 0 0
                                                name c nothing 0 0
                                                index nothing 0 0
                                                  name yytok3 nothing 0 0
                                                  + nothing 0 0
                                                    name i nothing 0 0
                                                    const (1) int 0 0
                                              seq nothing 0 0
                                                b
typecheck tree: 
fn(){} fn(yylex: ref YYLEX): int 0 0
  name yyparse fn(yylex: ref YYLEX): int 0 0
  seq nothing 0 0
    if nothing 0 0
      && nothing 0 0
        >= nothing 0 0
          name yydebug nothing 0 0
          const (1) int 0 0
        == nothing 0 0
          name yysys nothing 0 0
          name nil polymorphic type 0 0
      seq nothing 0 0
        scope nothing 0 0
          seq nothing 0 0
            = nothing 0 0
              name yysys nothing 0 0
              load YYSys 0 0
                const $Sys string 0 0
            seq nothing 0 0
              = nothing 0 0
                name yystderr nothing 0 0
                call nothing 0 0
                  -> nothing 0 0
                    name yysys nothing 0 0
                    name fildes nothing 0 0
                  seq nothing 0 0
                    const (2) int 0 0
    seq nothing 0 0
      := nothing 0 0
        name yys nothing 0 0
        array array of YYS 0 0
          name YYMAXDEPTH nothing 0 0
      seq nothing 0 0
        vardecl YYSTYPE 0 0
          seq nothing 0 0
        seq nothing 0 0
          := nothing 0 0
            name yystate nothing 0 0
            const (0) int 0 0
          seq nothing 0 0
            := nothing 0 0
              name yychar nothing 0 0
              - nothing 0 0
                const (1) int 0 0
            seq nothing 0 0
              := nothing 0 0
                name yynerrs nothing 0 0
                const (0) int 0 0
              seq nothing 0 0
                := nothing 0 0
                  name yyerrflag nothing 0 0
                  const (0) int 0 0
                seq nothing 0 0
                  := nothing 0 0
                    name yyp nothing 0 0
                    - nothing 0 0
                      const (1) int 0 0
                  seq nothing 0 0
                    := nothing 0 0
                      name yyn nothing 0 0
                      const (0) int 0 0
                    seq nothing 0 0
                      for nothing 0 0
                        nothing nothing 0 0
                        seq nothing 0 0
                          scope nothing 0 0
                            seq nothing 0 0
                              if nothing 0 0
                                >= nothing 0 0
                                  name yydebug nothing 0 0
                                  const (4) int 0 0
                                seq nothing 0 0
                                  call nothing 0 0
                                    -> nothing 0 0
                                      name yysys nothing 0 0
                                      name fprint nothing 0 0
                                    seq nothing 0 0
                                      name yystderr nothing 0 0
                                      seq nothing 0 0
                                        const char %s in %s string 0 0
                                        seq nothing 0 0
                                          call nothing 0 0
                                            name yytokname nothing 0 0
                                            seq nothing 0 0
                                              name yychar nothing 0 0
                                          seq nothing 0 0
                                            call nothing 0 0
                                              name yystatname nothing 0 0
                                              seq nothing 0 0
                                                name yystate nothing 0 0
                              seq nothing 0 0
                                ++ nothing 0 0
                                  name yyp nothing 0 0
                                seq nothing 0 0
                                  if nothing 0 0
                                    >= nothing 0 0
                                      name yyp nothing 0 0
                                      len nothing 0 0
                                        name yys nothing 0 0
                                    seq nothing 0 0
                          
fncom: usage 2 417ba8
ecom: 
used int 10 2
  call int 10 2
    -> fn(fd: ref Sys->FD, s: string, *): int 12 1
      name sys Sys 1 0
      name fprint nothing 11 1
    seq no type 10 2
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (2) int 6 0
      seq no type 10 1
        const usage: sh [-ilexn] [-c command] [file [arg...]]
 string 1 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, s: string, *): int 12 1
    name sys Sys 1 0
    name fprint nothing 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (2) int 6 0
    seq no type 10 1
      const usage: sh [-ilexn] [-c command] [file [arg...]]
 string 1 0
ecom to: 
name .t0 int 0 0
generate desc for Sys->fprint
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
generate desc for big
generate desc for big
	desc	$-1,8,""
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (2) int 6 0
ecom to: 
name .t2 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b3 big 0 0
    const (64) int 6 0
ecom: 
name .t2 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b1 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t2 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t2 ref Sys->FD 0 0
ecom: 
const usage: sh [-ilexn] [-c command] [file [arg...]]
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b1 big 0 0
    const (72) int 6 0
ecom: 
raise nothing 10 1
  const fail:usage string 1 0
fn: usage
64: local .t0 int ref 1
72: local .b1 big ref 1
80: local .b3 big ref 1
88: local .t2 ref Sys->FD ref 1
generate desc for usage
descmap offset 0
descmap .t0 type int offset 64 (d->offset=64 start=0) returns -1
descmap .b1 type big offset 72 (d->offset=72 start=0) returns -1
descmap .b3 type big offset 80 (d->offset=80 start=0) returns -1
descmap .t2 type ref Sys->FD offset 88 (d->offset=88 start=0) returns 88
fncom: badmodule 6 417c68
ecom: 
used int 10 2
  call int 10 2
    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
      name sys Sys 1 0
      name fprint nothing 11 1
    seq no type 10 2
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (2) int 6 0
      seq no type 10 1
        const sh: cannot load %s: %r
 string 1 0
        seq no type 10 1
          name path string 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
    name sys Sys 1 0
    name fprint nothing 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (2) int 6 0
    seq no type 10 1
      const sh: cannot load %s: %r
 string 1 0
      seq no type 10 1
        name path string 0 0
ecom to: 
name .t4 int 0 0
generate desc for Sys->fprint
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (2) int 6 0
ecom to: 
name .t6 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b7 big 0 0
    const (64) int 6 0
ecom: 
name .t6 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b5 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t6 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t6 ref Sys->FD 0 0
ecom: 
const sh: cannot load %s: %r
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b5 big 0 0
    const (72) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b5 big 0 0
    const (80) int 6 0
ecom: 
raise nothing 10 1
  const fail:bad module string 1 0
fn: badmodule
64: argument path string ref 1
72: local .t4 int ref 1
80: local .b5 big ref 1
88: local .b7 big ref 1
96: local .t6 ref Sys->FD ref 1
generate desc for badmodule
descmap offset 0
descmap path type string offset 64 (d->offset=64 start=0) returns 64
descmap .t4 type int offset 72 (d->offset=72 start=0) returns -1
descmap .b5 type big offset 80 (d->offset=80 start=0) returns -1
descmap .b7 type big offset 88 (d->offset=88 start=0) returns -1
descmap .t6 type ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
fncom: initialise 7 4b6b60
ecom: 
= Sys 10 1
  name sys Sys 1 0
  load Sys 10 1
    const $Sys string 1 0
    name .m.Sys Sys 17 1
ecom: 
load Sys 10 1
  const $Sys string 1 0
  name .m.Sys Sys 17 1
ecom to: 
name sys Sys 1 0
ecom: 
= Filepat 10 1
  name filepat Filepat 1 0
  load Filepat 10 1
    const /dis/lib/filepat.dis string 1 0
    name .m.Filepat Filepat 17 1
ecom: 
load Filepat 10 1
  const /dis/lib/filepat.dis string 1 0
  name .m.Filepat Filepat 17 1
ecom to: 
name filepat Filepat 1 0
ecom: 
call no type 10 2
  name badmodule fn(path: string) 11 1
  seq no type 10 1
    const /dis/lib/filepat.dis string 1 0
generate desc for big
ecom: 
const /dis/lib/filepat.dis string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b9 big 0 0
    const (64) int 6 0
ecom: 
= String 10 1
  name str String 1 0
  load String 10 1
    const /dis/lib/string.dis string 1 0
    name .m.String String 17 1
ecom: 
load String 10 1
  const /dis/lib/string.dis string 1 0
  name .m.String String 17 1
ecom to: 
name str String 1 0
ecom: 
call no type 10 2
  name badmodule fn(path: string) 11 1
  seq no type 10 1
    const /dis/lib/string.dis string 1 0
generate desc for big
ecom: 
const /dis/lib/string.dis string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b9 big 0 0
    const (64) int 6 0
ecom: 
= Bufio 10 1
  name bufio Bufio 1 0
  load Bufio 10 1
    const /dis/lib/bufio.dis string 1 0
    name .m.Bufio Bufio 17 1
ecom: 
load Bufio 10 1
  const /dis/lib/bufio.dis string 1 0
  name .m.Bufio Bufio 17 1
ecom to: 
name bufio Bufio 1 0
ecom: 
call no type 10 2
  name badmodule fn(path: string) 11 1
  seq no type 10 1
    const /dis/lib/bufio.dis string 1 0
generate desc for big
ecom: 
const /dis/lib/bufio.dis string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b9 big 0 0
    const (64) int 6 0
ecom: 
= Sh 10 1
  name myself Sh 1 0
  load Sh 10 1
    const $self string 1 0
    name .m.Sh Sh 17 1
ecom: 
load Sh 10 1
  const $self string 1 0
  name .m.Sh Sh 17 1
ecom to: 
name myself Sh 1 0
ecom: 
call no type 10 2
  name badmodule fn(path: string) 11 1
  seq no type 10 1
    const $self(Sh) string 1 0
generate desc for big
ecom: 
const $self(Sh) string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b9 big 0 0
    const (64) int 6 0
ecom: 
= Shellbuiltin 10 1
  name myselfbuiltin Shellbuiltin 1 0
  load Shellbuiltin 10 1
    const $self string 1 0
    name .m.Shellbuiltin Shellbuiltin 17 1
ecom: 
load Shellbuiltin 10 1
  const $self string 1 0
  name .m.Shellbuiltin Shellbuiltin 17 1
ecom to: 
name myselfbuiltin Shellbuiltin 1 0
ecom: 
call no type 10 2
  name badmodule fn(path: string) 11 1
  seq no type 10 1
    const $self(Shellbuiltin) string 1 0
generate desc for big
ecom: 
const $self(Shellbuiltin) string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b9 big 0 0
    const (64) int 6 0
ecom: 
= Env 10 1
  name env Env 1 0
  load Env 10 1
    const /dis/lib/env.dis string 1 0
    name .m.Env Env 17 1
ecom: 
load Env 10 1
  const /dis/lib/env.dis string 1 0
  name .m.Env Env 17 1
ecom to: 
name env Env 1 0
fn: initialise
64: local .t8 int ref 1
72: local .b9 big ref 5
generate desc for initialise
descmap offset 0
descmap .t8 type int offset 64 (d->offset=64 start=0) returns -1
descmap .b9 type big offset 72 (d->offset=72 start=0) returns -1
fncom: init 2 4b6d80
ecom: 
call no type 10 1
  name initialise fn() 11 1
generate desc for big
ecom: 
= Options 10 1
  name opts Options 0 0
  name blankopts Options 1 0
ecom: 
name blankopts Options 1 0
ecom to: 
name opts Options 0 0
generate desc for Options
descmap adt offset 0
descmap offset 0
descmap lflag type int offset 0 (d->offset=0 start=0) returns -1
descmap nflag type int offset 4 (d->offset=4 start=0) returns -1
descmap ctxtflags type int offset 8 (d->offset=8 start=0) returns -1
descmap carg type string offset 16 (d->offset=16 start=0) returns 16
generate desc for Options
	desc	$-1,24,"20"
eacom: 
inds int 10 1
  hd string 10 1
    name argv list of string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  hd string 10 1
    name argv list of string 0 0
  const (0) int 6 0
ecom to: 
name .t11 int 0 0
eacom: 
hd string 10 1
  name argv list of string 0 0
ecom: 
hd string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 string 0 0
ecom: 
= string 10 1
  name .t12 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t12 string 0 0
ecom: 
++ int 10 1
  * int 0 0
    adr int 13 1
      name opts Options 0 0
  const (1) int 6 0
ecom: 
= list of string 10 1
  name argv list of string 0 0
  tl list of string 10 1
    name argv list of string 0 0
ecom: 
tl list of string 10 1
  name argv list of string 0 0
ecom to: 
name argv list of string 0 0
ecom: 
= int 10 1
  name interactive int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name interactive int 0 0
eacom: 
hd string 10 1
  name argv list of string 0 0
ecom: 
hd string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 string 0 0
ecom: 
= string 10 1
  name .t12 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t12 string 0 0
eacom: 
inds int 10 1
  hd string 10 1
    name argv list of string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  hd string 10 1
    name argv list of string 0 0
  const (0) int 6 0
ecom to: 
name .t11 int 0 0
eacom: 
hd string 10 1
  name argv list of string 0 0
ecom: 
hd string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 string 0 0
ecom: 
= string 10 1
  name .t12 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t12 string 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  hd string 10 1
    name argv list of string 0 0
ecom: 
len int 10 1
  hd string 10 1
    name argv list of string 0 0
ecom to: 
name .t11 int 0 0
eacom: 
hd string 10 1
  name argv list of string 0 0
ecom: 
hd string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 string 0 0
ecom: 
= string 10 1
  name .t12 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t12 string 0 0
ecom: 
= int 10 1
  name c int 0 0
  inds int 10 1
    hd string 10 1
      name argv list of string 0 0
    name i int 0 0
ecom: 
inds int 10 1
  hd string 10 1
    name argv list of string 0 0
  name i int 0 0
ecom to: 
name c int 0 0
eacom: 
hd string 10 1
  name argv list of string 0 0
ecom: 
hd string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 string 0 0
ecom: 
= string 10 1
  name .t12 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t12 string 0 0
ecom: 
= int 10 1
  name interactive int 0 0
  const INTERACTIVE (1) int 6 0
ecom: 
const INTERACTIVE (1) int 6 0
ecom to: 
name interactive int 0 0
ecom: 
++ int 10 1
  * int 0 0
    adr int 13 1
      name opts Options 0 0
  const (1) int 6 0
ecom: 
++ int 10 1
  * int 0 0
    + int 13 1
      adr int 13 1
        name opts Options 0 0
      const nflag (4) int 6 0
  const (1) int 6 0
ecom: 
|= int 10 1
  * int 0 0
    + int 13 1
      adr int 13 1
        name opts Options 0 0
      const ctxtflags (8) int 6 0
  const ERROREXIT (8) int 6 0
ecom: 
|= int 10 1
  * int 0 0
    + int 13 1
      adr int 13 1
        name opts Options 0 0
      const ctxtflags (8) int 6 0
  const EXECPRINT (4) int 6 0
eacom: 
- int 10 1
  len int 10 1
    hd string 10 1
      name argv list of string 0 0
  const (1) int 6 0
ecom: 
- int 10 1
  len int 10 1
    hd string 10 1
      name argv list of string 0 0
  const (1) int 6 0
ecom to: 
name .t11 int 0 0
ecom: 
len int 10 1
  hd string 10 1
    name argv list of string 0 0
ecom to: 
name .t11 int 0 0
eacom: 
hd string 10 1
  name argv list of string 0 0
ecom: 
hd string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 string 0 0
ecom: 
= string 10 1
  name .t12 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t12 string 0 0
ecom: 
= string 10 2
  name arg string 0 0
  slice string 10 2
    hd string 10 1
      name argv list of string 0 0
    seq no type 10 2
      + int 15 1
        name i int 0 0
        const (1) int 6 0
      nothing no type 10 1
ecom: 
slice string 10 2
  hd string 10 1
    name argv list of string 0 0
  seq no type 10 2
    + int 15 1
      name i int 0 0
      const (1) int 6 0
    nothing no type 10 1
ecom to: 
name arg string 0 0
eacom: 
hd string 10 1
  name argv list of string 0 0
ecom: 
hd string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 string 0 0
ecom: 
len int 10 1
  name .t12 string 0 0
ecom to: 
name .t11 int 0 0
eacom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t13 int 0 0
ecom: 
name .t12 string 0 0
ecom to: 
name arg string 0 0
ecom: 
= string 10 1
  name .t12 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t12 string 0 0
eacom: 
tl list of string 10 1
  name argv list of string 0 0
ecom: 
tl list of string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 list of string 0 0
ecom: 
= list of string 10 1
  name .t12 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t12 list of string 0 0
eacom: 
hd string 10 1
  tl list of string 10 1
    name argv list of string 0 0
ecom: 
hd string 10 1
  tl list of string 10 1
    name argv list of string 0 0
ecom to: 
name .t12 string 0 0
eacom: 
tl list of string 10 1
  name argv list of string 0 0
ecom: 
tl list of string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 list of string 0 0
ecom: 
= string 10 1
  name .t12 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t12 string 0 0
ecom: 
call no type 10 1
  name usage fn() 11 1
generate desc for big
ecom: 
= string 10 1
  name arg string 0 0
  hd string 10 1
    tl list of string 10 1
      name argv list of string 0 0
ecom: 
hd string 10 1
  tl list of string 10 1
    name argv list of string 0 0
ecom to: 
name arg string 0 0
eacom: 
tl list of string 10 1
  name argv list of string 0 0
ecom: 
tl list of string 10 1
  name argv list of string 0 0
ecom to: 
name .t12 list of string 0 0
ecom: 
= list of string 10 1
  name .t12 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t12 list of string 0 0
ecom: 
= list of string 10 1
  name argv list of string 0 0
  tl list of string 10 1
    name argv list of string 0 0
ecom: 
tl list of string 10 1
  name argv list of string 0 0
ecom to: 
name argv list of string 0 0
ecom: 
= list of string 10 1
  name argv list of string 0 0
  tl list of string 10 1
    name argv list of string 0 0
ecom: 
tl list of string 10 1
  name argv list of string 0 0
ecom to: 
name argv list of string 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name opts Options 0 0
      const carg (16) int 6 0
  name arg string 0 0
ecom: 
name arg string 0 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name opts Options 0 0
    const carg (16) int 6 0
ecom: 
= string 10 1
  name arg string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name arg string 0 0
ecom: 
= string 10 1
  name arg string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name arg string 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
= list of string 10 1
  name argv list of string 0 0
  tl list of string 10 1
    name argv list of string 0 0
ecom: 
tl list of string 10 1
  name argv list of string 0 0
ecom to: 
name argv list of string 0 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const FORKFD (2) int 6 0
      seq no type 10 1
        name nil list of int 1 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const FORKFD (2) int 6 0
    seq no type 10 1
      name nil list of int 1 0
ecom to: 
name .t13 int 0 0
generate desc for big
ecom: 
const FORKFD (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
name nil list of int 1 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b10 big 0 0
    const (72) int 6 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const FORKNS (8) int 6 0
      seq no type 10 1
        name nil list of int 1 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const FORKNS (8) int 6 0
    seq no type 10 1
      name nil list of int 1 0
ecom to: 
name .t13 int 0 0
generate desc for big
ecom: 
const FORKNS (8) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
name nil list of int 1 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b10 big 0 0
    const (72) int 6 0
ecom: 
= ref Context 10 2
  name ctxt ref Context 0 0
  call ref Context 10 2
    name new fn(drawcontext: ref Draw->Context): ref Context 11 1
    seq no type 10 1
      name drawcontext ref Draw->Context 0 0
ecom: 
call ref Context 10 2
  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
  seq no type 10 1
    name drawcontext ref Draw->Context 0 0
ecom to: 
name ctxt ref Context 0 0
generate desc for big
ecom: 
name drawcontext ref Draw->Context 0 0
ecom to: 
* ref Draw->Context 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
used int 10 2
  call int 10 2
    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
    seq nothing 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * int 0 0
          + int 13 1
            adr int 13 1
              name opts Options 0 0
            const ctxtflags (8) int 6 0
        seq no type 10 1
          const (1) int 6 0
ecom: 
call int 10 2
  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * int 0 0
        + int 13 1
          adr int 13 1
            name opts Options 0 0
          const ctxtflags (8) int 6 0
      seq no type 10 1
        const (1) int 6 0
ecom to: 
name .t13 int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
* int 0 0
  + int 13 1
    adr int 13 1
      name opts Options 0 0
    const ctxtflags (8) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b10 big 0 0
    const (72) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b10 big 0 0
    const (76) int 6 0
ecom: 
call no type 10 2
  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const /lib/sh/profile string 1 0
      seq no type 10 1
        name nil list of ref Listnode 1 0
        seq no type 10 1
          const (0) int 6 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
const /lib/sh/profile string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b10 big 0 0
    const (72) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b10 big 0 0
    const (80) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b10 big 0 0
    const (88) int 6 0
ecom: 
= string 10 2
  name status string 0 0
  call string 10 2
    name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
    seq nothing 10 2
      name ctxt ref Context 0 0
      seq no type 10 2
        call list of ref Listnode 10 2
          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
          seq no type 10 1
            :: list of string 10 1
              + string 10 1
                + string 10 1
                  const { string 1 0
                  * string 0 0
                    + int 13 1
                      adr int 13 1
                        name opts Options 0 0
                      const carg (16) int 6 0
                const } string 1 0
              name argv list of string 0 0
        seq no type 10 1
          ! int 10 1
            name interactive int 0 0
ecom: 
call string 10 2
  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      call list of ref Listnode 10 2
        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
        seq no type 10 1
          :: list of string 10 1
            + string 10 1
              + string 10 1
                const { string 1 0
                * string 0 0
                  + int 13 1
                    adr int 13 1
                      name opts Options 0 0
                    const carg (16) int 6 0
              const } string 1 0
            name argv list of string 0 0
      seq no type 10 1
        ! int 10 1
          name interactive int 0 0
ecom to: 
name status string 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
  seq no type 10 1
    :: list of string 10 1
      + string 10 1
        + string 10 1
          const { string 1 0
          * string 0 0
            + int 13 1
              adr int 13 1
                name opts Options 0 0
              const carg (16) int 6 0
        const } string 1 0
      name argv list of string 0 0
ecom to: 
name .t12 list of ref Listnode 0 0
generate desc for big
ecom: 
:: list of string 10 1
  + string 10 1
    + string 10 1
      const { string 1 0
      * string 0 0
        + int 13 1
          adr int 13 1
            name opts Options 0 0
          const carg (16) int 6 0
    const } string 1 0
  name argv list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b14 big 0 0
    const (64) int 6 0
eacom: 
+ string 10 1
  + string 10 1
    const { string 1 0
    * string 0 0
      + int 13 1
        adr int 13 1
          name opts Options 0 0
        const carg (16) int 6 0
  const } string 1 0
ecom: 
+ string 10 1
  + string 10 1
    const { string 1 0
    * string 0 0
      + int 13 1
        adr int 13 1
          name opts Options 0 0
        const carg (16) int 6 0
  const } string 1 0
ecom to: 
name .t15 string 0 0
ecom: 
+ string 10 1
  const { string 1 0
  * string 0 0
    + int 13 1
      adr int 13 1
        name opts Options 0 0
      const carg (16) int 6 0
ecom to: 
name .t15 string 0 0
ecom: 
name argv list of string 0 0
ecom to: 
name .t16 list of string 0 0
ecom: 
= string 10 1
  name .t15 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t15 string 0 0
ecom: 
= list of string 10 1
  name .t16 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t16 list of string 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
name .t12 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b10 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t12 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t12 list of ref Listnode 0 0
ecom: 
! int 10 1
  name interactive int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b10 big 0 0
    const (80) int 6 0
ecom: 
raise nothing 10 1
  + string 10 1
    const fail: string 1 0
    name status string 0 0
eacom: 
+ string 10 1
  const fail: string 1 0
  name status string 0 0
ecom: 
+ string 10 1
  const fail: string 1 0
  name status string 0 0
ecom to: 
name .t16 string 0 0
ecom: 
= string 10 1
  name .t16 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t16 string 0 0
ecom: 
used string 10 2
  call string 10 2
    name setstatus fn(ctxt: ref Context, val: string): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name status string 0 0
ecom: 
call string 10 2
  name setstatus fn(ctxt: ref Context, val: string): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name status string 0 0
ecom to: 
name .t16 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b14 big 0 0
    const (64) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b14 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t16 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t16 string 0 0
ecom: 
= string 10 1
  name status string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name status string 0 0
eacom: 
call int 10 2
  name isconsole fn(fd: ref Sys->FD): int 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (0) int 6 0
ecom: 
call int 10 2
  name isconsole fn(fd: ref Sys->FD): int 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (0) int 6 0
ecom to: 
name .t13 int 0 0
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (0) int 6 0
ecom to: 
name .t16 ref Sys->FD 0 0
generate desc for big
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
name .t16 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b14 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t16 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t16 ref Sys->FD 0 0
ecom: 
|= int 10 1
  name interactive int 0 0
  const INTERACTIVE (1) int 6 0
ecom: 
used int 10 2
  call int 10 2
    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
    seq nothing 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name interactive int 0 0
        seq no type 10 1
          const (1) int 6 0
ecom: 
call int 10 2
  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name interactive int 0 0
      seq no type 10 1
        const (1) int 6 0
ecom to: 
name .t13 int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b14 big 0 0
    const (64) int 6 0
ecom: 
name interactive int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b14 big 0 0
    const (72) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b14 big 0 0
    const (76) int 6 0
ecom: 
call no type 10 2
  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (0) int 6 0
      seq no type 10 1
        const stdin string 1 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (0) int 6 0
ecom to: 
name .t16 ref Sys->FD 0 0
generate desc for big
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b14 big 0 0
    const (64) int 6 0
ecom: 
name .t16 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b14 big 0 0
    const (72) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t16 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t16 ref Sys->FD 0 0
ecom: 
const stdin string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b14 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b14 big 0 0
    const (88) int 6 0
ecom: 
used int 10 2
  call int 10 2
    name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
    seq nothing 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name interactive int 0 0
        seq no type 10 1
          const (1) int 6 0
ecom: 
call int 10 2
  name setoptions fn(ctxt: self ref Context, flags: int, on: int): int 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name interactive int 0 0
      seq no type 10 1
        const (1) int 6 0
ecom to: 
name .t13 int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b14 big 0 0
    const (64) int 6 0
ecom: 
name interactive int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b14 big 0 0
    const (72) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b14 big 0 0
    const (76) int 6 0
ecom: 
call no type 10 2
  name runscript fn(ctxt: ref Context, path: string, args: list of ref Listnode, reporterr: int) 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      hd string 10 1
        name argv list of string 0 0
      seq no type 10 2
        call list of ref Listnode 10 2
          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
          seq no type 10 1
            tl list of string 10 1
              name argv list of string 0 0
        seq no type 10 1
          const (1) int 6 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
  seq no type 10 1
    tl list of string 10 1
      name argv list of string 0 0
ecom to: 
name .t16 list of ref Listnode 0 0
generate desc for big
ecom: 
tl list of string 10 1
  name argv list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b10 big 0 0
    const (64) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b14 big 0 0
    const (64) int 6 0
ecom: 
hd string 10 1
  name argv list of string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b14 big 0 0
    const (72) int 6 0
ecom: 
name .t16 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b14 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t16 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t16 list of ref Listnode 0 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b14 big 0 0
    const (88) int 6 0
fn: init
64: argument drawcontext ref Draw->Context ref 1
72: argument argv list of string ref 24
80: local interactive int ref 7
84: local i int ref 6
88: local c int ref 2
92: local .t11 int ref 1
96: local .t13 int ref 1
104: local opts Options ref 12
128: local .b10 big ref 11
136: local ctxt ref Context ref 10
144: local .b14 big ref 7
152: local status string ref 4
160: local arg string ref 3
168: local .t12 string ref 1
176: local .t15 string ref 1
184: local .t16 list of string ref 1
generate desc for init
descmap offset 0
descmap drawcontext type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
descmap argv type list of string offset 72 (d->offset=72 start=0) returns 72
descmap interactive type int offset 80 (d->offset=80 start=0) returns -1
descmap i type int offset 84 (d->offset=84 start=0) returns -1
descmap c type int offset 88 (d->offset=88 start=0) returns -1
descmap .t11 type int offset 92 (d->offset=92 start=0) returns -1
descmap .t13 type int offset 96 (d->offset=96 start=0) returns -1
descmap adt offset 104
descmap offset 104
descmap lflag type int offset 104 (d->offset=0 start=104) returns -1
descmap nflag type int offset 108 (d->offset=4 start=104) returns -1
descmap ctxtflags type int offset 112 (d->offset=8 start=104) returns -1
descmap carg type string offset 120 (d->offset=16 start=104) returns 120
descmap opts type Options offset 104 (d->offset=104 start=0) returns 120
descmap .b10 type big offset 128 (d->offset=128 start=0) returns -1
descmap ctxt type ref Context offset 136 (d->offset=136 start=0) returns 136
descmap .b14 type big offset 144 (d->offset=144 start=0) returns -1
descmap status type string offset 152 (d->offset=152 start=0) returns 152
descmap arg type string offset 160 (d->offset=160 start=0) returns 160
descmap .t12 type string offset 168 (d->offset=168 start=0) returns 168
descmap .t15 type string offset 176 (d->offset=176 start=0) returns 176
descmap .t16 type list of string offset 184 (d->offset=184 start=0) returns 184
fncom: parse 3 4b8580
ecom: 
call no type 10 1
  name initialise fn() 11 1
generate desc for big
ecom: 
= ref YYLEX 10 2
  name lex ref YYLEX 0 0
  call ref YYLEX 10 2
    name initstring fn(s: string): ref YYLEX 11 1
    seq no type 10 1
      name s string 0 0
ecom: 
call ref YYLEX 10 2
  name initstring fn(s: string): ref YYLEX 11 1
  seq no type 10 1
    name s string 0 0
ecom to: 
name lex ref YYLEX 0 0
generate desc for big
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b17 big 0 0
    const (64) int 6 0
ecom: 
call (ref Node, string) 10 2
  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
  seq no type 10 1
    name lex ref YYLEX 0 0
    seq no type 10 1
      const  string 1 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
* (ref Node, string) 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name lex ref YYLEX 0 0
ecom to: 
* ref YYLEX 8 0
  + int 15 0
    name .b17 big 0 0
    const (64) int 6 0
ecom: 
const  string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b17 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b17 big 0 0
    const (80) int 6 0
fn: parse
64: argument s string ref 1
72: local .b17 big ref 3
80: local lex ref YYLEX ref 2
generate desc for parse
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap .b17 type big offset 72 (d->offset=72 start=0) returns -1
descmap lex type ref YYLEX offset 80 (d->offset=80 start=0) returns 80
fncom: system 2 4b74e0
ecom: 
call no type 10 1
  name initialise fn() 11 1
generate desc for big
ecom: 
= (ref Node, string) 10 2
  tuple (ref Node, string) 10 1
    seq nothing 10 1
      name n ref Node 0 0
      seq nothing 10 1
        name err string 0 0
  call (ref Node, string) 10 2
    name parse fn(s: string): (ref Node, string) 11 1
    seq no type 10 1
      name cmd string 0 0
ecom: 
call (ref Node, string) 10 2
  name parse fn(s: string): (ref Node, string) 11 1
  seq no type 10 1
    name cmd string 0 0
ecom to: 
name n (ref Node, string) 0 0
generate desc for big
ecom: 
name cmd string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b18 big 0 0
    const (64) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
call string 10 3
  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
  seq nothing 10 3
    call ref Context 10 2
      name new fn(drawcontext: ref Draw->Context): ref Context 11 1
      seq no type 10 1
        name drawctxt ref Draw->Context 0 0
    seq no type 10 2
      :: list of ref Listnode 10 1
        ref ref Listnode 10 1
          tuple Listnode 10 1
            seq no type 10 1
              name n ref Node 0 0
              seq no type 10 1
                name nil polymorphic type 1 0
        name nil polymorphic type 1 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
call ref Context 10 2
  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
  seq no type 10 1
    name drawctxt ref Draw->Context 0 0
ecom to: 
name .t19 ref Context 0 0
generate desc for big
ecom: 
name drawctxt ref Draw->Context 0 0
ecom to: 
* ref Draw->Context 8 0
  + int 15 0
    name .b20 big 0 0
    const (64) int 6 0
ecom: 
name .t19 ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b18 big 0 0
    const (64) int 6 0
ecom: 
= ref Context 10 1
  name .t19 ref Context 0 0
  name nil ref Context 1 0
ecom: 
name nil ref Context 1 0
ecom to: 
name .t19 ref Context 0 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name n ref Node 0 0
        seq no type 10 1
          name nil polymorphic type 1 0
  name nil polymorphic type 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b18 big 0 0
    const (72) int 6 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        name nil polymorphic type 1 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        name nil polymorphic type 1 0
ecom to: 
name .t19 ref Listnode 0 0
generate desc for Listnode
descmap adt offset 0
descmap offset 0
descmap cmd type ref Node offset 0 (d->offset=0 start=0) returns 0
descmap word type string offset 8 (d->offset=8 start=0) returns 8
generate desc for Listnode
	desc	$-1,16,"c0"
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name n ref Node 0 0
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
* Listnode 8 0
  name .t19 ref Listnode 0 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t19 ref Listnode 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t19 ref Listnode 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t21 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t19 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t19 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t21 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t21 list of ref Listnode 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b18 big 0 0
    const (80) int 6 0
ecom: 
= ref Node 10 1
  * ref Node 0 0
    adr int 13 1
      name n (ref Node, string) 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
* ref Node 0 0
  adr int 13 1
    name n (ref Node, string) 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name n (ref Node, string) 0 0
      const t1 (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name n (ref Node, string) 0 0
    const t1 (8) int 6 0
ecom: 
= string 10 1
  name err string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name err string 0 0
ecom: 
call string 10 2
  name failurestatus fn(e: string): string 11 1
  seq no type 10 1
    name e string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name e string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b20 big 0 0
    const (64) int 6 0
fn: system
64: argument drawctxt ref Draw->Context ref 1
72: argument cmd string ref 1
80: local e ref exception ref 2
88: local .b18 big ref 3
96: local n ref Node ref 3
104: local err string ref 3
112: local .b20 big ref 2
120: local .t19 ref Context ref 1
128: local .t21 list of ref Listnode ref 1
generate desc for system
descmap offset 0
descmap drawctxt type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
descmap cmd type string offset 72 (d->offset=72 start=0) returns 72
descmap e type ref exception offset 80 (d->offset=80 start=0) returns 80
descmap .b18 type big offset 88 (d->offset=88 start=0) returns -1
descmap n type ref Node offset 96 (d->offset=96 start=0) returns 96
descmap err type string offset 104 (d->offset=104 start=0) returns 104
descmap .b20 type big offset 112 (d->offset=112 start=0) returns -1
descmap .t19 type ref Context offset 120 (d->offset=120 start=0) returns 120
descmap .t21 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
generate desc for e
descmap offset 0
descmap n type ref Node offset 96 (d->offset=96 start=0) returns 96
descmap err type string offset 104 (d->offset=104 start=0) returns 104
fncom: run 2 4b7d80
ecom: 
call no type 10 1
  name initialise fn() 11 1
generate desc for big
ecom: 
call string 10 3
  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
  seq nothing 10 3
    call ref Context 10 2
      name new fn(drawcontext: ref Draw->Context): ref Context 11 1
      seq no type 10 1
        name drawctxt ref Draw->Context 0 0
    seq no type 10 2
      call list of ref Listnode 10 2
        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
        seq no type 10 1
          name argv list of string 0 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
call ref Context 10 2
  name new fn(drawcontext: ref Draw->Context): ref Context 11 1
  seq no type 10 1
    name drawctxt ref Draw->Context 0 0
ecom to: 
name .t23 ref Context 0 0
generate desc for big
ecom: 
name drawctxt ref Draw->Context 0 0
ecom to: 
* ref Draw->Context 8 0
  + int 15 0
    name .b24 big 0 0
    const (64) int 6 0
ecom: 
call list of ref Listnode 10 2
  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
  seq no type 10 1
    name argv list of string 0 0
ecom to: 
name .t25 list of ref Listnode 0 0
generate desc for big
ecom: 
name argv list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b24 big 0 0
    const (64) int 6 0
ecom: 
name .t23 ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b22 big 0 0
    const (64) int 6 0
ecom: 
= ref Context 10 1
  name .t23 ref Context 0 0
  name nil ref Context 1 0
ecom: 
name nil ref Context 1 0
ecom to: 
name .t23 ref Context 0 0
ecom: 
name .t25 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b22 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t25 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t25 list of ref Listnode 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b22 big 0 0
    const (80) int 6 0
ecom: 
call string 10 2
  name failurestatus fn(e: string): string 11 1
  seq no type 10 1
    name e string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name e string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b24 big 0 0
    const (64) int 6 0
fn: run
64: argument drawctxt ref Draw->Context ref 1
72: argument argv list of string ref 1
80: local e ref exception ref 2
88: local .b24 big ref 3
96: local .b22 big ref 2
104: local .t23 ref Context ref 1
112: local .t25 list of ref Listnode ref 1
generate desc for run
descmap offset 0
descmap drawctxt type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
descmap argv type list of string offset 72 (d->offset=72 start=0) returns 72
descmap e type ref exception offset 80 (d->offset=80 start=0) returns 80
descmap .b24 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b22 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t23 type ref Context offset 104 (d->offset=104 start=0) returns 104
descmap .t25 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
fncom: isconsole 2 417d28
ecom: 
= (int, Sys->Dir) 10 2
  tuple (int, Sys->Dir) 10 1
    seq nothing 10 1
      name ok1 int 0 0
      seq nothing 10 1
        name d1 Sys->Dir 0 0
  call (int, Sys->Dir) 10 2
    -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
      name sys Sys 1 0
      name fstat nothing 11 1
    seq no type 10 1
      name fd ref Sys->FD 0 0
ecom: 
call (int, Sys->Dir) 10 2
  -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
    name sys Sys 1 0
    name fstat nothing 11 1
  seq no type 10 1
    name fd ref Sys->FD 0 0
ecom to: 
name ok1 (int, Sys->Dir) 0 0
generate desc for big
ecom: 
name fd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b26 big 0 0
    const (64) int 6 0
ecom: 
= (int, Sys->Dir) 10 2
  tuple (int, Sys->Dir) 10 1
    seq nothing 10 1
      name ok2 int 0 0
      seq nothing 10 1
        name d2 Sys->Dir 0 0
  call (int, Sys->Dir) 10 2
    -> fn(s: string): (int, Sys->Dir) 12 1
      name sys Sys 1 0
      name stat nothing 11 1
    seq no type 10 1
      const /dev/cons string 1 0
ecom: 
call (int, Sys->Dir) 10 2
  -> fn(s: string): (int, Sys->Dir) 12 1
    name sys Sys 1 0
    name stat nothing 11 1
  seq no type 10 1
    const /dev/cons string 1 0
ecom to: 
name ok2 (int, Sys->Dir) 0 0
generate desc for big
ecom: 
const /dev/cons string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b26 big 0 0
    const (64) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
ecom: 
&& int 10 2
  == int 10 1
    * int 0 0
      + int 13 1
        adr int 13 1
          name d1 Sys->Dir 0 0
        const dtype (72) int 6 0
    * int 0 0
      + int 13 1
        adr int 13 1
          name d2 Sys->Dir 0 0
        const dtype (72) int 6 0
  == int 10 1
    * big 0 0
      + int 13 1
        adr int 13 1
          name d1 Sys->Dir 0 0
        const (32) int 6 0
    * big 0 0
      + int 13 1
        adr int 13 1
          name d2 Sys->Dir 0 0
        const (32) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
fn: isconsole
64: argument fd ref Sys->FD ref 1
72: local ok1 int ref 2
80: local d1 Sys->Dir ref 3
160: local ok2 int ref 2
168: local d2 Sys->Dir ref 3
248: local .b26 big ref 2
generate desc for isconsole
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap ok1 type int offset 72 (d->offset=72 start=0) returns -1
descmap adt offset 80
descmap offset 80
descmap name type string offset 80 (d->offset=0 start=80) returns 80
descmap uid type string offset 88 (d->offset=8 start=80) returns 88
descmap gid type string offset 96 (d->offset=16 start=80) returns 96
descmap muid type string offset 104 (d->offset=24 start=80) returns 104
descmap adt offset 112
descmap offset 112
descmap path type big offset 112 (d->offset=0 start=112) returns -1
descmap vers type int offset 120 (d->offset=8 start=112) returns -1
descmap qtype type int offset 124 (d->offset=12 start=112) returns -1
descmap qid type Sys->Qid offset 112 (d->offset=32 start=80) returns -1
descmap mode type int offset 128 (d->offset=48 start=80) returns -1
descmap atime type int offset 132 (d->offset=52 start=80) returns -1
descmap mtime type int offset 136 (d->offset=56 start=80) returns -1
descmap length type big offset 144 (d->offset=64 start=80) returns -1
descmap dtype type int offset 152 (d->offset=72 start=80) returns -1
descmap dev type int offset 156 (d->offset=76 start=80) returns -1
descmap d1 type Sys->Dir offset 80 (d->offset=80 start=0) returns 104
descmap ok2 type int offset 160 (d->offset=160 start=0) returns -1
descmap adt offset 168
descmap offset 168
descmap name type string offset 168 (d->offset=0 start=168) returns 168
descmap uid type string offset 176 (d->offset=8 start=168) returns 176
descmap gid type string offset 184 (d->offset=16 start=168) returns 184
descmap muid type string offset 192 (d->offset=24 start=168) returns 192
descmap adt offset 200
descmap offset 200
descmap path type big offset 200 (d->offset=0 start=200) returns -1
descmap vers type int offset 208 (d->offset=8 start=200) returns -1
descmap qtype type int offset 212 (d->offset=12 start=200) returns -1
descmap qid type Sys->Qid offset 200 (d->offset=32 start=168) returns -1
descmap mode type int offset 216 (d->offset=48 start=168) returns -1
descmap atime type int offset 220 (d->offset=52 start=168) returns -1
descmap mtime type int offset 224 (d->offset=56 start=168) returns -1
descmap length type big offset 232 (d->offset=64 start=168) returns -1
descmap dtype type int offset 240 (d->offset=72 start=168) returns -1
descmap dev type int offset 244 (d->offset=76 start=168) returns -1
descmap d2 type Sys->Dir offset 168 (d->offset=168 start=0) returns 192
descmap .b26 type big offset 248 (d->offset=248 start=0) returns -1
fncom: runscript 4 417de8
ecom: 
= ref Sys->FD 10 2
  name fd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name open nothing 11 1
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        const OREAD (0) int 6 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name open nothing 11 1
  seq no type 10 1
    name path string 0 0
    seq no type 10 1
      const OREAD (0) int 6 0
ecom to: 
name fd ref Sys->FD 0 0
generate desc for big
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b27 big 0 0
    const (64) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b27 big 0 0
    const (72) int 6 0
ecom: 
call no type 10 2
  name runfile fn(ctxt: ref Context, fd: ref Sys->FD, path: string, args: list of ref Listnode) 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name fd ref Sys->FD 0 0
      seq no type 10 1
        name path string 0 0
        seq no type 10 1
          name args list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b27 big 0 0
    const (64) int 6 0
ecom: 
name fd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b27 big 0 0
    const (72) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b27 big 0 0
    const (80) int 6 0
ecom: 
name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b27 big 0 0
    const (88) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const bad script path string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, nil: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: cannot open %s: %r string 1 0
            seq no type 10 1
              name path string 0 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, nil: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: cannot open %s: %r string 1 0
    seq no type 10 1
      name path string 0 0
ecom to: 
name .t28 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap type string offset 72 returns 72
generate desc for big
ecom: 
const sh: cannot open %s: %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b29 big 0 0
    const (64) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b29 big 0 0
    const (72) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b27 big 0 0
    const (64) int 6 0
ecom: 
const bad script path string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b27 big 0 0
    const (72) int 6 0
ecom: 
name .t28 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b27 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t28 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t28 string 0 0
ecom: 
= ref Sys->FD 10 1
  name fd ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name fd ref Sys->FD 0 0
ecom: 
raise nothing 10 1
  name .ex0 exception 0 0
fn: runscript
64: argument ctxt ref Context ref 2
72: argument path string ref 3
80: argument args list of ref Listnode ref 1
88: argument reporterr int ref 2
92: local .ex0 ref exception ref 1
96: local .b27 big ref 3
104: local fd ref Sys->FD ref 3
112: local .b29 big ref 1
120: local .t28 string ref 1
generate desc for runscript
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap path type string offset 72 (d->offset=72 start=0) returns 72
descmap args type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap reporterr type int offset 88 (d->offset=88 start=0) returns -1
descmap .ex0 type ref exception offset 92 (d->offset=92 start=0) returns 96
descmap .b27 type big offset 96 (d->offset=96 start=0) returns -1
descmap fd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
descmap .b29 type big offset 112 (d->offset=112 start=0) returns -1
descmap .t28 type string offset 120 (d->offset=120 start=0) returns 120
generate desc for .ex0
descmap offset 0
descmap fd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
fncom: runfile 3 417ea8
ecom: 
call no type 10 2
  name push fn(ctxt: self ref Context) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b30 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const 0 string 1 0
      seq no type 10 2
        call list of ref Listnode 10 2
          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
          seq no type 10 1
            :: list of string 10 1
              name path string 0 0
              name nil polymorphic type 1 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
  seq no type 10 1
    :: list of string 10 1
      name path string 0 0
      name nil polymorphic type 1 0
ecom to: 
name .t31 list of ref Listnode 0 0
generate desc for big
ecom: 
:: list of string 10 1
  name path string 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
= list of string 10 1
  name .t33 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b30 big 0 0
    const (64) int 6 0
ecom: 
const 0 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b30 big 0 0
    const (72) int 6 0
ecom: 
name .t31 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b30 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t31 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t31 list of ref Listnode 0 0
ecom: 
call no type 10 2
  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const * string 1 0
      seq no type 10 1
        name args list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
const * string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (72) int 6 0
ecom: 
name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b32 big 0 0
    const (80) int 6 0
ecom: 
= ref YYLEX 10 2
  name lex ref YYLEX 0 0
  call ref YYLEX 10 2
    name initfile fn(fd: ref Sys->FD, path: string): ref YYLEX 11 1
    seq no type 10 1
      name fd ref Sys->FD 0 0
      seq no type 10 1
        name path string 0 0
ecom: 
call ref YYLEX 10 2
  name initfile fn(fd: ref Sys->FD, path: string): ref YYLEX 11 1
  seq no type 10 1
    name fd ref Sys->FD 0 0
    seq no type 10 1
      name path string 0 0
ecom to: 
name lex ref YYLEX 0 0
generate desc for big
ecom: 
name fd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (72) int 6 0
ecom: 
= list of string 10 1
  name prompt list of string 0 0
    name lex ref YYLEX 0 0
  :: list of string 10 1
    const  string 1 0
    :: list of string 10 1
      const  string 1 0
      name nil polymorphic type 1 0
ecom: 
:: list of string 10 1
  const  string 1 0
  :: list of string 10 1
    const  string 1 0
    name nil polymorphic type 1 0
ecom to: 
name prompt list of string 0 0
  name lex ref YYLEX 0 0
ecom: 
:: list of string 10 1
  const  string 1 0
  name nil polymorphic type 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
= list of string 10 1
  name .t33 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
= int 10 1
  name interactive int 0 0
  & int 10 1
    * int 10 1
      + int 10 1
        * ref Localenv 10 1
          + int 10 1
            * ref Environment 8 0
              name ctxt ref Context 0 0
            const localenv (24) int 6 0
        const flags (16) int 6 0
    const INTERACTIVE (1) int 6 0
ecom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const INTERACTIVE (1) int 6 0
ecom to: 
name interactive int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t33 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t33 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t33 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t33 ref Localenv 0 0
ecom: 
= list of string 10 2
  name prompt list of string 0 0
  call list of string 10 2
    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
    seq no type 10 2
      call list of ref Listnode 10 2
        name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
        seq nothing 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            const prompt string 1 0
ecom: 
call list of string 10 2
  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
      seq nothing 10 1
        name ctxt ref Context 0 0
        seq no type 10 1
          const prompt string 1 0
ecom to: 
name prompt list of string 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const prompt string 1 0
ecom to: 
name .t33 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b30 big 0 0
    const (64) int 6 0
ecom: 
const prompt string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b30 big 0 0
    const (72) int 6 0
ecom: 
name .t33 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t33 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t33 list of ref Listnode 0 0
ecom: 
= list of string 10 1
  name prompt list of string 0 0
  :: list of string 10 1
    const ;  string 1 0
    :: list of string 10 1
      const  string 1 0
      name nil polymorphic type 1 0
ecom: 
:: list of string 10 1
  const ;  string 1 0
  :: list of string 10 1
    const  string 1 0
    name nil polymorphic type 1 0
ecom to: 
name prompt list of string 0 0
ecom: 
:: list of string 10 1
  const  string 1 0
  name nil polymorphic type 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
= list of string 10 1
  name .t33 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
      name sys Sys 1 0
      name fprint nothing 11 1
    seq no type 10 2
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (2) int 6 0
      seq no type 10 1
        const %s string 1 0
        seq no type 10 1
          hd string 10 1
            name prompt list of string 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
    name sys Sys 1 0
    name fprint nothing 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (2) int 6 0
    seq no type 10 1
      const %s string 1 0
      seq no type 10 1
        hd string 10 1
          name prompt list of string 0 0
ecom to: 
name .t34 int 0 0
generate desc for Sys->fprint
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (2) int 6 0
ecom to: 
name .t33 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b30 big 0 0
    const (64) int 6 0
ecom: 
name .t33 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t33 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t33 ref Sys->FD 0 0
ecom: 
const %s string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (72) int 6 0
ecom: 
hd string 10 1
  name prompt list of string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (80) int 6 0
eacom: 
tl list of string 10 1
  name prompt list of string 0 0
ecom: 
tl list of string 10 1
  name prompt list of string 0 0
ecom to: 
name .t33 list of string 0 0
ecom: 
= list of string 10 1
  name .t33 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
= list of string 10 2
  name prompt list of string 0 0
  :: list of string 10 2
    hd string 10 1
      name prompt list of string 0 0
    :: list of string 10 1
      const  string 1 0
      name nil polymorphic type 1 0
ecom: 
:: list of string 10 2
  hd string 10 1
    name prompt list of string 0 0
  :: list of string 10 1
    const  string 1 0
    name nil polymorphic type 1 0
ecom to: 
name prompt list of string 0 0
eacom: 
hd string 10 1
  name prompt list of string 0 0
ecom: 
hd string 10 1
  name prompt list of string 0 0
ecom to: 
name .t33 string 0 0
ecom: 
:: list of string 10 1
  const  string 1 0
  name nil polymorphic type 1 0
ecom to: 
name .t31 list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t31 list of string 0 0
ecom: 
= string 10 1
  name .t33 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t33 string 0 0
ecom: 
= list of string 10 1
  name .t31 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t31 list of string 0 0
ecom: 
= (ref Node, string) 10 2
  tuple (ref Node, string) 10 1
    seq nothing 10 1
      name n ref Node 0 0
      seq nothing 10 1
        name err string 0 0
  call (ref Node, string) 10 2
    name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
    seq no type 10 2
      name lex ref YYLEX 0 0
      seq no type 10 2
        hd string 10 1
          tl list of string 10 1
            name prompt list of string 0 0
        seq no type 10 1
          ! int 10 1
            name interactive int 0 0
ecom: 
call (ref Node, string) 10 2
  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
  seq no type 10 2
    name lex ref YYLEX 0 0
    seq no type 10 2
      hd string 10 1
        tl list of string 10 1
          name prompt list of string 0 0
      seq no type 10 1
        ! int 10 1
          name interactive int 0 0
ecom to: 
name n (ref Node, string) 0 0
generate desc for big
ecom: 
name lex ref YYLEX 0 0
ecom to: 
* ref YYLEX 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
hd string 10 1
  tl list of string 10 1
    name prompt list of string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (72) int 6 0
eacom: 
tl list of string 10 1
  name prompt list of string 0 0
ecom: 
tl list of string 10 1
  name prompt list of string 0 0
ecom to: 
name .t33 list of string 0 0
ecom: 
= list of string 10 1
  name .t33 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t33 list of string 0 0
ecom: 
! int 10 1
  name interactive int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b32 big 0 0
    const (80) int 6 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
      name sys Sys 1 0
      name fprint nothing 11 1
    seq no type 10 2
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (2) int 6 0
      seq no type 10 1
        const sh: %s
 string 1 0
        seq no type 10 1
          name err string 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
    name sys Sys 1 0
    name fprint nothing 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (2) int 6 0
    seq no type 10 1
      const sh: %s
 string 1 0
      seq no type 10 1
        name err string 0 0
ecom to: 
name .t34 int 0 0
generate desc for Sys->fprint
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (2) int 6 0
ecom to: 
name .t33 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b30 big 0 0
    const (64) int 6 0
ecom: 
name .t33 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t33 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t33 ref Sys->FD 0 0
ecom: 
const sh: %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (72) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (80) int 6 0
ecom: 
raise nothing 10 1
  const fail:parse error string 1 0
ecom: 
= string 10 2
  name laststatus string 0 0
  call string 10 2
    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name n ref Node 0 0
        seq no type 10 1
          const (0) int 6 0
ecom: 
call string 10 2
  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
name laststatus string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b32 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b32 big 0 0
    const (80) int 6 0
ecom: 
= string 10 2
  name laststatus string 0 0
  call string 10 2
    name failurestatus fn(e: string): string 11 1
    seq no type 10 1
      name e2 string 0 0
ecom: 
call string 10 2
  name failurestatus fn(e: string): string 11 1
  seq no type 10 1
    name e2 string 0 0
ecom to: 
name laststatus string 0 0
generate desc for big
ecom: 
name e2 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
= string 10 2
  name laststatus string 0 0
  call string 10 2
    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name n ref Node 0 0
        seq no type 10 1
          const (0) int 6 0
ecom: 
call string 10 2
  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
name laststatus string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b32 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b32 big 0 0
    const (80) int 6 0
ecom: 
used string 10 2
  call string 10 2
    name setstatus fn(ctxt: ref Context, val: string): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name laststatus string 0 0
ecom: 
call string 10 2
  name setstatus fn(ctxt: ref Context, val: string): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name laststatus string 0 0
ecom to: 
name .t33 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
name laststatus string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b32 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t33 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t33 string 0 0
eacom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const ERROREXIT (8) int 6 0
ecom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const ERROREXIT (8) int 6 0
ecom to: 
name .t34 int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t33 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t33 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t33 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t33 ref Localenv 0 0
ecom: 
= ref Node 10 1
  * ref Node 0 0
    adr int 13 1
      name n (ref Node, string) 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
* ref Node 0 0
  adr int 13 1
    name n (ref Node, string) 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name n (ref Node, string) 0 0
      const t1 (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name n (ref Node, string) 0 0
    const t1 (8) int 6 0
ecom: 
= string 10 1
  name err string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name err string 0 0
ecom: 
= ref Node 10 1
  * ref Node 0 0
    adr int 13 1
      name n (ref Node, string) 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
* ref Node 0 0
  adr int 13 1
    name n (ref Node, string) 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name n (ref Node, string) 0 0
      const t1 (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name n (ref Node, string) 0 0
    const t1 (8) int 6 0
ecom: 
= string 10 1
  name err string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name err string 0 0
ecom: 
raise nothing 10 1
  + string 10 1
    const fail: string 1 0
    name laststatus string 0 0
eacom: 
+ string 10 1
  const fail: string 1 0
  name laststatus string 0 0
ecom: 
+ string 10 1
  const fail: string 1 0
  name laststatus string 0 0
ecom to: 
name .t33 string 0 0
ecom: 
= string 10 1
  name .t33 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t33 string 0 0
ecom: 
call no type 10 2
  name pop fn(ctxt: self ref Context) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name laststatus string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name laststatus string 0 0
ecom: 
= list of string 10 1
  name prompt list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name prompt list of string 0 0
ecom: 
= ref YYLEX 10 1
  name lex ref YYLEX 0 0
  name nil ref YYLEX 1 0
ecom: 
name nil ref YYLEX 1 0
ecom to: 
name lex ref YYLEX 0 0
ecom: 
call no type 10 2
  name pop fn(ctxt: self ref Context) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b32 big 0 0
    const (64) int 6 0
ecom: 
raise nothing 10 1
  name .ex1 exception 0 0
fn: runfile
64: argument ctxt ref Context ref 15
72: argument fd ref Sys->FD ref 1
80: argument path string ref 2
88: argument args list of ref Listnode ref 1
96: local interactive int ref 5
100: local e2 ref exception ref 2
104: local .ex1 ref exception ref 1
108: local .t34 int ref 1
112: local .b32 big ref 13
120: local prompt list of string ref 9
128: local laststatus string ref 7
136: local .b30 big ref 5
144: local n ref Node ref 4
152: local err string ref 3
160: local lex ref YYLEX ref 3
168: local .t31 list of ref Listnode ref 1
176: local .t33 list of string ref 1
generate desc for runfile
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
descmap path type string offset 80 (d->offset=80 start=0) returns 80
descmap args type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
descmap interactive type int offset 96 (d->offset=96 start=0) returns -1
descmap e2 type ref exception offset 100 (d->offset=100 start=0) returns 104
descmap .ex1 type ref exception offset 104 (d->offset=104 start=0) returns 104
descmap .t34 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b32 type big offset 112 (d->offset=112 start=0) returns -1
descmap prompt type list of string offset 120 (d->offset=120 start=0) returns 120
descmap laststatus type string offset 128 (d->offset=128 start=0) returns 128
descmap .b30 type big offset 136 (d->offset=136 start=0) returns -1
descmap n type ref Node offset 144 (d->offset=144 start=0) returns 144
descmap err type string offset 152 (d->offset=152 start=0) returns 152
descmap lex type ref YYLEX offset 160 (d->offset=160 start=0) returns 160
descmap .t31 type list of ref Listnode offset 168 (d->offset=168 start=0) returns 168
descmap .t33 type list of string offset 176 (d->offset=176 start=0) returns 176
generate desc for .ex1
descmap offset 0
descmap n type ref Node offset 144 (d->offset=144 start=0) returns 144
descmap err type string offset 152 (d->offset=152 start=0) returns 152
descmap laststatus type string offset 128 (d->offset=128 start=0) returns 128
descmap prompt type list of string offset 120 (d->offset=120 start=0) returns 120
descmap lex type ref YYLEX offset 160 (d->offset=160 start=0) returns 160
fncom: nonexistent 5 417f68
ecom: 
= array of string 10 2
  name errs array of string 0 0
  array array of string 10 2
    const (2) int 6 0
    seq array initializers 10 2
      elem string 10 1
        seq nothing 10 1
          const (0) int 6 0
        const does not exist string 1 0
      seq no type 10 1
        elem string 10 1
          seq nothing 10 1
            const (1) int 6 0
          const directory entry not found string 1 0
ecom: 
array array of string 10 2
  const (2) int 6 0
  seq array initializers 10 2
    elem string 10 1
      seq nothing 10 1
        const (0) int 6 0
      const does not exist string 1 0
    seq no type 10 1
      elem string 10 1
        seq nothing 10 1
          const (1) int 6 0
        const directory entry not found string 1 0
ecom to: 
name errs array of string 0 0
generate desc for string
generate desc for string
	desc	$-1,8,"80"
generate desc for big
ecom: 
indx big 10 0
  name errs array of string 0 0
  const (0) int 6 0
ecom to: 
name .b35 big 0 0
ecom: 
const does not exist string 1 0
ecom to: 
* string 8 0
  name .b35 big 0 0
ecom: 
indx big 10 0
  name errs array of string 0 0
  const (1) int 6 0
ecom to: 
name .b35 big 0 0
ecom: 
const directory entry not found string 1 0
ecom to: 
* string 8 0
  name .b35 big 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  name errs array of string 0 0
ecom: 
len int 10 1
  name errs array of string 0 0
ecom to: 
name .t36 int 0 0
ecom: 
= int 10 1
  name j int 0 0
  len int 10 1
    * string 10 1
      indx big 10 1
        name errs array of string 0 0
        name i int 0 0
ecom: 
len int 10 1
  * string 10 1
    indx big 10 1
      name errs array of string 0 0
      name i int 0 0
ecom to: 
name j int 0 0
eacom: 
* string 10 1
  indx big 10 1
    name errs array of string 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  name errs array of string 0 0
  name i int 0 0
ecom to: 
name .b35 big 0 0
eacom: 
len int 10 1
  name e string 0 0
ecom: 
len int 10 1
  name e string 0 0
ecom to: 
name .t36 int 0 0
eacom: 
slice string 10 2
  name e string 0 0
  seq no type 10 2
    - int 10 1
      len int 10 1
        name e string 0 0
      name j int 0 0
    nothing no type 10 1
ecom: 
slice string 10 2
  name e string 0 0
  seq no type 10 2
    - int 10 1
      len int 10 1
        name e string 0 0
      name j int 0 0
    nothing no type 10 1
ecom to: 
name .t37 string 0 0
ecom: 
len int 10 1
  name e string 0 0
ecom to: 
name .t36 int 0 0
eacom: 
- int 10 1
  len int 10 1
    name e string 0 0
  name j int 0 0
ecom: 
- int 10 1
  len int 10 1
    name e string 0 0
  name j int 0 0
ecom to: 
name .t38 int 0 0
ecom: 
len int 10 1
  name e string 0 0
ecom to: 
name .t38 int 0 0
ecom: 
name e string 0 0
ecom to: 
name .t37 string 0 0
ecom: 
* string 10 1
  indx big 10 1
    name errs array of string 0 0
    name i int 0 0
ecom to: 
name .t39 string 0 0
eacom: 
* string 10 1
  indx big 10 1
    name errs array of string 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  name errs array of string 0 0
  name i int 0 0
ecom to: 
name .b35 big 0 0
ecom: 
= string 10 1
  name .t37 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t37 string 0 0
ecom: 
= string 10 1
  name .t39 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t39 string 0 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
fn: nonexistent
64: argument e string ref 3
72: local i int ref 5
76: local j int ref 3
80: local .t36 int ref 1
84: local .t38 int ref 1
88: local errs array of string ref 4
96: local .b35 big ref 3
104: local .t37 string ref 1
112: local .t39 string ref 1
generate desc for nonexistent
descmap offset 0
descmap e type string offset 64 (d->offset=64 start=0) returns 64
descmap i type int offset 72 (d->offset=72 start=0) returns -1
descmap j type int offset 76 (d->offset=76 start=0) returns -1
descmap .t36 type int offset 80 (d->offset=80 start=0) returns -1
descmap .t38 type int offset 84 (d->offset=84 start=0) returns -1
descmap errs type array of string offset 88 (d->offset=88 start=0) returns 88
descmap .b35 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t37 type string offset 104 (d->offset=104 start=0) returns 104
descmap .t39 type string offset 112 (d->offset=112 start=0) returns 112
fncom: pipe2cmd 2 418028
fncom: walk 5 4180e8
ecom: 
= string 10 2
  name status string 0 0
  call string 10 2
    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        seq no type 10 1
          const (0) int 6 0
ecom: 
call string 10 2
  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
name status string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b40 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b40 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b40 big 0 0
    const (80) int 6 0
eacom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const ERROREXIT (8) int 6 0
ecom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const ERROREXIT (8) int 6 0
ecom to: 
name .t41 int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t42 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t42 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t42 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t42 ref Localenv 0 0
ecom: 
raise nothing 10 1
  + string 10 1
    const fail: string 1 0
    name status string 0 0
eacom: 
+ string 10 1
  const fail: string 1 0
  name status string 0 0
ecom: 
+ string 10 1
  const fail: string 1 0
  name status string 0 0
ecom to: 
name .t42 string 0 0
ecom: 
= string 10 1
  name .t42 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t42 string 0 0
ecom: 
used string 10 2
  call string 10 2
    name setstatus fn(ctxt: ref Context, val: string): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name status string 0 0
ecom: 
call string 10 2
  name setstatus fn(ctxt: ref Context, val: string): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name status string 0 0
ecom to: 
name .t42 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b40 big 0 0
    const (64) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b40 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t42 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t42 string 0 0
ecom: 
= ref Node 10 1
  name n ref Node 0 0
  * ref Node 8 0
    + int 15 1
      name n ref Node 0 0
      const right (16) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
name n ref Node 0 0
ecom: 
= string 10 1
  name status string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name status string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
call string 10 2
  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      call list of int 10 2
        name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
        seq no type 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            name n ref Node 0 0
            seq no type 10 1
              name nil ref Sys->FD 1 0
              seq no type 10 1
                const (-1) int 6 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
call list of int 10 2
  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        name nil ref Sys->FD 1 0
        seq no type 10 1
          const (-1) int 6 0
ecom to: 
name .t42 list of int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b43 big 0 0
    const (64) int 6 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b43 big 0 0
    const (72) int 6 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b43 big 0 0
    const (80) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b43 big 0 0
    const (88) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b40 big 0 0
    const (64) int 6 0
ecom: 
name .t42 list of int 0 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b40 big 0 0
    const (72) int 6 0
ecom: 
= list of int 10 1
  name .t42 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t42 list of int 0 0
ecom: 
used list of ref Listnode 10 2
  call list of ref Listnode 10 2
    name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name n ref Node 0 0
ecom: 
call list of ref Listnode 10 2
  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name n ref Node 0 0
ecom to: 
name .t42 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b43 big 0 0
    const (64) int 6 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b43 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t42 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t42 list of ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= int 10 1
  name bg int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name bg int 0 0
ecom: 
= int 10 1
  name bg int 0 0
  const (1) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
name bg int 0 0
ecom: 
= ref Node 10 3
  name n ref Node 0 0
  if ref Node 10 3
    || int 10 2
      == int 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        name nil ref Node 1 0
      != int 10 1
        * int 10 1
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const left (8) int 6 0
        const n_PIPE (9) int 6 0
    seq ref Node 10 2
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      ref ref Node 10 2
        tuple Node 10 2
          seq no type 10 2
            const n_ADJ (10) int 6 0
            seq no type 10 2
              ref ref Node 10 1
                tuple Node 10 1
                  seq no type 10 1
                    const n_BLOCK (0) int 6 0
                    seq no type 10 1
                      * ref Node 8 0
                        + int 15 1
                          name n ref Node 0 0
                          const left (8) int 6 0
                      seq no type 10 1
                        name nil ref Node 1 0
                        seq no type 10 1
                          name nil polymorphic type 1 0
                          seq no type 10 1
                            name nil polymorphic type 1 0
              seq no type 10 2
                ref ref Node 10 2
                  tuple Node 10 2
                    seq no type 10 2
                      const n_VAR (1) int 6 0
                      seq no type 10 2
                        ref ref Node 10 1
                          tuple Node 10 1
                            seq no type 10 1
                              const n_WORD (11) int 6 0
                              seq no type 10 1
                                name nil polymorphic type 1 0
                                seq no type 10 1
                                  name nil polymorphic type 1 0
                                  seq no type 10 1
                                    const * string 1 0
                                    seq no type 10 1
                                      name nil polymorphic type 1 0
                        seq no type 10 1
                          name nil ref Node 1 0
                          seq no type 10 1
                            name nil polymorphic type 1 0
                            seq no type 10 1
                              name nil polymorphic type 1 0
                seq no type 10 1
                  name nil polymorphic type 1 0
                  seq no type 10 1
                    name nil polymorphic type 1 0
ecom: 
if ref Node 10 3
  || int 10 2
    == int 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      name nil ref Node 1 0
    != int 10 1
      * int 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
      const n_PIPE (9) int 6 0
  seq ref Node 10 2
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
    ref ref Node 10 2
      tuple Node 10 2
        seq no type 10 2
          const n_ADJ (10) int 6 0
          seq no type 10 2
            ref ref Node 10 1
              tuple Node 10 1
                seq no type 10 1
                  const n_BLOCK (0) int 6 0
                  seq no type 10 1
                    * ref Node 8 0
                      + int 15 1
                        name n ref Node 0 0
                        const left (8) int 6 0
                    seq no type 10 1
                      name nil ref Node 1 0
                      seq no type 10 1
                        name nil polymorphic type 1 0
                        seq no type 10 1
                          name nil polymorphic type 1 0
            seq no type 10 2
              ref ref Node 10 2
                tuple Node 10 2
                  seq no type 10 2
                    const n_VAR (1) int 6 0
                    seq no type 10 2
                      ref ref Node 10 1
                        tuple Node 10 1
                          seq no type 10 1
                            const n_WORD (11) int 6 0
                            seq no type 10 1
                              name nil polymorphic type 1 0
                              seq no type 10 1
                                name nil polymorphic type 1 0
                                seq no type 10 1
                                  const * string 1 0
                                  seq no type 10 1
                                    name nil polymorphic type 1 0
                      seq no type 10 1
                        name nil ref Node 1 0
                        seq no type 10 1
                          name nil polymorphic type 1 0
                          seq no type 10 1
                            name nil polymorphic type 1 0
              seq no type 10 1
                name nil polymorphic type 1 0
                seq no type 10 1
                  name nil polymorphic type 1 0
ecom to: 
name n ref Node 0 0
eacom: 
* int 10 1
  * ref Node 8 0
    + int 15 1
      name n ref Node 0 0
      const left (8) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
name .t42 ref Node 0 0
ecom: 
= ref Node 10 1
  name .t42 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t42 ref Node 0 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
name n ref Node 0 0
ecom: 
ref ref Node 10 2
  tuple Node 10 2
    seq no type 10 2
      const n_ADJ (10) int 6 0
      seq no type 10 2
        ref ref Node 10 1
          tuple Node 10 1
            seq no type 10 1
              const n_BLOCK (0) int 6 0
              seq no type 10 1
                * ref Node 8 0
                  + int 15 1
                    name n ref Node 0 0
                    const left (8) int 6 0
                seq no type 10 1
                  name nil ref Node 1 0
                  seq no type 10 1
                    name nil polymorphic type 1 0
                    seq no type 10 1
                      name nil polymorphic type 1 0
        seq no type 10 2
          ref ref Node 10 2
            tuple Node 10 2
              seq no type 10 2
                const n_VAR (1) int 6 0
                seq no type 10 2
                  ref ref Node 10 1
                    tuple Node 10 1
                      seq no type 10 1
                        const n_WORD (11) int 6 0
                        seq no type 10 1
                          name nil polymorphic type 1 0
                          seq no type 10 1
                            name nil polymorphic type 1 0
                            seq no type 10 1
                              const * string 1 0
                              seq no type 10 1
                                name nil polymorphic type 1 0
                  seq no type 10 1
                    name nil ref Node 1 0
                    seq no type 10 1
                      name nil polymorphic type 1 0
                      seq no type 10 1
                        name nil polymorphic type 1 0
          seq no type 10 1
            name nil polymorphic type 1 0
            seq no type 10 1
              name nil polymorphic type 1 0
ecom to: 
name n ref Node 0 0
generate desc for Node
descmap adt offset 0
descmap offset 0
descmap ntype type int offset 0 (d->offset=0 start=0) returns -1
descmap left type ref Node offset 8 (d->offset=8 start=0) returns 8
descmap right type ref Node offset 16 (d->offset=16 start=0) returns 16
descmap word type string offset 24 (d->offset=24 start=0) returns 24
descmap redir type ref Redir offset 32 (d->offset=32 start=0) returns 32
generate desc for Node
	desc	$-1,40,"78"
ecom: 
tuple Node 10 2
  seq no type 10 2
    const n_ADJ (10) int 6 0
    seq no type 10 2
      ref ref Node 10 1
        tuple Node 10 1
          seq no type 10 1
            const n_BLOCK (0) int 6 0
            seq no type 10 1
              * ref Node 8 0
                + int 15 1
                  name n ref Node 0 0
                  const left (8) int 6 0
              seq no type 10 1
                name nil ref Node 1 0
                seq no type 10 1
                  name nil polymorphic type 1 0
                  seq no type 10 1
                    name nil polymorphic type 1 0
      seq no type 10 2
        ref ref Node 10 2
          tuple Node 10 2
            seq no type 10 2
              const n_VAR (1) int 6 0
              seq no type 10 2
                ref ref Node 10 1
                  tuple Node 10 1
                    seq no type 10 1
                      const n_WORD (11) int 6 0
                      seq no type 10 1
                        name nil polymorphic type 1 0
                        seq no type 10 1
                          name nil polymorphic type 1 0
                          seq no type 10 1
                            const * string 1 0
                            seq no type 10 1
                              name nil polymorphic type 1 0
                seq no type 10 1
                  name nil ref Node 1 0
                  seq no type 10 1
                    name nil polymorphic type 1 0
                    seq no type 10 1
                      name nil polymorphic type 1 0
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            name nil polymorphic type 1 0
ecom to: 
* Node 8 0
  name .t42 ref Node 0 0
ecom: 
const n_ADJ (10) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t42 ref Node 0 0
    const (0) int 6 0
ecom: 
ref ref Node 10 1
  tuple Node 10 1
    seq no type 10 1
      const n_BLOCK (0) int 6 0
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        seq no type 10 1
          name nil ref Node 1 0
          seq no type 10 1
            name nil polymorphic type 1 0
            seq no type 10 1
              name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t42 ref Node 0 0
    const (8) int 6 0
generate desc for Node
ecom: 
tuple Node 10 1
  seq no type 10 1
    const n_BLOCK (0) int 6 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 1
        name nil ref Node 1 0
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            name nil polymorphic type 1 0
ecom to: 
* Node 8 0
  name .t44 ref Node 0 0
ecom: 
const n_BLOCK (0) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (0) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (8) int 6 0
ecom: 
name nil ref Node 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (16) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (24) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Redir 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (32) int 6 0
ecom: 
= ref Node 10 1
  name .t44 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t44 ref Node 0 0
ecom: 
ref ref Node 10 2
  tuple Node 10 2
    seq no type 10 2
      const n_VAR (1) int 6 0
      seq no type 10 2
        ref ref Node 10 1
          tuple Node 10 1
            seq no type 10 1
              const n_WORD (11) int 6 0
              seq no type 10 1
                name nil polymorphic type 1 0
                seq no type 10 1
                  name nil polymorphic type 1 0
                  seq no type 10 1
                    const * string 1 0
                    seq no type 10 1
                      name nil polymorphic type 1 0
        seq no type 10 1
          name nil ref Node 1 0
          seq no type 10 1
            name nil polymorphic type 1 0
            seq no type 10 1
              name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t42 ref Node 0 0
    const (16) int 6 0
generate desc for Node
ecom: 
tuple Node 10 2
  seq no type 10 2
    const n_VAR (1) int 6 0
    seq no type 10 2
      ref ref Node 10 1
        tuple Node 10 1
          seq no type 10 1
            const n_WORD (11) int 6 0
            seq no type 10 1
              name nil polymorphic type 1 0
              seq no type 10 1
                name nil polymorphic type 1 0
                seq no type 10 1
                  const * string 1 0
                  seq no type 10 1
                    name nil polymorphic type 1 0
      seq no type 10 1
        name nil ref Node 1 0
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            name nil polymorphic type 1 0
ecom to: 
* Node 8 0
  name .t44 ref Node 0 0
ecom: 
const n_VAR (1) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (0) int 6 0
ecom: 
ref ref Node 10 1
  tuple Node 10 1
    seq no type 10 1
      const n_WORD (11) int 6 0
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            const * string 1 0
            seq no type 10 1
              name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (8) int 6 0
generate desc for Node
ecom: 
tuple Node 10 1
  seq no type 10 1
    const n_WORD (11) int 6 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          const * string 1 0
          seq no type 10 1
            name nil polymorphic type 1 0
ecom to: 
* Node 8 0
  name .t45 ref Node 0 0
ecom: 
const n_WORD (11) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t45 ref Node 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t45 ref Node 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t45 ref Node 0 0
    const (16) int 6 0
ecom: 
const * string 1 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t45 ref Node 0 0
    const (24) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Redir 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t45 ref Node 0 0
    const (32) int 6 0
ecom: 
= ref Node 10 1
  name .t45 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t45 ref Node 0 0
ecom: 
name nil ref Node 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (16) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (24) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Redir 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t44 ref Node 0 0
    const (32) int 6 0
ecom: 
= ref Node 10 1
  name .t44 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t44 ref Node 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t42 ref Node 0 0
    const (24) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Redir 8 0
  + int 15 1
    adr int 15 1
      * Node 8 0
        name .t42 ref Node 0 0
    const (32) int 6 0
ecom: 
= ref Node 10 1
  name .t42 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t42 ref Node 0 0
ecom: 
= ref Redirlist 10 1
  name redirs ref Redirlist 0 0
  ref ref Redirlist 10 1
    tuple Redirlist 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
ecom: 
ref ref Redirlist 10 1
  tuple Redirlist 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
name redirs ref Redirlist 0 0
generate desc for Redirlist
descmap adt offset 0
descmap offset 0
descmap r type list of Redirword offset 0 (d->offset=0 start=0) returns 0
generate desc for Redirlist
	desc	$-1,8,"80"
ecom: 
tuple Redirlist 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
ecom to: 
* Redirlist 8 0
  name .t45 ref Redirlist 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* list of Redirword 8 0
  + int 15 1
    adr int 15 1
      * Redirlist 8 0
        name .t45 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .t45 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .t45 ref Redirlist 0 0
ecom: 
= list of ref Listnode 10 2
  name line list of ref Listnode 0 0
    name redirs ref Redirlist 0 0
  call list of ref Listnode 10 2
    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 2
      call list of ref Listnode 10 2
        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
        seq no type 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            name n ref Node 0 0
            seq no type 10 1
              name redirs ref Redirlist 0 0
              seq no type 10 1
                name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
      seq no type 10 1
        name ctxt ref Context 0 0
        seq no type 10 1
          name n ref Node 0 0
          seq no type 10 1
            name redirs ref Redirlist 0 0
            seq no type 10 1
              name nil list of ref Listnode 1 0
ecom to: 
name line list of ref Listnode 0 0
  name redirs ref Redirlist 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name .t45 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b40 big 0 0
    const (64) int 6 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b40 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b40 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b40 big 0 0
    const (88) int 6 0
ecom: 
name .t45 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b43 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t45 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t45 list of ref Listnode 0 0
ecom: 
= chan of (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  chan chan of (int, ref Expropagate) 10 1
    const (0) int 6 0
ecom: 
chan chan of (int, ref Expropagate) 10 1
  const (0) int 6 0
ecom to: 
name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, ref Expropagate)
	desc	$-1,16,"40"
ecom: 
spawn nothing 10 2
  call no type 10 2
    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        const (1) int 6 0
        seq no type 10 1
          name line list of ref Listnode 0 0
          seq no type 10 1
            name redirs ref Redirlist 0 0
            seq no type 10 1
              name startchan chan of (int, ref Expropagate) 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b43 big 0 0
    const (64) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b43 big 0 0
    const (72) int 6 0
ecom: 
name line list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b43 big 0 0
    const (80) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b43 big 0 0
    const (88) int 6 0
ecom: 
name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
* chan of (int, ref Expropagate) 8 0
  + int 15 0
    name .b43 big 0 0
    const (96) int 6 0
ecom: 
= (int, ref Expropagate) 10 2
  tuple (int, ref Expropagate) 10 1
    seq nothing 10 1
      name pid int 0 0
      seq nothing 10 1
        name nil polymorphic type 1 0
    name startchan chan of (int, ref Expropagate) 0 0
  <- (int, ref Expropagate) 10 1
    name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
ecom: 
<- (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
name .b46 (int, ref Expropagate) 0 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b46 (int, ref Expropagate) 0 0
      const t1 (8) int 6 0
  name nil ref Expropagate 1 0
ecom: 
name nil ref Expropagate 1 0
ecom to: 
* ref Expropagate 0 0
  + int 13 1
    adr int 13 1
      name .b46 (int, ref Expropagate) 0 0
    const t1 (8) int 6 0
ecom: 
= ref Redirlist 10 1
  name redirs ref Redirlist 0 0
  name nil polymorphic type 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name redirs ref Redirlist 0 0
ecom: 
call no type 10 2
  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const apid string 1 0
      seq no type 10 1
        :: list of ref Listnode 10 1
          ref ref Listnode 10 1
            tuple Listnode 10 1
              seq no type 10 1
                name nil polymorphic type 1 0
                seq no type 10 1
                  cast string 10 1
                    name pid int 0 0
          name nil polymorphic type 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b43 big 0 0
    const (64) int 6 0
ecom: 
const apid string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b43 big 0 0
    const (72) int 6 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          cast string 10 1
            name pid int 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b43 big 0 0
    const (80) int 6 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        cast string 10 1
          name pid int 0 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        cast string 10 1
          name pid int 0 0
ecom to: 
name .t45 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      cast string 10 1
        name pid int 0 0
ecom to: 
* Listnode 8 0
  name .t45 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t45 ref Listnode 0 0
    const (0) int 6 0
ecom: 
cast string 10 1
  name pid int 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t45 ref Listnode 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t44 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t45 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t45 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t44 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t44 list of ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= chan of (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  name nil chan of (int, ref Expropagate) 1 0
ecom: 
name nil chan of (int, ref Expropagate) 1 0
ecom to: 
name startchan chan of (int, ref Expropagate) 0 0
ecom: 
call string 10 2
  name runsync fn(ctxt: ref Context, argv: list of ref Listnode, redirs: ref Redirlist, last: int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name line list of ref Listnode 0 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name last int 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b43 big 0 0
    const (64) int 6 0
ecom: 
name line list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b43 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b43 big 0 0
    const (80) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b43 big 0 0
    const (88) int 6 0
ecom: 
= list of ref Listnode 10 1
  name line list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name line list of ref Listnode 0 0
ecom: 
= ref Redirlist 10 1
  name redirs ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name redirs ref Redirlist 0 0
fn: walk
64: argument ctxt ref Context ref 11
72: argument n ref Node ref 14
80: argument last int ref 1
84: local bg int ref 3
88: local pid int ref 3
92: local .t41 int ref 1
96: local .b43 big ref 6
104: local redirs ref Redirlist ref 5
112: local .b40 big ref 4
120: local status string ref 4
128: local line list of ref Listnode ref 3
136: local startchan chan of (int, ref Expropagate) ref 3
144: local .t42 ref Localenv ref 1
152: local .t44 ref Node ref 1
160: local .t45 ref Node ref 1
168: local .b46 (int, ref Expropagate) ref 1
generate desc for walk
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
descmap last type int offset 80 (d->offset=80 start=0) returns -1
descmap bg type int offset 84 (d->offset=84 start=0) returns -1
descmap pid type int offset 88 (d->offset=88 start=0) returns -1
descmap .t41 type int offset 92 (d->offset=92 start=0) returns -1
descmap .b43 type big offset 96 (d->offset=96 start=0) returns -1
descmap redirs type ref Redirlist offset 104 (d->offset=104 start=0) returns 104
descmap .b40 type big offset 112 (d->offset=112 start=0) returns -1
descmap status type string offset 120 (d->offset=120 start=0) returns 120
descmap line type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
descmap .t42 type ref Localenv offset 144 (d->offset=144 start=0) returns 144
descmap .t44 type ref Node offset 152 (d->offset=152 start=0) returns 152
descmap .t45 type ref Node offset 160 (d->offset=160 start=0) returns 160
descmap adt offset 168
descmap offset 168
descmap t0 type int offset 168 (d->offset=0 start=168) returns -1
descmap t1 type ref Expropagate offset 176 (d->offset=8 start=168) returns 176
descmap .b46 type (int, ref Expropagate) offset 168 (d->offset=168 start=0) returns 176
fncom: assign 3 4181a8
ecom: 
= ref Redirlist 10 1
  name redirs ref Redirlist 0 0
  ref ref Redirlist 10 1
    name Redirlist Redirlist 10 1
ecom: 
ref ref Redirlist 10 1
  name Redirlist Redirlist 10 1
ecom to: 
name redirs ref Redirlist 0 0
generate desc for Redirlist
eacom: 
* int 10 1
  * ref Node 8 0
    + int 15 1
      name n ref Node 0 0
      const right (16) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
name .t47 ref Node 0 0
ecom: 
= ref Node 10 1
  name .t47 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t47 ref Node 0 0
eacom: 
* int 10 1
  * ref Node 8 0
    + int 15 1
      name n ref Node 0 0
      const right (16) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
name .t47 ref Node 0 0
ecom: 
= ref Node 10 1
  name .t47 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t47 ref Node 0 0
ecom: 
= list of ref Listnode 10 2
  name val list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const right (16) int 6 0
ecom: 
call list of ref Listnode 10 2
  name assign fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const right (16) int 6 0
ecom to: 
name val list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b48 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b48 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 2
  name val list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 2
      call list of ref Listnode 10 2
        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
        seq no type 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            * ref Node 8 0
              + int 15 1
                name n ref Node 0 0
                const right (16) int 6 0
            seq no type 10 1
              name redirs ref Redirlist 0 0
              seq no type 10 1
                name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
      seq no type 10 1
        name ctxt ref Context 0 0
        seq no type 10 1
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const right (16) int 6 0
          seq no type 10 1
            name redirs ref Redirlist 0 0
            seq no type 10 1
              name nil list of ref Listnode 1 0
ecom to: 
name val list of ref Listnode 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const right (16) int 6 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name .t47 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b49 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b49 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b49 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b49 big 0 0
    const (88) int 6 0
ecom: 
name .t47 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b48 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t47 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t47 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 2
  name vars list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        seq no type 10 1
          name redirs ref Redirlist 0 0
          seq no type 10 1
            name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name vars list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b49 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b49 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b49 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b49 big 0 0
    const (88) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad assign string 1 0
      seq no type 10 1
        const sh: nil variable name string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b49 big 0 0
    const (64) int 6 0
ecom: 
const bad assign string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (72) int 6 0
ecom: 
const sh: nil variable name string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (80) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad assign string 1 0
      seq no type 10 1
        const sh: redirections not allowed in assignment string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b49 big 0 0
    const (64) int 6 0
ecom: 
const bad assign string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (72) int 6 0
ecom: 
const sh: redirections not allowed in assignment string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  name tval list of ref Listnode 0 0
  name val list of ref Listnode 0 0
ecom: 
name val list of ref Listnode 0 0
ecom to: 
name tval list of ref Listnode 0 0
ecom: 
= string 10 2
  name vname string 0 0
  call string 10 2
    name deglob fn(s: string): string 11 1
    seq no type 10 1
      * string 10 1
        + int 10 1
          hd ref Listnode 10 1
            name vars list of ref Listnode 0 0
          const word (8) int 6 0
ecom: 
call string 10 2
  name deglob fn(s: string): string 11 1
  seq no type 10 1
    * string 10 1
      + int 10 1
        hd ref Listnode 10 1
          name vars list of ref Listnode 0 0
        const word (8) int 6 0
ecom to: 
name vname string 0 0
generate desc for big
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name vars list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (64) int 6 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name vars list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name vars list of ref Listnode 0 0
ecom to: 
name .t47 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t47 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t47 ref Listnode 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad assign string 1 0
      seq no type 10 1
        const sh: bad variable name string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b49 big 0 0
    const (64) int 6 0
ecom: 
const bad assign string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (72) int 6 0
ecom: 
const sh: bad variable name string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  name v list of ref Listnode 0 0
  name nil polymorphic type 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name v list of ref Listnode 0 0
eacom: 
tl list of ref Listnode 10 1
  name vars list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name vars list of ref Listnode 0 0
ecom to: 
name .t47 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t47 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t47 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name v list of ref Listnode 0 0
  name tval list of ref Listnode 0 0
ecom: 
name tval list of ref Listnode 0 0
ecom to: 
name v list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name v list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    hd ref Listnode 10 1
      name tval list of ref Listnode 0 0
    name nil polymorphic type 1 0
ecom: 
:: list of ref Listnode 10 1
  hd ref Listnode 10 1
    name tval list of ref Listnode 0 0
  name nil polymorphic type 1 0
ecom to: 
name v list of ref Listnode 0 0
eacom: 
hd ref Listnode 10 1
  name tval list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name tval list of ref Listnode 0 0
ecom to: 
name .t47 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t50 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t47 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t47 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t50 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t50 list of ref Listnode 0 0
ecom: 
call no type 10 2
  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name vname string 0 0
      seq no type 10 1
        name v list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b49 big 0 0
    const (64) int 6 0
ecom: 
name vname string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (72) int 6 0
ecom: 
name v list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b49 big 0 0
    const (80) int 6 0
ecom: 
call no type 10 2
  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name vname string 0 0
      seq no type 10 1
        name v list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b49 big 0 0
    const (64) int 6 0
ecom: 
name vname string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b49 big 0 0
    const (72) int 6 0
ecom: 
name v list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b49 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  name tval list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name tval list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name tval list of ref Listnode 0 0
ecom to: 
name tval list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name v list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name v list of ref Listnode 0 0
ecom: 
= string 10 1
  name vname string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name vname string 0 0
ecom: 
= list of ref Listnode 10 1
  name vars list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name vars list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name vars list of ref Listnode 0 0
ecom to: 
name vars list of ref Listnode 0 0
ecom: 
name val list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
fn: assign
64: argument ctxt ref Context ref 8
72: argument n ref Node ref 7
80: local .b49 big ref 8
88: local tval list of ref Listnode ref 7
96: local vars list of ref Listnode ref 7
104: local v list of ref Listnode ref 5
112: local redirs ref Redirlist ref 4
120: local val list of ref Listnode ref 4
128: local vname string ref 4
136: local .b48 big ref 2
144: local .t47 ref Node ref 1
152: local .t50 list of ref Listnode ref 1
generate desc for assign
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
descmap .b49 type big offset 80 (d->offset=80 start=0) returns -1
descmap tval type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
descmap vars type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
descmap v type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
descmap redirs type ref Redirlist offset 112 (d->offset=112 start=0) returns 112
descmap val type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
descmap vname type string offset 128 (d->offset=128 start=0) returns 128
descmap .b48 type big offset 136 (d->offset=136 start=0) returns -1
descmap .t47 type ref Node offset 144 (d->offset=144 start=0) returns 144
descmap .t50 type list of ref Listnode offset 152 (d->offset=152 start=0) returns 152
fncom: walkpipeline 3 418268
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= array of ref Sys->FD 10 1
  name fds array of ref Sys->FD 0 0
  array array of ref Sys->FD 10 1
    const (2) int 6 0
ecom: 
array array of ref Sys->FD 10 1
  const (2) int 6 0
ecom to: 
name fds array of ref Sys->FD 0 0
generate desc for ref Sys->FD
generate desc for ref Sys->FD
	desc	$-1,8,"80"
ecom: 
= int 10 1
  name rfdno int 0 0
  const (-1) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
name rfdno int 0 0
eacom: 
call int 10 2
  -> fn(fds: array of ref Sys->FD): int 12 1
    name sys Sys 1 0
    name pipe nothing 11 1
  seq no type 10 1
    name fds array of ref Sys->FD 0 0
ecom: 
call int 10 2
  -> fn(fds: array of ref Sys->FD): int 12 1
    name sys Sys 1 0
    name pipe nothing 11 1
  seq no type 10 1
    name fds array of ref Sys->FD 0 0
ecom to: 
name .t51 int 0 0
generate desc for big
ecom: 
name fds array of ref Sys->FD 0 0
ecom to: 
* array of ref Sys->FD 8 0
  + int 15 0
    name .b52 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const no pipe string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: cannot make pipe: %r string 1 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: cannot make pipe: %r string 1 0
ecom to: 
name .t53 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const sh: cannot make pipe: %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b54 big 0 0
    const (64) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b52 big 0 0
    const (64) int 6 0
ecom: 
const no pipe string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b52 big 0 0
    const (72) int 6 0
ecom: 
name .t53 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b52 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t53 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t53 string 0 0
ecom: 
= int 10 1
  name nwfdno int 0 0
  const (-1) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
name nwfdno int 0 0
ecom: 
= (int, int) 10 2
  tuple (int, int) 10 1
    seq nothing 10 1
      name fd1 int 0 0
      seq nothing 10 1
        name fd2 int 0 0
  tuple (int, int) 10 2
    seq no type 10 2
      * int 10 1
        + int 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
          const fd2 (8) int 6 0
      seq no type 10 1
        * int 10 1
          + int 10 1
            * ref Redir 8 0
              + int 15 1
                name n ref Node 0 0
                const redir (32) int 6 0
            const fd1 (4) int 6 0
ecom: 
tuple (int, int) 10 2
  seq no type 10 2
    * int 10 1
      + int 10 1
        * ref Redir 8 0
          + int 15 1
            name n ref Node 0 0
            const redir (32) int 6 0
        const fd2 (8) int 6 0
    seq no type 10 1
      * int 10 1
        + int 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
          const fd1 (4) int 6 0
ecom to: 
name fd1 (int, int) 0 0
ecom: 
* int 10 1
  + int 10 1
    * ref Redir 8 0
      + int 15 1
        name n ref Node 0 0
        const redir (32) int 6 0
    const fd2 (8) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name fd1 (int, int) 0 0
    const (0) int 6 0
eacom: 
* int 10 1
  + int 10 1
    * ref Redir 8 0
      + int 15 1
        name n ref Node 0 0
        const redir (32) int 6 0
    const fd2 (8) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .t53 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .t53 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .t53 ref Redir 0 0
ecom: 
* int 10 1
  + int 10 1
    * ref Redir 8 0
      + int 15 1
        name n ref Node 0 0
        const redir (32) int 6 0
    const fd1 (4) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name fd1 (int, int) 0 0
    const (4) int 6 0
eacom: 
* int 10 1
  + int 10 1
    * ref Redir 8 0
      + int 15 1
        name n ref Node 0 0
        const redir (32) int 6 0
    const fd1 (4) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .t53 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .t53 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .t53 ref Redir 0 0
ecom: 
= (int, int) 10 2
  tuple (int, int) 10 1
    seq no type 10 1
      name fd1 int 0 0
      seq no type 10 1
        name fd2 int 0 0
  tuple (int, int) 10 1
    seq no type 10 1
      name fd2 int 0 0
      seq no type 10 1
        name fd1 int 0 0
generate desc for (int, int)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type int offset 4 (d->offset=4 start=0) returns -1
generate desc for (int, int)
	desc	$-1,8,""
ecom: 
tuple (int, int) 10 1
  seq no type 10 1
    name fd2 int 0 0
    seq no type 10 1
      name fd1 int 0 0
ecom to: 
name .b55 (int, int) 0 0
ecom: 
name fd2 int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name .b55 (int, int) 0 0
    const (0) int 6 0
ecom: 
name fd1 int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name .b55 (int, int) 0 0
    const (4) int 6 0
ecom: 
= (int, int) 10 2
  tuple (int, int) 10 1
    seq no type 10 1
      name nwfdno int 0 0
      seq no type 10 1
        name rfdno int 0 0
  tuple (int, int) 10 1
    seq no type 10 1
      name fd2 int 0 0
      seq no type 10 1
        name fd1 int 0 0
ecom: 
= int 10 1
  name nwfdno int 0 0
  name fd2 int 0 0
ecom: 
name fd2 int 0 0
ecom to: 
name nwfdno int 0 0
ecom: 
= int 10 1
  name rfdno int 0 0
  name fd1 int 0 0
ecom: 
name fd1 int 0 0
ecom to: 
name rfdno int 0 0
ecom: 
= list of int 10 2
  name pids list of int 0 0
  call list of int 10 2
    name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
    seq no type 10 2
      name ctxt ref Context 0 0
      seq no type 10 2
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        seq no type 10 2
          * ref Sys->FD 10 1
            indx big 10 1
              name fds array of ref Sys->FD 0 0
              const (1) int 6 0
          seq no type 10 1
            name nwfdno int 0 0
ecom: 
call list of int 10 2
  name walkpipeline fn(ctxt: ref Context, n: ref Node, wrpipe: ref Sys->FD, wfdno: int): list of int 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 2
        * ref Sys->FD 10 1
          indx big 10 1
            name fds array of ref Sys->FD 0 0
            const (1) int 6 0
        seq no type 10 1
          name nwfdno int 0 0
ecom to: 
name pids list of int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b54 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b54 big 0 0
    const (72) int 6 0
ecom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (1) int 6 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b54 big 0 0
    const (80) int 6 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name fds array of ref Sys->FD 0 0
  const (1) int 6 0
ecom to: 
name .b52 big 0 0
ecom: 
name nwfdno int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b54 big 0 0
    const (88) int 6 0
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 10 1
    indx big 10 1
      name fds array of ref Sys->FD 0 0
      const (1) int 6 0
  name nil polymorphic type 1 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name fds array of ref Sys->FD 0 0
  const (1) int 6 0
ecom to: 
name .b54 big 0 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 8 1
  name .b54 big 0 0
ecom: 
= ref Node 10 1
  name n ref Node 0 0
  * ref Node 8 0
    + int 15 1
      name n ref Node 0 0
      const right (16) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
name n ref Node 0 0
ecom: 
= ref Redirlist 10 1
  name r ref Redirlist 0 0
  ref ref Redirlist 10 1
    tuple Redirlist 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
ecom: 
ref ref Redirlist 10 1
  tuple Redirlist 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
name r ref Redirlist 0 0
generate desc for Redirlist
ecom: 
tuple Redirlist 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
ecom to: 
* Redirlist 8 0
  name .t53 ref Redirlist 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* list of Redirword 8 0
  + int 15 1
    adr int 15 1
      * Redirlist 8 0
        name .t53 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .t53 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .t53 ref Redirlist 0 0
ecom: 
= list of ref Listnode 10 2
  name rlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 2
      call list of ref Listnode 10 2
        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
        seq no type 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            name n ref Node 0 0
            seq no type 10 1
              name r ref Redirlist 0 0
              seq no type 10 1
                name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
      seq no type 10 1
        name ctxt ref Context 0 0
        seq no type 10 1
          name n ref Node 0 0
          seq no type 10 1
            name r ref Redirlist 0 0
            seq no type 10 1
              name nil list of ref Listnode 1 0
ecom to: 
name rlist list of ref Listnode 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        name r ref Redirlist 0 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name .t53 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b52 big 0 0
    const (64) int 6 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b52 big 0 0
    const (72) int 6 0
ecom: 
name r ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b52 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b52 big 0 0
    const (88) int 6 0
ecom: 
name .t53 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b54 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t53 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t53 list of ref Listnode 0 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (0) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name fds array of ref Sys->FD 0 0
  const (0) int 6 0
ecom to: 
name .b54 big 0 0
ecom: 
= int 10 1
  name rfdno int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name rfdno int 0 0
ecom: 
= list of Redirword 10 2
  * list of Redirword 8 0
    name r ref Redirlist 0 0
  :: list of Redirword 10 2
    tuple Redirword 10 2
      seq no type 10 2
        * ref Sys->FD 10 1
          indx big 10 1
            name fds array of ref Sys->FD 0 0
            const (0) int 6 0
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            tuple Redir 10 1
              seq no type 10 1
                const OREAD (0) int 6 0
                seq no type 10 1
                  name rfdno int 0 0
                  seq no type 10 1
                    const (-1) int 6 0
    * list of Redirword 8 0
      name r ref Redirlist 0 0
ecom: 
:: list of Redirword 10 2
  tuple Redirword 10 2
    seq no type 10 2
      * ref Sys->FD 10 1
        indx big 10 1
          name fds array of ref Sys->FD 0 0
          const (0) int 6 0
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          tuple Redir 10 1
            seq no type 10 1
              const OREAD (0) int 6 0
              seq no type 10 1
                name rfdno int 0 0
                seq no type 10 1
                  const (-1) int 6 0
  * list of Redirword 8 0
    name r ref Redirlist 0 0
ecom to: 
* list of Redirword 8 0
  name r ref Redirlist 0 0
eacom: 
tuple Redirword 10 2
  seq no type 10 2
    * ref Sys->FD 10 1
      indx big 10 1
        name fds array of ref Sys->FD 0 0
        const (0) int 6 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        tuple Redir 10 1
          seq no type 10 1
            const OREAD (0) int 6 0
            seq no type 10 1
              name rfdno int 0 0
              seq no type 10 1
                const (-1) int 6 0
generate desc for Redirword
descmap adt offset 0
descmap offset 0
descmap fd type ref Sys->FD offset 0 (d->offset=0 start=0) returns 0
descmap w type string offset 8 (d->offset=8 start=0) returns 8
descmap adt offset 16
descmap offset 16
descmap rtype type int offset 16 (d->offset=0 start=16) returns -1
descmap fd1 type int offset 20 (d->offset=4 start=16) returns -1
descmap fd2 type int offset 24 (d->offset=8 start=16) returns -1
descmap r type Redir offset 16 (d->offset=16 start=0) returns -1
generate desc for Redirword
	desc	$-1,32,"c0"
ecom: 
tuple Redirword 10 2
  seq no type 10 2
    * ref Sys->FD 10 1
      indx big 10 1
        name fds array of ref Sys->FD 0 0
        const (0) int 6 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        tuple Redir 10 1
          seq no type 10 1
            const OREAD (0) int 6 0
            seq no type 10 1
              name rfdno int 0 0
              seq no type 10 1
                const (-1) int 6 0
ecom to: 
name .b56 Redirword 0 0
ecom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (0) int 6 0
ecom to: 
* ref Sys->FD 0 0
  + int 13 1
    adr int 13 1
      name .b56 Redirword 0 0
    const (0) int 6 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (0) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name fds array of ref Sys->FD 0 0
  const (0) int 6 0
ecom to: 
name .b54 big 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b56 Redirword 0 0
    const (8) int 6 0
ecom: 
tuple Redir 10 1
  seq no type 10 1
    const OREAD (0) int 6 0
    seq no type 10 1
      name rfdno int 0 0
      seq no type 10 1
        const (-1) int 6 0
ecom to: 
* Redir 0 0
  + int 13 1
    adr int 13 1
      name .b56 Redirword 0 0
    const (16) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b56 Redirword 0 0
          const (16) int 6 0
    const (0) int 6 0
ecom: 
name rfdno int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b56 Redirword 0 0
          const (16) int 6 0
    const (4) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b56 Redirword 0 0
          const (16) int 6 0
    const (8) int 6 0
generate desc for Redirword
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b56 Redirword 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name .b56 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b56 Redirword 0 0
      const w (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b56 Redirword 0 0
    const w (8) int 6 0
ecom: 
= int 10 1
  name wfdno int 0 0
  const (1) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
name wfdno int 0 0
ecom: 
= list of Redirword 10 1
  * list of Redirword 8 0
    name r ref Redirlist 0 0
  :: list of Redirword 10 1
    tuple Redirword 10 1
      seq no type 10 1
        name wrpipe ref Sys->FD 0 0
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            tuple Redir 10 1
              seq no type 10 1
                const OWRITE (1) int 6 0
                seq no type 10 1
                  name wfdno int 0 0
                  seq no type 10 1
                    const (-1) int 6 0
    * list of Redirword 8 0
      name r ref Redirlist 0 0
ecom: 
:: list of Redirword 10 1
  tuple Redirword 10 1
    seq no type 10 1
      name wrpipe ref Sys->FD 0 0
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          tuple Redir 10 1
            seq no type 10 1
              const OWRITE (1) int 6 0
              seq no type 10 1
                name wfdno int 0 0
                seq no type 10 1
                  const (-1) int 6 0
  * list of Redirword 8 0
    name r ref Redirlist 0 0
ecom to: 
* list of Redirword 8 0
  name r ref Redirlist 0 0
eacom: 
tuple Redirword 10 1
  seq no type 10 1
    name wrpipe ref Sys->FD 0 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        tuple Redir 10 1
          seq no type 10 1
            const OWRITE (1) int 6 0
            seq no type 10 1
              name wfdno int 0 0
              seq no type 10 1
                const (-1) int 6 0
generate desc for Redirword
ecom: 
tuple Redirword 10 1
  seq no type 10 1
    name wrpipe ref Sys->FD 0 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        tuple Redir 10 1
          seq no type 10 1
            const OWRITE (1) int 6 0
            seq no type 10 1
              name wfdno int 0 0
              seq no type 10 1
                const (-1) int 6 0
ecom to: 
name .b56 Redirword 0 0
ecom: 
name wrpipe ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 0 0
  + int 13 1
    adr int 13 1
      name .b56 Redirword 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b56 Redirword 0 0
    const (8) int 6 0
ecom: 
tuple Redir 10 1
  seq no type 10 1
    const OWRITE (1) int 6 0
    seq no type 10 1
      name wfdno int 0 0
      seq no type 10 1
        const (-1) int 6 0
ecom to: 
* Redir 0 0
  + int 13 1
    adr int 13 1
      name .b56 Redirword 0 0
    const (16) int 6 0
ecom: 
const OWRITE (1) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b56 Redirword 0 0
          const (16) int 6 0
    const (0) int 6 0
ecom: 
name wfdno int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b56 Redirword 0 0
          const (16) int 6 0
    const (4) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b56 Redirword 0 0
          const (16) int 6 0
    const (8) int 6 0
generate desc for Redirword
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b56 Redirword 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name .b56 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b56 Redirword 0 0
      const w (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b56 Redirword 0 0
    const w (8) int 6 0
ecom: 
= chan of (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  chan chan of (int, ref Expropagate) 10 1
    const (0) int 6 0
ecom: 
chan chan of (int, ref Expropagate) 10 1
  const (0) int 6 0
ecom to: 
name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, ref Expropagate)
	desc	$-1,16,"40"
ecom: 
spawn nothing 10 2
  call no type 10 2
    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        const (1) int 6 0
        seq no type 10 1
          name rlist list of ref Listnode 0 0
          seq no type 10 1
            name r ref Redirlist 0 0
            seq no type 10 1
              name startchan chan of (int, ref Expropagate) 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b54 big 0 0
    const (64) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b54 big 0 0
    const (72) int 6 0
ecom: 
name rlist list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b54 big 0 0
    const (80) int 6 0
ecom: 
name r ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b54 big 0 0
    const (88) int 6 0
ecom: 
name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
* chan of (int, ref Expropagate) 8 0
  + int 15 0
    name .b54 big 0 0
    const (96) int 6 0
ecom: 
= (int, ref Expropagate) 10 2
  tuple (int, ref Expropagate) 10 1
    seq nothing 10 1
      name pid int 0 0
      seq nothing 10 1
        name nil polymorphic type 1 0
  <- (int, ref Expropagate) 10 1
    name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
ecom: 
<- (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
name .b57 (int, ref Expropagate) 0 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b57 (int, ref Expropagate) 0 0
      const t1 (8) int 6 0
  name nil ref Expropagate 1 0
ecom: 
name nil ref Expropagate 1 0
ecom to: 
* ref Expropagate 0 0
  + int 13 1
    adr int 13 1
      name .b57 (int, ref Expropagate) 0 0
    const t1 (8) int 6 0
ecom: 
:: list of int 10 1
  name pid int 0 0
  name pids list of int 0 0
ecom to: 
* list of int 8 0
  name .ret int 0 0
ecom: 
name pids list of int 0 0
ecom to: 
name .t53 list of int 0 0
ecom: 
= list of int 10 1
  name .t53 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t53 list of int 0 0
fn: walkpipeline
64: argument ctxt ref Context ref 4
72: argument n ref Node ref 9
80: argument wrpipe ref Sys->FD ref 2
88: argument wfdno int ref 3
92: local rfdno int ref 5
96: local fd1 int ref 4
100: local fd2 int ref 5
104: local nwfdno int ref 3
108: local .t51 int ref 1
112: local .b54 big ref 7
120: local r ref Redirlist ref 7
128: local fds array of ref Sys->FD ref 6
136: local .b52 big ref 4
144: local startchan chan of (int, ref Expropagate) ref 3
152: local pids list of int ref 2
160: local rlist list of ref Listnode ref 2
168: local .b56 Redirword ref 2
200: local .b55 (int, int) ref 1
208: local .t53 string ref 1
216: local .b57 (int, ref Expropagate) ref 1
104: local pid int ref 3
generate desc for walkpipeline
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
descmap wrpipe type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
descmap wfdno type int offset 88 (d->offset=88 start=0) returns -1
descmap rfdno type int offset 92 (d->offset=92 start=0) returns -1
descmap fd1 type int offset 96 (d->offset=96 start=0) returns -1
descmap fd2 type int offset 100 (d->offset=100 start=0) returns -1
descmap nwfdno type int offset 104 (d->offset=104 start=0) returns -1
descmap .t51 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b54 type big offset 112 (d->offset=112 start=0) returns -1
descmap r type ref Redirlist offset 120 (d->offset=120 start=0) returns 120
descmap fds type array of ref Sys->FD offset 128 (d->offset=128 start=0) returns 128
descmap .b52 type big offset 136 (d->offset=136 start=0) returns -1
descmap startchan type chan of (int, ref Expropagate) offset 144 (d->offset=144 start=0) returns 144
descmap pids type list of int offset 152 (d->offset=152 start=0) returns 152
descmap rlist type list of ref Listnode offset 160 (d->offset=160 start=0) returns 160
descmap adt offset 168
descmap offset 168
descmap fd type ref Sys->FD offset 168 (d->offset=0 start=168) returns 168
descmap w type string offset 176 (d->offset=8 start=168) returns 176
descmap adt offset 184
descmap offset 184
descmap rtype type int offset 184 (d->offset=0 start=184) returns -1
descmap fd1 type int offset 188 (d->offset=4 start=184) returns -1
descmap fd2 type int offset 192 (d->offset=8 start=184) returns -1
descmap r type Redir offset 184 (d->offset=16 start=168) returns -1
descmap .b56 type Redirword offset 168 (d->offset=168 start=0) returns 176
descmap adt offset 200
descmap offset 200
descmap t0 type int offset 200 (d->offset=0 start=200) returns -1
descmap t1 type int offset 204 (d->offset=4 start=200) returns -1
descmap .b55 type (int, int) offset 200 (d->offset=200 start=0) returns -1
descmap .t53 type string offset 208 (d->offset=208 start=0) returns 208
descmap adt offset 216
descmap offset 216
descmap t0 type int offset 216 (d->offset=0 start=216) returns -1
descmap t1 type ref Expropagate offset 224 (d->offset=8 start=216) returns 224
descmap .b57 type (int, ref Expropagate) offset 216 (d->offset=216 start=0) returns 224
fncom: makeredir 1 418328
fncom: glom 14 4183e8
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
call list of ref Listnode 10 2
  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
      seq no type 10 1
        name ctxt ref Context 0 0
        seq no type 10 1
          name n ref Node 0 0
          seq no type 10 1
            name redirs ref Redirlist 0 0
    seq no type 10 1
      name onto list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
ecom to: 
name .t59 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b60 big 0 0
    const (64) int 6 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b60 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b60 big 0 0
    const (80) int 6 0
ecom: 
name .t59 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b58 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t59 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t59 list of ref Listnode 0 0
ecom: 
name onto list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b58 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 2
  name nlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const right (16) int 6 0
        seq no type 10 1
          name redirs ref Redirlist 0 0
          seq no type 10 1
            name onto list of ref Listnode 0 0
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const right (16) int 6 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name onto list of ref Listnode 0 0
ecom to: 
name nlist list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b60 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b60 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b60 big 0 0
    const (80) int 6 0
ecom: 
name onto list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b60 big 0 0
    const (88) int 6 0
eacom: 
* int 10 1
  * ref Node 8 0
    + int 15 1
      name n ref Node 0 0
      const left (8) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
name .t59 ref Node 0 0
ecom: 
= ref Node 10 1
  name .t59 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t59 ref Node 0 0
ecom: 
= list of ref Listnode 10 2
  name nlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 2
      call list of ref Listnode 10 2
        name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
        seq no type 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            * ref Node 8 0
              + int 15 1
                name n ref Node 0 0
                const left (8) int 6 0
            seq no type 10 1
              name redirs ref Redirlist 0 0
      seq no type 10 1
        name nlist list of ref Listnode 0 0
ecom: 
call list of ref Listnode 10 2
  name listjoin fn(left: list of ref Listnode, right: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
      seq no type 10 1
        name ctxt ref Context 0 0
        seq no type 10 1
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const left (8) int 6 0
          seq no type 10 1
            name redirs ref Redirlist 0 0
    seq no type 10 1
      name nlist list of ref Listnode 0 0
ecom to: 
name nlist list of ref Listnode 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glomoperation fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
ecom to: 
name .t59 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b58 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b58 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b58 big 0 0
    const (80) int 6 0
ecom: 
name .t59 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b60 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t59 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t59 list of ref Listnode 0 0
ecom: 
name nlist list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b60 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 2
  name nlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        seq no type 10 1
          name redirs ref Redirlist 0 0
          seq no type 10 1
            name nlist list of ref Listnode 0 0
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name nlist list of ref Listnode 0 0
ecom to: 
name nlist list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b60 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b60 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b60 big 0 0
    const (80) int 6 0
ecom: 
name nlist list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b60 big 0 0
    const (88) int 6 0
ecom: 
name nlist list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
fn: glom
64: argument ctxt ref Context ref 4
72: argument n ref Node ref 7
80: argument redirs ref Redirlist ref 4
88: argument onto list of ref Listnode ref 2
96: local nlist list of ref Listnode ref 6
104: local .b60 big ref 4
112: local .b58 big ref 2
120: local .t59 list of ref Listnode ref 1
generate desc for glom
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
descmap onto type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
descmap nlist type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
descmap .b60 type big offset 104 (d->offset=104 start=0) returns -1
descmap .b58 type big offset 112 (d->offset=112 start=0) returns -1
descmap .t59 type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
fncom: listjoin 3 4184a8
ecom: 
= list of ref Listnode 10 1
  name l list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    hd ref Listnode 10 1
      name left list of ref Listnode 0 0
    name l list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  hd ref Listnode 10 1
    name left list of ref Listnode 0 0
  name l list of ref Listnode 0 0
ecom to: 
name l list of ref Listnode 0 0
eacom: 
hd ref Listnode 10 1
  name left list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name left list of ref Listnode 0 0
ecom to: 
name .t61 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t61 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t61 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name left list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name left list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name left list of ref Listnode 0 0
ecom to: 
name left list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name right list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    hd ref Listnode 10 1
      name l list of ref Listnode 0 0
    name right list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  hd ref Listnode 10 1
    name l list of ref Listnode 0 0
  name right list of ref Listnode 0 0
ecom to: 
name right list of ref Listnode 0 0
eacom: 
hd ref Listnode 10 1
  name l list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name l list of ref Listnode 0 0
ecom to: 
name .t61 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t61 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t61 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name l list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name l list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name l list of ref Listnode 0 0
ecom to: 
name l list of ref Listnode 0 0
ecom: 
name right list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
fn: listjoin
64: argument left list of ref Listnode ref 4
72: argument right list of ref Listnode ref 3
80: local l list of ref Listnode ref 6
88: local .t61 ref Listnode ref 1
generate desc for listjoin
descmap offset 0
descmap left type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
descmap right type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap l type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap .t61 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
fncom: pipecmd 2 418568
eacom: 
& int 10 1
  * int 8 0
    name redir ref Redir 0 0
  const OAPPEND (524288) int 6 0
ecom: 
& int 10 1
  * int 8 0
    name redir ref Redir 0 0
  const OAPPEND (524288) int 6 0
ecom to: 
name .t62 int 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad redir string 1 0
      seq no type 10 1
        const sh: bad redirection string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b63 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b63 big 0 0
    const (72) int 6 0
ecom: 
const sh: bad redirection string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b63 big 0 0
    const (80) int 6 0
ecom: 
= Redir 10 1
  name r Redir 0 0
  * Redir 8 0
    name redir ref Redir 0 0
ecom: 
* Redir 8 0
  name redir ref Redir 0 0
ecom to: 
name r Redir 0 0
generate desc for Redir
descmap adt offset 0
descmap offset 0
descmap rtype type int offset 0 (d->offset=0 start=0) returns -1
descmap fd1 type int offset 4 (d->offset=4 start=0) returns -1
descmap fd2 type int offset 8 (d->offset=8 start=0) returns -1
generate desc for Redir
	desc	$-1,12,""
ecom: 
= int 10 1
  * int 0 0
    adr int 13 1
      name r Redir 0 0
  const OWRITE (1) int 6 0
ecom: 
const OWRITE (1) int 6 0
ecom to: 
* int 0 0
  adr int 13 1
    name r Redir 0 0
ecom: 
= int 10 1
  * int 0 0
    adr int 13 1
      name r Redir 0 0
  const OREAD (0) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 0 0
  adr int 13 1
    name r Redir 0 0
ecom: 
= array of ref Sys->FD 10 1
  name p array of ref Sys->FD 0 0
  array array of ref Sys->FD 10 1
    const (2) int 6 0
ecom: 
array array of ref Sys->FD 10 1
  const (2) int 6 0
ecom to: 
name p array of ref Sys->FD 0 0
generate desc for ref Sys->FD
generate desc for ref Sys->FD
	desc	$-1,8,"80"
eacom: 
call int 10 2
  -> fn(fds: array of ref Sys->FD): int 12 1
    name sys Sys 1 0
    name pipe nothing 11 1
  seq no type 10 1
    name p array of ref Sys->FD 0 0
ecom: 
call int 10 2
  -> fn(fds: array of ref Sys->FD): int 12 1
    name sys Sys 1 0
    name pipe nothing 11 1
  seq no type 10 1
    name p array of ref Sys->FD 0 0
ecom to: 
name .t62 int 0 0
generate desc for big
ecom: 
name p array of ref Sys->FD 0 0
ecom to: 
* array of ref Sys->FD 8 0
  + int 15 0
    name .b63 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const no pipe string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: cannot make pipe: %r string 1 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: cannot make pipe: %r string 1 0
ecom to: 
name .t64 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const sh: cannot make pipe: %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b65 big 0 0
    const (64) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b63 big 0 0
    const (64) int 6 0
ecom: 
const no pipe string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b63 big 0 0
    const (72) int 6 0
ecom: 
name .t64 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b63 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t64 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t64 string 0 0
ecom: 
= chan of (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  chan chan of (int, ref Expropagate) 10 1
    const (0) int 6 0
ecom: 
chan chan of (int, ref Expropagate) 10 1
  const (0) int 6 0
ecom to: 
name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, ref Expropagate)
	desc	$-1,16,"40"
ecom: 
spawn nothing 10 2
  call no type 10 2
    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
    seq no type 10 2
      name ctxt ref Context 0 0
      seq no type 10 2
        const (1) int 6 0
        seq no type 10 2
          name cmd list of ref Listnode 0 0
          seq no type 10 2
            ref ref Redirlist 10 2
              tuple Redirlist 10 2
                seq no type 10 2
                  :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
                    tuple (ref Sys->FD, polymorphic type, Redir) 10 2
                      seq no type 10 2
                        * ref Sys->FD 10 1
                          indx big 10 1
                            name p array of ref Sys->FD 0 0
                            const (1) int 6 0
                        seq no type 10 1
                          name nil polymorphic type 1 0
                          seq no type 10 1
                            name r Redir 0 0
                    name nil polymorphic type 1 0
            seq no type 10 1
              name startchan chan of (int, ref Expropagate) 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b65 big 0 0
    const (64) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b65 big 0 0
    const (72) int 6 0
ecom: 
name cmd list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b65 big 0 0
    const (80) int 6 0
ecom: 
ref ref Redirlist 10 2
  tuple Redirlist 10 2
    seq no type 10 2
      :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
        tuple (ref Sys->FD, polymorphic type, Redir) 10 2
          seq no type 10 2
            * ref Sys->FD 10 1
              indx big 10 1
                name p array of ref Sys->FD 0 0
                const (1) int 6 0
            seq no type 10 1
              name nil polymorphic type 1 0
              seq no type 10 1
                name r Redir 0 0
        name nil polymorphic type 1 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b65 big 0 0
    const (88) int 6 0
generate desc for Redirlist
ecom: 
tuple Redirlist 10 2
  seq no type 10 2
    :: list of (ref Sys->FD, polymorphic type, Redir) 10 2
      tuple (ref Sys->FD, polymorphic type, Redir) 10 2
        seq no type 10 2
          * ref Sys->FD 10 1
            indx big 10 1
              name p array of ref Sys->FD 0 0
              const (1) int 6 0
          seq no type 10 1
            name nil polymorphic type 1 0
            seq no type 10 1
              name r Redir 0 0
      name nil polymorphic type 1 0
ecom to: 
* Redirlist 8 0
  name .t64 ref Redirlist 0 0
ecom: 
:: list of (ref Sys->FD, polymorphic type, Redir) 10 2
  tuple (ref Sys->FD, polymorphic type, Redir) 10 2
    seq no type 10 2
      * ref Sys->FD 10 1
        indx big 10 1
          name p array of ref Sys->FD 0 0
          const (1) int 6 0
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          name r Redir 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of Redirword 8 0
  + int 15 1
    adr int 15 1
      * Redirlist 8 0
        name .t64 ref Redirlist 0 0
    const (0) int 6 0
eacom: 
tuple (ref Sys->FD, polymorphic type, Redir) 10 2
  seq no type 10 2
    * ref Sys->FD 10 1
      indx big 10 1
        name p array of ref Sys->FD 0 0
        const (1) int 6 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name r Redir 0 0
generate desc for (ref Sys->FD, polymorphic type, Redir)
descmap adt offset 0
descmap offset 0
descmap t0 type ref Sys->FD offset 0 (d->offset=0 start=0) returns 0
descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
descmap adt offset 16
descmap offset 16
descmap rtype type int offset 16 (d->offset=0 start=16) returns -1
descmap fd1 type int offset 20 (d->offset=4 start=16) returns -1
descmap fd2 type int offset 24 (d->offset=8 start=16) returns -1
descmap t2 type Redir offset 16 (d->offset=16 start=0) returns -1
generate desc for (ref Sys->FD, polymorphic type, Redir)
	desc	$-1,32,"c0"
ecom: 
tuple (ref Sys->FD, polymorphic type, Redir) 10 2
  seq no type 10 2
    * ref Sys->FD 10 1
      indx big 10 1
        name p array of ref Sys->FD 0 0
        const (1) int 6 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name r Redir 0 0
ecom to: 
name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
ecom: 
* ref Sys->FD 10 1
  indx big 10 1
    name p array of ref Sys->FD 0 0
    const (1) int 6 0
ecom to: 
* ref Sys->FD 0 0
  + int 13 1
    adr int 13 1
      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
    const (0) int 6 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name p array of ref Sys->FD 0 0
    const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name p array of ref Sys->FD 0 0
  const (1) int 6 0
ecom to: 
name .b63 big 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
    const (8) int 6 0
ecom: 
name r Redir 0 0
ecom to: 
* Redir 0 0
  + int 13 1
    adr int 13 1
      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
    const (16) int 6 0
generate desc for Redir
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t67 list of (ref Sys->FD, polymorphic type, Redir) 0 0
generate desc for (ref Sys->FD, polymorphic type, Redir)
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    + int 13 1
      adr int 13 1
        name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
      const t1 (8) int 6 0
  name nil polymorphic type 1 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b66 (ref Sys->FD, polymorphic type, Redir) 0 0
    const t1 (8) int 6 0
ecom: 
= list of (ref Sys->FD, polymorphic type, Redir) 10 1
  name .t67 list of (ref Sys->FD, polymorphic type, Redir) 0 0
  name nil list of (ref Sys->FD, polymorphic type, Redir) 1 0
ecom: 
name nil list of (ref Sys->FD, polymorphic type, Redir) 1 0
ecom to: 
name .t67 list of (ref Sys->FD, polymorphic type, Redir) 0 0
ecom: 
= ref Redirlist 10 1
  name .t64 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .t64 ref Redirlist 0 0
ecom: 
name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
* chan of (int, ref Expropagate) 8 0
  + int 15 0
    name .b65 big 0 0
    const (96) int 6 0
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 10 1
    indx big 10 1
      name p array of ref Sys->FD 0 0
      const (1) int 6 0
  name nil polymorphic type 1 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name p array of ref Sys->FD 0 0
    const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name p array of ref Sys->FD 0 0
  const (1) int 6 0
ecom to: 
name .b65 big 0 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 8 1
  name .b65 big 0 0
ecom: 
<- (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
ecom: 
<- (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
name .b68 (int, ref Expropagate) 0 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b68 (int, ref Expropagate) 0 0
      const t1 (8) int 6 0
  name nil ref Expropagate 1 0
ecom: 
name nil ref Expropagate 1 0
ecom to: 
* ref Expropagate 0 0
  + int 13 1
    adr int 13 1
      name .b68 (int, ref Expropagate) 0 0
    const t1 (8) int 6 0
ecom: 
* ref Sys->FD 10 1
  indx big 10 1
    name p array of ref Sys->FD 0 0
    const (0) int 6 0
ecom to: 
* ref Sys->FD 8 0
  name .ret int 0 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name p array of ref Sys->FD 0 0
    const (0) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name p array of ref Sys->FD 0 0
  const (0) int 6 0
ecom to: 
name .b65 big 0 0
fn: pipecmd
64: argument ctxt ref Context ref 3
72: argument cmd list of ref Listnode ref 1
80: argument redir ref Redir ref 4
88: local .t62 int ref 1
96: local p array of ref Sys->FD ref 5
104: local .b63 big ref 4
112: local .b65 big ref 4
120: local r Redir ref 4
136: local startchan chan of (int, ref Expropagate) ref 3
144: local .t64 string ref 1
152: local .t67 list of (ref Sys->FD, polymorphic type, Redir) ref 1
160: local .b68 (int, ref Expropagate) ref 1
176: local .b66 (ref Sys->FD, polymorphic type, Redir) ref 1
generate desc for pipecmd
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap cmd type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap redir type ref Redir offset 80 (d->offset=80 start=0) returns 80
descmap .t62 type int offset 88 (d->offset=88 start=0) returns -1
descmap p type array of ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
descmap .b63 type big offset 104 (d->offset=104 start=0) returns -1
descmap .b65 type big offset 112 (d->offset=112 start=0) returns -1
descmap adt offset 120
descmap offset 120
descmap rtype type int offset 120 (d->offset=0 start=120) returns -1
descmap fd1 type int offset 124 (d->offset=4 start=120) returns -1
descmap fd2 type int offset 128 (d->offset=8 start=120) returns -1
descmap r type Redir offset 120 (d->offset=120 start=0) returns -1
descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
descmap .t64 type string offset 144 (d->offset=144 start=0) returns 144
descmap .t67 type list of (ref Sys->FD, polymorphic type, Redir) offset 152 (d->offset=152 start=0) returns 152
descmap adt offset 160
descmap offset 160
descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
descmap t1 type ref Expropagate offset 168 (d->offset=8 start=160) returns 168
descmap .b68 type (int, ref Expropagate) offset 160 (d->offset=160 start=0) returns 168
descmap adt offset 176
descmap offset 176
descmap t0 type ref Sys->FD offset 176 (d->offset=0 start=176) returns 176
descmap t1 type polymorphic type offset 184 (d->offset=8 start=176) returns 184
descmap adt offset 192
descmap offset 192
descmap rtype type int offset 192 (d->offset=0 start=192) returns -1
descmap fd1 type int offset 196 (d->offset=4 start=192) returns -1
descmap fd2 type int offset 200 (d->offset=8 start=192) returns -1
descmap t2 type Redir offset 192 (d->offset=16 start=176) returns -1
descmap .b66 type (ref Sys->FD, polymorphic type, Redir) offset 176 (d->offset=176 start=0) returns 184
fncom: glomoperation 3 418628
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= list of ref Listnode 10 1
  name nlist list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    ref ref Listnode 10 1
      tuple Listnode 10 1
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            * string 8 0
              + int 15 1
                name n ref Node 0 0
                const word (24) int 6 0
    name nil polymorphic type 1 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          * string 8 0
            + int 15 1
              name n ref Node 0 0
              const word (24) int 6 0
  name nil polymorphic type 1 0
ecom to: 
name nlist list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        * string 8 0
          + int 15 1
            name n ref Node 0 0
            const word (24) int 6 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        * string 8 0
          + int 15 1
            name n ref Node 0 0
            const word (24) int 6 0
ecom to: 
name .t69 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      * string 8 0
        + int 15 1
          name n ref Node 0 0
          const word (24) int 6 0
ecom to: 
* Listnode 8 0
  name .t69 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t69 ref Listnode 0 0
    const (0) int 6 0
ecom: 
* string 8 0
  + int 15 1
    name n ref Node 0 0
    const word (24) int 6 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t69 ref Listnode 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t70 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t69 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t69 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t70 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t70 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 2
  name wlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 2
      call list of ref Listnode 10 2
        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
        seq no type 10 2
          name ctxt ref Context 0 0
          seq no type 10 2
            * ref Node 8 0
              + int 15 1
                name n ref Node 0 0
                const left (8) int 6 0
            seq no type 10 2
              ref ref Redirlist 10 1
                tuple Redirlist 10 1
                  seq no type 10 1
                    name nil polymorphic type 1 0
              seq no type 10 1
                name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
      seq no type 10 2
        name ctxt ref Context 0 0
        seq no type 10 2
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const left (8) int 6 0
          seq no type 10 2
            ref ref Redirlist 10 1
              tuple Redirlist 10 1
                seq no type 10 1
                  name nil polymorphic type 1 0
            seq no type 10 1
              name nil list of ref Listnode 1 0
ecom to: 
name wlist list of ref Listnode 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 2
        ref ref Redirlist 10 1
          tuple Redirlist 10 1
            seq no type 10 1
              name nil polymorphic type 1 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name .t70 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
ref ref Redirlist 10 1
  tuple Redirlist 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b72 big 0 0
    const (80) int 6 0
generate desc for Redirlist
ecom: 
tuple Redirlist 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
ecom to: 
* Redirlist 8 0
  name .t69 ref Redirlist 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* list of Redirword 8 0
  + int 15 1
    adr int 15 1
      * Redirlist 8 0
        name .t69 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .t69 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .t69 ref Redirlist 0 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b72 big 0 0
    const (88) int 6 0
ecom: 
name .t70 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b71 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t70 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t70 list of ref Listnode 0 0
eacom: 
len int 10 1
  name wlist list of ref Listnode 0 0
ecom: 
len int 10 1
  name wlist list of ref Listnode 0 0
ecom to: 
name .t73 int 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad redir string 1 0
      seq no type 10 1
        const sh: single redirection operand required string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
const sh: single redirection operand required string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b72 big 0 0
    const (80) int 6 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name wlist list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name wlist list of ref Listnode 0 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t70 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= ref Sys->FD 10 2
  name fd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name wlist list of ref Listnode 0 0
        seq no type 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
ecom: 
call ref Sys->FD 10 2
  name pipecmd fn(ctxt: ref Context, cmd: list of ref Listnode, redir: ref Redir): ref Sys->FD 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name wlist list of ref Listnode 0 0
      seq no type 10 1
        * ref Redir 8 0
          + int 15 1
            name n ref Node 0 0
            const redir (32) int 6 0
ecom to: 
name fd ref Sys->FD 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
name wlist list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
* ref Redir 8 0
  + int 15 0
    name .b72 big 0 0
    const (80) int 6 0
ecom: 
= list of Redirword 10 2
  * list of Redirword 8 0
    name redirs ref Redirlist 0 0
  :: list of Redirword 10 2
    tuple Redirword 10 2
      seq no type 10 2
        name fd ref Sys->FD 0 0
        seq no type 10 2
          name nil polymorphic type 1 0
          seq no type 10 2
            tuple (int, int, int) 10 2
              seq no type 10 2
                * int 10 1
                  * ref Redir 8 0
                    + int 15 1
                      name n ref Node 0 0
                      const redir (32) int 6 0
                seq no type 10 1
                  * int 8 0
                    name fd ref Sys->FD 0 0
                  seq no type 10 1
                    const (-1) int 6 0
    * list of Redirword 8 0
      name redirs ref Redirlist 0 0
ecom: 
:: list of Redirword 10 2
  tuple Redirword 10 2
    seq no type 10 2
      name fd ref Sys->FD 0 0
      seq no type 10 2
        name nil polymorphic type 1 0
        seq no type 10 2
          tuple (int, int, int) 10 2
            seq no type 10 2
              * int 10 1
                * ref Redir 8 0
                  + int 15 1
                    name n ref Node 0 0
                    const redir (32) int 6 0
              seq no type 10 1
                * int 8 0
                  name fd ref Sys->FD 0 0
                seq no type 10 1
                  const (-1) int 6 0
  * list of Redirword 8 0
    name redirs ref Redirlist 0 0
ecom to: 
* list of Redirword 8 0
  name redirs ref Redirlist 0 0
eacom: 
tuple Redirword 10 2
  seq no type 10 2
    name fd ref Sys->FD 0 0
    seq no type 10 2
      name nil polymorphic type 1 0
      seq no type 10 2
        tuple (int, int, int) 10 2
          seq no type 10 2
            * int 10 1
              * ref Redir 8 0
                + int 15 1
                  name n ref Node 0 0
                  const redir (32) int 6 0
            seq no type 10 1
              * int 8 0
                name fd ref Sys->FD 0 0
              seq no type 10 1
                const (-1) int 6 0
generate desc for Redirword
ecom: 
tuple Redirword 10 2
  seq no type 10 2
    name fd ref Sys->FD 0 0
    seq no type 10 2
      name nil polymorphic type 1 0
      seq no type 10 2
        tuple (int, int, int) 10 2
          seq no type 10 2
            * int 10 1
              * ref Redir 8 0
                + int 15 1
                  name n ref Node 0 0
                  const redir (32) int 6 0
            seq no type 10 1
              * int 8 0
                name fd ref Sys->FD 0 0
              seq no type 10 1
                const (-1) int 6 0
ecom to: 
name .b74 Redirword 0 0
ecom: 
name fd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (8) int 6 0
ecom: 
tuple (int, int, int) 10 2
  seq no type 10 2
    * int 10 1
      * ref Redir 8 0
        + int 15 1
          name n ref Node 0 0
          const redir (32) int 6 0
    seq no type 10 1
      * int 8 0
        name fd ref Sys->FD 0 0
      seq no type 10 1
        const (-1) int 6 0
ecom to: 
* Redir 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (16) int 6 0
ecom: 
* int 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b74 Redirword 0 0
          const (16) int 6 0
    const (0) int 6 0
eacom: 
* int 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .t70 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .t70 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .t70 ref Redir 0 0
ecom: 
* int 8 0
  name fd ref Sys->FD 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b74 Redirword 0 0
          const (16) int 6 0
    const (4) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b74 Redirword 0 0
          const (16) int 6 0
    const (8) int 6 0
generate desc for Redirword
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b74 Redirword 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name .b74 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b74 Redirword 0 0
      const w (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const w (8) int 6 0
ecom: 
= list of ref Listnode 10 1
  name nlist list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    ref ref Listnode 10 1
      tuple Listnode 10 1
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            + string 10 1
              const /fd/ string 1 0
              cast string 10 1
                * int 8 0
                  name fd ref Sys->FD 0 0
    name nil polymorphic type 1 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          + string 10 1
            const /fd/ string 1 0
            cast string 10 1
              * int 8 0
                name fd ref Sys->FD 0 0
  name nil polymorphic type 1 0
ecom to: 
name nlist list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        + string 10 1
          const /fd/ string 1 0
          cast string 10 1
            * int 8 0
              name fd ref Sys->FD 0 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        + string 10 1
          const /fd/ string 1 0
          cast string 10 1
            * int 8 0
              name fd ref Sys->FD 0 0
ecom to: 
name .t70 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      + string 10 1
        const /fd/ string 1 0
        cast string 10 1
          * int 8 0
            name fd ref Sys->FD 0 0
ecom to: 
* Listnode 8 0
  name .t70 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t70 ref Listnode 0 0
    const (0) int 6 0
ecom: 
+ string 10 1
  const /fd/ string 1 0
  cast string 10 1
    * int 8 0
      name fd ref Sys->FD 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t70 ref Listnode 0 0
    const (8) int 6 0
eacom: 
cast string 10 1
  * int 8 0
    name fd ref Sys->FD 0 0
ecom: 
cast string 10 1
  * int 8 0
    name fd ref Sys->FD 0 0
ecom to: 
name .t69 string 0 0
ecom: 
= string 10 1
  name .t69 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t69 string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t70 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t69 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
= ref Sys->FD 10 1
  name fd ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name fd ref Sys->FD 0 0
ecom: 
= list of Redirword 10 2
  * list of Redirword 8 0
    name redirs ref Redirlist 0 0
  :: list of Redirword 10 2
    tuple Redirword 10 2
      seq no type 10 2
        name nil polymorphic type 1 0
        seq no type 10 2
          * string 10 1
            + int 10 1
              hd ref Listnode 10 1
                name wlist list of ref Listnode 0 0
              const word (8) int 6 0
          seq no type 10 1
            * Redir 10 1
              * ref Redir 8 0
                + int 15 1
                  name n ref Node 0 0
                  const redir (32) int 6 0
    * list of Redirword 8 0
      name redirs ref Redirlist 0 0
ecom: 
:: list of Redirword 10 2
  tuple Redirword 10 2
    seq no type 10 2
      name nil polymorphic type 1 0
      seq no type 10 2
        * string 10 1
          + int 10 1
            hd ref Listnode 10 1
              name wlist list of ref Listnode 0 0
            const word (8) int 6 0
        seq no type 10 1
          * Redir 10 1
            * ref Redir 8 0
              + int 15 1
                name n ref Node 0 0
                const redir (32) int 6 0
  * list of Redirword 8 0
    name redirs ref Redirlist 0 0
ecom to: 
* list of Redirword 8 0
  name redirs ref Redirlist 0 0
eacom: 
tuple Redirword 10 2
  seq no type 10 2
    name nil polymorphic type 1 0
    seq no type 10 2
      * string 10 1
        + int 10 1
          hd ref Listnode 10 1
            name wlist list of ref Listnode 0 0
          const word (8) int 6 0
      seq no type 10 1
        * Redir 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
generate desc for Redirword
ecom: 
tuple Redirword 10 2
  seq no type 10 2
    name nil polymorphic type 1 0
    seq no type 10 2
      * string 10 1
        + int 10 1
          hd ref Listnode 10 1
            name wlist list of ref Listnode 0 0
          const word (8) int 6 0
      seq no type 10 1
        * Redir 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
ecom to: 
name .b74 Redirword 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Sys->FD 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (0) int 6 0
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name wlist list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (8) int 6 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name wlist list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name wlist list of ref Listnode 0 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t70 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
* Redir 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom to: 
* Redir 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (16) int 6 0
eacom: 
* Redir 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .t70 ref Redir 0 0
generate desc for Redir
ecom: 
= ref Redir 10 1
  name .t70 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .t70 ref Redir 0 0
generate desc for Redirword
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b74 Redirword 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name .b74 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b74 Redirword 0 0
      const w (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const w (8) int 6 0
ecom: 
= list of ref Listnode 10 1
  name wlist list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name wlist list of ref Listnode 0 0
ecom: 
= list of Redirword 10 1
  * list of Redirword 8 0
    name redirs ref Redirlist 0 0
  :: list of Redirword 10 1
    tuple Redirword 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          const  string 1 0
          seq no type 10 1
            * Redir 10 1
              * ref Redir 8 0
                + int 15 1
                  name n ref Node 0 0
                  const redir (32) int 6 0
    * list of Redirword 8 0
      name redirs ref Redirlist 0 0
ecom: 
:: list of Redirword 10 1
  tuple Redirword 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        const  string 1 0
        seq no type 10 1
          * Redir 10 1
            * ref Redir 8 0
              + int 15 1
                name n ref Node 0 0
                const redir (32) int 6 0
  * list of Redirword 8 0
    name redirs ref Redirlist 0 0
ecom to: 
* list of Redirword 8 0
  name redirs ref Redirlist 0 0
eacom: 
tuple Redirword 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      const  string 1 0
      seq no type 10 1
        * Redir 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
generate desc for Redirword
ecom: 
tuple Redirword 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      const  string 1 0
      seq no type 10 1
        * Redir 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
ecom to: 
name .b74 Redirword 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Sys->FD 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (0) int 6 0
ecom: 
const  string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (8) int 6 0
ecom: 
* Redir 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom to: 
* Redir 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const (16) int 6 0
eacom: 
* Redir 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .t70 ref Redir 0 0
generate desc for Redir
ecom: 
= ref Redir 10 1
  name .t70 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .t70 ref Redir 0 0
generate desc for Redirword
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b74 Redirword 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name .b74 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b74 Redirword 0 0
      const w (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b74 Redirword 0 0
    const w (8) int 6 0
ecom: 
= list of ref Listnode 10 2
  name nlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        seq no type 10 1
          name redirs ref Redirlist 0 0
          seq no type 10 1
            name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name nlist list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b72 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b72 big 0 0
    const (88) int 6 0
ecom: 
= list of ref Listnode 10 3
  name nlist list of ref Listnode 0 0
  call list of ref Listnode 10 3
    name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 3
      name ctxt ref Context 0 0
      seq no type 10 3
        call list of ref Listnode 10 2
          name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
          seq no type 10 1
            name ctxt ref Context 0 0
            seq no type 10 1
              * ref Node 8 0
                + int 15 1
                  name n ref Node 0 0
                  const left (8) int 6 0
              seq no type 10 1
                name redirs ref Redirlist 0 0
                seq no type 10 1
                  name nil list of ref Listnode 1 0
        seq no type 10 2
          call list of ref Listnode 10 2
            name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
            seq no type 10 1
              name ctxt ref Context 0 0
              seq no type 10 1
                * ref Node 8 0
                  + int 15 1
                    name n ref Node 0 0
                    const right (16) int 6 0
                seq no type 10 1
                  name redirs ref Redirlist 0 0
                  seq no type 10 1
                    name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 3
  name concat fn(ctxt: ref Context, nl1: list of ref Listnode, nl2: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 3
    name ctxt ref Context 0 0
    seq no type 10 3
      call list of ref Listnode 10 2
        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
        seq no type 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            * ref Node 8 0
              + int 15 1
                name n ref Node 0 0
                const left (8) int 6 0
            seq no type 10 1
              name redirs ref Redirlist 0 0
              seq no type 10 1
                name nil list of ref Listnode 1 0
      seq no type 10 2
        call list of ref Listnode 10 2
          name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
          seq no type 10 1
            name ctxt ref Context 0 0
            seq no type 10 1
              * ref Node 8 0
                + int 15 1
                  name n ref Node 0 0
                  const right (16) int 6 0
              seq no type 10 1
                name redirs ref Redirlist 0 0
                seq no type 10 1
                  name nil list of ref Listnode 1 0
ecom to: 
name nlist list of ref Listnode 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name .t70 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b71 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b71 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b71 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b71 big 0 0
    const (88) int 6 0
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const right (16) int 6 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b71 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b71 big 0 0
    const (72) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b71 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b71 big 0 0
    const (88) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
name .t70 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t70 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t70 list of ref Listnode 0 0
ecom: 
name .t69 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b72 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t69 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 2
  name arg list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 2
      name ctxt ref Context 0 0
      seq no type 10 2
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        seq no type 10 2
          ref ref Redirlist 10 1
            tuple Redirlist 10 1
              seq no type 10 1
                name nil polymorphic type 1 0
          seq no type 10 1
            name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 2
        ref ref Redirlist 10 1
          tuple Redirlist 10 1
            seq no type 10 1
              name nil polymorphic type 1 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name arg list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
ref ref Redirlist 10 1
  tuple Redirlist 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b72 big 0 0
    const (80) int 6 0
generate desc for Redirlist
ecom: 
tuple Redirlist 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
ecom to: 
* Redirlist 8 0
  name .t70 ref Redirlist 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* list of Redirword 8 0
  + int 15 1
    adr int 15 1
      * Redirlist 8 0
        name .t70 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .t70 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .t70 ref Redirlist 0 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b72 big 0 0
    const (88) int 6 0
eacom: 
len int 10 1
  name arg list of ref Listnode 0 0
ecom: 
len int 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .t73 int 0 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name arg list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t70 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 2
  name nlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * ref Node 10 1
          + int 10 1
            * ref Node 10 1
              hd ref Listnode 10 1
                name arg list of ref Listnode 0 0
            const left (8) int 6 0
ecom: 
call list of ref Listnode 10 2
  name subsbuiltin fn(ctxt: ref Context, n: ref Node): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * ref Node 10 1
        + int 10 1
          * ref Node 10 1
            hd ref Listnode 10 1
              name arg list of ref Listnode 0 0
          const left (8) int 6 0
ecom to: 
name nlist list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 10 1
  + int 10 1
    * ref Node 10 1
      hd ref Listnode 10 1
        name arg list of ref Listnode 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
eacom: 
* ref Node 10 1
  + int 10 1
    * ref Node 10 1
      hd ref Listnode 10 1
        name arg list of ref Listnode 0 0
    const left (8) int 6 0
ecom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name arg list of ref Listnode 0 0
ecom to: 
name .t70 ref Node 0 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name arg list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= ref Node 10 1
  name .t70 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .t70 ref Node 0 0
eacom: 
len int 10 1
  name arg list of ref Listnode 0 0
ecom: 
len int 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .t73 int 0 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name arg list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t70 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad $ arg string 1 0
      seq no type 10 1
        const sh: bad variable name string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
const bad $ arg string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
const sh: bad variable name string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b72 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 2
  name nlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
    seq nothing 10 2
      name ctxt ref Context 0 0
      seq no type 10 2
        call string 10 2
          name deglob fn(s: string): string 11 1
          seq no type 10 1
            * string 10 1
              + int 10 1
                hd ref Listnode 10 1
                  name arg list of ref Listnode 0 0
                const word (8) int 6 0
ecom: 
call list of ref Listnode 10 2
  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      call string 10 2
        name deglob fn(s: string): string 11 1
        seq no type 10 1
          * string 10 1
            + int 10 1
              hd ref Listnode 10 1
                name arg list of ref Listnode 0 0
              const word (8) int 6 0
ecom to: 
name nlist list of ref Listnode 0 0
generate desc for big
ecom: 
call string 10 2
  name deglob fn(s: string): string 11 1
  seq no type 10 1
    * string 10 1
      + int 10 1
        hd ref Listnode 10 1
          name arg list of ref Listnode 0 0
        const word (8) int 6 0
ecom to: 
name .t70 string 0 0
generate desc for big
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name arg list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b71 big 0 0
    const (64) int 6 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name arg list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .t69 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t69 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t69 ref Listnode 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
name .t70 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t70 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t70 string 0 0
ecom: 
= list of ref Listnode 10 1
  name nlist list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    ref ref Listnode 10 1
      tuple Listnode 10 1
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            cast string 10 1
              len int 10 1
                name nlist list of ref Listnode 0 0
    name nil polymorphic type 1 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          cast string 10 1
            len int 10 1
              name nlist list of ref Listnode 0 0
  name nil polymorphic type 1 0
ecom to: 
name nlist list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        cast string 10 1
          len int 10 1
            name nlist list of ref Listnode 0 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        cast string 10 1
          len int 10 1
            name nlist list of ref Listnode 0 0
ecom to: 
name .t70 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      cast string 10 1
        len int 10 1
          name nlist list of ref Listnode 0 0
ecom to: 
* Listnode 8 0
  name .t70 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t70 ref Listnode 0 0
    const (0) int 6 0
ecom: 
cast string 10 1
  len int 10 1
    name nlist list of ref Listnode 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t70 ref Listnode 0 0
    const (8) int 6 0
eacom: 
len int 10 1
  name nlist list of ref Listnode 0 0
ecom: 
len int 10 1
  name nlist list of ref Listnode 0 0
ecom to: 
name .t73 int 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t70 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t69 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 2
  name nlist list of ref Listnode 0 0
  :: list of ref Listnode 10 2
    ref ref Listnode 10 2
      tuple Listnode 10 2
        seq no type 10 2
          name nil polymorphic type 1 0
          seq no type 10 2
            call string 10 2
              name squash fn(l: list of string, sep: string): string 11 1
              seq no type 10 2
                call list of string 10 2
                  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
                  seq no type 10 1
                    name nlist list of ref Listnode 0 0
                seq no type 10 1
                  const   string 1 0
    name nil polymorphic type 1 0
ecom: 
:: list of ref Listnode 10 2
  ref ref Listnode 10 2
    tuple Listnode 10 2
      seq no type 10 2
        name nil polymorphic type 1 0
        seq no type 10 2
          call string 10 2
            name squash fn(l: list of string, sep: string): string 11 1
            seq no type 10 2
              call list of string 10 2
                name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
                seq no type 10 1
                  name nlist list of ref Listnode 0 0
              seq no type 10 1
                const   string 1 0
  name nil polymorphic type 1 0
ecom to: 
name nlist list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 2
  tuple Listnode 10 2
    seq no type 10 2
      name nil polymorphic type 1 0
      seq no type 10 2
        call string 10 2
          name squash fn(l: list of string, sep: string): string 11 1
          seq no type 10 2
            call list of string 10 2
              name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
              seq no type 10 1
                name nlist list of ref Listnode 0 0
            seq no type 10 1
              const   string 1 0
ecom: 
ref ref Listnode 10 2
  tuple Listnode 10 2
    seq no type 10 2
      name nil polymorphic type 1 0
      seq no type 10 2
        call string 10 2
          name squash fn(l: list of string, sep: string): string 11 1
          seq no type 10 2
            call list of string 10 2
              name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
              seq no type 10 1
                name nlist list of ref Listnode 0 0
            seq no type 10 1
              const   string 1 0
ecom to: 
name .t70 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 2
  seq no type 10 2
    name nil polymorphic type 1 0
    seq no type 10 2
      call string 10 2
        name squash fn(l: list of string, sep: string): string 11 1
        seq no type 10 2
          call list of string 10 2
            name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
            seq no type 10 1
              name nlist list of ref Listnode 0 0
          seq no type 10 1
            const   string 1 0
ecom to: 
* Listnode 8 0
  name .t70 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t70 ref Listnode 0 0
    const (0) int 6 0
ecom: 
call string 10 2
  name squash fn(l: list of string, sep: string): string 11 1
  seq no type 10 2
    call list of string 10 2
      name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
      seq no type 10 1
        name nlist list of ref Listnode 0 0
    seq no type 10 1
      const   string 1 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t70 ref Listnode 0 0
    const (8) int 6 0
generate desc for big
ecom: 
call list of string 10 2
  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
  seq no type 10 1
    name nlist list of ref Listnode 0 0
ecom to: 
name .t69 list of string 0 0
generate desc for big
ecom: 
name nlist list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b71 big 0 0
    const (64) int 6 0
ecom: 
name .t69 list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name .t69 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t69 list of string 0 0
ecom: 
const   string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t70 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t69 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name arg list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name arg list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 2
  name arg list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 2
      name ctxt ref Context 0 0
      seq no type 10 2
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
        seq no type 10 2
          ref ref Redirlist 10 1
            tuple Redirlist 10 1
              seq no type 10 1
                name nil polymorphic type 1 0
          seq no type 10 1
            name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
      seq no type 10 2
        ref ref Redirlist 10 1
          tuple Redirlist 10 1
            seq no type 10 1
              name nil polymorphic type 1 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name arg list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
ref ref Redirlist 10 1
  tuple Redirlist 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b72 big 0 0
    const (80) int 6 0
generate desc for Redirlist
ecom: 
tuple Redirlist 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
ecom to: 
* Redirlist 8 0
  name .t70 ref Redirlist 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* list of Redirword 8 0
  + int 15 1
    adr int 15 1
      * Redirlist 8 0
        name .t70 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .t70 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .t70 ref Redirlist 0 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b72 big 0 0
    const (88) int 6 0
ecom: 
= string 10 1
  name seps string 0 0
    name arg list of ref Listnode 0 0
  const  string 1 0
ecom: 
const  string 1 0
ecom to: 
name seps string 0 0
  name arg list of ref Listnode 0 0
ecom: 
= string 10 2
  name seps string 0 0
  call string 10 2
    name squash fn(l: list of string, sep: string): string 11 1
    seq no type 10 2
      call list of string 10 2
        name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
        seq no type 10 2
          call list of ref Listnode 10 2
            name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
            seq nothing 10 1
              name ctxt ref Context 0 0
              seq no type 10 1
                const ifs string 1 0
      seq no type 10 1
        const  string 1 0
ecom: 
call string 10 2
  name squash fn(l: list of string, sep: string): string 11 1
  seq no type 10 2
    call list of string 10 2
      name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
      seq no type 10 2
        call list of ref Listnode 10 2
          name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
          seq nothing 10 1
            name ctxt ref Context 0 0
            seq no type 10 1
              const ifs string 1 0
    seq no type 10 1
      const  string 1 0
ecom to: 
name seps string 0 0
generate desc for big
ecom: 
call list of string 10 2
  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
      seq nothing 10 1
        name ctxt ref Context 0 0
        seq no type 10 1
          const ifs string 1 0
ecom to: 
name .t70 list of string 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const ifs string 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b75 big 0 0
    const (64) int 6 0
ecom: 
const ifs string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b75 big 0 0
    const (72) int 6 0
ecom: 
name .t69 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b71 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t69 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
name .t70 list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name .t70 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t70 list of string 0 0
ecom: 
const  string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b72 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name seps string 0 0
  const  	

 string 1 0
ecom: 
const  	

 string 1 0
ecom to: 
name seps string 0 0
ecom: 
= (list of ref Listnode, string) 10 2
  tuple (list of ref Listnode, string) 10 1
    seq no type 10 1
      name nlist list of ref Listnode 0 0
      seq no type 10 1
        name nil polymorphic type 1 0
  call (list of ref Listnode, string) 10 2
    name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 11 1
    seq no type 10 2
      name ctxt ref Context 0 0
      seq no type 10 2
        call list of ref Listnode 10 2
          name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
          seq no type 10 1
            name arg list of ref Listnode 0 0
        seq no type 10 1
          name seps string 0 0
generate desc for (list of ref Listnode, string)
descmap adt offset 0
descmap offset 0
descmap t0 type list of ref Listnode offset 0 (d->offset=0 start=0) returns 0
descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
generate desc for (list of ref Listnode, string)
	desc	$-1,16,"c0"
ecom: 
call (list of ref Listnode, string) 10 2
  name bq fn(ctxt: ref Context, cmd: list of ref Listnode, seps: string): (list of ref Listnode, string) 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      call list of ref Listnode 10 2
        name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
        seq no type 10 1
          name arg list of ref Listnode 0 0
      seq no type 10 1
        name seps string 0 0
ecom to: 
name .b76 (list of ref Listnode, string) 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name arg list of ref Listnode 0 0
ecom to: 
name .t70 list of ref Listnode 0 0
generate desc for big
ecom: 
name arg list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b72 big 0 0
    const (64) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b75 big 0 0
    const (64) int 6 0
ecom: 
name .t70 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b75 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t70 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t70 list of ref Listnode 0 0
ecom: 
name seps string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b75 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  * list of ref Listnode 0 0
    adr int 13 1
      name .b76 (list of ref Listnode, string) 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 0 0
  adr int 13 1
    name .b76 (list of ref Listnode, string) 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b76 (list of ref Listnode, string) 0 0
      const t1 (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b76 (list of ref Listnode, string) 0 0
    const t1 (8) int 6 0
ecom: 
= string 10 1
  name seps string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name seps string 0 0
ecom: 
= list of ref Listnode 10 1
  name arg list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name arg list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name nlist list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    ref ref Listnode 10 1
      tuple Listnode 10 1
        seq no type 10 1
          name n ref Node 0 0
          seq no type 10 1
            const  string 1 0
    name nil polymorphic type 1 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name n ref Node 0 0
        seq no type 10 1
          const  string 1 0
  name nil polymorphic type 1 0
ecom to: 
name nlist list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        const  string 1 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        const  string 1 0
ecom to: 
name .t70 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name n ref Node 0 0
    seq no type 10 1
      const  string 1 0
ecom to: 
* Listnode 8 0
  name .t70 ref Listnode 0 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t70 ref Listnode 0 0
    const (0) int 6 0
ecom: 
const  string 1 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t70 ref Listnode 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t70 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t70 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t69 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t69 list of ref Listnode 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad assign string 1 0
      seq no type 10 1
        const sh: assignment in invalid context string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b75 big 0 0
    const (64) int 6 0
ecom: 
const bad assign string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b75 big 0 0
    const (72) int 6 0
ecom: 
const sh: assignment in invalid context string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b75 big 0 0
    const (80) int 6 0
ecom: 
call no type 10 2
  name panic fn(s: string) 11 1
  seq no type 10 1
    + string 10 1
      + string 10 1
        const bad node type  string 1 0
        cast string 10 1
          * int 8 0
            name n ref Node 0 0
      const  in glomop string 1 0
generate desc for big
ecom: 
+ string 10 1
  + string 10 1
    const bad node type  string 1 0
    cast string 10 1
      * int 8 0
        name n ref Node 0 0
  const  in glomop string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b75 big 0 0
    const (64) int 6 0
ecom: 
+ string 10 1
  const bad node type  string 1 0
  cast string 10 1
    * int 8 0
      name n ref Node 0 0
ecom to: 
name .t70 string 0 0
eacom: 
cast string 10 1
  * int 8 0
    name n ref Node 0 0
ecom: 
cast string 10 1
  * int 8 0
    name n ref Node 0 0
ecom to: 
name .t70 string 0 0
ecom: 
= string 10 1
  name .t70 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t70 string 0 0
ecom: 
name nlist list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
fn: glomoperation
64: argument ctxt ref Context ref 15
72: argument n ref Node ref 17
80: argument redirs ref Redirlist ref 9
88: local .t73 int ref 1
96: local .b72 big ref 13
104: local nlist list of ref Listnode ref 13
112: local arg list of ref Listnode ref 7
120: local .b71 big ref 6
128: local seps string ref 5
136: local wlist list of ref Listnode ref 5
144: local .b75 big ref 4
152: local fd ref Sys->FD ref 4
160: local .b74 Redirword ref 3
192: local arg list of ref Listnode ref 2
200: local .t69 ref Listnode ref 1
208: local .t70 list of ref Listnode ref 1
216: local .b76 (list of ref Listnode, string) ref 1
generate desc for glomoperation
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
descmap .t73 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b72 type big offset 96 (d->offset=96 start=0) returns -1
descmap nlist type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
descmap arg type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
descmap .b71 type big offset 120 (d->offset=120 start=0) returns -1
descmap seps type string offset 128 (d->offset=128 start=0) returns 128
descmap wlist type list of ref Listnode offset 136 (d->offset=136 start=0) returns 136
descmap .b75 type big offset 144 (d->offset=144 start=0) returns -1
descmap fd type ref Sys->FD offset 152 (d->offset=152 start=0) returns 152
descmap adt offset 160
descmap offset 160
descmap fd type ref Sys->FD offset 160 (d->offset=0 start=160) returns 160
descmap w type string offset 168 (d->offset=8 start=160) returns 168
descmap adt offset 176
descmap offset 176
descmap rtype type int offset 176 (d->offset=0 start=176) returns -1
descmap fd1 type int offset 180 (d->offset=4 start=176) returns -1
descmap fd2 type int offset 184 (d->offset=8 start=176) returns -1
descmap r type Redir offset 176 (d->offset=16 start=160) returns -1
descmap .b74 type Redirword offset 160 (d->offset=160 start=0) returns 168
descmap arg type list of ref Listnode offset 192 (d->offset=192 start=0) returns 192
descmap .t69 type ref Listnode offset 200 (d->offset=200 start=0) returns 200
descmap .t70 type list of ref Listnode offset 208 (d->offset=208 start=0) returns 208
descmap adt offset 216
descmap offset 216
descmap t0 type list of ref Listnode offset 216 (d->offset=0 start=216) returns 216
descmap t1 type string offset 224 (d->offset=8 start=216) returns 224
descmap .b76 type (list of ref Listnode, string) offset 216 (d->offset=216 start=0) returns 224
fncom: subsbuiltin 2 4186e8
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad $ arg string 1 0
      seq no type 10 1
        const sh: invalid argument to ${} operator string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b77 big 0 0
    const (64) int 6 0
ecom: 
const bad $ arg string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 big 0 0
    const (72) int 6 0
ecom: 
const sh: invalid argument to ${} operator string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 big 0 0
    const (80) int 6 0
ecom: 
= ref Redirlist 10 1
  name r ref Redirlist 0 0
  ref ref Redirlist 10 1
    name Redirlist Redirlist 10 1
ecom: 
ref ref Redirlist 10 1
  name Redirlist Redirlist 10 1
ecom to: 
name r ref Redirlist 0 0
generate desc for Redirlist
ecom: 
= list of ref Listnode 10 2
  name cmd list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 2
      call list of ref Listnode 10 2
        name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
        seq no type 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            name n ref Node 0 0
            seq no type 10 1
              name r ref Redirlist 0 0
              seq no type 10 1
                name nil list of ref Listnode 1 0
ecom: 
call list of ref Listnode 10 2
  name glob fn(nl: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 2
    call list of ref Listnode 10 2
      name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
      seq no type 10 1
        name ctxt ref Context 0 0
        seq no type 10 1
          name n ref Node 0 0
          seq no type 10 1
            name r ref Redirlist 0 0
            seq no type 10 1
              name nil list of ref Listnode 1 0
ecom to: 
name cmd list of ref Listnode 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name glom fn(ctxt: ref Context, n: ref Node, redirs: ref Redirlist, onto: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name n ref Node 0 0
      seq no type 10 1
        name r ref Redirlist 0 0
        seq no type 10 1
          name nil list of ref Listnode 1 0
ecom to: 
name .t78 list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b79 big 0 0
    const (64) int 6 0
ecom: 
name n ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b79 big 0 0
    const (72) int 6 0
ecom: 
name r ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b79 big 0 0
    const (80) int 6 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b79 big 0 0
    const (88) int 6 0
ecom: 
name .t78 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b77 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t78 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t78 list of ref Listnode 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad $ arg string 1 0
      seq no type 10 1
        const sh: redirection not allowed in substitution string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b79 big 0 0
    const (64) int 6 0
ecom: 
const bad $ arg string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b79 big 0 0
    const (72) int 6 0
ecom: 
const sh: redirection not allowed in substitution string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b79 big 0 0
    const (80) int 6 0
ecom: 
= ref Redirlist 10 1
  name r ref Redirlist 0 0
  name nil polymorphic type 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name r ref Redirlist 0 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name cmd list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name cmd list of ref Listnode 0 0
ecom to: 
name .t78 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t78 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t78 ref Listnode 0 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name cmd list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name cmd list of ref Listnode 0 0
ecom to: 
name .t78 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t78 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t78 ref Listnode 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad $ arg string 1 0
      seq no type 10 1
        const sh: bad builtin name string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b79 big 0 0
    const (64) int 6 0
ecom: 
const bad $ arg string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b79 big 0 0
    const (72) int 6 0
ecom: 
const sh: bad builtin name string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b79 big 0 0
    const (80) int 6 0
ecom: 
= (int, list of Shellbuiltin) 10 2
  tuple (int, list of Shellbuiltin) 10 1
    seq nothing 10 1
      name nil polymorphic type 1 0
      seq nothing 10 1
        name bmods list of Shellbuiltin 0 0
  call (int, list of Shellbuiltin) 10 2
    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
    seq no type 10 2
      * ref Builtins 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
      seq no type 10 1
        * string 10 1
          + int 10 1
            hd ref Listnode 10 1
              name cmd list of ref Listnode 0 0
            const word (8) int 6 0
generate desc for (int, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, list of Shellbuiltin)
	desc	$-1,16,"40"
ecom: 
call (int, list of Shellbuiltin) 10 2
  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
  seq no type 10 2
    * ref Builtins 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
    seq no type 10 1
      * string 10 1
        + int 10 1
          hd ref Listnode 10 1
            name cmd list of ref Listnode 0 0
          const word (8) int 6 0
ecom to: 
name .b80 (int, list of Shellbuiltin) 0 0
generate desc for big
ecom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name ctxt ref Context 0 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b79 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name ctxt ref Context 0 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t78 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t78 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t78 ref Environment 0 0
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name cmd list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b79 big 0 0
    const (72) int 6 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name cmd list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name cmd list of ref Listnode 0 0
ecom to: 
name .t78 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t78 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t78 ref Listnode 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b80 (int, list of Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b80 (int, list of Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const builtin not found string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, nil: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: builtin %s not found string 1 0
            seq no type 10 1
              * string 10 1
                + int 10 1
                  hd ref Listnode 10 1
                    name cmd list of ref Listnode 0 0
                  const word (8) int 6 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, nil: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: builtin %s not found string 1 0
    seq no type 10 1
      * string 10 1
        + int 10 1
          hd ref Listnode 10 1
            name cmd list of ref Listnode 0 0
          const word (8) int 6 0
ecom to: 
name .t78 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap type string offset 72 returns 72
generate desc for big
ecom: 
const sh: builtin %s not found string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 big 0 0
    const (64) int 6 0
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name cmd list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 big 0 0
    const (72) int 6 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name cmd list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name cmd list of ref Listnode 0 0
ecom to: 
name .t81 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t81 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t81 ref Listnode 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b79 big 0 0
    const (64) int 6 0
ecom: 
const builtin not found string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b79 big 0 0
    const (72) int 6 0
ecom: 
name .t78 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b79 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t78 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t78 string 0 0
ecom: 
call list of ref Listnode 10 2
  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode): list of ref Listnode 12 2
    hd Shellbuiltin 10 1
      name bmods list of Shellbuiltin 0 0
    name runsbuiltin nothing 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name myself Sh 1 0
      seq no type 10 1
        name cmd list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
generate desc for big
eacom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom to: 
name .t81 Shellbuiltin 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b79 big 0 0
    const (64) int 6 0
ecom: 
name myself Sh 1 0
ecom to: 
* Sh 8 0
  + int 15 0
    name .b79 big 0 0
    const (72) int 6 0
ecom: 
name cmd list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b79 big 0 0
    const (80) int 6 0
ecom: 
= Shellbuiltin 10 1
  name .t81 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t81 Shellbuiltin 0 0
fn: subsbuiltin
64: argument ctxt ref Context ref 7
72: argument n ref Node ref 5
80: local cmd list of ref Listnode ref 7
88: local .b79 big ref 6
96: local r ref Redirlist ref 4
104: local .b77 big ref 3
112: local bmods list of Shellbuiltin ref 3
120: local .t78 list of ref Listnode ref 1
128: local .t81 ref Listnode ref 1
136: local .b80 (int, list of Shellbuiltin) ref 1
generate desc for subsbuiltin
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap n type ref Node offset 72 (d->offset=72 start=0) returns 72
descmap cmd type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap .b79 type big offset 88 (d->offset=88 start=0) returns -1
descmap r type ref Redirlist offset 96 (d->offset=96 start=0) returns 96
descmap .b77 type big offset 104 (d->offset=104 start=0) returns -1
descmap bmods type list of Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
descmap .t78 type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
descmap .t81 type ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap adt offset 136
descmap offset 136
descmap t0 type int offset 136 (d->offset=0 start=136) returns -1
descmap t1 type list of Shellbuiltin offset 144 (d->offset=8 start=136) returns 144
descmap .b80 type (int, list of Shellbuiltin) offset 136 (d->offset=136 start=0) returns 144
fncom: getbq 2 4187a8
ecom: 
= array of byte 10 1
  name buf array of byte 0 0
  array array of byte 10 1
    const ATOMICIO (8192) int 6 0
ecom: 
array array of byte 10 1
  const ATOMICIO (8192) int 6 0
ecom to: 
name buf array of byte 0 0
generate desc for byte
generate desc for byte
	desc	$-1,1,""
ecom: 
= int 10 1
  name buflen int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name buflen int 0 0
eacom: 
= int 10 2
  name n int 0 0
  call int 10 2
    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
      name sys Sys 1 0
      name read nothing 11 1
    seq no type 10 2
      name fd ref Sys->FD 0 0
      seq no type 10 2
        slice array of byte 10 1
          name buf array of byte 0 0
          seq no type 10 1
            name buflen int 0 0
            nothing no type 10 1
        seq no type 10 1
          - int 10 1
            len int 10 1
              name buf array of byte 0 0
            name buflen int 0 0
ecom: 
= int 10 2
  name n int 0 0
  call int 10 2
    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
      name sys Sys 1 0
      name read nothing 11 1
    seq no type 10 2
      name fd ref Sys->FD 0 0
      seq no type 10 2
        slice array of byte 10 1
          name buf array of byte 0 0
          seq no type 10 1
            name buflen int 0 0
            nothing no type 10 1
        seq no type 10 1
          - int 10 1
            len int 10 1
              name buf array of byte 0 0
            name buflen int 0 0
ecom to: 
name .t82 int 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
    name sys Sys 1 0
    name read nothing 11 1
  seq no type 10 2
    name fd ref Sys->FD 0 0
    seq no type 10 2
      slice array of byte 10 1
        name buf array of byte 0 0
        seq no type 10 1
          name buflen int 0 0
          nothing no type 10 1
      seq no type 10 1
        - int 10 1
          len int 10 1
            name buf array of byte 0 0
          name buflen int 0 0
ecom to: 
name n int 0 0
generate desc for big
ecom: 
name fd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b83 big 0 0
    const (64) int 6 0
ecom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    name buflen int 0 0
    nothing no type 10 1
ecom to: 
* array of byte 8 0
  + int 15 0
    name .b83 big 0 0
    const (72) int 6 0
ecom: 
len int 10 1
  name buf array of byte 0 0
ecom to: 
name .t84 int 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
* array of byte 8 0
  + int 15 0
    name .b83 big 0 0
    const (72) int 6 0
ecom: 
- int 10 1
  len int 10 1
    name buf array of byte 0 0
  name buflen int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b83 big 0 0
    const (80) int 6 0
ecom: 
len int 10 1
  name buf array of byte 0 0
ecom to: 
name .t84 int 0 0
ecom: 
+= int 10 1
  name buflen int 0 0
  name n int 0 0
eacom: 
len int 10 1
  name buf array of byte 0 0
ecom: 
len int 10 1
  name buf array of byte 0 0
ecom to: 
name .t84 int 0 0
ecom: 
= array of byte 10 1
  name nbuf array of byte 0 0
  array array of byte 10 1
    * int 10 1
      name buflen int 0 0
      const (2) int 6 0
ecom: 
array array of byte 10 1
  * int 10 1
    name buflen int 0 0
    const (2) int 6 0
ecom to: 
name nbuf array of byte 0 0
eacom: 
* int 10 1
  name buflen int 0 0
  const (2) int 6 0
ecom: 
* int 10 1
  name buflen int 0 0
  const (2) int 6 0
ecom to: 
name .t84 int 0 0
generate desc for byte
ecom: 
= array of byte 10 2
  slice array of byte 10 1
    name nbuf array of byte 0 0
    seq no type 10 1
      const (0) int 6 0
      nothing no type 10 1
  slice array of byte 10 1
    name buf array of byte 0 0
    seq no type 10 1
      const (0) int 6 0
      nothing no type 10 1
eacom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    const (0) int 6 0
    nothing no type 10 1
ecom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    const (0) int 6 0
    nothing no type 10 1
ecom to: 
name .t85 array of byte 0 0
ecom: 
len int 10 1
  name buf array of byte 0 0
ecom to: 
name .t84 int 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
name .t85 array of byte 0 0
ecom: 
= array of byte 10 1
  name .t85 array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name .t85 array of byte 0 0
ecom: 
= array of byte 10 1
  name buf array of byte 0 0
  name nbuf array of byte 0 0
ecom: 
name nbuf array of byte 0 0
ecom to: 
name buf array of byte 0 0
ecom: 
= array of byte 10 1
  name nbuf array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name nbuf array of byte 0 0
ecom: 
= (int, list of string) 10 2
  tuple (int, list of string) 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name l list of string 0 0
  call (int, list of string) 10 2
    -> fn(s: string, delim: string): (int, list of string) 12 1
      name sys Sys 1 0
      name tokenize nothing 11 1
    seq no type 10 2
      cast string 10 1
        slice array of byte 10 1
          name buf array of byte 0 0
          seq no type 10 1
            const (0) int 6 0
            name buflen int 0 0
      seq no type 10 1
        name seps string 0 0
generate desc for (int, list of string)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type list of string offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, list of string)
	desc	$-1,16,"40"
ecom: 
call (int, list of string) 10 2
  -> fn(s: string, delim: string): (int, list of string) 12 1
    name sys Sys 1 0
    name tokenize nothing 11 1
  seq no type 10 2
    cast string 10 1
      slice array of byte 10 1
        name buf array of byte 0 0
        seq no type 10 1
          const (0) int 6 0
          name buflen int 0 0
    seq no type 10 1
      name seps string 0 0
ecom to: 
name .b86 (int, list of string) 0 0
generate desc for big
ecom: 
cast string 10 1
  slice array of byte 10 1
    name buf array of byte 0 0
    seq no type 10 1
      const (0) int 6 0
      name buflen int 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b83 big 0 0
    const (64) int 6 0
eacom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    const (0) int 6 0
    name buflen int 0 0
ecom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    const (0) int 6 0
    name buflen int 0 0
ecom to: 
name .t85 array of byte 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
name .t85 array of byte 0 0
ecom: 
= array of byte 10 1
  name .t85 array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name .t85 array of byte 0 0
ecom: 
name seps string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b83 big 0 0
    const (72) int 6 0
ecom: 
= list of string 10 1
  * list of string 0 0
    + int 13 1
      adr int 13 1
        name .b86 (int, list of string) 0 0
      const t1 (8) int 6 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
* list of string 0 0
  + int 13 1
    adr int 13 1
      name .b86 (int, list of string) 0 0
    const t1 (8) int 6 0
ecom: 
= list of string 10 1
  name l list of string 0 0
  :: list of string 10 1
    cast string 10 1
      slice array of byte 10 1
        name buf array of byte 0 0
        seq no type 10 1
          const (0) int 6 0
          name buflen int 0 0
    name nil polymorphic type 1 0
ecom: 
:: list of string 10 1
  cast string 10 1
    slice array of byte 10 1
      name buf array of byte 0 0
      seq no type 10 1
        const (0) int 6 0
        name buflen int 0 0
  name nil polymorphic type 1 0
ecom to: 
name l list of string 0 0
eacom: 
cast string 10 1
  slice array of byte 10 1
    name buf array of byte 0 0
    seq no type 10 1
      const (0) int 6 0
      name buflen int 0 0
ecom: 
cast string 10 1
  slice array of byte 10 1
    name buf array of byte 0 0
    seq no type 10 1
      const (0) int 6 0
      name buflen int 0 0
ecom to: 
name .t85 string 0 0
eacom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    const (0) int 6 0
    name buflen int 0 0
ecom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    const (0) int 6 0
    name buflen int 0 0
ecom to: 
name .t85 array of byte 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
name .t85 array of byte 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t87 list of string 0 0
ecom: 
= string 10 1
  name .t85 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t85 string 0 0
ecom: 
= list of string 10 1
  name .t87 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t87 list of string 0 0
ecom: 
= array of byte 10 1
  name buf array of byte 0 0
  name nil polymorphic type 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name buf array of byte 0 0
ecom: 
call list of ref Listnode 10 2
  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
  seq no type 10 1
    name l list of string 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name l list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b83 big 0 0
    const (64) int 6 0
fn: getbq
64: argument <nil> ref Context ref 0
72: argument fd ref Sys->FD ref 1
80: argument seps string ref 2
88: local buflen int ref 8
92: local n int ref 2
96: local .t82 int ref 1
100: local .t84 int ref 1
104: local buf array of byte ref 9
112: local .b83 big ref 3
120: local l list of string ref 3
128: local nbuf array of byte ref 3
136: local .t85 array of byte ref 1
144: local .t87 list of string ref 1
152: local .b86 (int, list of string) ref 1
generate desc for getbq
descmap offset 0
descmap type ref Context offset 64 returns 64
descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
descmap seps type string offset 80 (d->offset=80 start=0) returns 80
descmap buflen type int offset 88 (d->offset=88 start=0) returns -1
descmap n type int offset 92 (d->offset=92 start=0) returns -1
descmap .t82 type int offset 96 (d->offset=96 start=0) returns -1
descmap .t84 type int offset 100 (d->offset=100 start=0) returns -1
descmap buf type array of byte offset 104 (d->offset=104 start=0) returns 104
descmap .b83 type big offset 112 (d->offset=112 start=0) returns -1
descmap l type list of string offset 120 (d->offset=120 start=0) returns 120
descmap nbuf type array of byte offset 128 (d->offset=128 start=0) returns 128
descmap .t85 type array of byte offset 136 (d->offset=136 start=0) returns 136
descmap .t87 type list of string offset 144 (d->offset=144 start=0) returns 144
descmap adt offset 152
descmap offset 152
descmap t0 type int offset 152 (d->offset=0 start=152) returns -1
descmap t1 type list of string offset 160 (d->offset=8 start=152) returns 160
descmap .b86 type (int, list of string) offset 152 (d->offset=152 start=0) returns 160
fncom: bq 2 418868
ecom: 
= array of ref Sys->FD 10 1
  name fds array of ref Sys->FD 0 0
  array array of ref Sys->FD 10 1
    const (2) int 6 0
ecom: 
array array of ref Sys->FD 10 1
  const (2) int 6 0
ecom to: 
name fds array of ref Sys->FD 0 0
generate desc for ref Sys->FD
generate desc for ref Sys->FD
	desc	$-1,8,"80"
eacom: 
call int 10 2
  -> fn(fds: array of ref Sys->FD): int 12 1
    name sys Sys 1 0
    name pipe nothing 11 1
  seq no type 10 1
    name fds array of ref Sys->FD 0 0
ecom: 
call int 10 2
  -> fn(fds: array of ref Sys->FD): int 12 1
    name sys Sys 1 0
    name pipe nothing 11 1
  seq no type 10 1
    name fds array of ref Sys->FD 0 0
ecom to: 
name .t88 int 0 0
generate desc for big
ecom: 
name fds array of ref Sys->FD 0 0
ecom to: 
* array of ref Sys->FD 8 0
  + int 15 0
    name .b89 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const no pipe string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: cannot make pipe: %r string 1 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: cannot make pipe: %r string 1 0
ecom to: 
name .t90 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const sh: cannot make pipe: %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b91 big 0 0
    const (64) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b89 big 0 0
    const (64) int 6 0
ecom: 
const no pipe string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b89 big 0 0
    const (72) int 6 0
ecom: 
name .t90 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b89 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t90 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t90 string 0 0
ecom: 
= ref Redirlist 10 2
  name r ref Redirlist 0 0
  ref ref Redirlist 10 2
    tuple Redirlist 10 2
      seq no type 10 2
        :: list of Redirword 10 2
          tuple Redirword 10 2
            seq no type 10 2
              * ref Sys->FD 10 1
                indx big 10 1
                  name fds array of ref Sys->FD 0 0
                  const (1) int 6 0
              seq no type 10 1
                name nil polymorphic type 1 0
                seq no type 10 1
                  tuple Redir 10 1
                    seq no type 10 1
                      const OWRITE (1) int 6 0
                      seq no type 10 1
                        const (1) int 6 0
                        seq no type 10 1
                          const (-1) int 6 0
          name nil polymorphic type 1 0
ecom: 
ref ref Redirlist 10 2
  tuple Redirlist 10 2
    seq no type 10 2
      :: list of Redirword 10 2
        tuple Redirword 10 2
          seq no type 10 2
            * ref Sys->FD 10 1
              indx big 10 1
                name fds array of ref Sys->FD 0 0
                const (1) int 6 0
            seq no type 10 1
              name nil polymorphic type 1 0
              seq no type 10 1
                tuple Redir 10 1
                  seq no type 10 1
                    const OWRITE (1) int 6 0
                    seq no type 10 1
                      const (1) int 6 0
                      seq no type 10 1
                        const (-1) int 6 0
        name nil polymorphic type 1 0
ecom to: 
name r ref Redirlist 0 0
generate desc for Redirlist
ecom: 
tuple Redirlist 10 2
  seq no type 10 2
    :: list of Redirword 10 2
      tuple Redirword 10 2
        seq no type 10 2
          * ref Sys->FD 10 1
            indx big 10 1
              name fds array of ref Sys->FD 0 0
              const (1) int 6 0
          seq no type 10 1
            name nil polymorphic type 1 0
            seq no type 10 1
              tuple Redir 10 1
                seq no type 10 1
                  const OWRITE (1) int 6 0
                  seq no type 10 1
                    const (1) int 6 0
                    seq no type 10 1
                      const (-1) int 6 0
      name nil polymorphic type 1 0
ecom to: 
* Redirlist 8 0
  name .t90 ref Redirlist 0 0
ecom: 
:: list of Redirword 10 2
  tuple Redirword 10 2
    seq no type 10 2
      * ref Sys->FD 10 1
        indx big 10 1
          name fds array of ref Sys->FD 0 0
          const (1) int 6 0
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          tuple Redir 10 1
            seq no type 10 1
              const OWRITE (1) int 6 0
              seq no type 10 1
                const (1) int 6 0
                seq no type 10 1
                  const (-1) int 6 0
  name nil polymorphic type 1 0
ecom to: 
* list of Redirword 8 0
  + int 15 1
    adr int 15 1
      * Redirlist 8 0
        name .t90 ref Redirlist 0 0
    const (0) int 6 0
eacom: 
tuple Redirword 10 2
  seq no type 10 2
    * ref Sys->FD 10 1
      indx big 10 1
        name fds array of ref Sys->FD 0 0
        const (1) int 6 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        tuple Redir 10 1
          seq no type 10 1
            const OWRITE (1) int 6 0
            seq no type 10 1
              const (1) int 6 0
              seq no type 10 1
                const (-1) int 6 0
generate desc for Redirword
ecom: 
tuple Redirword 10 2
  seq no type 10 2
    * ref Sys->FD 10 1
      indx big 10 1
        name fds array of ref Sys->FD 0 0
        const (1) int 6 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        tuple Redir 10 1
          seq no type 10 1
            const OWRITE (1) int 6 0
            seq no type 10 1
              const (1) int 6 0
              seq no type 10 1
                const (-1) int 6 0
ecom to: 
name .b92 Redirword 0 0
ecom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (1) int 6 0
ecom to: 
* ref Sys->FD 0 0
  + int 13 1
    adr int 13 1
      name .b92 Redirword 0 0
    const (0) int 6 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name fds array of ref Sys->FD 0 0
  const (1) int 6 0
ecom to: 
name .b91 big 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b92 Redirword 0 0
    const (8) int 6 0
ecom: 
tuple Redir 10 1
  seq no type 10 1
    const OWRITE (1) int 6 0
    seq no type 10 1
      const (1) int 6 0
      seq no type 10 1
        const (-1) int 6 0
ecom to: 
* Redir 0 0
  + int 13 1
    adr int 13 1
      name .b92 Redirword 0 0
    const (16) int 6 0
ecom: 
const OWRITE (1) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b92 Redirword 0 0
          const (16) int 6 0
    const (0) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b92 Redirword 0 0
          const (16) int 6 0
    const (4) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      * Redir 0 0
        + int 13 1
          adr int 13 1
            name .b92 Redirword 0 0
          const (16) int 6 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t93 list of Redirword 0 0
generate desc for Redirword
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b92 Redirword 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name .b92 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b92 Redirword 0 0
      const w (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b92 Redirword 0 0
    const w (8) int 6 0
ecom: 
= list of Redirword 10 1
  name .t93 list of Redirword 0 0
  name nil list of Redirword 1 0
ecom: 
name nil list of Redirword 1 0
ecom to: 
name .t93 list of Redirword 0 0
ecom: 
= ref Redirlist 10 1
  name .t90 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .t90 ref Redirlist 0 0
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 10 1
    indx big 10 1
      name fds array of ref Sys->FD 0 0
      const (1) int 6 0
  name nil polymorphic type 1 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name fds array of ref Sys->FD 0 0
  const (1) int 6 0
ecom to: 
name .b91 big 0 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 8 1
  name .b91 big 0 0
ecom: 
= chan of (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  chan chan of (int, ref Expropagate) 10 1
    const (0) int 6 0
ecom: 
chan chan of (int, ref Expropagate) 10 1
  const (0) int 6 0
ecom to: 
name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, ref Expropagate)
	desc	$-1,16,"40"
ecom: 
spawn nothing 10 2
  call no type 10 2
    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        const (0) int 6 0
        seq no type 10 1
          name cmd list of ref Listnode 0 0
          seq no type 10 1
            name r ref Redirlist 0 0
            seq no type 10 1
              name startchan chan of (int, ref Expropagate) 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b91 big 0 0
    const (64) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b91 big 0 0
    const (72) int 6 0
ecom: 
name cmd list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b91 big 0 0
    const (80) int 6 0
ecom: 
name r ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b91 big 0 0
    const (88) int 6 0
ecom: 
name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
* chan of (int, ref Expropagate) 8 0
  + int 15 0
    name .b91 big 0 0
    const (96) int 6 0
ecom: 
= (int, ref Expropagate) 10 2
  tuple (int, ref Expropagate) 10 1
    seq nothing 10 1
      name exepid int 0 0
      seq nothing 10 1
        name exprop ref Expropagate 0 0
  <- (int, ref Expropagate) 10 1
    name startchan chan of (int, ref Expropagate) 0 0
ecom: 
<- (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
name exepid (int, ref Expropagate) 0 0
ecom: 
= ref Redirlist 10 1
  name r ref Redirlist 0 0
  name nil polymorphic type 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name r ref Redirlist 0 0
ecom: 
= list of ref Listnode 10 2
  name bqlist list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 11 1
    seq no type 10 2
      name ctxt ref Context 0 0
      seq no type 10 2
        * ref Sys->FD 10 1
          indx big 10 1
            name fds array of ref Sys->FD 0 0
            const (0) int 6 0
        seq no type 10 1
          name seps string 0 0
ecom: 
call list of ref Listnode 10 2
  name getbq fn(nil: ref Context, fd: ref Sys->FD, seps: string): list of ref Listnode 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      * ref Sys->FD 10 1
        indx big 10 1
          name fds array of ref Sys->FD 0 0
          const (0) int 6 0
      seq no type 10 1
        name seps string 0 0
ecom to: 
name bqlist list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b91 big 0 0
    const (64) int 6 0
ecom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (0) int 6 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b91 big 0 0
    const (72) int 6 0
eacom: 
* ref Sys->FD 10 1
  indx big 10 1
    name fds array of ref Sys->FD 0 0
    const (0) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name fds array of ref Sys->FD 0 0
  const (0) int 6 0
ecom to: 
name .b89 big 0 0
ecom: 
name seps string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b91 big 0 0
    const (80) int 6 0
ecom: 
used string 10 2
  call string 10 2
    name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        :: list of int 10 1
          name exepid int 0 0
          name nil polymorphic type 1 0
ecom: 
call string 10 2
  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      :: list of int 10 1
        name exepid int 0 0
        name nil polymorphic type 1 0
ecom to: 
name .t93 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b91 big 0 0
    const (64) int 6 0
ecom: 
:: list of int 10 1
  name exepid int 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b91 big 0 0
    const (72) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t90 list of int 0 0
ecom: 
= list of int 10 1
  name .t90 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t90 list of int 0 0
ecom: 
= string 10 1
  name .t93 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t93 string 0 0
ecom: 
raise nothing 10 1
  * string 8 0
    name exprop ref Expropagate 0 0
ecom: 
tuple (list of ref Listnode, polymorphic type) 10 1
  seq no type 10 1
    name bqlist list of ref Listnode 0 0
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
* (list of ref Listnode, polymorphic type) 8 0
  name .ret int 0 0
ecom: 
name bqlist list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 1
    adr int 15 1
      * (list of ref Listnode, polymorphic type) 8 0
        name .ret int 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  + int 15 1
    adr int 15 1
      * (list of ref Listnode, polymorphic type) 8 0
        name .ret int 0 0
    const (8) int 6 0
fn: bq
64: argument ctxt ref Context ref 4
72: argument cmd list of ref Listnode ref 1
80: argument seps string ref 1
88: local exepid int ref 2
96: local exprop ref Expropagate ref 3
104: local .t88 int ref 1
112: local .b91 big ref 6
120: local fds array of ref Sys->FD ref 5
128: local .b89 big ref 3
136: local r ref Redirlist ref 3
144: local startchan chan of (int, ref Expropagate) ref 3
152: local bqlist list of ref Listnode ref 2
160: local .t90 string ref 1
168: local .t93 list of Redirword ref 1
176: local .b92 Redirword ref 1
generate desc for bq
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap cmd type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap seps type string offset 80 (d->offset=80 start=0) returns 80
descmap exepid type int offset 88 (d->offset=88 start=0) returns -1
descmap exprop type ref Expropagate offset 96 (d->offset=96 start=0) returns 96
descmap .t88 type int offset 104 (d->offset=104 start=0) returns -1
descmap .b91 type big offset 112 (d->offset=112 start=0) returns -1
descmap fds type array of ref Sys->FD offset 120 (d->offset=120 start=0) returns 120
descmap .b89 type big offset 128 (d->offset=128 start=0) returns -1
descmap r type ref Redirlist offset 136 (d->offset=136 start=0) returns 136
descmap startchan type chan of (int, ref Expropagate) offset 144 (d->offset=144 start=0) returns 144
descmap bqlist type list of ref Listnode offset 152 (d->offset=152 start=0) returns 152
descmap .t90 type string offset 160 (d->offset=160 start=0) returns 160
descmap .t93 type list of Redirword offset 168 (d->offset=168 start=0) returns 168
descmap adt offset 176
descmap offset 176
descmap fd type ref Sys->FD offset 176 (d->offset=0 start=176) returns 176
descmap w type string offset 184 (d->offset=8 start=176) returns 184
descmap adt offset 192
descmap offset 192
descmap rtype type int offset 192 (d->offset=0 start=192) returns -1
descmap fd1 type int offset 196 (d->offset=4 start=192) returns -1
descmap fd2 type int offset 200 (d->offset=8 start=192) returns -1
descmap r type Redir offset 192 (d->offset=16 start=176) returns -1
descmap .b92 type Redirword offset 176 (d->offset=176 start=0) returns 184
fncom: rdir 2 418928
fncom: concatwords 3 4189e8
ecom: 
= string 10 2
  * string 8 0
    + int 15 1
      name p1 ref Listnode 0 0
      const word (8) int 6 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        name p1 ref Listnode 0 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      name p1 ref Listnode 0 0
ecom to: 
* string 8 0
  + int 15 1
    name p1 ref Listnode 0 0
    const word (8) int 6 0
generate desc for big
ecom: 
* ref Node 8 0
  name p1 ref Listnode 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b94 big 0 0
    const (64) int 6 0
ecom: 
= string 10 2
  * string 8 0
    + int 15 1
      name p2 ref Listnode 0 0
      const word (8) int 6 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        name p2 ref Listnode 0 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      name p2 ref Listnode 0 0
ecom to: 
* string 8 0
  + int 15 1
    name p2 ref Listnode 0 0
    const word (8) int 6 0
generate desc for big
ecom: 
* ref Node 8 0
  name p2 ref Listnode 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b94 big 0 0
    const (64) int 6 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        + string 10 1
          * string 8 0
            + int 15 1
              name p1 ref Listnode 0 0
              const word (8) int 6 0
          * string 8 0
            + int 15 1
              name p2 ref Listnode 0 0
              const word (8) int 6 0
ecom to: 
* ref Listnode 8 0
  name .ret int 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      + string 10 1
        * string 8 0
          + int 15 1
            name p1 ref Listnode 0 0
            const word (8) int 6 0
        * string 8 0
          + int 15 1
            name p2 ref Listnode 0 0
            const word (8) int 6 0
ecom to: 
* Listnode 8 0
  name .t95 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t95 ref Listnode 0 0
    const (0) int 6 0
ecom: 
+ string 10 1
  * string 8 0
    + int 15 1
      name p1 ref Listnode 0 0
      const word (8) int 6 0
  * string 8 0
    + int 15 1
      name p2 ref Listnode 0 0
      const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t95 ref Listnode 0 0
    const (8) int 6 0
ecom: 
* string 8 0
  + int 15 1
    name p1 ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
name .t96 string 0 0
ecom: 
= string 10 1
  name .t96 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t96 string 0 0
ecom: 
= ref Listnode 10 1
  name .t95 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t95 ref Listnode 0 0
fn: concatwords
64: argument p1 ref Listnode ref 5
72: argument p2 ref Listnode ref 5
80: local .b94 big ref 2
88: local .t95 ref Listnode ref 1
96: local .t96 string ref 1
generate desc for concatwords
descmap offset 0
descmap p1 type ref Listnode offset 64 (d->offset=64 start=0) returns 64
descmap p2 type ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap .b94 type big offset 80 (d->offset=80 start=0) returns -1
descmap .t95 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
descmap .t96 type string offset 96 (d->offset=96 start=0) returns 96
fncom: concat 2 418aa8
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad concatenation string 1 0
      seq no type 10 1
        const sh: null list in concatenation string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b97 big 0 0
    const (64) int 6 0
ecom: 
const bad concatenation string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b97 big 0 0
    const (72) int 6 0
ecom: 
const sh: null list in concatenation string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b97 big 0 0
    const (80) int 6 0
eacom: 
tl list of ref Listnode 10 1
  name nl1 list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name nl1 list of ref Listnode 0 0
ecom to: 
name .t98 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t98 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t98 list of ref Listnode 0 0
eacom: 
tl list of ref Listnode 10 1
  name nl2 list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name nl2 list of ref Listnode 0 0
ecom to: 
name .t98 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t98 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t98 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name p1 list of ref Listnode 0 0
  name nl1 list of ref Listnode 0 0
ecom: 
name nl1 list of ref Listnode 0 0
ecom to: 
name p1 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name p2 list of ref Listnode 0 0
    name p1 list of ref Listnode 0 0
  name nl2 list of ref Listnode 0 0
ecom: 
name nl2 list of ref Listnode 0 0
ecom to: 
name p2 list of ref Listnode 0 0
  name p1 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 2
  name ret list of ref Listnode 0 0
  :: list of ref Listnode 10 2
    call ref Listnode 10 2
      name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
      seq no type 10 2
        hd ref Listnode 10 1
          name p1 list of ref Listnode 0 0
        seq no type 10 1
          hd ref Listnode 10 1
            name p2 list of ref Listnode 0 0
    name ret list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 2
  call ref Listnode 10 2
    name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
    seq no type 10 2
      hd ref Listnode 10 1
        name p1 list of ref Listnode 0 0
      seq no type 10 1
        hd ref Listnode 10 1
          name p2 list of ref Listnode 0 0
  name ret list of ref Listnode 0 0
ecom to: 
name ret list of ref Listnode 0 0
eacom: 
call ref Listnode 10 2
  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
  seq no type 10 2
    hd ref Listnode 10 1
      name p1 list of ref Listnode 0 0
    seq no type 10 1
      hd ref Listnode 10 1
        name p2 list of ref Listnode 0 0
ecom: 
call ref Listnode 10 2
  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
  seq no type 10 2
    hd ref Listnode 10 1
      name p1 list of ref Listnode 0 0
    seq no type 10 1
      hd ref Listnode 10 1
        name p2 list of ref Listnode 0 0
ecom to: 
name .t98 ref Listnode 0 0
generate desc for big
ecom: 
hd ref Listnode 10 1
  name p1 list of ref Listnode 0 0
ecom to: 
* ref Listnode 8 0
  + int 15 0
    name .b97 big 0 0
    const (64) int 6 0
ecom: 
hd ref Listnode 10 1
  name p2 list of ref Listnode 0 0
ecom to: 
* ref Listnode 8 0
  + int 15 0
    name .b97 big 0 0
    const (72) int 6 0
ecom: 
= ref Listnode 10 1
  name .t98 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t98 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name p2 list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name p2 list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name p2 list of ref Listnode 0 0
ecom to: 
name p2 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name p1 list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name p1 list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name p1 list of ref Listnode 0 0
ecom to: 
name p1 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name p2 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name p2 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name p1 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name p1 list of ref Listnode 0 0
ecom: 
len int 10 1
  name nl2 list of ref Listnode 0 0
ecom to: 
name .t99 int 0 0
eacom: 
len int 10 1
  name nl1 list of ref Listnode 0 0
ecom: 
len int 10 1
  name nl1 list of ref Listnode 0 0
ecom to: 
name .t100 int 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad concatenation string 1 0
      seq no type 10 1
        const sh: lists of differing sizes can't be concatenated string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b97 big 0 0
    const (64) int 6 0
ecom: 
const bad concatenation string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b97 big 0 0
    const (72) int 6 0
ecom: 
const sh: lists of differing sizes can't be concatenated string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b97 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 2
  name ret list of ref Listnode 0 0
  :: list of ref Listnode 10 2
    call ref Listnode 10 2
      name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
      seq no type 10 2
        hd ref Listnode 10 1
          name nl1 list of ref Listnode 0 0
        seq no type 10 1
          hd ref Listnode 10 1
            name nl2 list of ref Listnode 0 0
    name ret list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 2
  call ref Listnode 10 2
    name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
    seq no type 10 2
      hd ref Listnode 10 1
        name nl1 list of ref Listnode 0 0
      seq no type 10 1
        hd ref Listnode 10 1
          name nl2 list of ref Listnode 0 0
  name ret list of ref Listnode 0 0
ecom to: 
name ret list of ref Listnode 0 0
eacom: 
call ref Listnode 10 2
  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
  seq no type 10 2
    hd ref Listnode 10 1
      name nl1 list of ref Listnode 0 0
    seq no type 10 1
      hd ref Listnode 10 1
        name nl2 list of ref Listnode 0 0
ecom: 
call ref Listnode 10 2
  name concatwords fn(p1: ref Listnode, p2: ref Listnode): ref Listnode 11 1
  seq no type 10 2
    hd ref Listnode 10 1
      name nl1 list of ref Listnode 0 0
    seq no type 10 1
      hd ref Listnode 10 1
        name nl2 list of ref Listnode 0 0
ecom to: 
name .t98 ref Listnode 0 0
generate desc for big
ecom: 
hd ref Listnode 10 1
  name nl1 list of ref Listnode 0 0
ecom to: 
* ref Listnode 8 0
  + int 15 0
    name .b97 big 0 0
    const (64) int 6 0
ecom: 
hd ref Listnode 10 1
  name nl2 list of ref Listnode 0 0
ecom to: 
* ref Listnode 8 0
  + int 15 0
    name .b97 big 0 0
    const (72) int 6 0
ecom: 
= ref Listnode 10 1
  name .t98 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t98 ref Listnode 0 0
ecom: 
= (list of ref Listnode, list of ref Listnode) 10 2
  tuple (list of ref Listnode, list of ref Listnode) 10 1
    seq no type 10 1
      name nl1 list of ref Listnode 0 0
      seq no type 10 1
        name nl2 list of ref Listnode 0 0
  tuple (list of ref Listnode, list of ref Listnode) 10 2
    seq no type 10 2
      tl list of ref Listnode 10 1
        name nl1 list of ref Listnode 0 0
      seq no type 10 1
        tl list of ref Listnode 10 1
          name nl2 list of ref Listnode 0 0
generate desc for (list of ref Listnode, list of ref Listnode)
descmap adt offset 0
descmap offset 0
descmap t0 type list of ref Listnode offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
generate desc for (list of ref Listnode, list of ref Listnode)
	desc	$-1,16,"c0"
ecom: 
tuple (list of ref Listnode, list of ref Listnode) 10 2
  seq no type 10 2
    tl list of ref Listnode 10 1
      name nl1 list of ref Listnode 0 0
    seq no type 10 1
      tl list of ref Listnode 10 1
        name nl2 list of ref Listnode 0 0
ecom to: 
name .b101 (list of ref Listnode, list of ref Listnode) 0 0
ecom: 
tl list of ref Listnode 10 1
  name nl1 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 0 0
  + int 13 1
    adr int 13 1
      name .b101 (list of ref Listnode, list of ref Listnode) 0 0
    const (0) int 6 0
ecom: 
tl list of ref Listnode 10 1
  name nl2 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 0 0
  + int 13 1
    adr int 13 1
      name .b101 (list of ref Listnode, list of ref Listnode) 0 0
    const (8) int 6 0
ecom: 
= list of ref Listnode 10 1
  * list of ref Listnode 0 0
    adr int 13 1
      name .b101 (list of ref Listnode, list of ref Listnode) 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 0 0
  adr int 13 1
    name .b101 (list of ref Listnode, list of ref Listnode) 0 0
ecom: 
= list of ref Listnode 10 1
  * list of ref Listnode 0 0
    + int 13 1
      adr int 13 1
        name .b101 (list of ref Listnode, list of ref Listnode) 0 0
      const t1 (8) int 6 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 0 0
  + int 13 1
    adr int 13 1
      name .b101 (list of ref Listnode, list of ref Listnode) 0 0
    const t1 (8) int 6 0
ecom: 
call list of ref Listnode 10 2
  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ret list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name ret list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b97 big 0 0
    const (64) int 6 0
fn: concat
64: argument ctxt ref Context ref 2
72: argument nl1 list of ref Listnode ref 9
80: argument nl2 list of ref Listnode ref 8
88: local .t100 int ref 1
92: local .t99 int ref 1
96: local .b97 big ref 5
104: local p1 list of ref Listnode ref 5
112: local p2 list of ref Listnode ref 5
120: local ret list of ref Listnode ref 5
128: local .t98 list of ref Listnode ref 1
136: local .b101 (list of ref Listnode, list of ref Listnode) ref 1
generate desc for concat
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap nl1 type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap nl2 type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap .t100 type int offset 88 (d->offset=88 start=0) returns -1
descmap .t99 type int offset 92 (d->offset=92 start=0) returns -1
descmap .b97 type big offset 96 (d->offset=96 start=0) returns -1
descmap p1 type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
descmap p2 type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
descmap ret type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
descmap .t98 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap adt offset 136
descmap offset 136
descmap t0 type list of ref Listnode offset 136 (d->offset=0 start=136) returns 136
descmap t1 type list of ref Listnode offset 144 (d->offset=8 start=136) returns 144
descmap .b101 type (list of ref Listnode, list of ref Listnode) offset 136 (d->offset=136 start=0) returns 144
fncom: runasync 7 418b68
ecom: 
= int 10 2
  name pid int 0 0
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const FORKFD (2) int 6 0
      seq no type 10 1
        name nil list of int 1 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const FORKFD (2) int 6 0
    seq no type 10 1
      name nil list of int 1 0
ecom to: 
name pid int 0 0
generate desc for big
ecom: 
const FORKFD (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b102 big 0 0
    const (64) int 6 0
ecom: 
name nil list of int 1 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b102 big 0 0
    const (72) int 6 0
ecom: 
= ref Context 10 2
  name ctxt ref Context 0 0
  call ref Context 10 2
    name copy fn(ctxt: self ref Context, copyenv: int): ref Context 11 1
    seq nothing 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name copyenv int 0 0
ecom: 
call ref Context 10 2
  name copy fn(ctxt: self ref Context, copyenv: int): ref Context 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name copyenv int 0 0
ecom to: 
name ctxt ref Context 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b102 big 0 0
    const (64) int 6 0
ecom: 
name copyenv int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b102 big 0 0
    const (72) int 6 0
ecom: 
= ref Expropagate 10 1
  name exprop ref Expropagate 0 0
  ref ref Expropagate 10 1
    name Expropagate Expropagate 10 1
ecom: 
ref ref Expropagate 10 1
  name Expropagate Expropagate 10 1
ecom to: 
name exprop ref Expropagate 0 0
generate desc for Expropagate
descmap adt offset 0
descmap offset 0
descmap name type string offset 0 (d->offset=0 start=0) returns 0
generate desc for Expropagate
	desc	$-1,8,"80"
ecom: 
= list of int 10 2
  name newfdl list of int 0 0
  call list of int 10 2
    name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
ecom: 
call list of int 10 2
  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name redirs ref Redirlist 0 0
ecom to: 
name newfdl list of int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b102 big 0 0
    const (64) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b102 big 0 0
    const (72) int 6 0
ecom: 
= ref Redirlist 10 1
  name redirs ref Redirlist 0 0
  name nil polymorphic type 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name redirs ref Redirlist 0 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const NEWFD (1) int 6 0
      seq no type 10 1
        name newfdl list of int 0 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const NEWFD (1) int 6 0
    seq no type 10 1
      name newfdl list of int 0 0
ecom to: 
name .t103 int 0 0
generate desc for big
ecom: 
const NEWFD (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b102 big 0 0
    const (64) int 6 0
ecom: 
name newfdl list of int 0 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b102 big 0 0
    const (72) int 6 0
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const waitfd (8) int 6 0
  call ref Sys->FD 10 1
    name waitfd fn(): ref Sys->FD 11 1
ecom: 
call ref Sys->FD 10 1
  name waitfd fn(): ref Sys->FD 11 1
ecom to: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
generate desc for big
ecom: 
<-= (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  tuple (int, ref Expropagate) 10 1
    seq no type 10 1
      name pid int 0 0
      seq no type 10 1
        name exprop ref Expropagate 0 0
eacom: 
tuple (int, ref Expropagate) 10 1
  seq no type 10 1
    name pid int 0 0
    seq no type 10 1
      name exprop ref Expropagate 0 0
generate desc for (int, ref Expropagate)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, ref Expropagate)
	desc	$-1,16,"40"
ecom: 
tuple (int, ref Expropagate) 10 1
  seq no type 10 1
    name pid int 0 0
    seq no type 10 1
      name exprop ref Expropagate 0 0
ecom to: 
name .b104 (int, ref Expropagate) 0 0
ecom: 
name pid int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name .b104 (int, ref Expropagate) 0 0
    const (0) int 6 0
ecom: 
name exprop ref Expropagate 0 0
ecom to: 
* ref Expropagate 0 0
  + int 13 1
    adr int 13 1
      name .b104 (int, ref Expropagate) 0 0
    const (8) int 6 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b104 (int, ref Expropagate) 0 0
      const t1 (8) int 6 0
  name nil ref Expropagate 1 0
ecom: 
name nil ref Expropagate 1 0
ecom to: 
* ref Expropagate 0 0
  + int 13 1
    adr int 13 1
      name .b104 (int, ref Expropagate) 0 0
    const t1 (8) int 6 0
ecom: 
= chan of (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  name nil polymorphic type 1 0
ecom: 
name nil chan of (int, ref Expropagate) 1 0
ecom to: 
name startchan chan of (int, ref Expropagate) 0 0
ecom: 
= string 10 2
  name status string 0 0
  call string 10 2
    name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
    seq nothing 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name argv list of ref Listnode 0 0
        seq no type 10 1
          name copyenv int 0 0
ecom: 
call string 10 2
  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name argv list of ref Listnode 0 0
      seq no type 10 1
        name copyenv int 0 0
ecom to: 
name status string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b102 big 0 0
    const (64) int 6 0
ecom: 
name argv list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b102 big 0 0
    const (72) int 6 0
ecom: 
name copyenv int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b102 big 0 0
    const (80) int 6 0
ecom: 
= list of int 10 1
  name newfdl list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name newfdl list of int 0 0
ecom: 
= string 10 1
  * string 8 0
    name exprop ref Expropagate 0 0
  name e string 0 0
ecom: 
name e string 0 0
ecom to: 
* string 8 0
  name exprop ref Expropagate 0 0
ecom: 
<-= (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  tuple (int, ref Expropagate) 10 1
    seq no type 10 1
      name pid int 0 0
      seq no type 10 1
        name exprop ref Expropagate 0 0
eacom: 
tuple (int, ref Expropagate) 10 1
  seq no type 10 1
    name pid int 0 0
    seq no type 10 1
      name exprop ref Expropagate 0 0
generate desc for (int, ref Expropagate)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, ref Expropagate)
	desc	$-1,16,"40"
ecom: 
tuple (int, ref Expropagate) 10 1
  seq no type 10 1
    name pid int 0 0
    seq no type 10 1
      name exprop ref Expropagate 0 0
ecom to: 
name .b104 (int, ref Expropagate) 0 0
ecom: 
name pid int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name .b104 (int, ref Expropagate) 0 0
    const (0) int 6 0
ecom: 
name exprop ref Expropagate 0 0
ecom to: 
* ref Expropagate 0 0
  + int 13 1
    adr int 13 1
      name .b104 (int, ref Expropagate) 0 0
    const (8) int 6 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b104 (int, ref Expropagate) 0 0
      const t1 (8) int 6 0
  name nil ref Expropagate 1 0
ecom: 
name nil ref Expropagate 1 0
ecom to: 
* ref Expropagate 0 0
  + int 13 1
    adr int 13 1
      name .b104 (int, ref Expropagate) 0 0
    const t1 (8) int 6 0
ecom: 
raise nothing 10 1
  name e string 0 0
ecom: 
raise nothing 10 1
  + string 10 1
    const fail: string 1 0
    name status string 0 0
eacom: 
+ string 10 1
  const fail: string 1 0
  name status string 0 0
ecom: 
+ string 10 1
  const fail: string 1 0
  name status string 0 0
ecom to: 
name .t105 string 0 0
ecom: 
= string 10 1
  name .t105 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t105 string 0 0
fn: runasync
64: argument ctxt ref Context ref 5
72: argument copyenv int ref 2
80: argument argv list of ref Listnode ref 1
88: argument redirs ref Redirlist ref 3
96: argument startchan chan of (int, ref Expropagate) ref 4
104: local e ref exception ref 3
108: local pid int ref 3
112: local .t103 int ref 1
120: local .b102 big ref 6
128: local exprop ref Expropagate ref 4
136: local newfdl list of int ref 3
144: local status string ref 3
152: local .b104 (int, ref Expropagate) ref 2
168: local .t105 string ref 1
generate desc for runasync
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap copyenv type int offset 72 (d->offset=72 start=0) returns -1
descmap argv type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap redirs type ref Redirlist offset 88 (d->offset=88 start=0) returns 88
descmap startchan type chan of (int, ref Expropagate) offset 96 (d->offset=96 start=0) returns 96
descmap e type ref exception offset 104 (d->offset=104 start=0) returns 104
descmap pid type int offset 108 (d->offset=108 start=0) returns -1
descmap .t103 type int offset 112 (d->offset=112 start=0) returns -1
descmap .b102 type big offset 120 (d->offset=120 start=0) returns -1
descmap exprop type ref Expropagate offset 128 (d->offset=128 start=0) returns 128
descmap newfdl type list of int offset 136 (d->offset=136 start=0) returns 136
descmap status type string offset 144 (d->offset=144 start=0) returns 144
descmap adt offset 152
descmap offset 152
descmap t0 type int offset 152 (d->offset=0 start=152) returns -1
descmap t1 type ref Expropagate offset 160 (d->offset=8 start=152) returns 160
descmap .b104 type (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 160
descmap .t105 type string offset 168 (d->offset=168 start=0) returns 168
generate desc for e
descmap offset 0
descmap newfdl type list of int offset 136 (d->offset=136 start=0) returns 136
fncom: runsync 2 418c28
ecom: 
= chan of (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  chan chan of (int, ref Expropagate) 10 1
    const (0) int 6 0
ecom: 
chan chan of (int, ref Expropagate) 10 1
  const (0) int 6 0
ecom to: 
name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type ref Expropagate offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, ref Expropagate)
	desc	$-1,16,"40"
ecom: 
spawn nothing 10 2
  call no type 10 2
    name runasync fn(ctxt: ref Context, copyenv: int, argv: list of ref Listnode, redirs: ref Redirlist, startchan: chan of (int, ref Expropagate)) 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        const (0) int 6 0
        seq no type 10 1
          name argv list of ref Listnode 0 0
          seq no type 10 1
            name redirs ref Redirlist 0 0
            seq no type 10 1
              name startchan chan of (int, ref Expropagate) 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b106 big 0 0
    const (64) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b106 big 0 0
    const (72) int 6 0
ecom: 
name argv list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b106 big 0 0
    const (80) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b106 big 0 0
    const (88) int 6 0
ecom: 
name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
* chan of (int, ref Expropagate) 8 0
  + int 15 0
    name .b106 big 0 0
    const (96) int 6 0
ecom: 
= (int, ref Expropagate) 10 2
  tuple (int, ref Expropagate) 10 1
    seq nothing 10 1
      name pid int 0 0
      seq nothing 10 1
        name exprop ref Expropagate 0 0
    name startchan chan of (int, ref Expropagate) 0 0
  <- (int, ref Expropagate) 10 1
    name startchan chan of (int, ref Expropagate) 0 0
generate desc for (int, ref Expropagate)
ecom: 
<- (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
ecom to: 
name .b107 (int, ref Expropagate) 0 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b107 (int, ref Expropagate) 0 0
      const t1 (8) int 6 0
  name nil ref Expropagate 1 0
ecom: 
name nil ref Expropagate 1 0
ecom to: 
* ref Expropagate 0 0
  + int 13 1
    adr int 13 1
      name .b107 (int, ref Expropagate) 0 0
    const t1 (8) int 6 0
ecom: 
= ref Redirlist 10 1
  name redirs ref Redirlist 0 0
  name nil polymorphic type 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name redirs ref Redirlist 0 0
ecom: 
= string 10 2
  name r string 0 0
    tuple (int, ref Expropagate) 10 1
      seq nothing 10 1
        name pid int 0 0
        seq nothing 10 1
          name exprop ref Expropagate 0 0
      name startchan chan of (int, ref Expropagate) 0 0
  call string 10 2
    name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        :: list of int 10 1
          name pid int 0 0
          name nil polymorphic type 1 0
ecom: 
call string 10 2
  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      :: list of int 10 1
        name pid int 0 0
        name nil polymorphic type 1 0
ecom to: 
name r string 0 0
  tuple (int, ref Expropagate) 10 1
    seq nothing 10 1
      name pid int 0 0
      seq nothing 10 1
        name exprop ref Expropagate 0 0
    name startchan chan of (int, ref Expropagate) 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b106 big 0 0
    const (64) int 6 0
ecom: 
:: list of int 10 1
  name pid int 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b106 big 0 0
    const (72) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t108 list of int 0 0
ecom: 
= list of int 10 1
  name .t108 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t108 list of int 0 0
ecom: 
raise nothing 10 1
  * string 8 0
    name exprop ref Expropagate 0 0
ecom: 
name r string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
= string 10 1
  name r string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name r string 0 0
ecom: 
= ref Expropagate 10 1
  name exprop ref Expropagate 0 0
  name nil ref Expropagate 1 0
ecom: 
name nil ref Expropagate 1 0
ecom to: 
name exprop ref Expropagate 0 0
ecom: 
= chan of (int, ref Expropagate) 10 1
  name startchan chan of (int, ref Expropagate) 0 0
  name nil chan of (int, ref Expropagate) 1 0
ecom: 
name nil chan of (int, ref Expropagate) 1 0
ecom to: 
name startchan chan of (int, ref Expropagate) 0 0
ecom: 
= list of int 10 2
  name newfdl list of int 0 0
  call list of int 10 2
    name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name redirs ref Redirlist 0 0
ecom: 
call list of int 10 2
  name doredirs fn(ctxt: ref Context, redirs: ref Redirlist): list of int 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name redirs ref Redirlist 0 0
ecom to: 
name newfdl list of int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b106 big 0 0
    const (64) int 6 0
ecom: 
name redirs ref Redirlist 0 0
ecom to: 
* ref Redirlist 8 0
  + int 15 0
    name .b106 big 0 0
    const (72) int 6 0
ecom: 
= ref Redirlist 10 1
  name redirs ref Redirlist 0 0
  name nil polymorphic type 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name redirs ref Redirlist 0 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const NEWFD (1) int 6 0
      seq no type 10 1
        name newfdl list of int 0 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const NEWFD (1) int 6 0
    seq no type 10 1
      name newfdl list of int 0 0
ecom to: 
name .t109 int 0 0
generate desc for big
ecom: 
const NEWFD (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b106 big 0 0
    const (64) int 6 0
ecom: 
name newfdl list of int 0 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b106 big 0 0
    const (72) int 6 0
ecom: 
call string 10 2
  name run fn(ctxt: self ref Context, args: list of ref Listnode, last: int): string 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name argv list of ref Listnode 0 0
      seq no type 10 1
        name last int 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b106 big 0 0
    const (64) int 6 0
ecom: 
name argv list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b106 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b106 big 0 0
    const (80) int 6 0
ecom: 
= list of int 10 1
  name newfdl list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name newfdl list of int 0 0
fn: runsync
64: argument ctxt ref Context ref 4
72: argument argv list of ref Listnode ref 2
80: argument redirs ref Redirlist ref 6
88: argument last int ref 3
96: local pid int ref 2
104: local exprop ref Expropagate ref 3
112: local .t109 int ref 1
120: local .b106 big ref 5
128: local newfdl list of int ref 3
136: local startchan chan of (int, ref Expropagate) ref 3
144: local r string ref 2
152: local .t108 list of int ref 1
160: local .b107 (int, ref Expropagate) ref 1
generate desc for runsync
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap argv type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap redirs type ref Redirlist offset 80 (d->offset=80 start=0) returns 80
descmap last type int offset 88 (d->offset=88 start=0) returns -1
descmap pid type int offset 96 (d->offset=96 start=0) returns -1
descmap exprop type ref Expropagate offset 104 (d->offset=104 start=0) returns 104
descmap .t109 type int offset 112 (d->offset=112 start=0) returns -1
descmap .b106 type big offset 120 (d->offset=120 start=0) returns -1
descmap newfdl type list of int offset 128 (d->offset=128 start=0) returns 128
descmap startchan type chan of (int, ref Expropagate) offset 136 (d->offset=136 start=0) returns 136
descmap r type string offset 144 (d->offset=144 start=0) returns 144
descmap .t108 type list of int offset 152 (d->offset=152 start=0) returns 152
descmap adt offset 160
descmap offset 160
descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
descmap t1 type ref Expropagate offset 168 (d->offset=8 start=160) returns 168
descmap .b107 type (int, ref Expropagate) offset 160 (d->offset=160 start=0) returns 168
fncom: absolute 2 418ce8
eacom: 
len int 10 1
  name p string 0 0
ecom: 
len int 10 1
  name p string 0 0
ecom to: 
name .t110 int 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
eacom: 
inds int 10 1
  name p string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  name p string 0 0
  const (0) int 6 0
ecom to: 
name .t110 int 0 0
eacom: 
inds int 10 1
  name p string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  name p string 0 0
  const (0) int 6 0
ecom to: 
name .t110 int 0 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
eacom: 
len int 10 1
  name p string 0 0
ecom: 
len int 10 1
  name p string 0 0
ecom to: 
name .t110 int 0 0
eacom: 
inds int 10 1
  name p string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  name p string 0 0
  const (0) int 6 0
ecom to: 
name .t110 int 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
eacom: 
inds int 10 1
  name p string 0 0
  const (1) int 6 0
ecom: 
inds int 10 1
  name p string 0 0
  const (1) int 6 0
ecom to: 
name .t110 int 0 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
eacom: 
inds int 10 1
  name p string 0 0
  const (1) int 6 0
ecom: 
inds int 10 1
  name p string 0 0
  const (1) int 6 0
ecom to: 
name .t110 int 0 0
eacom: 
inds int 10 1
  name p string 0 0
  const (2) int 6 0
ecom: 
inds int 10 1
  name p string 0 0
  const (2) int 6 0
ecom to: 
name .t110 int 0 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
fn: absolute
64: argument p string ref 8
72: local .t110 int ref 1
generate desc for absolute
descmap offset 0
descmap p type string offset 64 (d->offset=64 start=0) returns 64
descmap .t110 type int offset 72 (d->offset=72 start=0) returns -1
fncom: runexternal 4 418da8
ecom: 
= string 10 1
  name progname string 0 0
  * string 10 1
    + int 10 1
      hd ref Listnode 10 1
        name args list of ref Listnode 0 0
      const word (8) int 6 0
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
name progname string 0 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .t111 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t111 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t111 ref Listnode 0 0
ecom: 
= int 10 1
  name disfile int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name disfile int 0 0
eacom: 
len int 10 1
  name progname string 0 0
ecom: 
len int 10 1
  name progname string 0 0
ecom to: 
name .t112 int 0 0
eacom: 
slice string 10 2
  name progname string 0 0
  seq no type 10 2
    - int 10 1
      len int 10 1
        name progname string 0 0
      const (4) int 6 0
    nothing no type 10 1
ecom: 
slice string 10 2
  name progname string 0 0
  seq no type 10 2
    - int 10 1
      len int 10 1
        name progname string 0 0
      const (4) int 6 0
    nothing no type 10 1
ecom to: 
name .t111 string 0 0
ecom: 
len int 10 1
  name progname string 0 0
ecom to: 
name .t112 int 0 0
eacom: 
- int 10 1
  len int 10 1
    name progname string 0 0
  const (4) int 6 0
ecom: 
- int 10 1
  len int 10 1
    name progname string 0 0
  const (4) int 6 0
ecom to: 
name .t113 int 0 0
ecom: 
len int 10 1
  name progname string 0 0
ecom to: 
name .t113 int 0 0
ecom: 
name progname string 0 0
ecom to: 
name .t111 string 0 0
ecom: 
= string 10 1
  name .t111 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t111 string 0 0
ecom: 
= int 10 1
  name disfile int 0 0
  const (1) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
name disfile int 0 0
eacom: 
call int 10 2
  name absolute fn(p: string): int 11 1
  seq no type 10 1
    name progname string 0 0
ecom: 
call int 10 2
  name absolute fn(p: string): int 11 1
  seq no type 10 1
    name progname string 0 0
ecom to: 
name .t113 int 0 0
generate desc for big
ecom: 
name progname string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name pathlist list of string 0 0
  :: list of string 10 1
    const  string 1 0
    name nil polymorphic type 1 0
ecom: 
:: list of string 10 1
  const  string 1 0
  name nil polymorphic type 1 0
ecom to: 
name pathlist list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t111 list of string 0 0
ecom: 
= list of string 10 1
  name .t111 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t111 list of string 0 0
eacom: 
= list of ref Listnode 10 2
  name pl list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
    seq nothing 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        const path string 1 0
ecom: 
= list of ref Listnode 10 2
  name pl list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
    seq nothing 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        const path string 1 0
ecom to: 
name .t111 list of ref Listnode 0 0
ecom: 
call list of ref Listnode 10 2
  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const path string 1 0
ecom to: 
name pl list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
const path string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t111 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t111 list of ref Listnode 0 0
ecom: 
= list of string 10 2
  name pathlist list of string 0 0
  call list of string 10 2
    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
    seq no type 10 1
      name pl list of ref Listnode 0 0
ecom: 
call list of string 10 2
  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
  seq no type 10 1
    name pl list of ref Listnode 0 0
ecom to: 
name pathlist list of string 0 0
generate desc for big
ecom: 
name pl list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name pathlist list of string 0 0
  :: list of string 10 1
    const /dis string 1 0
    :: list of string 10 1
      const . string 1 0
      name nil polymorphic type 1 0
ecom: 
:: list of string 10 1
  const /dis string 1 0
  :: list of string 10 1
    const . string 1 0
    name nil polymorphic type 1 0
ecom to: 
name pathlist list of string 0 0
ecom: 
:: list of string 10 1
  const . string 1 0
  name nil polymorphic type 1 0
ecom to: 
name .t111 list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t111 list of string 0 0
ecom: 
= list of string 10 1
  name .t111 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t111 list of string 0 0
ecom: 
= string 10 1
  name err string 0 0
  const  string 1 0
ecom: 
const  string 1 0
ecom to: 
name err string 0 0
eacom: 
hd string 10 1
  name pathlist list of string 0 0
ecom: 
hd string 10 1
  name pathlist list of string 0 0
ecom to: 
name .t111 string 0 0
ecom: 
= string 10 1
  name .t111 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t111 string 0 0
ecom: 
= string 10 1
  name path string 0 0
  + string 10 1
    + string 10 1
      hd string 10 1
        name pathlist list of string 0 0
      const / string 1 0
    name progname string 0 0
ecom: 
+ string 10 1
  + string 10 1
    hd string 10 1
      name pathlist list of string 0 0
    const / string 1 0
  name progname string 0 0
ecom to: 
name path string 0 0
ecom: 
+ string 10 1
  hd string 10 1
    name pathlist list of string 0 0
  const / string 1 0
ecom to: 
name .t111 string 0 0
ecom: 
hd string 10 1
  name pathlist list of string 0 0
ecom to: 
name .t111 string 0 0
ecom: 
= string 10 1
  name .t111 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t111 string 0 0
ecom: 
= string 10 1
  name path string 0 0
  name progname string 0 0
ecom: 
name progname string 0 0
ecom to: 
name path string 0 0
ecom: 
= string 10 1
  name npath string 0 0
    vardecl string 10 1
      seq nothing 10 1
  name path string 0 0
ecom: 
name path string 0 0
ecom to: 
name npath string 0 0
  vardecl string 10 1
    seq nothing 10 1
ecom: 
+= string 10 1
  name npath string 0 0
  const .dis string 1 0
ecom: 
= Command 10 1
  name mod Command 0 0
    name npath string 0 0
      vardecl string 10 1
        seq nothing 10 1
  load Command 10 1
    name npath string 0 0
    name .m.Command Command 17 1
ecom: 
load Command 10 1
  name npath string 0 0
  name .m.Command Command 17 1
ecom to: 
name mod Command 0 0
  name npath string 0 0
    vardecl string 10 1
      seq nothing 10 1
ecom: 
= list of string 10 2
  name argv list of string 0 0
  call list of string 10 2
    name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
    seq no type 10 1
      name args list of ref Listnode 0 0
ecom: 
call list of string 10 2
  name list2stringlist fn(nl: list of ref Listnode): list of string 11 1
  seq no type 10 1
    name args list of ref Listnode 0 0
ecom to: 
name argv list of string 0 0
generate desc for big
ecom: 
name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name export fn(e: ref Localenv) 11 1
  seq no type 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
generate desc for big
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
* ref Localenv 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t111 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t111 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t111 ref Environment 0 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const NEWFD (1) int 6 0
      seq no type 10 1
        * list of int 8 0
          + int 15 1
            name ctxt ref Context 0 0
            const keepfds (24) int 6 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const NEWFD (1) int 6 0
    seq no type 10 1
      * list of int 8 0
        + int 15 1
          name ctxt ref Context 0 0
          const keepfds (24) int 6 0
ecom to: 
name .t113 int 0 0
generate desc for big
ecom: 
const NEWFD (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
* list of int 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const keepfds (24) int 6 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b114 big 0 0
    const (72) int 6 0
ecom: 
call no type 10 2
  -> fn(ctxt: ref Draw->Context, argv: list of string) 12 1
    name mod Command 0 0
    name init nothing 11 1
  seq no type 10 1
    * ref Draw->Context 8 0
      + int 15 1
        name ctxt ref Context 0 0
        const drawcontext (16) int 6 0
    seq no type 10 1
      name argv list of string 0 0
generate desc for big
ecom: 
* ref Draw->Context 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const drawcontext (16) int 6 0
ecom to: 
* ref Draw->Context 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
name argv list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b114 big 0 0
    const (72) int 6 0
ecom: 
const write on closed pipe string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
call string 10 2
  name failurestatus fn(e: string): string 11 1
  seq no type 10 1
    name e string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name e string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
= chan of int 10 1
  name extstart chan of int 0 0
    name argv list of string 0 0
  chan chan of int 10 1
    const (0) int 6 0
ecom: 
chan chan of int 10 1
  const (0) int 6 0
ecom to: 
name extstart chan of int 0 0
  name argv list of string 0 0
ecom: 
spawn nothing 10 2
  call no type 10 2
    name externalexec fn(mod: Command, drawcontext: ref Draw->Context, argv: list of string, startchan: chan of int, keepfds: list of int) 11 1
    seq no type 10 1
      name mod Command 0 0
      seq no type 10 1
        * ref Draw->Context 8 0
          + int 15 1
            name ctxt ref Context 0 0
            const drawcontext (16) int 6 0
        seq no type 10 1
          name argv list of string 0 0
          seq no type 10 1
            name extstart chan of int 0 0
            seq no type 10 1
              * list of int 8 0
                + int 15 1
                  name ctxt ref Context 0 0
                  const keepfds (24) int 6 0
generate desc for big
ecom: 
name mod Command 0 0
ecom to: 
* Command 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
* ref Draw->Context 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const drawcontext (16) int 6 0
ecom to: 
* ref Draw->Context 8 0
  + int 15 0
    name .b114 big 0 0
    const (72) int 6 0
ecom: 
name argv list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b114 big 0 0
    const (80) int 6 0
ecom: 
name extstart chan of int 0 0
ecom to: 
* chan of int 8 0
  + int 15 0
    name .b114 big 0 0
    const (88) int 6 0
ecom: 
* list of int 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const keepfds (24) int 6 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b114 big 0 0
    const (96) int 6 0
ecom: 
= int 10 1
  name pid int 0 0
  <- int 10 1
    name extstart chan of int 0 0
ecom: 
<- int 10 1
  name extstart chan of int 0 0
ecom to: 
name pid int 0 0
ecom: 
call string 10 2
  name waitfor fn(ctxt: ref Context, pids: list of int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      :: list of int 10 1
        name pid int 0 0
        name nil polymorphic type 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
:: list of int 10 1
  name pid int 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b114 big 0 0
    const (72) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t111 list of int 0 0
ecom: 
= list of int 10 1
  name .t111 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t111 list of int 0 0
ecom: 
= chan of int 10 1
  name extstart chan of int 0 0
  name nil chan of int 1 0
ecom: 
name nil chan of int 1 0
ecom to: 
name extstart chan of int 0 0
ecom: 
= list of string 10 1
  name argv list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name argv list of string 0 0
ecom: 
= string 10 2
  name err string 0 0
  call string 10 2
    -> fn(s: string, *): string 12 1
      name sys Sys 1 0
      name sprint nothing 11 1
    seq no type 10 1
      const %r string 1 0
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const %r string 1 0
ecom to: 
name err string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
eacom: 
call int 10 2
  name nonexistent fn(e: string): int 11 1
  seq no type 10 1
    name err string 0 0
ecom: 
call int 10 2
  name nonexistent fn(e: string): int 11 1
  seq no type 10 1
    name err string 0 0
ecom to: 
name .t113 int 0 0
generate desc for big
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
eacom: 
= ref Sys->FD 10 2
  name fd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name open nothing 11 1
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        const OREAD (0) int 6 0
ecom: 
= ref Sys->FD 10 2
  name fd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name open nothing 11 1
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        const OREAD (0) int 6 0
ecom to: 
name .t111 ref Sys->FD 0 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name open nothing 11 1
  seq no type 10 1
    name path string 0 0
    seq no type 10 1
      const OREAD (0) int 6 0
ecom to: 
name fd ref Sys->FD 0 0
generate desc for big
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b114 big 0 0
    const (72) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t111 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t111 ref Sys->FD 0 0
ecom: 
= (int, Sys->Dir) 10 2
  tuple (int, Sys->Dir) 10 1
    seq nothing 10 1
      name ok int 0 0
      seq nothing 10 1
        name info Sys->Dir 0 0
  call (int, Sys->Dir) 10 2
    -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
      name sys Sys 1 0
      name fstat nothing 11 1
    seq no type 10 1
      name fd ref Sys->FD 0 0
ecom: 
call (int, Sys->Dir) 10 2
  -> fn(fd: ref Sys->FD): (int, Sys->Dir) 12 1
    name sys Sys 1 0
    name fstat nothing 11 1
  seq no type 10 1
    name fd ref Sys->FD 0 0
ecom to: 
name ok (int, Sys->Dir) 0 0
generate desc for big
ecom: 
name fd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
eacom: 
& int 10 1
  * int 0 0
    + int 13 1
      adr int 13 1
        name info Sys->Dir 0 0
      const mode (48) int 6 0
  const .i.80000000 (-2147483648) int 1 0
ecom: 
& int 10 1
  * int 0 0
    + int 13 1
      adr int 13 1
        name info Sys->Dir 0 0
      const mode (48) int 6 0
  const .i.80000000 (-2147483648) int 1 0
ecom to: 
name .t113 int 0 0
eacom: 
& int 10 1
  * int 0 0
    + int 13 1
      adr int 13 1
        name info Sys->Dir 0 0
      const mode (48) int 6 0
  const (73) int 6 0
ecom: 
& int 10 1
  * int 0 0
    + int 13 1
      adr int 13 1
        name info Sys->Dir 0 0
      const mode (48) int 6 0
  const (73) int 6 0
ecom to: 
name .t113 int 0 0
ecom: 
call string 10 2
  name runhashpling fn(ctxt: ref Context, fd: ref Sys->FD, path: string, argv: list of ref Listnode, last: int): string 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      name fd ref Sys->FD 0 0
      seq no type 10 2
        name path string 0 0
        seq no type 10 2
          tl list of ref Listnode 10 1
            name args list of ref Listnode 0 0
          seq no type 10 1
            name last int 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
name fd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b114 big 0 0
    const (72) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (80) int 6 0
ecom: 
tl list of ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b114 big 0 0
    const (88) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b114 big 0 0
    const (96) int 6 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name ok (int, Sys->Dir) 0 0
      const (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name ok (int, Sys->Dir) 0 0
    const (8) int 6 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name ok (int, Sys->Dir) 0 0
      const (16) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name ok (int, Sys->Dir) 0 0
    const (16) int 6 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name ok (int, Sys->Dir) 0 0
      const (24) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name ok (int, Sys->Dir) 0 0
    const (24) int 6 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name ok (int, Sys->Dir) 0 0
      const (32) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name ok (int, Sys->Dir) 0 0
    const (32) int 6 0
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name info Sys->Dir 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name info Sys->Dir 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name info Sys->Dir 0 0
      const uid (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name info Sys->Dir 0 0
    const uid (8) int 6 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name info Sys->Dir 0 0
      const gid (16) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name info Sys->Dir 0 0
    const gid (16) int 6 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name info Sys->Dir 0 0
      const muid (24) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name info Sys->Dir 0 0
    const muid (24) int 6 0
ecom: 
= string 10 2
  name err string 0 0
  call string 10 2
    -> fn(s: string, *): string 12 1
      name sys Sys 1 0
      name sprint nothing 11 1
    seq no type 10 1
      const %r string 1 0
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const %r string 1 0
ecom to: 
name err string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name fd ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name fd ref Sys->FD 0 0
ecom: 
= list of string 10 1
  name pathlist list of string 0 0
  tl list of string 10 1
    name pathlist list of string 0 0
ecom: 
tl list of string 10 1
  name pathlist list of string 0 0
ecom to: 
name pathlist list of string 0 0
ecom: 
= Command 10 1
  name mod Command 0 0
  name nil Command 1 0
ecom: 
name nil Command 1 0
ecom to: 
name mod Command 0 0
ecom: 
= string 10 1
  name npath string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name npath string 0 0
ecom: 
= string 10 1
  name path string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name path string 0 0
eacom: 
call int 10 2
  name nonexistent fn(e: string): int 11 1
  seq no type 10 1
    name err string 0 0
ecom: 
call int 10 2
  name nonexistent fn(e: string): int 11 1
  seq no type 10 1
    name err string 0 0
ecom to: 
name .t113 int 0 0
generate desc for big
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name diagnostic fn(ctxt: ref Context, s: string) 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      call string 10 2
        -> fn(s: string, nil: string, nil: string, *): string 12 1
          name sys Sys 1 0
          name sprint nothing 11 1
        seq no type 10 1
          const %s: %s string 1 0
          seq no type 10 1
            name progname string 0 0
            seq no type 10 1
              name err string 0 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, nil: string, nil: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const %s: %s string 1 0
    seq no type 10 1
      name progname string 0 0
      seq no type 10 1
        name err string 0 0
ecom to: 
name .t111 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap type string offset 72 returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
const %s: %s string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b115 big 0 0
    const (64) int 6 0
ecom: 
name progname string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b115 big 0 0
    const (72) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b115 big 0 0
    const (80) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b114 big 0 0
    const (64) int 6 0
ecom: 
name .t111 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b114 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t111 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t111 string 0 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
fn: runexternal
64: argument ctxt ref Context ref 9
72: argument args list of ref Listnode ref 3
80: argument last int ref 2
84: local disfile int ref 4
88: local pid int ref 3
92: local e ref exception ref 2
96: local ok int ref 2
104: local info Sys->Dir ref 3
184: local .t112 int ref 1
188: local .t113 int ref 1
192: local .b114 big ref 18
200: local pathlist list of string ref 8
208: local progname string ref 8
216: local err string ref 7
224: local path string ref 5
232: local mod Command ref 4
240: local argv list of string ref 3
248: local extstart chan of int ref 3
256: local fd ref Sys->FD ref 3
264: local npath string ref 3
272: local pl list of ref Listnode ref 2
280: local .b115 big ref 1
288: local .t111 ref Listnode ref 1
generate desc for runexternal
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap last type int offset 80 (d->offset=80 start=0) returns -1
descmap disfile type int offset 84 (d->offset=84 start=0) returns -1
descmap pid type int offset 88 (d->offset=88 start=0) returns -1
descmap e type ref exception offset 92 (d->offset=92 start=0) returns 96
descmap ok type int offset 96 (d->offset=96 start=0) returns -1
descmap adt offset 104
descmap offset 104
descmap name type string offset 104 (d->offset=0 start=104) returns 104
descmap uid type string offset 112 (d->offset=8 start=104) returns 112
descmap gid type string offset 120 (d->offset=16 start=104) returns 120
descmap muid type string offset 128 (d->offset=24 start=104) returns 128
descmap adt offset 136
descmap offset 136
descmap path type big offset 136 (d->offset=0 start=136) returns -1
descmap vers type int offset 144 (d->offset=8 start=136) returns -1
descmap qtype type int offset 148 (d->offset=12 start=136) returns -1
descmap qid type Sys->Qid offset 136 (d->offset=32 start=104) returns -1
descmap mode type int offset 152 (d->offset=48 start=104) returns -1
descmap atime type int offset 156 (d->offset=52 start=104) returns -1
descmap mtime type int offset 160 (d->offset=56 start=104) returns -1
descmap length type big offset 168 (d->offset=64 start=104) returns -1
descmap dtype type int offset 176 (d->offset=72 start=104) returns -1
descmap dev type int offset 180 (d->offset=76 start=104) returns -1
descmap info type Sys->Dir offset 104 (d->offset=104 start=0) returns 128
descmap .t112 type int offset 184 (d->offset=184 start=0) returns -1
descmap .t113 type int offset 188 (d->offset=188 start=0) returns -1
descmap .b114 type big offset 192 (d->offset=192 start=0) returns -1
descmap pathlist type list of string offset 200 (d->offset=200 start=0) returns 200
descmap progname type string offset 208 (d->offset=208 start=0) returns 208
descmap err type string offset 216 (d->offset=216 start=0) returns 216
descmap path type string offset 224 (d->offset=224 start=0) returns 224
descmap mod type Command offset 232 (d->offset=232 start=0) returns 232
descmap argv type list of string offset 240 (d->offset=240 start=0) returns 240
descmap extstart type chan of int offset 248 (d->offset=248 start=0) returns 248
descmap fd type ref Sys->FD offset 256 (d->offset=256 start=0) returns 256
descmap npath type string offset 264 (d->offset=264 start=0) returns 264
descmap pl type list of ref Listnode offset 272 (d->offset=272 start=0) returns 272
descmap .b115 type big offset 280 (d->offset=280 start=0) returns -1
descmap .t111 type ref Listnode offset 288 (d->offset=288 start=0) returns 288
fncom: failurestatus 7 418e68
ecom: 
= string 10 1
  name s string 0 0
  slice string 10 1
    name e string 0 0
    seq no type 10 1
      const (5) int 6 0
      nothing no type 10 1
ecom: 
slice string 10 1
  name e string 0 0
  seq no type 10 1
    const (5) int 6 0
    nothing no type 10 1
ecom to: 
name s string 0 0
ecom: 
len int 10 1
  name e string 0 0
ecom to: 
name .t116 int 0 0
ecom: 
name e string 0 0
ecom to: 
name s string 0 0
eacom: 
inds int 10 1
  name s string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  name s string 0 0
  const (0) int 6 0
ecom to: 
name .t116 int 0 0
eacom: 
inds int 10 1
  name s string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  name s string 0 0
  const (0) int 6 0
ecom to: 
name .t116 int 0 0
ecom: 
= string 10 1
  name s string 0 0
  slice string 10 1
    name s string 0 0
    seq no type 10 1
      const (1) int 6 0
      nothing no type 10 1
ecom: 
slice string 10 1
  name s string 0 0
  seq no type 10 1
    const (1) int 6 0
    nothing no type 10 1
ecom to: 
name s string 0 0
ecom: 
len int 10 1
  name s string 0 0
ecom to: 
name .t116 int 0 0
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
const failed string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
fn: failurestatus
64: argument e string ref 1
72: local .t116 int ref 1
80: local s string ref 8
generate desc for failurestatus
descmap offset 0
descmap e type string offset 64 (d->offset=64 start=0) returns 64
descmap .t116 type int offset 72 (d->offset=72 start=0) returns -1
descmap s type string offset 80 (d->offset=80 start=0) returns 80
fncom: runhashpling 2 418f28
ecom: 
= array of byte 10 1
  name header array of byte 0 0
  array array of byte 10 1
    const (1024) int 6 0
ecom: 
array array of byte 10 1
  const (1024) int 6 0
ecom to: 
name header array of byte 0 0
generate desc for byte
ecom: 
= int 10 2
  name n int 0 0
  call int 10 2
    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
      name sys Sys 1 0
      name read nothing 11 1
    seq no type 10 1
      name fd ref Sys->FD 0 0
      seq no type 10 1
        name header array of byte 0 0
        seq no type 10 1
          len int 10 1
            name header array of byte 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
    name sys Sys 1 0
    name read nothing 11 1
  seq no type 10 1
    name fd ref Sys->FD 0 0
    seq no type 10 1
      name header array of byte 0 0
      seq no type 10 1
        len int 10 1
          name header array of byte 0 0
ecom to: 
name n int 0 0
generate desc for big
ecom: 
name fd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b117 big 0 0
    const (64) int 6 0
ecom: 
name header array of byte 0 0
ecom to: 
* array of byte 8 0
  + int 15 0
    name .b117 big 0 0
    const (72) int 6 0
ecom: 
len int 10 1
  name header array of byte 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b117 big 0 0
    const (80) int 6 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
* byte 10 1
  indx big 10 1
    name header array of byte 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  name header array of byte 0 0
  name i int 0 0
ecom to: 
name .b117 big 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
eacom: 
* byte 10 1
  indx big 10 1
    name header array of byte 0 0
    const (0) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name header array of byte 0 0
  const (0) int 6 0
ecom to: 
name .b117 big 0 0
eacom: 
* byte 10 1
  indx big 10 1
    name header array of byte 0 0
    const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name header array of byte 0 0
  const (1) int 6 0
ecom to: 
name .b117 big 0 0
ecom: 
call no type 10 2
  name diagnostic fn(ctxt: ref Context, s: string) 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      + string 10 1
        const bad script header on  string 1 0
        name path string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b117 big 0 0
    const (64) int 6 0
ecom: 
+ string 10 1
  const bad script header on  string 1 0
  name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b117 big 0 0
    const (72) int 6 0
ecom: 
const bad header string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
= (int, list of string) 10 2
  tuple (int, list of string) 10 1
    seq nothing 10 1
      name nil polymorphic type 1 0
      seq nothing 10 1
        name args list of string 0 0
  call (int, list of string) 10 2
    -> fn(s: string, delim: string): (int, list of string) 12 1
      name sys Sys 1 0
      name tokenize nothing 11 1
    seq no type 10 2
      cast string 10 1
        slice array of byte 10 1
          name header array of byte 0 0
          seq no type 10 1
            const (2) int 6 0
            name i int 0 0
      seq no type 10 1
        const  	 string 1 0
generate desc for (int, list of string)
ecom: 
call (int, list of string) 10 2
  -> fn(s: string, delim: string): (int, list of string) 12 1
    name sys Sys 1 0
    name tokenize nothing 11 1
  seq no type 10 2
    cast string 10 1
      slice array of byte 10 1
        name header array of byte 0 0
        seq no type 10 1
          const (2) int 6 0
          name i int 0 0
    seq no type 10 1
      const  	 string 1 0
ecom to: 
name .b118 (int, list of string) 0 0
generate desc for big
ecom: 
cast string 10 1
  slice array of byte 10 1
    name header array of byte 0 0
    seq no type 10 1
      const (2) int 6 0
      name i int 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b117 big 0 0
    const (64) int 6 0
eacom: 
slice array of byte 10 1
  name header array of byte 0 0
  seq no type 10 1
    const (2) int 6 0
    name i int 0 0
ecom: 
slice array of byte 10 1
  name header array of byte 0 0
  seq no type 10 1
    const (2) int 6 0
    name i int 0 0
ecom to: 
name .t119 array of byte 0 0
ecom: 
name header array of byte 0 0
ecom to: 
name .t119 array of byte 0 0
ecom: 
= array of byte 10 1
  name .t119 array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name .t119 array of byte 0 0
ecom: 
const  	 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b117 big 0 0
    const (72) int 6 0
ecom: 
= list of string 10 1
  * list of string 0 0
    + int 13 1
      adr int 13 1
        name .b118 (int, list of string) 0 0
      const t1 (8) int 6 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
* list of string 0 0
  + int 13 1
    adr int 13 1
      name .b118 (int, list of string) 0 0
    const t1 (8) int 6 0
ecom: 
call no type 10 2
  name diagnostic fn(ctxt: ref Context, s: string) 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      + string 10 1
        const empty header on  string 1 0
        name path string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b117 big 0 0
    const (64) int 6 0
ecom: 
+ string 10 1
  const empty header on  string 1 0
  name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b117 big 0 0
    const (72) int 6 0
ecom: 
const bad header string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
= array of byte 10 1
  name header array of byte 0 0
  name nil polymorphic type 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name header array of byte 0 0
ecom: 
= ref Sys->FD 10 1
  name fd ref Sys->FD 0 0
  name nil polymorphic type 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name fd ref Sys->FD 0 0
ecom: 
= list of ref Listnode 10 1
  name nargs list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    ref ref Listnode 10 1
      tuple Listnode 10 1
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            hd string 10 1
              name args list of string 0 0
    name nargs list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          hd string 10 1
            name args list of string 0 0
  name nargs list of ref Listnode 0 0
ecom to: 
name nargs list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        hd string 10 1
          name args list of string 0 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        hd string 10 1
          name args list of string 0 0
ecom to: 
name .t119 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      hd string 10 1
        name args list of string 0 0
ecom to: 
* Listnode 8 0
  name .t119 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t119 ref Listnode 0 0
    const (0) int 6 0
ecom: 
hd string 10 1
  name args list of string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t119 ref Listnode 0 0
    const (8) int 6 0
ecom: 
= ref Listnode 10 1
  name .t119 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t119 ref Listnode 0 0
ecom: 
= list of string 10 1
  name args list of string 0 0
  tl list of string 10 1
    name args list of string 0 0
ecom: 
tl list of string 10 1
  name args list of string 0 0
ecom to: 
name args list of string 0 0
ecom: 
= list of ref Listnode 10 1
  name nargs list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    ref ref Listnode 10 1
      tuple Listnode 10 1
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            name path string 0 0
    name nargs list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          name path string 0 0
  name nargs list of ref Listnode 0 0
ecom to: 
name nargs list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name path string 0 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name path string 0 0
ecom to: 
name .t119 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      name path string 0 0
ecom to: 
* Listnode 8 0
  name .t119 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t119 ref Listnode 0 0
    const (0) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t119 ref Listnode 0 0
    const (8) int 6 0
ecom: 
= ref Listnode 10 1
  name .t119 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t119 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name nargs list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    hd ref Listnode 10 1
      name argv list of ref Listnode 0 0
    name nargs list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  hd ref Listnode 10 1
    name argv list of ref Listnode 0 0
  name nargs list of ref Listnode 0 0
ecom to: 
name nargs list of ref Listnode 0 0
eacom: 
hd ref Listnode 10 1
  name argv list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name argv list of ref Listnode 0 0
ecom to: 
name .t119 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t119 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t119 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name argv list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name argv list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name argv list of ref Listnode 0 0
ecom to: 
name argv list of ref Listnode 0 0
ecom: 
call string 10 2
  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
  seq no type 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      call list of ref Listnode 10 2
        name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
        seq no type 10 1
          name nargs list of ref Listnode 0 0
      seq no type 10 1
        name last int 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
call list of ref Listnode 10 2
  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name nargs list of ref Listnode 0 0
ecom to: 
name .t119 list of ref Listnode 0 0
generate desc for big
ecom: 
name nargs list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b120 big 0 0
    const (64) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b117 big 0 0
    const (64) int 6 0
ecom: 
name .t119 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b117 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t119 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t119 list of ref Listnode 0 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b117 big 0 0
    const (80) int 6 0
fn: runhashpling
64: argument ctxt ref Context ref 3
72: argument fd ref Sys->FD ref 2
80: argument path string ref 3
88: argument argv list of ref Listnode ref 4
96: argument last int ref 1
100: local i int ref 7
104: local n int ref 3
112: local .b117 big ref 8
120: local header array of byte ref 8
128: local nargs list of ref Listnode ref 7
136: local args list of string ref 6
144: local .b120 big ref 1
152: local .t119 array of byte ref 1
160: local .b118 (int, list of string) ref 1
generate desc for runhashpling
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap fd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
descmap path type string offset 80 (d->offset=80 start=0) returns 80
descmap argv type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
descmap last type int offset 96 (d->offset=96 start=0) returns -1
descmap i type int offset 100 (d->offset=100 start=0) returns -1
descmap n type int offset 104 (d->offset=104 start=0) returns -1
descmap .b117 type big offset 112 (d->offset=112 start=0) returns -1
descmap header type array of byte offset 120 (d->offset=120 start=0) returns 120
descmap nargs type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap args type list of string offset 136 (d->offset=136 start=0) returns 136
descmap .b120 type big offset 144 (d->offset=144 start=0) returns -1
descmap .t119 type array of byte offset 152 (d->offset=152 start=0) returns 152
descmap adt offset 160
descmap offset 160
descmap t0 type int offset 160 (d->offset=0 start=160) returns -1
descmap t1 type list of string offset 168 (d->offset=8 start=160) returns 168
descmap .b118 type (int, list of string) offset 160 (d->offset=160 start=0) returns 168
fncom: runblock 2 418fe8
ecom: 
= ref Node 10 1
  name cmd ref Node 0 0
  * ref Node 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
ecom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name args list of ref Listnode 0 0
ecom to: 
name cmd ref Node 0 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name args list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .t121 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t121 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t121 ref Listnode 0 0
ecom: 
= ref YYLEX 10 2
  name lex ref YYLEX 0 0
  call ref YYLEX 10 2
    name initstring fn(s: string): ref YYLEX 11 1
    seq no type 10 1
      * string 10 1
        + int 10 1
          hd ref Listnode 10 1
            name args list of ref Listnode 0 0
          const word (8) int 6 0
ecom: 
call ref YYLEX 10 2
  name initstring fn(s: string): ref YYLEX 11 1
  seq no type 10 1
    * string 10 1
      + int 10 1
        hd ref Listnode 10 1
          name args list of ref Listnode 0 0
        const word (8) int 6 0
ecom to: 
name lex ref YYLEX 0 0
generate desc for big
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .t121 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t121 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t121 ref Listnode 0 0
ecom: 
= (ref Node, string) 10 2
  tuple (ref Node, string) 10 1
    seq no type 10 1
      name cmd ref Node 0 0
      seq no type 10 1
        name err string 0 0
  call (ref Node, string) 10 2
    name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
    seq no type 10 1
      name lex ref YYLEX 0 0
      seq no type 10 1
        const  string 1 0
        seq no type 10 1
          const (0) int 6 0
generate desc for (ref Node, string)
descmap adt offset 0
descmap offset 0
descmap t0 type ref Node offset 0 (d->offset=0 start=0) returns 0
descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
generate desc for (ref Node, string)
	desc	$-1,16,"c0"
ecom: 
call (ref Node, string) 10 2
  name doparse fn(l: ref YYLEX, prompt: string, showline: int): (ref Node, string) 11 1
  seq no type 10 1
    name lex ref YYLEX 0 0
    seq no type 10 1
      const  string 1 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
name .b123 (ref Node, string) 0 0
generate desc for big
ecom: 
name lex ref YYLEX 0 0
ecom to: 
* ref YYLEX 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
ecom: 
const  string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b122 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b122 big 0 0
    const (80) int 6 0
ecom: 
= ref Node 10 1
  * ref Node 0 0
    adr int 13 1
      name .b123 (ref Node, string) 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
* ref Node 0 0
  adr int 13 1
    name .b123 (ref Node, string) 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b123 (ref Node, string) 0 0
      const t1 (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b123 (ref Node, string) 0 0
    const t1 (8) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const parse error string 1 0
      seq no type 10 1
        + string 10 1
          const sh:  string 1 0
          name err string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
ecom: 
const parse error string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b122 big 0 0
    const (72) int 6 0
ecom: 
+ string 10 1
  const sh:  string 1 0
  name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b122 big 0 0
    const (80) int 6 0
ecom: 
= ref Node 10 1
  * ref Node 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
  name cmd ref Node 0 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name args list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .t121 ref Listnode 0 0
ecom: 
name cmd ref Node 0 0
ecom to: 
* ref Node 8 1
  name .t121 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t121 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t121 ref Listnode 0 0
ecom: 
= string 10 1
  name err string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name err string 0 0
ecom: 
= ref YYLEX 10 1
  name lex ref YYLEX 0 0
  name nil ref YYLEX 1 0
ecom: 
name nil ref YYLEX 1 0
ecom to: 
name lex ref YYLEX 0 0
ecom: 
call no type 10 2
  name push fn(ctxt: self ref Context) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const 0 string 1 0
      seq no type 10 1
        :: list of ref Listnode 10 1
          hd ref Listnode 10 1
            name args list of ref Listnode 0 0
          name nil polymorphic type 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
ecom: 
const 0 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b122 big 0 0
    const (72) int 6 0
ecom: 
:: list of ref Listnode 10 1
  hd ref Listnode 10 1
    name args list of ref Listnode 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b122 big 0 0
    const (80) int 6 0
eacom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .t121 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t124 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t121 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t121 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t124 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t124 list of ref Listnode 0 0
ecom: 
call no type 10 2
  name setlocal fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const * string 1 0
      seq no type 10 1
        tl list of ref Listnode 10 1
          name args list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
ecom: 
const * string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b122 big 0 0
    const (72) int 6 0
ecom: 
tl list of ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b122 big 0 0
    const (80) int 6 0
ecom: 
= ref Node 10 1
  name cmd ref Node 0 0
  * ref Node 8 0
    + int 15 1
      name cmd ref Node 0 0
      const left (8) int 6 0
ecom: 
* ref Node 8 0
  + int 15 1
    name cmd ref Node 0 0
    const left (8) int 6 0
ecom to: 
name cmd ref Node 0 0
ecom: 
= string 10 2
  name status string 0 0
  call string 10 2
    name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name cmd ref Node 0 0
        seq no type 10 1
          name last int 0 0
ecom: 
call string 10 2
  name walk fn(ctxt: ref Context, n: ref Node, last: int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name cmd ref Node 0 0
      seq no type 10 1
        name last int 0 0
ecom to: 
name status string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
ecom: 
name cmd ref Node 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b122 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b122 big 0 0
    const (80) int 6 0
ecom: 
call no type 10 2
  name pop fn(ctxt: self ref Context) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
= string 10 1
  name status string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name status string 0 0
ecom: 
call no type 10 2
  name pop fn(ctxt: self ref Context) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b122 big 0 0
    const (64) int 6 0
ecom: 
raise nothing 10 1
  name .ex2 exception 0 0
fn: runblock
64: argument ctxt ref Context ref 7
72: argument args list of ref Listnode ref 5
80: argument last int ref 1
84: local .ex2 ref exception ref 1
88: local cmd ref Node ref 10
96: local .b122 big ref 9
104: local err string ref 2
112: local lex ref YYLEX ref 2
120: local status string ref 2
128: local .t121 ref Listnode ref 1
136: local .t124 list of ref Listnode ref 1
144: local .b123 (ref Node, string) ref 1
generate desc for runblock
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap last type int offset 80 (d->offset=80 start=0) returns -1
descmap .ex2 type ref exception offset 84 (d->offset=84 start=0) returns 88
descmap cmd type ref Node offset 88 (d->offset=88 start=0) returns 88
descmap .b122 type big offset 96 (d->offset=96 start=0) returns -1
descmap err type string offset 104 (d->offset=104 start=0) returns 104
descmap lex type ref YYLEX offset 112 (d->offset=112 start=0) returns 112
descmap status type string offset 120 (d->offset=120 start=0) returns 120
descmap .t121 type ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap .t124 type list of ref Listnode offset 136 (d->offset=136 start=0) returns 136
descmap adt offset 144
descmap offset 144
descmap t0 type ref Node offset 144 (d->offset=0 start=144) returns 144
descmap t1 type string offset 152 (d->offset=8 start=144) returns 152
descmap .b123 type (ref Node, string) offset 144 (d->offset=144 start=0) returns 152
generate desc for .ex2
descmap offset 0
descmap status type string offset 120 (d->offset=120 start=0) returns 120
fncom: trybuiltin 2 4190a8
ecom: 
= (int, list of Shellbuiltin) 10 2
  tuple (int, list of Shellbuiltin) 10 1
    seq nothing 10 1
      name nil polymorphic type 1 0
      seq nothing 10 1
        name bmods list of Shellbuiltin 0 0
  call (int, list of Shellbuiltin) 10 2
    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
    seq no type 10 2
      * ref Builtins 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const builtins (8) int 6 0
      seq no type 10 1
        * string 10 1
          + int 10 1
            hd ref Listnode 10 1
              name args list of ref Listnode 0 0
            const word (8) int 6 0
generate desc for (int, list of Shellbuiltin)
ecom: 
call (int, list of Shellbuiltin) 10 2
  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
  seq no type 10 2
    * ref Builtins 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const builtins (8) int 6 0
    seq no type 10 1
      * string 10 1
        + int 10 1
          hd ref Listnode 10 1
            name args list of ref Listnode 0 0
          const word (8) int 6 0
ecom to: 
name .b125 (int, list of Shellbuiltin) 0 0
generate desc for big
ecom: 
* ref Builtins 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const builtins (8) int 6 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b126 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const builtins (8) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t127 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t127 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t127 ref Environment 0 0
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b126 big 0 0
    const (72) int 6 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .t127 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t127 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t127 ref Listnode 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b125 (int, list of Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b125 (int, list of Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
tuple (int, polymorphic type) 10 1
  seq no type 10 1
    const (0) int 6 0
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
* (int, polymorphic type) 8 0
  name .ret int 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * (int, polymorphic type) 8 0
        name .ret int 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  + int 15 1
    adr int 15 1
      * (int, polymorphic type) 8 0
        name .ret int 0 0
    const (8) int 6 0
ecom: 
tuple (int, string) 10 2
  seq no type 10 2
    const (1) int 6 0
    seq no type 10 2
      call string 10 2
        -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 12 2
          hd Shellbuiltin 10 1
            name bmods list of Shellbuiltin 0 0
          name runbuiltin nothing 11 1
        seq no type 10 1
          name ctxt ref Context 0 0
          seq no type 10 1
            name myself Sh 1 0
            seq no type 10 1
              name args list of ref Listnode 0 0
              seq no type 10 1
                name lseq int 0 0
ecom to: 
* (int, string) 8 0
  name .ret int 0 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * (int, string) 8 0
        name .ret int 0 0
    const (0) int 6 0
ecom: 
call string 10 2
  -> fn(c: ref Context, sh: Sh, cmd: list of ref Listnode, last: int): string 12 2
    hd Shellbuiltin 10 1
      name bmods list of Shellbuiltin 0 0
    name runbuiltin nothing 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name myself Sh 1 0
      seq no type 10 1
        name args list of ref Listnode 0 0
        seq no type 10 1
          name lseq int 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * (int, string) 8 0
        name .ret int 0 0
    const (8) int 6 0
generate desc for big
eacom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom to: 
name .t127 Shellbuiltin 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b126 big 0 0
    const (64) int 6 0
ecom: 
name myself Sh 1 0
ecom to: 
* Sh 8 0
  + int 15 0
    name .b126 big 0 0
    const (72) int 6 0
ecom: 
name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b126 big 0 0
    const (80) int 6 0
ecom: 
name lseq int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b126 big 0 0
    const (88) int 6 0
ecom: 
= Shellbuiltin 10 1
  name .t127 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t127 Shellbuiltin 0 0
fn: trybuiltin
64: argument ctxt ref Context ref 2
72: argument args list of ref Listnode ref 2
80: argument lseq int ref 1
88: local bmods list of Shellbuiltin ref 3
96: local .b126 big ref 2
104: local .t127 ref Environment ref 1
112: local .b125 (int, list of Shellbuiltin) ref 1
generate desc for trybuiltin
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap lseq type int offset 80 (d->offset=80 start=0) returns -1
descmap bmods type list of Shellbuiltin offset 88 (d->offset=88 start=0) returns 88
descmap .b126 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t127 type ref Environment offset 104 (d->offset=104 start=0) returns 104
descmap adt offset 112
descmap offset 112
descmap t0 type int offset 112 (d->offset=0 start=112) returns -1
descmap t1 type list of Shellbuiltin offset 120 (d->offset=8 start=112) returns 120
descmap .b125 type (int, list of Shellbuiltin) offset 112 (d->offset=112 start=0) returns 120
fncom: keepfdstr 1 419168
fncom: externalexec 2 419228
ecom: 
used int 10 2
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const NEWFD (1) int 6 0
      seq no type 10 1
        name keepfds list of int 0 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const NEWFD (1) int 6 0
    seq no type 10 1
      name keepfds list of int 0 0
ecom to: 
name .t128 int 0 0
generate desc for big
ecom: 
const NEWFD (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b129 big 0 0
    const (64) int 6 0
ecom: 
name keepfds list of int 0 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b129 big 0 0
    const (72) int 6 0
ecom: 
<-= int 10 2
  name startchan chan of int 0 0
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const (0) int 6 0
      seq no type 10 1
        name nil list of int 1 0
eacom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const (0) int 6 0
    seq no type 10 1
      name nil list of int 1 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const (0) int 6 0
    seq no type 10 1
      name nil list of int 1 0
ecom to: 
name .t128 int 0 0
generate desc for big
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b129 big 0 0
    const (64) int 6 0
ecom: 
name nil list of int 1 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b129 big 0 0
    const (72) int 6 0
ecom: 
call no type 10 2
  -> fn(ctxt: ref Draw->Context, argv: list of string) 12 1
    name mod Command 0 0
    name init nothing 11 1
  seq no type 10 1
    name drawcontext ref Draw->Context 0 0
    seq no type 10 1
      name argv list of string 0 0
generate desc for big
ecom: 
name drawcontext ref Draw->Context 0 0
ecom to: 
* ref Draw->Context 8 0
  + int 15 0
    name .b129 big 0 0
    const (64) int 6 0
ecom: 
name argv list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b129 big 0 0
    const (72) int 6 0
ecom: 
raise nothing 10 1
  const fail:write on closed pipe string 1 0
fn: externalexec
64: argument mod Command ref 1
72: argument drawcontext ref Draw->Context ref 1
80: argument argv list of string ref 3
88: argument startchan chan of int ref 1
96: argument keepfds list of int ref 1
104: local .ex3 ref exception ref 1
108: local .t128 int ref 1
112: local .b129 big ref 3
generate desc for externalexec
descmap offset 0
descmap mod type Command offset 64 (d->offset=64 start=0) returns 64
descmap drawcontext type ref Draw->Context offset 72 (d->offset=72 start=0) returns 72
descmap argv type list of string offset 80 (d->offset=80 start=0) returns 80
descmap startchan type chan of int offset 88 (d->offset=88 start=0) returns 88
descmap keepfds type list of int offset 96 (d->offset=96 start=0) returns 96
descmap .ex3 type ref exception offset 104 (d->offset=104 start=0) returns 104
descmap .t128 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b129 type big offset 112 (d->offset=112 start=0) returns -1
fncom: dup 3 4192e8
eacom: 
* int 10 1
  * ref Sys->FD 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const waitfd (8) int 6 0
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
name .t130 ref Sys->FD 0 0
ecom: 
= ref Sys->FD 10 1
  name .t130 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t130 ref Sys->FD 0 0
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const waitfd (8) int 6 0
  call ref Sys->FD 10 1
    name waitfd fn(): ref Sys->FD 11 1
ecom: 
call ref Sys->FD 10 1
  name waitfd fn(): ref Sys->FD 11 1
ecom to: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
generate desc for big
eacom: 
* int 10 1
  * ref Sys->FD 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const waitfd (8) int 6 0
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
name .t130 ref Sys->FD 0 0
ecom: 
= ref Sys->FD 10 1
  name .t130 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t130 ref Sys->FD 0 0
ecom: 
call no type 10 2
  name panic fn(s: string) 11 1
  seq no type 10 2
    call string 10 2
      -> fn(s: string, nil: int, *): string 12 1
        name sys Sys 1 0
        name sprint nothing 11 1
      seq no type 10 1
        const reopen of waitfd gave same fd (%d) string 1 0
        seq no type 10 1
          * int 10 1
            * ref Sys->FD 8 0
              + int 15 1
                name ctxt ref Context 0 0
                const waitfd (8) int 6 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, nil: int, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const reopen of waitfd gave same fd (%d) string 1 0
    seq no type 10 1
      * int 10 1
        * ref Sys->FD 8 0
          + int 15 1
            name ctxt ref Context 0 0
            const waitfd (8) int 6 0
ecom to: 
name .t130 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap type int offset 72 returns -1
generate desc for big
ecom: 
const reopen of waitfd gave same fd (%d) string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b132 big 0 0
    const (64) int 6 0
ecom: 
* int 10 1
  * ref Sys->FD 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const waitfd (8) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b132 big 0 0
    const (72) int 6 0
eacom: 
* int 10 1
  * ref Sys->FD 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const waitfd (8) int 6 0
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
name .t133 ref Sys->FD 0 0
ecom: 
= ref Sys->FD 10 1
  name .t133 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t133 ref Sys->FD 0 0
ecom: 
name .t130 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b131 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t130 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t130 string 0 0
ecom: 
call int 10 2
  -> fn(old: int, new: int): int 12 1
    name sys Sys 1 0
    name dup nothing 11 1
  seq no type 10 1
    name fd1 int 0 0
    seq no type 10 1
      name fd2 int 0 0
ecom to: 
* int 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name fd1 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b132 big 0 0
    const (64) int 6 0
ecom: 
name fd2 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b132 big 0 0
    const (68) int 6 0
fn: dup
64: argument ctxt ref Context ref 4
72: argument fd1 int ref 1
76: argument fd2 int ref 3
80: local .b131 big ref 2
88: local .b132 big ref 2
96: local .t130 ref Sys->FD ref 1
104: local .t133 ref Sys->FD ref 1
generate desc for dup
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap fd1 type int offset 72 (d->offset=72 start=0) returns -1
descmap fd2 type int offset 76 (d->offset=76 start=0) returns -1
descmap .b131 type big offset 80 (d->offset=80 start=0) returns -1
descmap .b132 type big offset 88 (d->offset=88 start=0) returns -1
descmap .t130 type ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
descmap .t133 type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
fncom: doredirs 3 4193a8
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= list of int 10 1
  name keepfds list of int 0 0
  * list of int 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const keepfds (24) int 6 0
ecom: 
* list of int 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const keepfds (24) int 6 0
ecom to: 
name keepfds list of int 0 0
ecom: 
= list of Redirword 10 1
  name rl list of Redirword 0 0
  * list of Redirword 8 0
    name redirs ref Redirlist 0 0
ecom: 
* list of Redirword 8 0
  name redirs ref Redirlist 0 0
ecom to: 
name rl list of Redirword 0 0
ecom: 
= ref Redirlist 10 1
  name redirs ref Redirlist 0 0
  name nil polymorphic type 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name redirs ref Redirlist 0 0
ecom: 
= Redirword 10 2
  tuple Redirword 10 1
    seq nothing 10 1
      name rfd ref Sys->FD 0 0
      seq nothing 10 1
        name path string 0 0
        seq nothing 10 1
          tuple Redir 10 1
            seq nothing 10 1
              name mode int 0 0
              seq nothing 10 1
                name fd1 int 0 0
                seq nothing 10 1
                  name fd2 int 0 0
  hd Redirword 10 1
    name rl list of Redirword 0 0
ecom: 
hd Redirword 10 1
  name rl list of Redirword 0 0
ecom to: 
name rfd Redirword 0 0
generate desc for Redirword
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const bad redir string 1 0
      seq no type 10 1
        const sh: invalid dup string 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b134 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b134 big 0 0
    const (72) int 6 0
ecom: 
const sh: invalid dup string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b134 big 0 0
    const (80) int 6 0
eacom: 
call int 10 2
  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name fd2 int 0 0
      seq no type 10 1
        name fd1 int 0 0
ecom: 
call int 10 2
  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name fd2 int 0 0
      seq no type 10 1
        name fd1 int 0 0
ecom to: 
name .t135 int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b134 big 0 0
    const (64) int 6 0
ecom: 
name fd2 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b134 big 0 0
    const (72) int 6 0
ecom: 
name fd1 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b134 big 0 0
    const (76) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const bad redir string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: cannot dup: %r string 1 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: cannot dup: %r string 1 0
ecom to: 
name .t136 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const sh: cannot dup: %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b134 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b134 big 0 0
    const (72) int 6 0
ecom: 
name .t136 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b134 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t136 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t136 string 0 0
ecom: 
= list of int 10 1
  name keepfds list of int 0 0
  :: list of int 10 1
    name fd1 int 0 0
    name keepfds list of int 0 0
ecom: 
:: list of int 10 1
  name fd1 int 0 0
  name keepfds list of int 0 0
ecom to: 
name keepfds list of int 0 0
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name rfd Redirword 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name rfd Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name rfd Redirword 0 0
      const w (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name rfd Redirword 0 0
    const w (8) int 6 0
ecom: 
= string 10 1
  name path string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name path string 0 0
eacom: 
& int 10 1
  name mode int 0 0
  const OMASK (7) int 6 0
ecom: 
& int 10 1
  name mode int 0 0
  const OMASK (7) int 6 0
ecom to: 
name .t135 int 0 0
ecom: 
= int 10 1
  name fd1 int 0 0
  const (1) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
name fd1 int 0 0
ecom: 
= int 10 1
  name fd1 int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name fd1 int 0 0
ecom: 
= (int, int) 10 2
  tuple (int, int) 10 1
    seq nothing 10 1
      name append int 0 0
      seq nothing 10 1
        name omode int 0 0
  tuple (int, int) 10 2
    seq no type 10 2
      & int 10 1
        name mode int 0 0
        const OAPPEND (524288) int 6 0
      seq no type 10 1
        & int 10 1
          name mode int 0 0
          const (-524289) int 6 0
ecom: 
tuple (int, int) 10 2
  seq no type 10 2
    & int 10 1
      name mode int 0 0
      const OAPPEND (524288) int 6 0
    seq no type 10 1
      & int 10 1
        name mode int 0 0
        const (-524289) int 6 0
ecom to: 
name append (int, int) 0 0
ecom: 
& int 10 1
  name mode int 0 0
  const OAPPEND (524288) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name append (int, int) 0 0
    const (0) int 6 0
ecom: 
& int 10 1
  name mode int 0 0
  const (-524289) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name append (int, int) 0 0
    const (4) int 6 0
ecom: 
= string 10 1
  name err string 0 0
  const  string 1 0
ecom: 
const  string 1 0
ecom to: 
name err string 0 0
ecom: 
= ref Sys->FD 10 2
  name rfd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name open nothing 11 1
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        name omode int 0 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name open nothing 11 1
  seq no type 10 1
    name path string 0 0
    seq no type 10 1
      name omode int 0 0
ecom to: 
name rfd ref Sys->FD 0 0
generate desc for big
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (72) int 6 0
ecom: 
= ref Sys->FD 10 2
  name rfd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name open nothing 11 1
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        name omode int 0 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name open nothing 11 1
  seq no type 10 1
    name path string 0 0
    seq no type 10 1
      name omode int 0 0
ecom to: 
name rfd ref Sys->FD 0 0
generate desc for big
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (72) int 6 0
ecom: 
= string 10 2
  name err string 0 0
  call string 10 2
    -> fn(s: string, *): string 12 1
      name sys Sys 1 0
      name sprint fn(s: string, *): string 11 1
    seq no type 10 1
      const %r string 1 0
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint fn(s: string, *): string 11 1
  seq no type 10 1
    const %r string 1 0
ecom to: 
name err string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
eacom: 
call int 10 2
  name nonexistent fn(e: string): int 11 1
  seq no type 10 1
    name err string 0 0
ecom: 
call int 10 2
  name nonexistent fn(e: string): int 11 1
  seq no type 10 1
    name err string 0 0
ecom to: 
name .t135 int 0 0
generate desc for big
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 2
  name rfd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name create nothing 11 1
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        name omode int 0 0
        seq no type 10 1
          const (438) int 6 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name create nothing 11 1
  seq no type 10 1
    name path string 0 0
    seq no type 10 1
      name omode int 0 0
      seq no type 10 1
        const (438) int 6 0
ecom to: 
name rfd ref Sys->FD 0 0
generate desc for big
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (72) int 6 0
ecom: 
const (438) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (76) int 6 0
ecom: 
= string 10 1
  name err string 0 0
  name nil polymorphic type 1 0
ecom: 
name nil string 1 0
ecom to: 
name err string 0 0
ecom: 
= ref Sys->FD 10 2
  name rfd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name create nothing 11 1
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        name omode int 0 0
        seq no type 10 1
          const (438) int 6 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int, perm: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name create nothing 11 1
  seq no type 10 1
    name path string 0 0
    seq no type 10 1
      name omode int 0 0
      seq no type 10 1
        const (438) int 6 0
ecom to: 
name rfd ref Sys->FD 0 0
generate desc for big
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (72) int 6 0
ecom: 
const (438) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (76) int 6 0
ecom: 
= string 10 2
  name err string 0 0
  call string 10 2
    -> fn(s: string, *): string 12 1
      name sys Sys 1 0
      name sprint fn(s: string, *): string 11 1
    seq no type 10 1
      const %r string 1 0
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint fn(s: string, *): string 11 1
  seq no type 10 1
    const %r string 1 0
ecom to: 
name err string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 2
  name rfd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name open nothing 11 1
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        name omode int 0 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name open nothing 11 1
  seq no type 10 1
    name path string 0 0
    seq no type 10 1
      name omode int 0 0
ecom to: 
name rfd ref Sys->FD 0 0
generate desc for big
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (72) int 6 0
ecom: 
= string 10 2
  name nerr string 0 0
  call string 10 2
    -> fn(s: string, *): string 12 1
      name sys Sys 1 0
      name sprint fn(s: string, *): string 11 1
    seq no type 10 1
      const %r string 1 0
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint fn(s: string, *): string 11 1
  seq no type 10 1
    const %r string 1 0
ecom to: 
name nerr string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
eacom: 
call int 10 2
  name nonexistent fn(e: string): int 11 1
  seq no type 10 1
    name nerr string 0 0
ecom: 
call int 10 2
  name nonexistent fn(e: string): int 11 1
  seq no type 10 1
    name nerr string 0 0
ecom to: 
name .t135 int 0 0
generate desc for big
ecom: 
name nerr string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name err string 0 0
  name nerr string 0 0
ecom: 
name nerr string 0 0
ecom to: 
name err string 0 0
ecom: 
= string 10 1
  name nerr string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name nerr string 0 0
ecom: 
= string 10 2
  name err string 0 0
  call string 10 2
    -> fn(s: string, *): string 12 1
      name sys Sys 1 0
      name sprint fn(s: string, *): string 11 1
    seq no type 10 1
      const %r string 1 0
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint fn(s: string, *): string 11 1
  seq no type 10 1
    const %r string 1 0
ecom to: 
name err string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const bad redir string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, nil: string, nil: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: cannot open %s: %s string 1 0
            seq no type 10 1
              name path string 0 0
              seq no type 10 1
                name err string 0 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, nil: string, nil: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: cannot open %s: %s string 1 0
    seq no type 10 1
      name path string 0 0
      seq no type 10 1
        name err string 0 0
ecom to: 
name .t136 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap type string offset 72 returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
const sh: cannot open %s: %s string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b134 big 0 0
    const (64) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b134 big 0 0
    const (72) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b134 big 0 0
    const (80) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (72) int 6 0
ecom: 
name .t136 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b137 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t136 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t136 string 0 0
ecom: 
used big 10 2
  call big 10 2
    -> fn(fd: ref Sys->FD, off: big, start: int): big 12 1
      name sys Sys 1 0
      name seek nothing 11 1
    seq no type 10 1
      name rfd ref Sys->FD 0 0
      seq no type 10 1
        const .B.00000000.       0 (0) big 1 0
        seq no type 10 1
          const SEEKEND (2) int 6 0
generate desc for big
ecom: 
call big 10 2
  -> fn(fd: ref Sys->FD, off: big, start: int): big 12 1
    name sys Sys 1 0
    name seek nothing 11 1
  seq no type 10 1
    name rfd ref Sys->FD 0 0
    seq no type 10 1
      const .B.00000000.       0 (0) big 1 0
      seq no type 10 1
        const SEEKEND (2) int 6 0
ecom to: 
name .b137 big 0 0
generate desc for big
ecom: 
name rfd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b134 big 0 0
    const (64) int 6 0
ecom: 
const .B.00000000.       0 (0) big 1 0
ecom to: 
* big 8 0
  + int 15 0
    name .b134 big 0 0
    const (72) int 6 0
ecom: 
const SEEKEND (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b134 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name err string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name err string 0 0
ecom: 
used int 10 2
  call int 10 2
    name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * int 8 0
          name rfd ref Sys->FD 0 0
        seq no type 10 1
          name fd1 int 0 0
ecom: 
call int 10 2
  name dup fn(ctxt: ref Context, fd1: int, fd2: int): int 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * int 8 0
        name rfd ref Sys->FD 0 0
      seq no type 10 1
        name fd1 int 0 0
ecom to: 
name .t135 int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b137 big 0 0
    const (64) int 6 0
ecom: 
* int 8 0
  name rfd ref Sys->FD 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (72) int 6 0
ecom: 
name fd1 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b137 big 0 0
    const (76) int 6 0
ecom: 
= list of int 10 1
  name keepfds list of int 0 0
  :: list of int 10 1
    name fd1 int 0 0
    name keepfds list of int 0 0
ecom: 
:: list of int 10 1
  name fd1 int 0 0
  name keepfds list of int 0 0
ecom to: 
name keepfds list of int 0 0
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name rfd Redirword 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 0 0
  adr int 13 1
    name rfd Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name rfd Redirword 0 0
      const w (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name rfd Redirword 0 0
    const w (8) int 6 0
ecom: 
= string 10 1
  name path string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name path string 0 0
ecom: 
= list of Redirword 10 1
  name rl list of Redirword 0 0
  tl list of Redirword 10 1
    name rl list of Redirword 0 0
ecom: 
tl list of Redirword 10 1
  name rl list of Redirword 0 0
ecom to: 
name rl list of Redirword 0 0
ecom: 
= list of int 10 1
  * list of int 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const keepfds (24) int 6 0
  name keepfds list of int 0 0
ecom: 
name keepfds list of int 0 0
ecom to: 
* list of int 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const keepfds (24) int 6 0
ecom: 
:: list of int 10 1
  * int 10 1
    * ref Sys->FD 8 0
      + int 15 1
        name ctxt ref Context 0 0
        const waitfd (8) int 6 0
  name keepfds list of int 0 0
ecom to: 
* list of int 8 0
  name .ret int 0 0
eacom: 
* int 10 1
  * ref Sys->FD 8 0
    + int 15 1
      name ctxt ref Context 0 0
      const waitfd (8) int 6 0
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
name .t136 ref Sys->FD 0 0
ecom: 
name keepfds list of int 0 0
ecom to: 
name .t138 list of int 0 0
ecom: 
= ref Sys->FD 10 1
  name .t136 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t136 ref Sys->FD 0 0
ecom: 
= list of int 10 1
  name .t138 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t138 list of int 0 0
fn: doredirs
64: argument ctxt ref Context ref 8
72: argument redirs ref Redirlist ref 3
80: local append int ref 2
84: local omode int ref 6
88: local .t135 int ref 1
96: local .b137 big ref 15
104: local rfd ref Sys->FD ref 13
112: local path string ref 8
120: local mode int ref 5
124: local fd1 int ref 9
128: local fd2 int ref 3
136: local err string ref 10
144: local keepfds list of int ref 7
152: local .b134 big ref 5
160: local rl list of Redirword ref 5
168: local nerr string ref 3
176: local .t136 string ref 1
184: local .t138 list of int ref 1
generate desc for doredirs
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap redirs type ref Redirlist offset 72 (d->offset=72 start=0) returns 72
descmap append type int offset 80 (d->offset=80 start=0) returns -1
descmap omode type int offset 84 (d->offset=84 start=0) returns -1
descmap .t135 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b137 type big offset 96 (d->offset=96 start=0) returns -1
descmap rfd type ref Sys->FD offset 104 (d->offset=104 start=0) returns 104
descmap path type string offset 112 (d->offset=112 start=0) returns 112
descmap mode type int offset 120 (d->offset=120 start=0) returns -1
descmap fd1 type int offset 124 (d->offset=124 start=0) returns -1
descmap fd2 type int offset 128 (d->offset=128 start=0) returns -1
descmap err type string offset 136 (d->offset=136 start=0) returns 136
descmap keepfds type list of int offset 144 (d->offset=144 start=0) returns 144
descmap .b134 type big offset 152 (d->offset=152 start=0) returns -1
descmap rl type list of Redirword offset 160 (d->offset=160 start=0) returns 160
descmap nerr type string offset 168 (d->offset=168 start=0) returns 168
descmap .t136 type string offset 176 (d->offset=176 start=0) returns 176
descmap .t138 type list of int offset 184 (d->offset=184 start=0) returns 184
fncom: waitfd 5 419468
ecom: 
= string 10 2
  name wf string 0 0
  + string 10 2
    cast string 10 2
      call int 10 2
        -> fn(flags: int, movefd: list of int): int 12 1
          name sys Sys 1 0
          name pctl nothing 11 1
        seq no type 10 1
          const (0) int 6 0
          seq no type 10 1
            name nil list of int 1 0
    const /wait string 1 0
ecom: 
+ string 10 2
  cast string 10 2
    call int 10 2
      -> fn(flags: int, movefd: list of int): int 12 1
        name sys Sys 1 0
        name pctl nothing 11 1
      seq no type 10 1
        const (0) int 6 0
        seq no type 10 1
          name nil list of int 1 0
  const /wait string 1 0
ecom to: 
name wf string 0 0
ecom: 
cast string 10 2
  call int 10 2
    -> fn(flags: int, movefd: list of int): int 12 1
      name sys Sys 1 0
      name pctl nothing 11 1
    seq no type 10 1
      const (0) int 6 0
      seq no type 10 1
        name nil list of int 1 0
ecom to: 
name .t139 string 0 0
eacom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const (0) int 6 0
    seq no type 10 1
      name nil list of int 1 0
ecom: 
call int 10 2
  -> fn(flags: int, movefd: list of int): int 12 1
    name sys Sys 1 0
    name pctl nothing 11 1
  seq no type 10 1
    const (0) int 6 0
    seq no type 10 1
      name nil list of int 1 0
ecom to: 
name .t140 int 0 0
generate desc for big
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b141 big 0 0
    const (64) int 6 0
ecom: 
name nil list of int 1 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b141 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t139 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t139 string 0 0
ecom: 
= ref Sys->FD 10 2
  name waitfd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name open nothing 11 1
    seq no type 10 2
      + string 10 1
        const #p/ string 1 0
        name wf string 0 0
      seq no type 10 1
        const OREAD (0) int 6 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name open nothing 11 1
  seq no type 10 2
    + string 10 1
      const #p/ string 1 0
      name wf string 0 0
    seq no type 10 1
      const OREAD (0) int 6 0
ecom to: 
name waitfd ref Sys->FD 0 0
generate desc for big
ecom: 
+ string 10 1
  const #p/ string 1 0
  name wf string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b141 big 0 0
    const (64) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b141 big 0 0
    const (72) int 6 0
ecom: 
= ref Sys->FD 10 2
  name waitfd ref Sys->FD 0 0
  call ref Sys->FD 10 2
    -> fn(s: string, mode: int): ref Sys->FD 12 1
      name sys Sys 1 0
      name open nothing 11 1
    seq no type 10 2
      + string 10 1
        const /prog/ string 1 0
        name wf string 0 0
      seq no type 10 1
        const OREAD (0) int 6 0
ecom: 
call ref Sys->FD 10 2
  -> fn(s: string, mode: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name open nothing 11 1
  seq no type 10 2
    + string 10 1
      const /prog/ string 1 0
      name wf string 0 0
    seq no type 10 1
      const OREAD (0) int 6 0
ecom to: 
name waitfd ref Sys->FD 0 0
generate desc for big
ecom: 
+ string 10 1
  const /prog/ string 1 0
  name wf string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b141 big 0 0
    const (64) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b141 big 0 0
    const (72) int 6 0
ecom: 
call no type 10 2
  name panic fn(s: string) 11 1
  seq no type 10 2
    call string 10 2
      -> fn(s: string, *): string 12 1
        name sys Sys 1 0
        name sprint nothing 11 1
      seq no type 10 1
        const cannot open wait file: %r string 1 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const cannot open wait file: %r string 1 0
ecom to: 
name .t139 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const cannot open wait file: %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b142 big 0 0
    const (64) int 6 0
ecom: 
name .t139 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b141 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t139 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t139 string 0 0
ecom: 
name waitfd ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  name .ret int 0 0
fn: waitfd
64: local .t140 int ref 1
72: local waitfd ref Sys->FD ref 5
80: local .b141 big ref 4
88: local wf string ref 3
96: local .b142 big ref 1
104: local .t139 string ref 1
generate desc for waitfd
descmap offset 0
descmap .t140 type int offset 64 (d->offset=64 start=0) returns -1
descmap waitfd type ref Sys->FD offset 72 (d->offset=72 start=0) returns 72
descmap .b141 type big offset 80 (d->offset=80 start=0) returns -1
descmap wf type string offset 88 (d->offset=88 start=0) returns 88
descmap .b142 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t139 type string offset 104 (d->offset=104 start=0) returns 104
fncom: waitfor 6 419528
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= array of string 10 1
  name status array of string 0 0
  array array of string 10 1
    len int 10 1
      name pids list of int 0 0
ecom: 
array array of string 10 1
  len int 10 1
    name pids list of int 0 0
ecom to: 
name status array of string 0 0
eacom: 
len int 10 1
  name pids list of int 0 0
ecom: 
len int 10 1
  name pids list of int 0 0
ecom to: 
name .t143 int 0 0
generate desc for string
ecom: 
= int 10 1
  name wcount int 0 0
  len int 10 1
    name status array of string 0 0
ecom: 
len int 10 1
  name status array of string 0 0
ecom to: 
name wcount int 0 0
ecom: 
= array of byte 10 1
  name buf array of byte 0 0
  array array of byte 10 1
    const WAITLEN (192) int 6 0
ecom: 
array array of byte 10 1
  const WAITLEN (192) int 6 0
ecom to: 
name buf array of byte 0 0
generate desc for byte
ecom: 
= int 10 1
  name onebad int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name onebad int 0 0
ecom: 
= int 10 2
  name n int 0 0
  call int 10 2
    -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
      name sys Sys 1 0
      name read nothing 11 1
    seq no type 10 1
      * ref Sys->FD 8 0
        + int 15 1
          name ctxt ref Context 0 0
          const waitfd (8) int 6 0
      seq no type 10 1
        name buf array of byte 0 0
        seq no type 10 1
          len int 10 1
            name buf array of byte 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, buf: array of byte, n: int): int 12 1
    name sys Sys 1 0
    name read nothing 11 1
  seq no type 10 1
    * ref Sys->FD 8 0
      + int 15 1
        name ctxt ref Context 0 0
        const waitfd (8) int 6 0
    seq no type 10 1
      name buf array of byte 0 0
      seq no type 10 1
        len int 10 1
          name buf array of byte 0 0
ecom to: 
name n int 0 0
generate desc for big
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b144 big 0 0
    const (64) int 6 0
ecom: 
name buf array of byte 0 0
ecom to: 
* array of byte 8 0
  + int 15 0
    name .b144 big 0 0
    const (72) int 6 0
ecom: 
len int 10 1
  name buf array of byte 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b144 big 0 0
    const (80) int 6 0
ecom: 
call no type 10 2
  name panic fn(s: string) 11 1
  seq no type 10 2
    call string 10 2
      -> fn(s: string, *): string 12 1
        name sys Sys 1 0
        name sprint nothing 11 1
      seq no type 10 1
        const error on wait read: %r string 1 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const error on wait read: %r string 1 0
ecom to: 
name .t145 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
generate desc for big
ecom: 
const error on wait read: %r string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b146 big 0 0
    const (64) int 6 0
ecom: 
name .t145 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b144 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t145 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t145 string 0 0
ecom: 
= (int, string, string) 10 2
  tuple (int, string, string) 10 1
    seq nothing 10 1
      name who int 0 0
      seq nothing 10 1
        name line string 0 0
        seq nothing 10 1
          name s string 0 0
  call (int, string, string) 10 2
    name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        cast string 10 1
          slice array of byte 10 1
            name buf array of byte 0 0
            seq no type 10 1
              const (0) int 6 0
              name n int 0 0
ecom: 
call (int, string, string) 10 2
  name parsewaitstatus fn(ctxt: ref Context, status: string): (int, string, string) 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      cast string 10 1
        slice array of byte 10 1
          name buf array of byte 0 0
          seq no type 10 1
            const (0) int 6 0
            name n int 0 0
ecom to: 
name who (int, string, string) 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b146 big 0 0
    const (64) int 6 0
ecom: 
cast string 10 1
  slice array of byte 10 1
    name buf array of byte 0 0
    seq no type 10 1
      const (0) int 6 0
      name n int 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b146 big 0 0
    const (72) int 6 0
eacom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    const (0) int 6 0
    name n int 0 0
ecom: 
slice array of byte 10 1
  name buf array of byte 0 0
  seq no type 10 1
    const (0) int 6 0
    name n int 0 0
ecom to: 
name .t145 array of byte 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
name .t145 array of byte 0 0
ecom: 
= array of byte 10 1
  name .t145 array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name .t145 array of byte 0 0
eacom: 
len int 10 1
  name s string 0 0
ecom: 
len int 10 1
  name s string 0 0
ecom to: 
name .t143 int 0 0
eacom: 
slice string 10 1
  name s string 0 0
  seq no type 10 1
    const (0) int 6 0
    const (5) int 6 0
ecom: 
slice string 10 1
  name s string 0 0
  seq no type 10 1
    const (0) int 6 0
    const (5) int 6 0
ecom to: 
name .t145 string 0 0
ecom: 
name s string 0 0
ecom to: 
name .t145 string 0 0
ecom: 
= string 10 1
  name .t145 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t145 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  call string 10 2
    name failurestatus fn(e: string): string 11 1
    seq no type 10 1
      name s string 0 0
ecom: 
call string 10 2
  name failurestatus fn(e: string): string 11 1
  seq no type 10 1
    name s string 0 0
ecom to: 
name s string 0 0
generate desc for big
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b146 big 0 0
    const (64) int 6 0
ecom: 
call no type 10 2
  name diagnostic fn(ctxt: ref Context, s: string) 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name line string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b146 big 0 0
    const (64) int 6 0
ecom: 
name line string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b146 big 0 0
    const (72) int 6 0
ecom: 
= (int, list of int) 10 2
  tuple (int, list of int) 10 2
    seq nothing 10 1
      name i int 0 0
      seq nothing 10 1
        name pl list of int 0 0
    tuple (int, string, string) 10 1
      seq nothing 10 1
        name who (int, string, string) 0 0
        seq nothing 10 1
          name line string 0 0
          seq nothing 10 1
            name s string 0 0
  tuple (int, list of int) 10 1
    seq no type 10 1
      const (0) int 6 0
      seq no type 10 1
        name pids list of int 0 0
ecom: 
tuple (int, list of int) 10 1
  seq no type 10 1
    const (0) int 6 0
    seq no type 10 1
      name pids list of int 0 0
ecom to: 
name i (int, list of int) 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name i (int, list of int) 0 0
    const (0) int 6 0
ecom: 
name pids list of int 0 0
ecom to: 
* list of int 0 0
  + int 13 1
    adr int 13 1
      name i (int, list of int) 0 0
    const (8) int 6 0
eacom: 
hd int 10 1
  name pl list of int 0 0
ecom: 
hd int 10 1
  name pl list of int 0 0
ecom to: 
name .t143 int 0 0
ecom: 
= (int, list of int) 10 2
  tuple (int, list of int) 10 1
    seq no type 10 1
      name i int 0 0
      seq no type 10 1
        name pl list of int 0 0
  tuple (int, list of int) 10 2
    seq no type 10 2
      + int 15 1
        name i int 0 0
        const (1) int 6 0
      seq no type 10 1
        tl list of int 10 1
          name pl list of int 0 0
generate desc for (int, list of int)
descmap adt offset 0
descmap offset 0
descmap t0 type int offset 0 (d->offset=0 start=0) returns -1
descmap t1 type list of int offset 8 (d->offset=8 start=0) returns 8
generate desc for (int, list of int)
	desc	$-1,16,"40"
ecom: 
tuple (int, list of int) 10 2
  seq no type 10 2
    + int 15 1
      name i int 0 0
      const (1) int 6 0
    seq no type 10 1
      tl list of int 10 1
        name pl list of int 0 0
ecom to: 
name .b147 (int, list of int) 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name .b147 (int, list of int) 0 0
    const (0) int 6 0
ecom: 
tl list of int 10 1
  name pl list of int 0 0
ecom to: 
* list of int 0 0
  + int 13 1
    adr int 13 1
      name .b147 (int, list of int) 0 0
    const (8) int 6 0
ecom: 
= list of int 10 1
  * list of int 0 0
    + int 13 1
      adr int 13 1
        name .b147 (int, list of int) 0 0
      const t1 (8) int 6 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
* list of int 0 0
  + int 13 1
    adr int 13 1
      name .b147 (int, list of int) 0 0
    const t1 (8) int 6 0
eacom: 
len int 10 1
  name status array of string 0 0
ecom: 
len int 10 1
  name status array of string 0 0
ecom to: 
name .t143 int 0 0
eacom: 
* string 10 1
  indx big 10 1
    name status array of string 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  name status array of string 0 0
  name i int 0 0
ecom to: 
name .b146 big 0 0
ecom: 
+= int 10 1
  name onebad int 0 0
  != int 10 1
    name s string 0 0
    name nil string 1 0
eacom: 
!= int 10 1
  name s string 0 0
  name nil string 1 0
ecom: 
!= int 10 1
  name s string 0 0
  name nil string 1 0
ecom to: 
name .t143 int 0 0
ecom: 
= string 10 1
  * string 10 1
    indx big 10 1
      name status array of string 0 0
      name i int 0 0
  name s string 0 0
eacom: 
* string 10 1
  indx big 10 1
    name status array of string 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  name status array of string 0 0
  name i int 0 0
ecom to: 
name .b146 big 0 0
ecom: 
name s string 0 0
ecom to: 
* string 8 1
  name .b146 big 0 0
eacom: 
-- int 10 1
  name wcount int 0 0
  const (1) int 6 0
ecom: 
-- int 10 1
  name wcount int 0 0
  const (1) int 6 0
ecom to: 
name .t143 int 0 0
ecom: 
= list of int 10 1
  * list of int 0 0
    + int 13 1
      adr int 13 1
        name i (int, list of int) 0 0
      const t1 (8) int 6 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
* list of int 0 0
  + int 13 1
    adr int 13 1
      name i (int, list of int) 0 0
    const t1 (8) int 6 0
ecom: 
= list of int 10 1
  name pl list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name pl list of int 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name who (int, string, string) 0 0
      const t1 (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name who (int, string, string) 0 0
    const t1 (8) int 6 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name who (int, string, string) 0 0
      const t2 (16) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name who (int, string, string) 0 0
    const t2 (16) int 6 0
ecom: 
= string 10 1
  name line string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name line string 0 0
ecom: 
= string 10 1
  name s string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name s string 0 0
ecom: 
= list of int 10 1
  * list of int 0 0
    + int 13 1
      adr int 13 1
        name i (int, list of int) 0 0
      const t1 (8) int 6 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
* list of int 0 0
  + int 13 1
    adr int 13 1
      name i (int, list of int) 0 0
    const t1 (8) int 6 0
ecom: 
= list of int 10 1
  name pl list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name pl list of int 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name who (int, string, string) 0 0
      const t1 (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name who (int, string, string) 0 0
    const t1 (8) int 6 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name who (int, string, string) 0 0
      const t2 (16) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name who (int, string, string) 0 0
    const t2 (16) int 6 0
ecom: 
= string 10 1
  name line string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name line string 0 0
ecom: 
= string 10 1
  name s string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name s string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= string 10 1
  name r string 0 0
  * string 10 1
    indx big 10 1
      name status array of string 0 0
      - int 10 1
        len int 10 1
          name status array of string 0 0
        const (1) int 6 0
ecom: 
* string 10 1
  indx big 10 1
    name status array of string 0 0
    - int 10 1
      len int 10 1
        name status array of string 0 0
      const (1) int 6 0
ecom to: 
name r string 0 0
eacom: 
* string 10 1
  indx big 10 1
    name status array of string 0 0
    - int 10 1
      len int 10 1
        name status array of string 0 0
      const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  name status array of string 0 0
  - int 10 1
    len int 10 1
      name status array of string 0 0
    const (1) int 6 0
ecom to: 
name .b146 big 0 0
eacom: 
- int 10 1
  len int 10 1
    name status array of string 0 0
  const (1) int 6 0
ecom: 
- int 10 1
  len int 10 1
    name status array of string 0 0
  const (1) int 6 0
ecom to: 
name .t143 int 0 0
ecom: 
len int 10 1
  name status array of string 0 0
ecom to: 
name .t143 int 0 0
ecom: 
= int 10 1
  name i int 0 0
  - int 10 1
    len int 10 1
      name status array of string 0 0
    const (2) int 6 0
ecom: 
- int 10 1
  len int 10 1
    name status array of string 0 0
  const (2) int 6 0
ecom to: 
name i int 0 0
ecom: 
len int 10 1
  name status array of string 0 0
ecom to: 
name .t143 int 0 0
ecom: 
+= string 10 1
  name r string 0 0
  + string 10 1
    const | string 1 0
    * string 10 1
      indx big 10 1
        name status array of string 0 0
        name i int 0 0
eacom: 
+ string 10 1
  const | string 1 0
  * string 10 1
    indx big 10 1
      name status array of string 0 0
      name i int 0 0
ecom: 
+ string 10 1
  const | string 1 0
  * string 10 1
    indx big 10 1
      name status array of string 0 0
      name i int 0 0
ecom to: 
name .t145 string 0 0
eacom: 
* string 10 1
  indx big 10 1
    name status array of string 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  name status array of string 0 0
  name i int 0 0
ecom to: 
name .b146 big 0 0
ecom: 
= string 10 1
  name .t145 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t145 string 0 0
ecom: 
-- int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
name r string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
fn: waitfor
64: argument ctxt ref Context ref 3
72: argument pids list of int ref 3
80: local i int ref 6
88: local pl list of int ref 5
96: local n int ref 3
100: local onebad int ref 3
104: local wcount int ref 2
112: local who int ref 2
120: local line string ref 2
128: local s string ref 9
136: local .t143 int ref 1
144: local status array of string ref 9
152: local .b146 big ref 8
160: local buf array of byte ref 4
168: local r string ref 3
176: local .b144 big ref 2
184: local .t145 string ref 1
192: local .b147 (int, list of int) ref 1
96: local i int ref 4
generate desc for waitfor
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap pids type list of int offset 72 (d->offset=72 start=0) returns 72
descmap i type int offset 80 (d->offset=80 start=0) returns -1
descmap pl type list of int offset 88 (d->offset=88 start=0) returns 88
descmap n type int offset 96 (d->offset=96 start=0) returns -1
descmap onebad type int offset 100 (d->offset=100 start=0) returns -1
descmap wcount type int offset 104 (d->offset=104 start=0) returns -1
descmap who type int offset 112 (d->offset=112 start=0) returns -1
descmap line type string offset 120 (d->offset=120 start=0) returns 120
descmap s type string offset 128 (d->offset=128 start=0) returns 128
descmap .t143 type int offset 136 (d->offset=136 start=0) returns -1
descmap status type array of string offset 144 (d->offset=144 start=0) returns 144
descmap .b146 type big offset 152 (d->offset=152 start=0) returns -1
descmap buf type array of byte offset 160 (d->offset=160 start=0) returns 160
descmap r type string offset 168 (d->offset=168 start=0) returns 168
descmap .b144 type big offset 176 (d->offset=176 start=0) returns -1
descmap .t145 type string offset 184 (d->offset=184 start=0) returns 184
descmap adt offset 192
descmap offset 192
descmap t0 type int offset 192 (d->offset=0 start=192) returns -1
descmap t1 type list of int offset 200 (d->offset=8 start=192) returns 200
descmap .b147 type (int, list of int) offset 192 (d->offset=192 start=0) returns 200
fncom: parsewaitstatus 2 4195e8
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  name status string 0 0
ecom: 
len int 10 1
  name status string 0 0
ecom to: 
name .t148 int 0 0
eacom: 
inds int 10 1
  name status string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name status string 0 0
  name i int 0 0
ecom to: 
name .t148 int 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
eacom: 
- int 10 1
  len int 10 1
    name status string 0 0
  const (1) int 6 0
ecom: 
- int 10 1
  len int 10 1
    name status string 0 0
  const (1) int 6 0
ecom to: 
name .t148 int 0 0
ecom: 
len int 10 1
  name status string 0 0
ecom to: 
name .t148 int 0 0
eacom: 
inds int 10 1
  name status string 0 0
  + int 15 1
    name i int 0 0
    const (1) int 6 0
ecom: 
inds int 10 1
  name status string 0 0
  + int 15 1
    name i int 0 0
    const (1) int 6 0
ecom to: 
name .t148 int 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t149 int 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const bad wait read string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, nil: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: bad exit status '%s' string 1 0
            seq no type 10 1
              name status string 0 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, nil: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: bad exit status '%s' string 1 0
    seq no type 10 1
      name status string 0 0
ecom to: 
name .t151 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap type string offset 72 returns 72
generate desc for big
ecom: 
const sh: bad exit status '%s' string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b152 big 0 0
    const (64) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b152 big 0 0
    const (72) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b150 big 0 0
    const (64) int 6 0
ecom: 
const bad wait read string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b150 big 0 0
    const (72) int 6 0
ecom: 
name .t151 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b150 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t151 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t151 string 0 0
ecom: 
+= int 10 1
  name i int 0 0
  const (2) int 6 0
eacom: 
len int 10 1
  name status string 0 0
ecom: 
len int 10 1
  name status string 0 0
ecom to: 
name .t149 int 0 0
eacom: 
inds int 10 1
  name status string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name status string 0 0
  name i int 0 0
ecom to: 
name .t149 int 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
eacom: 
- int 10 1
  len int 10 1
    name status string 0 0
  const (2) int 6 0
ecom: 
- int 10 1
  len int 10 1
    name status string 0 0
  const (2) int 6 0
ecom to: 
name .t149 int 0 0
ecom: 
len int 10 1
  name status string 0 0
ecom to: 
name .t149 int 0 0
eacom: 
inds int 10 1
  name status string 0 0
  + int 15 1
    name i int 0 0
    const (1) int 6 0
ecom: 
inds int 10 1
  name status string 0 0
  + int 15 1
    name i int 0 0
    const (1) int 6 0
ecom to: 
name .t149 int 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t148 int 0 0
ecom: 
call no type 10 2
  name fail fn(ctxt: self ref Context, ename: string, err: string) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      const bad wait read string 1 0
      seq no type 10 2
        call string 10 2
          -> fn(s: string, nil: string, *): string 12 1
            name sys Sys 1 0
            name sprint nothing 11 1
          seq no type 10 1
            const sh: bad exit status '%s' string 1 0
            seq no type 10 1
              name status string 0 0
generate desc for big
ecom: 
call string 10 2
  -> fn(s: string, nil: string, *): string 12 1
    name sys Sys 1 0
    name sprint nothing 11 1
  seq no type 10 1
    const sh: bad exit status '%s' string 1 0
    seq no type 10 1
      name status string 0 0
ecom to: 
name .t151 string 0 0
generate desc for Sys->sprint
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap type string offset 72 returns 72
generate desc for big
ecom: 
const sh: bad exit status '%s' string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b150 big 0 0
    const (64) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b150 big 0 0
    const (72) int 6 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b152 big 0 0
    const (64) int 6 0
ecom: 
const bad wait read string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b152 big 0 0
    const (72) int 6 0
ecom: 
name .t151 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b152 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t151 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t151 string 0 0
ecom: 
tuple (int, string, string) 10 2
  seq no type 10 2
    cast int 10 1
      name status string 0 0
    seq no type 10 2
      name status string 0 0
      seq no type 10 2
        slice string 10 2
          name status string 0 0
          seq no type 10 2
            + int 15 1
              name i int 0 0
              const (2) int 6 0
            nothing no type 10 1
ecom to: 
* (int, string, string) 8 0
  name .ret int 0 0
ecom: 
cast int 10 1
  name status string 0 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * (int, string, string) 8 0
        name .ret int 0 0
    const (0) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * (int, string, string) 8 0
        name .ret int 0 0
    const (8) int 6 0
ecom: 
slice string 10 2
  name status string 0 0
  seq no type 10 2
    + int 15 1
      name i int 0 0
      const (2) int 6 0
    nothing no type 10 1
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * (int, string, string) 8 0
        name .ret int 0 0
    const (16) int 6 0
ecom: 
len int 10 1
  name status string 0 0
ecom to: 
name .t149 int 0 0
eacom: 
+ int 15 1
  name i int 0 0
  const (2) int 6 0
ecom: 
+ int 15 1
  name i int 0 0
  const (2) int 6 0
ecom to: 
name .t148 int 0 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * (int, string, string) 8 0
        name .ret int 0 0
    const (16) int 6 0
fn: parsewaitstatus
64: argument ctxt ref Context ref 2
72: argument status string ref 13
80: local i int ref 13
84: local .t148 int ref 1
88: local .t149 int ref 1
96: local .b150 big ref 2
104: local .b152 big ref 2
112: local .t151 string ref 1
generate desc for parsewaitstatus
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap status type string offset 72 (d->offset=72 start=0) returns 72
descmap i type int offset 80 (d->offset=80 start=0) returns -1
descmap .t148 type int offset 84 (d->offset=84 start=0) returns -1
descmap .t149 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b150 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b152 type big offset 104 (d->offset=104 start=0) returns -1
descmap .t151 type string offset 112 (d->offset=112 start=0) returns 112
fncom: panic 6 4196a8
ecom: 
used int 10 2
  call int 10 2
    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
      name sys Sys 1 0
      name fprint nothing 11 1
    seq no type 10 2
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (2) int 6 0
      seq no type 10 1
        const sh panic: %s
 string 1 0
        seq no type 10 1
          name s string 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
    name sys Sys 1 0
    name fprint nothing 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (2) int 6 0
    seq no type 10 1
      const sh panic: %s
 string 1 0
      seq no type 10 1
        name s string 0 0
ecom to: 
name .t153 int 0 0
generate desc for Sys->fprint
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (2) int 6 0
ecom to: 
name .t155 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b156 big 0 0
    const (64) int 6 0
ecom: 
name .t155 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b154 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t155 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t155 ref Sys->FD 0 0
ecom: 
const sh panic: %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b154 big 0 0
    const (72) int 6 0
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b154 big 0 0
    const (80) int 6 0
ecom: 
raise nothing 10 1
  const panic string 1 0
fn: panic
64: argument s string ref 1
72: local .t153 int ref 1
80: local .b154 big ref 1
88: local .b156 big ref 1
96: local .t155 ref Sys->FD ref 1
generate desc for panic
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap .t153 type int offset 72 (d->offset=72 start=0) returns -1
descmap .b154 type big offset 80 (d->offset=80 start=0) returns -1
descmap .b156 type big offset 88 (d->offset=88 start=0) returns -1
descmap .t155 type ref Sys->FD offset 96 (d->offset=96 start=0) returns 96
fncom: diagnostic 9 419768
eacom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const VERBOSE (2) int 6 0
ecom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const VERBOSE (2) int 6 0
ecom to: 
name .t157 int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t158 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t158 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t158 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t158 ref Localenv 0 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
      name sys Sys 1 0
      name fprint nothing 11 1
    seq no type 10 2
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (2) int 6 0
      seq no type 10 1
        const sh: %s
 string 1 0
        seq no type 10 1
          name s string 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
    name sys Sys 1 0
    name fprint nothing 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (2) int 6 0
    seq no type 10 1
      const sh: %s
 string 1 0
      seq no type 10 1
        name s string 0 0
ecom to: 
name .t157 int 0 0
generate desc for Sys->fprint
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (2) int 6 0
ecom to: 
name .t158 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b160 big 0 0
    const (64) int 6 0
ecom: 
name .t158 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b159 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t158 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t158 ref Sys->FD 0 0
ecom: 
const sh: %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b159 big 0 0
    const (72) int 6 0
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b159 big 0 0
    const (80) int 6 0
fn: diagnostic
64: argument ctxt ref Context ref 1
72: argument s string ref 1
80: local .t157 int ref 1
88: local .b159 big ref 1
96: local .b160 big ref 1
104: local .t158 ref Localenv ref 1
generate desc for diagnostic
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
descmap .t157 type int offset 80 (d->offset=80 start=0) returns -1
descmap .b159 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b160 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t158 type ref Localenv offset 104 (d->offset=104 start=0) returns 104
fncom: new 5 4b9480
ecom: 
call no type 10 1
  name initialise fn() 11 1
generate desc for big
ecom: 
used int 10 1
  call int 10 1
    -> fn(): int 12 1
      name env Env 1 0
      name clone nothing 11 1
ecom: 
call int 10 1
  -> fn(): int 12 1
    name env Env 1 0
    name clone nothing 11 1
ecom to: 
name .t162 int 0 0
generate desc for big
ecom: 
= ref Context 10 3
  name ctxt ref Context 0 0
  ref ref Context 10 3
    tuple Context 10 3
      seq no type 10 3
        ref ref Environment 10 2
          tuple Environment 10 2
            seq no type 10 2
              ref ref Builtins 10 1
                tuple Builtins 10 1
                  seq no type 10 1
                    name nil polymorphic type 1 0
                    seq no type 10 1
                      const (0) int 6 0
              seq no type 10 2
                ref ref Builtins 10 1
                  tuple Builtins 10 1
                    seq no type 10 1
                      name nil polymorphic type 1 0
                      seq no type 10 1
                        const (0) int 6 0
                seq no type 10 2
                  name nil polymorphic type 1 0
                  seq no type 10 2
                    call ref Localenv 10 2
                      name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
                      seq no type 10 1
                        name nil ref Localenv 1 0
        seq no type 10 2
          call ref Sys->FD 10 1
            name waitfd fn(): ref Sys->FD 11 1
          seq no type 10 1
            name drawcontext ref Draw->Context 0 0
            seq no type 10 1
              :: list of int 10 1
                const (0) int 6 0
                :: list of int 10 1
                  const (1) int 6 0
                  :: list of int 10 1
                    const (2) int 6 0
                    name nil polymorphic type 1 0
ecom: 
ref ref Context 10 3
  tuple Context 10 3
    seq no type 10 3
      ref ref Environment 10 2
        tuple Environment 10 2
          seq no type 10 2
            ref ref Builtins 10 1
              tuple Builtins 10 1
                seq no type 10 1
                  name nil polymorphic type 1 0
                  seq no type 10 1
                    const (0) int 6 0
            seq no type 10 2
              ref ref Builtins 10 1
                tuple Builtins 10 1
                  seq no type 10 1
                    name nil polymorphic type 1 0
                    seq no type 10 1
                      const (0) int 6 0
              seq no type 10 2
                name nil polymorphic type 1 0
                seq no type 10 2
                  call ref Localenv 10 2
                    name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
                    seq no type 10 1
                      name nil ref Localenv 1 0
      seq no type 10 2
        call ref Sys->FD 10 1
          name waitfd fn(): ref Sys->FD 11 1
        seq no type 10 1
          name drawcontext ref Draw->Context 0 0
          seq no type 10 1
            :: list of int 10 1
              const (0) int 6 0
              :: list of int 10 1
                const (1) int 6 0
                :: list of int 10 1
                  const (2) int 6 0
                  name nil polymorphic type 1 0
ecom to: 
name ctxt ref Context 0 0
generate desc for Context
descmap adt offset 0
descmap offset 0
descmap env type ref Environment offset 0 (d->offset=0 start=0) returns 0
descmap waitfd type ref Sys->FD offset 8 (d->offset=8 start=0) returns 8
descmap drawcontext type ref Draw->Context offset 16 (d->offset=16 start=0) returns 16
descmap keepfds type list of int offset 24 (d->offset=24 start=0) returns 24
generate desc for Context
	desc	$-1,32,"f0"
ecom: 
tuple Context 10 3
  seq no type 10 3
    ref ref Environment 10 2
      tuple Environment 10 2
        seq no type 10 2
          ref ref Builtins 10 1
            tuple Builtins 10 1
              seq no type 10 1
                name nil polymorphic type 1 0
                seq no type 10 1
                  const (0) int 6 0
          seq no type 10 2
            ref ref Builtins 10 1
              tuple Builtins 10 1
                seq no type 10 1
                  name nil polymorphic type 1 0
                  seq no type 10 1
                    const (0) int 6 0
            seq no type 10 2
              name nil polymorphic type 1 0
              seq no type 10 2
                call ref Localenv 10 2
                  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
                  seq no type 10 1
                    name nil ref Localenv 1 0
    seq no type 10 2
      call ref Sys->FD 10 1
        name waitfd fn(): ref Sys->FD 11 1
      seq no type 10 1
        name drawcontext ref Draw->Context 0 0
        seq no type 10 1
          :: list of int 10 1
            const (0) int 6 0
            :: list of int 10 1
              const (1) int 6 0
              :: list of int 10 1
                const (2) int 6 0
                name nil polymorphic type 1 0
ecom to: 
* Context 8 0
  name .t163 ref Context 0 0
ecom: 
ref ref Environment 10 2
  tuple Environment 10 2
    seq no type 10 2
      ref ref Builtins 10 1
        tuple Builtins 10 1
          seq no type 10 1
            name nil polymorphic type 1 0
            seq no type 10 1
              const (0) int 6 0
      seq no type 10 2
        ref ref Builtins 10 1
          tuple Builtins 10 1
            seq no type 10 1
              name nil polymorphic type 1 0
              seq no type 10 1
                const (0) int 6 0
        seq no type 10 2
          name nil polymorphic type 1 0
          seq no type 10 2
            call ref Localenv 10 2
              name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
              seq no type 10 1
                name nil ref Localenv 1 0
ecom to: 
* ref Environment 8 0
  + int 15 1
    adr int 15 1
      * Context 8 0
        name .t163 ref Context 0 0
    const (0) int 6 0
generate desc for Environment
descmap adt offset 0
descmap offset 0
descmap sbuiltins type ref Builtins offset 0 (d->offset=0 start=0) returns 0
descmap builtins type ref Builtins offset 8 (d->offset=8 start=0) returns 8
descmap bmods type list of (string, Shellbuiltin) offset 16 (d->offset=16 start=0) returns 16
descmap localenv type ref Localenv offset 24 (d->offset=24 start=0) returns 24
generate desc for Environment
	desc	$-1,32,"f0"
ecom: 
tuple Environment 10 2
  seq no type 10 2
    ref ref Builtins 10 1
      tuple Builtins 10 1
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            const (0) int 6 0
    seq no type 10 2
      ref ref Builtins 10 1
        tuple Builtins 10 1
          seq no type 10 1
            name nil polymorphic type 1 0
            seq no type 10 1
              const (0) int 6 0
      seq no type 10 2
        name nil polymorphic type 1 0
        seq no type 10 2
          call ref Localenv 10 2
            name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
            seq no type 10 1
              name nil ref Localenv 1 0
ecom to: 
* Environment 8 0
  name .t164 ref Environment 0 0
ecom: 
ref ref Builtins 10 1
  tuple Builtins 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
* ref Builtins 8 0
  + int 15 1
    adr int 15 1
      * Environment 8 0
        name .t164 ref Environment 0 0
    const (0) int 6 0
generate desc for Builtins
descmap adt offset 0
descmap offset 0
descmap ba type array of (string, list of Shellbuiltin) offset 0 (d->offset=0 start=0) returns 0
descmap n type int offset 8 (d->offset=8 start=0) returns -1
generate desc for Builtins
	desc	$-1,16,"80"
ecom: 
tuple Builtins 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      const (0) int 6 0
ecom to: 
* Builtins 8 0
  name .t165 ref Builtins 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* array of (string, list of Shellbuiltin) 8 0
  + int 15 1
    adr int 15 1
      * Builtins 8 0
        name .t165 ref Builtins 0 0
    const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Builtins 8 0
        name .t165 ref Builtins 0 0
    const (8) int 6 0
ecom: 
= ref Builtins 10 1
  name .t165 ref Builtins 0 0
  name nil ref Builtins 1 0
ecom: 
name nil ref Builtins 1 0
ecom to: 
name .t165 ref Builtins 0 0
ecom: 
ref ref Builtins 10 1
  tuple Builtins 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
* ref Builtins 8 0
  + int 15 1
    adr int 15 1
      * Environment 8 0
        name .t164 ref Environment 0 0
    const (8) int 6 0
generate desc for Builtins
ecom: 
tuple Builtins 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      const (0) int 6 0
ecom to: 
* Builtins 8 0
  name .t165 ref Builtins 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* array of (string, list of Shellbuiltin) 8 0
  + int 15 1
    adr int 15 1
      * Builtins 8 0
        name .t165 ref Builtins 0 0
    const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Builtins 8 0
        name .t165 ref Builtins 0 0
    const (8) int 6 0
ecom: 
= ref Builtins 10 1
  name .t165 ref Builtins 0 0
  name nil ref Builtins 1 0
ecom: 
name nil ref Builtins 1 0
ecom to: 
name .t165 ref Builtins 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* list of (string, Shellbuiltin) 8 0
  + int 15 1
    adr int 15 1
      * Environment 8 0
        name .t164 ref Environment 0 0
    const (16) int 6 0
ecom: 
call ref Localenv 10 2
  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
  seq no type 10 1
    name nil ref Localenv 1 0
ecom to: 
* ref Localenv 8 0
  + int 15 1
    adr int 15 1
      * Environment 8 0
        name .t164 ref Environment 0 0
    const (24) int 6 0
generate desc for big
ecom: 
name nil ref Localenv 1 0
ecom to: 
* ref Localenv 8 0
  + int 15 0
    name .b161 big 0 0
    const (64) int 6 0
ecom: 
= ref Environment 10 1
  name .t164 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t164 ref Environment 0 0
ecom: 
call ref Sys->FD 10 1
  name waitfd fn(): ref Sys->FD 11 1
ecom to: 
* ref Sys->FD 8 0
  + int 15 1
    adr int 15 1
      * Context 8 0
        name .t163 ref Context 0 0
    const (8) int 6 0
generate desc for big
ecom: 
name drawcontext ref Draw->Context 0 0
ecom to: 
* ref Draw->Context 8 0
  + int 15 1
    adr int 15 1
      * Context 8 0
        name .t163 ref Context 0 0
    const (16) int 6 0
ecom: 
:: list of int 10 1
  const (0) int 6 0
  :: list of int 10 1
    const (1) int 6 0
    :: list of int 10 1
      const (2) int 6 0
      name nil polymorphic type 1 0
ecom to: 
* list of int 8 0
  + int 15 1
    adr int 15 1
      * Context 8 0
        name .t163 ref Context 0 0
    const (24) int 6 0
ecom: 
:: list of int 10 1
  const (1) int 6 0
  :: list of int 10 1
    const (2) int 6 0
    name nil polymorphic type 1 0
ecom to: 
name .t165 list of int 0 0
ecom: 
:: list of int 10 1
  const (2) int 6 0
  name nil polymorphic type 1 0
ecom to: 
name .t165 list of int 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t165 list of int 0 0
ecom: 
= list of int 10 1
  name .t165 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t165 list of int 0 0
ecom: 
= ref Context 10 1
  name .t163 ref Context 0 0
  name nil ref Context 1 0
ecom: 
name nil ref Context 1 0
ecom to: 
name .t163 ref Context 0 0
ecom: 
used string 10 2
  call string 10 2
    -> fn(c: ref Context, sh: Sh): string 12 1
      name myselfbuiltin Shellbuiltin 1 0
      name initbuiltin nothing 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name myself Sh 1 0
ecom: 
call string 10 2
  -> fn(c: ref Context, sh: Sh): string 12 1
    name myselfbuiltin Shellbuiltin 1 0
    name initbuiltin nothing 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name myself Sh 1 0
ecom to: 
name .t165 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b161 big 0 0
    const (64) int 6 0
ecom: 
name myself Sh 1 0
ecom to: 
* Sh 8 0
  + int 15 0
    name .b161 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t165 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t165 string 0 0
ecom: 
= int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const VERBOSE (2) int 6 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t165 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t165 ref Environment 0 0
ecom: 
const VERBOSE (2) int 6 0
ecom to: 
* int 8 1
  + int 15 1
    name .t165 ref Localenv 0 0
    const flags (16) int 6 0
ecom: 
= ref Localenv 10 1
  name .t165 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t165 ref Localenv 0 0
ecom: 
= list of ref Listnode 10 2
  name vl list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
    seq nothing 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        const autoload string 1 0
ecom: 
call list of ref Listnode 10 2
  name get fn(ctxt: self ref Context, name: string): list of ref Listnode 11 1
  seq nothing 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      const autoload string 1 0
ecom to: 
name vl list of ref Listnode 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b161 big 0 0
    const (64) int 6 0
ecom: 
const autoload string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b161 big 0 0
    const (72) int 6 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name vl list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name vl list of ref Listnode 0 0
ecom to: 
name .t165 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t165 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t165 ref Listnode 0 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name vl list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name vl list of ref Listnode 0 0
ecom to: 
name .t165 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t165 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t165 ref Listnode 0 0
ecom: 
used string 10 2
  call string 10 2
    name loadmodule fn(ctxt: ref Context, name: string): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        * string 10 1
          + int 10 1
            hd ref Listnode 10 1
              name vl list of ref Listnode 0 0
            const word (8) int 6 0
ecom: 
call string 10 2
  name loadmodule fn(ctxt: ref Context, name: string): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      * string 10 1
        + int 10 1
          hd ref Listnode 10 1
            name vl list of ref Listnode 0 0
          const word (8) int 6 0
ecom to: 
name .t165 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b161 big 0 0
    const (64) int 6 0
ecom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name vl list of ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b161 big 0 0
    const (72) int 6 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name vl list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name vl list of ref Listnode 0 0
ecom to: 
name .t164 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t164 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t164 ref Listnode 0 0
ecom: 
= string 10 1
  name .t165 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t165 string 0 0
ecom: 
= list of ref Listnode 10 1
  name vl list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name vl list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name vl list of ref Listnode 0 0
ecom to: 
name vl list of ref Listnode 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  name .ret int 0 0
fn: new
64: argument drawcontext ref Draw->Context ref 1
72: local .t162 int ref 1
80: local .b161 big ref 7
88: local ctxt ref Context ref 7
96: local vl list of ref Listnode ref 7
104: local .t163 ref Context ref 1
112: local .t164 ref Environment ref 1
120: local .t165 ref Builtins ref 1
generate desc for Context.new
descmap offset 0
descmap drawcontext type ref Draw->Context offset 64 (d->offset=64 start=0) returns 64
descmap .t162 type int offset 72 (d->offset=72 start=0) returns -1
descmap .b161 type big offset 80 (d->offset=80 start=0) returns -1
descmap ctxt type ref Context offset 88 (d->offset=88 start=0) returns 88
descmap vl type list of ref Listnode offset 96 (d->offset=96 start=0) returns 96
descmap .t163 type ref Context offset 104 (d->offset=104 start=0) returns 104
descmap .t164 type ref Environment offset 112 (d->offset=112 start=0) returns 112
descmap .t165 type ref Builtins offset 120 (d->offset=120 start=0) returns 120
fncom: copy 3 4bc9d0
ecom: 
= ref Context 10 2
  name nctxt ref Context 0 0
  ref ref Context 10 2
    tuple Context 10 2
      seq no type 10 2
        * ref Environment 8 0
          name ctxt ref Context 0 0
        seq no type 10 2
          call ref Sys->FD 10 1
            name waitfd fn(): ref Sys->FD 11 1
          seq no type 10 1
            * ref Draw->Context 8 0
              + int 15 1
                name ctxt ref Context 0 0
                const drawcontext (16) int 6 0
            seq no type 10 1
              * list of int 8 0
                + int 15 1
                  name ctxt ref Context 0 0
                  const keepfds (24) int 6 0
ecom: 
ref ref Context 10 2
  tuple Context 10 2
    seq no type 10 2
      * ref Environment 8 0
        name ctxt ref Context 0 0
      seq no type 10 2
        call ref Sys->FD 10 1
          name waitfd fn(): ref Sys->FD 11 1
        seq no type 10 1
          * ref Draw->Context 8 0
            + int 15 1
              name ctxt ref Context 0 0
              const drawcontext (16) int 6 0
          seq no type 10 1
            * list of int 8 0
              + int 15 1
                name ctxt ref Context 0 0
                const keepfds (24) int 6 0
ecom to: 
name nctxt ref Context 0 0
generate desc for Context
ecom: 
tuple Context 10 2
  seq no type 10 2
    * ref Environment 8 0
      name ctxt ref Context 0 0
    seq no type 10 2
      call ref Sys->FD 10 1
        name waitfd fn(): ref Sys->FD 11 1
      seq no type 10 1
        * ref Draw->Context 8 0
          + int 15 1
            name ctxt ref Context 0 0
            const drawcontext (16) int 6 0
        seq no type 10 1
          * list of int 8 0
            + int 15 1
              name ctxt ref Context 0 0
              const keepfds (24) int 6 0
ecom to: 
* Context 8 0
  name .t166 ref Context 0 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
* ref Environment 8 0
  + int 15 1
    adr int 15 1
      * Context 8 0
        name .t166 ref Context 0 0
    const (0) int 6 0
ecom: 
call ref Sys->FD 10 1
  name waitfd fn(): ref Sys->FD 11 1
ecom to: 
* ref Sys->FD 8 0
  + int 15 1
    adr int 15 1
      * Context 8 0
        name .t166 ref Context 0 0
    const (8) int 6 0
generate desc for big
ecom: 
* ref Draw->Context 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const drawcontext (16) int 6 0
ecom to: 
* ref Draw->Context 8 0
  + int 15 1
    adr int 15 1
      * Context 8 0
        name .t166 ref Context 0 0
    const (16) int 6 0
ecom: 
* list of int 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const keepfds (24) int 6 0
ecom to: 
* list of int 8 0
  + int 15 1
    adr int 15 1
      * Context 8 0
        name .t166 ref Context 0 0
    const (24) int 6 0
ecom: 
= ref Context 10 1
  name .t166 ref Context 0 0
  name nil ref Context 1 0
ecom: 
name nil ref Context 1 0
ecom to: 
name .t166 ref Context 0 0
ecom: 
used int 10 1
  call int 10 1
    -> fn(): int 12 1
      name env Env 1 0
      name clone nothing 11 1
ecom: 
call int 10 1
  -> fn(): int 12 1
    name env Env 1 0
    name clone nothing 11 1
ecom to: 
name .t168 int 0 0
generate desc for big
ecom: 
= ref Environment 10 3
  * ref Environment 8 0
    name nctxt ref Context 0 0
  ref ref Environment 10 3
    tuple Environment 10 3
      seq no type 10 3
        call ref Builtins 10 2
          name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
          seq no type 10 1
            * ref Builtins 10 1
              * ref Environment 8 0
                name ctxt ref Context 0 0
        seq no type 10 3
          call ref Builtins 10 2
            name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
            seq no type 10 1
              * ref Builtins 10 1
                + int 10 1
                  * ref Environment 8 0
                    name ctxt ref Context 0 0
                  const builtins (8) int 6 0
          seq no type 10 2
            * list of (string, Shellbuiltin) 10 1
              + int 10 1
                * ref Environment 8 0
                  name ctxt ref Context 0 0
                const bmods (16) int 6 0
            seq no type 10 2
              call ref Localenv 10 2
                name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
                seq no type 10 1
                  * ref Localenv 10 1
                    + int 10 1
                      * ref Environment 8 0
                        name ctxt ref Context 0 0
                      const localenv (24) int 6 0
ecom: 
ref ref Environment 10 3
  tuple Environment 10 3
    seq no type 10 3
      call ref Builtins 10 2
        name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
        seq no type 10 1
          * ref Builtins 10 1
            * ref Environment 8 0
              name ctxt ref Context 0 0
      seq no type 10 3
        call ref Builtins 10 2
          name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
          seq no type 10 1
            * ref Builtins 10 1
              + int 10 1
                * ref Environment 8 0
                  name ctxt ref Context 0 0
                const builtins (8) int 6 0
        seq no type 10 2
          * list of (string, Shellbuiltin) 10 1
            + int 10 1
              * ref Environment 8 0
                name ctxt ref Context 0 0
              const bmods (16) int 6 0
          seq no type 10 2
            call ref Localenv 10 2
              name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
              seq no type 10 1
                * ref Localenv 10 1
                  + int 10 1
                    * ref Environment 8 0
                      name ctxt ref Context 0 0
                    const localenv (24) int 6 0
ecom to: 
* ref Environment 8 0
  name nctxt ref Context 0 0
generate desc for Environment
ecom: 
tuple Environment 10 3
  seq no type 10 3
    call ref Builtins 10 2
      name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
      seq no type 10 1
        * ref Builtins 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
    seq no type 10 3
      call ref Builtins 10 2
        name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
        seq no type 10 1
          * ref Builtins 10 1
            + int 10 1
              * ref Environment 8 0
                name ctxt ref Context 0 0
              const builtins (8) int 6 0
      seq no type 10 2
        * list of (string, Shellbuiltin) 10 1
          + int 10 1
            * ref Environment 8 0
              name ctxt ref Context 0 0
            const bmods (16) int 6 0
        seq no type 10 2
          call ref Localenv 10 2
            name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
            seq no type 10 1
              * ref Localenv 10 1
                + int 10 1
                  * ref Environment 8 0
                    name ctxt ref Context 0 0
                  const localenv (24) int 6 0
ecom to: 
* Environment 8 0
  name .t166 ref Environment 0 0
ecom: 
call ref Builtins 10 2
  name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
  seq no type 10 1
    * ref Builtins 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
ecom to: 
* ref Builtins 8 0
  + int 15 1
    adr int 15 1
      * Environment 8 0
        name .t166 ref Environment 0 0
    const (0) int 6 0
generate desc for big
ecom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name ctxt ref Context 0 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b167 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name ctxt ref Context 0 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t169 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t169 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t169 ref Environment 0 0
ecom: 
call ref Builtins 10 2
  name copybuiltins fn(b: ref Builtins): ref Builtins 11 1
  seq no type 10 1
    * ref Builtins 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const builtins (8) int 6 0
ecom to: 
* ref Builtins 8 0
  + int 15 1
    adr int 15 1
      * Environment 8 0
        name .t166 ref Environment 0 0
    const (8) int 6 0
generate desc for big
ecom: 
* ref Builtins 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const builtins (8) int 6 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b167 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const builtins (8) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t169 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t169 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t169 ref Environment 0 0
ecom: 
* list of (string, Shellbuiltin) 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const bmods (16) int 6 0
ecom to: 
* list of (string, Shellbuiltin) 8 0
  + int 15 1
    adr int 15 1
      * Environment 8 0
        name .t166 ref Environment 0 0
    const (16) int 6 0
eacom: 
* list of (string, Shellbuiltin) 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const bmods (16) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t169 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t169 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t169 ref Environment 0 0
ecom: 
call ref Localenv 10 2
  name copylocalenv fn(e: ref Localenv): ref Localenv 11 1
  seq no type 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
ecom to: 
* ref Localenv 8 0
  + int 15 1
    adr int 15 1
      * Environment 8 0
        name .t166 ref Environment 0 0
    const (24) int 6 0
generate desc for big
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
* ref Localenv 8 0
  + int 15 0
    name .b167 big 0 0
    const (64) int 6 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t169 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t169 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t169 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t166 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t166 ref Environment 0 0
ecom: 
name nctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  name .ret int 0 0
fn: copy
64: argument ctxt ref Context ref 7
72: argument copyenv int ref 1
76: local .t168 int ref 1
80: local .b167 big ref 5
88: local nctxt ref Context ref 3
96: local .t166 ref Context ref 1
104: local .t169 ref Environment ref 1
generate desc for Context.copy
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap copyenv type int offset 72 (d->offset=72 start=0) returns -1
descmap .t168 type int offset 76 (d->offset=76 start=0) returns -1
descmap .b167 type big offset 80 (d->offset=80 start=0) returns -1
descmap nctxt type ref Context offset 88 (d->offset=88 start=0) returns 88
descmap .t166 type ref Context offset 96 (d->offset=96 start=0) returns 96
descmap .t169 type ref Environment offset 104 (d->offset=104 start=0) returns 104
fncom: set 5 4ba4c0
ecom: 
= ref Localenv 10 1
  name e ref Localenv 0 0
  * ref Localenv 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const localenv (24) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name e ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t170 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t170 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t170 ref Environment 0 0
ecom: 
= int 10 2
  name idx int 0 0
  call int 10 2
    name hashfn fn(s: string, n: int): int 11 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        len int 10 1
          * array of list of ref Var 8 0
            name e ref Localenv 0 0
ecom: 
call int 10 2
  name hashfn fn(s: string, n: int): int 11 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      len int 10 1
        * array of list of ref Var 8 0
          name e ref Localenv 0 0
ecom to: 
name idx int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b171 big 0 0
    const (64) int 6 0
ecom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b171 big 0 0
    const (72) int 6 0
ecom: 
= ref Var 10 2
  name v ref Var 0 0
  call ref Var 10 2
    name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
    seq no type 10 1
      * array of list of ref Var 8 0
        name e ref Localenv 0 0
      seq no type 10 1
        name idx int 0 0
        seq no type 10 1
          name name string 0 0
ecom: 
call ref Var 10 2
  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
  seq no type 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        name name string 0 0
ecom to: 
name v ref Var 0 0
generate desc for big
ecom: 
* array of list of ref Var 8 0
  name e ref Localenv 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b171 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b171 big 0 0
    const (72) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b171 big 0 0
    const (80) int 6 0
ecom: 
= int 10 1
  name flags int 0 0
  const CHANGED (1) int 6 0
ecom: 
const CHANGED (1) int 6 0
ecom to: 
name flags int 0 0
eacom: 
call int 10 2
  name noexport fn(name: string): int 11 1
  seq no type 10 1
    name name string 0 0
ecom: 
call int 10 2
  name noexport fn(name: string): int 11 1
  seq no type 10 1
    name name string 0 0
ecom to: 
name .t172 int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b171 big 0 0
    const (64) int 6 0
ecom: 
|= int 10 1
  name flags int 0 0
  const NOEXPORT (2) int 6 0
ecom: 
call no type 10 2
  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
  seq no type 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        ref ref Var 10 1
          tuple Var 10 1
            seq no type 10 1
              name name string 0 0
              seq no type 10 1
                name val list of ref Listnode 0 0
                seq no type 10 1
                  name flags int 0 0
generate desc for big
ecom: 
* array of list of ref Var 8 0
  name e ref Localenv 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b171 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b171 big 0 0
    const (72) int 6 0
ecom: 
ref ref Var 10 1
  tuple Var 10 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        name val list of ref Listnode 0 0
        seq no type 10 1
          name flags int 0 0
ecom to: 
* ref Var 8 0
  + int 15 0
    name .b171 big 0 0
    const (80) int 6 0
generate desc for Var
descmap adt offset 0
descmap offset 0
descmap name type string offset 0 (d->offset=0 start=0) returns 0
descmap val type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
descmap flags type int offset 16 (d->offset=16 start=0) returns -1
generate desc for Var
	desc	$-1,24,"c0"
ecom: 
tuple Var 10 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      name val list of ref Listnode 0 0
      seq no type 10 1
        name flags int 0 0
ecom to: 
* Var 8 0
  name .t170 ref Var 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t170 ref Var 0 0
    const (0) int 6 0
ecom: 
name val list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t170 ref Var 0 0
    const (8) int 6 0
ecom: 
name flags int 0 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t170 ref Var 0 0
    const (16) int 6 0
ecom: 
= ref Var 10 1
  name .t170 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t170 ref Var 0 0
ecom: 
= list of ref Listnode 10 1
  * list of ref Listnode 8 0
    + int 15 1
      name v ref Var 0 0
      const val (8) int 6 0
  name val list of ref Listnode 0 0
ecom: 
name val list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 1
    name v ref Var 0 0
    const val (8) int 6 0
ecom: 
|= int 10 1
  * int 8 0
    + int 15 1
      name v ref Var 0 0
      const flags (16) int 6 0
  const CHANGED (1) int 6 0
ecom: 
= ref Localenv 10 1
  name e ref Localenv 0 0
  * ref Localenv 8 0
    + int 15 1
      name e ref Localenv 0 0
      const pushed (8) int 6 0
ecom: 
* ref Localenv 8 0
  + int 15 1
    name e ref Localenv 0 0
    const pushed (8) int 6 0
ecom to: 
name e ref Localenv 0 0
ecom: 
= ref Var 10 1
  name v ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name v ref Var 0 0
fn: set
64: argument ctxt ref Context ref 1
72: argument name string ref 4
80: argument val list of ref Listnode ref 2
88: local flags int ref 3
92: local idx int ref 3
96: local .t172 int ref 1
104: local e ref Localenv ref 7
112: local .b171 big ref 4
120: local v ref Var ref 4
128: local .t170 ref Environment ref 1
generate desc for Context.set
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap val type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap flags type int offset 88 (d->offset=88 start=0) returns -1
descmap idx type int offset 92 (d->offset=92 start=0) returns -1
descmap .t172 type int offset 96 (d->offset=96 start=0) returns -1
descmap e type ref Localenv offset 104 (d->offset=104 start=0) returns 104
descmap .b171 type big offset 112 (d->offset=112 start=0) returns -1
descmap v type ref Var offset 120 (d->offset=120 start=0) returns 120
descmap .t170 type ref Environment offset 128 (d->offset=128 start=0) returns 128
fncom: get 9 4b9b60
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= int 10 1
  name idx int 0 0
  const (-1) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
name idx int 0 0
eacom: 
inds int 10 1
  name name string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  name name string 0 0
  const (0) int 6 0
ecom to: 
name .t173 int 0 0
eacom: 
inds int 10 1
  name name string 0 0
  const (0) int 6 0
ecom: 
inds int 10 1
  name name string 0 0
  const (0) int 6 0
ecom to: 
name .t173 int 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  name name string 0 0
ecom: 
len int 10 1
  name name string 0 0
ecom to: 
name .t173 int 0 0
eacom: 
inds int 10 1
  name name string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name name string 0 0
  name i int 0 0
ecom to: 
name .t173 int 0 0
eacom: 
inds int 10 1
  name name string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name name string 0 0
  name i int 0 0
ecom to: 
name .t173 int 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
eacom: 
len int 10 1
  name name string 0 0
ecom: 
len int 10 1
  name name string 0 0
ecom to: 
name .t173 int 0 0
ecom: 
= int 10 1
  name idx int 0 0
  - int 10 1
    cast int 10 1
      name name string 0 0
    const (1) int 6 0
ecom: 
- int 10 1
  cast int 10 1
    name name string 0 0
  const (1) int 6 0
ecom to: 
name idx int 0 0
ecom: 
cast int 10 1
  name name string 0 0
ecom to: 
name .t173 int 0 0
ecom: 
= string 10 1
  name name string 0 0
  const * string 1 0
ecom: 
const * string 1 0
ecom to: 
name name string 0 0
ecom: 
= ref Var 10 2
  name v ref Var 0 0
  call ref Var 10 2
    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
    seq no type 10 2
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      seq no type 10 1
        name name string 0 0
ecom: 
call ref Var 10 2
  name varfind fn(e: ref Localenv, name: string): ref Var 11 1
  seq no type 10 2
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    seq no type 10 1
      name name string 0 0
ecom to: 
name v ref Var 0 0
generate desc for big
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
* ref Localenv 8 0
  + int 15 0
    name .b174 big 0 0
    const (64) int 6 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t175 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t175 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t175 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b174 big 0 0
    const (72) int 6 0
ecom: 
call list of ref Listnode 10 2
  name index fn(val: list of ref Listnode, k: int): list of ref Listnode 11 1
  seq no type 10 1
    * list of ref Listnode 8 0
      + int 15 1
        name v ref Var 0 0
        const val (8) int 6 0
    seq no type 10 1
      name idx int 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
generate desc for big
ecom: 
* list of ref Listnode 8 0
  + int 15 1
    name v ref Var 0 0
    const val (8) int 6 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b174 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b174 big 0 0
    const (72) int 6 0
ecom: 
* list of ref Listnode 8 0
  + int 15 1
    name v ref Var 0 0
    const val (8) int 6 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
fn: get
64: argument ctxt ref Context ref 1
72: argument name string ref 10
80: local i int ref 6
84: local idx int ref 4
88: local .t173 int ref 1
96: local v ref Var ref 4
104: local .b174 big ref 2
112: local .t175 ref Environment ref 1
generate desc for Context.get
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap i type int offset 80 (d->offset=80 start=0) returns -1
descmap idx type int offset 84 (d->offset=84 start=0) returns -1
descmap .t173 type int offset 88 (d->offset=88 start=0) returns -1
descmap v type ref Var offset 96 (d->offset=96 start=0) returns 96
descmap .b174 type big offset 104 (d->offset=104 start=0) returns -1
descmap .t175 type ref Environment offset 112 (d->offset=112 start=0) returns 112
fncom: envlist 2 4bb650
ecom: 
= array of list of ref Var 10 1
  name t array of list of ref Var 0 0
  array array of list of ref Var 10 1
    const ENVHASHSIZE (7) int 6 0
ecom: 
array array of list of ref Var 10 1
  const ENVHASHSIZE (7) int 6 0
ecom to: 
name t array of list of ref Var 0 0
generate desc for list of ref Var
generate desc for list of ref Var
	desc	$-1,8,"80"
ecom: 
= ref Localenv 10 1
  name e ref Localenv 0 0
  * ref Localenv 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const localenv (24) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name e ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t176 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t176 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t176 ref Environment 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom to: 
name .t177 int 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  * list of ref Var 10 1
    indx big 10 1
      * array of list of ref Var 8 0
        name e ref Localenv 0 0
      name i int 0 0
ecom: 
* list of ref Var 10 1
  indx big 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    name i int 0 0
ecom to: 
name vl list of ref Var 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
  name i int 0 0
ecom to: 
name .b178 big 0 0
ecom: 
= ref Var 10 1
  name v ref Var 0 0
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name v ref Var 0 0
ecom: 
= int 10 2
  name idx int 0 0
  call int 10 2
    name hashfn fn(s: string, n: int): int 11 1
    seq no type 10 1
      * string 8 0
        name v ref Var 0 0
      seq no type 10 1
        len int 10 1
          * array of list of ref Var 8 0
            name e ref Localenv 0 0
ecom: 
call int 10 2
  name hashfn fn(s: string, n: int): int 11 1
  seq no type 10 1
    * string 8 0
      name v ref Var 0 0
    seq no type 10 1
      len int 10 1
        * array of list of ref Var 8 0
          name e ref Localenv 0 0
ecom to: 
name idx int 0 0
generate desc for big
ecom: 
* string 8 0
  name v ref Var 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b178 big 0 0
    const (64) int 6 0
ecom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b178 big 0 0
    const (72) int 6 0
eacom: 
call ref Var 10 2
  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
  seq no type 10 1
    name t array of list of ref Var 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        * string 8 0
          name v ref Var 0 0
ecom: 
call ref Var 10 2
  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
  seq no type 10 1
    name t array of list of ref Var 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        * string 8 0
          name v ref Var 0 0
ecom to: 
name .t176 ref Var 0 0
generate desc for big
ecom: 
name t array of list of ref Var 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b178 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b178 big 0 0
    const (72) int 6 0
ecom: 
* string 8 0
  name v ref Var 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b178 big 0 0
    const (80) int 6 0
ecom: 
= ref Var 10 1
  name .t176 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t176 ref Var 0 0
ecom: 
call no type 10 2
  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
  seq no type 10 1
    name t array of list of ref Var 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        name v ref Var 0 0
generate desc for big
ecom: 
name t array of list of ref Var 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b178 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b178 big 0 0
    const (72) int 6 0
ecom: 
name v ref Var 0 0
ecom to: 
* ref Var 8 0
  + int 15 0
    name .b178 big 0 0
    const (80) int 6 0
ecom: 
= ref Var 10 1
  name v ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name v ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  tl list of ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
tl list of ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  name nil list of ref Var 1 0
ecom: 
name nil list of ref Var 1 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
= ref Localenv 10 1
  name e ref Localenv 0 0
  * ref Localenv 8 0
    + int 15 1
      name e ref Localenv 0 0
      const pushed (8) int 6 0
ecom: 
* ref Localenv 8 0
  + int 15 1
    name e ref Localenv 0 0
    const pushed (8) int 6 0
ecom to: 
name e ref Localenv 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  * list of ref Var 10 1
    indx big 10 1
      name t array of list of ref Var 0 0
      name i int 0 0
ecom: 
* list of ref Var 10 1
  indx big 10 1
    name t array of list of ref Var 0 0
    name i int 0 0
ecom to: 
name vl list of ref Var 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    name t array of list of ref Var 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  name t array of list of ref Var 0 0
  name i int 0 0
ecom to: 
name .b178 big 0 0
ecom: 
= ref Var 10 1
  name v ref Var 0 0
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name v ref Var 0 0
ecom: 
= list of (string, list of ref Listnode) 10 1
  name l list of (string, list of ref Listnode) 0 0
  :: list of (string, list of ref Listnode) 10 1
    tuple (string, list of ref Listnode) 10 1
      seq no type 10 1
        * string 8 0
          name v ref Var 0 0
        seq no type 10 1
          * list of ref Listnode 8 0
            + int 15 1
              name v ref Var 0 0
              const val (8) int 6 0
    name l list of (string, list of ref Listnode) 0 0
ecom: 
:: list of (string, list of ref Listnode) 10 1
  tuple (string, list of ref Listnode) 10 1
    seq no type 10 1
      * string 8 0
        name v ref Var 0 0
      seq no type 10 1
        * list of ref Listnode 8 0
          + int 15 1
            name v ref Var 0 0
            const val (8) int 6 0
  name l list of (string, list of ref Listnode) 0 0
ecom to: 
name l list of (string, list of ref Listnode) 0 0
eacom: 
tuple (string, list of ref Listnode) 10 1
  seq no type 10 1
    * string 8 0
      name v ref Var 0 0
    seq no type 10 1
      * list of ref Listnode 8 0
        + int 15 1
          name v ref Var 0 0
          const val (8) int 6 0
generate desc for (string, list of ref Listnode)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of ref Listnode offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of ref Listnode)
	desc	$-1,16,"c0"
ecom: 
tuple (string, list of ref Listnode) 10 1
  seq no type 10 1
    * string 8 0
      name v ref Var 0 0
    seq no type 10 1
      * list of ref Listnode 8 0
        + int 15 1
          name v ref Var 0 0
          const val (8) int 6 0
ecom to: 
name .b179 (string, list of ref Listnode) 0 0
ecom: 
* string 8 0
  name v ref Var 0 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b179 (string, list of ref Listnode) 0 0
    const (0) int 6 0
ecom: 
* list of ref Listnode 8 0
  + int 15 1
    name v ref Var 0 0
    const val (8) int 6 0
ecom to: 
* list of ref Listnode 0 0
  + int 13 1
    adr int 13 1
      name .b179 (string, list of ref Listnode) 0 0
    const (8) int 6 0
generate desc for (string, list of ref Listnode)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b179 (string, list of ref Listnode) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name .b179 (string, list of ref Listnode) 0 0
ecom: 
= list of ref Listnode 10 1
  * list of ref Listnode 0 0
    + int 13 1
      adr int 13 1
        name .b179 (string, list of ref Listnode) 0 0
      const t1 (8) int 6 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 0 0
  + int 13 1
    adr int 13 1
      name .b179 (string, list of ref Listnode) 0 0
    const t1 (8) int 6 0
ecom: 
= ref Var 10 1
  name v ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name v ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  tl list of ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
tl list of ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  name nil list of ref Var 1 0
ecom: 
name nil list of ref Var 1 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
name l list of (string, list of ref Listnode) 0 0
ecom to: 
* list of (string, list of ref Listnode) 8 0
  name .ret int 0 0
fn: envlist
64: argument ctxt ref Context ref 1
72: local i int ref 4
76: local idx int ref 3
80: local .t177 int ref 1
88: local e ref Localenv ref 7
96: local .b178 big ref 5
104: local vl list of ref Var ref 5
112: local vl list of ref Var ref 5
120: local t array of list of ref Var ref 4
128: local v ref Var ref 4
136: local l list of (string, list of ref Listnode) ref 3
144: local v ref Var ref 3
152: local .t176 ref Environment ref 1
160: local .b179 (string, list of ref Listnode) ref 1
76: local i int ref 4
generate desc for Context.envlist
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap i type int offset 72 (d->offset=72 start=0) returns -1
descmap idx type int offset 76 (d->offset=76 start=0) returns -1
descmap .t177 type int offset 80 (d->offset=80 start=0) returns -1
descmap e type ref Localenv offset 88 (d->offset=88 start=0) returns 88
descmap .b178 type big offset 96 (d->offset=96 start=0) returns -1
descmap vl type list of ref Var offset 104 (d->offset=104 start=0) returns 104
descmap vl type list of ref Var offset 112 (d->offset=112 start=0) returns 112
descmap t type array of list of ref Var offset 120 (d->offset=120 start=0) returns 120
descmap v type ref Var offset 128 (d->offset=128 start=0) returns 128
descmap l type list of (string, list of ref Listnode) offset 136 (d->offset=136 start=0) returns 136
descmap v type ref Var offset 144 (d->offset=144 start=0) returns 144
descmap .t176 type ref Environment offset 152 (d->offset=152 start=0) returns 152
descmap adt offset 160
descmap offset 160
descmap t0 type string offset 160 (d->offset=0 start=160) returns 160
descmap t1 type list of ref Listnode offset 168 (d->offset=8 start=160) returns 168
descmap .b179 type (string, list of ref Listnode) offset 160 (d->offset=160 start=0) returns 168
fncom: setlocal 8 4bad90
ecom: 
= ref Localenv 10 1
  name e ref Localenv 0 0
  * ref Localenv 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const localenv (24) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name e ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t180 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t180 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t180 ref Environment 0 0
ecom: 
= int 10 2
  name idx int 0 0
  call int 10 2
    name hashfn fn(s: string, n: int): int 11 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        len int 10 1
          * array of list of ref Var 8 0
            name e ref Localenv 0 0
ecom: 
call int 10 2
  name hashfn fn(s: string, n: int): int 11 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      len int 10 1
        * array of list of ref Var 8 0
          name e ref Localenv 0 0
ecom to: 
name idx int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b181 big 0 0
    const (64) int 6 0
ecom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b181 big 0 0
    const (72) int 6 0
ecom: 
= ref Var 10 2
  name v ref Var 0 0
  call ref Var 10 2
    name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
    seq no type 10 1
      * array of list of ref Var 8 0
        name e ref Localenv 0 0
      seq no type 10 1
        name idx int 0 0
        seq no type 10 1
          name name string 0 0
ecom: 
call ref Var 10 2
  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
  seq no type 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        name name string 0 0
ecom to: 
name v ref Var 0 0
generate desc for big
ecom: 
* array of list of ref Var 8 0
  name e ref Localenv 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b181 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b181 big 0 0
    const (72) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b181 big 0 0
    const (80) int 6 0
ecom: 
= int 10 1
  name flags int 0 0
  const CHANGED (1) int 6 0
ecom: 
const CHANGED (1) int 6 0
ecom to: 
name flags int 0 0
eacom: 
call int 10 2
  name noexport fn(name: string): int 11 1
  seq no type 10 1
    name name string 0 0
ecom: 
call int 10 2
  name noexport fn(name: string): int 11 1
  seq no type 10 1
    name name string 0 0
ecom to: 
name .t182 int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b181 big 0 0
    const (64) int 6 0
ecom: 
|= int 10 1
  name flags int 0 0
  const NOEXPORT (2) int 6 0
ecom: 
call no type 10 2
  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
  seq no type 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        ref ref Var 10 1
          tuple Var 10 1
            seq no type 10 1
              name name string 0 0
              seq no type 10 1
                name val list of ref Listnode 0 0
                seq no type 10 1
                  name flags int 0 0
generate desc for big
ecom: 
* array of list of ref Var 8 0
  name e ref Localenv 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b181 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b181 big 0 0
    const (72) int 6 0
ecom: 
ref ref Var 10 1
  tuple Var 10 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        name val list of ref Listnode 0 0
        seq no type 10 1
          name flags int 0 0
ecom to: 
* ref Var 8 0
  + int 15 0
    name .b181 big 0 0
    const (80) int 6 0
generate desc for Var
ecom: 
tuple Var 10 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      name val list of ref Listnode 0 0
      seq no type 10 1
        name flags int 0 0
ecom to: 
* Var 8 0
  name .t180 ref Var 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t180 ref Var 0 0
    const (0) int 6 0
ecom: 
name val list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t180 ref Var 0 0
    const (8) int 6 0
ecom: 
name flags int 0 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t180 ref Var 0 0
    const (16) int 6 0
ecom: 
= ref Var 10 1
  name .t180 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t180 ref Var 0 0
ecom: 
= list of ref Listnode 10 1
  * list of ref Listnode 8 0
    + int 15 1
      name v ref Var 0 0
      const val (8) int 6 0
  name val list of ref Listnode 0 0
ecom: 
name val list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 1
    name v ref Var 0 0
    const val (8) int 6 0
ecom: 
|= int 10 1
  * int 8 0
    + int 15 1
      name v ref Var 0 0
      const flags (16) int 6 0
  const CHANGED (1) int 6 0
fn: setlocal
64: argument ctxt ref Context ref 1
72: argument name string ref 4
80: argument val list of ref Listnode ref 2
88: local flags int ref 3
92: local idx int ref 3
96: local .t182 int ref 1
104: local .b181 big ref 4
112: local e ref Localenv ref 4
120: local v ref Var ref 4
128: local .t180 ref Environment ref 1
generate desc for Context.setlocal
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap val type list of ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap flags type int offset 88 (d->offset=88 start=0) returns -1
descmap idx type int offset 92 (d->offset=92 start=0) returns -1
descmap .t182 type int offset 96 (d->offset=96 start=0) returns -1
descmap .b181 type big offset 104 (d->offset=104 start=0) returns -1
descmap e type ref Localenv offset 112 (d->offset=112 start=0) returns 112
descmap v type ref Var offset 120 (d->offset=120 start=0) returns 120
descmap .t180 type ref Environment offset 128 (d->offset=128 start=0) returns 128
fncom: push 5 4bc050
ecom: 
= ref Localenv 10 2
  * ref Localenv 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const localenv (24) int 6 0
  call ref Localenv 10 2
    name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
    seq no type 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t183 ref Environment 0 0
ecom: 
call ref Localenv 10 2
  name newlocalenv fn(pushed: ref Localenv): ref Localenv 11 1
  seq no type 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
ecom to: 
* ref Localenv 8 1
  + int 15 1
    name .t183 ref Environment 0 0
    const localenv (24) int 6 0
generate desc for big
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
* ref Localenv 8 0
  + int 15 0
    name .b184 big 0 0
    const (64) int 6 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t185 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t185 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t185 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t183 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t183 ref Environment 0 0
fn: push
64: argument ctxt ref Context ref 2
72: local .b184 big ref 1
80: local .t183 ref Environment ref 1
88: local .t185 ref Environment ref 1
generate desc for Context.push
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap .b184 type big offset 72 (d->offset=72 start=0) returns -1
descmap .t183 type ref Environment offset 80 (d->offset=80 start=0) returns 80
descmap .t185 type ref Environment offset 88 (d->offset=88 start=0) returns 88
fncom: pop 8 4bc510
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const pushed (8) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t186 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t186 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t186 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t186 ref Localenv 0 0
ecom: 
call no type 10 2
  name panic fn(s: string) 11 1
  seq no type 10 1
    const unbalanced contexts in shell environment string 1 0
generate desc for big
ecom: 
const unbalanced contexts in shell environment string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b187 big 0 0
    const (64) int 6 0
ecom: 
= array of list of ref Var 10 1
  name oldv array of list of ref Var 0 0
  * array of list of ref Var 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
ecom: 
* array of list of ref Var 10 1
  * ref Localenv 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const localenv (24) int 6 0
ecom to: 
name oldv array of list of ref Var 0 0
eacom: 
* array of list of ref Var 10 1
  * ref Localenv 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const localenv (24) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t186 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t186 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t186 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t186 ref Localenv 0 0
ecom: 
= ref Localenv 10 2
  * ref Localenv 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const localenv (24) int 6 0
  * ref Localenv 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const pushed (8) int 6 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t186 ref Environment 0 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const pushed (8) int 6 0
ecom to: 
* ref Localenv 8 1
  + int 15 1
    name .t186 ref Environment 0 0
    const localenv (24) int 6 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const pushed (8) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t188 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t188 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t188 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t188 ref Localenv 0 0
ecom: 
= ref Environment 10 1
  name .t186 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t186 ref Environment 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  name oldv array of list of ref Var 0 0
ecom: 
len int 10 1
  name oldv array of list of ref Var 0 0
ecom to: 
name .t189 int 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  * list of ref Var 10 1
    indx big 10 1
      name oldv array of list of ref Var 0 0
      name i int 0 0
ecom: 
* list of ref Var 10 1
  indx big 10 1
    name oldv array of list of ref Var 0 0
    name i int 0 0
ecom to: 
name vl list of ref Var 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    name oldv array of list of ref Var 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  name oldv array of list of ref Var 0 0
  name i int 0 0
ecom to: 
name .b187 big 0 0
eacom: 
= ref Var 10 2
  name v ref Var 0 0
  call ref Var 10 2
    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
    seq no type 10 2
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      seq no type 10 1
        * string 10 1
          hd ref Var 10 1
            name vl list of ref Var 0 0
ecom: 
= ref Var 10 2
  name v ref Var 0 0
  call ref Var 10 2
    name varfind fn(e: ref Localenv, name: string): ref Var 11 1
    seq no type 10 2
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      seq no type 10 1
        * string 10 1
          hd ref Var 10 1
            name vl list of ref Var 0 0
ecom to: 
name .t188 ref Var 0 0
ecom: 
call ref Var 10 2
  name varfind fn(e: ref Localenv, name: string): ref Var 11 1
  seq no type 10 2
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    seq no type 10 1
      * string 10 1
        hd ref Var 10 1
          name vl list of ref Var 0 0
ecom to: 
name v ref Var 0 0
generate desc for big
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
* ref Localenv 8 0
  + int 15 0
    name .b187 big 0 0
    const (64) int 6 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t186 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t186 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t186 ref Environment 0 0
ecom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b187 big 0 0
    const (72) int 6 0
eacom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .t186 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t186 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t186 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t188 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t188 ref Var 0 0
ecom: 
|= int 10 1
  * int 8 0
    + int 15 1
      name v ref Var 0 0
      const flags (16) int 6 0
  const CHANGED (1) int 6 0
ecom: 
call no type 10 2
  name set fn(ctxt: self ref Context, name: string, val: list of ref Listnode) 11 1
  seq nothing 10 2
    name ctxt ref Context 0 0
    seq no type 10 2
      * string 10 1
        hd ref Var 10 1
          name vl list of ref Var 0 0
      seq no type 10 1
        name nil list of ref Listnode 1 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b187 big 0 0
    const (64) int 6 0
ecom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b187 big 0 0
    const (72) int 6 0
eacom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .t188 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t188 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t188 ref Var 0 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b187 big 0 0
    const (80) int 6 0
ecom: 
= ref Var 10 1
  name v ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name v ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  tl list of ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
tl list of ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  name nil list of ref Var 1 0
ecom: 
name nil list of ref Var 1 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
= array of list of ref Var 10 1
  name oldv array of list of ref Var 0 0
  name nil array of list of ref Var 1 0
ecom: 
name nil array of list of ref Var 1 0
ecom to: 
name oldv array of list of ref Var 0 0
fn: pop
64: argument ctxt ref Context ref 6
72: local i int ref 4
76: local .t189 int ref 1
80: local vl list of ref Var ref 6
88: local .b187 big ref 4
96: local oldv array of list of ref Var ref 3
104: local v ref Var ref 2
112: local .t186 ref Localenv ref 1
120: local .t188 ref Localenv ref 1
generate desc for Context.pop
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap i type int offset 72 (d->offset=72 start=0) returns -1
descmap .t189 type int offset 76 (d->offset=76 start=0) returns -1
descmap vl type list of ref Var offset 80 (d->offset=80 start=0) returns 80
descmap .b187 type big offset 88 (d->offset=88 start=0) returns -1
descmap oldv type array of list of ref Var offset 96 (d->offset=96 start=0) returns 96
descmap v type ref Var offset 104 (d->offset=104 start=0) returns 104
descmap .t186 type ref Localenv offset 112 (d->offset=112 start=0) returns 112
descmap .t188 type ref Localenv offset 120 (d->offset=120 start=0) returns 120
fncom: run 7 4bd140
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name args list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .t190 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t190 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t190 ref Listnode 0 0
eacom: 
* string 10 1
  + int 10 1
    hd ref Listnode 10 1
      name args list of ref Listnode 0 0
    const word (8) int 6 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .t190 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t190 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t190 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
ecom: 
= ref Listnode 10 1
  name cmd ref Listnode 0 0
  hd ref Listnode 10 1
    name args list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name cmd ref Listnode 0 0
eacom: 
inds int 10 1
  * string 8 0
    + int 15 1
      name cmd ref Listnode 0 0
      const word (8) int 6 0
  const (0) int 6 0
ecom: 
inds int 10 1
  * string 8 0
    + int 15 1
      name cmd ref Listnode 0 0
      const word (8) int 6 0
  const (0) int 6 0
ecom to: 
name .t191 int 0 0
ecom: 
call string 10 2
  name runblock fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name args list of ref Listnode 0 0
      seq no type 10 1
        name last int 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b192 big 0 0
    const (64) int 6 0
ecom: 
name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b192 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b192 big 0 0
    const (80) int 6 0
eacom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const EXECPRINT (4) int 6 0
ecom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const EXECPRINT (4) int 6 0
ecom to: 
name .t191 int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t190 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t190 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t190 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t190 ref Localenv 0 0
ecom: 
used int 10 3
  call int 10 3
    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
      name sys Sys 1 0
      name fprint nothing 11 1
    seq no type 10 3
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (2) int 6 0
      seq no type 10 2
        const %s
 string 1 0
        seq no type 10 2
          call string 10 2
            name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
            seq no type 10 1
              name args list of ref Listnode 0 0
              seq no type 10 1
                const (0) int 6 0
ecom: 
call int 10 3
  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
    name sys Sys 1 0
    name fprint nothing 11 1
  seq no type 10 3
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (2) int 6 0
    seq no type 10 2
      const %s
 string 1 0
      seq no type 10 2
        call string 10 2
          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
          seq no type 10 1
            name args list of ref Listnode 0 0
            seq no type 10 1
              const (0) int 6 0
ecom to: 
name .t191 int 0 0
generate desc for Sys->fprint
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (2) int 6 0
ecom to: 
name .t190 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b193 big 0 0
    const (64) int 6 0
ecom: 
call string 10 2
  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
  seq no type 10 1
    name args list of ref Listnode 0 0
    seq no type 10 1
      const (0) int 6 0
ecom to: 
name .t194 string 0 0
generate desc for big
ecom: 
name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b193 big 0 0
    const (64) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b193 big 0 0
    const (72) int 6 0
ecom: 
name .t190 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b192 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t190 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t190 ref Sys->FD 0 0
ecom: 
const %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b192 big 0 0
    const (72) int 6 0
ecom: 
name .t194 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b192 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t194 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t194 string 0 0
ecom: 
= (int, string) 10 2
  tuple (int, string) 10 1
    seq nothing 10 1
      name doneit int 0 0
      seq nothing 10 1
        name status string 0 0
  call (int, string) 10 2
    name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name args list of ref Listnode 0 0
        seq no type 10 1
          name last int 0 0
ecom: 
call (int, string) 10 2
  name trybuiltin fn(ctxt: ref Context, args: list of ref Listnode, lseq: int): (int, string) 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name args list of ref Listnode 0 0
      seq no type 10 1
        name last int 0 0
ecom to: 
name doneit (int, string) 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b193 big 0 0
    const (64) int 6 0
ecom: 
name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b193 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b193 big 0 0
    const (80) int 6 0
ecom: 
= string 10 2
  name status string 0 0
  call string 10 2
    name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name args list of ref Listnode 0 0
        seq no type 10 1
          name last int 0 0
ecom: 
call string 10 2
  name runexternal fn(ctxt: ref Context, args: list of ref Listnode, last: int): string 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name args list of ref Listnode 0 0
      seq no type 10 1
        name last int 0 0
ecom to: 
name status string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b193 big 0 0
    const (64) int 6 0
ecom: 
name args list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b193 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b193 big 0 0
    const (80) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
fn: run
64: argument ctxt ref Context ref 5
72: argument args list of ref Listnode ref 8
80: argument last int ref 3
88: local doneit int ref 2
96: local status string ref 3
104: local .t191 int ref 1
112: local .b193 big ref 4
120: local cmd ref Listnode ref 3
128: local .b192 big ref 2
136: local .t190 ref Listnode ref 1
144: local .t194 string ref 1
generate desc for Context.run
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap args type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap last type int offset 80 (d->offset=80 start=0) returns -1
descmap doneit type int offset 88 (d->offset=88 start=0) returns -1
descmap status type string offset 96 (d->offset=96 start=0) returns 96
descmap .t191 type int offset 104 (d->offset=104 start=0) returns -1
descmap .b193 type big offset 112 (d->offset=112 start=0) returns -1
descmap cmd type ref Listnode offset 120 (d->offset=120 start=0) returns 120
descmap .b192 type big offset 128 (d->offset=128 start=0) returns -1
descmap .t190 type ref Listnode offset 136 (d->offset=136 start=0) returns 136
descmap .t194 type string offset 144 (d->offset=144 start=0) returns 144
fncom: addmodule 2 4bdb40
ecom: 
used string 10 2
  call string 10 2
    -> fn(c: ref Context, sh: Sh): string 12 1
      name mod Shellbuiltin 0 0
      name initbuiltin nothing 11 1
    seq no type 10 1
      name ctxt ref Context 0 0
      seq no type 10 1
        name myself Sh 1 0
ecom: 
call string 10 2
  -> fn(c: ref Context, sh: Sh): string 12 1
    name mod Shellbuiltin 0 0
    name initbuiltin nothing 11 1
  seq no type 10 1
    name ctxt ref Context 0 0
    seq no type 10 1
      name myself Sh 1 0
ecom to: 
name .t195 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b196 big 0 0
    const (64) int 6 0
ecom: 
name myself Sh 1 0
ecom to: 
* Sh 8 0
  + int 15 0
    name .b196 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t195 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t195 string 0 0
ecom: 
= list of (string, Shellbuiltin) 10 2
  * list of (string, Shellbuiltin) 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const bmods (16) int 6 0
  :: list of (string, Shellbuiltin) 10 2
    tuple (string, Shellbuiltin) 10 1
      seq no type 10 1
        name name string 0 0
        seq no type 10 1
          call Shellbuiltin 10 1
            -> fn(): Shellbuiltin 12 1
              name mod Shellbuiltin 0 0
              name getself nothing 11 1
    * list of (string, Shellbuiltin) 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const bmods (16) int 6 0
eacom: 
* list of (string, Shellbuiltin) 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const bmods (16) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t195 ref Environment 0 0
ecom: 
:: list of (string, Shellbuiltin) 10 2
  tuple (string, Shellbuiltin) 10 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        call Shellbuiltin 10 1
          -> fn(): Shellbuiltin 12 1
            name mod Shellbuiltin 0 0
            name getself nothing 11 1
  * list of (string, Shellbuiltin) 10 1
    + int 10 1
      * ref Environment 8 0
        name ctxt ref Context 0 0
      const bmods (16) int 6 0
ecom to: 
* list of (string, Shellbuiltin) 8 1
  + int 15 1
    name .t195 ref Environment 0 0
    const bmods (16) int 6 0
eacom: 
tuple (string, Shellbuiltin) 10 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      call Shellbuiltin 10 1
        -> fn(): Shellbuiltin 12 1
          name mod Shellbuiltin 0 0
          name getself nothing 11 1
generate desc for (string, Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
tuple (string, Shellbuiltin) 10 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      call Shellbuiltin 10 1
        -> fn(): Shellbuiltin 12 1
          name mod Shellbuiltin 0 0
          name getself nothing 11 1
ecom to: 
name .b197 (string, Shellbuiltin) 0 0
ecom: 
name name string 0 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b197 (string, Shellbuiltin) 0 0
    const (0) int 6 0
ecom: 
call Shellbuiltin 10 1
  -> fn(): Shellbuiltin 12 1
    name mod Shellbuiltin 0 0
    name getself nothing 11 1
ecom to: 
* Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b197 (string, Shellbuiltin) 0 0
    const (8) int 6 0
generate desc for big
ecom: 
* list of (string, Shellbuiltin) 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const bmods (16) int 6 0
ecom to: 
name .t198 list of (string, Shellbuiltin) 0 0
eacom: 
* list of (string, Shellbuiltin) 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const bmods (16) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t198 ref Environment 0 0
generate desc for (string, Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b197 (string, Shellbuiltin) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name .b197 (string, Shellbuiltin) 0 0
ecom: 
= Shellbuiltin 10 1
  * Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b197 (string, Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
* Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b197 (string, Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
= list of (string, Shellbuiltin) 10 1
  name .t198 list of (string, Shellbuiltin) 0 0
  name nil list of (string, Shellbuiltin) 1 0
ecom: 
name nil list of (string, Shellbuiltin) 1 0
ecom to: 
name .t198 list of (string, Shellbuiltin) 0 0
ecom: 
= ref Environment 10 1
  name .t195 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t195 ref Environment 0 0
fn: addmodule
64: argument ctxt ref Context ref 3
72: argument name string ref 1
80: argument mod Shellbuiltin ref 2
88: local .b196 big ref 2
96: local .t195 string ref 1
104: local .t198 list of (string, Shellbuiltin) ref 1
112: local .b197 (string, Shellbuiltin) ref 1
generate desc for Context.addmodule
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
descmap .b196 type big offset 88 (d->offset=88 start=0) returns -1
descmap .t195 type string offset 96 (d->offset=96 start=0) returns 96
descmap .t198 type list of (string, Shellbuiltin) offset 104 (d->offset=104 start=0) returns 104
descmap adt offset 112
descmap offset 112
descmap t0 type string offset 112 (d->offset=0 start=112) returns 112
descmap t1 type Shellbuiltin offset 120 (d->offset=8 start=112) returns 120
descmap .b197 type (string, Shellbuiltin) offset 112 (d->offset=112 start=0) returns 120
fncom: addbuiltin 3 4be4c0
ecom: 
call no type 10 2
  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
  seq no type 10 2
    * ref Builtins 10 1
      + int 10 1
        * ref Environment 8 0
          name c ref Context 0 0
        const builtins (8) int 6 0
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        name mod Shellbuiltin 0 0
generate desc for big
ecom: 
* ref Builtins 10 1
  + int 10 1
    * ref Environment 8 0
      name c ref Context 0 0
    const builtins (8) int 6 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b199 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  + int 10 1
    * ref Environment 8 0
      name c ref Context 0 0
    const builtins (8) int 6 0
ecom: 
* ref Environment 8 0
  name c ref Context 0 0
ecom to: 
name .t200 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t200 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t200 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b199 big 0 0
    const (72) int 6 0
ecom: 
name mod Shellbuiltin 0 0
ecom to: 
* Shellbuiltin 8 0
  + int 15 0
    name .b199 big 0 0
    const (80) int 6 0
fn: addbuiltin
64: argument c ref Context ref 1
72: argument name string ref 1
80: argument mod Shellbuiltin ref 1
88: local .b199 big ref 1
96: local .t200 ref Environment ref 1
generate desc for Context.addbuiltin
descmap offset 0
descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
descmap .b199 type big offset 88 (d->offset=88 start=0) returns -1
descmap .t200 type ref Environment offset 96 (d->offset=96 start=0) returns 96
fncom: removebuiltin 2 4bec50
ecom: 
call no type 10 2
  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
  seq no type 10 2
    * ref Builtins 10 1
      + int 10 1
        * ref Environment 8 0
          name c ref Context 0 0
        const builtins (8) int 6 0
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        name mod Shellbuiltin 0 0
generate desc for big
ecom: 
* ref Builtins 10 1
  + int 10 1
    * ref Environment 8 0
      name c ref Context 0 0
    const builtins (8) int 6 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b201 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  + int 10 1
    * ref Environment 8 0
      name c ref Context 0 0
    const builtins (8) int 6 0
ecom: 
* ref Environment 8 0
  name c ref Context 0 0
ecom to: 
name .t202 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t202 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t202 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b201 big 0 0
    const (72) int 6 0
ecom: 
name mod Shellbuiltin 0 0
ecom to: 
* Shellbuiltin 8 0
  + int 15 0
    name .b201 big 0 0
    const (80) int 6 0
fn: removebuiltin
64: argument c ref Context ref 1
72: argument name string ref 1
80: argument mod Shellbuiltin ref 1
88: local .b201 big ref 1
96: local .t202 ref Environment ref 1
generate desc for Context.removebuiltin
descmap offset 0
descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
descmap .b201 type big offset 88 (d->offset=88 start=0) returns -1
descmap .t202 type ref Environment offset 96 (d->offset=96 start=0) returns 96
fncom: addsbuiltin 7 4bf3d0
ecom: 
call no type 10 2
  name addbuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
  seq no type 10 2
    * ref Builtins 10 1
      * ref Environment 8 0
        name c ref Context 0 0
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        name mod Shellbuiltin 0 0
generate desc for big
ecom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name c ref Context 0 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b203 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name c ref Context 0 0
ecom: 
* ref Environment 8 0
  name c ref Context 0 0
ecom to: 
name .t204 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t204 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t204 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b203 big 0 0
    const (72) int 6 0
ecom: 
name mod Shellbuiltin 0 0
ecom to: 
* Shellbuiltin 8 0
  + int 15 0
    name .b203 big 0 0
    const (80) int 6 0
fn: addsbuiltin
64: argument c ref Context ref 1
72: argument name string ref 1
80: argument mod Shellbuiltin ref 1
88: local .b203 big ref 1
96: local .t204 ref Environment ref 1
generate desc for Context.addsbuiltin
descmap offset 0
descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
descmap .b203 type big offset 88 (d->offset=88 start=0) returns -1
descmap .t204 type ref Environment offset 96 (d->offset=96 start=0) returns 96
fncom: removesbuiltin 2 4bfb58
ecom: 
call no type 10 2
  name removebuiltin fn(b: ref Builtins, name: string, mod: Shellbuiltin) 11 1
  seq no type 10 2
    * ref Builtins 10 1
      * ref Environment 8 0
        name c ref Context 0 0
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        name mod Shellbuiltin 0 0
generate desc for big
ecom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name c ref Context 0 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b205 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name c ref Context 0 0
ecom: 
* ref Environment 8 0
  name c ref Context 0 0
ecom to: 
name .t206 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .t206 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .t206 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b205 big 0 0
    const (72) int 6 0
ecom: 
name mod Shellbuiltin 0 0
ecom to: 
* Shellbuiltin 8 0
  + int 15 0
    name .b205 big 0 0
    const (80) int 6 0
fn: removesbuiltin
64: argument c ref Context ref 1
72: argument name string ref 1
80: argument mod Shellbuiltin ref 1
88: local .b205 big ref 1
96: local .t206 ref Environment ref 1
generate desc for Context.removesbuiltin
descmap offset 0
descmap c type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
descmap .b205 type big offset 88 (d->offset=88 start=0) returns -1
descmap .t206 type ref Environment offset 96 (d->offset=96 start=0) returns 96
fncom: varfind 3 419828
ecom: 
= int 10 2
  name idx int 0 0
  call int 10 2
    name hashfn fn(s: string, n: int): int 11 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        len int 10 1
          * array of list of ref Var 8 0
            name e ref Localenv 0 0
ecom: 
call int 10 2
  name hashfn fn(s: string, n: int): int 11 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      len int 10 1
        * array of list of ref Var 8 0
          name e ref Localenv 0 0
ecom to: 
name idx int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b207 big 0 0
    const (64) int 6 0
ecom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b207 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  * list of ref Var 10 1
    indx big 10 1
      * array of list of ref Var 8 0
        name e ref Localenv 0 0
      name idx int 0 0
ecom: 
* list of ref Var 10 1
  indx big 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    name idx int 0 0
ecom to: 
name vl list of ref Var 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    name idx int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
  name idx int 0 0
ecom to: 
name .b207 big 0 0
eacom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .t208 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t208 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t208 ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
* ref Var 8 0
  name .ret int 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  tl list of ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
tl list of ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
= ref Localenv 10 1
  name e ref Localenv 0 0
  * ref Localenv 8 0
    + int 15 1
      name e ref Localenv 0 0
      const pushed (8) int 6 0
ecom: 
* ref Localenv 8 0
  + int 15 1
    name e ref Localenv 0 0
    const pushed (8) int 6 0
ecom to: 
name e ref Localenv 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
fn: varfind
64: argument e ref Localenv ref 5
72: argument name string ref 2
80: local idx int ref 2
88: local vl list of ref Var ref 6
96: local .b207 big ref 2
104: local .t208 ref Var ref 1
generate desc for varfind
descmap offset 0
descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap idx type int offset 80 (d->offset=80 start=0) returns -1
descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
descmap .b207 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t208 type ref Var offset 104 (d->offset=104 start=0) returns 104
fncom: fail 27 4c02d8
eacom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const VERBOSE (2) int 6 0
ecom: 
& int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  const VERBOSE (2) int 6 0
ecom to: 
name .t209 int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t210 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t210 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t210 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t210 ref Localenv 0 0
ecom: 
used int 10 2
  call int 10 2
    -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
      name sys Sys 1 0
      name fprint nothing 11 1
    seq no type 10 2
      call ref Sys->FD 10 2
        -> fn(fd: int): ref Sys->FD 12 1
          name sys Sys 1 0
          name fildes nothing 11 1
        seq no type 10 1
          const (2) int 6 0
      seq no type 10 1
        const %s
 string 1 0
        seq no type 10 1
          name err string 0 0
ecom: 
call int 10 2
  -> fn(fd: ref Sys->FD, s: string, nil: string, *): int 12 1
    name sys Sys 1 0
    name fprint nothing 11 1
  seq no type 10 2
    call ref Sys->FD 10 2
      -> fn(fd: int): ref Sys->FD 12 1
        name sys Sys 1 0
        name fildes nothing 11 1
      seq no type 10 1
        const (2) int 6 0
    seq no type 10 1
      const %s
 string 1 0
      seq no type 10 1
        name err string 0 0
ecom to: 
name .t209 int 0 0
generate desc for Sys->fprint
descmap offset 0
descmap fd type ref Sys->FD offset 64 (d->offset=64 start=0) returns 64
descmap s type string offset 72 (d->offset=72 start=0) returns 72
descmap type string offset 80 returns 80
generate desc for big
ecom: 
call ref Sys->FD 10 2
  -> fn(fd: int): ref Sys->FD 12 1
    name sys Sys 1 0
    name fildes nothing 11 1
  seq no type 10 1
    const (2) int 6 0
ecom to: 
name .t210 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b212 big 0 0
    const (64) int 6 0
ecom: 
name .t210 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b211 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .t210 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .t210 ref Sys->FD 0 0
ecom: 
const %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b211 big 0 0
    const (72) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b211 big 0 0
    const (80) int 6 0
ecom: 
raise nothing 10 1
  + string 10 1
    const fail: string 1 0
    name ename string 0 0
eacom: 
+ string 10 1
  const fail: string 1 0
  name ename string 0 0
ecom: 
+ string 10 1
  const fail: string 1 0
  name ename string 0 0
ecom to: 
name .t210 string 0 0
ecom: 
= string 10 1
  name .t210 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t210 string 0 0
fn: fail
64: argument ctxt ref Context ref 1
72: argument ename string ref 1
80: argument err string ref 1
88: local .t209 int ref 1
96: local .b211 big ref 1
104: local .b212 big ref 1
112: local .t210 ref Localenv ref 1
generate desc for Context.fail
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap ename type string offset 72 (d->offset=72 start=0) returns 72
descmap err type string offset 80 (d->offset=80 start=0) returns 80
descmap .t209 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b211 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b212 type big offset 104 (d->offset=104 start=0) returns -1
descmap .t210 type ref Localenv offset 112 (d->offset=112 start=0) returns 112
fncom: setoptions 6 4c1058
ecom: 
= int 10 1
  name old int 0 0
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
ecom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom to: 
name old int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t213 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t213 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t213 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t213 ref Localenv 0 0
ecom: 
|= int 10 1
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  name flags int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t213 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t213 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t213 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t213 ref Localenv 0 0
ecom: 
&= int 10 2
  * int 10 1
    + int 10 1
      * ref Localenv 10 1
        + int 10 1
          * ref Environment 8 0
            name ctxt ref Context 0 0
          const localenv (24) int 6 0
      const flags (16) int 6 0
  ^ int 10 1
    name flags int 0 0
    const (-1) int 6 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t213 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t213 ref Environment 0 0
eacom: 
^ int 10 1
  name flags int 0 0
  const (-1) int 6 0
ecom: 
^ int 10 1
  name flags int 0 0
  const (-1) int 6 0
ecom to: 
name .t214 int 0 0
ecom: 
= ref Localenv 10 1
  name .t213 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t213 ref Localenv 0 0
ecom: 
name old int 0 0
ecom to: 
* int 8 0
  name .ret int 0 0
fn: setoptions
64: argument ctxt ref Context ref 3
72: argument flags int ref 2
76: argument on int ref 1
80: local old int ref 2
84: local .t214 int ref 1
88: local .t213 ref Localenv ref 1
generate desc for Context.setoptions
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap flags type int offset 72 (d->offset=72 start=0) returns -1
descmap on type int offset 76 (d->offset=76 start=0) returns -1
descmap old type int offset 80 (d->offset=80 start=0) returns -1
descmap .t214 type int offset 84 (d->offset=84 start=0) returns -1
descmap .t213 type ref Localenv offset 88 (d->offset=88 start=0) returns 88
fncom: options 10 4c0af8
ecom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Localenv 10 1
      + int 10 1
        * ref Environment 8 0
          name ctxt ref Context 0 0
        const localenv (24) int 6 0
    const flags (16) int 6 0
ecom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom to: 
name .t215 ref Localenv 0 0
eacom: 
* ref Localenv 10 1
  + int 10 1
    * ref Environment 8 0
      name ctxt ref Context 0 0
    const localenv (24) int 6 0
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .t215 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .t215 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t215 ref Localenv 0 0
fn: options
64: argument ctxt ref Context ref 1
72: local .t215 ref Localenv ref 1
generate desc for Context.options
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap .t215 type ref Localenv offset 72 (d->offset=72 start=0) returns 72
fncom: hashfn 7 4198e8
ecom: 
= int 10 1
  name h int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name h int 0 0
ecom: 
= int 10 1
  name m int 0 0
  len int 10 1
    name s string 0 0
ecom: 
len int 10 1
  name s string 0 0
ecom to: 
name m int 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
ecom: 
= int 10 2
  name h int 0 0
  + int 10 2
    * int 10 1
      name h int 0 0
      const (65599) int 6 0
    inds int 10 1
      name s string 0 0
      name i int 0 0
ecom: 
+ int 10 2
  * int 10 1
    name h int 0 0
    const (65599) int 6 0
  inds int 10 1
    name s string 0 0
    name i int 0 0
ecom to: 
name h int 0 0
ecom: 
* int 10 1
  name h int 0 0
  const (65599) int 6 0
ecom to: 
name .t216 int 0 0
eacom: 
inds int 10 1
  name s string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name s string 0 0
  name i int 0 0
ecom to: 
name .t217 int 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
% int 10 1
  & int 10 1
    name h int 0 0
    const .i.7fffffff (2147483647) int 1 0
  name n int 0 0
ecom to: 
* int 8 0
  name .ret int 0 0
ecom: 
& int 10 1
  name h int 0 0
  const .i.7fffffff (2147483647) int 1 0
ecom to: 
name .t217 int 0 0
fn: hashfn
64: argument s string ref 2
72: argument n int ref 1
76: local h int ref 4
80: local i int ref 4
84: local m int ref 2
88: local .t216 int ref 1
92: local .t217 int ref 1
generate desc for hashfn
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap n type int offset 72 (d->offset=72 start=0) returns -1
descmap h type int offset 76 (d->offset=76 start=0) returns -1
descmap i type int offset 80 (d->offset=80 start=0) returns -1
descmap m type int offset 84 (d->offset=84 start=0) returns -1
descmap .t216 type int offset 88 (d->offset=88 start=0) returns -1
descmap .t217 type int offset 92 (d->offset=92 start=0) returns -1
fncom: hashfind 5 4199a8
ecom: 
= list of ref Var 10 1
  name ent list of ref Var 0 0
  * list of ref Var 10 1
    indx big 10 1
      name ht array of list of ref Var 0 0
      name idx int 0 0
ecom: 
* list of ref Var 10 1
  indx big 10 1
    name ht array of list of ref Var 0 0
    name idx int 0 0
ecom to: 
name ent list of ref Var 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    name ht array of list of ref Var 0 0
    name idx int 0 0
generate desc for big
ecom: 
indx big 10 1
  name ht array of list of ref Var 0 0
  name idx int 0 0
ecom to: 
name .b218 big 0 0
eacom: 
* string 10 1
  hd ref Var 10 1
    name ent list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name ent list of ref Var 0 0
ecom to: 
name .t219 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t219 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t219 ref Var 0 0
ecom: 
hd ref Var 10 1
  name ent list of ref Var 0 0
ecom to: 
* ref Var 8 0
  name .ret int 0 0
ecom: 
= list of ref Var 10 1
  name ent list of ref Var 0 0
  tl list of ref Var 10 1
    name ent list of ref Var 0 0
ecom: 
tl list of ref Var 10 1
  name ent list of ref Var 0 0
ecom to: 
name ent list of ref Var 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  name .ret int 0 0
fn: hashfind
64: argument ht array of list of ref Var ref 1
72: argument idx int ref 1
80: argument n string ref 1
88: local ent list of ref Var ref 6
96: local .b218 big ref 1
104: local .t219 ref Var ref 1
generate desc for hashfind
descmap offset 0
descmap ht type array of list of ref Var offset 64 (d->offset=64 start=0) returns 64
descmap idx type int offset 72 (d->offset=72 start=0) returns -1
descmap n type string offset 80 (d->offset=80 start=0) returns 80
descmap ent type list of ref Var offset 88 (d->offset=88 start=0) returns 88
descmap .b218 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t219 type ref Var offset 104 (d->offset=104 start=0) returns 104
fncom: hashadd 6 419a68
ecom: 
= list of ref Var 10 2
  * list of ref Var 10 1
    indx big 10 1
      name ht array of list of ref Var 0 0
      name idx int 0 0
  :: list of ref Var 10 1
    name v ref Var 0 0
    * list of ref Var 10 1
      indx big 10 1
        name ht array of list of ref Var 0 0
        name idx int 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    name ht array of list of ref Var 0 0
    name idx int 0 0
generate desc for big
ecom: 
indx big 10 1
  name ht array of list of ref Var 0 0
  name idx int 0 0
ecom to: 
name .b220 big 0 0
ecom: 
:: list of ref Var 10 1
  name v ref Var 0 0
  * list of ref Var 10 1
    indx big 10 1
      name ht array of list of ref Var 0 0
      name idx int 0 0
ecom to: 
* list of ref Var 8 1
  name .b220 big 0 0
ecom: 
* list of ref Var 10 1
  indx big 10 1
    name ht array of list of ref Var 0 0
    name idx int 0 0
ecom to: 
name .t221 list of ref Var 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    name ht array of list of ref Var 0 0
    name idx int 0 0
generate desc for big
ecom: 
indx big 10 1
  name ht array of list of ref Var 0 0
  name idx int 0 0
ecom to: 
name .b222 big 0 0
ecom: 
= list of ref Var 10 1
  name .t221 list of ref Var 0 0
  name nil list of ref Var 1 0
ecom: 
name nil list of ref Var 1 0
ecom to: 
name .t221 list of ref Var 0 0
fn: hashadd
64: argument ht array of list of ref Var ref 2
72: argument idx int ref 2
80: argument v ref Var ref 1
88: local .b220 big ref 1
96: local .b222 big ref 1
104: local .t221 list of ref Var ref 1
generate desc for hashadd
descmap offset 0
descmap ht type array of list of ref Var offset 64 (d->offset=64 start=0) returns 64
descmap idx type int offset 72 (d->offset=72 start=0) returns -1
descmap v type ref Var offset 80 (d->offset=80 start=0) returns 80
descmap .b220 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b222 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t221 type list of ref Var offset 104 (d->offset=104 start=0) returns 104
fncom: copylocalenv 2 419b28
ecom: 
= array of list of ref Var 10 1
  name nvars array of list of ref Var 0 0
  array array of list of ref Var 10 1
    len int 10 1
      * array of list of ref Var 8 0
        name e ref Localenv 0 0
ecom: 
array array of list of ref Var 10 1
  len int 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
ecom to: 
name nvars array of list of ref Var 0 0
eacom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom to: 
name .t223 int 0 0
generate desc for list of ref Var
generate desc for list of ref Var
	desc	$-1,8,"80"
ecom: 
= int 10 1
  name flags int 0 0
  * int 8 0
    + int 15 1
      name e ref Localenv 0 0
      const flags (16) int 6 0
ecom: 
* int 8 0
  + int 15 1
    name e ref Localenv 0 0
    const flags (16) int 6 0
ecom to: 
name flags int 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  name nvars array of list of ref Var 0 0
ecom: 
len int 10 1
  name nvars array of list of ref Var 0 0
ecom to: 
name .t223 int 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  * list of ref Var 10 1
    indx big 10 1
      * array of list of ref Var 8 0
        name e ref Localenv 0 0
      name i int 0 0
ecom: 
* list of ref Var 10 1
  indx big 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    name i int 0 0
ecom to: 
name vl list of ref Var 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
  name i int 0 0
ecom to: 
name .b224 big 0 0
ecom: 
= int 10 2
  name idx int 0 0
  call int 10 2
    name hashfn fn(s: string, n: int): int 11 1
    seq no type 10 2
      * string 10 1
        hd ref Var 10 1
          name vl list of ref Var 0 0
      seq no type 10 1
        len int 10 1
          name nvars array of list of ref Var 0 0
ecom: 
call int 10 2
  name hashfn fn(s: string, n: int): int 11 1
  seq no type 10 2
    * string 10 1
      hd ref Var 10 1
        name vl list of ref Var 0 0
    seq no type 10 1
      len int 10 1
        name nvars array of list of ref Var 0 0
ecom to: 
name idx int 0 0
generate desc for big
ecom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b224 big 0 0
    const (64) int 6 0
eacom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .t225 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t225 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t225 ref Var 0 0
ecom: 
len int 10 1
  name nvars array of list of ref Var 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b224 big 0 0
    const (72) int 6 0
eacom: 
call ref Var 10 2
  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
  seq no type 10 1
    name nvars array of list of ref Var 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        * string 10 1
          hd ref Var 10 1
            name vl list of ref Var 0 0
ecom: 
call ref Var 10 2
  name hashfind fn(ht: array of list of ref Var, idx: int, n: string): ref Var 11 1
  seq no type 10 1
    name nvars array of list of ref Var 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        * string 10 1
          hd ref Var 10 1
            name vl list of ref Var 0 0
ecom to: 
name .t225 ref Var 0 0
generate desc for big
ecom: 
name nvars array of list of ref Var 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b224 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b224 big 0 0
    const (72) int 6 0
ecom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b224 big 0 0
    const (80) int 6 0
eacom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .t226 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t226 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t226 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t225 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t225 ref Var 0 0
ecom: 
call no type 10 2
  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
  seq no type 10 1
    name nvars array of list of ref Var 0 0
    seq no type 10 1
      name idx int 0 0
      seq no type 10 1
        ref ref Var 10 1
          * Var 10 1
            hd ref Var 10 1
              name vl list of ref Var 0 0
generate desc for big
ecom: 
name nvars array of list of ref Var 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b224 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b224 big 0 0
    const (72) int 6 0
ecom: 
ref ref Var 10 1
  * Var 10 1
    hd ref Var 10 1
      name vl list of ref Var 0 0
ecom to: 
* ref Var 8 0
  + int 15 0
    name .b224 big 0 0
    const (80) int 6 0
generate desc for Var
ecom: 
* Var 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom to: 
* Var 8 0
  name .t226 ref Var 0 0
eacom: 
* Var 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .t225 ref Var 0 0
generate desc for Var
ecom: 
= ref Var 10 1
  name .t225 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t225 ref Var 0 0
ecom: 
= ref Var 10 1
  name .t226 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t226 ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  tl list of ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
tl list of ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
= ref Localenv 10 1
  name e ref Localenv 0 0
  * ref Localenv 8 0
    + int 15 1
      name e ref Localenv 0 0
      const pushed (8) int 6 0
ecom: 
* ref Localenv 8 0
  + int 15 1
    name e ref Localenv 0 0
    const pushed (8) int 6 0
ecom to: 
name e ref Localenv 0 0
ecom: 
ref ref Localenv 10 1
  tuple Localenv 10 1
    seq no type 10 1
      name nvars array of list of ref Var 0 0
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          name flags int 0 0
ecom to: 
* ref Localenv 8 0
  name .ret int 0 0
generate desc for Localenv
descmap adt offset 0
descmap offset 0
descmap vars type array of list of ref Var offset 0 (d->offset=0 start=0) returns 0
descmap pushed type ref Localenv offset 8 (d->offset=8 start=0) returns 8
descmap flags type int offset 16 (d->offset=16 start=0) returns -1
generate desc for Localenv
	desc	$-1,24,"c0"
ecom: 
tuple Localenv 10 1
  seq no type 10 1
    name nvars array of list of ref Var 0 0
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name flags int 0 0
ecom to: 
* Localenv 8 0
  name .t226 ref Localenv 0 0
ecom: 
name nvars array of list of ref Var 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 1
    adr int 15 1
      * Localenv 8 0
        name .t226 ref Localenv 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Localenv 8 0
  + int 15 1
    adr int 15 1
      * Localenv 8 0
        name .t226 ref Localenv 0 0
    const (8) int 6 0
ecom: 
name flags int 0 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Localenv 8 0
        name .t226 ref Localenv 0 0
    const (16) int 6 0
ecom: 
= ref Localenv 10 1
  name .t226 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t226 ref Localenv 0 0
fn: copylocalenv
64: argument e ref Localenv ref 6
72: local i int ref 4
76: local idx int ref 3
80: local flags int ref 2
84: local .t223 int ref 1
88: local vl list of ref Var ref 7
96: local nvars array of list of ref Var ref 6
104: local .b224 big ref 4
112: local .t225 ref Var ref 1
120: local .t226 ref Var ref 1
generate desc for copylocalenv
descmap offset 0
descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
descmap i type int offset 72 (d->offset=72 start=0) returns -1
descmap idx type int offset 76 (d->offset=76 start=0) returns -1
descmap flags type int offset 80 (d->offset=80 start=0) returns -1
descmap .t223 type int offset 84 (d->offset=84 start=0) returns -1
descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
descmap nvars type array of list of ref Var offset 96 (d->offset=96 start=0) returns 96
descmap .b224 type big offset 104 (d->offset=104 start=0) returns -1
descmap .t225 type ref Var offset 112 (d->offset=112 start=0) returns 112
descmap .t226 type ref Var offset 120 (d->offset=120 start=0) returns 120
fncom: newlocalenv 3 419be8
ecom: 
= ref Localenv 10 2
  name e ref Localenv 0 0
  ref ref Localenv 10 2
    tuple Localenv 10 2
      seq no type 10 2
        array array of list of ref Var 10 1
          const ENVHASHSIZE (7) int 6 0
        seq no type 10 1
          name pushed ref Localenv 0 0
          seq no type 10 1
            const (0) int 6 0
ecom: 
ref ref Localenv 10 2
  tuple Localenv 10 2
    seq no type 10 2
      array array of list of ref Var 10 1
        const ENVHASHSIZE (7) int 6 0
      seq no type 10 1
        name pushed ref Localenv 0 0
        seq no type 10 1
          const (0) int 6 0
ecom to: 
name e ref Localenv 0 0
generate desc for Localenv
ecom: 
tuple Localenv 10 2
  seq no type 10 2
    array array of list of ref Var 10 1
      const ENVHASHSIZE (7) int 6 0
    seq no type 10 1
      name pushed ref Localenv 0 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
* Localenv 8 0
  name .t227 ref Localenv 0 0
ecom: 
array array of list of ref Var 10 1
  const ENVHASHSIZE (7) int 6 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 1
    adr int 15 1
      * Localenv 8 0
        name .t227 ref Localenv 0 0
    const (0) int 6 0
generate desc for list of ref Var
generate desc for list of ref Var
	desc	$-1,8,"80"
ecom: 
name pushed ref Localenv 0 0
ecom to: 
* ref Localenv 8 0
  + int 15 1
    adr int 15 1
      * Localenv 8 0
        name .t227 ref Localenv 0 0
    const (8) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Localenv 8 0
        name .t227 ref Localenv 0 0
    const (16) int 6 0
ecom: 
= ref Localenv 10 1
  name .t227 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .t227 ref Localenv 0 0
ecom: 
= list of (string, string) 10 1
  name vl list of (string, string) 0 0
  call list of (string, string) 10 1
    -> fn(): list of (string, string) 12 1
      name env Env 1 0
      name getall nothing 11 1
ecom: 
call list of (string, string) 10 1
  -> fn(): list of (string, string) 12 1
    name env Env 1 0
    name getall nothing 11 1
ecom to: 
name vl list of (string, string) 0 0
generate desc for big
ecom: 
= (string, string) 10 2
  tuple (string, string) 10 1
    seq nothing 10 1
      name name string 0 0
      seq nothing 10 1
        name val string 0 0
  hd (string, string) 10 1
    name vl list of (string, string) 0 0
ecom: 
hd (string, string) 10 1
  name vl list of (string, string) 0 0
ecom to: 
name name (string, string) 0 0
generate desc for (string, string)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type string offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, string)
	desc	$-1,16,"c0"
ecom: 
call no type 10 3
  name hashadd fn(ht: array of list of ref Var, idx: int, v: ref Var) 11 1
  seq no type 10 3
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    seq no type 10 3
      call int 10 2
        name hashfn fn(s: string, n: int): int 11 1
        seq no type 10 1
          name name string 0 0
          seq no type 10 1
            len int 10 1
              * array of list of ref Var 8 0
                name e ref Localenv 0 0
      seq no type 10 2
        ref ref Var 10 2
          tuple Var 10 2
            seq no type 10 2
              name name string 0 0
              seq no type 10 2
                call list of ref Listnode 10 2
                  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
                  seq no type 10 2
                    call list of string 10 2
                      -> fn(args: string): list of string 12 1
                        name str String 1 0
                        name unquoted nothing 11 1
                      seq no type 10 1
                        name val string 0 0
                seq no type 10 1
                  const (0) int 6 0
generate desc for big
ecom: 
call int 10 2
  name hashfn fn(s: string, n: int): int 11 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      len int 10 1
        * array of list of ref Var 8 0
          name e ref Localenv 0 0
ecom to: 
name .t229 int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b230 big 0 0
    const (64) int 6 0
ecom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b230 big 0 0
    const (72) int 6 0
ecom: 
ref ref Var 10 2
  tuple Var 10 2
    seq no type 10 2
      name name string 0 0
      seq no type 10 2
        call list of ref Listnode 10 2
          name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
          seq no type 10 2
            call list of string 10 2
              -> fn(args: string): list of string 12 1
                name str String 1 0
                name unquoted nothing 11 1
              seq no type 10 1
                name val string 0 0
        seq no type 10 1
          const (0) int 6 0
ecom to: 
name .t227 ref Var 0 0
generate desc for Var
ecom: 
tuple Var 10 2
  seq no type 10 2
    name name string 0 0
    seq no type 10 2
      call list of ref Listnode 10 2
        name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
        seq no type 10 2
          call list of string 10 2
            -> fn(args: string): list of string 12 1
              name str String 1 0
              name unquoted nothing 11 1
            seq no type 10 1
              name val string 0 0
      seq no type 10 1
        const (0) int 6 0
ecom to: 
* Var 8 0
  name .t227 ref Var 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t227 ref Var 0 0
    const (0) int 6 0
ecom: 
call list of ref Listnode 10 2
  name stringlist2list fn(sl: list of string): list of ref Listnode 11 1
  seq no type 10 2
    call list of string 10 2
      -> fn(args: string): list of string 12 1
        name str String 1 0
        name unquoted nothing 11 1
      seq no type 10 1
        name val string 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t227 ref Var 0 0
    const (8) int 6 0
generate desc for big
ecom: 
call list of string 10 2
  -> fn(args: string): list of string 12 1
    name str String 1 0
    name unquoted nothing 11 1
  seq no type 10 1
    name val string 0 0
ecom to: 
name .t231 list of string 0 0
generate desc for big
ecom: 
name val string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b232 big 0 0
    const (64) int 6 0
ecom: 
name .t231 list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b230 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name .t231 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t231 list of string 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Var 8 0
        name .t227 ref Var 0 0
    const (16) int 6 0
ecom: 
* array of list of ref Var 8 0
  name e ref Localenv 0 0
ecom to: 
* array of list of ref Var 8 0
  + int 15 0
    name .b228 big 0 0
    const (64) int 6 0
ecom: 
name .t229 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b228 big 0 0
    const (72) int 6 0
ecom: 
name .t227 ref Var 0 0
ecom to: 
* ref Var 8 0
  + int 15 0
    name .b228 big 0 0
    const (80) int 6 0
ecom: 
= ref Var 10 1
  name .t227 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .t227 ref Var 0 0
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name name (string, string) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name name (string, string) 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name name (string, string) 0 0
      const t1 (8) int 6 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name name (string, string) 0 0
    const t1 (8) int 6 0
ecom: 
= string 10 1
  name val string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name val string 0 0
ecom: 
= list of (string, string) 10 1
  name vl list of (string, string) 0 0
  tl list of (string, string) 10 1
    name vl list of (string, string) 0 0
ecom: 
tl list of (string, string) 10 1
  name vl list of (string, string) 0 0
ecom to: 
name vl list of (string, string) 0 0
ecom: 
= list of (string, string) 10 1
  name vl list of (string, string) 0 0
  name nil list of (string, string) 1 0
ecom: 
name nil list of (string, string) 1 0
ecom to: 
name vl list of (string, string) 0 0
ecom: 
= int 10 1
  * int 8 0
    + int 15 1
      name e ref Localenv 0 0
      const flags (16) int 6 0
  * int 8 0
    + int 15 1
      name pushed ref Localenv 0 0
      const flags (16) int 6 0
ecom: 
* int 8 0
  + int 15 1
    name pushed ref Localenv 0 0
    const flags (16) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    name e ref Localenv 0 0
    const flags (16) int 6 0
ecom: 
name e ref Localenv 0 0
ecom to: 
* ref Localenv 8 0
  name .ret int 0 0
fn: newlocalenv
64: argument pushed ref Localenv ref 4
72: local .t229 int ref 1
80: local e ref Localenv ref 5
88: local vl list of (string, string) ref 5
96: local name string ref 3
104: local val string ref 2
112: local .b228 big ref 2
120: local .b230 big ref 2
128: local .b232 big ref 1
136: local .t227 ref Localenv ref 1
144: local .t231 list of string ref 1
generate desc for newlocalenv
descmap offset 0
descmap pushed type ref Localenv offset 64 (d->offset=64 start=0) returns 64
descmap .t229 type int offset 72 (d->offset=72 start=0) returns -1
descmap e type ref Localenv offset 80 (d->offset=80 start=0) returns 80
descmap vl type list of (string, string) offset 88 (d->offset=88 start=0) returns 88
descmap name type string offset 96 (d->offset=96 start=0) returns 96
descmap val type string offset 104 (d->offset=104 start=0) returns 104
descmap .b228 type big offset 112 (d->offset=112 start=0) returns -1
descmap .b230 type big offset 120 (d->offset=120 start=0) returns -1
descmap .b232 type big offset 128 (d->offset=128 start=0) returns -1
descmap .t227 type ref Localenv offset 136 (d->offset=136 start=0) returns 136
descmap .t231 type list of string offset 144 (d->offset=144 start=0) returns 144
fncom: copybuiltins 3 419ca8
ecom: 
= ref Builtins 10 2
  name nb ref Builtins 0 0
  ref ref Builtins 10 2
    tuple Builtins 10 2
      seq no type 10 2
        array array of (string, list of Shellbuiltin) 10 1
          * int 8 0
            + int 15 1
              name b ref Builtins 0 0
              const n (8) int 6 0
        seq no type 10 1
          * int 8 0
            + int 15 1
              name b ref Builtins 0 0
              const n (8) int 6 0
ecom: 
ref ref Builtins 10 2
  tuple Builtins 10 2
    seq no type 10 2
      array array of (string, list of Shellbuiltin) 10 1
        * int 8 0
          + int 15 1
            name b ref Builtins 0 0
            const n (8) int 6 0
      seq no type 10 1
        * int 8 0
          + int 15 1
            name b ref Builtins 0 0
            const n (8) int 6 0
ecom to: 
name nb ref Builtins 0 0
generate desc for Builtins
ecom: 
tuple Builtins 10 2
  seq no type 10 2
    array array of (string, list of Shellbuiltin) 10 1
      * int 8 0
        + int 15 1
          name b ref Builtins 0 0
          const n (8) int 6 0
    seq no type 10 1
      * int 8 0
        + int 15 1
          name b ref Builtins 0 0
          const n (8) int 6 0
ecom to: 
* Builtins 8 0
  name .t233 ref Builtins 0 0
ecom: 
array array of (string, list of Shellbuiltin) 10 1
  * int 8 0
    + int 15 1
      name b ref Builtins 0 0
      const n (8) int 6 0
ecom to: 
* array of (string, list of Shellbuiltin) 8 0
  + int 15 1
    adr int 15 1
      * Builtins 8 0
        name .t233 ref Builtins 0 0
    const (0) int 6 0
generate desc for (string, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
* int 8 0
  + int 15 1
    name b ref Builtins 0 0
    const n (8) int 6 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * Builtins 8 0
        name .t233 ref Builtins 0 0
    const (8) int 6 0
ecom: 
= ref Builtins 10 1
  name .t233 ref Builtins 0 0
  name nil ref Builtins 1 0
ecom: 
name nil ref Builtins 1 0
ecom to: 
name .t233 ref Builtins 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 2
  slice array of (string, list of Shellbuiltin) 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name nb ref Builtins 0 0
    seq no type 10 1
      const (0) int 6 0
      nothing no type 10 1
  slice array of (string, list of Shellbuiltin) 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    seq no type 10 1
      const (0) int 6 0
      * int 8 0
        + int 15 1
          name b ref Builtins 0 0
          const n (8) int 6 0
eacom: 
slice array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  seq no type 10 1
    const (0) int 6 0
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
ecom: 
slice array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  seq no type 10 1
    const (0) int 6 0
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
ecom to: 
name .t233 array of (string, list of Shellbuiltin) 0 0
ecom: 
* int 8 0
  + int 15 1
    name b ref Builtins 0 0
    const n (8) int 6 0
ecom to: 
name .t234 int 0 0
ecom: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom to: 
name .t233 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name .t233 array of (string, list of Shellbuiltin) 0 0
  name nil array of (string, list of Shellbuiltin) 1 0
ecom: 
name nil array of (string, list of Shellbuiltin) 1 0
ecom to: 
name .t233 array of (string, list of Shellbuiltin) 0 0
ecom: 
name nb ref Builtins 0 0
ecom to: 
* ref Builtins 8 0
  name .ret int 0 0
fn: copybuiltins
64: argument b ref Builtins ref 4
72: local .t234 int ref 1
80: local nb ref Builtins ref 3
88: local .t233 ref Builtins ref 1
generate desc for copybuiltins
descmap offset 0
descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
descmap .t234 type int offset 72 (d->offset=72 start=0) returns -1
descmap nb type ref Builtins offset 80 (d->offset=80 start=0) returns 80
descmap .t233 type ref Builtins offset 88 (d->offset=88 start=0) returns 88
fncom: findbuiltin 9 419d68
ecom: 
= int 10 1
  name lo int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name lo int 0 0
ecom: 
= int 10 1
  name hi int 0 0
  - int 10 1
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
    const (1) int 6 0
ecom: 
- int 10 1
  * int 8 0
    + int 15 1
      name b ref Builtins 0 0
      const n (8) int 6 0
  const (1) int 6 0
ecom to: 
name hi int 0 0
ecom: 
* int 8 0
  + int 15 1
    name b ref Builtins 0 0
    const n (8) int 6 0
ecom to: 
name .t235 int 0 0
ecom: 
= int 10 1
  name mid int 0 0
  / int 10 1
    + int 10 1
      name lo int 0 0
      name hi int 0 0
    const (2) int 6 0
ecom: 
/ int 10 1
  + int 10 1
    name lo int 0 0
    name hi int 0 0
  const (2) int 6 0
ecom to: 
name mid int 0 0
ecom: 
+ int 10 1
  name lo int 0 0
  name hi int 0 0
ecom to: 
name .t235 int 0 0
ecom: 
= (string, list of Shellbuiltin) 10 2
  tuple (string, list of Shellbuiltin) 10 1
    seq nothing 10 1
      name bname string 0 0
      seq nothing 10 1
        name bmod list of Shellbuiltin 0 0
  * (string, list of Shellbuiltin) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      name mid int 0 0
ecom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name mid int 0 0
ecom to: 
name bname (string, list of Shellbuiltin) 0 0
eacom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name mid int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  name mid int 0 0
ecom to: 
name .b236 big 0 0
generate desc for (string, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
= int 10 1
  name hi int 0 0
  - int 10 1
    name mid int 0 0
    const (1) int 6 0
ecom: 
- int 10 1
  name mid int 0 0
  const (1) int 6 0
ecom to: 
name hi int 0 0
ecom: 
= int 10 1
  name lo int 0 0
  + int 15 1
    name mid int 0 0
    const (1) int 6 0
ecom: 
+ int 15 1
  name mid int 0 0
  const (1) int 6 0
ecom to: 
name lo int 0 0
ecom: 
tuple (int, list of Shellbuiltin) 10 1
  seq no type 10 1
    name mid int 0 0
    seq no type 10 1
      name bmod list of Shellbuiltin 0 0
ecom to: 
* (int, list of Shellbuiltin) 8 0
  name .ret int 0 0
ecom: 
name mid int 0 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * (int, list of Shellbuiltin) 8 0
        name .ret int 0 0
    const (0) int 6 0
ecom: 
name bmod list of Shellbuiltin 0 0
ecom to: 
* list of Shellbuiltin 8 0
  + int 15 1
    adr int 15 1
      * (int, list of Shellbuiltin) 8 0
        name .ret int 0 0
    const (8) int 6 0
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name bname (string, list of Shellbuiltin) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name bname (string, list of Shellbuiltin) 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name bname (string, list of Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name bname (string, list of Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
= list of Shellbuiltin 10 1
  name bmod list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name bmod list of Shellbuiltin 0 0
ecom: 
tuple (int, polymorphic type) 10 1
  seq no type 10 1
    name lo int 0 0
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
* (int, polymorphic type) 8 0
  name .ret int 0 0
ecom: 
name lo int 0 0
ecom to: 
* int 8 0
  + int 15 1
    adr int 15 1
      * (int, polymorphic type) 8 0
        name .ret int 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 8 0
  + int 15 1
    adr int 15 1
      * (int, polymorphic type) 8 0
        name .ret int 0 0
    const (8) int 6 0
fn: findbuiltin
64: argument b ref Builtins ref 2
72: argument name string ref 2
80: local lo int ref 5
84: local mid int ref 5
88: local hi int ref 4
92: local .t235 int ref 1
96: local bname string ref 3
104: local bmod list of Shellbuiltin ref 2
112: local .b236 big ref 1
generate desc for findbuiltin
descmap offset 0
descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap lo type int offset 80 (d->offset=80 start=0) returns -1
descmap mid type int offset 84 (d->offset=84 start=0) returns -1
descmap hi type int offset 88 (d->offset=88 start=0) returns -1
descmap .t235 type int offset 92 (d->offset=92 start=0) returns -1
descmap bname type string offset 96 (d->offset=96 start=0) returns 96
descmap bmod type list of Shellbuiltin offset 104 (d->offset=104 start=0) returns 104
descmap .b236 type big offset 112 (d->offset=112 start=0) returns -1
fncom: removebuiltin 3 419e28
ecom: 
= (int, list of Shellbuiltin) 10 2
  tuple (int, list of Shellbuiltin) 10 1
    seq nothing 10 1
      name n int 0 0
      seq nothing 10 1
        name bmods list of Shellbuiltin 0 0
  call (int, list of Shellbuiltin) 10 2
    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
    seq no type 10 1
      name b ref Builtins 0 0
      seq no type 10 1
        name name string 0 0
ecom: 
call (int, list of Shellbuiltin) 10 2
  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
  seq no type 10 1
    name b ref Builtins 0 0
    seq no type 10 1
      name name string 0 0
ecom to: 
name n (int, list of Shellbuiltin) 0 0
generate desc for big
ecom: 
name b ref Builtins 0 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b237 big 0 0
    const (64) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b237 big 0 0
    const (72) int 6 0
eacom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom to: 
name .t238 Shellbuiltin 0 0
ecom: 
= Shellbuiltin 10 1
  name .t238 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t238 Shellbuiltin 0 0
eacom: 
tl list of Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom: 
tl list of Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom to: 
name .t238 list of Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name .t238 list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name .t238 list of Shellbuiltin 0 0
ecom: 
= (string, list of Shellbuiltin) 10 2
  * (string, list of Shellbuiltin) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      name n int 0 0
  tuple (string, list of Shellbuiltin) 10 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        tl list of Shellbuiltin 10 1
          name bmods list of Shellbuiltin 0 0
generate desc for (string, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
tuple (string, list of Shellbuiltin) 10 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      tl list of Shellbuiltin 10 1
        name bmods list of Shellbuiltin 0 0
ecom to: 
name .b239 (string, list of Shellbuiltin) 0 0
ecom: 
name name string 0 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b239 (string, list of Shellbuiltin) 0 0
    const (0) int 6 0
ecom: 
tl list of Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b239 (string, list of Shellbuiltin) 0 0
    const (8) int 6 0
eacom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name n int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  name n int 0 0
ecom to: 
name .b237 big 0 0
ecom: 
name .b239 (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b237 big 0 0
generate desc for (string, list of Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b239 (string, list of Shellbuiltin) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name .b239 (string, list of Shellbuiltin) 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b239 (string, list of Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b239 (string, list of Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
= array of (string, list of Shellbuiltin) 10 2
  slice array of (string, list of Shellbuiltin) 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    seq no type 10 1
      name n int 0 0
      nothing no type 10 1
  slice array of (string, list of Shellbuiltin) 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    seq no type 10 1
      + int 15 1
        name n int 0 0
        const (1) int 6 0
      * int 8 0
        + int 15 1
          name b ref Builtins 0 0
          const n (8) int 6 0
eacom: 
slice array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  seq no type 10 1
    + int 15 1
      name n int 0 0
      const (1) int 6 0
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
ecom: 
slice array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  seq no type 10 1
    + int 15 1
      name n int 0 0
      const (1) int 6 0
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
ecom to: 
name .t238 array of (string, list of Shellbuiltin) 0 0
eacom: 
+ int 15 1
  name n int 0 0
  const (1) int 6 0
ecom: 
+ int 15 1
  name n int 0 0
  const (1) int 6 0
ecom to: 
name .t240 int 0 0
ecom: 
* int 8 0
  + int 15 1
    name b ref Builtins 0 0
    const n (8) int 6 0
ecom to: 
name .t241 int 0 0
ecom: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom to: 
name .t238 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name .t238 array of (string, list of Shellbuiltin) 0 0
  name nil array of (string, list of Shellbuiltin) 1 0
ecom: 
name nil array of (string, list of Shellbuiltin) 1 0
ecom to: 
name .t238 array of (string, list of Shellbuiltin) 0 0
ecom: 
= (polymorphic type, polymorphic type) 10 2
  * (polymorphic type, polymorphic type) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      -= int 10 1
        * int 8 0
          + int 15 1
            name b ref Builtins 0 0
            const n (8) int 6 0
        const (1) int 6 0
  tuple (polymorphic type, polymorphic type) 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name nil polymorphic type 1 0
generate desc for (polymorphic type, polymorphic type)
descmap adt offset 0
descmap offset 0
descmap t0 type polymorphic type offset 0 (d->offset=0 start=0) returns 0
descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
generate desc for (polymorphic type, polymorphic type)
	desc	$-1,16,"c0"
ecom: 
tuple (polymorphic type, polymorphic type) 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
name .b239 (polymorphic type, polymorphic type) 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b239 (polymorphic type, polymorphic type) 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b239 (polymorphic type, polymorphic type) 0 0
    const (8) int 6 0
eacom: 
* (polymorphic type, polymorphic type) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    -= int 10 1
      * int 8 0
        + int 15 1
          name b ref Builtins 0 0
          const n (8) int 6 0
      const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  -= int 10 1
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
    const (1) int 6 0
ecom to: 
name .b237 big 0 0
eacom: 
-= int 10 1
  * int 8 0
    + int 15 1
      name b ref Builtins 0 0
      const n (8) int 6 0
  const (1) int 6 0
ecom: 
-= int 10 1
  * int 8 0
    + int 15 1
      name b ref Builtins 0 0
      const n (8) int 6 0
  const (1) int 6 0
ecom to: 
name .t241 int 0 0
ecom: 
name .b239 (polymorphic type, polymorphic type) 0 0
ecom to: 
* (polymorphic type, polymorphic type) 8 1
  name .b237 big 0 0
generate desc for (polymorphic type, polymorphic type)
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    adr int 13 1
      name .b239 (polymorphic type, polymorphic type) 0 0
  name nil polymorphic type 1 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  adr int 13 1
    name .b239 (polymorphic type, polymorphic type) 0 0
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    + int 13 1
      adr int 13 1
        name .b239 (polymorphic type, polymorphic type) 0 0
      const t1 (8) int 6 0
  name nil polymorphic type 1 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b239 (polymorphic type, polymorphic type) 0 0
    const t1 (8) int 6 0
fn: removebuiltin
64: argument b ref Builtins ref 7
72: argument name string ref 2
80: argument mod Shellbuiltin ref 1
88: local n int ref 4
96: local bmods list of Shellbuiltin ref 5
104: local .t240 int ref 1
108: local .t241 int ref 1
112: local .b237 big ref 3
120: local .b239 (string, list of Shellbuiltin) ref 2
136: local .t238 Shellbuiltin ref 1
generate desc for removebuiltin
descmap offset 0
descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
descmap n type int offset 88 (d->offset=88 start=0) returns -1
descmap bmods type list of Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
descmap .t240 type int offset 104 (d->offset=104 start=0) returns -1
descmap .t241 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b237 type big offset 112 (d->offset=112 start=0) returns -1
descmap adt offset 120
descmap offset 120
descmap t0 type string offset 120 (d->offset=0 start=120) returns 120
descmap t1 type list of Shellbuiltin offset 128 (d->offset=8 start=120) returns 128
descmap .b239 type (string, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
descmap .t238 type Shellbuiltin offset 136 (d->offset=136 start=0) returns 136
fncom: addbuiltin 3 419ee8
ecom: 
= (int, list of Shellbuiltin) 10 2
  tuple (int, list of Shellbuiltin) 10 1
    seq nothing 10 1
      name n int 0 0
      seq nothing 10 1
        name bmods list of Shellbuiltin 0 0
  call (int, list of Shellbuiltin) 10 2
    name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
    seq no type 10 1
      name b ref Builtins 0 0
      seq no type 10 1
        name name string 0 0
ecom: 
call (int, list of Shellbuiltin) 10 2
  name findbuiltin fn(b: ref Builtins, name: string): (int, list of Shellbuiltin) 11 1
  seq no type 10 1
    name b ref Builtins 0 0
    seq no type 10 1
      name name string 0 0
ecom to: 
name n (int, list of Shellbuiltin) 0 0
generate desc for big
ecom: 
name b ref Builtins 0 0
ecom to: 
* ref Builtins 8 0
  + int 15 0
    name .b242 big 0 0
    const (64) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b242 big 0 0
    const (72) int 6 0
eacom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom to: 
name .t243 Shellbuiltin 0 0
ecom: 
= Shellbuiltin 10 1
  name .t243 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t243 Shellbuiltin 0 0
ecom: 
= (string, list of Shellbuiltin) 10 2
  * (string, list of Shellbuiltin) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      name n int 0 0
  tuple (string, list of Shellbuiltin) 10 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        :: list of Shellbuiltin 10 1
          name mod Shellbuiltin 0 0
          name bmods list of Shellbuiltin 0 0
generate desc for (string, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
tuple (string, list of Shellbuiltin) 10 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      :: list of Shellbuiltin 10 1
        name mod Shellbuiltin 0 0
        name bmods list of Shellbuiltin 0 0
ecom to: 
name .b244 (string, list of Shellbuiltin) 0 0
ecom: 
name name string 0 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const (0) int 6 0
ecom: 
:: list of Shellbuiltin 10 1
  name mod Shellbuiltin 0 0
  name bmods list of Shellbuiltin 0 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const (8) int 6 0
ecom: 
name bmods list of Shellbuiltin 0 0
ecom to: 
name .t243 list of Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name .t243 list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name .t243 list of Shellbuiltin 0 0
eacom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name n int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  name n int 0 0
ecom to: 
name .b242 big 0 0
ecom: 
name .b244 (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b242 big 0 0
generate desc for (string, list of Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name .b244 (string, list of Shellbuiltin) 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b244 (string, list of Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
= (string, list of Shellbuiltin) 10 2
  * (string, list of Shellbuiltin) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      name n int 0 0
  tuple (string, list of Shellbuiltin) 10 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        :: list of Shellbuiltin 10 1
          name mod Shellbuiltin 0 0
          name nil polymorphic type 1 0
generate desc for (string, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
tuple (string, list of Shellbuiltin) 10 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      :: list of Shellbuiltin 10 1
        name mod Shellbuiltin 0 0
        name nil polymorphic type 1 0
ecom to: 
name .b244 (string, list of Shellbuiltin) 0 0
ecom: 
name name string 0 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const (0) int 6 0
ecom: 
:: list of Shellbuiltin 10 1
  name mod Shellbuiltin 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t243 list of Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name .t243 list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name .t243 list of Shellbuiltin 0 0
eacom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name n int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  name n int 0 0
ecom to: 
name .b242 big 0 0
ecom: 
name .b244 (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b242 big 0 0
generate desc for (string, list of Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name .b244 (string, list of Shellbuiltin) 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b244 (string, list of Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const t1 (8) int 6 0
eacom: 
len int 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
ecom: 
len int 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
ecom to: 
name .t245 int 0 0
ecom: 
* int 8 0
  + int 15 1
    name b ref Builtins 0 0
    const n (8) int 6 0
ecom to: 
name .t246 int 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name nb array of (string, list of Shellbuiltin) 0 0
  array array of (string, list of Shellbuiltin) 10 1
    + int 10 1
      * int 8 0
        + int 15 1
          name b ref Builtins 0 0
          const n (8) int 6 0
      const (10) int 6 0
ecom: 
array array of (string, list of Shellbuiltin) 10 1
  + int 10 1
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
    const (10) int 6 0
ecom to: 
name nb array of (string, list of Shellbuiltin) 0 0
eacom: 
+ int 10 1
  * int 8 0
    + int 15 1
      name b ref Builtins 0 0
      const n (8) int 6 0
  const (10) int 6 0
ecom: 
+ int 10 1
  * int 8 0
    + int 15 1
      name b ref Builtins 0 0
      const n (8) int 6 0
  const (10) int 6 0
ecom to: 
name .t246 int 0 0
generate desc for (string, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
= array of (string, list of Shellbuiltin) 10 2
  slice array of (string, list of Shellbuiltin) 10 1
    name nb array of (string, list of Shellbuiltin) 0 0
    seq no type 10 1
      const (0) int 6 0
      nothing no type 10 1
  slice array of (string, list of Shellbuiltin) 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    seq no type 10 1
      const (0) int 6 0
      * int 8 0
        + int 15 1
          name b ref Builtins 0 0
          const n (8) int 6 0
eacom: 
slice array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  seq no type 10 1
    const (0) int 6 0
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
ecom: 
slice array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  seq no type 10 1
    const (0) int 6 0
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
ecom to: 
name .t243 array of (string, list of Shellbuiltin) 0 0
ecom: 
* int 8 0
  + int 15 1
    name b ref Builtins 0 0
    const n (8) int 6 0
ecom to: 
name .t246 int 0 0
ecom: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom to: 
name .t243 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name .t243 array of (string, list of Shellbuiltin) 0 0
  name nil array of (string, list of Shellbuiltin) 1 0
ecom: 
name nil array of (string, list of Shellbuiltin) 1 0
ecom to: 
name .t243 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  name nb array of (string, list of Shellbuiltin) 0 0
ecom: 
name nb array of (string, list of Shellbuiltin) 0 0
ecom to: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name nb array of (string, list of Shellbuiltin) 0 0
  name nil array of (string, list of Shellbuiltin) 1 0
ecom: 
name nil array of (string, list of Shellbuiltin) 1 0
ecom to: 
name nb array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 2
  slice array of (string, list of Shellbuiltin) 10 2
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    seq no type 10 2
      + int 15 1
        name n int 0 0
        const (1) int 6 0
      nothing no type 10 1
  slice array of (string, list of Shellbuiltin) 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    seq no type 10 1
      name n int 0 0
      * int 8 0
        + int 15 1
          name b ref Builtins 0 0
          const n (8) int 6 0
ecom: 
+ int 15 1
  name n int 0 0
  const (1) int 6 0
ecom to: 
name .t246 int 0 0
eacom: 
slice array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  seq no type 10 1
    name n int 0 0
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
ecom: 
slice array of (string, list of Shellbuiltin) 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  seq no type 10 1
    name n int 0 0
    * int 8 0
      + int 15 1
        name b ref Builtins 0 0
        const n (8) int 6 0
ecom to: 
name .t243 array of (string, list of Shellbuiltin) 0 0
ecom: 
* int 8 0
  + int 15 1
    name b ref Builtins 0 0
    const n (8) int 6 0
ecom to: 
name .t245 int 0 0
ecom: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom to: 
name .t243 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name .t243 array of (string, list of Shellbuiltin) 0 0
  name nil array of (string, list of Shellbuiltin) 1 0
ecom: 
name nil array of (string, list of Shellbuiltin) 1 0
ecom to: 
name .t243 array of (string, list of Shellbuiltin) 0 0
ecom: 
= (string, list of Shellbuiltin) 10 2
  * (string, list of Shellbuiltin) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      name n int 0 0
  tuple (string, list of Shellbuiltin) 10 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        :: list of Shellbuiltin 10 1
          name mod Shellbuiltin 0 0
          name nil polymorphic type 1 0
generate desc for (string, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
tuple (string, list of Shellbuiltin) 10 1
  seq no type 10 1
    name name string 0 0
    seq no type 10 1
      :: list of Shellbuiltin 10 1
        name mod Shellbuiltin 0 0
        name nil polymorphic type 1 0
ecom to: 
name .b244 (string, list of Shellbuiltin) 0 0
ecom: 
name name string 0 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const (0) int 6 0
ecom: 
:: list of Shellbuiltin 10 1
  name mod Shellbuiltin 0 0
  name nil polymorphic type 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t243 list of Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name .t243 list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name .t243 list of Shellbuiltin 0 0
eacom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name n int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  name n int 0 0
ecom to: 
name .b242 big 0 0
ecom: 
name .b244 (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b242 big 0 0
generate desc for (string, list of Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name .b244 (string, list of Shellbuiltin) 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b244 (string, list of Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name .b244 (string, list of Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
++ int 10 1
  * int 8 0
    + int 15 1
      name b ref Builtins 0 0
      const n (8) int 6 0
  const (1) int 6 0
fn: addbuiltin
64: argument b ref Builtins ref 14
72: argument name string ref 5
80: argument mod Shellbuiltin ref 5
88: local n int ref 6
96: local bmods list of Shellbuiltin ref 4
104: local .t245 int ref 1
108: local .t246 int ref 1
112: local .b242 big ref 4
120: local nb array of (string, list of Shellbuiltin) ref 3
128: local .b244 (string, list of Shellbuiltin) ref 3
144: local .t243 Shellbuiltin ref 1
generate desc for addbuiltin
descmap offset 0
descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
descmap name type string offset 72 (d->offset=72 start=0) returns 72
descmap mod type Shellbuiltin offset 80 (d->offset=80 start=0) returns 80
descmap n type int offset 88 (d->offset=88 start=0) returns -1
descmap bmods type list of Shellbuiltin offset 96 (d->offset=96 start=0) returns 96
descmap .t245 type int offset 104 (d->offset=104 start=0) returns -1
descmap .t246 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b242 type big offset 112 (d->offset=112 start=0) returns -1
descmap nb type array of (string, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 120
descmap adt offset 128
descmap offset 128
descmap t0 type string offset 128 (d->offset=0 start=128) returns 128
descmap t1 type list of Shellbuiltin offset 136 (d->offset=8 start=128) returns 136
descmap .b244 type (string, list of Shellbuiltin) offset 128 (d->offset=128 start=0) returns 136
descmap .t243 type Shellbuiltin offset 144 (d->offset=144 start=0) returns 144
fncom: removebuiltinmod 3 419fa8
ecom: 
= int 10 1
  name j int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name j int 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
ecom: 
= (string, list of Shellbuiltin) 10 2
  tuple (string, list of Shellbuiltin) 10 1
    seq nothing 10 1
      name name string 0 0
      seq nothing 10 1
        name bmods list of Shellbuiltin 0 0
  * (string, list of Shellbuiltin) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      name i int 0 0
ecom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name i int 0 0
ecom to: 
name name (string, list of Shellbuiltin) 0 0
eacom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  name i int 0 0
ecom to: 
name .b247 big 0 0
generate desc for (string, list of Shellbuiltin)
eacom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom: 
hd Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom to: 
name .t248 Shellbuiltin 0 0
ecom: 
= Shellbuiltin 10 1
  name .t248 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t248 Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
  tl list of Shellbuiltin 10 1
    name bmods list of Shellbuiltin 0 0
ecom: 
tl list of Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
ecom to: 
name bmods list of Shellbuiltin 0 0
ecom: 
= (string, list of Shellbuiltin) 10 2
  * (string, list of Shellbuiltin) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      ++ int 10 1
        name j int 0 0
        const (1) int 6 0
  tuple (string, list of Shellbuiltin) 10 1
    seq no type 10 1
      name name string 0 0
      seq no type 10 1
        name bmods list of Shellbuiltin 0 0
eacom: 
* (string, list of Shellbuiltin) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    ++ int 10 1
      name j int 0 0
      const (1) int 6 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  ++ int 10 1
    name j int 0 0
    const (1) int 6 0
ecom to: 
name .b247 big 0 0
eacom: 
++ int 10 1
  name j int 0 0
  const (1) int 6 0
ecom: 
++ int 10 1
  name j int 0 0
  const (1) int 6 0
ecom to: 
name .t249 int 0 0
ecom: 
name name (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b247 big 0 0
generate desc for (string, list of Shellbuiltin)
descmap adt offset 0
descmap offset 0
descmap t0 type string offset 0 (d->offset=0 start=0) returns 0
descmap t1 type list of Shellbuiltin offset 8 (d->offset=8 start=0) returns 8
generate desc for (string, list of Shellbuiltin)
	desc	$-1,16,"c0"
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name name (string, list of Shellbuiltin) 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
* string 0 0
  adr int 13 1
    name name (string, list of Shellbuiltin) 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name name (string, list of Shellbuiltin) 0 0
      const t1 (8) int 6 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
* list of Shellbuiltin 0 0
  + int 13 1
    adr int 13 1
      name name (string, list of Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
= list of Shellbuiltin 10 1
  name bmods list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name bmods list of Shellbuiltin 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
= int 10 1
  * int 8 0
    + int 15 1
      name b ref Builtins 0 0
      const n (8) int 6 0
  name j int 0 0
ecom: 
name j int 0 0
ecom to: 
* int 8 0
  + int 15 1
    name b ref Builtins 0 0
    const n (8) int 6 0
ecom: 
= (polymorphic type, polymorphic type) 10 2
  * (polymorphic type, polymorphic type) 10 1
    indx big 10 1
      * array of (string, list of Shellbuiltin) 8 0
        name b ref Builtins 0 0
      name j int 0 0
  tuple (polymorphic type, polymorphic type) 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        name nil polymorphic type 1 0
generate desc for (polymorphic type, polymorphic type)
descmap adt offset 0
descmap offset 0
descmap t0 type polymorphic type offset 0 (d->offset=0 start=0) returns 0
descmap t1 type polymorphic type offset 8 (d->offset=8 start=0) returns 8
generate desc for (polymorphic type, polymorphic type)
	desc	$-1,16,"c0"
ecom: 
tuple (polymorphic type, polymorphic type) 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      name nil polymorphic type 1 0
ecom to: 
name .b250 (polymorphic type, polymorphic type) 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b250 (polymorphic type, polymorphic type) 0 0
    const (0) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b250 (polymorphic type, polymorphic type) 0 0
    const (8) int 6 0
eacom: 
* (polymorphic type, polymorphic type) 10 1
  indx big 10 1
    * array of (string, list of Shellbuiltin) 8 0
      name b ref Builtins 0 0
    name j int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of (string, list of Shellbuiltin) 8 0
    name b ref Builtins 0 0
  name j int 0 0
ecom to: 
name .b247 big 0 0
ecom: 
name .b250 (polymorphic type, polymorphic type) 0 0
ecom to: 
* (polymorphic type, polymorphic type) 8 1
  name .b247 big 0 0
generate desc for (polymorphic type, polymorphic type)
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    adr int 13 1
      name .b250 (polymorphic type, polymorphic type) 0 0
  name nil polymorphic type 1 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  adr int 13 1
    name .b250 (polymorphic type, polymorphic type) 0 0
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    + int 13 1
      adr int 13 1
        name .b250 (polymorphic type, polymorphic type) 0 0
      const t1 (8) int 6 0
  name nil polymorphic type 1 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b250 (polymorphic type, polymorphic type) 0 0
    const t1 (8) int 6 0
ecom: 
++ int 10 1
  name j int 0 0
  const (1) int 6 0
fn: removebuiltinmod
64: argument b ref Builtins ref 5
72: argument mod Shellbuiltin ref 1
80: local j int ref 6
84: local i int ref 5
88: local .t249 int ref 1
96: local .b247 big ref 3
104: local name string ref 2
112: local bmods list of Shellbuiltin ref 6
120: local .t248 Shellbuiltin ref 1
128: local .b250 (polymorphic type, polymorphic type) ref 1
generate desc for removebuiltinmod
descmap offset 0
descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
descmap mod type Shellbuiltin offset 72 (d->offset=72 start=0) returns 72
descmap j type int offset 80 (d->offset=80 start=0) returns -1
descmap i type int offset 84 (d->offset=84 start=0) returns -1
descmap .t249 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b247 type big offset 96 (d->offset=96 start=0) returns -1
descmap name type string offset 104 (d->offset=104 start=0) returns 104
descmap bmods type list of Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
descmap .t248 type Shellbuiltin offset 120 (d->offset=120 start=0) returns 120
descmap adt offset 128
descmap offset 128
descmap t0 type polymorphic type offset 128 (d->offset=0 start=128) returns 128
descmap t1 type polymorphic type offset 136 (d->offset=8 start=128) returns 136
descmap .b250 type (polymorphic type, polymorphic type) offset 128 (d->offset=128 start=0) returns 136
fncom: export 4 6e80d0
ecom: 
call no type 10 2
  name export fn(e: ref Localenv) 11 1
  seq no type 10 1
    * ref Localenv 8 0
      + int 15 1
        name e ref Localenv 0 0
        const pushed (8) int 6 0
generate desc for big
ecom: 
* ref Localenv 8 0
  + int 15 1
    name e ref Localenv 0 0
    const pushed (8) int 6 0
ecom to: 
* ref Localenv 8 0
  + int 15 0
    name .b251 big 0 0
    const (64) int 6 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom: 
len int 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
ecom to: 
name .t252 int 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  * list of ref Var 10 1
    indx big 10 1
      * array of list of ref Var 8 0
        name e ref Localenv 0 0
      name i int 0 0
ecom: 
* list of ref Var 10 1
  indx big 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    name i int 0 0
ecom to: 
name vl list of ref Var 0 0
eacom: 
* list of ref Var 10 1
  indx big 10 1
    * array of list of ref Var 8 0
      name e ref Localenv 0 0
    name i int 0 0
generate desc for big
ecom: 
indx big 10 1
  * array of list of ref Var 8 0
    name e ref Localenv 0 0
  name i int 0 0
ecom to: 
name .b251 big 0 0
ecom: 
= ref Var 10 1
  name v ref Var 0 0
  hd ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name v ref Var 0 0
eacom: 
& int 10 1
  * int 8 0
    + int 15 1
      name v ref Var 0 0
      const flags (16) int 6 0
  const CHANGED (1) int 6 0
ecom: 
& int 10 1
  * int 8 0
    + int 15 1
      name v ref Var 0 0
      const flags (16) int 6 0
  const CHANGED (1) int 6 0
ecom to: 
name .t252 int 0 0
eacom: 
& int 10 1
  * int 8 0
    + int 15 1
      name v ref Var 0 0
      const flags (16) int 6 0
  const NOEXPORT (2) int 6 0
ecom: 
& int 10 1
  * int 8 0
    + int 15 1
      name v ref Var 0 0
      const flags (16) int 6 0
  const NOEXPORT (2) int 6 0
ecom to: 
name .t252 int 0 0
ecom: 
call no type 10 2
  name setenv fn(name: string, val: list of ref Listnode) 11 1
  seq no type 10 1
    * string 8 0
      name v ref Var 0 0
    seq no type 10 1
      * list of ref Listnode 8 0
        + int 15 1
          name v ref Var 0 0
          const val (8) int 6 0
generate desc for big
ecom: 
* string 8 0
  name v ref Var 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b251 big 0 0
    const (64) int 6 0
ecom: 
* list of ref Listnode 8 0
  + int 15 1
    name v ref Var 0 0
    const val (8) int 6 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b251 big 0 0
    const (72) int 6 0
ecom: 
&= int 10 1
  * int 8 0
    + int 15 1
      name v ref Var 0 0
      const flags (16) int 6 0
  const (-2) int 6 0
ecom: 
= ref Var 10 1
  name v ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name v ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  tl list of ref Var 10 1
    name vl list of ref Var 0 0
ecom: 
tl list of ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
= list of ref Var 10 1
  name vl list of ref Var 0 0
  name nil list of ref Var 1 0
ecom: 
name nil list of ref Var 1 0
ecom to: 
name vl list of ref Var 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
fn: export
64: argument e ref Localenv ref 4
72: local i int ref 4
76: local .t252 int ref 1
80: local v ref Var ref 6
88: local vl list of ref Var ref 5
96: local .b251 big ref 3
generate desc for export
descmap offset 0
descmap e type ref Localenv offset 64 (d->offset=64 start=0) returns 64
descmap i type int offset 72 (d->offset=72 start=0) returns -1
descmap .t252 type int offset 76 (d->offset=76 start=0) returns -1
descmap v type ref Var offset 80 (d->offset=80 start=0) returns 80
descmap vl type list of ref Var offset 88 (d->offset=88 start=0) returns 88
descmap .b251 type big offset 96 (d->offset=96 start=0) returns -1
fncom: noexport 3 6e8190
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
fn: noexport
64: argument name string ref 1
generate desc for noexport
descmap offset 0
descmap name type string offset 64 (d->offset=64 start=0) returns 64
fncom: index 2 6e8250
ecom: 
= list of ref Listnode 10 1
  name val list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name val list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name val list of ref Listnode 0 0
ecom to: 
name val list of ref Listnode 0 0
ecom: 
-- int 10 1
  name k int 0 0
  const (1) int 6 0
ecom: 
= list of ref Listnode 10 1
  name val list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    hd ref Listnode 10 1
      name val list of ref Listnode 0 0
    name nil polymorphic type 1 0
ecom: 
:: list of ref Listnode 10 1
  hd ref Listnode 10 1
    name val list of ref Listnode 0 0
  name nil polymorphic type 1 0
ecom to: 
name val list of ref Listnode 0 0
eacom: 
hd ref Listnode 10 1
  name val list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name val list of ref Listnode 0 0
ecom to: 
name .t253 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t254 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t253 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t253 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t254 list of ref Listnode 0 0
  name nil list of ref Listnode 1 0
ecom: 
name nil list of ref Listnode 1 0
ecom to: 
name .t254 list of ref Listnode 0 0
ecom: 
name val list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
fn: index
64: argument val list of ref Listnode ref 7
72: argument k int ref 2
80: local .t253 ref Listnode ref 1
88: local .t254 list of ref Listnode ref 1
generate desc for index
descmap offset 0
descmap val type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
descmap k type int offset 72 (d->offset=72 start=0) returns -1
descmap .t253 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap .t254 type list of ref Listnode offset 88 (d->offset=88 start=0) returns 88
fncom: getenv 1 6e8310
fncom: envstringtoval 3 6e83d0
fncom: XXXenvstringtoval 1 6e8490
fncom: setenv 2 6e8550
ecom: 
used int 10 2
  call int 10 2
    -> fn(var: string, val: string): int 12 1
      name env Env 1 0
      name setenv nothing 11 1
    seq no type 10 2
      name name string 0 0
      seq no type 10 2
        call string 10 2
          name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
          seq no type 10 1
            name val list of ref Listnode 0 0
            seq no type 10 1
              const (1) int 6 0
ecom: 
call int 10 2
  -> fn(var: string, val: string): int 12 1
    name env Env 1 0
    name setenv nothing 11 1
  seq no type 10 2
    name name string 0 0
    seq no type 10 2
      call string 10 2
        name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
        seq no type 10 1
          name val list of ref Listnode 0 0
          seq no type 10 1
            const (1) int 6 0
ecom to: 
name .t255 int 0 0
generate desc for big
ecom: 
call string 10 2
  name quoted fn(val: list of ref Listnode, quoteblocks: int): string 11 1
  seq no type 10 1
    name val list of ref Listnode 0 0
    seq no type 10 1
      const (1) int 6 0
ecom to: 
name .t257 string 0 0
generate desc for big
ecom: 
name val list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b258 big 0 0
    const (64) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b258 big 0 0
    const (72) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b256 big 0 0
    const (64) int 6 0
ecom: 
name .t257 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b256 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t257 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t257 string 0 0
fn: setenv
64: argument name string ref 1
72: argument val list of ref Listnode ref 1
80: local .t255 int ref 1
88: local .b256 big ref 1
96: local .b258 big ref 1
104: local .t257 string ref 1
generate desc for setenv
descmap offset 0
descmap name type string offset 64 (d->offset=64 start=0) returns 64
descmap val type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap .t255 type int offset 80 (d->offset=80 start=0) returns -1
descmap .b256 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b258 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t257 type string offset 104 (d->offset=104 start=0) returns 104
fncom: containswildchar 2 6e8610
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  name s string 0 0
ecom: 
len int 10 1
  name s string 0 0
ecom to: 
name .t259 int 0 0
eacom: 
inds int 10 1
  name s string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name s string 0 0
  name i int 0 0
ecom to: 
name .t259 int 0 0
eacom: 
- int 10 1
  len int 10 1
    name s string 0 0
  const (1) int 6 0
ecom: 
- int 10 1
  len int 10 1
    name s string 0 0
  const (1) int 6 0
ecom to: 
name .t259 int 0 0
ecom: 
len int 10 1
  name s string 0 0
ecom to: 
name .t259 int 0 0
eacom: 
inds int 10 1
  name s string 0 0
  + int 15 1
    name i int 0 0
    const (1) int 6 0
ecom: 
inds int 10 1
  name s string 0 0
  + int 15 1
    name i int 0 0
    const (1) int 6 0
ecom to: 
name .t259 int 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t260 int 0 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  name .ret int 0 0
fn: containswildchar
64: argument s string ref 4
72: local i int ref 6
76: local .t259 int ref 1
80: local .t260 int ref 1
generate desc for containswildchar
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap i type int offset 72 (d->offset=72 start=0) returns -1
descmap .t259 type int offset 76 (d->offset=76 start=0) returns -1
descmap .t260 type int offset 80 (d->offset=80 start=0) returns -1
fncom: patquote 2 6e86d0
ecom: 
= string 10 1
  name outword string 0 0
  const  string 1 0
ecom: 
const  string 1 0
ecom to: 
name outword string 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  name word string 0 0
ecom: 
len int 10 1
  name word string 0 0
ecom to: 
name .t261 int 0 0
eacom: 
inds int 10 1
  name word string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name word string 0 0
  name i int 0 0
ecom to: 
name .t261 int 0 0
ecom: 
= int 10 1
  inds int 10 1
    name outword string 0 0
    len int 10 1
      name outword string 0 0
  const (92) int 6 0
ecom: 
len int 10 1
  name outword string 0 0
ecom to: 
name .t261 int 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
eacom: 
len int 10 1
  name word string 0 0
ecom: 
len int 10 1
  name word string 0 0
ecom to: 
name .t261 int 0 0
ecom: 
name outword string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
eacom: 
inds int 10 1
  name word string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name word string 0 0
  name i int 0 0
ecom to: 
name .t261 int 0 0
eacom: 
- int 10 1
  len int 10 1
    name word string 0 0
  const (1) int 6 0
ecom: 
- int 10 1
  len int 10 1
    name word string 0 0
  const (1) int 6 0
ecom to: 
name .t261 int 0 0
ecom: 
len int 10 1
  name word string 0 0
ecom to: 
name .t261 int 0 0
eacom: 
inds int 10 1
  name word string 0 0
  + int 15 1
    name i int 0 0
    const (1) int 6 0
ecom: 
inds int 10 1
  name word string 0 0
  + int 15 1
    name i int 0 0
    const (1) int 6 0
ecom to: 
name .t261 int 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t262 int 0 0
ecom: 
= int 10 1
  inds int 10 1
    name word string 0 0
    + int 15 1
      name i int 0 0
      const (1) int 6 0
  const (94) int 6 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t262 int 0 0
ecom: 
= int 10 2
  inds int 10 1
    name outword string 0 0
    len int 10 1
      name outword string 0 0
  inds int 10 1
    name word string 0 0
    name i int 0 0
ecom: 
len int 10 1
  name outword string 0 0
ecom to: 
name .t262 int 0 0
eacom: 
inds int 10 1
  name word string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name word string 0 0
  name i int 0 0
ecom to: 
name .t261 int 0 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
name outword string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
fn: patquote
64: argument word string ref 8
72: local i int ref 11
76: local .t261 int ref 1
80: local .t262 int ref 1
88: local outword string ref 7
generate desc for patquote
descmap offset 0
descmap word type string offset 64 (d->offset=64 start=0) returns 64
descmap i type int offset 72 (d->offset=72 start=0) returns -1
descmap .t261 type int offset 76 (d->offset=76 start=0) returns -1
descmap .t262 type int offset 80 (d->offset=80 start=0) returns -1
descmap outword type string offset 88 (d->offset=88 start=0) returns 88
fncom: deglob 4 6e8790
ecom: 
= int 10 1
  name j int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name j int 0 0
ecom: 
= int 10 1
  name i int 0 0
  const (0) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
name i int 0 0
eacom: 
len int 10 1
  name s string 0 0
ecom: 
len int 10 1
  name s string 0 0
ecom to: 
name .t263 int 0 0
eacom: 
inds int 10 1
  name s string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name s string 0 0
  name i int 0 0
ecom to: 
name .t263 int 0 0
ecom: 
= int 10 2
  inds int 10 1
    name s string 0 0
    name j int 0 0
  inds int 10 1
    name s string 0 0
    name i int 0 0
eacom: 
inds int 10 1
  name s string 0 0
  name i int 0 0
ecom: 
inds int 10 1
  name s string 0 0
  name i int 0 0
ecom to: 
name .t263 int 0 0
ecom: 
++ int 10 1
  name j int 0 0
  const (1) int 6 0
ecom: 
++ int 10 1
  name i int 0 0
  const (1) int 6 0
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
slice string 10 1
  name s string 0 0
  seq no type 10 1
    const (0) int 6 0
    name j int 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  name .ret int 0 0
fn: deglob
64: argument s string ref 6
72: local i int ref 7
76: local j int ref 6
80: local .t263 int ref 1
generate desc for deglob
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap i type int offset 72 (d->offset=72 start=0) returns -1
descmap j type int offset 76 (d->offset=76 start=0) returns -1
descmap .t263 type int offset 80 (d->offset=80 start=0) returns -1
fncom: glob 7 6e8850
ecom: 
= ref Listnode 10 1
  name n ref Listnode 0 0
  hd ref Listnode 10 1
    name nl list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name nl list of ref Listnode 0 0
ecom to: 
name n ref Listnode 0 0
eacom: 
call int 10 2
  name containswildchar fn(s: string): int 11 1
  seq no type 10 1
    * string 8 0
      + int 15 1
        name n ref Listnode 0 0
        const word (8) int 6 0
ecom: 
call int 10 2
  name containswildchar fn(s: string): int 11 1
  seq no type 10 1
    * string 8 0
      + int 15 1
        name n ref Listnode 0 0
        const word (8) int 6 0
ecom to: 
name .t264 int 0 0
generate desc for big
ecom: 
* string 8 0
  + int 15 1
    name n ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b265 big 0 0
    const (64) int 6 0
ecom: 
= string 10 2
  name qword string 0 0
  call string 10 2
    name patquote fn(word: string): string 11 1
    seq no type 10 1
      * string 8 0
        + int 15 1
          name n ref Listnode 0 0
          const word (8) int 6 0
ecom: 
call string 10 2
  name patquote fn(word: string): string 11 1
  seq no type 10 1
    * string 8 0
      + int 15 1
        name n ref Listnode 0 0
        const word (8) int 6 0
ecom to: 
name qword string 0 0
generate desc for big
ecom: 
* string 8 0
  + int 15 1
    name n ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b265 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 2
  name files list of string 0 0
    name qword string 0 0
  call list of string 10 2
    -> fn(pat: string): list of string 12 1
      name filepat Filepat 1 0
      name expand nothing 11 1
    seq no type 10 1
      name qword string 0 0
ecom: 
call list of string 10 2
  -> fn(pat: string): list of string 12 1
    name filepat Filepat 1 0
    name expand nothing 11 1
  seq no type 10 1
    name qword string 0 0
ecom to: 
name files list of string 0 0
  name qword string 0 0
generate desc for big
ecom: 
name qword string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b265 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 2
  name files list of string 0 0
  :: list of string 10 2
    call string 10 2
      name deglob fn(s: string): string 11 1
      seq no type 10 1
        * string 8 0
          + int 15 1
            name n ref Listnode 0 0
            const word (8) int 6 0
    name nil polymorphic type 1 0
ecom: 
:: list of string 10 2
  call string 10 2
    name deglob fn(s: string): string 11 1
    seq no type 10 1
      * string 8 0
        + int 15 1
          name n ref Listnode 0 0
          const word (8) int 6 0
  name nil polymorphic type 1 0
ecom to: 
name files list of string 0 0
eacom: 
call string 10 2
  name deglob fn(s: string): string 11 1
  seq no type 10 1
    * string 8 0
      + int 15 1
        name n ref Listnode 0 0
        const word (8) int 6 0
ecom: 
call string 10 2
  name deglob fn(s: string): string 11 1
  seq no type 10 1
    * string 8 0
      + int 15 1
        name n ref Listnode 0 0
        const word (8) int 6 0
ecom to: 
name .t266 string 0 0
generate desc for big
ecom: 
* string 8 0
  + int 15 1
    name n ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
* string 8 0
  + int 15 0
    name .b265 big 0 0
    const (64) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t267 list of string 0 0
ecom: 
= string 10 1
  name .t266 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t266 string 0 0
ecom: 
= list of string 10 1
  name .t267 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t267 list of string 0 0
ecom: 
= list of ref Listnode 10 1
  name new list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    ref ref Listnode 10 1
      tuple Listnode 10 1
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            hd string 10 1
              name files list of string 0 0
    name new list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          hd string 10 1
            name files list of string 0 0
  name new list of ref Listnode 0 0
ecom to: 
name new list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        hd string 10 1
          name files list of string 0 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        hd string 10 1
          name files list of string 0 0
ecom to: 
name .t267 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      hd string 10 1
        name files list of string 0 0
ecom to: 
* Listnode 8 0
  name .t267 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t267 ref Listnode 0 0
    const (0) int 6 0
ecom: 
hd string 10 1
  name files list of string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t267 ref Listnode 0 0
    const (8) int 6 0
ecom: 
= ref Listnode 10 1
  name .t267 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t267 ref Listnode 0 0
ecom: 
= list of string 10 1
  name files list of string 0 0
  tl list of string 10 1
    name files list of string 0 0
ecom: 
tl list of string 10 1
  name files list of string 0 0
ecom to: 
name files list of string 0 0
ecom: 
= list of string 10 1
  name files list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name files list of string 0 0
ecom: 
= string 10 1
  name qword string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name qword string 0 0
ecom: 
= list of ref Listnode 10 1
  name new list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    name n ref Listnode 0 0
    name new list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  name n ref Listnode 0 0
  name new list of ref Listnode 0 0
ecom to: 
name new list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name nl list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name nl list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name nl list of ref Listnode 0 0
ecom to: 
name nl list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name n ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name n ref Listnode 0 0
ecom: 
= list of ref Listnode 10 2
  name ret list of ref Listnode 0 0
  call list of ref Listnode 10 2
    name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
    seq no type 10 1
      name new list of ref Listnode 0 0
ecom: 
call list of ref Listnode 10 2
  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name new list of ref Listnode 0 0
ecom to: 
name ret list of ref Listnode 0 0
generate desc for big
ecom: 
name new list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b265 big 0 0
    const (64) int 6 0
ecom: 
name ret list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
fn: glob
64: argument nl list of ref Listnode ref 4
72: local .t264 int ref 1
80: local files list of string ref 7
88: local .b265 big ref 5
96: local n ref Listnode ref 5
104: local new list of ref Listnode ref 5
112: local qword string ref 2
120: local ret list of ref Listnode ref 2
128: local .t266 string ref 1
136: local .t267 list of string ref 1
generate desc for glob
descmap offset 0
descmap nl type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
descmap .t264 type int offset 72 (d->offset=72 start=0) returns -1
descmap files type list of string offset 80 (d->offset=80 start=0) returns 80
descmap .b265 type big offset 88 (d->offset=88 start=0) returns -1
descmap n type ref Listnode offset 96 (d->offset=96 start=0) returns 96
descmap new type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
descmap qword type string offset 112 (d->offset=112 start=0) returns 112
descmap ret type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
descmap .t266 type string offset 128 (d->offset=128 start=0) returns 128
descmap .t267 type list of string offset 136 (d->offset=136 start=0) returns 136
fncom: list2stringlist 8 4c3048
ecom: 
= list of string 10 1
  name ret list of string 0 0
  name nil polymorphic type 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name ret list of string 0 0
ecom: 
= ref Listnode 10 1
  name el ref Listnode 0 0
    vardecl string 10 1
      seq nothing 10 1
  hd ref Listnode 10 1
    name nl list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name nl list of ref Listnode 0 0
ecom to: 
name el ref Listnode 0 0
  vardecl string 10 1
    seq nothing 10 1
ecom: 
= string 10 1
  name newel string 0 0
  * string 8 0
    + int 15 1
      name el ref Listnode 0 0
      const word (8) int 6 0
ecom: 
* string 8 0
  + int 15 1
    name el ref Listnode 0 0
    const word (8) int 6 0
ecom to: 
name newel string 0 0
ecom: 
= string 10 2
  * string 8 0
    + int 15 1
      name el ref Listnode 0 0
      const word (8) int 6 0
  = string 10 2
    name newel string 0 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          name el ref Listnode 0 0
ecom: 
= string 10 2
  name newel string 0 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        name el ref Listnode 0 0
ecom to: 
* string 8 0
  + int 15 1
    name el ref Listnode 0 0
    const word (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      name el ref Listnode 0 0
ecom to: 
name newel string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  name el ref Listnode 0 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b268 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name ret list of string 0 0
  :: list of string 10 1
    name newel string 0 0
    name ret list of string 0 0
ecom: 
:: list of string 10 1
  name newel string 0 0
  name ret list of string 0 0
ecom to: 
name ret list of string 0 0
ecom: 
= list of ref Listnode 10 1
  name nl list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name nl list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name nl list of ref Listnode 0 0
ecom to: 
name nl list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name el ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name el ref Listnode 0 0
ecom: 
= string 10 1
  name newel string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name newel string 0 0
ecom: 
= list of string 10 2
  name sl list of string 0 0
  call list of string 10 2
    name revstringlist fn(l: list of string): list of string 11 1
    seq no type 10 1
      name ret list of string 0 0
ecom: 
call list of string 10 2
  name revstringlist fn(l: list of string): list of string 11 1
  seq no type 10 1
    name ret list of string 0 0
ecom to: 
name sl list of string 0 0
generate desc for big
ecom: 
name ret list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b268 big 0 0
    const (64) int 6 0
ecom: 
name sl list of string 0 0
ecom to: 
* list of string 8 0
  name .ret int 0 0
fn: list2stringlist
64: argument nl list of ref Listnode ref 4
72: local el ref Listnode ref 6
80: local ret list of string ref 4
88: local newel string ref 3
96: local .b268 big ref 2
104: local sl list of string ref 2
generate desc for list2stringlist
descmap offset 0
descmap nl type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
descmap el type ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap ret type list of string offset 80 (d->offset=80 start=0) returns 80
descmap newel type string offset 88 (d->offset=88 start=0) returns 88
descmap .b268 type big offset 96 (d->offset=96 start=0) returns -1
descmap sl type list of string offset 104 (d->offset=104 start=0) returns 104
fncom: stringlist2list 9 4c3788
ecom: 
= list of ref Listnode 10 1
  name ret list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    ref ref Listnode 10 1
      tuple Listnode 10 1
        seq no type 10 1
          name nil polymorphic type 1 0
          seq no type 10 1
            hd string 10 1
              name sl list of string 0 0
    name ret list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  ref ref Listnode 10 1
    tuple Listnode 10 1
      seq no type 10 1
        name nil polymorphic type 1 0
        seq no type 10 1
          hd string 10 1
            name sl list of string 0 0
  name ret list of ref Listnode 0 0
ecom to: 
name ret list of ref Listnode 0 0
eacom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        hd string 10 1
          name sl list of string 0 0
ecom: 
ref ref Listnode 10 1
  tuple Listnode 10 1
    seq no type 10 1
      name nil polymorphic type 1 0
      seq no type 10 1
        hd string 10 1
          name sl list of string 0 0
ecom to: 
name .t269 ref Listnode 0 0
generate desc for Listnode
ecom: 
tuple Listnode 10 1
  seq no type 10 1
    name nil polymorphic type 1 0
    seq no type 10 1
      hd string 10 1
        name sl list of string 0 0
ecom to: 
* Listnode 8 0
  name .t269 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* ref Node 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t269 ref Listnode 0 0
    const (0) int 6 0
ecom: 
hd string 10 1
  name sl list of string 0 0
ecom to: 
* string 8 0
  + int 15 1
    adr int 15 1
      * Listnode 8 0
        name .t269 ref Listnode 0 0
    const (8) int 6 0
ecom: 
= ref Listnode 10 1
  name .t269 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t269 ref Listnode 0 0
ecom: 
= list of string 10 1
  name sl list of string 0 0
  tl list of string 10 1
    name sl list of string 0 0
ecom: 
tl list of string 10 1
  name sl list of string 0 0
ecom to: 
name sl list of string 0 0
ecom: 
call list of ref Listnode 10 2
  name revlist fn(l: list of ref Listnode): list of ref Listnode 11 1
  seq no type 10 1
    name ret list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
generate desc for big
ecom: 
name ret list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b270 big 0 0
    const (64) int 6 0
fn: stringlist2list
64: argument sl list of string ref 4
72: local ret list of ref Listnode ref 3
80: local .b270 big ref 1
88: local .t269 ref Listnode ref 1
generate desc for stringlist2list
descmap offset 0
descmap sl type list of string offset 64 (d->offset=64 start=0) returns 64
descmap ret type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap .b270 type big offset 80 (d->offset=80 start=0) returns -1
descmap .t269 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
fncom: revstringlist 2 6e8910
ecom: 
= list of string 10 1
  name t list of string 0 0
  :: list of string 10 1
    hd string 10 1
      name l list of string 0 0
    name t list of string 0 0
ecom: 
:: list of string 10 1
  hd string 10 1
    name l list of string 0 0
  name t list of string 0 0
ecom to: 
name t list of string 0 0
eacom: 
hd string 10 1
  name l list of string 0 0
ecom: 
hd string 10 1
  name l list of string 0 0
ecom to: 
name .t271 string 0 0
ecom: 
= string 10 1
  name .t271 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t271 string 0 0
ecom: 
= list of string 10 1
  name l list of string 0 0
  tl list of string 10 1
    name l list of string 0 0
ecom: 
tl list of string 10 1
  name l list of string 0 0
ecom to: 
name l list of string 0 0
ecom: 
name t list of string 0 0
ecom to: 
* list of string 8 0
  name .ret int 0 0
fn: revstringlist
64: argument l list of string ref 4
72: local t list of string ref 3
80: local .t271 string ref 1
generate desc for revstringlist
descmap offset 0
descmap l type list of string offset 64 (d->offset=64 start=0) returns 64
descmap t type list of string offset 72 (d->offset=72 start=0) returns 72
descmap .t271 type string offset 80 (d->offset=80 start=0) returns 80
fncom: revlist 5 6e89d0
ecom: 
= list of ref Listnode 10 1
  name t list of ref Listnode 0 0
  :: list of ref Listnode 10 1
    hd ref Listnode 10 1
      name l list of ref Listnode 0 0
    name t list of ref Listnode 0 0
ecom: 
:: list of ref Listnode 10 1
  hd ref Listnode 10 1
    name l list of ref Listnode 0 0
  name t list of ref Listnode 0 0
ecom to: 
name t list of ref Listnode 0 0
eacom: 
hd ref Listnode 10 1
  name l list of ref Listnode 0 0
ecom: 
hd ref Listnode 10 1
  name l list of ref Listnode 0 0
ecom to: 
name .t272 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .t272 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .t272 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name l list of ref Listnode 0 0
  tl list of ref Listnode 10 1
    name l list of ref Listnode 0 0
ecom: 
tl list of ref Listnode 10 1
  name l list of ref Listnode 0 0
ecom to: 
name l list of ref Listnode 0 0
ecom: 
name t list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  name .ret int 0 0
fn: revlist
64: argument l list of ref Listnode ref 4
72: local t list of ref Listnode ref 3
80: local .t272 ref Listnode ref 1
generate desc for revlist
descmap offset 0
descmap l type list of ref Listnode offset 64 (d->offset=64 start=0) returns 64
descmap t type list of ref Listnode offset 72 (d->offset=72 start=0) returns 72
descmap .t272 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
fncom: fdassignstr 4 6e8a90
ecom: 
= string 10 1
  name l string 0 0
  name nil polymorphic type 1 0
ecom: 
name nil string 1 0
ecom to: 
name l string 0 0
ecom: 
= string 10 1
  name l string 0 0
  cast string 10 1
    * int 8 0
      + int 15 1
        name redir ref Redir 0 0
        const fd1 (4) int 6 0
ecom: 
cast string 10 1
  * int 8 0
    + int 15 1
      name redir ref Redir 0 0
      const fd1 (4) int 6 0
ecom to: 
name l string 0 0
ecom: 
= string 10 1
  name r string 0 0
  name nil polymorphic type 1 0
ecom: 
name nil string 1 0
ecom to: 
name r string 0 0
ecom: 
= string 10 1
  name r string 0 0
  cast string 10 1
    * int 8 0
      + int 15 1
        name redir ref Redir 0 0
        const fd2 (8) int 6 0
ecom: 
cast string 10 1
  * int 8 0
    + int 15 1
      name redir ref Redir 0 0
      const fd2 (8) int 6 0
ecom to: 
name r string 0 0
ecom: 
+ string 10 1
  + string 10 1
    + string 10 1
      + string 10 1
        const [ string 1 0
        name l string 0 0
      const = string 1 0
    name r string 0 0
  const ] string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
+ string 10 1
  + string 10 1
    + string 10 1
      const [ string 1 0
      name l string 0 0
    const = string 1 0
  name r string 0 0
ecom to: 
name .t273 string 0 0
ecom: 
+ string 10 1
  + string 10 1
    const [ string 1 0
    name l string 0 0
  const = string 1 0
ecom to: 
name .t273 string 0 0
ecom: 
+ string 10 1
  const [ string 1 0
  name l string 0 0
ecom to: 
name .t273 string 0 0
ecom: 
= string 10 1
  name .t273 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t273 string 0 0
ecom: 
= string 10 1
  name r string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name r string 0 0
ecom: 
+ string 10 1
  + string 10 1
    const [ string 1 0
    name l string 0 0
  const ] string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
+ string 10 1
  const [ string 1 0
  name l string 0 0
ecom to: 
name .t273 string 0 0
ecom: 
= string 10 1
  name .t273 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t273 string 0 0
fn: fdassignstr
64: argument isassign int ref 1
72: argument redir ref Redir ref 4
80: local l string ref 4
88: local r string ref 3
96: local .t273 string ref 1
generate desc for fdassignstr
descmap offset 0
descmap isassign type int offset 64 (d->offset=64 start=0) returns -1
descmap redir type ref Redir offset 72 (d->offset=72 start=0) returns 72
descmap l type string offset 80 (d->offset=80 start=0) returns 80
descmap r type string offset 88 (d->offset=88 start=0) returns 88
descmap .t273 type string offset 96 (d->offset=96 start=0) returns 96
fncom: redirstr 3 6e8b50
ecom: 
const < string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
const > string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
const >> string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
const <> string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
fn: redirstr
64: argument rtype int ref 1
generate desc for redirstr
descmap offset 0
descmap rtype type int offset 64 (d->offset=64 start=0) returns -1
fncom: cmd2string 31 4b8f00
ecom: 
const  string 1 0
ecom to: 
* string 8 0
  name .ret int 0 0
ecom: 
= string 10 2
  name s string 0 0
  + string 10 2
    + string 10 2
      const { string 1 0
      call string 10 2
        name cmd2string fn(n: ref Node): string 11 1
        seq no type 10 1
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const left (8) int 6 0
    const } string 1 0
ecom: 
+ string 10 2
  + string 10 2
    const { string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
  const } string 1 0
ecom to: 
name s string 0 0
ecom: 
+ string 10 2
  const { string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
ecom to: 
name .t274 string 0 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  + string 10 2
    const $ string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
ecom: 
+ string 10 2
  const $ string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
ecom to: 
name s string 0 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
+= string 10 2
  name s string 0 0
  + string 10 2
    + string 10 2
      const ( string 1 0
      call string 10 2
        name cmd2string fn(n: ref Node): string 11 1
        seq no type 10 1
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const right (16) int 6 0
    const ) string 1 0
eacom: 
+ string 10 2
  + string 10 2
    const ( string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const right (16) int 6 0
  const ) string 1 0
ecom: 
+ string 10 2
  + string 10 2
    const ( string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const right (16) int 6 0
  const ) string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
+ string 10 2
  const ( string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const right (16) int 6 0
ecom to: 
name .t274 string 0 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const right (16) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const right (16) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  + string 10 2
    const $" string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
ecom: 
+ string 10 2
  const $" string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
ecom to: 
name s string 0 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  + string 10 2
    const $# string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
ecom: 
+ string 10 2
  const $# string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
ecom to: 
name s string 0 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  + string 10 2
    const ` string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
ecom: 
+ string 10 2
  const ` string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
ecom to: 
name s string 0 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  + string 10 2
    const " string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
ecom: 
+ string 10 2
  const " string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
ecom to: 
name s string 0 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  call string 10 2
    name redirstr fn(rtype: int): string 11 1
    seq no type 10 1
      * int 10 1
        * ref Redir 8 0
          + int 15 1
            name n ref Node 0 0
            const redir (32) int 6 0
ecom: 
call string 10 2
  name redirstr fn(rtype: int): string 11 1
  seq no type 10 1
    * int 10 1
      * ref Redir 8 0
        + int 15 1
          name n ref Node 0 0
          const redir (32) int 6 0
ecom to: 
name s string 0 0
generate desc for big
ecom: 
* int 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
eacom: 
* int 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .t274 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .t274 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .t274 ref Redir 0 0
eacom: 
* int 10 1
  + int 10 1
    * ref Redir 8 0
      + int 15 1
        name n ref Node 0 0
        const redir (32) int 6 0
    const fd1 (4) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .t274 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .t274 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .t274 ref Redir 0 0
ecom: 
+= string 10 2
  name s string 0 0
  call string 10 2
    name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
    seq no type 10 1
      const (0) int 6 0
      seq no type 10 1
        * ref Redir 8 0
          + int 15 1
            name n ref Node 0 0
            const redir (32) int 6 0
eacom: 
call string 10 2
  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
  seq no type 10 1
    const (0) int 6 0
    seq no type 10 1
      * ref Redir 8 0
        + int 15 1
          name n ref Node 0 0
          const redir (32) int 6 0
ecom: 
call string 10 2
  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
  seq no type 10 1
    const (0) int 6 0
    seq no type 10 1
      * ref Redir 8 0
        + int 15 1
          name n ref Node 0 0
          const redir (32) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
* ref Redir 8 0
  + int 15 0
    name .b275 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
+= string 10 2
  name s string 0 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 3
  name s string 0 0
  + string 10 3
    call string 10 2
      name redirstr fn(rtype: int): string 11 1
      seq no type 10 1
        * int 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
    call string 10 2
      name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
      seq no type 10 1
        const (1) int 6 0
        seq no type 10 1
          * ref Redir 8 0
            + int 15 1
              name n ref Node 0 0
              const redir (32) int 6 0
ecom: 
+ string 10 3
  call string 10 2
    name redirstr fn(rtype: int): string 11 1
    seq no type 10 1
      * int 10 1
        * ref Redir 8 0
          + int 15 1
            name n ref Node 0 0
            const redir (32) int 6 0
  call string 10 2
    name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
    seq no type 10 1
      const (1) int 6 0
      seq no type 10 1
        * ref Redir 8 0
          + int 15 1
            name n ref Node 0 0
            const redir (32) int 6 0
ecom to: 
name s string 0 0
ecom: 
call string 10 2
  name redirstr fn(rtype: int): string 11 1
  seq no type 10 1
    * int 10 1
      * ref Redir 8 0
        + int 15 1
          name n ref Node 0 0
          const redir (32) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* int 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
eacom: 
* int 10 1
  * ref Redir 8 0
    + int 15 1
      name n ref Node 0 0
      const redir (32) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .t276 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .t276 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .t276 ref Redir 0 0
eacom: 
call string 10 2
  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
  seq no type 10 1
    const (1) int 6 0
    seq no type 10 1
      * ref Redir 8 0
        + int 15 1
          name n ref Node 0 0
          const redir (32) int 6 0
ecom: 
call string 10 2
  name fdassignstr fn(isassign: int, redir: ref Redir): string 11 1
  seq no type 10 1
    const (1) int 6 0
    seq no type 10 1
      * ref Redir 8 0
        + int 15 1
          name n ref Node 0 0
          const redir (32) int 6 0
ecom to: 
name .t276 string 0 0
generate desc for big
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
* ref Redir 8 0
  + int 15 0
    name .b275 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 1
  name .t276 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t276 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  + string 10 2
    + string 10 2
      const ( string 1 0
      call string 10 2
        name cmd2string fn(n: ref Node): string 11 1
        seq no type 10 1
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const left (8) int 6 0
    const ) string 1 0
ecom: 
+ string 10 2
  + string 10 2
    const ( string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
  const ) string 1 0
ecom to: 
name s string 0 0
ecom: 
+ string 10 2
  const ( string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
ecom to: 
name .t276 string 0 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t276 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t276 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t276 string 0 0
ecom: 
= string 10 3
  name s string 0 0
  + string 10 3
    + string 10 2
      call string 10 2
        name cmd2string fn(n: ref Node): string 11 1
        seq no type 10 1
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const left (8) int 6 0
      const ; string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const right (16) int 6 0
ecom: 
+ string 10 3
  + string 10 2
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
    const ; string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const right (16) int 6 0
ecom to: 
name s string 0 0
ecom: 
+ string 10 2
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
  const ; string 1 0
ecom to: 
name .t276 string 0 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t276 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const right (16) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const right (16) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t276 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t276 string 0 0
ecom: 
= string 10 1
  name .t274 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t274 string 0 0
ecom: 
= string 10 2
  name s string 0 0
  + string 10 2
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
    const & string 1 0
ecom: 
+ string 10 2
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
  const & string 1 0
ecom to: 
name s string 0 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t276 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t276 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t276 string 0 0
ecom: 
= string 10 3
  name s string 0 0
  + string 10 3
    + string 10 2
      call string 10 2
        name cmd2string fn(n: ref Node): string 11 1
        seq no type 10 1
          * ref Node 8 0
            + int 15 1
              name n ref Node 0 0
              const left (8) int 6 0
      const ^ string 1 0
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const right (16) int 6 0
ecom: 
+ string 10 3
  + string 10 2
    call string 10 2
      name cmd2string fn(n: ref Node): string 11 1
      seq no type 10 1
        * ref Node 8 0
          + int 15 1
            name n ref Node 0 0
            const left (8) int 6 0
    const ^ string 1 0
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const right (16) int 6 0
ecom to: 
name s string 0 0
ecom: 
+ string 10 2
  call string 10 2
    name cmd2string fn(n: ref Node): string 11 1
    seq no type 10 1
      * ref Node 8 0
        + int 15 1
          name n ref Node 0 0
          const left (8) int 6 0
  const ^ string 1 0
ecom to: 
name .t276 string 0 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const left (8) int 6 0
ecom to: 
name .t276 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
* ref Node 8 0
  + int 15 0
    name .b275 big 0 0
    const (64) int 6 0
eacom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const right (16) int 6 0
ecom: 
call string 10 2
  name cmd2string fn(n: ref Node): string 11 1
  seq no type 10 1
    * ref Node 8 0
      + int 15 1
        name n ref Node 0 0
        const right (16) int 6 0
ecom to: 
name .t274 string 0 0
generate desc for big
ecom: 
* ref Node 8 0
  + int 15 1
    name